回复:S7-1200 Modbus tcp 客户机与服务器读写的技巧问题探讨

yming

西门子1847工业学习平台

  • 帖子

    23148
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2017-11-26 23:09:38

12楼

展开查看
以下是引用威师爷在2017-11-26 19:11:45的发言 >11楼

Y版!

你的这段话可以理解为下面绿色字体的回复?

当然是可以同时工作啦!这种状况,总是REQ,我都不看BUSY,只要是DONE,就更新数据区。

1,//也就是说客户机与服务器只要 读写时使用了不同的块(1,MB_CLIENT_1<>MB_SERVER_1//读服务器 

                                                  2,MB_CLIENT_2<>MB_SERVER_2//,写服务器 )就可以同时读写是这个意思吗?

2,//如果具备了同时读写的条件时,读写REQ总是把DONE的状态位使用一个常开点连上就可以?读写完成以后DONE为1时继续下一次的读写周而复始?

还请Y帮忙指导一下!非常感谢!



以下是引用yming在2017-11-26 15:35:18的发言 >8楼:嘿嘿,问题不在这里...

引用8楼详细内容:

嘿嘿,问题不在这里呀。

主要是看连接数!在线看看你使用的开放式连接数!如果对远程一台是使用两个连接,一个读,一个写;两边各有自己的功能块(就是有自己的数据缓冲区),当然是可以同时工作啦!这种状况,总是REQ,我都不看BUSY,只要是DONE,就更新数据区。反正断了连接,重新建立后都是自行恢复发送/接受的。


要是就用一个连接,也是可以的,你写程序就要分时段读或写啦。完全要按顺序,完成一个任务,再下一个任务。

如果多个客户端(多个PLC)只是对远程一个服务器(功能块)去读写,也是可以的,服务器端使用不同的连接号!各干各的。

如果你一个PLC使用多个客户端功能块去读写同一个服务器,就看你使用的是不同的连接号,还是共用的,共用就要“排队”了。就要查看服务器BUSY状态。

其实就是服务器端的对方IP地址设成0,那就是接受任意IP地址的访问。不排队才怪呢。

以下是引用威师爷在2017-11-26 12:53:19的发言 >6楼:如果服务器端把读写...

引用6楼详细内容:

如果服务器端把读写分开的,是不是就可以同时读写了?

例如1200与1200之间的Mdbus TCP  在客户端调用两次 MB_CLIENT  (分别使用来读写服务器)在服务器端的1200调用两次MB_SERVER(一个MB_SERVER用来接收客户机的数据一个MB_SERVER用来准备给客户机读取的数据)


是不是这样就可以读写同时操作?


以下是引用yming在2017-11-26 11:02:46的发言 >1楼:你说的那边服务器...

引用1楼详细内容:

你说的那边服务器是什么设备?

这事儿,完全取决于服务器那边。


1、关键不是使用了不同的块!  是各自使用了不同的(独占一个)开放式连接(号)。

如果你使用不同的块,但是用的是同一个连接,就必须分时,顺序启用读或写功能块。

2、如果都是各自独占一个连接(号),就没有冲突了;因此,也没必要去操作那个REQ;我就是启动完成后,就一直置一!它是自动的,即便网络中断(拔掉网线),再恢复时,自己就会恢复工作。期间也不需要重新REQ!  保持REQ置一,你就能看见该功能块的状态码,从建立连接,连接建立、等待数据。。。。。


即便对方是变频器,也不需要100毫秒REQ一次!因为,周期是不定的!变频器端其实也没有一定之规。完全根据实际工艺要求情况!不是很严格情况下,看门狗可以设置到2秒!!!

实际情况是:远程(通过多路由)可能MB_TCP 在数百毫秒到1千多毫秒之间。这样设置通常是这边拍急停,会在数百毫秒到1秒多间隔内响应。即便网络中断(断网),也是2秒变频器自己就OFF2急停了。




学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15112条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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