技术论坛

关于西门子200smartPut/Get通讯时间延迟的疑问

作者 主题
游民

经验值: 122
发帖数: 6
精华帖: 0
主题: 关于西门子200smartPut/Get通讯时间延迟的疑问
推荐帖


只看楼主 楼主 2019-01-03 23:56:34
一个主站200 smart PLC通过Put/Get方式与其余4个200 smart PLC从站通讯,利用Put/Get向导工具在主站PLC进行配置,共8个Put/Get,主站PLC调用NET_EXE子程序。为监控4个从站PLC与主站PLC的网络通讯状态,在4个从站分别建了200毫秒的心跳信号,主站PLC读取从站心跳信号。4个从站PLC网络正常时,主站PLC读取到的心跳信号正常,200毫秒变化;当其中一个PLC下电后,在主站PLC监控到该PLC的心跳信号不正常,另3个PLC的心跳信号也会有达1秒的情况。当再把一个PLC的网线拔掉后,在主站PLC监控到另一个在线的PLC的心跳有多达5秒的情况。总的看到的现象是当其中一个网络掉线致使整个Put/Get时时间延迟了。Put/Get是否这样用法,或者利用Put/Get有更好的方式读写其他PLC?
 
以下网友喜欢您的帖子:

  
重要声明:

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

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

至圣

经验值: 69050
发帖数: 12265
精华帖: 59
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问
推荐帖


只看楼主 1楼 2019-01-04 05:41:31

通讯状态不使用心跳信号,直接使用GETPUT指令的状态值就可以的啊

参考:

以太网通信常见问题(S7-200 SMART CPU之间的以太网通信、PUT/GET向导、PUT/GET常见问题、通信端口与连接方式、工业以太网连接器、S7-200 SMART 与S7-300 S7通信、S7-200 SMART 与S7-1200 S7通信)

http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/016.html



Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问
推荐帖


只看楼主 2楼 2019-01-04 13:11:05

每秒产生5个心跳。是否对方收到5个心跳?你怎么知道收到延迟很久的这个心跳是不是当前的这次心跳?

多达1秒;5秒是什么意思?这个秒数的零刻度是哪里开始,计时又是以什么结束?

心跳是本身自己的功能状态,而通过网络发送去的就算网络发生断线只会产生丢失,不会发生性能以外的延时。即使性能很低,也只会发生心跳间隔不稳,时快时慢,而不会少了数量。

我十天发十件快递给你,正常的话你也每天收到一个快递,但是可能迟了一两天才收到第一个。如果快递出了点问题,可能你某些天没收到,一来又会来了两份。

所以你还是要弄清楚某些事。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 13020
发帖数: 1815
精华帖: 22
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问
推荐帖


只看楼主 3楼 2019-01-04 17:56:59

       这样看来从站掉站后小型PLC S7-200SMART的PUT/GET通讯组织你要写程序介入,如果你要精确的控制整个网络估计不能组态,而要用指令操控寄存器。(官方可能没有针对小型机SMART提供足够复杂的组态支持度,也可能是我理解有错,我没用到4台,最多用过2台,没遇见过这情况)


 
以下网友喜欢您的帖子:

  
游民

经验值: 122
发帖数: 6
精华帖: 0
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 楼主 4楼 2019-01-04 23:34:01
@芳季,在从站写了一个信号,这个信号200毫秒ON后200毫秒OFF,然后再200毫秒ON。。。这样一个持续变化的信号。在主站监控这个信号的变化,对信号计时,信号有沿变化时计时清零,即是如果该信号持续500毫秒的ON或者持续500毫秒的OFF则判断该信号不正常,说明该从站掉线。在调试过程中发现偶尔有持续500毫秒不变化的情况,因此把这个监控周期放大至1秒,在拔掉其他从站网线后发现该信号有达1秒不变化的情况,其他从站网线拔掉的越多,这个信号持续不变的时间越长,甚至达到5秒。PUT/Get时,网络正常时NET_EXE中error位是0,拔掉一个从站的网线,在NET_EXE中error位为1,200毫秒信号持续不变化的频率增加很多。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 5楼 2019-01-05 07:49:38

你试试这样,把当前BITIME指令产生的时间值通过网络发送过去。可以知这网络缺了什么。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2440
发帖数: 467
精华帖: 6
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问
推荐帖


只看楼主 6楼 2019-01-09 16:24:59
以下是引用jzhsh2007在2019-01-04 23:34:01的发言 >4楼:@芳季,在从站写了一个信号,这个信号200毫秒ON后200毫秒OFF,然后再200毫秒ON。。。这样一个持续变化的信号。在主站监控这个信号的变化,对信号计时,信号有沿变化时计时清零,即是如果该信号持续500毫秒的ON或者持续500毫秒的OFF则判断该信号不正常,说明该从站掉线。在调试过程中发现偶尔有持续500毫秒不变化的情况,因此把这个监控周期放大至1秒,在拔掉其他从站网线后发现该信号有达1秒不变化的情况,其他从站网线拔掉的越多,这个信号持续不变的时间越长,甚至达到5秒。PUT/Get时,网络正常时NET_EXE中error位是0,拔掉一个从站的网线,在NET_EXE中error位为1,200毫秒信号持续不变化的频率增加很多。

