回复:S7-1214C的Modbus_tcp通讯验证

已锁定

WWCWWC

西门子1847工业学习平台

  • 帖子

    9114
  • 精华

    157
  • 被关注

    1474

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

发布于 2020-07-24 11:05:28

8楼

展开查看
以下是引用yming在2020-07-23 17:20:21的发言 >7楼

要注意!这个ModBus TCP的REQ 功能 完全不同使用CM通讯模块的 ModBus RTU。

对于CM模块的 功能块的 REQ是启动一次与CM模块的交换;直到DONE/ERROR的结束。

而这种ModBus TCP功能块的REQ是启动对(指定)服务器访问的请求。该请求要与Disconnect(断开连接)配合操作。

我理解,实际运行中,该客户端的功能是每循环周期,根据REQ和Disconnect两者状态来工作的。

REQ保持1、Disconnect保持0,此客户端一直保持与服务器的连接,连续读取服务器变化的数据。

你只需要在DONE=1的那个周期取出数据即可。

在这里,同一台PLC可使用多个客户端去连接不同的服务器,每一客户端会占用一个系统连接资源。

客户端数量最多到系统开放式+动态连接资源用光。这就是说,这种方式不需要轮询,是并发的。

而且即便断开网络,再次接续,也会自动连接,不需要操作REQ。


如果系统连接资源不够,那就需要操作REQ和Disconnect了。

对于客户端来说,DONE完成取数据后,首先要Disconnect=1,等待STATUS=7003(已断开)后,REQ=0。

然后可以操作另一个客户端功能块的Disconnect和REQ,占用同一个连接ID,发起对另一个服务器的请求。

当然,也可以在断开连接条件下,改变访问参数、读写方式等后,再次发起请求和连接。目的仅仅是使用同一个连接ID,适应系统连接资源紧张的情况。


注意:TCP传输是异步通讯,是可以在VPN网络中传输的,其间可以通过很多的阶跃点路由;一次访问交换通讯时长不定!也可以通过3G网络远程通讯呢。应答响应时间会1-2秒。而在负荷很轻的局域网内,则响应周期可达几毫秒 -十几毫秒。

所以定时发送请求是不正确的。只是在特定场合可行。




以下是引用WWCWWC在2020-07-23 13:35:55的发言 >:收到。   可能我这...

引用详细内容:

收到。

   可能我这个指令还应用只有一个,如果多个轮询,错误会显现出来了,感谢指正。

感谢,感谢,见识了。

   昨天晚上回家去,也看看相关的文档,结合Y侠、h侠的指正,让我了解的更深刻了,再次感谢2位热心指导。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15119条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。