回复:PLC1200 modbus写操作问题

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23144
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2022-01-11 21:32:57

2楼

你这个是ModBus TCP。写法与总线形式的MB_RTU完全不同。

你的MB TCP写法有好几个问题。

1、EN不需要前面的比较。这个功能块是“自动”的。(建立连接,传送等等)不用你管。

2、REQ只需要在PLC完成启动循环后,给出一个上升沿(0 -> 1)即可;(之后一直保持1都行。除非变更远程地址。)

(好好看看 状态字 7000,7001,7002...都是什么意思?)这个功能块建立连接的过程是自动的!哪怕你把网线扯断,再重新连接上,都不需要REQ!是自动再次连接,恢复通讯的!

3、那个指针需要指出缓冲区长度。

4、注意:如果是固定与对方通讯,读和写要使用不同的连接ID,同时己方和对方也需要分别使用不同的端口!

例如:客户端使用连接ID=1和端口502:读远程IP端口502;客户端使用连接ID=2和端口503:写远程服务器的端口503.

每一个IP都有65536个端口!除了一些默认定义的端口外,都可以用。


最后一点:什么时候才会用到Disconnect?

只有一种情况:我的1200的连接资源不够用了!

这时,就需要用一个连接ID去访问好多个MB_TCP服务器。

用法:当完成一个服务器IP访问后(Done),转存缓冲区数据,断开连接=1,直到状态字为已断开、REQ=0、断开连接=0;下个扫描周期,改变远程IP,下一个扫描周期REQ=1(开始新的连接)这称为 动态连接!

断开连接过程,绝对不是一个扫描周期就能完成的!是需要远程服务器响应的!

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

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15106条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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