通讯格式

更新时间:2023-03-02 16:24:02 阅读: 评论:0

绵竹关-剪纸兔子

通讯格式
2023年3月2日发(作者:迷宫解锁)

HLPA+Modbus标准通讯协议格式

注:BYTECOUNT=2*NUM

错误时变频器返回数据格式:

“:”ADDRESS0X8301or02or030r04LRC0X0D0X0A

如:要读变频器功能码CD000中的设定值(假如为30.00HZ)(CD160=CD161=1

CD162=0)

应发送数据:“:”FC0D0A(16进制),转为ASCII码格式为

3A3D0A(ASCII)

变频器返回数据:“:”0103020BB8370D0A(16进制),转为ASCII码格式

为:

3A3DDA

返回的数据位为“0BB8”(16进制)转换为10进制数为3000表示CD000设置值为

30.00

04读取输入寄存器

上位机发送数据格式:

“:“ADDRESS04ADDRHADDRLNUMHNUMLLRC0X0D

0X0A

注:ADDR:0----0XFFFF;NUM:0001----0004(NUM为要读的输入寄存器的数量)

正确时变频器返回数据格式:

“:“ADDRESS04BYTECOUNTDATAH1DATAL1----DATAHN

DATALN

注:BYTECOUNT=NUM*2

错误时变频器返回数据格式:

“:“ADDRESS0X8401or02or03or04LRC0X0D0X0A

如:要读变频器温度显示值(假如温度为36.2)(CD160=CD161=1CD162=0)

应发送数据:“:”F40D0A(16进制),转为ASCII格式

为:

3A36340D0A(ASCII)

变频器返回数据:“:”010402016A8E0D0A(16进制),转为ASCII码格式

3A3D0A(ASCII)

返回的数据位为“016A”(16进制)转换为10进制为“362”表示温度为36.2

05写单个线圈状态

上位机发送数据格式:

“:“ADDRESS05ADDRHADDRLDATAHDATALLRC0X0D

0X0A

注:ADDR:0----0XFFFFDATA:0X0000or0XFF00(16进制数)

正确时变频器返回数据格式:

“:“ADDRESS05ADDRHADDRLDATAHDATALLRC0X0D

0X0A

错误时变频器返回数据格式:

“:”ADDRESS0X8501or02or030r04LRC0X0D0X0A

06写单个保持寄存器值

上位机发送数据格式:

“:“ADDRESS06ADDRHADDRLDATAHDATALLRC0X0D

0X0A

注:ADDR:0----0XFFFF

正确时变频器返回数据格式:

“:“ADDRESS06ADDRHADDRLDATAHDATALLRC0X0D

0X0A

错误时变频器返回数据:

“:”ADDRESS0X8601or02or030r04LRC0X0D0X0A

如:要对变频器功能码CD000写入30.00(CD160=CD161=1CD162=0),

应发送数据:“:”010600000BB8360D0A(16进制),转为ASCII格

式为

3A33360D0A(ASCII)

变频器返回数据:“:”010600000BB8360D0A(16进制),转为ASCII

格式为

3A33360D0A(ASCII)

返回的数据位为“0BB8”(16进制)转换为10进制为“3000”表示CD000设置值

为30.00

0F写多个线圈状态

上位机发送数据格式

“:“ADDRESS0FADDRHADDRLNUMHNUMLCOUNT

DATAH1DATAL1DATA2HDATA2L-------DATANHDATANLLRC

0X0D0X0A

注:ADDR:0--------0XFFFF;NUM:1-------1968/0X7B0;COUNT:NUM/8或

NUM/8+1(NUM为要写的线圈的数量)

正确时变频器返回数据格式:

“:“ADDRESS0FADDRHADDRLNUMHNUMLLRC0X0D

0X0A

错误时变频器返回数据格式:

“:”ADDRESS0X8F01or02or030r04LRC0X0D0X0A

如:要使变频器正转(CD160=CD161=1CD162=0),

应发送数据:“:”010FLRC0D0A(16进制),转为ASCII

格式为3A343830303032LRC0D

0A(ASCII)

“0002”即00000010;即线圈0x49置为1,给变频器发正转命令。

变频器返回数据:“:”010F00480008LRC0D0A(16进制),转为ASCII

格式为3A343830303038LRC0D0A(ASCII)

10写多个保持寄存器

上位机发送数据格式

“:“ADDRESS0x10ADDRHADDRLNUMHNUML

