技术论坛

关于通讯心跳信号

作者 主题
奇侠

经验值: 6676
发帖数: 2327
精华帖: 19
主题:【探讨】关于通讯心跳信号


只看楼主 楼主 2020-11-04 10:19:56

判断通讯是否正常看到国外基本上使用的心跳信号。

基本上就是程序中有个变量一直在发生变化,当变量不发生变化的时候,就认为是通讯失败了、

但是还看过有的人用一个BOOL的变量,在程序中一直置位1,对方的程序中,如果变成0了,就说明通讯失败了。

我感觉用第二种方式更简单一下,通讯失败了,接收不到数据,通讯缓冲区自然就变成0了。

这种方式有什么隐患吗?


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1649287&b_id=7&s_id=0&num=12

版主

经验值: 16187
发帖数: 6610
精华帖: 50
回复:关于通讯心跳信号


只看楼主 1楼 2020-11-04 12:36:08

你理解有误。

1,如果数据一直不变化,是无法判断通讯正常与否。

2,通讯本身是不会改变数据的,无论通讯正常或异常,收到什么就是什么,通讯异常没收到数据只能维持不变或不更新。

3,心跳信号原理上无外乎两种,其一是心跳信号的置位复位由一方独立维持,一般是plc侧。另一侧只是通过侦听有无变化来判读通讯状态。其二是心跳信号的置位复位由双方共同维持,一方置位,另一方复位。


两种方式各有优劣,都没有你说的隐患。


知其道,用其妙!
以下网友喜欢您的帖子:

  
奇侠

经验值: 6676
发帖数: 2327
精华帖: 19
回复:关于通讯心跳信号


只看楼主 楼主 2楼 2020-11-04 18:03:49
以下是引用东方红一红在2020-11-04 12:36:08的发言 >1楼

你理解有误。

1,如果数据一直不变化,是无法判断通讯正常与否。

2,通讯本身是不会改变数据的,无论通讯正常或异常,收到什么就是什么,通讯异常没收到数据只能维持不变或不更新。

3,心跳信号原理上无外乎两种,其一是心跳信号的置位复位由一方独立维持,一般是plc侧。另一侧只是通过侦听有无变化来判读通讯状态。其二是心跳信号的置位复位由双方共同维持,一方置位,另一方复位。


两种方式各有优劣,都没有你说的隐患。

以PROFINET举例

如果通讯的数据BOOL型一直为1,那么接收方在通讯正常的情况下,也是接收到1

但是当通讯失败的时候,接收方的接收缓冲区就变成0了,这样就可以判断通讯失败了。

这样在发送方只需要置位这个标志位就行,其他也不用操作,这种方式不更简单吗?


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6676
发帖数: 2327
精华帖: 19
回复:关于通讯心跳信号


只看楼主 楼主 3楼 2020-11-05 08:04:52

是不是不同的通讯协议的问题。如果profinet应该不存在这个问题

但是如果使用S7通讯的话,是不是有可能会出现这种情况。‘

这个我不是太清楚



 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3904
发帖数: 370
精华帖: 1
回复:关于通讯心跳信号


只看楼主 4楼 2020-11-05 08:28:26

为了避免出现以“0”“1”判断通讯状态,出现断开后、状态依然保持的情况,使用了计数递增的方式!


无法改变之前,努力改变之后
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:关于通讯心跳信号


只看楼主 5楼 2020-11-05 08:32:10

楼主我问你,你家对面的一家,门口的拉手上塞着一张某超市的宣传单,好几天了,你说这家里面有人不?

通常情况要是有人的话随手就把宣传单拿下来了。这个动作就是一方置位,一方复位。

我又说个单方面置位复位的例子。小区门口的通知栏,是物业管理向住户展示一些通知用的。今天11月了,还是贴着劳动节游园会的通知。你说物业干什么了?

以上两点都是生活中的一点经验而已。把它写到程序里面就可以了。

第一例,双方各持两种操作,双方都要对同一个缓冲区进行读和写。双方都可以知道对方状态。有的小偷就利用这种优势,检查你家隔壁是否长期没有人。

