S7-1200根据CPU的版本不同,使用的MODBUS-TCP通讯指令是不一样的,本节介绍V4.1及以上版本的CPUMODBUS-TCP通讯方法。
1. 建立项目,组态好CPU硬件
注意CPU版本V4.1及以上,打开CPU属性。
2. 打开OB1,调用服务器指令
- DISCONNECT:断开连接,1断开连接,0通讯继续
- MB_HOLD_REG:数据存储区(如:PDB1.DBX0.0 WORD 10,注意DB不能优化)
- CONNECT:这个针脚比较坑爹,下面有具体解释
- NDR:服务器被写入数据指示,1被写入数据,0没有
- DR:服务器被读取数据指示,1被读取数据,0没有,这个参数存储的是网络数据,大家要自己建立一个共享DB,然后建立一个变量,数据类型是:TCON_IP_V4(这个数据类型比较坑爹不能选择,只能人工输入)
- ID:连接ID,你自己输入一个数字就行,不要重叠,记一下,到客户机的时候要填写
- ConnectionType:连接类型,默认160B就是MODBUS-TCP的意思
- ActiveEstablished:是否主动建立连接(服务器0不主动,客户机1主动)
- RemoteAddress:服务器连接的客户机IP地址,要是想这个服务器啥客户机都能连就输入0.0.0.0(注意16格式的)
- RemotePort:远程的端口号,默认0
- LocalPort:本地的端口号,默认502
3. 服务器指令详解
3.1 CONNECT
CONNECT指令是用来建立或断开连接的,参数中需要注意的是:
- ID:连接ID,你自己输入一个数字就行,不要重叠,记一下,到客户机的时候要填写
- ConnectionType:连接类型,默认160B就是MODBUS-TCP的意思
- ActiveEstablished:是否主动建立连接(服务器0不主动,客户机1主动)
- RemoteAddress:服务器连接的客户机IP地址,要是想这个服务器啥客户机都能连就输入0.0.0.0(注意16格式的)
- RemotePort:远程的端口号,默认0
- LocalPort:本地的端口号,默认502
3.2 NDR
NDR指令用来指示服务器端是否被写入数据,参数中需要关注的是:
- NDR:服务器被写入数据指示,1被写入数据,0没有
- MB_HOLD_REG:数据存储区(如:PDB1.DBX0.0 WORD 10,注意DB不能优化)
3.3 DR
DR指令用来指示服务器端是否被读取数据,参数中需要关注的是:
- DR:服务器被读取数据指示,1被读取数据,0没有
- MB_HOLD_REG:数据存储区(如:PDB1.DBX0.0 WORD 10,注意DB不能优化)
4. 实战案例
以下是一个简单的S7-1200的ModbusTCP服务器的例子:
``` // OB1 DISCONNECT 1 CONNECT 1, 160B, 0, 1600000000, 0, 502 // OB100 IF NDR = 1 THEN PDB1.DBX0.0 = MB_HOLD_REG NDR = 0 END_IF IF DR = 1 THEN MB_HOLD_REG = PDB1.DBX0.0 DR = 0 END_IF ``` 在这个例子中,OB1负责建立和断开连接,OB100负责处理数据读写。PDB1.DBX0.0是用于存储数据的变量。5. 注意点
- DB不能优化
- TCON_IP_V4数据类型只能人工输入
- ID不能重叠
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论