BYTECOUNTDATAH1DATAL1DATA2HDATA2L-------DATANH

DATANLLRC0X0D0X0A

注:ADDR:0------0XFFFF;NUM:0-125(NUM为要写的保持寄存器的数量)

正确时变频器返回数据格式

“:“ADDRESS0x10ADDRHADDRLNUMHNUMLLRC0X0D

0X0A

COUNT=NUM*2

错误时变频器返回数据格式:

“:”ADDRESS0X9001or02or030r04LRC0X0D0X0A

如要同时对CD000写入30.00,对CD001写入110.0,(CD160=CD161=1

CD162=0)

应发送数据:“:”040BB8044CD60D0A(16进制),转为ASCII

格式:

3A3D0A

(ASCII)

变频器返回数据:“:“45440D0A(16进制),转为ASCII格

式为:

3A343534340D0A(ASCII)

发送的要写入16进制数据“0BB8”和“044C”转换为10进制数分别为3000和

1100表示对CD000和CD001写入的数据分别为30.00和110.0

通信错误代码说明:

01非法的功能码

02非法数据地址

03非法数据值

04设备失败

功能码说明

线圈功能码说明

线圈地址名称

R/W

说明

0000保留R

0001保留R

0002保留R

0003运行R0–停止1–运行

0004点动R0–无效1–点动

0005正/反转R0–正转1–反转

0006制动R0–无效1–制动P02-00=0

0007频率跟踪R0–无效1–频率跟踪P02–00=1

0008IGBT短路R0–无效1–错误‘OC’

0009CT检测过流highR0–无效1–错误‘Oc’

000ACT检测过流lowR0–无效1–错误“oc”

000B对地短路R0–无效1–错误‘GF’

000C过压R0–无效1–错误‘OU’

000D保险丝熔断R0–无效1–错误‘FB’

000E低压R0–无效1–错误‘Lu’

000F变频器过热R0–无效1–错误‘OH’

0010变频器过载R0–无效1–错误‘OL’

0011马达过载R0–无效1–错误‘OA’

0012马达过转矩R0–无效1–错误‘OT’

0013接触器坏掉R0–无效1–错误‘LU’

0014制动管坏R0–无效1–错误‘BT’

0015CPU故障R0–无效1–错误‘FE’

0016存贮器坏掉R0–无效1–错误‘BE’

0017总故障指示R0–无效1–错误‘KE’

0018变频器过载R0–无效1–报警‘OL’

0019马达过载R0–无效1–报警‘OA’

001A马达过转矩R0–无效1–报警‘OT’

001B温度偏高R0–无效1–报警‘OH’

001C急停R0–无效1–报警‘ES’

001E4-20MA断线R0–无效1–报警‘20’

001F参数设置错误R0–无效1–报警‘PR’

0020外部开关量输入FBR0—无效1-有效

0021外部开关量输入MCSR0—无效1-有效

0022外部开关量输入FORR0—无效1-有效

0023外部开关量输入REVR0—无效1-有效

0024外部开关量输入SPLR0—无效1-有效

0025外部开关量输入SPMR0—无效1-有效

0026外部开关量输入SPHR0—无效1-有效

0027外部开关量输入RSTR0—无效1-有效

0028-002F状态输出MLTIOUT1R0—无效1-有效

0030-0037状态输出MLTIOUT2R0—无效1-有效

0038-003F状态输出MLTIOUT3R0—无效1-有效

0040-0047状态输出MLTIOUT4R0—无效1-有效

0048RUNW0—无效1-有效

0049FORW0—无效1-有效

004AREVW0—无效1-有效

004BSTOPW0—无效1-有效

004CF/RW0—无效1-有效

004DJOGW0—无效1-有效

004EJOGFW0—无效1-有效

004FJOGRW0—无效1-有效

保持寄存器功能码说明

功能码地址与键盘的功能码参数数值显示一样

输入寄存器功能码地址说明

输入寄存器地址名称

R/W

说明

0000

输出频率R

0001设定频率R

0002输出电流R

0003输出转速R

0004直流电压R

0005交流电压R

0006温度R

0007计数器R

0008反馈值R

0009目标值R

000A当前运行时间R

000B总运行时间

4)DATA:资料内容n×8-bit资料

5)LRC:侦误值

ASCII模式,采用LRC(LongitudinalRedundancyCheck)侦误值。

