s7-200smart通讯心跳 点击:237 | 回复:9



胡国威911

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 0回
  • 年度积分:650
  • 历史总积分:650
  • 注册:2021年2月22日
发表于:2021-02-22 14:38:39
楼主
求助帖30分-未结帖

通讯心跳由西门子S7-200smart从站提供0~255不断循环增加的数据,每秒变化一次,超过3秒数据无变化认定为通信失败。

心跳程序怎么编写




幸福的小石头

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 324回
  • 年度积分:930
  • 历史总积分:966
  • 注册:2015年5月27日
发表于:2021-02-22 15:27:38
1楼

从站传出来的数据存到A,利用1秒上升沿,把A 每秒传送给B一次,A和B相比较,作为定时器的触发条件,定时器定时3秒,如果正常通讯,A和B只会有1秒相等,否则就会触发定时器,当定时器触发时候,说明A的值,也就是心跳传回来的值没变化,这样可行不

落叶归根87

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 317回
  • 年度积分:0
  • 历史总积分:156
  • 注册:2013年8月05日
发表于:2021-02-22 16:25:25
2楼

不是有通讯超时的机制嘛,你这个只是起到显示通讯是否正常的功能,可以定时取数据啊,然后放数组,然后定时比较数组前后是否一样。

太月星辰

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 220回
  • 年度积分:350
  • 历史总积分:1444
  • 注册:2011年11月02日
发表于:2021-02-24 09:20:08
3楼

同意楼上的做法!

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:607帖 | 6793回
  • 年度积分:91
  • 历史总积分:200348
  • 注册:2011年4月25日
发表于:2021-02-24 09:41:17
4楼

其实最简单的做法就是监测通信心跳,比如你通信心跳正常是用SM0.5,上升沿下降沿各0.5秒,就用一个计时器去检测超过1秒接通或者断开就作为通信失败

固囚囿团

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 426回
  • 年度积分:525
  • 历史总积分:6604
  • 注册:2018年8月10日
发表于:2021-02-24 15:59:43
5楼

心跳可以用同一个D区,主站可以1S间隔置1,从站一直置0,主站判断值为1超过2秒就为通讯失败。。。

h小新

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 7回
  • 年度积分:10
  • 历史总积分:87
  • 注册:2019年6月28日
发表于:2021-02-25 16:53:12
6楼

有通讯超时的机制,你这个只是起到显示通讯是否正常的功能,可以定时取数据啊,然后放数组,然后定时比较数组前后是否一样。

gk2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:7
  • 历史总积分:57
  • 注册:2020年2月05日
发表于:2021-02-25 18:32:00
7楼

试试看

关育谋

  • [版主]
  • 精华:4帖
  • 求助:21帖
  • 帖子:388帖 | 5014回
  • 年度积分:1037
  • 历史总积分:38618
  • 注册:2004年5月28日
发表于:2021-02-25 20:03:01
8楼

定时中断中对定时计数器T1进行加1操作,正常通信进行数据发送和接收的时候把定时计数器T1清零,如果在设定的时间内没有进行通信的发送和接收,那么这个时候当T1自加值大于等于设定值时,即可进行心跳包的发送,以保持通信连接。

fengge11

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 145回
  • 年度积分:14
  • 历史总积分:161
  • 注册:2013年12月25日
发表于:2021-02-26 11:34:33
9楼

自己做一个循环计时,每秒一个脉冲把读过来的心跳存入一个寄存器中,再用这个去比较下一秒的数据不同,说明心跳再跳动,如果相同说明心跳停止。


相关主题

官方公众号

智造工程师