10.3.1. 网络拓扑
图10.1 网络拓扑
10.3.2. RTU模式
10.3.2.1. RTU通讯帧结构
当控制器设为在Modbus 网络上以RTU模式通讯,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。
代码系统
1个起始位。
7或8个数据位,最小的有效位先发送。8位二进制,每个8位的帧域中,包括两个十六进制字符(0...9,A...F)。
1个奇偶校验位,无校验则无。
1个停止位(有校验时),2个Bit(无校验时)。
错误检测域
CRC(循环冗长检测)。
数据格式的描述如下表:
11-bit字符帧(BIT1~BIT8为数据位):
起始位 | B I T 1 | B I T 2 | B I T 3 | B I T 4 | B I T 5 | B I T 6 | B I T 7 | B I T 8 | 校验位 | 停止位 |
10-bit字符帧(BIT1~BIT7为数据位):
起始位 | B I T 1 | B I T 2 | B I T 3 | B I T 4 | B I T 5 | B I T 6 | B I T 7 | 校验位 | 停止位 |
一个字符帧中,真正起作用的是数据位。起始位、检验位和停止位的加入只是为了将数据位正确地传输到对方设备。在实际应用时一定要将数据位,、奇偶校验、停止位设为一致。
在RTU模式中,新帧总是以至少3.5个字节的传输时间静默作为开始。在以波特率计算传输速率的网络上,3.5个字节的传输时间可以轻松把握。紧接着传输的数据域依次为:从机地址、操作命令码、数据和CRC校验字,每个域传输字节都是十六进制的0...9,A...F。网络设备始终监视着通讯总线的活动。当接收到第一个域(地址信息),每个网络设备都对该字节进行确认。随着最后一个字节的传输完成,又有一段类似的3.5个字节的传输时间间隔,用来表识本帧的结束,在此以后,将开始一个新帧的传送。
一个帧的信息必须以一个连续的数据流进行传输,如果整个帧传输结束前有超过1.5个字节以上的间隔时间,接收设备将清除这些不完整的信息,并错误认为随后一个字节是新一帧的地址域部分,同样的,如果一个新帧的开始与前一个帧的间隔时间小于3.5个字节时间,接收设备将认为它是前一帧的继续,由于帧的错乱,最终CRC校验值不正确,导致通讯故障。
RTU帧的标准结构:
帧头START | T1-T2-T3-T4(3.5个字节的传输时间) |
从机地址域ADDR | 通讯地址:0~247(十进制)(0为广播地址) |
功能域CMD | 03H:读从机参数; 06H:写从机参数 |
数据域 DATA(N-1) … DATA(0) | 2*N个字节的数据,该部分为通讯的主要内容, 也是通讯中,数据交换的核心。 |
CRC CHK 低位 | 检测值:CRC校验值(16BIT) |
CRC CHK 高位 | |
帧尾END | T1-T2-T3-T4(3.5个字节的传输时间) |
10.3.2.2. RTU通讯帧错误校验方式
数据在传输的过程中,有时因为各种因素使数据发生了错误。如果没有校验,接收数据的设备就不知道信息是错误的,这时它可能做出错误的响应。这个错误的响应可能会导致严重的后果,所以信息必须要有校验。
校验的思路是,发送方将发送的数据按照一种固定的算法算出一个结果,并将这个结果加在信息的后面一起发送。接收方在收到信息后,根据那种算法将数据算出一个结果,再将这个结果和发送方发来的结果比较。如果比较结果相同,证明这信息是正确的,否则认为信息是错误的。
帧的错误校验方式主要包括两个部分的校验,即单字节的位校验(奇/偶校验,也即字符帧中的校验位)和帧的整个数据校验(CRC校验)。
字节位校验(奇偶校验)
用户可以根据需要选择不同的位校验方式,也可以选择无校验,这将影响每个字节的校验位设置。
偶校验的含义:在数据传输前附加一位偶校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为偶数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。
奇校验的含义:在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。
例如,需要传输数据位为"11001110",数据中含5个"1",如果用偶校验,其偶校验位为"1",如果用奇校验,其奇校验位为"0",传输数据时,奇偶校验位经过计算放在帧的校验位的位置,接收设备也要进行奇偶校验,如果发现接受的数据的奇偶性与预置的不一致,就认为通讯发生了错误。
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空间较大,对程序空间有要求的场合,请谨慎使用。
10.3.3. RTU命令码及通讯数据描述
10.3.3.1. 命令码:03H,读取N个字(最多可以连续读取16个字)
命令码03H表示主机向变频器读取数据,要读取多少个数据由命令中“数据个数”而定,最多可以读取16个数据。读取的参数地址必须是连续的。每个数据占用的字节长度为2字节,也即一个字(word)。以下命令格式均以16进制表示(数字后跟一个“H”表示16进制数字),一个16进制占用一个字节。
该命令的作用是读取变频器的参数及工作状态等。
例如:从地址为01H的变频器,从数据地址为0004H开始,读取连续的2个数据内容(也就是读取数据地址为0004H和0005H的内容),则该帧的结构描述如下:
RTU主机命令信息(主机发送给变频器的命令):
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR(地址) | 01H |
CMD(命令码) | 03H |
起始地址高位 | 00H |
起始地址低位 | 04H |
数据个数高位 | 00H |
数据个数低位 | 02H |
CRC低位 | 85H |
CRC高位 | CAH |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
START和END中T1-T2-T3-T4(3.5个字节的传输时间)是指让RS485最少保持3.5个字节的传输时间为空闲。这使两条信息之间有一定的空闲时间,来区分两条信息,保证不会让设备误将两条信息当作一条信息。
ADDR为01H表示该命令信息是向地址为01H的变频器发送的信息,ADDR占用一个字节;
CMD为03H表示该命令信息是向变频器读取数据,CMD占用一个字节;
“起始地址”表示从该地址开始读取数据。“起始地址”占两个字节,高位在前低位在后。
“数据个数”表示读取的数据的个数,单位为字。“起始地址”为0004H,“数据个数”为0002H,表示读取0004H和0005H这两个地址的数据。
CRC检验占两个字节,低位在前,高位在后。
RTU从机回应信息(变频器发送给主机的信息):
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 01H |
CMD | 03H |
字节个数 | 04H |
地址0004H数据高位 | 13H |
地址0004H数据低位 | 88H |
地址0005H数据高位 | 00H |
地址0005H数据低位 | 00H |
CRC低位 | 7EH |
CRC高位 | 9DH |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
回应信息的含义为:
ADDR为01H表示该信息是由地址为01H的变频器发送过来的信息,ADDR占用一个字节;
CMD为03H表示该信息是变频器响应主机读取命令(03H)而发给主机的信息,CMD占用一个字节;
“字节个数”表示从该字节开始(不包含)到CRC字节为止(不包含)的所有字节数。这里为04表示从“字节个数”到“CRC低位”之间有4个字节的数据,也即“地址0004H数据高位”、“地址0004H数据低位”、“地址0005H数据高位”、“地址0005H数据低位”这四个字节;
一个数据所存储的数据为两个字节,高位在前,低位在后。从信息中可以看出数据地址为0004H中的数据为1388H,数据地址为0005H中的数据为0000H。
CRC检验占两个字节,低位在前,高位在后。
10.3.3.2. 命令码:06H,写一个字
该命令表示主机向变频器写数据,一条命令只能写一个数据,不能写多个数据。它的作用是改变变频器的参数及工作方式等。
例如:将5000(1388H)写到从机地址02H变频器的0004H地址处。则该帧的结构描述如下:
RTU主机命令信息(主机发送给变频器的命令):
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 02H |
CMD | 06H |
写数据地址高位 | 00H |
写数据地址低位 | 04H |
数据内容高位 | 13H |
数据内容低位 | 88H |
CRC低位 | C5H |
CRC高位 | 6EH |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
RTU从机回应信息(变频器发送给主机的信息):
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 02H |
CMD | 06H |
写数据地址高位 | 00H |
写数据地址低位 | 04H |
数据内容高位 | 13H |
数据内容低位 | 88H |
CRC低位 | C5H |
CRC高位 | 6EH |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
注:在10.3.3节和10.3.4节主要介绍命令的格式,具体的用法将在10.3.7节以举例说明。
10.3.3.3. 命令码:08H,诊断功能
子功能码的意义:
子功能码 | 说明 |
0000 | 返回询问讯息数据 |
例如:对驱动器地址01H做回路侦测询问讯息字串内容与回应讯息字串内容相同,其格式如下:
RTU主机命令信息:
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 01H |
CMD | 08H |
子功能码高位 | 00H |
子功能码低位 | 00H |
数据内容高位 | 12H |
数据内容低位 | ABH |
CRC CHK 低位 | ADH |
CRC CHK 高位 | 14H |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
RTU从机回应信息:
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 01H |
CMD | 08H |
子功能码高位 | 00H |
子功能码低位 | 00H |
数据内容高位 | 12H |
数据内容低位 | ABH |
CRC CHK 低位 | ADH |
CRC CHK 高位 | 14H |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
10.3.3.4. 命令码:10H,连写功能
命令码10H表示主机向变频器写数据,要写多少个数据由命令“数据个数”而定,最多可以连写16个数据。
例如:将5000(1388H)写到从机地址02H变频器的0004H、50(0032H)写到从机地址02H变频器的0005H地址处。则该帧的结构描述如下:
RTU主机命令信息(主机发送给变频器的命令):
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 02H |
CMD | 10H |
写数据地址高位 | 00H |
写数据地址低位 | 04H |
数据个数高位 | 00H |
数据个数低位 | 02H |
字节数 | 04H |
数据0004H内容高位 | 13H |
数据0004H内容低位 | 88H |
数据0005H内容高位 | 00H |
数据0005H内容低位 | 32H |
CRC低位 | C5H |
CRC高位 | 6EH |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
RTU从机回应信息(变频器发送给主机的信息):
START | T1-T2-T3-T4(3.5个字节的传输时间) |
ADDR | 02H |
CMD | 10H |
写数据地址高位 | 00H |
写数据地址低位 | 04H |
数据个数高位 | 00H |
数据个数低位 | 02H |
CRC低位 | C5H |
CRC高位 | 6EH |
END | T1-T2-T3-T4(3.5个字节的传输时间) |
10.3.4. 数据地址的定义
该部分是通讯数据的地址定义,用于控制变频器的运行、获取变频器状态信息及变频器相关功能参数设定等。
10.3.4.1. 功能码地址表示规则
功能码地址占两个字节,高位在前,低位在后。高、低字节的范围分别为:高位字节—00~ffH;低位字节—00~ffH。高字节为功能码点号前的组号,低字节为功能码点号后的数字,但都要转换成十六进制。如P05.02,功能码点号前的组号为05,则参数地址高位为05,功能码点号后的数字为02,则参数地址低位为02,用十六进制表示该功能码地址为0502H。再比如功能码为P10.01的参数地址为0A01H。
功能码 | 名称 | 参数详细说明 | 缺省值 |
P10.00 | 简易PLC方式 | 0:运行一次后停机 1:运行一次后保持最终值运行 2:循环运行 | 0 |
简易PLC记忆选择 | 0:掉电不记忆 1:掉电记忆 | 0 |
注意:
P99组为厂家设定参数,既不可读取该组参数,也不可更改该组参数;有些参数在变频器处于运行状态时,不可更改;有些参数不论变频器处于何种状态,均不可更改;更改功能码参数,还要注意参数的设定范围、单位及相关说明。
由于EEPROM频繁被存储,会减少EEPROM的使用寿命。对于用户而言,有些功能码在通讯的模式下,无需存储,只需更改片内RAM中的值就可以满足使用要求。要实现该功能,只要把对应的功能码地址最高位由0变成1就可以实现。如:功能码P00.07不存储到EEPROM中,只修改RAM中的值,可将地址设置为8007H。该地址只能用作写片内RAM时使用,不能用做读的功能,如做读为无效地址。
10.3.4.2. Modbus其他功能的地址说明
主机除了可以对变频器的参数进行操作之外,还可以控制变频器,比如运行、停机等,还可以监视变频器的工作状态。下表为其他功能的参数表:
功能说明 | 地址定义 | 数据意义说明 | R/W特性 | |
通讯控制命令 | 2000H | 0001H:正转运行 | R/W | |
0002H:反转运行 | ||||
0003H:正转点动 | ||||
0004H:反转点动 | ||||
0005H:停机 | ||||
0006H:自由停机(紧急停机) | ||||
0007H:故障复位 | ||||
0008H:点动停止 | ||||
通讯设定值地址 | 2001H | 通讯设定频率(0~Fmax(单位:0.01Hz)) | R/W | |
2002H | PID给定,范围(0~1000,1000对应100.0%) | |||
2003H | PID反馈,范围(0~1000,1000对应100.0%) | R/W | ||
2004H | 转矩设定值(-3000~3000,1000对应100.0%电机额定电流) | R/W | ||
2005H | 正转上限频率设定值(0~Fmax(单位:0.01Hz)) | R/W | ||
2006H | 反转上限频率设定值(0~Fmax(单位:0.01Hz)) | R/W | ||
2007H | 电动转矩上限转矩(0~3000,1000对应100.0%变频器额定电流) | R/W | ||
2008H | 制动转矩上限转矩(0~3000,1000对应100.0%电机额定电流) | R/W | ||
2009H | 特殊控制命令字: Bit1~0:=00:电机1 =01:电机2 Bit2:=1 速度/转矩控制模式切换使能 =0:不使能 Bit3:=1 用电量清零 =0:用电量不清零 Bit4:=1 预励磁 =0:预励磁禁止 Bit5:=1 直流制动 =0:直流制动禁止 | R/W | ||
200AH | 虚拟输入端子命令,范围:0x000~0x3FF (依次对应S8\S7\S6\S5\保留\保留\S4\S3\S2\S1 | R/W | ||
200BH | 虚拟输出端子命令,范围:0x00~0x0F (依次对应RO2\RO1\保留\Y1) | R/W | ||
200CH | 电压设定值(V/F分离专用) (0~1000,1000对应100.0%电机额定电压) | R/W | ||
200DH | AO 输出设定值1(-1000~1000,1000对应100.0%) | R/W | ||
200EH | AO 输出设定值2(-1000~1000,1000对应100.0%) | R/W | ||
变频器状态字1 | 2100H | 0001H:正转运行中 | R | |
0002H:反转运行中 | ||||
0003H:变频器停机中 | ||||
0004H:变频器故障中 | ||||
0005H:变频器POFF状态 | ||||
0006H:变频器预励磁状态 | ||||
变频器状态字2 | 2101H | Bit0: =0:运行准备维就绪 =1:运行准备就绪 Bit2~1:=00:电机1 =01:电机2 Bit3: =0:异步机 =1:同步机 Bit4:=0:未过载预报警 =1:过载预报警 Bit6~ Bit5:=00:键盘控制 =01:端子控制 =10:通讯控制 Bit7:保留 Bit8:=0:速度控制 =1:转矩控制 Bit9:=0:非位置控制 =1:位置控制 Bit11~10:=0:矢量0 =1:矢量1 =2:闭环矢量 =3:空间电压矢量 | R | |
变频器故障代码 | 2102H | 见故障类型说明 | R | |
变频器识别代码 | 2103H | GD35-----0x0109 | R | |
运行频率 | 3000H | 0~Fmax(单位:0.01Hz) | 兼容CHF100A、CHV100通讯地址 | R |
设定频率 | 3001H | 0~Fmax(单位:0.01Hz) | R | |
母线电压 | 3002H | 0.0~2000.0V(单位:0.1V) | R | |
输出电压 | 3003H | 0~1200V(单位:1V) | R | |
输出电流 | 3004H | 0.0~3000.0A(单位:0.1A) | R | |
运行转速 | 3005H | 0~65535(单位:1RPM) | R | |
输出功率 | 3006H | -300.0~300.0%(单位:0.1%) | R | |
输出转矩 | 3007H | -250.0~250.0%(单位:0.1%) | R | |
闭环设定 | 3008H | -100.0~100.0%(单位:0.1%) | R | |
闭环反馈 | 3009H | -100.0~100.0%(单位:0.1%) | R | |
输入状态 | 300AH | 000~1FF | R | |
输出状态 | 300BH | 000~1FF | R | |
模拟量输入1 | 300CH | 0.00~10.00V(单位:0.01V) | R | |
模拟量输入2 | 300DH | 0.00~10.00V(单位:0.01V) | R | |
模拟量输入3 | 300EH | -10.00~10.00V(单位:0.01V) | R | |
模拟量输入4 | 300FH | / | R | |
读高速脉冲1输入 | 3010H | 0.00~50.00kHz(单位:0.01Hz) | R | |
读高速脉冲2输入 | 3011H | / | R | |
读多段速当前段数 | 3012H | 0~15 | R | |
外部长度值 | 3013H | 0~65535 | R | |
外部计数值 | 3014H | 0~65535 | R | |
转矩设定值 | 3015H | -300.0~300.0%(单位:0.1%) | R | |
变频器识别代码 | 3016H | / | R | |
故障代码 | 5000H | / | R |
R/W特性表示该功能是读/写特性,比如“通讯控制命令”为写特性,用写命令(06H)对变频器进行控制。R特性只能读不能写,W特性只能写不能读。
注意:利用上表对变频器进行操作时,有些参数必须使能才能起作用。比如用运行和停机操作,必须将“运行指令通道”(P00.01)设为“通讯运行指令通道”,同时还要将“通讯运行指令通道选择”(P00.02)设为“Modbus通讯通道”;再比如对“PID给定”操作时,要将“PID给定源选择”(P09.00)设为“Modbus通讯设定”。
设备代码的编码规则表(对应变频器识别代码2103H)
代码高8位 | 表示意义 | 代码低8位 | 表示意义 |
01 | GD | 0x08 | GD35矢量变频器 |
0x09 | GD35-H1矢量变频器 | ||
0x0a | GD300矢量变频器 | ||
0xa0 | GD350矢量变频器 |
10.3.5. 现场总线比例值
在实际的运用中,通讯数据是用十六进制表示的,而16进制无法表示小数点。比如50.12Hz,这用十六进制无法表示,我们可以将50.12放大100倍变为整数(5012),这样就可以用十六进制的1394H(即十进制的5012)表示50.12了。
将一个非整数乘以一个倍数得到一个整数,这个倍数称为现场总线比例值。
现场总线比例值是以功能参数表里“设定范围”或者“缺省值”里的数值的小数点为参考依据的。如果小数点后有n位小数(例如n=1),则现场总线比例值m为10的n次方(m=10)。以下图为例:
功能码 | 名称 | 参数详细说明 | 缺省值 |
P01.20 | 休眠恢复延时时间 | 0.0~3600.0s(对应P01.19为2有效) | 0.0s |
P01.21 | 停电再起动选择 | 0:禁止再起动 1:允许再起动 | 0 |
“设定范围”或者“缺省值”有一位小数,则现场总线比例值为10。如果上位机收到的数值为50,则变频器的“休眠恢复延时时间”为5.0(5.0=50÷10)。
如果用Modbus通讯控制休眠恢复延时时间为5.0s。首先将5.0按比例放大10倍变成整数50,也即32H。然后发送写指令:
变频器在收到该指令之后,按照现场总线比例值约定将50变成5.0,再将休眠恢复延时时间设置为5.0s。
再比如,上位机在发完读“休眠恢复延时时间”参数指令之后,主机收到变频器的回应信息如下:
因为参数数据为0032H,也即50,将50按比例约定除以10变成5.0。这时主机就知道休眠恢复延时时间为5.0s。
10.3.6. 错误消息回应
在通讯控制中难免会有操作错误,比如有些参数只能读不能写,结果发送了一条写指令,这时变频器将会发回一条错误消息回应信息。
错误消息回应是变频器发给主机的,它的代码和含义如下表:
代码 | 名称 | 含义 |
01H | 非法命令 | 当从上位机接收到的命令码是不允许的操作,这也许是因为功能码仅仅适用于新设备,而在此设备中没有实现;同时,也可能从机在错误状态中处理这种请求。 |
02H | 非法数据 地址 | 对变频器来说,上位机的请求数据地址是不允许的地址;特别是,寄存器地址和传输的字节数组合是无效的。 |
03H | 非法数据值 | 当接收到的数据域中包含的是不允许的值。这个值指示了组合请求中剩余结构上的错误。注意:它决不意味着寄存器中被提交存储的数据项有一个应用程序期望之外的值。 |
04H | 操作失败 | 参数写操作中对该参数设置为无效设置,例如功能输入端子不能重复设置等。 |
05H | 密码错误 | 密码效验地址写入的密码与P7.00用户设置的密码不同 |
06H | 数据帧错误 | 当上位机发送的帧信息中,数据帧的长度不正确或,RTU格式CRC校验位与下位机的校验计算数不同时。 |
07H | 参数为只读 | 上位机写操作中更改的参数为只读参数 |
08H | 参数运行中不可改 | 上位机写操作中更改的参数为运行中不可更改的参数 |
09H | 密码保护 | 上位机进行读或写时,当设置了用户密码,又没有进行密码锁定开锁,将报系统被锁定。 |
当从设备回应时,它使用功能代码域与故障地址来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备回应相应的功能代码和数据地址或子功能码。对异议回应,从设备返回一等同于正常代码的代码,但最首的位置为逻辑1。
例如:一主设备发往从设备的消息要求读一组变频器功能码地址数据,将产生如下功能代码:
0 0 0 0 0 0 1 1 (十六进制03H)
对正常回应,从设备回应同样的功能码。对异议回应,它返回:
1 0 0 0 0 0 1 1 (十六进制83H)
除功能代码因异议错误作了修改外,从设备将回应一字节异常码,这定义了产生异常的原因。主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者针对相应的故障进行命令更改。
比如,将地址为01H的变频器的“运行指令通道”(P00.01,参数地址为0001H)设为03,指令如下:
但是“运行指令通道”的设定范围只为0~2,设置为3就超出了范围,这时变频器将会返回错误消息回应信息。回应信息如下:
异常回应码86H(由06H最高位置“1”而成)表示为写指令(06H)的异常回应;错误代码04H,从上表中可以看出,它的名称为“操作失败”,含义是“参数写操作中对该参数设置为无效设置”。
10.3.7. 读写操作举例
读写指令格式参见10.3.3.1和10.3.3.2节。
10.3.7.1. 读指令03H举例
例1:读取地址为01H的变频器的状态字1。从“其他功能的参数表”中可知,变频器状态字1的参数地址为2100H。
给变频器发送的读命令:
假设回应信息如下:
变频器返回的数据内容为0003H,从表中可知变频器处于停机中。
例2:通过指令查看地址为03H的变频器的“当前故障类型”到“前5次故障类型”,对应的功能码为P07.27~P07.32,对应的参数地址为071BH~0720H(从071BH起连续6个)。
给变频器发送的命令为:
假设回应信息如下:
从返回的数据来看,所有的故障类型都是0023H,也就是十进制的35,含义为失调故障(STo)。
10.3.7.2. 写指令06H举例
例1:将地址为03H的变频器正转运行。参见“其他功能的参数表”,“通讯控制命令”的地址为2000H,正转运行为0001。见下图。
功能说明 | 地址定义 | 数据意义说明 | R/W特性 |
通讯控制命令 | 2000H | 0001H:正转运行 | R/W |
0002H:反转运行 | |||
0003H:正转点动 | |||
0004H:反转点动 | |||
0005H:停机 | |||
0006H:自由停机(紧急停机) | |||
0007H:故障复位 | |||
0008H:点动停止 |
主机发送的命令为:
如果操作成功,返回的回应信息如下(和主机发送的命令一样):
例2:将地址为03H的变频器的“最大输出频率”设为100Hz。
功能码 | 名称 | 参数详细说明 | 缺省值 |
P00.03 | 最大输出频率 | P00.04~400.00Hz | 50.00Hz |
由小数点位数来看,“最大输出频率”(P00.03)现场总线比例值为100。将100Hz乘上比例值100得
10000,对应的十六进制为2710H。
主机发送的命令为:
如果操作成功,返回的回应信息如下(和主机发送的命令一样):
注意:上述指令中加空格只是便于说明,在实际运用中不要在指令中加空格。
10.3.7.3. 连写指令10H举例
例1:将地址为01H的变频器正转运行10Hz,见“其他功能的参数表” “通讯控制命令”地址为2000H,正转运行为0001。“通讯设定频率”地址为2001H,10Hz对应的十六进制为03E8H,见下表:
功能说明 | 地址定义 | 数据意义说明 | R/W特性 |
通讯控制命令 | 2000H | 0001H:正转运行 | R/W |
0002H:反转运行 | |||
0003H:正转点动 | |||
0004H:反转点动 | |||
0005H:停机 | |||
0006H:自由停机(紧急停机) | |||
0007H:故障复位 | |||
0008H:点动停止 | |||
通讯设定值地址 | 2001H | 通讯设定频率(0~Fmax(单位:0.01Hz)) | R/W |
2002H | PID给定,范围(0~1000,1000对应100.0%) |
具体操作为设置P00.01为2,P00.06为8。
主机发送的命令为:
如果操作成功,返回的回应信息如下:
例2:将地址为01H的变频器的“加速时间”设为10s,减速时间设为20s。
功能码 | 名称 | 参数详细说明 | 缺省值 |
P00.11 | 加速时间1 | 0.0~3600.0s | 机型确定 |
P00.12 | 减速时间1 | 0.0~3600.0s | 机型确定 |
P00.11对应的参数地址为000B,加速时间10s对应的十六进制为0064H,减速时间20s对应的十六进制为00C8H
主机发送的命令为:
如果操作成功,返回的回应信息如下:
注意:上述指令中加空格只是便于说明,在实际运用中不要在指令中加空格。
10.3.7.4. Modbus通讯调试举例
主机为PC机,用RS232-RS485转换器进行信号转换,转换器所使用PC的串口为COM1(RS232端口)。上位机调试软件为串口调试助手,该软件可以在网上搜索下载,下载时尽量找带自动加CRC校验功能的。下图为所使用的串口调试助手的界面。
首先将“串口”选择COM1。波特率要与P14.01设置一致。数据位、校验位、停止位一定要与P14.02中设置的一致。因为使用的是RTU模式,所以选择十六进制的“HEX”。要软件自动加上CRC,一定要选上,并且选择CRC16(ModbusRTU),起始字节为1。一旦使能了自动加CRC校验,在填指令时就不要再填CRC了,否则会重复而导致指令错误。
调试指令为将地址为03H的变频器正转运行(10.4.7例1),即指令:
注意:
1、变频器地址(P14.00)一定设为03;
2、将“运行指令通道”(P00.01)设为“通讯运行指令通道”,同时还要将“通讯运行指令通道选择”(P00.02)设为“Modbus通讯通道”;
3、点击发送,如果线路和设置都正确,会收到变频器发过来的回应信息。
10.3.8. 相关参数
表 10.3逆变单元相关参数
功能码 | 名称 | 参数详细说明 | 缺省值 |
P14.00 | 本机通讯地址 | 1~247 | 1 |
P14.01 | 通讯波特率设置 | 0:1200BPS 1:2400BPS 2:4800BPS 3:9600BPS 4:19200BPS 5:38400BPS 6:57600BPS 7:115200BPS | 4 |
P14.02 | 数据位校验设置 | 0:无校验(N,8,1)for RTU 1:偶校验(E,8,1)for RTU 2:奇校验(O,8,1)for RTU 3:无校验(N,8,2)for RTU 4:偶校验(E,8,2)for RTU 5:奇校验(O,8,2)for RTU | 1 |
P14.03 | 通讯应答延时 | 0~200ms | 5 |
P14.04 | 通讯超时故障时间 | 0.0(无效),0.1~60.0s | 0.0s |
P14.05 | 传输错误处理 | 0:报警并自由停车 1:不报警并继续运行 2:不报警按停机方式停机(仅通讯控制方式下) 3:不报警按停机方式停机(所有控制方式下) | 0 |
P14.06 | 通讯处理动作选择 | 0x00~0x11 LED个位: 0:写操作有回应 1:写操作无回应 LED十位: 0:通讯密码保护无效 1:通讯密码保护有效 | 0x00 |
表10.4 整流单元相关参数
功能码 | 名称 | 参数详细说明 | 缺省值 |
P20.00 | 本机通讯地址 | 1~247 | 1 |
P20.01 | 通讯波特率设置 | 0:1200BPS 1:2400BPS 2:4800BPS 3:9600BPS 4:19200BPS 5:38400BPS 6:57600BPS 7:115200BPS | 4 |
P20.02 | 数据位校验设置 | 0:无校验(N,8,1)for RTU 1:偶校验(E,8,1)for RTU 2:奇校验(O,8,1)for RTU 3:无校验(N,8,2)for RTU 4:偶校验(E,8,2)for RTU 5:奇校验(O,8,2)for RTU | 1 |
P20.03 | 通讯应答延时 | 0~200ms | 5 |
P20.04 | 通讯超时故障时间 | 0.0(无效),0.1~60.0s | 0.0s |
P20.05 | 传输错误处理 | 0:报警并自由停车 1:不报警并继续运行 2:不报警按停机方式停机(仅通讯控制方式下) 3:不报警按停机方式停机(所有控制方式下) | 0 |
P20.06 | 通讯处理动作选择 | 0x00~0x11 LED个位: 0:写操作有回应 1:写操作无回应 LED十位: 0:通讯密码保护无效 1:通讯密码保护有效 | 0x00 |