签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
SCL中,调用上升沿、下降沿会自动生成一个背景DB,如果使用比较多的情况下,个人觉得很烦!所以就采用了一个简易实现办法,分享给大家!请大侠们指正。
本办法以在FB中使用为例:
1、在Static中创建BOOL型变量备用,一般一个上升沿监测或一个下降沿监测创建一个变量。本例中创建变量为“TEST_M”
2、监测型号
在这里我们监测输入变量“I_0”的上升沿
3、使用
IF “I_0”<>“TEST_M" THEN
“TEST_M”:=“I_0”;
IF “I_0”:=TRUE THEN
//检测到上升沿后执行的代码
。。。。。。
END_IF;
IF “I_0”:=false THEN
//检测到下降沿后执行的代码
必须注意的是,以上代码仅执行一次!
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1723193&b_id=66&s_id=0&num=46
赞一个
楼主是两耳不闻窗外事,专心闭门自造车嘛。
好麻烦.............
感谢分享,谢谢!学习了
楼主是想把沿的检测存储在本身的背景DB中。
因为本身是BOOL,直接使用布尔逻辑运算。
IF (M_last XOR M_curt ) AND M_curt THEN xxx; //上升沿执行
IF (M_last XOR M_curt ) AND NOT M_curt THEN xxx; //下升沿执行
M_last := M_curt;
执行后复位。
不错的思路
后面的两个IF条件判断语句比较打成赋值了
感谢楼主分享,学习一下。
楼主很有仓新思路!点赞1
标准指令 在 结合 参数实例或者多重背景 不就解决楼主的烦恼了吗?
其实这种用法是常见的。最常见的就是 FB的 REQ。
根据不同要求,可以执行一次,也可以执行到任务完成(如通讯过程,SET标志位)。
关于沿检测的各种编程语言的写法,ZANE版主的《Zane侠说事儿》就有。
这个是正解,我就这么用
多在论坛里面交流一下,你会找到更多办法的哦~
不想生成背景数据块,可以静态参数里面定义一个沿类型的数据变量就好了
其实不论用不用库FB来实现都需要生成背景Static变量来暂存之前的状态,只不过用库FB多了次调用操作,多了些资源浪费。
不管怎么说,秀出代码,展示思路 ;总比一上来伸手要,伸手气,强。
所有帖子没有指责楼主的意思。
楼主的想法是对的。只不过代码有些啰嗦了。版主说的是楼主不太会查找资料。
一年多前,版主就专门发过总结帖。很容易找到。
《实现上升沿的几个姿势》 在不同编程语言中的实现方法。都是大量测试应用过的,拿来用就可以了。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录