8.2.1 RTU模式运行举例: 

8.2.1.1 命令码:03H(0000 0011),读取N个字(Word)(最多可以连续读取16个字)

例如:从机地址为01H的变频器,内存启始地址为0004,读取连续2个字,则该帧的结构描述如下:

RTU主机命令信息

RTU从机回应信息

START

T1-T2-T3-T4

START

T1-T2-T3-T4

ADDR

01H

ADDR

01H

CMD

03H

CMD

03H

启始地址高位

00H

字节个数

04H

启始地址低位

04H

数据地址0004H高位

13H

数据个数高位

00H

数据地址0004H低位

88H

数据个数低位

02H

数据地址0005H高位

00H

CRC CHK 低位

85H

数据地址0005H低位

00H

CRC CHK 高位

CAH

CRC CHK 低位

7EH

END

T1-T2-T3-T4

CRC CHK 高位

9DH



END

T1-T2-T3-T4

8.2.1.2 命令码:06H(0000 0110),写一个字(Word)

例如:将5000(1388H)写到从机地址02H变频器的0004H地址处。则该帧的结构描述如下:

RTU主机命令信息

RTU从机回应信息

START

T1-T2-T3-T4

START

T1-T2-T3-T4

ADDR

02H

ADDR

02H

CMD

06H

CMD

06H

写数据地址高位

00H

写数据地址高位

00H

写数据地址低位

04H

写数据地址低位

04H

数据内容高位

13H

数据内容高位

13H

数据内容低位

88H

数据内容低位

88H

CRC CHK 低位

C5H

CRC CHK 低位

C5H

CRC CHK 高位

6EH

CRC CHK 高位

6EH

END

T1-T2-T3-T4

END

T1-T2-T3-T4

8.2.1.3 命令码:08H(0000 1000),诊断功能

子功能码的意义:

子功能码

说明

0000

返回询问讯息数据

例如:对驱动器地址01H做回路侦测询问讯息字串内容与回应讯息字串内容相同,其格式如下所示:

RTU主机命令信息

RTU从机回应信息

START

T1-T2-T3-T4

START

T1-T2-T3-T4

ADDR

01H

ADDR

01H

CMD

08H

CMD

08H

子功能码高位

00H

子功能码高位

00H

子功能码低位

00H

子功能码低位

00H

数据内容高位

12H

数据内容高位

12H

数据内容低位

ABH

数据内容低位

ABH

CRC   CHK 低位

ADH

CRC   CHK 低位

ADH

CRC   CHK 高位

14H

CRC   CHK 高位

14H

END

T1-T2-T3-T4

END

T1-T2-T3-T4

8.2.2 通讯帧错误校验方式

帧的错误校验方式主要包括两个部分的校验,即字节的位校验(奇/偶校验)和帧的整个数据校验(CRC校验或LRC校验)。

8.2.2.1 字节位校验

用户可以根据需要选择不同的位校验方式,也可以选择无校验,这将影响每个字节的校验位设置。

偶校验的含义:在数据传输前附加一位偶校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为偶数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。

奇校验的含义:在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。

例如,需要传输"11001110",数据中含5个"1",如果用偶校验,其偶校验位为"1",如果用奇校验,其奇校验位为"0",传输数据时,奇偶校验位经过计算放在帧的校验位的位置,接收设备也要进行奇偶校验,如果发现接受的数据的奇偶性与预置的不一致,就认为通讯发生了错误。

8.2.2.2 CRC校验方式---CRC(Cyclical Redundancy Check)

使用RTU帧格式,帧包括了基于CRC方法计算的帧错误检测域。CRC域检测了整个帧的内容。CRC域是两个字节,包含16位的二进制值。它由传输设备计算后加入到帧中。接收设备重新计算收到帧的CRC,并与接收到的CRC域中的值比较,如果两个CRC值不相等,则说明传输有错误。

