设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL编程实例——延迟算子运算
返回列表
发新帖
[西门子]
西门子SCL编程实例——延迟算子运算
[复制链接]
82883
|
0
|
2024-11-26 07:44:16
|
显示全部楼层
|
阅读模式
工业现场很多数据集合与时间有关。比如某压力传感器在一段时间内的数值会形成一个压力值集合。这种集合,是以观测值发生的时间作为标记的,称为“时间序列”。如果某算子运算是从时间序列中取出前一时间单位的值(并存储当前值),则称此算子为延迟算子(backshift operator)。工业现场用于计算压力传感器或流量计的波动值(判断是否有泄漏或流速静止),都可以基于延迟算子运算。今天这篇文章,我们用SCL语言来写一个延迟算子的函数块。
在博途环境下新建项目,创建函数块,命名为“backshift_operator”。双击打开该函数块,在变量声明区声明如下变量:
其中:
B:是一个单位时间,即某时间周期的倍数。比如,假设该函数被调用的时间周期为0.1秒(100ms),B取值15,则表示要获取15x0.1秒=1.5秒之前的值;
status:函数块运行的状态,具体描述见下面的代码;
value:要存储的值(比如压力传感器的数值)。该参数为IN/OUT(写/读)类型,要读取的值(算子运算的结果)也来自这里;
buffer:存储区,用来存储值,必须是数组;
stat_p_read:读指针(静态变量);
stat_p_write:写指针(静态变量);
编写代码如下图所示:
使用随机函数进行测试,如下图所示:
说明:
为了便于观察,我将调用函数的时间周期设置成1秒。形参B的值为15,则意味着返回15秒之前的数值。实际应用中应根据情况修改(比如0.1秒);
随机数函数请参考:西门子SCL编程实例——产生随机数的算法
好了,关于延迟算子运算就先介绍到这里。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以点击下面的链接或者左下角的【阅读原文】查看:
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工控老炮儿
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』