S7-200 CPU PLS 指令功能

PLS 指令用于 S7-200 CPU 集成点 Q0.0 和 Q0.1 的脉冲输出,具有以下功能:

1. 用户根据实际需求,灵活编程实现脉冲周期和个数的控制

2. 单段管线:输出设定的一个脉冲串,并支持脉冲串排队,以保证脉冲输出的连续运行(队列中只能有一个脉冲串在等待)

3. 多段管线:顺序发送多个脉冲串( 一个包络表可以包含 1-255 个脉冲串,在包络表中的所有周期值必须使用同一个时间基准,而且在包络正在运行时不能改变。)

PLS 指令位置控制功能使用步骤

1. S7-200 CPU 脉冲和方向输出点接线

2. PLS 控制盒状态字节赋值

3. PLS 指令编程

S7-200 CPU 脉冲和方向输出点接线

使用 PLS 指令用于 S7-200 CPU 脉冲输出和方向控制,用户应按照如下表 1 所示的定义接线:

  PTO0 PTO1
脉冲输出点 Q0.0 Q0.1
方向点 自定义 S7-200 CPU 其它输出点或数字量扩展模块输出点为方向点 自定义 S7-200 CPU 其它输出点或数字量扩展模块输出点为方向点

表 1. S7-200 CPU 脉冲和方向输出点

PLS 控制和状态字节

使用 PLS 指令使 S7-200 CPU 输出高速脉冲,需要用户自己编程, 给相应的特殊存储器赋值。

PLS 控制和状态寄存器详细参数和例程请参见《S7-200 系统手册》第 6 章 脉冲输出指令

PLS 指令编程

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 周期发出脉冲串,触发停止位时停止脉冲输出。

PTO0 以 500 ms 周期发出脉冲串例程

 

注意:以下例程仅为示例程序,请勿直接用于测试!

测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。

例程 2:PTO0 以 500 ms 周期发出 100 个脉冲。

PTO0 以 500 ms 周期发出 100 个脉冲例程

 

 

注意:以下例程仅为示例程序,请勿直接用于测试!

测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程 修改程序中的相关数值!

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。

例程 3:PTO0 更改周期,不更改脉冲数发出脉冲串。

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 应用例程

常问问题

如何强制停止 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 执行中。