回复:1200系列PLC如何通过MODBUS_TCP读写28个服务器?

樱桃大丸子

  • 帖子

    82
  • 精华

    0
  • 被关注

    38

论坛等级:侠客

注册时间:2017-01-10

普通 普通 如何晋级?

发布于 2018-07-28 16:39:05

15楼

展开查看
以下是引用shine在2018-07-27 11:20:28的发言 >14楼

我开了2个PLCSIM,测试MODBUS TCP,一个作为server,一个作为client,能看到状态码 server是7006,client是7004,一切正常,但是,client 给个req之后,状态码变成了7006,超时时间过了之后错误码80C8,然后变回7004。监控server和client的背景数据块,能看到server收到了client发过去的请求,但是没看出是否有响应,抓包工具好像也不能抓取2个plcsim直接的数据包。

因为手头只有1个cpu,分别下载到CPU,和电脑做测试,都是没有问题的,一直没搞懂为什么模拟测试不成功。如果不支持,那么不会显示7004/7006的状态,但支持的话,server没响应

以下是引用yming在2018-07-20 19:25:39的发言 >11楼:就一个客户端,轮流...

引用11楼详细内容:

就一个客户端,轮流、逐一访问各服务器。

一下子测试那么多做啥?只需要测试做2个可访问服务器的即可知道。

何况这MB_TCP系统个完全可以仿真!(硬件都不需要。)


以下是引用樱桃大丸子在2018-07-20 16:23:40的发言 >10楼:意思是程序里面总共...

引用10楼详细内容:

意思是程序里面总共只创建不超过14个MB_CLIENT指令,第一个IP地址读写完成之后,用DisConnect断开连接,然后修改IP地址数据,然后再重新建立连接……如此循环执行?

我试过创建15个MB_CLIENT指令,14个为一组,当读写完成之后,我通过DisConnect断开14个连接,然后启动第15个连接,结果报错80A4,说是IP地址无效。

以下是引用yming在2018-07-20 15:52:24的发言 >9楼:应该是可以的。连...

引用9楼详细内容:

应该是可以的。

连接ID不变;

REQ=1;用DisConnect 操作;并用 状态 7003 判断。然后改变服务器 IP地址的最后一位字节。

服务器侧也需要在响应完成后,用一个周期,DisConnect 断开连接,然后恢复等待连接。




以下是引用樱桃大丸子在2018-07-20 08:08:58的发言 >3楼:貌似是不可行的。...

引用3楼详细内容:

貌似是不可行的。题目中的那几个唯一条件限制了,没办法通过程序去切换,特别是那个“连接ID”,是以静态变量的形式存在的,除了下载之前赋值,程序运行的时候是没办法改变的。

以下是引用yming在2018-07-19 23:48:17的发言 >2楼:是8个固定(预留...

引用2楼详细内容:

是8个固定(预留)和6个动态。

如果没有时间要求,用个1客户端去轮流读不同的MB_TCP 服务器,也是可以的。


感谢费心,这几天我在忙别的事情,没有跟进这个问题。我反复测试了一下,用一个指令,通过切换IP和端口号等,是可以做到超过14个服务器的,但是感觉很繁琐,效率低。感觉这种不太适合轮训,远没有RTU模式轮训方便。

精通吃饭,擅长睡觉
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15119条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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