RS485调压器程控源通讯协议
2023-04-21 14:53:55 来源:技术部通讯解决
三相程控源通讯协议
本Modbus通信协议定义数据以ASCII码格式进行传输,即所有一字节的十六进制数据都转化成两字节的ASCII码在串口总线内传输。通信设置:19200,8,n,1
每一帧通信报文数据的格式如下:
序号 |
功能 |
内容 |
备注 |
HEX |
ASCII |
值范围 |
字节数 |
1 |
帧头 |
0x3A |
‘:’ |
固定 |
1 |
|
2 |
单元内地址 |
0-0xFF |
H:‘0’-‘F’
L:‘0’-‘F’ |
0-255 |
1*2=2 |
|
3 |
单元内编号 |
0-0xFF |
H:‘0’-‘F’
L:‘0’-‘F’ |
0-255 |
1*2=2 |
|
4 |
命令字 |
1-0xFF |
H:‘0’-‘F’
L:‘0’-‘F’ |
0-255 |
1*2=2 |
|
5 |
数据区长度 |
0-0xFF |
H:‘0’-‘F’
L:‘0’-‘F’ |
0-255 |
1*2=2 |
|
6 |
数据区 |
|
|
|
|
|
7 |
帧尾 |
0x0D |
回车 |
固定 |
2 |
|
0x0A |
换行 |
每一帧通信报文数据都以冒号(:)开始,以回车换行符号(0x0D0A)结束。跟着帧头之后依次发送485网络单元地址、单元内地址编号、命令字、数据区长度,在数据区所有数据发送完后,发送帧尾(回车换行)。
命令说明(假设程控电源的地址为0x0101):
- 升压命令(0x90)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3031 |
0x3031 |
0x3930 |
0x3030 |
- |
0x0D0A |
ASCII |
‘:’ |
“01” |
“01” |
“90” |
“00” |
- |
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
- |
2字节 |
程控源回应“:0101980100”+回车换行(命令未执行),或者“:0101980101” +回车换行(命令接受执行),0x98为回应命令,后面的0x01为数据长度。升压命令接受后调压器在作升压动作。
- 降压命令(0x91)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3031 |
0x3031 |
0x3931 |
0x3030 |
- |
0x0D0A |
ASCII |
‘:’ |
“01” |
“01” |
“91” |
“00” |
- |
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
- |
2字节 |
程控源回应“:0101990100”+回车换行(命令未执行),或者“:0101990101” +回车换行(命令接受执行),0x99为回应命令,后面的0x01为数据长度。降压命令接受后调压器在作降压动作。
- 停止调节命令(0x92)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3031 |
0x3031 |
0x3932 |
0x3030 |
- |
0x0D0A |
ASCII |
‘:’ |
“01” |
“01” |
“92” |
“00” |
- |
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
- |
2字节 |
程控源回应“:01019A0100”+回车换行(命令未执行),或者“:01019A0101” +回车换行(命令接受执行),0x9A为回应命令,后面的0x01为数据长度。停止调节命令接受后调压器停止升压或降压动作。
- 修改地址命令(0x93)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3030 |
0x3030 |
0x3933 |
0x3032 |
|
0x0D0A |
ASCII |
‘:’ |
“00” |
“00” |
“93” |
“02” |
|
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
2*2字节 |
2字节 |
例地址修改成0x3456则发送命令:
“:000093023456”+回车换行
程控源回应“:01019B0100”+回车换行(命令未执行,地址未修改成功),或者“:01019B0101” +回车换行(命令接受执行,地址修改成功),0x9B为回应命令,后面的0x01为数据长度。停止调节命令接受后调压器停止升压或降压动作。
注:修改地址时,发送命令中的地址需为“00”,不是程控电源的实际地址。
- 电压输出值设置命令(0x94)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3031 |
0x3031 |
0x3934 |
0x3032 |
|
0x0D0A |
ASCII |
‘:’ |
“01” |
“01” |
“94” |
“02” |
|
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
2*2字节 |
2字节 |
数据区长度2,设置值实际方法10倍,比如250.0V,发送的数据就是0x9c4即2500。
例设定输出电压为250V则发送命令为:
“:0101940209C4”+回车换行
程控源回应“:01019C0100”+回车换行(命令未执行),或者“:01019C0101” +回车换行(命令接受执行),0x,9C为回应命令,后面的0x01为数据长度。停止调节命令接受后调压器停止升压或降压动作。
- 获取设置值命令(0x95)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3031 |
0x3031 |
0x3935 |
0x3030 |
- |
0x0D0A |
ASCII |
‘:’ |
“01” |
“02” |
“95” |
“00” |
- |
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
- |
2字节 |
程控源回应“:01019D0100”+回车换行(命令未执行),或者“:01019D02xxxx” +回车换行(命令接受执行),0x9D为回应命令,后面的0x02为数据长度。值是由“xxxx”组成,如果“xxxx”的值“09C4” 即2500,设置值为实际的10倍,实际设置值为250.0V。
- 获取当前输出值命令(0x96)
内容 |
帧头 |
单元地址 |
单元内编号 |
命令字 |
数据区长度 |
数据区 |
帧尾 |
HEX |
0x3A |
0x3031 |
0x3031 |
0x3936 |
0x3030 |
- |
0x0D0A |
ASCII |
‘:’ |
“01” |
“02” |
“96” |
“00” |
- |
回车换行 |
长度 |
1字节 |
1*2字节 |
1*2字节 |
1*2字节 |
1*2字节 |
- |
2字节 |
程控源回应“:01019E0100”+回车换行(命令未执行),或者“:01019E02xxxx” +回车换行(命令接受执行),0x9D为回应命令,后面的0x02为数据长度。值是由“xxxx”组成,如果“xxxx”的值“09C4” 即2500,输出值为实际的10倍,实际输出值为250.0V。
例:假设机器的单元地址与单元内编号为“0101”
- 升压命令
PC机发送::01019000 + <回车换行>
设备返回::0101980101+ <回车换行>
- 降压命令
PC机发送::01019100 + <回车换行>
设备返回::0101990101+ <回车换行>
- 停止命令
PC机发送::01019200 + <回车换行>
设备返回::01019A0101+ <回车换行>
- 修改地址
(1)、正确修改,原地址修改成“3456”
PC机发送::000093023456 + <回车换行>
设备返回::34569B0101+ <回车换行>
(1)、不正确修改,原地址修改成“GGGG”
PC机发送::00009302GGGG + <回车换行>
设备返回::01019B0100+ <回车换行>
- 电压输出值设置,输出电压设置成250V,250*10=2500,2500转成十六进制为“09C4”
PC机发送::0101940209C4