新闻资讯

S7-1200的网口实现IO扩展方法(modbus tcp客户端编程)

作者:管理员 点击:16084次 发布时间:2022-11-03

1. 网络拓扑图

客户端CPU 1211C

软件:Portal V16

服务器:ZM14-8RTD-11(网口型8路三线热电阻温度采集器)

 

图片1.png

2. 新建工程,硬件设置

添加新设备

图片2.png

设置PLCIP地址,子网在此应用上可以不用添加。

图片3.png


系统和时钟存储器勾选,地位我们分别定义在MB50MB51,后面编程会用到。

图片4.png

3. MB_Client指令使用方法

先去了解MB_Client指令使用方法,这里就不再介绍其用法了。

图片5.png

4. 添加必用的全局数据区

添加2个数据区:1个用于MB_Client指令CONNECT指针指向的数据区(在此为了区分命名为MB_TCP连接数据区_1),1个用于客户端与服务器的数据收发区域。

图片6.png

3.1 建立TCON_IP_v4系统数据并初始化参数

MB_TCP连接数据区_1”里面建立一个TCON_IP_v4,这个是系统数据类型,不是用户数据类型,所以需要自己输入,也可以COPY进去。

图片7.png

上图上我们初始值键入interfaceld 64(16#40),需要与PN口硬件号一致。图片18.png

ID号根据需求填写,每使用1MB_Client指令,ID号需要不一样,ConnectionType保持默认16#0BActiveEstablished初始化必须为1,否则启用时会出错,填写需要访问的服务器IP192.168.0.200,远程端口号502,本地端口号0

3.2 在交换数据区建立对应的变量

图片8.png

ZM14-8RTD-118路三线制PT100热电阻温度采集模块,温度范围-100~600℃,显示-1000~6000的数据,所以我们需要建立8个有符号整型数据,变量名AI,数据类型Array[0..7]of Int8个有符号整形数据。

5. 建立客户端访问单个服务器程序段

4.1. 调用MB_Client指令

图片9.png

4.2. 背景区

自动生成数据背景区DB1即可,也可自定义其它号的DB

4.3. REQDISCONNETMB_MODEMB_DATA_ADDRMB_DATA_LEN的使用

这里使用系统时钟指令M51.010HZ100mS一个上升沿来触发REQDISCONNET需要设置为FALSE,功能码、地址 、长度根据ZM14-8RTD的相关参数设置,具体参考下表

PLC地址

Modbus地址

数据类容

功能码 16#

长度(INT

30001

0X 00

1 热电阻温度×10

04(读)

1

30002

0X 01

2 热电阻温度×10

04(读)

1

30003

0X 02

3 热电阻温度×10

04(读)

1

……

……

……

……

……

30008

0X 07

8 热电阻温度×10

04(读)

1

我们使用功能号104,地址0,数据长度8

图片10.png

4.4. MB_DATA_PTR的使用

MB_DATA_PTR指向上面已建立的数据收发区,注意:指针不要指向具体的一个变量,比如变量AI[0],如果这样会造成MB_Client通讯状态的ERROR标志置1STATUS状态代码16#8383。应该需要指向AI变量的地址指针,而不是数据首地址,如下图,应选择无。

图片11.png

选择“无”后显示下图

图片12.png

若数据交换区建立的数据变量只建立了一个数组变量,指针也可以指向DB区的首地址指针,如下图

图片13.png

选择“无”后显示为下图

图片14.png

4.5. CONNECT的使用

图片15.png

CONNECT指向建立的系统数据区的首地址即可,同MB_DATA_PTR的使用一样,也不要指向内部具体的一个数据地址,选“无”即可。

4.6. DONEBUSYERRORSTATUS

这几个是MB_Client指令的输出状态,在监视状态可查看其值来判断有没有错误信息,对编程很有帮助。

6. MB_Client背景数据区参数设置

其中的MB_UNIT_ID的设置尤为重要,西门子默认是16#FF,但实际运用中会根据作为服务器的扩展IO模块的实际通讯站地址来设置。

ZM14-8RTD-11,通讯站地址为01即拨码开关前7位设置为“1000000”,则MB_UNIT_ID需要初始化设置成01

图片16.png

也可将拨码开关前7位都拨到OFF状态“0000000”,即通讯站地址16#FF,这里的MB_UNIT_ID就可以不需要改变了。

7. 编译、下载、查看状态

编译组态及程序,然后下载。

在监视状态下查看DONEBUSYERRORSTATUS状态,DONEBUSY的状态是TRUEFALSE之间变换,而ERROR的状态没有TRUESTATUS状态输出字是16#700470057006来回变化,证明通讯成功。

图片17.png

不足的是我们用的系统时钟指令M51.0,定时100mS来触发REQ的,因为这种触发没有在乎主、从通讯是否已经完成,只要100mS时间段一到就会触发下一条指令,这个只适用于单个服务器的使用。

PLC实现多个模块扩展的方法请联系我司15983845957微信同号!!!


德阳旭捷科技有限公司