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