北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章528 浏览8045470

西门子SCL编程实例——(电机)周期性运行

在实际项目中可能会遇到这样的需要:某个电机或阀间隔某段时间后运行指定的时间。比如,要求搅拌电机每间隔30分钟,运行5分钟。我将这个功能写成了一个函数块,命名为FB5009_CyclicRunning,下面来详细介绍下。

cover.png

函数块FB5009_CyclicRunning有三个输入参数和三个输出参数及一些静态变量。输入/输出参数如下图所示:

variables.png

其中:

输入参数:

  • enable:用来使能该功能,数据类型为布尔型,需要时将其常置为TRUE;

  • timeInterval:用来设置间隔时间,即两次运行之间的时间间隔,数据类型为Time;

  • timeRunning:用来设置运行时间,即两次间隔之间的运行时间,数据类型为Time;

输出参数:

  • q:输出值,布尔型,用来控制电机。当运行时为TRUE;间隔时或未使能时为FALSE;

  • elapseTimeInterval:间隔期间的实际流逝时间;

  • elapseTimeRunning:运行期间的实际流逝时间;

elpaseTimeInterval和elapseTimeRunning能直观的看出时间的流逝;

代码中使用了两个延时接通定时器(TON),均使用多重背景数据块。为了配合定时器的使用设置了一些静态变量(以前缀stat开始),如下图所示:

static_variables.png

SCL代码如下:

code1.png

在主程序中调用该函数块,赋予相应的参数,经测试可实现需求。如下图所示:

OB1.png

该函数块其实不仅适用于电机,许多其他类似场合都可以使用。好了,关于该实例就先介绍到这里,任何问题欢迎留言。

======================================================

经小伙伴反馈本文代码存在一个问题,现已更新代码,请看下面的文章:

西门子SCL编程实例——周期性运行(更新版)

======================================================

下面是西门子SCL编程的文章归档链接:

》》西门子SCL编程入门到精通文章归档《《

我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》有更多SCL语言编程的实例,如果你感兴趣的话,可以扫描下面的二维码查看:

微信图片_20220303204532.jpg

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论

  • 李工:谢谢您的分享,不过有个疑问,以上程序如果在运行的时候停止使能,然后再次使能程序好像不能工作了,因为在间接时间到达后已经激活了《运行定时器激活》这个时候始终为1,运行定时器时间没有执行完导致已经激活了《运行定时器激活》没办法复位,那么程序第23行就不能执行导致间接定时器没办法工作了。