签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
现有控制柜带一个网关设备,30s发送一次心跳信号给s7-1200plc。想编写一段程序来实时检测这个心跳信号一直在线,不在线则报警。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1572515&b_id=50&s_id=0&num=12
这么简单你都不想自己试试?
我对指令啊功能块啊的代入感也是很差的。转个说法就觉得不能用这个指令了。
入行刚不久有人叫我编个程序,按键放开之后检查5秒内有没有再按过按钮。有,就给出一个信号。然后我做出来了。然后挨骂了:叫你做了双击输出的功能块,你不会?你这个程序把5秒变成0.5秒不就是双击功能了吗!叫你做个心跳程序,你不会?这个程序把5秒改成30秒,输出取反,不就是心跳检测了吗!
我搭拉着头,不知道这是被表场了,还是被批评了。
那人也不好意思:好像我语气太重了,不好意思,你先这样试试吧。
我语气太重了,不好意思,你先这样试试吧。
检测到第一次信号,计时开始,计时到30秒,有第二次信号,就OK
逻辑都出来,还怕啥
这个信号一直为1超过32S,或者一直为0超过32S,就报警。我是这样做的。。。
用1s的时钟脉冲触发计数,计数值大于等于32判断当前值和保存值是否相异,是则在线,否则异常,报警。
程序最后计数清零从新计数。
单按钮控制一个M线圈的on/off,如果这个线圈在规定的时间里信号不变就是通讯死了!这样最简单
为什么一定要用心跳位呢?你的控制柜plc定义一个int变量,每秒自加,大于等于3000则归零重新自加,然后把这个值传给1200,1200每32秒判断一次读到的数据如果没有变化则通讯中断。
请参考这个程序:
30s是不是太长了
life bit 是0.5s的闪烁
打地鼠游戏,冒个头,就拍死它,持续30s不出现就真的死掉了,真的死掉了
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录