PLS 指令用于 S7-200 CPU 集成点 Q0.0 和 Q0.1 的脉冲输出,具有以下功能:
1. 用户根据实际需求,灵活编程实现脉冲周期和个数的控制
2. 单段管线:输出设定的一个脉冲串,并支持脉冲串排队,以保证脉冲输出的连续运行(队列中只能有一个脉冲串在等待)
3. 多段管线:顺序发送多个脉冲串( 一个包络表可以包含 1-255 个脉冲串,在包络表中的所有周期值必须使用同一个时间基准,而且在包络正在运行时不能改变。)
使用 PLS 指令用于 S7-200 CPU 脉冲输出和方向控制,用户应按照如下表 1 所示的定义接线:
PTO0 | PTO1 | |
脉冲输出点 | Q0.0 | Q0.1 |
方向点 | 自定义 S7-200 CPU 其它输出点或数字量扩展模块输出点为方向点 | 自定义 S7-200 CPU 其它输出点或数字量扩展模块输出点为方向点 |
表 1. S7-200 CPU 脉冲和方向输出点
使用 PLS 指令使 S7-200 CPU 输出高速脉冲,需要用户自己编程, 给相应的特殊存储器赋值。
PLS 控制和状态寄存器详细参数和例程请参见《S7-200 系统手册》第 6 章 脉冲输出指令。
PLS 指令单段管线编程步骤:
第一步. 设置 PTO 控制字节: 给 PTO0 寄存器 SMB67 或 PTO1 寄存器 SMB77 赋值
第二步. 写入周期值: 给 PTO0 寄存器 SMW68 或 PTO1 寄存器 SMW78 写入周期值
第三步. 写入脉冲串数值:给 PTO0 寄存器 SMD72 或 PTO1 寄存器 SMD82 写入脉冲数
第四步. 执行 PLS 指令
如果要修改 PTO 的周期, 脉冲数, 可以进一步在子程序或中断程序中按以下步骤编程:
第五步. 根据要修改的内容, 重新写入相应的控制字节
第六步. 写入新的周期, 脉冲数
第七步. 执行 PLS 指令
PLS 指令单段管线例程
注意:以下例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
例程 1:PTO0 以 500 ms 周期发出脉冲串,触发停止位时停止脉冲输出。
注意:以下例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
例程 2:PTO0 以 500 ms 周期发出 100 个脉冲。
注意:以下例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程 修改程序中的相关数值!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
例程 3:PTO0 更改周期,不更改脉冲数发出脉冲串。
PLS 指令多段管线编程步骤:
第一步. 设置 PTO 控制字节, 选择多段管线: 给 PTO 0 寄存器 SMB67 或 PTO 1 寄存器 SMB77 赋值
第二步. 写入包络表起始地址到 PTO 0 寄存器 SMW168 或 PTO 1 寄存器 SMW178
第三步. 准备包络表,求出每段的周期增量
PTO 的段周期增量公式为:段周期增量 = (段终止周期 – 段初始周期) / 脉冲数量
第四步. 写入包络表总段数,每段起始周期,周期增量,脉冲数量到包络表地址
第五步. 执行 PLS 指令
PLS 指令多段管线例程
多段 PTO 应用例程请参考《S7-200 系统手册》第 6 章 脉冲输出指令:
例程 4:启动和最终脉冲频率是 2 kHz,最大脉冲频率是 10 kHz,要求 4000 个脉冲达到期望的电机旋转数。
由于包络表中的值是用周期表示的,而不是用频率,需要把给定的频率值转换成周期值。因此,初始和结束周期时间是 500 μs,相应于最大频率的周期时间是 100 μs。在输出包络的加速部分,要求在 200 个脉冲左右达到最大脉冲频率。也假定包络的减速部分,在 400 个脉冲完成。
注意:以下例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
如何强制停止 PTO 输出?
可以通过编程将控制字节中的使能位 SM67.7 或 SM77.7 清零,然后执行 PLS 指令,便可立即停止 PTO 输出。 以 PTO0 为例,如下图 1 所示:
图1. 停止 PTO脉冲输出
在 PTO 脉冲串执行过程中,能否通过 PLS 指令改变当前运行时的周期值?
不能在脉冲串输出过程中改变运行周期值,必须 PTO 停止后才能更改。
设置 PTO 的控制寄存器 SMD72=0 或 SMD82=0 , 为什么执行 PLS 指令仍然有 1 个脉冲输出?
SMD72 或SMD82 设置脉冲范围的最小值是 1。因此,如果给 PTO 控制寄存器 SMW68 或 SMW78 装入了周期值和脉冲数,即使将 SMD72 设置为 0, 仍然会有一个脉冲输出。
如何判断 S7-200 CPU 脉冲已经输出?
可通过以下硬件输出点和软件中指令监视两种方法判断 S7-200 CPU 正在输出脉冲:
方法 1. 观察 S7-200 CPU 脉冲输出点 Q0.0 或 Q0.1 指示灯的状态:
当低频率脉冲输出时,Q0.0 或 Q0.1 的指示灯为闪烁状态。
方法 2. 监视 SM66.7 或 SM77.7 状态:
SMB66 和 SMB77 分别为 Q0.0 和 Q0.1 的状态字节。如果 SM66.7 或 SM76.7 状态为 0, 说明 PTO 执行中。