LRC侦误值乃是将ADDR至最后一个资料内容加总。得到结果以256单位,超

出部分去除(如结果为11128H则取1128H)然后计算二次反补后得到结果即为

LRC侦误值。

功能码数据同HOLIP标准协议中ASCII格式中的功能码

•校验码CRC算法同HOLIP普通协议中RTU格式中的CRC算法

04读取输入寄存器

如:要读变频器温度显示值(假如温度为36.2)(CD160=CD161=1CD162=3)

应发送数据:CRC(16进制)

变频器返回数据:010402016ACRC(16进制)

返回的数据位为“016A”(16进制)转换为10进制为“362”表示温度为36.2

05写单个线圈状态

如:要使变频器的正转无效,反转有效(CD160=CD161=1CD162=3)

应发送数据:FF00CRC(16进制)

变频器返回数据:FF00CRC(16进制)

“0000”代表无效;“FF00”代表有效

06写单个保持寄存器值

如:要对变频器功能码CD000写入30.00(CD160=CD161=1CD162=3),

应发送数据:010600000BB8360D0A(16进制)

变频器返回数据:010600000BB8360D0A(16进制)

返回的数据位为“0BB8”(16进制)转换为10进制为“3000”表示CD000

设置值为30.00

0F写多个线圈状态

如:要使变频器的正转无效(CD160=CD161=1CD162=3)

应发送数据:010F02CRC(16进制)

变频器返回数据:010F00480008CRC(16进制)

“0002”即00000010;即线圈0x49置为1,给变频器发正转命令。

10写多个保持寄存器

如要同时对CD000写入30.00,对CD001写入110.0,(CD160=CD161=1

CD162=3)

应发送数据:040BB8044CCRC(16进制)

变频器返回数据:45CRC(16进制)

发送的要写入16进制数据“0BB8”和“044C”转换为10进制数分别为3000和

1100表示对CD000和CD001写入的数据分别为30.00和110.0

HLP–A.C+海利MODBUS通讯规约

在使用RS485通讯界面时,每一台变频器必须设定其通讯位置,电脑便根据每一台变

频器个别位置实施控制。

1:本通讯协议有二种方式:

1)RTU方式(RemoteTerminalUnit)模式

2)ASCII方式(AmericanStandardCodeforinformationinterchange)模式编码意义

RTU模式:

每个8-bit资料由两个4-bit十六进位字元组成,如:64H

ASCII模式:

每个8-bit资料由两个ASCII字元组成,如:一个1-bit资料64H(十六进位)以ASCII

“64”表示,包含6(36H)和4(34H)

字元符号01234567

ASCII码30H31H32H33H34H35H36H37H

字元符号89ABCDEF

ASCII码38H39H41H42H43H44H45H46H

2:通讯资料方式

1)8N1ForASCIICD162=0

Startbit

01234567

Stop

bit

8—Databits字元串

10—bits字元框

2)8E1ForASCIICD162=1

Start

bit

0123456

7Even

parity

Stop

bit

8—Databits字元串

11—bits字元框

3)8O1ForASCIICD162=2

Start

bit

01234567

Odd

parity

Stop

bit

8—Databits字元串

11—bits字元框

4)8N1ForRTuCD162=3

Startbit

01234567

Stop

bit

8—Databits字元串

11—bits字元框

5)8E1ForRTuCD162=4

Start

bit

0

1234567

Even

parity

Stop

bit

8—Databits字元串

11—bits字元框

6)8O1ForRTUCD163=5

Start

bit

0123456

7Odd

parity

Stop

bit

8—Databits字元串

11—bits字元框

3:通讯资料格式

3.1ASCII模式

通讯资料格式

STX

“:”

(3AH)

ADDRFUNCLENDATE

(n-1)

…DATA

0

LRC

END

CR(0DH)

LF(0AH)

1)STX:启始单元“:”(3AH)

2)ADDR通讯位置8-bit位置包含了2个ASCII码

00:广播方式为MODBUS

01—250相应变频器地址

3)FUNC:功能码8-bit位置包含了2个ASCII码

01:FUNCREAD读取功能码数据

02:FUNCWRIT功能码设定

03:控制命令

04:控制状态读取

05:变频器串口频率设定

06:保留

07:保留

08:回路检测

a.读取功能码数据(01)

发送格式:ADDR01LENData

ADDR=0时,无返回数据

ADDR≠0且符合变频器地址时有响应

