回复:关于S71200/1500 MB_Client 不进行轮询时REQ是不是任何时候都设置为TRUE执行效率最优?

已锁定

威师爷

  • 帖子

    5108
  • 精华

    47
  • 被关注

    255

论坛等级:至圣

注册时间:2013-09-18

白金 白金 如何晋级?

发布于 2022-10-09 15:09:07

8楼

展开查看
以下是引用yming在2022-09-30 12:32:22的发言 >7楼

是的。

最早的MB_CLIENT功能块是把 IP v4、ID写在了端口上。那是很容易发生错误的。

现在的都是在背景数据块中设置。此外,它保留了运行期间的接口参数的SAVED。确保在通讯期间,“不理会”接口参数的变化。不会发生错误。

REQ的功能仅为,上升沿,按照背景块数据,建立新的连接。


在这里要注意的就是连接ID,1200的连接资源是很少的。(全系列都一样。这就是为啥我喜欢用多个1211C的原因。)MB通讯占用开放式通讯的资源和动态分配的资源。

双向全双工读写,会占用2个连接资源。所以,资源紧张时,就用半双工,分时读写。(这不是轮询。)

如果资源紧张。要访问多个服务器时,就需要轮询。一个地址通讯完成后,(断开连接,)改变背景数据块(IP/端口号)。重新REQ。




以下是引用威师爷在2022-09-30 09:26:53的发言 >5楼:谢谢y版的细心描述并...

引用5楼详细内容:

谢谢y版的细心描述并且一步步引导。非常感谢!


也就是说,两个客户端分别采用两个连接ID 去读取同一个IP的服务器,并且服务器端又分开502与503端口分别对应两个客户端的读写,也就是MB CLIENT 1 连接ID1 读取MB服务器端口502的数据 ,MB CLIENT 2 连接ID2写入到MB服务器端口503的数据  那么在这个过程中两个MB_CLIENT 的REQ直接直接TRUE即可是这样吧。我可以理解为这个REQ只是触发ID连接的作用吗?也就是数据的读写在连接成功以后MB_CLIENT在内部是自动进行工作的与REQ的触发频率无关是这样吗?

以下是引用yming在2022-09-26 18:57:03的发言 >3楼:你的理解有误。这是...

引用3楼详细内容:

你的理解有误。这是Modbus_TCP通讯

不同的连接ID代表了占用的不同连接资源。

REQ在这里是启动连接,当状态字为7002时,建立连接完成。


然后它将连续地将你定义的缓冲区数据向服务器 读/写操作。你只需要在Done=1时,完成报文数据移动、修改。即便物理链路断开,(网线插拔),它也会自动再连接。(不用重新REQ)


对一个服务器同时读/写,用两个客户端,分别使用两个连接(固定)ID。分别REQ后,它会一直维持这两个连接;直到DISCONNECT。(当断开DONE之后,释放这个连接ID)


对一个服务器分时读/写,用一个客户端,使用一个连接ID;每次只能读或写。


你可以使用多个客户端,分别连接不同的服务器IP。直到连接资源用光。


若连接资源不够用、或网络负载太大。那么就需要使用DISCONNECT,通讯完成,断开(释放)连接。更换服务器(或暂停)数据。让别的客户端使用这个连接ID。




谢谢y版的分享!


工业起重机防摇摆 QQ:404136820 AntiSwayControl
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15106条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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