西门子1200/1500系列PLC的Modbus TCP通讯实例

2023-09-15  

在现代工业生产中,经常遇到上位机需要和第三方下位机通讯,比如第三方仪表,变频器,温度模块,压力变送器等等,这下就需要ModbusRTU,ModbusTCP/IP协议了,若您的第三方设备支持modbusTCP/IP协议,这时就可以采用网络通讯了。


今天我们以博途平台来介绍西门子1200和1500的TCP通讯,通过这个案例过后可以举一反三,应用到实际的项目中。本案例仅供参考。


我们在做这个项目案例时需要满足以下软硬件要求:

1.)一台西门子1200系列PLC(本案例是1215DCDCDC,控制器不一定和本案例的一样,只要支持modbusTCP协议就可以);

2.)一台西门子1500系列PLC(本案例是1513,控制器不一定和本案例的一致,支持modbusTCP协议就可以);

3.)一台安装上博途V16软件电脑;

4.)通讯网线两条即DC24V/10A开关电源一台。

满足以上条件后,我们打开博途开始组态等工作,这里先组态一个服务器(1513PLC),并建立一个服务器通讯数据DB块:

wKgZomRHOamAT7mMAAKaiyT3fn0444.jpg

建立方法:

在“程序块”里添加一个名为“TCON_IP_V4”的数据块,这里无需取消“访问优化块”。在静态变量“Static”里添加数据名称为“TCON”,数据类型“TCON_IP_V4”的通讯数据。

把“TCON”数据打开进行设置参数,“lnterfaceld”(通讯硬件端口)设置成“64”,ID设置为“8”,“Connection Type”(通讯协议)设置成16#0B,默认为TCP通讯协议,“ActiveEstblished”(建立连接),“1”为主动连接(客户机),“0”为被动连接(服务器),在继续打开“RemoteAddress”下找到“ADDR”数组来进行设置通讯IP地址,(一般作为服务器默认不设置),最后设置“LocalPort”服务器端口号为“502”。

我们调用TCP通讯指令块“MB_SERVER”,并把它拖拽到程序端进行参数设置:

wKgaomRHOaqAXBG9AAOOYTmzNr4549.jpg

在把服务器程序写完,我们组态一个客户端PLC(即1215PLC),组态完毕后,也需要添加一个通讯数据DB块,这里和服务器参数稍微有点区别,如下图所示:

wKgZomRHOaqAbqFWAAOiFTZWAqo506.jpg

客户机和服务器“TCON_IP_V4”的数据块参数区别在于以下几个参数:

1.)ActiveEstblished”(建立连接),“1”为主动连接(客户机),“0”为被动连接(服务器),这里是客户机了,就填写“1”

2.)打开“RemoteAddress”下找到“ADDR”数组来进行设置通讯IP地址,(这里为客户机,需要填写服务器的IP地址,也就是西门子1513PLC的);

3.} Remote Addrese这里需要填写服务器端口号(502);

4.)LocalPort”服务器端口号为“0”。

待通讯参数设置完毕后,添加一个TCP通讯指令“MB——CLAYend”如下图:

wKgaomRHOauAWz3BAAMpGuxxLJU133.jpg

从客户机向服务器写数据

我们添加一个读取服务器的程序:

wKgZomRHOauAJneNAAENt-3PLQs570.jpg

从客户机读取服务器数据(服务器写入数据给客户机)

读取要求:

把服务器端(西门子1513)端MW20-MW28五个数据存到客户机(西门子1215 )里的MW50-MW58里面。也可以反过来说服务器写入到客户机里面了。

控制器在线监控如下:

wKgaomRHOayAG3R2AAG1lq9YK88047.jpg

状态监控:

wKgZomRHOa2AHVH6AAKc0ShSA00272.jpg

1200/1500数据相互传递

以上简单的介绍1200和1500PLC通过Modbus TCP通讯协议互传数据,希望给想学习西门子PLC通讯的朋友一个参考和帮助,文章中难免有写的不完善甚至错误的地方,望大神批评指正


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。