使用 PLS 指令编程, 以实现 PTO 输出, 可按照以下步骤编程:
第一步:设置 PTO 控制字节,以确定使用单段操作或多段操作,是否更新频率或脉冲数;
第二步:如果是单段操作,装载或更新频率值,脉冲数;如果是多段操作,装载包络表起始地址以及包络表每段起始频率值,结束频率值,脉冲数;
第三步:设置 PLS 指令通道, 以确定是 Q0.0、Q0.1 或 Q0.3 PTO 输出;
第四步:沿触发 PLS 指令。
PLS 指令读取存储于指定 SM 存储单元的数据,并相应地编程 PTO 生成器。
SMB67 控制 PTO0 ,SMB77 控制 PTO1 ,SMB567 控制 PTO2 。PTO 控制寄存器的 SM 单元表介绍了用于控制 PTO 操作的寄存器。可快速参考该表来确定在 PTO/PWM 控制寄存器中放置什么值才能调用想要的操作。
可通过修改 SM 区域(包括控制字节)中的单元,然后执行 PLS 指令,来改变 PTO 的特性。
任何时候都可通过向 PTO 控制字节(SM67.7、SM77.7 或 SM567.7)使能位写入 0,然后执行 PLS 指令,来实现禁止 PTO输出 。输出点将立即恢复为过程映像寄存器控制。
PTO 控制字节
PTO 产生单段脉冲串或者多段脉冲串,需先组态 PTO 控制字节(SMB67、SMB77 和 SMB567)。
PTO/PWM 控制寄存器的 SM 单元如下表 1 所示:
Q0.0 | Q0.1 | Q0.3 | 控制位 |
SM67.0 | SM77.0 | SM567.0 | PTO/PWM 更新频率/周期时间:
|
SM67.1 | SM77.1 | SM567.1 | PWM 更新脉冲宽度时间:
|
SM67.2 | SM77.2 | SM567.2 | PTO 更新脉冲计数值:
|
SM67.3 | SM77.3 | SM567.3 | PWM 时基:
|
SM67.4 | SM77.4 | SM567.4 | 保留 |
SM67.5 | SM77.5 | SM567.5 | PTO 单/多段操作:
|
SM67.6 | SM77.6 | SM567.6 | PTO/PWM 模式选择:
|
SM67.7 | SM77.7 | SM567.7 | PWM 使能:
|
表 1 .PTO/PWM 控制寄存器的 SM 单元
PTO 控制字节(SMB67、SMB77 和 SMB567), 如下表 2 所示:
控制寄存器 (十六进制值) |
启用 | 选择模式 | PTO 段操作 | 时基 | 脉冲计数 | 频率 |
16#C0 |
是 | PTO | 单段 | 频率 HZ | ||
16#C1 | 是 | PTO | 单段 | 频率 HZ | 更新频率 | |
16#C4 | 是 | PTO | 单段 | 频率 HZ | 更新 | |
16#C5 | 是 | PTO | 单段 | 频率 HZ | 更新 | 更新频率 |
16#E0 | 是 | PTO | 多段 | 频率 HZ |
表 2. 十六进制值组态 PTO 控制字节
除组态 PTO 控制字节,应该在执行 PLS 指令前装载或更新脉冲频率,脉冲数。
如果使用多段脉冲串,在执行PLS 指令前还需要装入包络表的起始偏移量和包络表的值。 如下表 3 所示:
Q0.0 | Q0.1 | Q0.3 | 其它控制寄存器 |
SMW68 | SMW78 | SMW568 | PTO 频率:1 到 65,535 Hz (PTO) |
SMD72 | SMD82 | SMD572 | PTO 脉冲计数值:1 到 2,147,483,647 |
SMW168 | SMW178 | SMW578 | 包络表的起始单元(相对 V0 的字节偏移) 仅限多段 PTO 操作 |
表 3. 其它控制寄存器
PTO 状态字节
可通过监视 PTO 状态字节(SMB66、SMB76 和 SMB566) , 诊断 PTO 输出状态。 如下表 4 所示:
Q0.0 | Q0.1 | Q0.3 | 状态位 |
SM66.4 |
SM76.4 |
SM566.4 |
PTO 增量计算错误(因添加错误导致)
|
SM66.5 |
SM76.5 |
SM566.5 |
PTO 包络被禁用(因用户指令导致):
|
SM66.6 | SM76.6 |
SM566.6 |
PTO/PWM 管道溢出/下溢:
|
SM66.7 |
SM76.7 |
SM566.7 |
PTO 空闲:
|
表 4. PTO 状态位
单段管道化频率的上限为 65,535 Hz。
在单段管道化中,用户可通过 SM 更新下一脉冲串的频率或脉冲数。更新后,再次执行 PLS 指令。
PTO 功能在单段管道中保留第二个脉冲串的属性,直到其完成了第一个脉冲串。在第一个脉冲串完成时,开始输出第二个波形,然后可在管道中存储一个新脉冲串设置。之后重复此过程。
PTO 在单段管道中一次只能存储一个条目。若在管道仍填满时装载新设置,PTO 溢出位置位且指令被忽略。
PTO 脉冲的单段管道化例程
S7-200 SMART CPU Q0.0 以 100 HZ 频率值输出 1000 个脉冲。
注意:以上例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 SMART CPU,并根据实际使用需求修改程序中的频率值和脉冲数!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
PTO 单段脉冲串排队
PTO 脉冲的单段只能有一个脉冲串排队,PTO 对溢出的脉冲串不响应,PTO 溢出位置 1。 如果希望检测后续溢出,溢出位置位后只能手动复位或 CPU STP 到 RUN。
PTO 生成器自动将频率从起始频率线性提高或降低到结束频率,多段管道化频率的上限为 100,000 Hz。
对于多段脉冲串操作,必须装载包络表的起始偏移量(SMW168、SMW178 或 SMW578)和包络表值。
S7-200 SMART 从 V 存储器的包络表中自动读取每个脉冲串段的特性,执行 PLS 指令将启动多段操作。
在脉冲数量达到指定的脉冲计数时,立即装载下一个 PTO 段,该操作将一直重复到包络结束。
每个脉冲包络最多可由 255 段组成,每段对应一个加速、运行或减速操作。
在 SMB166、SMB176 或 SMB576 中可监视 PTO 包络当前有效段的编号。
多段 PTO 每段条目长 12 字节,由 32 位起始频率、32 位结束频率和 32 位脉冲计数值组成。
多段 PTO 操作的包络表格式如下:
PTO 多段管道化例程
使用带有脉冲包络的 PTO 通过简单的加速、运行和减速顺序来控制步进电机。
通过定义脉冲包络可创建更复杂的顺序。
右图说明了生成输出波形所需的采样包络表值:
● 段 1:加速步进电机
● 段 2:以恒定转速运行电机
● 段 3:使电机减速
在本例中,要达到期望的电机转数,PTO 生成器需要以下值:
● 2 kHz 的启动和结束脉冲频率
● 10 kHz 的最大脉冲频率
● 4000 个脉冲
输出包络的加速部分,约在 200 脉冲后,输出波形达到最大脉冲频率
约在400 脉冲后,输出波形应完成包络的减速部分。
注意:以上例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 SMART CPU,并根据实际使用需求修改程序中的频率值和脉冲数!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
计算给定 PTO 包络段的加速度(或减速度)和持续时间
Ts 段持续时间对于 PTO 包络表计算的重要用途
计算包络段的加速度(或减速度)和持续时间有助于确定正确的包络表值。
注意:如果 Ts 段持续时间少于 500 微秒,将导致 CPU 没有足够的时间来计算 PTO 段值。 PTO 管道下溢位(SM66.6、SM76.6 和 SM566.6)将置为 1,PTO 操作终止。
可按如下公式计算 Ts 段持续时间
ΔF = FFinal - FInitial
Ts = PC / (Fmin + ( | ΔF | / 2 ) )
As = ΔF / Ts
Ts | 段持续时间 (s) |
As |
段频率加速度 (Hz/s) |
PC | 段内脉冲数量 |
Fmin | 段最小频率 (Hz) |
ΔF |
段增量(总变化)频率 (Hz) |
状态位(SM66.7、SM76.7 或 SM566.7)是 PTO 空闲位,可用来指示编程的脉冲串是否已结束。PTO 中断在脉冲串结束后执行。
单段操作:在每个 PTO 脉冲串结束时可以产生PTO脉冲完成中断。中断例程可在脉冲串结束后进行调用。例如,如果第二个 PTO 已装载到管道中,PTO 功能在第一个 PTO 结束时调用中断例程,然后在已装载到管道中第二个 PTO 结束时再次调用。
多段操作:在 PTO 包络表完成时产生PTO脉冲完成中断。
PTO 中断事件号 |
说明 |
19 |
PLS0 PTO 脉冲计数完成中断 |
20 | PLS1 PTO 脉冲计数完成中断 |
34 | PLS2 PTO 脉冲计数完成中断 |
以 PLS0 PTO 中断为例, 可在主程序中使用 CPU 第一个扫描周期有效位 SM0.1 调用 ATCH, 如下图 1 所示:
图 1. PLS0 PTO 脉冲计数完成中断
PTO 中断事件应用实例
S7-200 SMART CPU 发送无限脉冲。
以频率值 100 HZ 为例,一直发送脉冲为例, 程序说明如下:
PTO 控制字节 SMB67=16#C0
PTO 频率值 SMW68=100
PTO 脉冲数 SMD72=2147483647(最大值)
启用 PTO 脉冲计数完成中断
在脉冲计数完成中断 INT_0 ,再次执行 PLS 指令。
图 2. S7-200 SMART 发送无限脉冲程序
注意:以上例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 SMART CPU,并根据实际使用需求修改程序中的频率值!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
如何判断 S7-200 SMART CPU 是否输出高速脉冲?
可采用如下两种方法:
1. 观察 S7-200 SMART 硬件输出点 Q0.0、Q0.1 、Q0.3 指示灯状态:指示灯亮或闪烁时, 表示正在输出高速脉冲;
2. 在状态图表中, 在线监视状态位SM66.7、SM76.7 或 SM566.4:该位为 FALSE 时, 表示PTO 进行中; 为 TURE时, 表示 PTO 空闲。
为何连续触发多次 PLS 指令, S7-200 SMART CPU 只输出前几次的高速脉冲串?
PTO 单段脉冲串排队
PTO 脉冲的单段只能有一个脉冲串排队,PTO 对溢出的脉冲串不响应,PTO 溢出位置 1。 如果希望检测后续溢出,溢出位置位后只能手动复位或 CPU STP 到 RUN。
测试 PTO 单段脉冲串排队, 程序说明如下:
将 S7-200 SMART 硬件 Q0.0 接入I0.0。
配置高速计数器向导,启用 HSC0_INIT
PTO 控制字节 SMB67=16#C0
PTO 频率值 SMW68=100
PTO 脉冲数 SMD72=1000 第一个脉冲串发送期间,按如下操作连续三次使能 V0.0,上升沿触发 PLS 指令并累计次数:
第一、二次使能 V0.0 ,上升沿触发 PLS 指令,PLS 指令累计次数 VW20< =1,Q0.0 以 100 HZ 频率值输出 1000 个脉冲;
第三、四次使能 V0.0 ,更新脉冲数并上升沿触发 PLS 指令 ,PLS 指令累计次数 VW20 >1
PTO 控制字节 SMB67=16#C4
PTO 脉冲数 SMD72=500
如下图 3 所示:
图 3. PTO 单段脉冲串排队
待 S7-200 SMART CPU 脉冲发送完成, 监视状态图标,HC0=2000,PLS 累计计数 VW20=4 次, PTO 0溢出位 SM66.6=1。如下图 4 所示:
说明 PTO 脉冲的单段只能有一个脉冲串排队,对第三、四个溢出的脉冲串不响应,PTO 溢出位置 1。
图 4. PTO 单段脉冲串排队状态图表