当返回为正常时,格式如下:

ADDR01LENData

如返回为一个字时LEN=3一个字节时LEN=2

当无此功能或无效时返回为:

ADDR81H01

例如:读取CD000的参数

发送:3A3030LRC0D0A

“3030”即00。代表CD000.

接收:3A3LRC0D0A

说明:CD000=01388H=5000,即50Hz.

b.功能码设定(02)

发送格式:ADDR02LENData

ADDR=0作广播用,可以设定,但无应答

ADDR≠0时可以设定同时有回应讯号

当返回为正常时,格式如下:

ADDR02LENData

当设定不正确时,或无此功能,返回参数为:

ADDR82H01

例如:将CD000参数值改为60.00Hz

发送:3A36440D0A

“3030”即00。代表CD000.”31373730”即1770(Hex),转换为十进制数为6000。

接收:3A36440D0A

c.控制命令(03)

发送格式:ADDR0301CNTR

ADDR=0为广播,无返回响应

ADDR≠0时有响应,返回

CNTR

76543210

jogrjogfjogr/fstopRevforRun

当设定正确时,返回当前控制状态格式:ADDR0301CNST

CNST

76543210

跟踪启动

r/f

jogin

g

Runingr/fjogRun

检测不正确时ADDR83H01CNST

例如:通讯控制变频器运行时即CD033=2时

发运行命令

发送:3A3031LRC0D0A

“3031”即01,01为数据,代表运行命令。

接收:3A3039LRC0D0A

“3039”即09,09为数据,代表变频器处于运行状态。

注意:因通讯实时性,变频器返回状态滞后性,所以发命令之后返回的数据不

能正确反应变频器当前状态。

d:读取状态值(04)

格式:ADDR0401CFG

ADDR=0时无返回ADDR≠0时有返回

CFG=0—8时返回单个状态

0:SetF1:OutF2:OutA3:RoTT4:DCV

5:ACV6:Cont7:Tmp8:Error和CNST

例1:读取设定频率

发送:3A3030LRC0D0A

返回:3A31333838LRC0D0A

其中“31333838”即1388,1388为数据,13为高位,88为低位。

例2:读取错误代码和当前变频器状态

发送:3A3038LRC0D0A

返回:3A3LRC0D0A

其中“3030”即00。00为数据,代表无故障。

“3039”即09。09为数据,代表当前变频器为运行状态。

e:变频器串口频率设定(05)

格式:ADDR0502Data

ADDR=0时无返回ADDR≠0时有返回

例变频器频率设定为50.00Hz

发送:3A31333838LRC0D0A

返回:3A31333838LRC0D0A

其中“31333838”即1388,1388为数据,13为高位,88为低位。(通过串

口设定频率时,须先将CD034设为2。)

4)LEN:资料长度指D

(n-1)…D

(0)

的长度,长度设定:1个Word时LEN=3,1个Byte

时或<1byte时LEN=2

5)DATA:(Datacharactars)资料内容,2n个ASCII组合成n个bytes,最多有50个

ASCII。

6)LRC:侦误值

ASCII模式,采用LRC(LongitudinalRedundancyCheck)侦误值。LRC侦误值乃是将

ADDR至最后一个资料内容加总。得到结果以256为单位,超出部分去除(如结果为128H

则取28H)然后计算二次反补后得到结果即为LRC侦误值。

7)例如:对01变频器写入30.00Hz(写入CD000)

STXADDRFUNCLENDATALRCEND

“:”“0”“1”“0”“2”“0”“3”“0”“0”“0”“B”“B”“8”“3”“7”“CR”“LF”

3AH30H31H30H32H30H33H30H30H30H42H42H38H33H37H0DH0AH

LRC值计算:

01H+02H+03H+00H+0BH+B8H=C9H

C9H二次反补为37H

所以传送数据内容为:

3AH30H31H30H32H30H33H30H30H30H42H42H38H33H37H

0DH0AH

3.2RTU模式

静音ADDRFUNCLEND(n-1)~D(0)CRC静音

>50ms>50ms

1)静音:表示50ms时间以上无串口中断

2)ADDR:通讯位置8-bit位置

3)FUNC:命令码8-bit命令,具体内容参见3.1章节中命令码中的详细说明

4)LEN:资料长度指D(n-1)~D(0)的长度

5)DATA:资料内容n×8-bit资料

6)CRC:侦误值

