凸轮输出功能要求根据轴或外部编码器的位置生成开关信号。典型的场景中,要实现凸轮输出需要使用S7-1500(T)/SIMOTION等高 端控制器,对成本要求比较高。
本文介绍一种利用S7-200 SMART实现凸轮输出的方法,在特定的场景中具有一定的应用价值。
应用场景
● 主轴为外部编码器,且始终单方向运行
● 主轴编码器为HTL增量编码器,A/B/Z相输出
● S7-200SMART为ST标准型CPU
● CPU利用本体上的高速计数输入对主轴编码器进行循环增计数
● CPU利用本体上的输出点输出凸轮信号
凸轮输出的功能拆解
1. 基于位置的输出凸轮
基于位置的输出凸轮在起始位置和终止位置之间打开。在此范围外,基于位置的输出凸轮关闭。
2. 基于时间的输出凸轮
基于时间的输出凸轮在达到起始位置后,在一段规定时间内保持接通状态。
对于上述应用场景:
1、位置的检测,本质上是主轴编码器计数值的采样。
2、凸轮输出打开,本质上是主轴编码器计数值到达起始位置设定值时,打开输出。
3、基于位置的凸轮输出关闭,本质上是主轴编码器计数值到达终止位置设定值时,关闭输出。
4、基于时间的凸轮输出关闭,本质上是凸轮输出信号计时到达后,关闭输出。
所以,实现凸轮输出可以拆解为高速计数,高速计数值与设定值比较以及精 确计时等几个功能。
较高精度时需要考虑的问题
当对凸轮输出精度有较高要求时,实现凸轮输出要考虑以下2个问题:
西门子PLC模块程序中比较编码器计数值与预设值的频率是否足够高,以不至于贻误凸轮输出打开/关闭的时机。
西门子PLC模块程序中凸轮输出的计时精度是否足够高,以不至于贻误基于时间的凸轮输出的关闭时机。
凸轮输出的实现方法分析
考虑到上面的2个问题,显然实现凸轮输出的逻辑不宜放到OB1中。比较好的办法是放到循环中断中。
实现凸轮输出的程序思路如下:
1、设置循环中断周期,并启用循环中断。
2、在循环中断中,把当前高速计数值与各凸轮输出起始\终止位置对应的预设值进行比较。然后,根据比较结果执行相应凸轮输出打开\关闭动作。
3、特别的,对于基于时间的凸轮输出,当凸轮输出打开后,在循环中断中利用计数的方法进行凸轮输出进行计时,当计时到达后执行凸轮输出关闭动作。
利用循环中断实现凸轮输出拥有众多的优点:
1、编程简单。所有凸轮输出相关逻辑均在循环中断中编程即可。
2、凸轮输出计时通过简单计数即可实现。且计时精度高。
3、可以根据实际的工艺需求调整中断触发的频率,避免性能溢出。
4、不会出现中断丢失。
5、在设备运行过程中可以修改凸轮输出打开\关闭位置对应的预设值。
利用循环中断实现凸轮输出的缺点:
西门子PLC模块支持的循环中断频率一般不是很高,无法做到极高的采样频率。具体而言,S7-200 SMART支持的zui小循环中断周期为1ms,所以当主轴编码器输出脉冲频率高于1KHz时,在循环中断中采样当前计数值会出现漏采。
外部时钟法实现凸轮输出
利用循环中断实现凸轮输出拥有众多的优点,唯 一的缺点在于中断频率受到限制。
如果外部给西门子PLC模块输入一个周期性的脉冲信号作为时钟信号,然后检测这个时钟信号的边沿硬件中断。显然这个硬件中断也是周期性的。
这种做法实现凸轮输出的思路与采用循环中断的方法是完全相同的,只不过利用了S7-200SMART硬件中断不受1ms周期限制的特点,利用外部时钟信号来生成一个比循环中断更快的周期性硬件中断。
利用西门子PLC模块本身的高速脉冲输出,可以很方便地生成时钟信号。把高速脉冲输出信号接到本体支持硬件中断的输入点上即可。
利用外部时钟法实现凸轮输出的程序思路如下:
1、启用高速脉冲输出,设置脉冲周期,并持续生成周期性脉冲信号。
2、启用高速脉冲输出所连接的输入的上升沿和下降沿硬件中断。
3、在硬件中断中,把当前高速计数值与各凸轮输出起始\终止位置对应的预设值进行比较。然后,根据比较结果执行相应凸轮输出打开\关闭动作。
4、特别的,对于基于时间的凸轮输出,在硬件中断中利用计数的方法进行凸轮输出计时。当计时到达时,执行凸轮输出关闭动作。
使用外部时钟法的注意事项
经过验证,外部时钟宜使用A/B相脉冲,而不是单相脉冲。
对比以下2种做法:
把1个输入点的上升沿和下降沿中断绑定到同一个中断程序
把2个输入点的上升沿和下降沿中断绑定到同一个中断程序
在中断触发的频率相同时,采用后一种做法西门子PLC模块扫描周期较短。
本文摘自:网络