技术论坛

1500作为客户端与两个SMART服务端的TCP通讯求助

作者 主题
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
主题:【求助】1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 楼主 2022-07-10 15:36:16

求助诸位大神,遇到TCP通讯的疑难杂症。

项目的情况简单说一下,客户将原有的系统统一组成1500冗余系统,原来的两台SMART与1500走S7通讯,因换成了冗余系统,所以打算采用TCP通讯。

因办公室测验时,只有一台1500(非冗余)和一个SMART,经过测试,将SMART分别修改IP地址为192.168.0.60/61,1500能把相应的数据块传递给SMART。

问题来了,现场测验时,有两个SMART,IP地址分别为192.168.0.60和192.168.0.61。程序里分别建立了两个背景DB和两个链接参数的全局DB,全局DB里赋值相应的SMART的IP地址和ID,端口号等。问题简单描述如下:

1、1500的程序只能与61的SMART交换数据。在诊断中发现60的设备链接不上。

2、将60的SMART程序和IP地址改成61,将61的SMART程序改成60的,仍然是61的数据能正常通讯。

3、删除61的通讯程序段,保留60的,通讯无法建立。

4、在保证61通讯成功的情况下,将61的链接DB中的值修改为60对应的参数,通讯无法建立。

其他说明:

1、SMART程序中没有和其他设备数据通讯的地方。

2、一个SMART传输的数据分了4个程序段,前两个数据段为100个字,后两个分别为28和26,数据量总共为254个字。

3、排除网络不通的问题,能监控到1500程序和两台SMART的程序状态。


请教诸位大神不吝赐教,有没有做过类似项目,即一个1500作为客户端,跟多个服务器(IP地址多个)交换数据的例子。或者相关资料的链接,轮询如何建立,背景DB和连接参数DB如何分配,非常感谢。



仰望星空,脚踏实地
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1769858&b_id=66&s_id=0&num=8

侠圣

经验值: 3815
发帖数: 730
精华帖: 3
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 1楼 2022-07-10 15:42:33

建议使用博图16或者17作为编程软件,因为从16开始1500RHplc就就可以支持S1设备,这样你就可以考虑将smart作为1500的PN从站。改成pn通信就简单多了。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3279
发帖数: 310
精华帖: 8
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 2楼 2022-07-10 22:14:36

为什么不坚持使用之前的S7通讯呢,在200SMART中可以组态S7通讯PUT、GET 1500H啊,1500H也支持S7通讯的


有事联系邮箱 203161926@qq.com
以下网友喜欢您的帖子:

  
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 楼主 3楼 2022-07-11 08:57:47

先说说测试结果。

昨天测试后发现,程序没有做变动,只是链接DB里面的参数换成别的IP地址可行,也就是,比如61和62或其他,在现场的网络中,测得几个IP中,只有20,60这两个IP地址不能建立连接,有点邪门。

PN,S7都可以用,只是根据现场多方面的情况选择了MODBUS TCP,在此就不一一说明了。


仰望星空,脚踏实地
以下网友喜欢您的帖子:

  
侠士

经验值: 1746
发帖数: 141
精华帖: 4
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 4楼 2022-07-12 09:20:54

1500作为客户端,估计你的连接ID用重了


公众号"worksway工方工园",欢迎关注~
以下网友喜欢您的帖子:

  
侠士

经验值: 1625
发帖数: 881
精华帖: 6
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 5楼 2022-07-13 16:14:08

西门子PLC 的TCP通信是一种面向连接的通信协议,我猜是基于SOCKET的通信方式。通信之前需要先建立连接,且这种连接一般是长连接,服务端监听,客户端主动连接服务端,建立连接后开始传输数据。因为这个原因,PLC限于CPU的能力,可能不太支持客户端多线程方式。


楼主的目的是S7 1500与多台SMART通信,建议S71500端设置为服务端,SMART端设置为客户端,能适应单对多的场景



好好生活,天天向上!
以下网友喜欢您的帖子:

  
至圣

经验值: 127317
发帖数: 22001
精华帖: 824
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 6楼 2022-07-15 16:09:55

这是ModBus TCP 根本牵扯不到轮询呀。

各用各的连接通道。两个背景数据块。一个本地端口502,另一个503。

两个MB_CLIENT各用自己的连接ID。并发通讯呀。怎么会与服务器IP有关?最多只会与200 SMART服务器端口号有关。SMART服务器端口号要是指定连接和任意连接就会有差别。




学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
奇侠

经验值: 5059
发帖数: 335
精华帖: 6
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 楼主 7楼 2022-07-16 09:45:59

针对楼上各位的问题,我说明一下:

1、连接ID没有重。

2、案例是要把1500的多个DB区域数据写入SMART,看了官方文档,用1500做客户端,SMART做服务器编程量是最少的。

3、SMART是第三方设备,简单修改程序(加服务器程序)可以,多的改动就不合适了,无关技术问题。

4、一个PLC的传输数据量为250+个字,一个TCP最大的传输数据为120字,得分几次。还未请教,除了轮询,还有什么方式合适能一次把这些数据都传输?

5、两个PLC同时数据交换没有成功的时候,已经建立了独立的连接DB(含连接ID和端口号),独立的背景DB。目前看到的情况是,把连接DB中的IP地址作了更换(相应的SMART的IP地址同时更换对应),通讯就成功了,程序未做调整。


有一个现象,不知道跟这个有没有关联。在整个网络中,用SMART的编程软件搜索PLC,能找得到20或60,但是有几次编程软件无法与其建立通信。只有PC单独对PLC的时候,可以修改IP地址。我不知道通信的原理,不知道有没有可能就是之前通讯未成功的时候,网络中已经充斥了大量的针对这两个IP的信息,也就是通信资源可能还在被占用着。按说1500和SMART的PLC重启,连接资源应该就释放了。不明白


仰望星空,脚踏实地
以下网友喜欢您的帖子:

  
至圣

经验值: 127317
发帖数: 22001
精华帖: 824
回复:1500作为客户端与两个SMART服务端的TCP通讯求助


只看楼主 8楼 2022-07-16 12:05:01

首先,1500不是1200,它的连接资源相比1200多的多,而且很少地保留。

 1、Modbus TCP 不是 Modbus RTU总线型,需要串行通信。(总线上,同一时刻,只能有一个站点独占总线。)Modbus TCP是可以并发通讯的。

这意味着,可以在程序中建立多个MB_Client客户端;每个客户端使用不同的MB_Client背景数据块;使用不同的连接ID;使用不同的本地端口(502、503、504... 远程服务器站要指定访问对应的端口,以保持连接。)

2、以上所有MB_Client的EN都是连接左侧能流线(每循环都调用)。若每个服务器只有一个MB_Client,则REQ只需一次上升沿,然后一直保持1。西门子MB_Client功能块会自动与服务器建立连接,连续执行命令;即便网线断掉,重新插上,此功能块也会再次建立连接,继续执行命令,

3、当传输的数据超过240字节时,就需要多次传输。可以用“轮询”(其实这不叫轮询);每次Done之后,改变传输数据区。也可以,直接连续调用MB_Client(用同一个MB_Client背景数据块),当前面的传输完毕利用Done,激活下一个(余下数据)的MB_Client的REQ。

《1500访问多个设备方法》


4、TCP/IP传输中,IP协议只负责传送IP- IP;所有连接管理等信息都在TCP协议中。

MB_Client访问不到、连接不上等等,看MB_Client功能块的状态STATUS代码就知道了。







学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
1500作为客户端与两个SMART服务端的TCP通讯求助
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。