西门子SCL编程实例——带运行计时的电机控制

今天这篇文章,我们来介绍一个带运行计时的电机控制函数块,为后续的电机调度函数块做准备。我之前曾写过一个电机控制函数块fb5001_motorcontrol(西门子scl编程实例——带反馈监视的电机控制),我们在它的基础上,增加运行时间累计功能。
打开博途新建项目,将fb5001_motorcontrol添加到项目中,修改其名称为fb5007_motorcontrolwithruntime。在原函数块基础上:
①增加输入参数:globaltime和resetruntime。
globaltime:来自循环中断组织块的全局时间(单位:秒);
resetruntime:复位函数块内部的用于计时的变量;
②增加输入/输出参数:
runtime:电机运行的实际时间(单位:秒)。多次启动的运行时间可累积;
③增加用于计时的静态变量:
statstarttime:按下启动按钮的时间(单位:秒);
statlastrunningtime:上次运行的时间(单位:秒),用于累计;
statruntime:当前运行时间(单位:秒);
整个函数块(fb5007_motorcontrolwithruntime)的变量声明如下图所示:
代码如下:
为了能产生时间信号,我们添加循环中断组织块ob30,将其中断时间设置为1秒。设置一个全局变量,比如db200_global.globalsecon,在ob30中将其周期性加1,代码如下:
添加一个启动组织块,每次cpu重启时让全局时间变量清零(该全局时间变量的数据类型为udint,其取值范围为0~4_294_967_295。以每秒加1的频率计时,可支持大约136年,因此即使不清零也没有关系),如下图所示:
这样,就可以在ob1中调用fb5007_motorcontrolwithruntime,统计其运行时间了。
我已经测试过,如果你有任何问题,欢迎留言。我们后续会在这个函数块的基础上,写电机调度的函数块(比如有多个电机,如何按照预定规则进行启停控制)。
我的书《西门子s7-1200/1500 plc scl语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了scl语言的编程,感兴趣的话可以点击下面的链接或者左下角的【阅读原文】:


如何购买3G手机?
开关电源设计中PCB板的注意事项
从凭感觉到讲科学,环境数据如何助力农户实现精准化种植?
硬件会议系统与软件会议系统的区别是什么
什么是交越失真?怎么消除交越失真?
西门子SCL编程实例——带运行计时的电机控制
接收低于 22 kHz 的无线电波
国星光电的1200V/80mΩSiC-MOSFET器件成功获得AEC-Q101车规级认证
支持电信运营商进入智慧居家养老领域,开展多样化的养老服务
苹果为控制成本新iPhone或将砍掉3DTouch功能
新能源汽车预充电电路的工作原理
首台3万瓦激光切割即将交付 可应用于海上风电等行业
叶子里的量子物理:光合作用中的凝聚态
中等功率应用是Wolfspeed WolfPACK功率模块“最理想的应用场合”
关于绝缘端子三种配对线材的方式介绍
5G手机Galaxy A22怎么样?开箱评测 5000mAh大电池+6.6寸屏幕
一加7T Pro搭载骁龙855 Plus带来沉浸式的娱乐体验
京东方和华星光电或将为三星供应650万块OLED面板
小米9认证信息曝光:二个型号 配骁龙855及4800万三摄
华为mate10什么时候上市?华为mate10或配徕卡3D三摄?配置升级,叫板iphone8