设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL编程实例——带运行计时的电机控制 ...
返回列表
发新帖
[西门子]
西门子SCL编程实例——带运行计时的电机控制
[复制链接]
68589
|
0
|
2024-4-28 20:29:14
|
显示全部楼层
|
阅读模式
今天这篇文章,我们来介绍一个带运行计时的电机控制函数块,为后续的电机调度函数块做准备。我之前曾写过一个电机控制函数块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,统计其运行时间了。
我已经测试过,如果你有任何问题,欢迎留言。我们后续会在这个函数块的基础上,写电机调度的函数块(比如有多个电机,如何按照预定规则进行启停控制)。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
founderchip
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』