多语言展示
当前在线:1315今日阅读:61今日分享:18

西门子S7-1500与远程IO模块实现Modbus TCP通信

本文介绍西门子PLC与基于modbus TCP协议的远程IO模块通信网络的组建方法;
工具/原料
1

博途 TIA V14 SP1

2

西门子PLC S7 1511-1 PN

3

Modbus TCP 16点PNP输入模块 型号:CHMT-IM16-0001(厂家:森特奈)

4

Modbus TCP 24点输出模块 型号:CHMT-OM24-0001(厂家:森特奈)

方法/步骤
1

硬件连接框图及实际连接状态

2

设置正确的IP地址、子网掩码;PLC通过TIA V14进行设置;模块默认子网掩码为:255.255.255.0;IP地址为192.168.IP3.IP4; IP3与IP4通过旋转拨码设置,详细说明见模块的说明书。如图下位置:CHMT-IM16-0001 设置如下:IP3 16X:  1  ; IP3 1X: 0;      IP4 16X: 0 ; IP4 1X: 5;CHMT-OM24-0001 设置如下:IP3 16X:  1  ; IP3 1X: 0;      IP4 16X: 0 ; IP4 1X: 6;

3

在博途中新建工程,选择使用CPU型号,本例子为1511-1 PN;本例中1511-PN作为客户端(client),ModbusTCP模块作为服务器(server);所以在程序块中需要调用“MB_CLIENT_DB”。连接两个server,则需要调用两个“MB_CLIENT_DB;如下图:先设置CHMT-IM16-0001;

4

其中参数说明如下:REQ应该连接一个具有频率输出的点,此引脚检测上升沿变化后才发送指令,本例子接Q1.3,Q1.3由定时器产生一个2ms的方波;如下图:

5

根据ModbusTCP模块的说明书:功能码为0x04 寄存器地址为0;数据长度为1;

6

再查看PLC的手册,modbus 功能表,如下图;确定MB_MODE 为0;MB_DATA_ADDR为30001;MB_DATA_LEN为1;注意:MB_DATA_ADDR,由于PLC程序块定义起始地址是30001而不是30000所以此参数为30001,但是对于其他厂家的plc,例如LSPLC 他们的起始地址是30000所以在LSplc中就要设置为30000;

7

MB_DATA_PTR指向写入或者读取的数据变量;注意此变量的长度必须和MB_DATA_LEN匹配否则无法正常通信;本例输入模块为16位,设置变量read_data为UInt类型;CONNECT需指向“TCON_IP_V4”类型的变量;定义的数据块如下:其中在建立TCON变量时直接在数据类型中输入TCON_IP_V4即可;DONE,BUSY,ERROR,STATUS用来查看通信状态,指向所需变量即可。详细信息如后面贴出的“MB_CLIENT_DB各项参数说明”。

8

CHMT-OM24-0001的设置类似;确定MB_MODE 为2;MB_DATA_ADDR为40001;MB_DATA_LEN为2;

9

MB_CLIENT_DB各项参数说明如下:

10

之后将博途中的程序下载到PLC即可;建立通信后的状态如下:

推荐信息