好文档 - 专业文书写作范文服务资料分享网站

Modbus标准通讯协议格式 

天下 分享 时间: 加入收藏 我要投稿 点赞

d:读取状态值 ( 04 )

格式:ADDR 04 01 CFG ADDR=0时无返回 CFG=0—8时返回单个状态

ADDR≠0时有返回

0:Set F 1:Out F 2:Out A 3:RoTT 4:DCV 5:ACV 6:Cont 7:Tmp 8:Error和CNST 例1: 读取设定频率

发送:3A 30 31 30 34 30 33 30 30 LRC 0D 0A

返回:3A 30 31 30 34 30 33 31 33 38 38 LRC 0D 0A 其中 “ 31333838 ” 即1388,13 88为数据,13为高位,88为低位。 例2: 读取错误代码和当前变频器状态

发送:3A 30 31 30 34 30 33 30 38 LRC 0D 0A

返回:3A 30 31 30 34 30 33 30 38 30 30 30 39 LRC 0D 0A 其中 “ 3030 ” 即 00。00 为数据,代表无故障。

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

e:变频器串口频率设定 ( 05 ) 格式:ADDR 05 02 Data ADDR=0时无返回 例 变频器频率设定为50.00Hz

发送:3A 30 31 30 35 30 32 31 33 38 38 LRC 0D 0A 返回:3A 30 31 30 35 30 32 31 33 38 38 LRC 0D 0A

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

4)LEN:资料长度 指D(n-1)…D(0)的长度,长度设定:1个Word时LEN=3,1个Byte时或<1 byte时 LEN=2 5)DATA:(Data charactars)资料内容,2n个ASCII组合成n个bytes,最多有50个ASCII。

6)LRC:侦误值

ASCII模式,采用LRC(Longitudinal Redundancy Check)侦误值。LRC侦误值乃是将ADDR至最后一个资料内容加总。得到结果以256为单位,超出部分去除(如结果为128H则取28H)然后计算二次反补后得到结果即为LRC侦误值。

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

ADDR “0” “1”

FUNC “0” “2”

LEN

DATA

LRC

END “CR” “LF”

“0” “3” “0” “0” “0” “B” “B” “8” “3” “7”

ADDR≠0时有返回

3AH 30H 31H 30H 32H 30H 33H 30H 30H 30H 42H 42H 38H 33H 37H 0DH 0AH

LRC值计算:

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

C9H二次反补为37H 所以传送数据内容为:

3AH 30H 31H 30H 32H 30H 33H 30H 30H 30H 42H 42H 38H 33H 37H 0DH 0AH

3.2 RTU模式 静音 >50ms

ADDR

FUNC

LEN

D(n-1)~D(0)

CRC

静音 >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(cyclical Redundancy Check)侦误值。CRC侦误值以下列步骤计算。 1:载入一个内容为FFFFH的16-bit暂存器(称CRC暂存器)。

2:将命令讯息第一个位元组与CRC16-bitCRC暂存器的低次位元组进行Exclasive OR运算,并将结果存回CRC暂存器。

3:将CRC暂存器内容右移1bit,最左bit填入0,检查CRC暂存器最低位元的值。 4:若CRC暂存器最低位元为0,则重复步骤3;否则将CRC暂存器与A001H进行Exclusive OR运算。

5:重复3及4,直到CRC暂存器的内容右移8bits,此时,该位元组已完全处理。 6:对命令讯息下一个位元组重复步骤2与5直到所有位元组皆完成处理,CRC暂存器的最后内容即是CRC值。当在命令讯息中传送CRC值时,低位元组须与高位元组交换顺序,即低位元组将先被传送。

7:范例:

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

发送格式: ADDR 01 LEN Data ADDR=0时,无返回数据

ADDR≠0且符合变频器地址时有响应 当返回为正常时,格式如下:

ADDR 01 LEN Data

如返回为一个字时 LEN=3 一个字节时 LEN=2 当无此功能或无效时返回为: ADDR 81H 01 例如:读取CD000的参数

发送: 01 01 01 00 CRC

00为数据。代表CD000.

接收: 01 01 03 00 13 88 CRC 说明:CD000 = 01388H = 5000,即50Hz.

b.功能码设定 ( 02 )

发送格式:ADDR 02 LEN Data ADDR=0 作广播用,可以设定,但无应答 ADDR≠0时可以设定 同时有回应讯号

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

ADDR 02 LEN Data

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

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

发送: 01 02 03 00 17 70 CRC

00为数据。代表CD000. 1770(Hex),转换为十进制数为6000。 接收: 01 02 03 00 17 70 CRC

c.控制命令 ( 03 )

发送格式:ADDR 03 01 CNTR ADDR=0 为广播,无返回响应 ADDR≠0时有响应,返回 CNTR

7 jogr

当设定正确时,返回当前控制状态 格式:ADDR 03 01 CNST CNST

7 跟踪启动

6 制动

5 r/f

4 joging

3 Runing

2 r/f

1 jog

0 Run

6 jogf

5 jog

4 r/f

3 stop

2 Rev

1 for

0 Run

检测不正确时 ADDR 83H 01 CNST 例如:通讯控制变频器运行时即CD033 = 2时 发运行命令

发送:01 03 01 01 CRC

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

接收:01 03 01 09 CRC

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

注意: 因通讯实时性,变频器返回状态滞后性,所以发命令之后返回的数据不能正确反应变频器当前状态。

d:读取状态值 ( 04 )

格式:ADDR 04 01 CFG ADDR=0时无返回 CFG=0—8时返回单个状态

ADDR≠0时有返回

0:Set F 1:Out F 2:Out A 3:RoTT 4:DCV 5:ACV 6:Cont 7:Tmp 8:Error和CNST

例1: 读取设定频率

发送:01 04 03 00 CRC

返回:01 04 03 13 38 CRC

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

例2: 读取错误代码和当前变频器状态 发送:01 04 03 08 CRC 返回:01 04 03 08 00 09 CRC 其中 00 为数据,代表无故障。

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

e:变频器串口频率设定 ( 05 ) 格式:ADDR 05 02 Data ADDR=0时无返回 例 变频器频率设定为50.00Hz 发送:01 05 02 13 88 CRC 返回:01 05 02 13 88 CRC

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

8:范例2:

下列以C语言产生CRC值。此函数需要两个参数 Unsigned char data←指讯息缓冲区的指标 Unsigned char length←讯息缓冲区中的位元组数目

此函数将传回unsigned integer型态之CRC值

unsigned int crc_chk(unsigned char data unsigned char length){ int j;

unsigned int reg_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; }else{

reg-crc=reg_crc>>1; } } }

return rge_crc; }

ADDR≠0时有返回

Modbus标准通讯协议格式 

d:读取状态值(04)格式:ADDR0401CFGADDR=0时无返回CFG=0—8时返回单个状态ADDR≠0时有返回0:SetF1:OutF2:OutA3:RoTT4:DCV5:ACV6:Cont7:Tmp8:Error和
推荐度:
点击下载文档文档为doc格式
8ka7245d7638ccg96pas
领取福利

微信扫码领取福利

微信扫码分享