2023年12月13日发(作者:)
HLP_SV Modbus RTU 标准通讯协议格式
通信资料格式
Address
8 bits
Function
8 bits
Data
N×8bits
CRC check
16bits
1)Address通讯地址:1-247
2)Function:命令码 8-bit命令
01 读线圈状态
上位机发送数据格式:
ADDRESS 01 ADDRH ADDRL NUMH NUML CRC
注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1); NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数)
正确时变频器返回数据格式:
ADDRESS 01 BYTECOUNT DATA1 DATA2 DATA3 DATAN CRC
注: BYTECOUNT:读取的字数
错误时变频器返回数据格式:
ADDRESS 0X81 Errornum CRC
注: Errornum为错误类型代码
如:要检测变频器的输出频率
应发送数据: 01 01 00 30 00 10 3D C9(16进制)
变频器返回数据:01 01 02 00 20 B8 24(16进制)
发送数据:0030hex(线圈地址49)
返回的数据位为“0020”(16进制),高位与低位互换,为2000。即输出频率为303(Max Ref)的50%。关于2000对应50%,具体见图1。
-100%
(C000HEX)
Par.300 设为1
1:―max — +max
Par.303
频率最大值
0%
0HEX
100%
4000HE反 转 正 转
Par.303
频率最大值
0%
0HEX
100%
4000HEX
正 转
Par.302
频率最小值
Par.303
频率最大值
0
Par.300 设为0
0:min — +max
图1
03读保持寄存器
上位机发送数据格式:
ADDRESS 03 ADDRH ADDRL NUMH NUML CRC
注: ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数)
ADDR=Parameter Number×10-1
正确时变频器返回数据格式:
ADDRESS 03 BYTECOUNT DATA1 DATA 2 DATA 3 DATAN CRC
注: BYTECOUNT:读取的字节数
错误时变频器返回数据格式:
ADDRESS 0X83 Errornum CRC
如:要读变频器参数303的设定值
应发送数据:01 03 0B D5 00 02 95 BC (16进制)
Parameter 303(3029)=0BD5HEX
变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B
返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000,
表示303设置值为60.000
※ 当参数值为双字时,NUM的值必须等于2。否则无法读取或读取错误。
05 写单个线圈状态
上位机发送数据格式:
ADDRESS 05 ADDRH ADDRL DATAH DATAL CRC
注: ADDR: 0 ---- 0XFFFF(ADDR=线圈地址-1); DATA=0000HEX(OFF) OR
FF00(ON) HEX
正确时变频器返回数据格式:
ADDRESS 05 DATAH DATAL BYTECOUNT CRC
错误时变频器返回数据格式:
ADDRESS 0X85 Errornum CRC
如:要使写参数为写入RAM和EEPROM
应发送数据: 01 05 00 40 FF 00 CRC(16进制)
变频器返回数据:01 05 FF 00 00 01 CRC(16进制)
发送数据:0040hex(线圈地址65)
06 写单个保持寄存器值(只能写参数值为单个字的参数)
上位机发送数据格式:
ADDRESS 06 ADDRH ADDRL DATAH DATAL CRC
注:ADDR: ADDR=Parameter Number×10-1
正确时变频器返回数据格式:
ADDRESS 06 ADDRH ADDRL DATAH DATAL CRC
错误时变频器返回数据:
ADDRESS 0X86 Errornum CRC
如:要对变频器参数101写入1
应发送数据:01 06 00 03 F1 00 01 19 BD(16进制)
变频器返回数据:01 06 03 F1 00 01 19 BD(16进制)
PARAMETER 101(1009)=03F1 HEX 返回的数据位为“0001”(16进制)转换为10进制为“1”表示101设置值为1
0F 写多个线圈状态
上位机发送数据格式
ADDRESS 0F ADDRH ADDRL NUMH NUML COUNT DATAH1
DATAL1 DATA2H DATA2L ------- DATANH DATANL CRC
注:ADDR: 0 -------- 0XFFFF (ADDR=线圈地址-1); NUM: 0010-----0040 (NUM为要写值的二进制数的位数) ; COUNT: NUM / 8
正确时变频器返回数据格式:
ADDRESS 0F ADDRH ADDRL NUMH NUML CRC
错误时变频器返回数据格式:
ADDRESS 0X8F Errornum CRC
如:变频器运行,频率是参数303的40%
应发送数据: 01 0F 00 00 00 20 04 7C 04 9A 19 37 43(16进制)
变频器返回数据:01 0F 00 00 00 20 54 13(16进制)
运行命令:0000 0100 0111 1100=047C HEX
速度命令:4000 HEX=100% Speed
40% of 4000 HEX=199A HEX
10 写多个保持寄存器(只能写单个参数的值)
上位机发送数据格式
ADDRESS 0x10 ADDRH ADDRL NUMH NUML BYTECOUNT
DATAH1 DATAL1 DATA2H DATA2L ------- DATANH DATANL CRC
注:ADDR: 0 ------ 0XFFFF:ADDR=Parameter Number×10-1; NUM: 0-2 (NUM为要写的字的字数)
COUNT=NUM*2
正确时变频器返回数据格式
ADDRESS 0x10 ADDRH ADDRL NUMH NUML CRC
错误时变频器返回数据格式:
ADDRESS 0X90 Errornum CRC
如要同时对参数303写入60.000(Parameter 303(3029)=0BCB HEX)
应发送数据:01 10 0B CB 00 02 04 00 00 EA 60 82 34(16进制)
变频器返回数据:01 10 0B CB 00 02 32 12(16进制)
发送的要写入16进制数据“00 00 EA 60”转换为10进制数为60000表示对参数303写入的数据分别为60.000
※注意:NUM的值必须写对,否则返回的数据可能出错
通信错误代码(Errornum)说明:
00
参数号码不存在
01 不能写入已定义的参数
02 参数的值超出该参数的上限 03 子索引不存在
04 该参数不是数组类型
05 数据类型与已定义参数的数据类型不同
06 仅用于复位
07 不可改变
11 不许写
17 在变频器当前模式下不能更改已定义参数的数据
某些参数只能在电机关闭时才能更改
18 其它错误
64 无效的数据地址
65 无效的长度
66 无效的数据长度和值
67 无效的参数
130 已定义参数没有总线连接
131 出厂设定值已被选定数据,不能更改
功能码说明
线圈功能码说明
线圈地址
1-16
17-32
33-48
49-64
65
66-65536
名称
变频器控制字
变频器转速或设定频率
变频器状态字
变频器输出频率
参数写控制
保留
R/W
R,W
R,W
R
R
R,W
说明
见附表
见附表
0 – 参数写入RAM:1-参数写入RAM和EEPROM
4)DATA:资料内容 n×8-bit资料
5)CRC:侦误值
附表:
变频器控制字:
位
00
01
02
03
04
05
06
07
位=0
直流制动
惯性停机
快停
冻结输出频率
加减速停车
位=1
预置最小参考值
预置最大参考值
起动
复位 08
09
10
11
12
13
14
15
加减速1
数据无效
无功能
无功能
选择最小安装
选择最大安装
点动
加减速2
数据有效
反转
变频器状态字:
位
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
读数组参数310[2](index=2)
发送:01 06 00 08 00 02 CRC
“0002”Index的值
接收:01 06 00 08 00 02 CRC
发送:01 03 0C 1B 00 01 CRC
接收:01 03 02 00 00 CRC
写数组参数310[2](index=2)
发送:01 06 00 08 00 02 CRC
“0002”Index的值
接收:01 06 00 08 00 02 CRC
发送:01 10 0C 1B 00 01 02 00 00 CRC
接收:01 10 0C 1B 00 01 CRC
位=0
惯性停机
错误
无用
无用
无用
无警告
速度!=参考值
本地控制
频率范围溢出
位=1
控制准备完毕
驱动准备完毕
警告
速度=参考值
串行通信
频率限制正常
电机正常运行
电压警告
电流限定
热警告 读写带数组的数必须先发01 06 00 08 Index(High) Index(Low) CRC ,再按读,写数据的格式发送数据
HLP_SV FC_MODBUS通讯协议格式
通信资料格式
由一个起始字节(STX)开始,这个起始字节为STX=02(十六进制)。随后紧跟资料的长度(LGE)的字节和表示变频器地址的字节(ADR)。然后是一些数据字节。最后由一个数据控制字节(BCC)来结束。
STX LGE ADR DATA BCC
1) 资料长度
资料长度是数据字节的数目和地址字节(ADDR)加数据字节(DATA)再加BCC字节的总和。
4个数据字节的资料长度为:
LGE=4+1+1=6
12个数据字节的资料长度为:
LGE=12+1+1=14
包含文本的资料长度为:10+n字节。其中,10代表固定字节,n是随着文本的长度而变化的。
2)变频器地址(ADDR):1-247
3)数据控制字节(BCC)
将前面所有的数据进行异或运算。
4)数据字节
数据字节的资料格式有三种类型:
PKE IND
参数块
PWEhigh PWElow PCD1 PCD2
过程块
过程块由4个字节(2个字)的数据块组成,包括:
控制字和参考值
状态字和当前输出频率(从从机到主机)
PCD1 PCD2
过程 块
文本块,用于通过数据块读写文本。
PKE IND
Ch1 Ch2 …
文本块
Chn PCD1 PCD2
过程块 参数命令与应答(AK)
PKE IND PWEhigh PWElow
12-15位用于传送主机到从机的参数命令和从机答复主机的应答。
参数命令 主——从
AK PNU
位号:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
13 12 参数命令 15 14
0
0
0
1
1
1
应答 从——主
位号:
15
0
0
0
0
1
14
0
0
0
1
1
13
0
0
1
1
1
12
0
1
0
1
1
应答命令
无应答
参数值已传送(字类型)
参数值已传送(双字类型)
命令不能执行
文本已传送
1 读参数值
参数号码
令与应用0 0 1 0 在RAM中写参数值(字类型)
答
参数命
0 0 0 无命令
0
不0
0
1
1
1
1
0
1
1
1
1
0
1
在RAM中写参数值(双字类型)
在RAM和EEPROM中写参数值(双字类型)
在RAM和EEPROM中写参数值(字类型)
读/写文本
如果命令不能被执行,则从机发送应答:0111‘命令不能执行’并且在参数值(PWE)中给定以下的错误报告。
应答 错误报告
00
参数号码不存在
01 不能写入已定义的参数
02 参数的值超出该参数的上限
03 子索引不存在
04 该参数不是数组类型
05 数据类型与已定义参数的数据类型不同
06 仅用于复位
07 不可改变
11 不许写
17 在变频器当前模式下不能更改已定义参数的数据
某些参数只能在电机关闭时才能更改
18 其它错误
64 无效的数据地址
65 无效的长度
66 无效的数据长度和值
67 无效的参数
130 已定义参数没有总线连接
131 出厂设定值已被选定数据,不能更改
索引
PKE IND PWEhigh PWElow
索引与参数号码一起使用用于读/写有索引的参数。例如:参数310,索引由2个字节组成一个低字节,一个高字节。但是仅低字节被作为一个索引。
索引示例:
读参数310(索引[1])
PKE=0136H
IND=0001H----索引号1
0136H 0001H
PKE IND PWE
变频器将在参数块(PWE)中对应的给出一个值。
索引字节用于表明它是一个读命令还是写命令,在读命令中索引必须具有以下形式:
04H
IND
一些变频器有一些参数以确保能写文本。为了能够通过PWE块写文本,参数命令(应答)必须设置为‘F’(十六进制H)。
为了表示一个写命令,文本必须具有以下形式:
05H 00H
高字节 低字节
00H
高字节 低字节 IND
变频器支持的数据类型
数据类型 描述
3 16位整型
4 32位整型
5 8位无符号
6 16位无符号
7 32位无符号
9 文本串
无符号意味着没有操作符号。
变换
由于一个参数值仅能作为一个完整的整数传递,所以必须有一个变换因子用于转换其为十进制。
示例
参数412 电机频率下限有一个转换因子0.1,如果你希望重新设定其值为10Hz,参数值100必须被传送,这是由于转换因子0.1意味着传递的参数要乘以0.1,这样100就成
了10.0。
过程字
过程字块分为两个16位的块,常常出现在已定义的事例中。
控制字用于从主机(PC)传送命令到从机(变频器)
变频器控制字:
位
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
位 00/01
位00/01用于在四种预置的参考值(参数310)中根据下表作出选择:
预置参考
1
2
3
4
位 02 直流制动
位02=‘0‘生直流制动和停车。制动电流持续时间在参数201直流制动电流和参数202直流制动时间中预置。
位 03 慢性停机
位03=‘0’,使变频器迅速地让马达慢性空转(输出传感器关闭),这样它惯性地310[0]
310[1]
310[2]
310[3]
参数 位1
0
0
1
1
0
1
0
1
位2
位=0
直流制动
惯性停机
快停
冻结输出频率
加减速停车
加减速1
数据无效
无功能
无功能
选择最小安装
选择最大安装
位=1
预置最小参考值
预置最大参考值
起动
复位
点动
加减速2
数据有效
反转 慢慢停下来。
位03=‘1’,使变频器能够在其他启动条件满足的情况下启动马达。注意:在参数850中选择一种用来定义位03如何控制输入位的对应功能。
位 04 快停
位04=‘0‘使产生停车,马达速度通过参数381快停减速时间快速的停止。
位 05 冻结输出频率
位05=‘0’是当前的输出频率被冻结。冻结输出频率只能通过用于控制加速和减速的输入位来改变。
注意:
如果冻结输出频率有效,变频器不能通过位06起动或者输入位来停止。变频器只能通过以下方式停止:
š 位03慢性停机。
š 位02直流制动。
š 用于直流制动,慢性停车或者重新起动以及慢性停车的输入位。
位 06 加减速停车/起动:
位06=‘0’使变频器可以在其他起动条件满足的情况下起动马达。注意:在参数853起动中选择一种来定义06加减速停车/起动如何控制输入位的对应功能。
位 07 复位
位07=‘0’ 不复位。
位07=‘1’断开后复位,复位在信号的跳动边缘有效。例如,当从逻辑‘0’变成逻辑‘1’时。
位 08 点动
位08=‘1’使输出频率由参数319点动频率来决定。
位 09
位09=‘0’,意味着加减速1有效(参数340到347)
位09=‘1’,意味着加减速2有效(参数350到357)
位 10 数据无效/数据有效:
用于告诉变频器控制字是否有用或还是忽略掉。
位10=‘0’使控制字被忽略掉。位10=‘0’使控制字有用。这个功能是相应的,因为控制字常常包含在资料中,无论是什么样的资料类型。例如,如果你不希望在升级或读参数的过程中使用它的话,你可以把控制字关掉。
位 11 无功能
位11 没有任何功能
位 12无功能
位12 没有任何功能
位 13/14 菜单选择:
位13和14用于从下表所示的四种菜单中选择其中一种。
这种功能只有在参数010有效菜单中的多菜单方式被选择时才有效。
注意:在参数855菜单选择中选择一种来定义位13/14如何控制输入为的对应功能。
位 15
位15=‘0’使反转无效。
位15=‘1’使之有效。
注意:在出厂设置值中,反转设置在参数854反转中位15只有当前串行通信,逻辑或或逻辑与被选择后才产生反转。
状态字用于通知主机(例如PC)从机(变频器)的模式。
变频器状态字:
位
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
位=0
惯性停机
错误
无用
无用
无用
无警告
速度!=参考值
本地控制
频率范围溢出
位=1
控制准备完毕
驱动准备完毕
警告
速度=参考值
串行通信
频率限制正常
电机正常运行
电压警告
电流限定
热警告
位 00 控制准备完毕
位00=‘1’变频器准备完毕
位00=‘0’变频器没有准备好运行
位 01 驱动准备完毕
位01=‘1‘变频器准备好运行。但是有一个通过数据输入式串行通信使之有效的惯性命令。
位 02 慢性停机 位02=‘0’,变频器释放电机。
位02=‘1’,变频器当给出一个起动命令时能起动电机。
位 03 不断开/断开
位03=‘0‘意味着变频器不是在错误模式。
位03=‘1‘意味着变频器断开,并且需要一个重新起动信号来重新运行。
位04,无用
位04在状态字中没有用到。
位05,无用
位05在状态字中没有用到。
位06,无用
位06在状态字中没有用到。
位 07 无警告/警告
位07=‘0’ 意味着无警告。
位07=‘1’ 意味着有警告发生。
位 08 速度!=参考值/速度=参考值
位08=‘0’意味着电机正在运转,但是当前的速度与预设参考速度不同。还有可能,例如,是由于速度在起动/停止时加减速的结果。
位08=‘1’ 意味着电机当前的速度与预设参考速度相同。
位 09 本地操作/串行通信控制:
位09=‘0’,意味着[停车/重起]在控制单元被激活,或者在参数313本地/远程操作被选择。这种方式不可能通过串行通信控制变频器。
位09=‘1’,意味着可以通过串行通信控制变频器。
位 10 频率范围溢出
位10=‘0’意味着输出频率到达了参数411输出频率下限中所设定的下限值或参数413输出频率上限所设定的上限值。
位10=‘1’意味着输出频率在定义限制范围内。
位 11 运行/不运行
位11 =‘0’意味着电机正在运转。
位11 =‘1’意味着变频器有一个起动信号或输出频率大于0Hz。
位 13 电压警告低/高
位13=‘0’意味着无电压警告。
位 13=‘1’意味着变频器的直流电压过低或者太高。
位 14 电流限定:
位14 =‘0’意味着输出电流比参数418电流限定的值要低。
位14 =‘1’意味着输出电流比参数418电流限定的值要高,并且变频器在一段时间后将断开。
位 15 热警告:
位15=‘0’意味无热警告。
位15=‘1’意味着电压或变频器或与输入位相连的中热调节器的温度限定被超出。
串行通信参考值
-100% 0%
示例:控制字与串行通信参考值
(C000HEX) 0HEX
参考值设置为参考值范围的50%(2000H)(Par.300=0)
Par.300 设为1
1:―max — +max
例子:
反 转 正 转
100%
4000HE
Par.303 Par.303
0
频率最大值 例1:读参数值 频率最大值
发送:02 0E 01 11 2F 00 00 00 00 00 00 04 74 00 00 43(十六进制)
0% 100%
接收:02 0E 01 21 2F 00 00 00 00 C3 50 00 03 00 00 93(十六进制)
0HEX 4000HEX
Par.300 设为0
0:min — +max
正 转 0E长度为14
1为参数命令
Par.303(12F Hex)=50000
0003变频器状态字
例2:读带数组的参数值
发送:02 0E 01 11 36 00 02 00 00 00 00 04 74 00 00 58(十六进制)
接收:02 0E 01 11 36 00 02 00 00 00 00 00 03 00 00 2B(十六进制)
0002为Index
Par.310[2](136 Hex)=0
例3:发运行命令
发送:02 0E 01 00 00 00 00 00 00 00 00 04 7C 20 00 CRC(十六进制)
接收:02 0E 01 00 00 00 00 00 00 00 00 0D07 20 00 CRC(十六进制)
控制字:047C
参考值:50%(2000 Hex)
例4:在RAM和EEPROM中写参数值(双字类型)
发送:02 0E 01 E5 8E 00 00 00 00 00 02 04 74 00 00 14(十六进制)
接收:02 0E 01 15 8E 00 00 00 00 00 02 00 03 00 00 97(十六进制)
E为参数命令
写Par.1422(58E Hex)=2
例5:读文本
发送:02 0E 01 F6 0A 00 00 00 00 00 00 04 74 00 00 83(十六进制)
接收:02 12 01 F6 0A 00 00 31 33 32 46 30 30 30 32 00 03 00 00 9A(十六进制)
F为参数命令
写Par.1546(60A Hex)=132F0002


发布评论