CRC是先存入0xFFFF,然后调用一个过程将帧中连续的6个以上字节与当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相异或(XOR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值相异或,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相异或。最终寄存器中的值,是帧中所有的字节都执行之后的CRC值。

CRC的这种计算方法,采用的是国际标准的CRC校验法则,用户在编辑CRC算法时,可以参考相关标准的CRC算法,编写出真正符合要求的CRC计算程序。

现在提供一个CRC计算的简单函数给用户参考(用C语言编程):

unsigned int crc_cal_value(unsigned char *data_value,unsigned char data_length)

{

int i;

unsigned int crc_value=0xffff; 

while(data_length--)

{

crc_value^=*data_value++;

          for(i=0;i<8;i++)

         {

if(crc_value&0x0001)

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

            else

crc_value=crc_value>>1;

           }

         }

return(crc_value);

}

在阶梯逻辑中,CKSM根据帧内容计算CRC值,采用查表法计算,这种方法程序简单,运算速度快,但程序所占用ROM空间较大,对程序空间有要求的场合,请谨慎使用。

8.2.3 通信数据地址的定义

该部分是通信数据的地址定义,用于控制变频器的运行、获取变频器状态信息及变频器相关功能参数设定等。

(1)功能码参数地址表示规则

功能码地址占两个字节,高位在前,低位在后。高字节为功能码点号前的组号,低字节为功能码点号后的数字,但都要转换为十六进制。如P05.06,功能码点号前的组号为05,则参数地址高位为05,功能码点号后的数字为06,额参数地址低位为06,用十六进制表示该功能码地址为0506H。再比如功能码为P10.01的参数地址为0A01。

高、低字节的范围分别为:高位字节——00~ffH;低位字节——00~ffH。

注意:

P29组:为厂家设定参数,既不可读取该组参数,也不可更改该组参数;有些参数在变频器处于运行状态时,不可更改;有些参数不论变频器处于何种状态,均不可更改;更改功能码参数,还要注意参数的设定范围,单位,及相关说明。

另外,由于EEPROM频繁被存储,会减少EEPROM的使用寿命,对于用户而言,有些功能码在通讯的模式下,无需存储,只需更改片内RAM中的值就可以满足使用要求。要实现该功能,只要把对应的功能码地址最高位由0变成1就可以实现。如:功能码P0.07不存储到EEPROM中,只修改RAM中的值,可将地址设置为8007;该地址只能用作写片内RAM时使用,不能用做读的功能,如做读为无效地址。

(2)其他功能的地址说明:

表 8.1 Goodrive1000系列逆变单元MODBUS功能地址表

功能说明

地址定义

数据意义说明

R/W特性

通讯控制命令

2000H

0001H:正转运行

W

0002H:反转运行

0003H:正转点动

0004H:反转点动

0005H:停机

0006H:自由停机(紧急停机)

0007H:故障复位

0008H:点动停止

0009H:预励磁

通讯设定值地址

2001H

通讯设定频率(0~Fmax(单位:0.01Hz))

W

2002H

PID给定,范围(0~1000,1000对应100.0%)

2003H

PID反馈,范围(0~1000,1000对应100.0%)

W

2004H

转矩设定值(-3000~3000,1000对应100.0%电机额定电流)

W

2005H

正转上限频率设定值(0~Fmax(单位:0.01Hz))

W

2006H

反转上限频率设定值(0~Fmax(单位:0.01Hz))

W

2007H

电动转矩上限转矩(0~3000,1000对应100.0%变频器电机电流)

W

2008H

制动转矩上限转矩(0~3000,1000对应100.0%电机额定电流)

W

2009H

特殊控制命令字:

Bit0~1:=00:电机1   =01:电机2

        =10:电机3   =11:电机4

Bit2:=1 转矩控制禁止 =0:转矩控制禁止无效

W

200AH

虚拟输入端子命令,范围:0x000~0x1FF

W

200BH

虚拟输出端子命令,范围:0x00~0x0F

W

200CH

电压设定值(V/F分离专用)

(0~1000,1000对应100.0%电机额定电压)

W

200DH

AO 输出设定值1(-1000~1000,1000对应100.0%)

W

200EH

AO 输出设定值2(-1000~1000,1000对应100.0%)

W

变频器状态字1

2100H

0001H:正转运行中

R

0002H:反转运行中

0003H:变频器停机中

0004H:变频器故障中

0005H:变频器POFF状态

变频器状态字2

2101H

Bit0: =0:运行准备维就绪 =1:运行准备就绪

Bi1~2:=00:电机1   =01:电机2

       =10:电机3   =11:电机4

Bit3:  =0:异步机  =1:同步机

Bit4:=0:未过载预报警 =1:过载预报警

Bit5:=0:电机未激磁  =1:电机激磁中

R

变频器故障代码

2102H

见故障类型说明

R

变频器识别代码

2103H

GD1000-----0x0113

R

厂家条形码1

6000H

范围:0000~FFFF

W

厂家条形码2

6001H

范围:0000~FFFF

W

厂家条形码3

6002H

范围:0000~FFFF

W

厂家条形码4

6003H

范围:0000~FFFF

W

厂家条形码5

6004H

范围:0000~FFFF

W

厂家条形码6

6005H

范围:0000~FFFF

W

从变频器中读取参数全部为16进制表示,数值都为:实际值*10K,其中K为该参数小数点后的位数。

8.2.4 错误消息的回应

当从设备回应时,它使用功能代码域与故障地址来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备回应相应的功能代码和数据地址或子功能码。对异议回应,从设备返回一等同于正常代码的代码,但最首的位置为逻辑1。

例如:一主设备发往从设备的消息要求读一组变频器功能码地址数据,将产生如下功能代码:

0 0 0 0 0 0 1 1 (十六进制03H)

对正常回应,从设备回应同样的功能码。对异议回应,它返回:

1 0 0 0 0 0 1 1 (十六进制83H)

除功能代码因异议错误作了修改外,从设备将回应一字节异常码,这定义了产生异常的原因。

主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者针对相应的故障进行命令更改。

表8.2 错误代码的含义

代码

名称

含义

01H

非法命令

当从上位机接收到的命令码是不允许的操作,这也许是因为功能码仅仅适用于新设备,而在此设备中没有实现;同时,也可能从机在错误状态中处理这种请求。

02H

非法数据地址

对变频器来说,上位机的请求数据地址是不允许的地址;特别是,寄存器地址和传输的字节数组合是无效的。

03H

非法数据值

当接收到的数据域中包含的是不允许的值。这个值指示了组合请求中剩余结构上的错误。注意:它决不意味着寄存器中被提交存储的数据项有一个应用程序期望之外的值。

04H

操作失败

参数写操作中对该参数设置为无效设置,例如功能输入端子不能重复设置等。

05H

密码错误

密码效验地址写入的密码与P7.00用户设置的密码不同

06H

数据帧错误

当上位机发送的帧信息中,数据帧的长度不正确或,RTU格式CRC校验位与下位机的校验计算数不同时。

07H

参数为只读

上位机写操作中更改的参数为只读参数

08H

参数运行中不可改

上位机写操作中更改的参数为运行中不可更改的参数

09H

密码保护

上位机进行读或写时,当设置了用户密码,又没有进行密码锁定开锁,将报系统被锁定。


上一章节 下一章节