RTU模式采用CRC(cyclicalRedundancyCheck)侦误值。CRC侦误值以下列步骤计算。

1:载入一个内容为FFFFH的16-bit暂存器(称CRC暂存器)。

2:将命令讯息第一个位元组与CRC16-bitCRC暂存器的低次位元组进行ExclasiveOR

运算,并将结果存回CRC暂存器。

3:将CRC暂存器内容右移1bit,最左bit填入0,检查CRC暂存器最低位元的值。

4:若CRC暂存器最低位元为0,则重复步骤3;否则将CRC暂存器与A001H进行

ExclusiveOR运算。

5:重复3及4,直到CRC暂存器的内容右移8bits,此时,该位元组已完全处理。

6:对命令讯息下一个位元组重复步骤2与5直到所有位元组皆完成处理,CRC暂存器

的最后内容即是CRC值。当在命令讯息中传送CRC值时,低位元组须与高位元组交换顺序,

即低位元组将先被传送。

7:范例:

a.读取功能码数据(01)

发送格式:ADDR01LENData

ADDR=0时,无返回数据

ADDR≠0且符合变频器地址时有响应

当返回为正常时,格式如下:

ADDR01LENData

如返回为一个字时LEN=3一个字节时LEN=2

当无此功能或无效时返回为:

ADDR81H01

例如:读取CD000的参数

发送:01010100CRC

00为数据。代表CD000.

接收:CRC

说明:CD000=01388H=5000,即50Hz.

b.功能码设定(02)

发送格式:ADDR02LENData

ADDR=0作广播用,可以设定,但无应答

ADDR≠0时可以设定同时有回应讯号

当返回为正常时,格式如下:

ADDR02LENData

当设定不正确时,或无此功能,返回参数为:

ADDR82H01

例如:将CD000参数值改为60.00Hz

发送:CRC

00为数据。代表CD000.1770(Hex),转换为十进制数为6000。

接收:CRC

c.控制命令(03)

发送格式:ADDR0301CNTR

ADDR=0为广播,无返回响应

ADDR≠0时有响应,返回

CNTR

76543210

jogrjogfjogr/fstopRevforRun

当设定正确时,返回当前控制状态格式:ADDR0301CNST

CNST

76543210

跟踪启动制动r/fjogingRuningr/fjogRun

检测不正确时ADDR83H01CNST

例如:通讯控制变频器运行时即CD033=2时

发运行命令

发送:01030101CRC

01为数据,代表运行命令。

接收:01030109CRC

09为数据,代表变频器处于运行状态。

注意:因通讯实时性,变频器返回状态滞后性,所以发命令之后返回的数据不

能正确反应变频器当前状态。

d:读取状态值(04)

格式:ADDR0401CFG

ADDR=0时无返回ADDR≠0时有返回

CFG=0—8时返回单个状态

0:SetF1:OutF2:OutA3:RoTT4:DCV

5:ACV6:Cont7:Tmp8:Error和CNST

例1:读取设定频率

发送:01040300CRC

返回:CRC

其中1388为数据,13为高位,88为低位。

例2:读取错误代码和当前变频器状态

发送:01040308CRC

返回:CRC

其中00为数据,代表无故障。

09为数据,代表当前变频器为运行状态。

e:变频器串口频率设定(05)

格式:ADDR0502Data

ADDR=0时无返回ADDR≠0时有返回

例变频器频率设定为50.00Hz

发送:CRC

返回:CRC

其中1388为数据,13为高位,88为低位。(通过串口设定频率时,须先将CD034

设为2。)

8:范例2:

下列以C语言产生CRC值。此函数需要两个参数

Unsignedchardata←指讯息缓冲区的指标

Unsignedcharlength←讯息缓冲区中的位元组数目

此函数将传回unsignedinteger型态之CRC值

unsignedintcrc_chk(unsignedchardataunsignedcharlength){

intj;

unsignedintreg_crc=0xffff;

while(length——){

reg_crc^=*data++;

for(j=0;j<8;j++={

if(reg_crc&0x01){/*LSB(b0)=1*/

reg_crc=(reg_crc>>1)^0xa001;

}el{

reg-crc=reg_crc>>1;

returnrge_crc;

本文发布于:2023-03-02 16:24:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1677745442109478.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:通讯格式.doc

本文 PDF 下载地址:通讯格式.pdf

下一篇:返回列表
标签:通讯格式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|