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

西门子SCL编程实例-自己编程实现减计数器

实际项目中我们可能需要对某些过程进行计数,比如:气缸往复运动一定次数后提醒用户进行保养、检测到一定数量的饮料瓶后向机械手发出装箱指令,等等。这些类似的情况,需要用到计数器功能。

我们可以使用Step7自带的计数器指令(CTU/CTD等),也可以编写自己的计数器函数。自己编写的好处在于有利于实现程序的标准化,并且可以根据需要增加功能。本文我就给大家介绍一个用SCL语言编写的减计数器。

cover.png

创建一个FC,命名为:FC_CounterBackward。

设置接口参数如下:

FC_CounterBackward参数列表
名称
类型
数据类型
说明
Gate
输入
布尔型
控制门
CountBack
输入
布尔型
减计数器信号
Set
输入
布尔型
设定值信号
NormalValue
输入
整数
设定值
CounterReached
输出
布尔型
计数器触发(实际值<=0)
HelpFlagPositveEdge输入/输出
布尔型
计数器信号辅助变量
ActualValue
输入/输出
整数
实际计数值
tmpCounterReached
临时变量
布尔型
输出值的临时变量

说明:

  1. Gate用来使能计数器功能;

  2. CountBack为减计数信号,只在上升沿有效。但实参不需要上升沿,因为程序内部会计算;

  3. Set信号用来设置给定值,计数开始前需要关闭;

  4. HelpFlagPositveEdge变量用来检测上升沿,需要使用静态变量或者全局变量;

  5. CounterReached表示计数器已经触发,此时实际计数值<=0;

代码如下:

code1.png

code2.png

主程序中调用示例如下图:

ob1.png

好了,关于SCL编写减计数器代码就先介绍到这里,后续我会录视频给大家演示下实际效果。

我最近开通了微信视频号,以视频的方式分享工控小知识,欢迎小伙伴们扫描下方的二维码观看:

founderchip.png

取消

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

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

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

发表评论