回复:1200作为MODBUS TCP客户机与第三方设备进行通讯,第三方MODBUS TCP服务器通讯一会就出错了

yming

西门子1847工业学习平台

  • 帖子

    23148
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2017-09-20 16:01:45

14楼

展开查看
以下是引用威师爷在2017-09-20 12:27:55的发言 >13楼

Y版本!你说的对,我的确没有搞明白这个这个客户机的读写机制!


也就是说REQ置1以后,客户端的读写是根据内部的机制在进行读写数据的?读写的频率完全是根据服务器的响应以及网络的质量?可以这样理解吗?

以下是引用yming在2017-09-20 11:11:04的发言 >12楼:你好像还没搞清呢。...

引用12楼详细内容:

你好像还没搞清呢。

S1200的MB_TCP功能块是自动的。功能块的 REQ可以一直置一。

客户端,它底层自动建立连接(除非你操作断开);底层自动 REQ;发送/接收。

而服务器端是随时处理客户端的访问。


以下是引用威师爷在2017-09-20 09:36:49的发言 >11楼:在1200之间进行客户...

引用11楼详细内容:

在1200之间进行客户机与服务器的收发直接置位客户端的REQ,直接每次循环扫描周期发送接收一次没有发现有什么问题,与第三方的就不行,单独接收或者单独发送,通讯的时间肖薇久一点才会挂掉,如果同时启动读写,通讯一分钟内就挂掉

以下是引用火麒麟在2017-09-20 09:11:47的发言 >9楼:程序时怎么写的呢...

引用9楼详细内容:

程序时怎么写的呢,以前做过300的ModBusTcp通讯,当时编的是服务端的程序。客户端的话,读写指令不要做成定时发送的,应该是发送请求-启动接受-接受完成-再触发发送请求,如果有写命令,则检查当前状态,插入写指令,总之利用读写功能块的状态位来做程序。

我认为是的。

TIA 提供的这两个MB_TCP功能块的REQ并不完全等同与 TSEND_C和TRCV_C的REQ。

底层会根据功能块的状态,自己工作,一次次发送/接收。

PLC上做两个服务器,它们分别各自占用一个端口号,各自占用一个连接资源。可以独立工作,互不干扰。

-----------------------------------------------------------------

对方,PLC上做两个客户端,它们也分别各自占用一个端口号,各自占用一个连接资源。分别与上述两个服务器连接。

-----------------------------------------------------------------

这里有个问题:如果仅仅是一对一。没问题。甚至服务器可以指定远程的连接对象,确保安全。


但如果仅有一个服务器呢?虽然它可以处理所有远程访问的指令,但它只有一个端口号,只有一个连接。


这时,如果有多个远程的客户端来访问,服务器端每次只能处理一个客户端的访问。按说服务器之后应该切断这个访问连接,接受并处理下一个访问连接。

作为这些客户端,完成后,理应释放这个连接。




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

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15117条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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