2024年4月11日发(作者:缪星瑶)
PLC通讯报文解释
一、规则
(1)下行和上行报文分别用“发:”和“收:”区别开来。在颜色上也不同,发为绿色,收
为蓝色。报文不论对错,只要是从串口和得到的数据都会显示出来。所以有时可以直接根据
报文显示的情况发现一些问题。具体见第二大条。
(2)报头和报尾:所有完整报文帧的报头一定以字符“@”开始,最后以“*”和一个回车
符(界面上是不可见的,但如果用鼠标左键选中报文尾部,是可以看到此字符确实存在且能
够被选择,只是无法显示出来)结束。如果没有这两个明显的字符,此帧是无效帧,不会参
与处理。
(3)PLC回应信息符(也就是指编程手册中的结束码):一共用两个字符来表示,这是对
当前通讯状态的一个比较重要的指示,表示了本次问答的PLC与后台间数据的交换是否正
常。具体各数值的意义见第二大条。本PLC回应信息符位于回答帧的第六和第七两个字符。
如正常回答时,前面一部分报文会是:@01RD00 0000……。PLC回复的回应信息符就是这
里的字符D后面紧跟的那两个字符。这里00是表示正常回应,如果FCS校验也正确的话,
那么一切都OK,可以对本帧数据进行处理了。注意,如果是某些遥控或者强制等WR命令
时,PLC回复的回应信息符就是字符R后面紧跟的那两个字符了。非00表示出错了。
(4)协议是遵守MODBUS协议的。所以如果对MODBUS协议有一定了解的话,本报文
是很容易看懂的。无论上行还是下行报文,帧格式都为:
报头(即@)+ 机号 + 命令 + 起始地址 + 长度 + FCS校验 + 报尾(即 *+回车符 )
参考报文:
发:@01RD*
收:@01RD00 0001 300E 0000 0000 0000 0000 0000 0000 0000 0000 0000 55*
报头和报尾不再赘述。
机号:一号机为01,二号机为02,为PLC设置里面下传时设定,需对应起来。
命令:常用到的是读命令RD和写命令WR、WD。以前的另一种PLC型号出现过扩展区E
区,所以对应还有RE,WE等命令。
起始地址:表示本帧的读或者写操作的对象区域开始处。与PLC程序里面的内存区完全对
应。如协议中规定在PLC里面放置当前水机事故个数到D0020里面。那么上面例子中的
RD0020….就会对从D0020这个寄存器开始读起。返回报文的第一个字就是D0020,也就是
当前的事故条数了。
长度:要进行读或者写操作区域的长度。
FCS校验:PLC硬件自动响应上传报文及自动计算和校验FCS校验码,不用PLC程序进行
额外的编写。
报文中各字符在程序中体现的数据含义的在参考说明书中的设置后,再结合看第三条的详细
解释。
二、出错提示
(1)报文是乱码,可能原因是RS422的接线出错,请仔细检查。也可能是PLC的第四个
通讯拨码没有拨(一般发货前会在一楼联调时拨好)。
(2)运行过程中,数据不来,或者事故不上传,遥测遥信数据不对等其它不正常情况。首
先是要根据回应信息符来判断,如果回应信息帧正确(为00),那么就要查是不是PLC程
序中出了问题了。不为00时,要根据下面的列表来解决问题了。
字符 内容
00
01
02
03
04
13
14
15
16
18
正常完成
运行方式下不执行
监控方式下不执行
UM写保护
地址超出区域
FCS错误
格式错误
入口码数据错误
命令不不支持
帧长度错误
可能原因
PLC在运行方式下,不能执行发
送的命令
PLC在监控方式下,不能执行发
送的命令
PLC的UM处于写保护
设置在SV读命令或SV修改命
令中地址超出65,535最大值
FCS计算错误或者噪声干扰
命令格式错误或者不可分割的
命令被分割
数据超出规定范围或太长
程序中不存在SV读命令或SV
修改命令中指定操作数
改正措施
检查命令和PLC模式之间的
关系
PLC上DIP开关的脚1置
OFF
改正程序的地址设置,再传
送命令
检查FCS、确定是否是噪声
干扰
检查格式,再送命令
修改数据再传送传送命令
改正命令和程序
超过最大的帧长度132个字节检查命令,必要是分成若干
(如帧超过280个字节,接收溢帧
出标志变ON,不再返回应答)
读的项没有用组合命令(QQ)
登记过
C200HX/HG/HG上DIP开关脚
1为ON
在第二帧或后面的帧中出现
FCS错误
命令格式与第二或后面的帧中
字节数不匹配
在第二或后面的帧中有入口码
数据错误
第二或后面帧的长度超过最大
值132个字节
在批形式读之前,执行QQ
命令登记读的项
置为OFF
检查FCS计算方法、噪声干
扰,再送
检查格式再传
修改数据再传送命令
19
23
A3
A4
A5
不执行
用户存储器写保护
传送数据时因FCS
错误引起中止
传送数据时因格式
错误引起中止
传送数据时因入口
码数据错误引起中
止
传送数据时因帧长
度错误引起中止
A8 保持帧不超过132字节
三、具体举例说
选择的是黄洋口的报文,是一台PLC带两台机组,数据量比较密集点,所以回复报文的数
据位置和常规使用的PLC中数据的摆放位置是略有提前了,但不影响此处对报文进行解释。
发:@01RD*
收:@01RD00 0000 300E 0410 A040 2508 1800 0200 0000 0000 0000 0000 55*
发:@01RD*
收:@01RD00 6101 5C01 6401 0100 3A01 3F01 3501 8A13 2439 9D0C D003 CE00 C900
CA00 F300 0F01 02F0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 22*
显然PLC的应答报文中的结束字符,也就是回应信息帧是正常的“00”,所以是正常报文。
报文按00200011,00310030,00610030,0091030的规则发下去,遥信和事故个数帧是十一
个字一查询(根据协议第一个字是事故个数,后面十个连续字为遥信状态开关量),而每条遥测
下发报文的“长度”字符是三十个字一加。
就上面的报文内容来讲:
遥信和事故个数帧内容包括:(1)无事故产生。(2)开关量有产生的,具体内容从0021~0030
这十个字的二进制码来进行对位。分别对应第一个遥信到第一在六十个遥信量。
遥测帧说明了数据上正常上传,显示的是十六进制码。程序进行计算后转送到
RDCSERVER中去让别的程序调用。
注意本处是特殊的协议所以没有讲电压、电流、功率等具体数据的位置,一般也用不到
的。得到报文,再根据文件中的正确设置,程序会将各数据对应放好。
2024年4月11日发(作者:缪星瑶)
PLC通讯报文解释
一、规则
(1)下行和上行报文分别用“发:”和“收:”区别开来。在颜色上也不同,发为绿色,收
为蓝色。报文不论对错,只要是从串口和得到的数据都会显示出来。所以有时可以直接根据
报文显示的情况发现一些问题。具体见第二大条。
(2)报头和报尾:所有完整报文帧的报头一定以字符“@”开始,最后以“*”和一个回车
符(界面上是不可见的,但如果用鼠标左键选中报文尾部,是可以看到此字符确实存在且能
够被选择,只是无法显示出来)结束。如果没有这两个明显的字符,此帧是无效帧,不会参
与处理。
(3)PLC回应信息符(也就是指编程手册中的结束码):一共用两个字符来表示,这是对
当前通讯状态的一个比较重要的指示,表示了本次问答的PLC与后台间数据的交换是否正
常。具体各数值的意义见第二大条。本PLC回应信息符位于回答帧的第六和第七两个字符。
如正常回答时,前面一部分报文会是:@01RD00 0000……。PLC回复的回应信息符就是这
里的字符D后面紧跟的那两个字符。这里00是表示正常回应,如果FCS校验也正确的话,
那么一切都OK,可以对本帧数据进行处理了。注意,如果是某些遥控或者强制等WR命令
时,PLC回复的回应信息符就是字符R后面紧跟的那两个字符了。非00表示出错了。
(4)协议是遵守MODBUS协议的。所以如果对MODBUS协议有一定了解的话,本报文
是很容易看懂的。无论上行还是下行报文,帧格式都为:
报头(即@)+ 机号 + 命令 + 起始地址 + 长度 + FCS校验 + 报尾(即 *+回车符 )
参考报文:
发:@01RD*
收:@01RD00 0001 300E 0000 0000 0000 0000 0000 0000 0000 0000 0000 55*
报头和报尾不再赘述。
机号:一号机为01,二号机为02,为PLC设置里面下传时设定,需对应起来。
命令:常用到的是读命令RD和写命令WR、WD。以前的另一种PLC型号出现过扩展区E
区,所以对应还有RE,WE等命令。
起始地址:表示本帧的读或者写操作的对象区域开始处。与PLC程序里面的内存区完全对
应。如协议中规定在PLC里面放置当前水机事故个数到D0020里面。那么上面例子中的
RD0020….就会对从D0020这个寄存器开始读起。返回报文的第一个字就是D0020,也就是
当前的事故条数了。
长度:要进行读或者写操作区域的长度。
FCS校验:PLC硬件自动响应上传报文及自动计算和校验FCS校验码,不用PLC程序进行
额外的编写。
报文中各字符在程序中体现的数据含义的在参考说明书中的设置后,再结合看第三条的详细
解释。
二、出错提示
(1)报文是乱码,可能原因是RS422的接线出错,请仔细检查。也可能是PLC的第四个
通讯拨码没有拨(一般发货前会在一楼联调时拨好)。
(2)运行过程中,数据不来,或者事故不上传,遥测遥信数据不对等其它不正常情况。首
先是要根据回应信息符来判断,如果回应信息帧正确(为00),那么就要查是不是PLC程
序中出了问题了。不为00时,要根据下面的列表来解决问题了。
字符 内容
00
01
02
03
04
13
14
15
16
18
正常完成
运行方式下不执行
监控方式下不执行
UM写保护
地址超出区域
FCS错误
格式错误
入口码数据错误
命令不不支持
帧长度错误
可能原因
PLC在运行方式下,不能执行发
送的命令
PLC在监控方式下,不能执行发
送的命令
PLC的UM处于写保护
设置在SV读命令或SV修改命
令中地址超出65,535最大值
FCS计算错误或者噪声干扰
命令格式错误或者不可分割的
命令被分割
数据超出规定范围或太长
程序中不存在SV读命令或SV
修改命令中指定操作数
改正措施
检查命令和PLC模式之间的
关系
PLC上DIP开关的脚1置
OFF
改正程序的地址设置,再传
送命令
检查FCS、确定是否是噪声
干扰
检查格式,再送命令
修改数据再传送传送命令
改正命令和程序
超过最大的帧长度132个字节检查命令,必要是分成若干
(如帧超过280个字节,接收溢帧
出标志变ON,不再返回应答)
读的项没有用组合命令(QQ)
登记过
C200HX/HG/HG上DIP开关脚
1为ON
在第二帧或后面的帧中出现
FCS错误
命令格式与第二或后面的帧中
字节数不匹配
在第二或后面的帧中有入口码
数据错误
第二或后面帧的长度超过最大
值132个字节
在批形式读之前,执行QQ
命令登记读的项
置为OFF
检查FCS计算方法、噪声干
扰,再送
检查格式再传
修改数据再传送命令
19
23
A3
A4
A5
不执行
用户存储器写保护
传送数据时因FCS
错误引起中止
传送数据时因格式
错误引起中止
传送数据时因入口
码数据错误引起中
止
传送数据时因帧长
度错误引起中止
A8 保持帧不超过132字节
三、具体举例说
选择的是黄洋口的报文,是一台PLC带两台机组,数据量比较密集点,所以回复报文的数
据位置和常规使用的PLC中数据的摆放位置是略有提前了,但不影响此处对报文进行解释。
发:@01RD*
收:@01RD00 0000 300E 0410 A040 2508 1800 0200 0000 0000 0000 0000 55*
发:@01RD*
收:@01RD00 6101 5C01 6401 0100 3A01 3F01 3501 8A13 2439 9D0C D003 CE00 C900
CA00 F300 0F01 02F0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 22*
显然PLC的应答报文中的结束字符,也就是回应信息帧是正常的“00”,所以是正常报文。
报文按00200011,00310030,00610030,0091030的规则发下去,遥信和事故个数帧是十一
个字一查询(根据协议第一个字是事故个数,后面十个连续字为遥信状态开关量),而每条遥测
下发报文的“长度”字符是三十个字一加。
就上面的报文内容来讲:
遥信和事故个数帧内容包括:(1)无事故产生。(2)开关量有产生的,具体内容从0021~0030
这十个字的二进制码来进行对位。分别对应第一个遥信到第一在六十个遥信量。
遥测帧说明了数据上正常上传,显示的是十六进制码。程序进行计算后转送到
RDCSERVER中去让别的程序调用。
注意本处是特殊的协议所以没有讲电压、电流、功率等具体数据的位置,一般也用不到
的。得到报文,再根据文件中的正确设置,程序会将各数据对应放好。