09-00 a通讯地址设定范围 01~254 出厂设定值:01当系统使用 RS-485 串联通讯介面控制或监控时,每一台驱动器必须设定其通讯地址且每一个连结网中每个地址均为””不可重复。
09-01 a通讯传送速度 Baud Rate
出厂设定值:01
设定范围 00 Baud rate 4800(传输速度,位元∕秒)
01 Baud rate 9600(传输速度,位元∕秒)
02 Baud rate 19200(传输速度,位元∕秒)
03 Bard rate 38400(传输速度,位元∕秒)
09-02 a通讯错误处理
出厂设定值:03
设定范围 00 警告并继续运转
01 警告并减速停车
02 警告并自由停车
03 不警告并继续运转
09-03 a通讯超时(time-out)检出 单位:0.1
出厂设定值:0.0
设定范围 0.0~60.0 秒
0.0 无传输超时检出
09-04 a通讯资料格式
出厂设定值:00
设定范围 00 7,N,2 for ASCII
01 7,E,1 for ASCII
02 7,0,1 for ASCII
03 8,N,2 for RTU
04 8,E,1 for RTU
05 8,O,1 for RTU
电脑控制 Computer Link使用 RS-485 串联通讯介面时,每一台 VFD-B 必须预先在参数 09-00 指定其通讯地址,电脑便根据其个别的地址实施控制
VFD-B 系列交流电机驱动器使用 Modbus networks 通讯协议。而 Modbus 可使用 ASCII (AmericanStandard Code for Information Interchange)或 RTU(Remote Terminal Unit)两种资料编码。ASCII编码是将所要传送的资料先转换成相对的 ASCII 码后再传送,而 RTU 则是资料直接传送,不再经过转换。以下说明 ASCII 资料格式的编码方式。
每 byte 是由 2 个 ASCII 字符组合而成。例如:数值是 64 Hex,ASCII 的表示方式为‘64’,分别由‘6’(36Hex)、‘4’(34Hex)组合而成。下表为 ASCII 字符‘0’…‘9’,‘A’…‘F’ 的对照表。字符 ‘0’ ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ ‘7’ASCII code 30H 31H 32H 33H 34H 35H 36H 37H字符 ‘8’ ‘9’ ‘A’ ‘B’ ‘C’ ‘D’ ‘E’ ‘F’ASCII code 38H 39H 41H 42H 43H 44H 45H 46H
通信地址(Address)
00H:所有驱动器广播(Broadcast)
01H:对第 01 地址驱动器
0FH:对第 15 地址驱动器
10H:对第 16 地址驱动器,以此类推﹒﹒﹒﹒﹒﹒,可到 254( FEH)。
功能码(Function)与资料内容(Data Characters)
03H:读出寄存器内容
06H:写入一笔资料至寄存器
08H:回路侦测
10H:写入多笔资料至寄存器
功能码 03H:读出寄存器内容(最多可同时读取连续的 20 笔资料)
例如:对驱动器地址 01H,读出 2 个连续于寄存器内的资料内容如下表示:起始寄存器地址 2102H
检查码由 Address 到 Data content 结束。其运算规则如下:
步骤 1:令 16-bit 寄存器 (CRC 寄存器) = FFFFH.
步骤 2:Exclusive OR 第一个 8-bit byte 的讯息指令与低位元 16-bit CRC 寄存器, 做 Exclusive OR ,将
结果存入 CRC 寄存器内。
步骤 3:右移一位 CRC 寄存器,将 0 填入高位元处。
步骤 4:检查右移的值,如果是 0, 将步骤 3 的新值存入 CRC 寄存器内, 否则 Exclusive OR A001H 与
CRC 寄存器,将结果存入 CRC 寄存器内。
步骤 5:重复步骤 3~步骤 4,将 8-bit 全部运算完成。
步骤 6:重复步骤 2~步骤 5,取下一个 8-bit 的讯息指令,直到所有讯息指令运算完成。最后,得到的 CRC
寄存器的值,即是 CRC 的检查码。值得注意的是 CRC 的检查码必须交换放置于讯息指令的检查
码中。
以下为用C语言所写的 CRC 检查码运算范例:
unsigned char* data ? // 讯息指令指标
unsigned char length ? // 讯息指令的长度
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 reg_crc;// 最后回传 CRC 寄存器的值