机器视觉与西门子1200通讯解码
1. 建立通讯
与PLC通讯的建立需要计算机发送两次命令报文,通讯建立后即可发送读写报文来读写PLC数据,西门子的端口号固定为102
与西门子1200系列PLC建立通讯的报文为
第一次 发送 03 00 00 16 11 E0 00 00 00 01 00 C1 02 01 00 C2 02 01 01 C0 01 09
第一次 响应 03 00 00 16 11 D0 00 01 00 06 00 C0 01 09 C1 02 01 00 C2 02 01 01
第二次 发送 03 00 00 19 02 F0 80 32 01 00 00 FF FF 00 08 00 00 F0 00 00 01 00 01 07 80
第二次 响应 03 00 00 1B 02 F0 80 32 03 00 00 FF FF 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0
可以通过响应报文来判断计算机是否与PLC成功连接
(通过判断响应的总字节数或某个字节实现)
如果读写过程发送通讯错误,需要重新发送两次命令,再次建立通讯
2. 读取通讯报文分析
1)读取DB存储器
如果要读取4个存储器的值 DB10.DB0---DB10.DB3 分别为11 12 13 14
发送报文 03 00 00 1F 02 F0 80 32 01 00 00 00 1C 00 0E 00 00 04 01 12 0A 10 02 00 04 00 0A 84 00 00 00
响应信息:03 00 00 1D 02 F0 80 32 03 00 00 00 1C 00 02 00 08 00 00 04 01 FF 04 00 20 0C 0D 0E 0F
下面分析报文规则
03 00 : 固定报文开头
00 1F : 报文长度
02 F0 80 32 01 00 00:固定7个字节
00 1C: 标志序列号
00 0E 00 00 04 01 12 0A 10 02:固定10个字节
00 04:读取的字节数量
00 0A :表示DB编号
84:表示存储器类型,81:输入 82:输出 83:继电器M 84:数据区
00 00 00:偏移量,以位为单位 从V0.0算起
2)读取输入I 数据
读取I0.0--I1.7 2个字节 这里I0.3为ON
发送报文:03 00 00 1F 02 F0 80 32 01 00 00 00 02 00 0E 00 00 04 01 12 0A 10 02 00 02 00 00 81 00 00 00
回复:03 00 00 1B 02 F0 80 32 03 00 00 00 02 00 02 00 06 00 00 04 01 FF 04 00 10 04 00
报文解析:
03 00 :固定开头
00 1F:报文长度
02 F0 80 32 01 00 00 :固定7个字节
00 02:标志序列号
00 0E 00 00 04 01 12 0A 10 02:固定10个字节
00 02:读取的字节个数
00 00: 如果是DB块,这里是DB号,目前这里为00 00
81:表示存储器类型,81:输入 82:输出 83:继电器M 84:数据区
00 00 00:偏移量,以位为单位 从I0.0算起
回复报文解析:
04 00:转成二进制就是 0000 0100 0000 0000 即I0.2为ON
3)读取输出Q
读取
发送报文:03 00 00 1F 02 F0 80 32 01 00 00 00 02 00 0E 00 00 04 01 12 0A 10 02 00 01 00 00 82 00 00 00
响应报文:03 00 00 1A 02 F0 80 32 03 00 00 00 02 00 02 00 05 00 00 04 01 FF 04 00 08 03
报文解析:
03 00 :固定开头
00 1F:报文长度
02 F0 80 32 01 00 00 :固定7个字节
00 02:标志序列号
00 0E 00 00 04 01 12 0A 10 02:固定10个字节
00 01:读取的字节个数
00 00: 如果是DB块,这里是DB号,目前这里为00 00
82:表示存储器类型,81:输入 82:输出 83:继电器M 84:数据区
00 00 00:偏移量,以位为单位 从Q0.0算起
回复报文解析:
03:转成二进制就是 0000 0011 即Q0.0,Q0.1为ON
4)读取MD0
读取
发送报文:03 00 00 1F 02 F0 80 32 01 00 00 00 02 00 0E 00 00 04 01 12 0A 10 02 00 04 00 00 83 00 00 00
响应报文:03 00 00 1A 02 F0 80 32 03 00 00 00 02 00 02 00 05 00 00 04 01 FF 04 00 20 00 00 00 03
报文解析:
03 00 :固定开头
00 1F:报文长度
02 F0 80 32 01 00 00 :固定7个字节
00 02:标志序列号
00 0E 00 00 04 01 12 0A 10 02:固定10个字节
00 04:读取的字节个数
00 00: 如果是DB块,这里是DB号,目前这里为00 00
83:表示存储器类型,81:输入 82:输出 83:继电器M 84:数据区
00 00 00:偏移量,以位为单位 从Q0.0算起
回复报文解析:
00 00 00 03:读取到值
3. 写报文分析
1) 写入Q的值 ,将Q0.3置为ON
发送报文:03 00 00 24 02 F0 80 32 01 00 00 00 03 00 0E 00 05 05 01 12 0A 10 01 00 01 00 01 82 00 00 03 00 03 00 01 01
报文分析:
03 00:固定开头
00 24:报文长度 35+写入长度
02 F0 80 32 01 00 00:固定7个字节
00 03: 标志序列号 按位写 Q M一样
00 0E:固定2个字节
00 05:写入长度+4
05 01 12 0A 10:固定5个字节
01 : 01 按位写入 02 按字节写入
00 01:写入数据个数
00 01:如果是DB块,这里是DB号,其他时候可以是任意值目前这里为00 01
82:表示存储器类型,81:输入 82:输出 83:继电器M 84:V
00 00 03:偏移量,以位为单位 从Q0.0算起
00 03: 写入方式,03 表示按位写入,04 表示按字节写入
00 01: 写入位个数
01:写入值
2) 写入QB0的值 ,为3
发送报文:03 00 00 24 02 F0 80 32 01 00 00 00 08 00 0E 00 05 05 01 12 0A 10 02 00 01 00 01 82 00 00 00 00 04 00 08 03
报文分析:
03 00:固定开头
00 24:报文长度 35+写入长度
02 F0 80 32 01 00 00:固定7个字节
00 08: 标志序列号 按字节,字或双字写 Q M一样
00 0E:固定2个字节
00 05:写入长度+4
05 01 12 0A 10:固定5个字节
02 : 01 按位写入 02 按字节写入
00 01:写入数据个数
00 01:如果是DB块,这里是DB号,其他时候可以是任意值目前这里为00 01
82:表示存储器类型,81:输入 82:输出 83:继电器M 84:V
00 00 00:偏移量,以位为单位 从Q0.0算起
00 04: 写入方式,03 表示按位写入,04 表示按字节写入
00 08: 写入位个数
03:写入值
发送报文:03 00 00 24 02 F0 80 32 01 00 00 00 03 00 0E 00 05 05 01 12 0A 10 01 00 01 00 01 82 00 00 03 00 03 00 01 00 表示Q0.3置为0
3) 写入 M的值 M2.0为1
发送报文:03 00 00 27 02 F0 80 32 01 00 00 00 08 00 0E 00 05 05 01 12 0A 10 01 00 01 00 01 83 00 00 10 00 03 00 01 01
报文分析:
03 00:固定开头
00 27:报文长度 35+写入长度
02 F0 80 32 01 00 00:固定7个字节
00 08: 标志序列号 按位写 Q M一样
00 0E:固定2个字节
00 05:写入长度+4
05 01 12 0A 10:固定5个字节
01 : 01 按位写入 02 按字节写入
00 01:写入数据个数
00 01:如果是DB块,这里是DB号,目前这里为00 00
83:表示存储器类型,81:输入 82:输出 83:继电器M 84:V
00 00 10:偏移量,以位为单位 从m0.0算起,这里偏移16个位
00 03: 写入方式,03 表示按位写入,04 表示按字节写入
00 01: 写入位个数
01:写入值
发送报文:03 00 00 24 02 F0 80 32 01 00 00 00 03 00 0E 00 05 05 01 12 0A 10 01 00 01 00 01 83 00 00 11 00 03 00 01 01 表示M2.1 为1
4) 写入 MD的值 MD0为9
发送报文:03 00 00 27 02 F0 80 32 01 00 00 00 08 00 0E 00 08 05 01 12 0A 10 02 00 04 00 01 83 00 00 00 00 04 00 20 00 00 00 09
报文分析:
03 00:固定开头
00 27:报文长度
02 F0 80 32 01 00 00:固定7个字节
00 08: 标志序列号 按字节,字或双字写 Q M一样
00 0E:固定2个字节
00 08:写入长度+4
05 01 12 0A 10:固定5个字节
02 : 01 按位写入 02 按字节写入
00 04:写入数据个数
00 01:如果是DB块,这里是DB号,目前这里为00 00
83:表示存储器类型,81:输入 82:输出 83:继电器M 84:V
00 00 00:偏移量,以位为单位 从m0.0算起,这里偏移16个位
00 04: 写入方式,03 表示按位写入,04 表示按字节写入
00 20: 写入位个数
00 00 00 09:写入值
发送报文:03 00 00 27 02 F0 80 32 01 00 00 00 08 00 0E 00 08 05 01 12 0A 10 02 00 04 00 01 83 00 12 C0 00 04 00 20 00 00 00 09 表示MD600 为9
3) 写数据区DB10.DW2=0x1F2F
发送报文:03 00 00 25 02 F0 80 32 01 00 00 00 05 00 0E 00 06 05 01 12 0A 10 02 00 02 00 0A 84 00 00 10 00 04 00 10 1F 2F
报文分析:
03 00:固定开头
00 25:报文长度 (35个字节加写入数据长度)
02 F0 80 32 01 00 00:固定7个字节
00 05: 标志序列号
00 0E:固定2个字节
00 06:写入长度+4
05 01 12 0A 10:固定5个字节
02 : 01 按位写入 02 按字节写入
00 02:写入数据个数 字节
00 0A:表示DB块编号
84:表示存储器类型,81:输入 82:输出 83:继电器M 84:DB
00 00 10:偏移量,以位为单位
00 04: 写入方式,03 表示按位写入,04 表示按字节写入
00 10: 写入位个数
1F 2F:写入值
写数据区DB10.DX4.0=1
发送报文:03 00 00 24 02 F0 80 32 01 00 00 00 08 00 0E 00 05 05 01 12 0A 10 01 00 01 00 0A 84 00 00 20 00 03 00 01 01
报文分析:
03 00:固定开头
00 24:报文长度 35+写入长度
02 F0 80 32 01 00 00:固定7个字节
00 08: 标志序列号
00 0E:固定2个字节
00 05:写入长度+4
05 01 12 0A 10:固定5个字节
01 : 01 按位写入 02 按字节写入
00 01:写入数据个数
00 0A:表示DB编号
84:表示存储器类型,81:输入 82:输出 83:继电器M 84:DB
00 00 20:偏移量,以位为单位
00 03: 写入方式,03 表示按位写入,04 表示按字节写入
00 01: 写入位个数
01:写入值
版权所有:大林机器视觉培训苏州办事处所有 备案号:苏ICP备14016686号-6
技术支持: 新易维软件