CHE系列变频器,提供RS485通信接口,采用国际标准的ModBus通讯协议进行的主从通讯。用户可通过PC/PLC、控制上位机等实现集中控制(设定变频器控制命令、运行频率、相关功能码参数的修改,变频器工作状态及故障信息的监控等),以适应特定的应用要求。 11.1 协议内容
该Modbus串行通信协议定义了串行通信中异步传输的帧内容及使用格式。其中包括:主机轮询及广播帧、从机应答帧的格式;主机组织的帧内容包括:从机地址(或广播地址)、执行命令、数据和错误校验等。从机的响应也是采用相同的结构,内容包括:动作确认,返回数据和错误校验等。如果从机在接收帧时发生错误,或不能完成主机要求的动作,她将组织一个故障帧作为响应反馈给主机。 11.2 应用方式
CHE系列变频器接入具备RS232/RS485总线的“单主多从”控制网络。 11.3 总线结构
(1)接口方式 RS485硬件接口 (2)传输方式
异步串行,半双工传输方式。在同一时刻主机和从机只能有一个发送数据而另一个接收数据。数据在串行异步通信过程中,是以报文的形式,一帧一帧发送。
(3)拓扑结构
单主机多从机系统。从机地址的设定范围为1~247,0为广播通信地址。网络中的每个从机的地址具有唯一性。这是保证ModBus串行通讯的基础。 11.4 协议说明
CHE系列变频器通信协议是一种异步串行的主从ModBus通信协议,网络中只有一个设备(主机)能够建立协议(称为“查询/命令”)。其他设备(从机)只能通过提供数据响应主机的“查询/命令”,或根据主机的“查询/命令”做出相应的动作。主机在此是指个人计算机(PC),工业控制设备或可编程逻辑控制器(PLC)等,从机是指CHE系列变频器或其他的具有相同通讯协议的控制设备。主机既能对某个从机单独进行通信,也能对所有从机发布广播信息。对于单独访问的主机“查询/命令”,从机都要返回一个信息(称为响应),对于主机发出的广播信息,从机无需反馈响应信息给主机。
.1.
11.5 通讯帧结构
CHE系列变频器的ModBus协议通信数据格式为RTU(远程终端单元)模式进行通讯,RTU模式中,每个字节的格式如下:
编码系统:8位二进制,
十六进制0~9、A~F,
每个8位的帧域中,包含两个十六进制字符。
字节的位:
包括起始位、8个数据位、校验位和停止位。
字节位的描述如下表:
起始Bit1 位 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 无校验位 偶校验位 奇校验位 停止位 在RTU模式中,新的帧总是以至少3.5个字节的传输时间静默,作为开始。在以波特率计算传输速率的网络上,3.5个字节的传输时间可以轻松把握。紧接着传输的数据域依次为:从机地址、操作命令码、数据和CRC校验字,每个域传输字节都是十六进制的0...9,A...F。网络设备始终监视着通讯总线的活动,即使在静默间隔时间内。当接收到第一个域(地址信息),每个网络设备都对该字节进行确认。随着最后一个字节的传输完成,又有一段类似的3.5个字节的传输时间间隔,用来表识本帧的结束,在此以后,将开始一个新帧的传送。
一个帧的信息必须以一个连续的数据流进行传输,如果整个帧传输结束前超过1.5个字节以上的间隔时间,接收设备将清除这些不完整的信息,并错误认为随后一个字节是新一帧的地址域部分,同样的,如果一个新帧的开始与前一个帧的间隔时间小于3.5个字节时间,接收设备将认为它是前一帧的继续,由于帧的错乱,最终CRC校验值不正确,导致通讯故障。 RTU帧的标准结构:
帧头START 从机地址域ADDR 功能域CMD 数据域 DATA(N-1) … DATA(0) T1-T2-T3-T4(3.5个字节的传输时间) 通讯地址: 0~247(十进制)(0为广播地址) 03H:读从机参数; 06H:写从机参数 2*N个字节的数据,该部分为通讯的主要内容,也是通讯中,数据交换的核心。 .2.
CRC CHK 低位 检测值:CRC校验值(16BIT) CRC CHK 高位 帧尾END T1-T2-T3-T4(3.5个字节的传输时间) 11.6 命令码及通讯数据描述
11.6.1命令码:03H(0000 0011),读取N个字(Word)(最多可以连续读取16个字)
例如:从机地址为01H的变频器、内存启始地址为0004,读取连续2个字,则该帧的结构描述如下:
主机命令信息
START ADDR CMD 启始地址高位 启始地址低位 数据个数高位 数据个数低位 CRC CHK 低位 CRC CHK 高位 END T1-T2-T3-T4(3.5个字节的传输时间) 01H 03H 00H 04H 00H 02H 85H CAH T1-T2-T3-T4(3.5个字节的传输时间) 从机回应信息
START ADDR CMD 字节个数高位 字节个数低位 数据地址0004H高位 数据地址0004H低位 数据地址0005H高位 数据地址0005H低位 CRC CHK 低位 CRC CHK 高位 END T1-T2-T3-T4(3.5个字节的传输时间) 01H 03H 00H 04H 00H 00H 00H 00H 43H 07H T1-T2-T3-T4(3.5个字节的传输时间) 11.6.2命令码:06H(0000 0110),写一个字(Word)
例如:将5000(1388H)写到从机地址02H变频器的0008H地址处。则该帧的结构描述如下:
主机命令信息
START ADDR CMD 写数据地址高位 写数据地址低位 数据内容高位 T1-T2-T3-T4(3.5个字节的传输时间) 02H 06H 00H 08H 13H .3.
数据内容低位 CRC CHK 低位 CRC CHK 高位 END 88H 05H 6DH T1-T2-T3-T4(3.5个字节的传输时间) T1-T2-T3-T4(3.5个字节的传输时间) 02H 06H 00H 08H 13H 88H 05H 6DH T1-T2-T3-T4(3.5个字节的传输时间) 从机回应信息
START ADDR CMD 写数据地址高位 写数据地址低位 数据内容高位 数据内容低位 CRC CHK 低位 CRC CHK 高位 END 11.6.3通讯帧错误校验方式
帧的错误校验方式主要包括两个部分的校验,即字节的位校验(奇/偶校验)和帧的整个数据校验(CRC校验)。
字节位校验:
用户可以根据需要选择不同的位校验方式,也可以选择无校验,这将影响每个字节的校验位设置。详细的说明,请参阅相关标准的串口通讯说明,这里不做重复。
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语言编程):
.4.
/**CRC值计算方法**************************************************/ /******优点:程序空间小,简单*************************************/ /******缺点:程序执行速度慢,对速度要求很高的场合,请谨慎使用*****/
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++;
}
在阶梯逻辑中,CKSM根据帧内容计算CRC值,采用查表法计算,这种方法程序简单,运算速度快,但程序所占用ROM空间较大,对程序空间有要求的场合,请谨慎使用。 11.6.4通信数据地址的定义
该部分是通信数据的地址定义,用于控制变频器的运行、获取变频器状态信息及变频器相关功能参数设定等。
(1)功能码参数地址表示规则
以功能码序号为参数对应寄存器地址,但要转换成十六进制,如P5.05Aa的序号为58,则用十六进制表示该功能码地址为003AH。
高、低字节的范围分别为:高位字节——00~01;低位字节——00~FF。 注意:PE组:为厂家设定参数,既不可读取该组参数,也不可更改该组参数;有些参数在变频器处于运行状态时,不可更改;有些参数不论变频器处于何种状态,均不可更改;更改功能码参数,还要注意参数的设定范围,单位,及相关说明。
.5.
}
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);
另外,由于EEPROM频繁被存储,会减少EEPROM的使用寿命,对于用户而言,有些功能码在通讯的模式下,无须存储,只需更改片内RAM中的值就可以满足使用要求。要实现该功能,只要把对应的功能码地址最高位由0变成1就可以实现。如:功能码P0.07不存储到EEPROM中,只修改RAM中的值,可将地址设置为800CH;该地址只能用作写片内RAM时使用,不能用做读的功能,如做读为无效地址。
(2)其他功能的地址说明:
功能说明 地址定义 数据意义说明 0001H:正转运行 0002H:反转运行 0003H:正转点动 0004H:反转点动 通讯控制命令 1000H 0005H:停机 0006H:自由停机(紧急停机) 0007H:故障复位 0008H:点动停止 0001H:正转运行中 0002H:反转运行中 变频器状态 1001H 0003H:变频器待机中 0004H:故障中 通信设定值范围(-10000~10000) 注意:通信设定值是相对值的百分数(-100.00%~100.00%),可做通信写操作。通讯设定值地2000H 址 (P0.04)的百分数;当作为PID给定或者反馈时,相对的是PID的百分数。其中,PID给定值和PID反馈值,都是以百分数的形式进行PID计算的。 3000H 运行/停机参数地址说明 3001H 3002H 3003H 运行频率 设定频率 母线电压 输出电压 R R R R 当作为频率源设定时,相对的是最大频率W R W R/W特性 .6.
3004H 3005H 3006H 3007H 3008H 3009H 300AH 300BH 300CH 300DH 300EH 300FH 3010H 3011H 3012H 变频器故障地5000H 址 输出电流 运行转速 输出功率 输出转矩 PID给定值 PID反馈值 端子输入标志状态 端子输出标志状态 模拟量AI1值 模拟量AI2值 保留 保留 保留 保留 多段速当前段数 故障信息代码与功能码菜单中故障类型的序号一致,只不过该处给上位机返回的是十六进制的数据,而不是故障字符。 0000H:无故障 0001H:密码错误 0002H:命令码错误 0003H:CRC校验错误 R R R R R R R R R R R R R R R R ModBus通讯故5001H 障地址 0005H:非法数据 0006H:参数更改无效 0007H:系统被锁定 0008H:变频器忙(EEPROM正在存储中) 0004H:非法地址 R
.7.
因篇幅问题不能全部显示,请点此查看更多更全内容