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

西门子SCL编程实例——定时采样程序

在实际项目中会遇到需要定时采样的情况,比如:对心跳计数器的定时采样,以判断通信是否中断;对液体流过体积的定时采样,以判断液体处于流动状态还是静止状态;这些功能,都需要定时采样程序来完成。今天这篇文章,给大家介绍下我用西门子SCL语言实现的一个定时采样程序。

cover.png

该定时采样程序可以固定的时间间隔对一个整数进行采样,采样的结果会存放到两个整数变量:data1和data2中。data1是奇数次采样的结果,data2是偶数次采样的结果。

程序实现的思路如下:

采样过程分为三种状态:

  1. 奇数次采样:状态激活后采样存放到data1中,并修改状态值为【采样空闲】;

  2. 偶数次采样:状态激活后采样存放到data2中,并修改状态值为【采样空闲】;

  3. 采样空闲期:状态激活后进行空闲计时,当计时时间到了之后,判断之前的采样状态,并切换到另一种状态;

函数块实现:

输入参数三个:

  1. active:激活或取消采样功能,1=激活;

  2. timeInterval:采样间隔时间,默认5s;

  3. sourceData:数据源;

输出参数两个:

  1. data1:奇数次采样的数据;

  2. data2:偶数次采样的数据;

输入/输出参数如下图所示:

input_output.PNG

函数块使用的静态变量如下图所示:

static.PNG

函数块的代码如下图所示:

code1.PNG

code2.png

code3.png

这个函数块我在实际项目中测试过,感兴趣的小伙伴可以自己测试下,如果发现有任何问题欢迎留言反馈。

我的微信视频号已经开通,以视频的方式分享一些工控小知识,欢迎扫描下面的二维码查看:

founderchip.png

取消

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

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

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

发表评论

  • 您好,请问分为奇数和偶数采样有什么好处呢?

  • 这个程序有点问题,statsamplestatus初始值为0,active为true,则CASE进入else中,TON_TIME工作,定时时间到,则stats ampletimereached为true,下面的statsample1active或statsanmple2active初始值为false,则不能进入CASE的1或2。