400/420/430控制器通信
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
1. ModBus基本规则:
● 所有RS485/232通信回路都应遵照主、从方式。依照这种方式,数据可以在一个主站(如:PC)和32个子站之间传递。
● 主站将初始化的模块在RS485/232通信回路上传递的所有信息。
● 任何一次通信都不能从子站开始。
● 在RS485/232回路上的所有通信都以“信息帧”方式传递。
● 如果主站或子站接收到含有未知命令的信息帧,则不予响应。
2. 数据帧格式:
通信传输为异步方式,并以字节(数据帧)为单位。在主站和子站之间传递的每一个数据帧都是以10/11位的串行数据流。
通信波特率:2400,4800,9600,19200bps
数据帧格式:
起始位
1位
数据位
8位
奇偶校验位
无
停止位
1位/2位
4.通信规约:
当通信命令发送至模块时,符合相应的地址码的模块接收通信命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后的数据以及错误校验码(CRC)。如果出错就不发送任何信息。
●信息帧格式:
初始结构
地址码
功能码
数据区
错误校验
结束结构
延时(相当于4个字节的时间)
1字节
8位
1字节
8位
N字节
N*8位
2字节
16位
延时(相当于4个字节的时间)
●地址码(ADDRESS):
单个模块的地址范围是1-254
●功能码 (FUNCTION CODE)
功能码是每次通信传送的第二个数据。如果子机返回的功能码的最高位是1(功能码>127),则表明子机响应或数据出错。下表列出功能码具体的含义及操作。
功能码
定义
操作
01H
读开关量
读取单个或多个开关量
03H
读寄存器
读取一个或多个寄存器数据
05H
置单个开关量
置单个开关量
1. 01H 读开关量
主机可以利用功能码为01的通信命令,读取模块内的各种开关量。
2. 03H 读寄存器
主机利用功能码为03H的通信命令,读取模块内的数值寄存器。从模块读取的寄存器值都是2字节(16位)。子机响应的命令格式是子机地址、功能码、数据区及CRC码。数据区的数据都是每二个字节为一组的双字节数,且高字节在前。
3. 05H 置单个开关量
主机利用这条命令把单个开关量数据保存到模块内的位存储器。
●数据区(DATA):数据区随功能码不同而不同。
●错误校验码(CRC):
错误校验码采用CRC-16校验方法。错误校验码为2个字节,发送时低字节在前,高字节在后。
CRC-16码的计算步骤为:
1、 置16位CRC寄存器为十六进制FFFF;
2、 把一个8位数据与CRC寄存器的低8位相异或,把结果放于CRC寄存器;
3、 把CRC寄存器的内容右移一位,用0填补最高位,检查移出位。
4、 如果最低位为0:重复第3步(再次移位)。
如果最低位为1:CRC寄存器与十六进制数A001进行异或。
5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。
6、 重复步骤2到5,进行下一个数据处理。
7、 最后得到的CRC寄存器值即为CRC码,传送时将低8位先发送,高8位最后发送。
注:CRC码的计算从<子机地址>开始,除<CRC码>的所有字节。
●信息帧格式举例
◎功能码01H
子机地址为00,读取起始地址为0000H的20H(十进制32)个开关量
主机发送
字节数
举例(十六进制)
子机地址
1
01 送至子机01
功能码
1
01 读取开关量
起始地址
2
00 起始地址为0000
00
读取个数
2
00 读取28个开关量
1C
CRC码
2
3D 由主机计算得到的CRC码
C3
子机响应
字节数
举例(十六进制)
子机地址
1
01 返回子机地址01
功能码
1
01 读取开关量
读取字节数
1
04 返回开关量数量:28个开关量(共4个字节)
数据1
1
30 地址为07-00内的内容
数据2
1
00 地址为0F-08内的内容
数据3
1
93 地址为17-10内的内容
数据4
1
0A 地址为1C-18内的内容
CRC码
2
18 由子机计算得到的CRC码
26
开关量07–00的值用十六进制表示为30H,用二进制表示为00110000,开关量07是字节的高位,00 是低位,开关量07-00的状态是:OFF-OFF-ON-ON-OFF-OFF-OFF-OFF。
◎功能码03H
子机地址为01,起始地址为0026H的3个点
此例中点数据地址为:
地址
数据(十六进制)
0026
0014
0028
0014
002A
0005
主机发送
字节数
举例(十六进制)
子机地址
1
01 送至子机01
功能码
1
03 读取点寄存器
起始地址
2
00 起始地址为0026
26
读取个数
2
00 读取3个点(共6个字节)
03
CRC码
2
E4 由主机计算得到的CRC码
00
子机响应
字节数
举例(十六进制)
子机地址
1
01 返回子机地址01
功能码
1
03 读取点寄存器
读取字节数
1
06 3个点(共6个字节)
点1数据
2
00 地址为0026内的内容
14
点2数据
2
00 地址为0028内的内容
14
点3数据
2
00 地址为002A内的内容
05
CRC码
2
91 由子机计算得到的CRC码
71
◎功能码05H
子机地址为01,起始地址为0002H的1个开关量,置0002单元为1
此例中开关量数据地址为:
地址
数据(十六进制)
0000
0
0001
1
0002
0
说明:十六进制值FF00强制开关量为1,0000H强制为0,其它值则为非法且不影响开关量的状态
主机发送
字节数
举例(十六进制)
子机地址
1
01 送子机地址01
功能码
1
05 强制开关量
起始地址
2
00 起始地址为0000
00
数据
2
FF 开关量置1
00
CRC码
2
CD 由主机计算得到的CRC码
FB
子机响应
字节数
举例(十六进制)
子机地址
1
01 返回子机地址01
功能码
1
05 强制开关量
起始地址
2
00 起始地址为0000
00
数据
2
FF 开关量置1
00
CRC码
2
CD 由主机计算得到的CRC码
FB
●出错处理
当模块检测到了除CRC码出错以外的错误时,必须向主机返送信息,功能码的最高位置1,即子机返送的功能码是在主机发送的功能码的基础上加128。从主机接收到的信息如有CRC错误,则被模块忽略。子机返送的错误码的格式如下(CRC错误除外):
地址码
功能码
1字节(最高位是1)
错误码
1字节
CRC码
2字节
错误码定义为:
错误码
说明
描述
01
非法的功能码
接收到的功能码不支持
02
非法的数据地址
指定的地址超出子机的范围
03
非法的数据值
接收到主机发送的数据值超出相应地址的数据范围。
附录:地址和数据
表1:功能码01H所映射的开关量区
开关量
地址(Address)
项目(Item)
说明
0000H
1#开关合闸/分闸
为1合闸,为0分闸
0001H
1#电压正常
为1正常,为0异常
0002H
2#开关合闸/分闸
为1合闸,为0分闸
0003H
2#电压正常
为1正常,为0异常
0004H
自动/手动
为1自动,为0手动
0005H
1#主用/备用
为1主用,为0备用
0006H
2#主用/备用
为1主用,为0备用
0007H
油机起动输出
1:开机输出 0:停机输出
0008H
严重故障*1
为1故障,为0无故障
0009H
1#开关故障(过流或短路)
为1故障,为0无故障分闸
000AH
2#开关故障(过流或短路)
为1故障,为0无故障分闸
000BH
1#合闸失败
为1有效
000CH
2#合闸失败
为1有效
000DH
1#分闸失败
为1有效
000EH
2#分闸失败
为1有效
000FH
保留
未定义
0010H
一般告警 *3
为1告警,为0无告警
0011H
1#电压过高
为1过高,为0正常
0012H
1#电压过低
为1过低,为0正常
0013H
1#缺相
为1缺相,为0不缺相
0014H
2#电压过高
为1过高,为0正常
0015H
2#电压过低
为1过低,为0正常
0016H
2#缺相
为1缺相,为0不缺相
0017H
负载过流
为1过流,为0正常
0018H
1#过频
为1过频,为0正常
0019H
1#欠频
为1欠频,为0正常
001AH
2#过频
为1过频,为0正常
001BH
2#欠频
为1欠频,为0正常
*1:严重故障包括1#,2#开关合闸失败,开关分闸失败,开关故障。
*2:当严重故障为1时,报警输出有效,输出延时可通过编程实现。
*3:一般告警包括1#,2#电压过高,电压过低,缺相,过频,欠频和负载过流。
表2:功能码03H所映射的数据区
数据区(DATA)
地址(Address)
项目(Item)
说明
0000H
Uab1
1# AB相电压
0002H
Ubc1
1# BC相电压
0004H
Uca1
1# CA相电压
0006H
Uab2
2# AB相电压
0008H
Ubc2
2# BC相电压
000AH
Uca2
2# CA相电压
000CH
Ua1
1# A相电压
000EH
Ub1
1# B相电压
0010H
UcI
1# C相电压
0012H
Ua2
2# A相电压
0014H
Ub2
2# B相电压
0016H
Uc2
2# C相电压
0018H
Ia
A相负载电流
001AH
Ib
B相负载电流
001CH
Ic
C相负载电流
001EH
F1
1#频率
0020H
F2
2#频率
0022H
保留
保留
0024H
P
视在功率(Kva)
表2:功能码05H所映射的开关量区
地址(Address)
项目(Item)
说明
0000H
遥控1#开关合闸
置1合闸,置0无效
0001H
遥控1#开关分闸
置1合闸,置0无效
0002H
遥控2#开关合闸
置1合闸,置0无效
0003H
遥控2#开关分闸
置1合闸,置0无效
0004H
自动/手动设置
1:自动 0:手动
0005H
1#主用状态设置
0:备用1:主用 *
0006H
2#主用状态设置
0:备用1:主用 *
*:如果1#已设为主用状态,当2#设为主用状态时,自动将1#设为备用状态。如果2#已设为主用状态,当1#设为主用状态时,自动将2#设为备用状态。
注:
用功能码1和3读值时,中间间隔应大于200ms。即接收到功能码1的返回值以后,延时大于200ms后,再用功能码3读值。
ZZ20041202