第二例,单方面只需要一种操作,程序简单。一方只读,一方只写。问题是不能双向了解在线情况。

以上仅仅是底层原理。至于上层发生的在线就1离线就0,那么这是上层软件的功能了。这个什么情况都可以做出来。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 13749
发帖数: 2032
精华帖: 16
回复:关于通讯心跳信号


只看楼主 6楼 2020-11-05 08:51:51

S7通讯,不用心跳咋判断是否掉线,你DB里面的数据又不会因为掉线而改变。


工控毁我青春!
以下网友喜欢您的帖子:

  
版主

经验值: 16187
发帖数: 6610
精华帖: 50
回复:关于通讯心跳信号


只看楼主 7楼 2020-11-05 13:03:14
以下是引用jacky_andy在2020-11-04 18:03:49的发言 >2楼

以PROFINET举例

如果通讯的数据BOOL型一直为1,那么接收方在通讯正常的情况下,也是接收到1

但是当通讯失败的时候,接收方的接收缓冲区就变成0了,这样就可以判断通讯失败了。

这样在发送方只需要置位这个标志位就行,其他也不用操作,这种方式不更简单吗?

以下是引用东方红一红在2020-11-04 12:36:08的发言 >1楼:你理解有误。1,如果...

引用1楼详细内容:

你理解有误。

1,如果数据一直不变化,是无法判断通讯正常与否。

2,通讯本身是不会改变数据的,无论通讯正常或异常,收到什么就是什么,通讯异常没收到数据只能维持不变或不更新。

3,心跳信号原理上无外乎两种,其一是心跳信号的置位复位由一方独立维持,一般是plc侧。另一侧只是通过侦听有无变化来判读通讯状态。其二是心跳信号的置位复位由双方共同维持,一方置位,另一方复位。


两种方式各有优劣,都没有你说的隐患。

你这个就不是心跳信号。


知其道,用其妙!
以下网友喜欢您的帖子:

  
侠士

经验值: 1661
发帖数: 87
精华帖: 0
回复:关于通讯心跳信号


只看楼主 8楼 2020-11-05 15:28:26

所谓的心跳信号,其实就是1HZ或者0.5HZ形式的间歇跳动,也叫方波脉冲,又叫脉冲振荡。

用来检测设备间通讯交互的正常与否,这种形式是目前应用最多,也是最好用的通讯检测方式。


努力到无能为力,拼搏到感动自己!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3279
发帖数: 310
精华帖: 8
回复:关于通讯心跳信号


只看楼主 9楼 2020-11-05 19:52:16

看图我写的这个是双向的





有事联系邮箱 203161926@qq.com
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:关于通讯心跳信号


只看楼主 10楼 2020-11-06 10:57:58

对于我来说,两种都差不多,也没啥隐患反正每个通讯周期都会写心跳信号。

第一种,主站每个通讯主循环改变心跳信号就好,从站直接用两次通讯状态的心跳信号是否相等,相等时定时器就开始计时、不相等定时器就清零然后把当前心跳信号给本地缓存的心跳信号。


第二种就比较简单,主站只是每个通讯周期都写心跳信号1,从站判断到心跳1就清定时器同时清零心跳信号,只要长时间主站都没写1定时器累计到一定值从站就判断主站通讯中断了。


至于主站判断从站的通讯中断?反过来就行。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12239
发帖数: 2431
精华帖: 86
回复:关于通讯心跳信号


只看楼主 11楼 2020-11-06 21:41:12
通信失败了,接收端应该是最后接收的数据块,如果从上层用户层面可以用心跳信号来判断,另外功能块也有相应诊断或状态信号,比如error,done,busy等都可以用来判断通信是否正常。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 43597
发帖数: 15780
精华帖: 61
回复:关于通讯心跳信号


只看楼主 12楼 2020-11-09 10:58:58

用memory clock字节,假设你通讯是1s一次,那么如果通讯正常时每一个周期对方收到的数据都是不一样的,这样只要一个扫描周期就知道是否正常了,如果你用bool需要两个以上的周期才能检测出来。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于通讯心跳信号
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。