PLS 指令编程步骤

使用 PLS 指令编程, 以实现 PTO 输出, 可按照以下步骤编程:

第一步:设置 PTO 控制字节,以确定使用单段操作或多段操作,是否更新频率或脉冲数;

第二步:如果是单段操作,装载或更新频率值,脉冲数;如果是多段操作,装载包络表起始地址以及包络表每段起始频率值,结束频率值,脉冲数;

第三步:设置 PLS 指令通道, 以确定是 Q0.0、Q0.1 或 Q0.3 PTO 输出;

第四步:沿触发 PLS 指令。

使用 SM 位置组态和控制 PTO 操作

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 更新频率/周期时间:

  • 0 = 不更新

  • 1 = 更新频率/周期时间

SM67.1 SM77.1 SM567.1

PWM 更新脉冲宽度时间:

  • 0 = 不更新

  • 1 = 更新脉冲宽度

SM67.2 SM77.2 SM567.2

PTO 更新脉冲计数值:

  • 0 = 不更新

  • 1 = 更新脉冲计数

SM67.3 SM77.3 SM567.3

PWM 时基:

  • 0 = 1 µs/时标

  • 1 = 1 ms/刻度

SM67.4 SM77.4 SM567.4

保留

SM67.5 SM77.5 SM567.5

PTO 单/多段操作:

  • 0 = 单段

  • 1 = 多段

SM67.6 SM77.6 SM567.6

PTO/PWM 模式选择:

  • 0 = PWM

  • 1 = PTO

SM67.7 SM77.7 SM567.7

PWM 使能:

  • 0 = 禁用

  • 1 = 启用

表 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 增量计算错误(因添加错误导致)

  • 0 = 无错误

  • 1 = 因错误而中止

SM66.5

SM76.5

SM566.5

PTO 包络被禁用(因用户指令导致):

  • 0 = 非手动禁用的包络

  • 1 = 用户禁用的包络

SM66.6

SM76.6

SM566.6

PTO/PWM 管道溢出/下溢:

  • 0 = 无溢出/下溢

  • 1 = 溢出/下溢

SM66.7

SM76.7

SM566.7

PTO 空闲:

  • 0 = 进行中

  • 1 = PTO 空闲

表 4. PTO 状态位

PTO 脉冲的单段管道化

PTO 脉冲的单段管道化例程

S7-200 SMART CPU Q0.0 以 100 HZ 频率值输出 1000 个脉冲。

PTO 脉冲的单段管道化

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

测试前,用户务必使用晶体管输出的 S7-200 SMART CPU,并根据实际使用需求修改程序中的频率值和脉冲数!

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

 

PTO 单段脉冲串排队

PTO 脉冲的单段只能有一个脉冲串排队,PTO 对溢出的脉冲串不响应,PTO 溢出位置 1。 如果希望检测后续溢出,溢出位置位后只能手动复位或 CPU STP 到 RUN。

PTO 脉冲的多段管道化

多段 PTO 操作的包络表格式如下:

 

 

PTO 多段管道化例程

使用带有脉冲包络的 PTO 通过简单的加速、运行和减速顺序来控制步进电机。

通过定义脉冲包络可创建更复杂的顺序。

右图说明了生成输出波形所需的采样包络表值:

● 段 1:加速步进电机

● 段 2:以恒定转速运行电机

● 段 3:使电机减速

在本例中,要达到期望的电机转数,PTO 生成器需要以下值:

● 2 kHz 的启动和结束脉冲频率

● 10 kHz 的最大脉冲频率

● 4000 个脉冲

输出包络的加速部分,约在 200 脉冲后,输出波形达到最大脉冲频率

约在400 脉冲后,输出波形应完成包络的减速部分。

PTO 脉冲的多段管道化

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

测试前,用户务必使用晶体管输出的 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)

PTO 中断

状态位(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 单段脉冲串排队状态图表