应该是不需要心跳的,虽然只有一个NET_EXE例程,但每个操作是有独立的表格地址的,读取相应的状态即可。

 


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 7楼 2019-01-09 22:17:55

不做心跳,不留时间戳服务器和客户机之间怎么知道对方什么时候更新过,死了没有?

你想想,服务器停止了更新数据,而客户机仍然不断地拉取数据,这数据得来有什用?相反,服务器在数据中加入时间戳,客户端就会……就知道数据是新的了。另一方面,客户机连时间戳一起推入服务器,服务器也可以知道。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2440
发帖数: 467
精华帖: 6
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 8楼 2019-01-09 22:36:48
以下是引用芳季在2019-01-09 22:17:55的发言 >7楼

不做心跳,不留时间戳服务器和客户机之间怎么知道对方什么时候更新过,死了没有?

你想想,服务器停止了更新数据,而客户机仍然不断地拉取数据,这数据得来有什用?相反,服务器在数据中加入时间戳,客户端就会……就知道数据是新的了。另一方面,客户机连时间戳一起推入服务器,服务器也可以知道。

我只是告诉他NET_EXE任然可以监控每个操作状态,关于心跳的使用看程序设计吧,反正我做的程序所有的数据服务都是一直循环运行刷新的,除非宕机或掉线,所以只要监控通讯状态即可,即使真需要,我一般也不用时间,直接设定一个32位的数据操作计数即可。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 9楼 2019-01-09 23:04:34
以下是引用lf184452在2019-01-09 22:36:48的发言 >

我只是告诉他NET_EXE任然可以监控每个操作状态,关于心跳的使用看程序设计吧,反正我做的程序所有的数据服务都是一直循环运行刷新的,除非宕机或掉线,所以只要监控通讯状态即可,即使真需要,我一般也不用时间,直接设定一个32位的数据操作计数即可。

通讯状态没说明数据更新了。好像STOP了都仍可被get 被put的。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 10楼 2019-01-10 09:17:00

楼主没能反馈到一些有用的信息。可能从站这个词要改改,再说明一下。你这个计时是哪方面产生的心跳和哪方面计算的时间?

ping一下各站的时间。用ping/t制造断线,看时间的反应。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4243
发帖数: 583
精华帖: 3
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 11楼 2019-01-10 09:31:49

在电商WCS与PLC通讯过程中,是用心跳+计数来完成相互判断通讯是否正常的。


    双方每3S心跳一次,各自心跳计数加1,心跳计数范围1~10000;双方记录对方的心跳计数,应该出现心跳时,没有出现,可根据记录的对方心跳计数及自身的心跳记数+阀值,判断通讯情况。


 
以下网友喜欢您的帖子:

  
游民

经验值: 122
发帖数: 6
精华帖: 0
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 楼主 12楼 2019-01-11 00:23:29

直接上图把。

本地CPU通过Get的方式读取远程CPU的心跳信号V303.1,放入本地的V2107.1中。远程CPU产生200ms ON然后200ms OFF这样一个持续变化的信号,本地CPU判断V2107.1这个信号在1.5S内是否有ON/OFF的变化,在1.5S内有变化,通讯正常,M19.3为ON状态;超过1.5S不变化,通讯异常,M19.3为OFF状态,通过M19.3的状态判断通讯是否正常。





 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 13楼 2019-01-11 10:24:30

哦好,很明白了。

ping结果怎样?原理上看不出什么问题。以我经验,问题应该都是发生在你不会晾出来的地方。没找到的东西总是放在你还没想去看的地方。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2440
发帖数: 467
精华帖: 6
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 14楼 2019-01-11 14:53:04
以下是引用芳季在2019-01-09 23:04:34的发言 >9楼

通讯状态没说明数据更新了。好像STOP了都仍可被get 被put的。

以下是引用lf184452在2019-01-09 22:36:48的发言 >:我只是告诉他NET_...

引用详细内容:

我只是告诉他NET_EXE任然可以监控每个操作状态,关于心跳的使用看程序设计吧,反正我做的程序所有的数据服务都是一直循环运行刷新的,除非宕机或掉线,所以只要监控通讯状态即可,即使真需要,我一般也不用时间,直接设定一个32位的数据操作计数即可。

做过实验了,当远程CPU STOP时,确实可以GET到数据。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 15楼 2019-01-12 17:22:34

楼主。现在怎样啫?


 
以下网友喜欢您的帖子:

  
游民

经验值: 122
发帖数: 6
精华帖: 0
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 楼主 16楼 2019-01-13 10:54:08

保留一个远程CPU在线,其他CPU下电时,ping这个在线CPU,基本在1ms,没有超时的情况,说明其他远程cpu下电不影响整个网络,网络正常。这种情况下看到的在线的这个远程cpu心跳就经常有超过1S才变化的情况,而全部远程CPU都上电保持在线时基本在200ms变化。看了下NET_EXE的帮助文件,不知和他的等待时间、循环时间有关。




 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复: 关于西门子200smartPut/Get通讯时间延迟的疑问


只看楼主 17楼 2019-01-13 11:14:40

刚好成倍关系。你把心跳改成175毫秒。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于西门子200smartPut/Get通讯时间延迟的疑问
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。