网络设备连接结构图
一 使用网络调试助手接收PLC A的报文
1 建立网络通道
1.1 设定PLC A的IP地址
打开DCISoft,点击搜索找到PLC模块,如图:
双击PLC图标出现以下对话框,修改IP地址并点击确定。
1.2 设置PC的IP地址
修改电脑本地IP为192.168.1.4,子网掩码为255.255.255.0,如图:
2 编写程序并下载
2.1 程序示例
程序说明:K117、K118为接收方IP地址的控制寄存器,K119为MODbus TCP 指令长度,K120存放的是单元标识符和功能码,K121存放的是读取寄存器起始地址,K122存放的是读取寄存器的个数。
2.2 程序下载
点击图标搜索PLC,搜索完成后会在左侧显示搜索到的PLC,选择PLC点击下载按钮下载程序,如图:
3 接收报文
打开网络调试助手,新建TCP server 端口为502 ,点击启动,16进制显示报文,如图:
二 用网络调试助手读取PLC B 寄存区内容
1 建立网络通道
1.1 设定PLC B的IP地址
打开DCISoft,点击搜索找到PLC模块,如图:
双击PLC图标出现以下对话框,修改IP地址并点击确定。
1.2 设置PC的IP地址
修改电脑本地IP为192.168.1.4,子网掩码为255.255.255.0,如图:
2 编写程序并下载
2.1 程序示例
1 建立网络通道
1.1 设定PLC A的IP地址
打开DCISoft,点击搜索找到PLC模块,如图:
双击PLC图标出现以下对话框,修改IP地址并点击确定。
1.2 设置PC的IP地址
修改电脑本地IP为192.168.1.4,子网掩码为255.255.255.0,如图:
2 编写程序并下载
2.1 程序示例
3 发送并接收响应报文
打开网络调试助手,新建TCP client IP为192.168.1.7(PLC B IP地址),端口为502 ,点击连接。数据发送区16进制发送,点击发送并接收16进制响应报文,如图:
4 报文解析
4.1 读取寄存器报文
00 00 00 00 00 06 00 03 10 00 00 05 | ||||
MAP 报文头 |
00 | 1B | 事务处理标识符Hi | 客户机发起,服务器复制,用于事务处理配对 |
00 | 1B | 事务处理标识符Lo | ||
0000 | 2B | 协议标识符号 | 客户机发起,服务器复制,MODbus协议=0 | |
0006 | 2B | 长度 | 从本字节下一个到最后一个字节个数 | |
00 | 1B | 单元标识符 | 客户机发起服务器复制 | |
功能码 | 03 | 1B | 读寄存器 | 参考标准MODbus协议 |
数据 | 1000 | 2B | 起始地址 | |
0005 | 2B | 读取的寄存器数量 |
4.2 响应报文解析
00 00 00 00 00 0D 00 03 0A 00 01 00 02 00 03 00 04 00 05 | ||||
MAP 报文头 |
00 | 1B | 事务处理标识符Hi | 客户机发起,服务器复制,用于事务处理配对 |
00 | 1B | 事务处理标识符Lo | ||
0000 | 2B | 协议标识符号 | 客户机发起,服务器复制,MODbus协议=0 | |
000D | 2B | 长度 | 从本字节下一个到最后一个字节个数 | |
00 | 1B | 单元标识符 | 客户机发起服务器复制 | |
功能码 | 03 | 1B | 读寄存器 | 参考标准MODbus协议 |
数据 |
0A | 1B | 读取的字节个数 | |
0001
0002 0003 0004 0005 |
nB | 读取的寄存器内容 |
三 用网络调试助手写入PLC A数据
1 基本配置与读取PLC内容设置一致,参考第二部分。
2 程序不需要编程,参考第二部分。
3 发送写多个寄存器报文并接收响应报文
打开网络调试助手。新建TCP client IP为192.168.1.6(PLC A IP地址),端口为502 ,点击连接。数据发送区16进制发送,点击发送并接收16进制响应报文,如图:
4 查看寄存器内容
5 报文解析
5.1 写寄存器报文
00 00 00 00 00 0D 00 10 10 00 00 03 06 00 03 00 07 00 09 | ||||
MAP 报文头 |
00 | 1B | 事务处理标识符Hi | 客户机发起,服务器复制,用于事务处理配对 |
00 | 1B | 事务处理标识符Lo | ||
0000 | 2B | 协议标识符号 | 客户机发起,服务器复制,MODbus协议=0 | |
000D | 2B | 长度 | 从本字节下一个到最后一个字节个数 | |
00 | 1B | 单元标识符 | 客户机发起服务器复制 | |
功能码 | 10 | 1B | 写寄存器 | 参考标准MODbus协议 |
数据 | 1000 | 2B | 起始地址 | |
0003 | 2B | 写入的寄存器数量 | ||
06 | 1B | 写入的字节个数 | ||
0003
0007 0009 |
nB | 写入的数据 |
5.2 写寄存器响应报文
00 00 00 00 00 06 00 10 10 00 00 03 | ||||
MAP 报文头 |
00 | 1B | 事务处理标识符Hi | 客户机发起,服务器复制,用于事务处理配对 |
00 | 1B | 事务处理标识符Lo | ||
0000 | 2B | 协议标识符号 | 客户机发起,服务器复制,MODbus协议=0 | |
0006 | 2B | 长度 | 从本字节下一个到最后一个字节个数 | |
00 | 1B | 单元标识符 | 客户机发起服务器复制 | |
功能码 | 10 | 1B | 写寄存器 | 参考标准MODbus协议 |
数据 | 1000 | 2B | 起始地址 | |
0003 | 2B | 写入的寄存器数量 |
四 使用MODbus TCP指令达到PLC A读取PLC B寄存器内容
PLC A读取PLC B D0~D4的数据并放到D53~D57内,这里PLC B不需要编写关于MODbus TCP的程序,只需要对D0~D4赋值,关于MODbus TCP的程序在主站PLC A编写。
1 PLC A程序编写示例
2 程序说明
MODbus TCP指令是由特殊控制字来设置的,指令需要放入K120~K219内发送出去,接收的响应报文也是放在K120~K219内,具体如下:
读寄存器报文 | |||||||||||
00 | 00 | 00 | 00 | 00 | 06 | 00 | 03 | 10 | 00 | 00 | 05 |
Hi | Lo | 协议
标识符 |
MODbus TCP指令
长度 |
单元标识符 | 功能码 | 起始
地址 |
读寄存器个数 | ||||
程序内不需要设置 | K119 | K120 | K121 | K122 |
读寄存器响应报文 | |||||||||
00 | 00 | 00 | 00 | 00 | 0D | 00 | 03 | 0A | 00 |
Hi | Lo | 协议
标识符 |
MODbus TCP接收数据长度 | 单元标识符 | 功能码 | 读取数据长度 | 数据1 | ||
程序内不需要设置 | K120 | K121 | |||||||
01 | 00 | 02 | 00 | 03 | 00 | 04 | 00 | 05 | |
数据1 | 数据2 | 数据3 | 数据4 | 数据5 | |||||
K122 | K123 | K124 | K125 | K126 |
注意:接收的响应报文数据在存放在特殊控制字内是高低位错位,所有在程序最后把特殊控制字内的值取出来后进行了移位处理。
五 使用MODbus TCP指令达到PLC A往PLC B寄存器写入内容
PLC A把数据“1和3”写入 PLC B D0和D1内,这里PLC B不需要编写关于MODbus TCP的程序,关于MODbus TCP的程序在主站PLC A编写。
1 程序示例
2 程序说明
MODbus TCP指令是由特殊控制字来设置的,指令需要放入K120~K219内发送出去,接收的响应报文也是放在K120~K219内,具体如下:
写寄存器报文 | ||||||||
00 | 00 | 00 | 00 | 00 | 0B | 00 | 10 | 10 |
Hi | Lo | 协议标识符 | MODbus TCP
指令长度 |
单元标识符 | 功能码 | 起始
地址 |
||
程序内不需要设置 | K119 | K120 | K121 | |||||
00 | 00 | 02 | 04 | 00 | 01 | 00 | 03 | |
起始
地址 |
写入的寄存器个数 | 写入的数据字节个数 | 写入的
数据1 |
写入的
数据2 |
此处补0填入 | |||
K121 | K122 | K123 | K124 | K125 |
由于报文格式与特殊控制字对照时出现错位,所以往控制字填入数据的时候需要错位填入,末尾补0.
六 数据交换应用(永远启动)
1 实验目的
设置为永远启动数据交换功能,把PLC B D0~D99的内容传送到PLC A D100~D199,把PLC A D200~D299的内容传送到PLC B D100~D199。
2 设置
PLC B不需要设置,PLC A设置如图:
3 程序编写并下载
3.1 PLC A程序示例
3.2 PLC B程序示例
3.3 监控装置状态表查看数据(PLC执行和永远启动设置一样)。
七 数据交换应用(程序控制)
1 实验目的
设置为程序控制数据交换功能,把PLC B D0~D99的内容传送到PLC A D100~D199,把PLC A D0~D99的内容传送到PLC B D100~D199。
2 设置
PLC B不需要设置,PLC A设置如图:
3 PLC A程序示例
说明:K13是数据交换启动标志,2发送。