工业项目中有时候需要使用斜坡发生器。斜坡发生器能控制输出值经过一个平滑的上升或下降的变化过程然后再达到目标值,从而避免输出值由当前值直接跃变到目标值。某些工业过程的控制工艺不允许被控值的直接跃变。比如:工艺要求电机电流有一个平滑的增加过程,而不是直接跃变到一个比较大的目标电流;或者希望某管路的压力有一个平滑的增加过程,而不是直接加压到目标压力。这些情况下,都需要使用斜坡发生器。
西门子PLC实现斜坡发生器的一种方案是使用循环中断组织块,通过周期性的执行使被控制值平滑变化。该方案的优点是控制精度高,缺点是要配合组织块、数据块等,不利于程序的模块化设计。
另一个方案是使用定时器来实现斜坡发生器,它的优点是可以把斜坡功能集成到一个函数块中,可反复调用,有利于程序的模块化设计。缺点是其执行受PLC扫描周期的影响,因此精度并不高。这里的精度可以简单理解为斜坡时间。比如,本来希望受控值的变化过程时长为5秒,使用该方案的最终用时会大于5秒。因此,该方案适用于对精度要求不高的场合。
今天这篇文章,我想给大家介绍第二种方案的斜坡发生器,即我写的一个基于定时器的斜坡发生器函数块-FB5008_RampGenerator。
函数块FB5008_RampGenerator可设置初始值、目标值及斜坡时间。斜坡时间的单位为秒,其内部使用延时接通定时器指令,时基为100ms。斜坡时间乘以10即为定时器的启动次数。通过计算初始值与目标值的差值,除以计时器的启动次数,即可算出每次定时器计时达到时应当增加的数值单位。
函数块FB5008_RampGenerator的输入/输出参数如下:
静态变量及临时变量参数如下:
代码如下:
接下来在OB1中调用该函数块即可,例如:
这个函数块我已经测试过了,感兴趣可以自行测试一下。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》已经出版了,这本书共15章,附有84个视频,从硬件到软件,真正做到了从入门到精通。感兴趣的小伙伴可以扫描下面的二维码购买:
该书在京东、淘宝、天猫等各大网店具有销售,你可以自行搜索购买。
如果你已经购买了该书,可以私信我,进入SCL读书群。
发表评论