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时有返回