AM300通讯协议.docx
- 文档编号:5731620
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:30.02KB
AM300通讯协议.docx
《AM300通讯协议.docx》由会员分享,可在线阅读,更多相关《AM300通讯协议.docx(19页珍藏版)》请在冰豆网上搜索。
AM300通讯协议
AM300通讯协议
AM300系列变频器,提供RS485通信接口,采用国际标准的ModBus通讯协议进行的主从通讯。
用户可通过PC/PLC、控制上位机等实现集中控制(设定变频器控制命令、运行频率、相关功能码参数的修改,变频器工作状态及故障信息的监控等),以适应特定的应用要求。
一、协议内容
该Modbus串行通信协议定义了串行通信中异步传输的帧内容及使用格式。
其中包括:
主机轮询及广播帧、从机应答帧的格式;主机组织的帧内容包括:
从机地址(或广播地址)、执行命令、数据和错误校验等。
从机的响应也是采用相同的结构,内容包括:
动作确认,返回数据和错误校验等。
如果从机在接收帧时发生错误,或不能完成主机要求的动作,它将组织一个故障帧作为响应反馈给主机。
二、应用方式
AM300系列变频器可接入具备RS485总线的“单主多从”控制网络。
三、总线结构
1.接口方式
RS485硬件接口
2.传输方式
异步串行,半双工传输方式。
在同一时刻主机和从机只能有一个发送数据而另一个接收数据。
数据在串行异步通信过程中,是以报文的形式,一帧一帧发送。
3.拓扑结构
单主机多从机系统。
从机地址的设定范围为1~247,0为广播通信地址。
网络中的每个从机的地址都具有唯一性。
这是保证ModBus串行通讯的基础。
四、协议说明
AM300系列变频器通信协议是一种异步串行的主从ModBus通信协议,网络中只有一个设备(主机)能够建立协议(称为“查询/命令”)。
其它设备(从机)只能通过提供数据响应主机的“查询/命令”,或根据主机的“查询/命令”做出相应的动作。
主机在此是指个人计算机(PC)、工业控制设备或可编程逻辑控制器(PLC)等,从机是指AM300系列变频器或其它具有相同通讯协议的控制设备。
主机既能对某个从机单独进行通信,也能对所有从机发布广播信息。
对于单独访问的主机“查询/命令”,从机都要返回一个信息(称为响应),对于主机发出的广播信息,从机无需反馈响应信息给主机。
五、通讯帧结构
AM300系列变频器的ModBus协议通信数据格式分为RTU(远程终端单元)模式和ASCII(AmericanStandardCodeforInformationInternationalInterchange)
模式两种。
RTU模式中,每个字节的格式如下:
编码系统:
8位二进制,每个8位的帧域中,包含两个十六进制字符,十六进制0~9、A~F。
ASCII模式中,每个字节的格式如下:
编码系统:
通讯协议属于16进制,ASCII的信息字符意义:
“0”…“9”,“A”…“F”每个16进制都用对应字符的ASCII信息表示。
字符
‘0’
‘1’
‘2’
‘3’
‘4’
‘5’
ASCIICODE
0x30
0x31
0x32
0x33
0x34
0x35
字符
‘6’
‘7’
‘8’
‘9’
‘A’
‘B’
ASCIICODE
0x36
0x37
0x38
0x39
0x41
0x42
字符
‘C’
‘D’
‘E’
‘F’
ASCIICODE
0x43
0x44
0x45
0x46
数据格式:
起始位、7/8个数据位、校验位和停止位。
数据格式的描述如下表:
11-bit字符帧:
起始位
BIT1
BIT2
BIT3
BIT4
BIT5
BIT6
BIT7
BIT8
校验位
停止位
10-bit字符帧:
起始位
BIT1
BIT2
BIT3
BIT4
BIT5
BIT6
BIT7
校验位
停止位
在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个字节的数据,该部分为通讯的主要内容,也是通讯中,数据交换的核心。
CRCCHK低位
检测值:
CRC校验值(16BIT)
CRCCHK高位
帧尾END
T1-T2-T3-T4(3.5个字节的传输时间)
在ASCII模式中,帧头为“:
”(“0x3A”),帧尾缺省为“CRLF”(“0x0D”“0x0A”)。
在ASCII方式下,除了帧头和帧尾之外,其余的数据字节全部以ASCII码方式发送,先发送高4位位元组,然后发送低4位位元组。
ASCII方式下数据为8位长度。
对于‘A’~‘F’,采用其大写字母的ASCII码。
此时数据采用LRC校验,校验涵盖从从机地址到数据的信息部分。
校验和等于所有参与校验数据的字符和(舍弃进位位)的补码。
ASCII帧的标准结构:
START
‘:
’(0x3A)
AddressHi
通讯地址:
8-bit地址由2个ASCII码组合
AddressLo
FunctionHi
功能码:
8-bit地址由2个ASCII码组合
FunctionLo
DATA(N-1)
…
DATA(0)
数据内容:
nx8-bit数据内容由2n个ASCII码组合
n<=16,最大32个ASCII码
LRCCHKHi
LRC检查码:
8-bit检验码由2个ASCII码组合
LRCCHKLo
ENDHi
结束符:
ENDHi=CR(0x0D),ENDLo=LF(0x0A)
ENDLo
六、命令码及通讯数据描述
1.命令码:
03H(00000011),读取N个字(Word)(最多可以连续读取16个字)
例如:
从机地址为01H的变频器,内存启始地址为0004,读取连续2个字,则该帧的结构描述如下:
RTU主机命令信息
START
T1-T2-T3-T4
ADDR
01H
CMD
03H
启始地址高位
00H
启始地址低位
04H
数据个数高位
00H
数据个数低位
02H
CRCCHK低位
85H
CRCCHK高位
CAH
END
T1-T2-T3-T4
RTU从机回应信息
START
T1-T2-T3-T4
ADDR
01H
CMD
03H
字节个数
04H
数据地址0004H高位
13H
数据地址0004H低位
88H
数据地址0005H高位
13H
数据地址0005H低位
88H
CRCCHK低位
73H
CRCCHK高位
CBH
END
T1-T2-T3-T4
ASCII主机命令信息
START
‘:
’
ADDR
‘0’
‘1’
CMD
‘0’
‘3’
启始地址高位
‘0’
‘0’
启始地址低位
‘0’
‘4’
数据个数高位
‘0’
‘0’
数据个数低位
‘0’
‘2’
LRCCHKHi
‘F’
LRCCHKLo
‘6’
ENDHi
CR
ENDLo
LF
ASCII从机回应信息
START
‘:
’
ADDR
‘0’
‘1’
CMD
‘0’
‘3’
字节个数
‘0’
‘4’
数据地址0004H高位
‘1’
‘3’
数据地址0004H低位
‘8’
‘8’
数据地址0005H高位
‘1’
‘3’
数据地址0005H低位
‘8’
‘8’
LRCCHKHi
‘C’
LRCCHKLo
‘2’
ENDHi
CR
ENDLo
LF
2.命令码:
06H(00000110),写一个字(Word)
例如:
将5000(1388H)写到从机地址02H变频器的0008H地址处。
则该帧的结构描述如下:
RTU主机命令信息
START
T1-T2-T3-T4
ADDR
02H
CMD
06H
写数据地址高位
00H
写数据地址低位
05H
数据内容高位
13H
数据内容低位
88H
CRCCHK低位
94H
CRCCHK高位
AEH
END
T1-T2-T3-T4
RTU从机回应信息
START
T1-T2-T3-T4
ADDR
02H
CMD
06H
写数据地址高位
00H
写数据地址低位
05H
数据内容高位
13H
数据内容低位
88H
CRCCHK低位
94H
CRCCHK高位
AEH
END
T1-T2-T3-T4
ASCII主机命令信息
START
‘:
’
ADDR
‘0’
‘2’
CMD
‘0’
‘6’
写数据地址高位
‘0’
‘0’
写数据地址低位
‘0’
‘5’
数据内容高位
‘1’
‘3’
数据内容低位
‘8’
‘8’
LRCCHKHi
‘5’
LRCCHKLo
‘8’
ENDHi
CR
ENDLo
LF
ASCII从机回应信息
START
‘:
’
ADDR
‘0’
‘2’
CMD
‘0’
‘6’
写数据地址高位
‘0’
‘0’
写数据地址低位
‘0’
‘5’
数据内容高位
‘1’
‘3’
数据内容低位
‘8’
‘8’
LRCCHKHi
‘5’
LRCCHKLo
‘8’
ENDHi
CR
ENDLo
LF
3.命令码:
08H(00001000),诊断功能
子功能码的意义:
子功能码
说明
0000
返回询问讯息数据
例如:
对驱动器地址01H做回路侦测询问讯息字串内容与回应讯息字串内容相同,其格式如下所示:
RTU主机命令信息
START
T1-T2-T3-T4
ADDR
01H
CMD
08H
子功能码高位
00H
子功能码低位
00H
数据内容高位
12H
数据内容低位
ABH
CRCCHK低位
ADH
CRCCHK高位
14H
END
T1-T2-T3-T4
RTU从机回应信息
START
T1-T2-T3-T4
ADDR
01H
CMD
08H
子功能码高位
00H
子功能码低位
00H
数据内容高位
12H
数据内容低位
ABH
CRCCHK低位
ADH
CRCCHK高位
14H
END
T1-T2-T3-T4
ASCII主机命令信息
START
‘:
’
ADDR
‘0’
‘1’
CMD
‘0’
‘8’
子功能码高位
‘0’
‘0’
子功能码低位
‘0’
‘0’
数据内容高位
‘1’
‘2’
数据内容低位
‘A’
‘B’
LRCCHKHi
‘3’
LRCCHKLo
‘A’
ENDHi
CR
ENDLo
LF
ASCII从机回应信息
START
‘:
’
ADDR
‘0’
‘1’
CMD
‘0’
‘8’
子功能码高位
‘0’
‘0’
子功能码低位
‘0’
‘0’
数据内容高位
‘1’
‘2’
数据内容低位
‘A’
‘B’
LRCCHKHi
‘3’
LRCCHKLo
‘A’
ENDHi
CR
ENDLo
LF
4.通讯帧错误校验方式
帧的错误校验方式主要包括两个部分的校验,即字节的位校验(奇/偶校验)和帧的整个数据校验(CRC校验或LRC校验)。
4.1字节位校验
用户可以根据需要选择不同的位校验方式,也可以选择无校验,这将影响每个字节的校验位设置。
偶校验的含义:
在数据传输前附加一位偶校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为偶数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。
奇校验的含义:
在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。
例如,需要传输"11001110",数据中含5个"1",如果用偶校验,其偶校验位为"1",如果用奇校验,其奇校验位为"0",传输数据时,奇偶校验位经过计算放在帧的校验位的位置,接收设备也要进行奇偶校验,如果发现接受的数据的奇偶性与预置的不一致,就认为通讯发生了错误。
4.2CRC校验方式---CRC(CyclicalRedundancycheck):
使用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语言编程):
unsignedintcrc_cal_value(unsignedchar*data_value,unsignedchardata_length)
{
inti;
unsignedintcrc_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空间较大,对程序空间有要求的场合,请谨慎使用。
4.3ASCII模式的校验(LRCcheck)
校验码(LRCcheck)由Address到DataContent结果加起来的值,例如上面1.6.2通讯信息的的校验码:
0x02+0x06+0x00+0x08+
0x13+0x88=0xAB,然后取2的补码=0x55。
现在提供一个LRC计算和简单函数给用户参考(用C语言编程):
Staticunsignedchar
LRC(auchMsg,usDataLen)
unsignedchar*auchMsg;
unsignedshortusDataLen;
{
unsignedcharuchLRC=0;
while(usDataLen--)
uchLRC+=*auchMsg++;
return((unsignedchar)(~((char)uchLRC)));
}
5.通信数据地址的定义
该部分是通信数据的地址定义,用于控制变频器的运行、获取变频器状态信息及变频器相关功能参数设定等。
(1)功能码参数地址表示规则
以功能码序号为参数对应寄存器地址,但要转换成十六进制,如F5.05的序号为76,则用十六进制表示该功能码地址为004CH。
高、低字节的范围分别为:
高位字节——00~01;低位字节——00~FF。
注意:
FE组:
为厂家设定参数,既不可读取该组参数,也不可更改该组参数;有些参数在变频器处于运行状态时,不可更改;有些参数不论变频器处于何种状态,均不可更改;更改功能码参数,还要注意参数的设定范围,单位,及相关说明。
另外,由于EEPROM频繁被存储,会减少EEPROM的使用寿命,对于用户而言,有些功能码在通讯的模式下,无需存储,只需更改片内RAM中的值就可以满足使用要求。
要实现该功能,只要把对应的功能码地址最高位由0变成1就可以实现。
如:
功能码F0.01不存储到EEPROM中,只修改RAM中的值,可将地址设置为8007;该地址只能用作写片内RAM时使用,不能用做读的功能,如做读为无效地址。
(2)其他功能的地址说明:
功能说明
地址
定义
数据意义说明
R/W
特性
通讯控制命令
1000H
0001H:
正转运行
W/R
0002H:
反转运行
0003H:
正转点动
0004H:
反转点动
0005H:
停机
0006H:
自由停机(紧急停机)
0007H:
故障复位
0008H:
点动停止
变频器状态
1001H
0001H:
正转运行中
R
0002H:
反转运行中
0003H:
变频器待机中
0004H:
故障中
通讯设定值地址
2000H
通信设定值范围(-10000~10000)注意:
通信设定值是相对值的百分数(-100.00%~100.00%),可做通信写操作。
当作为频率源设定时,相对的是最大频率(P0.07)的百分数;当作为转矩给定时,相对的是转矩上限(P3.14)的百分数。
当作为PID给定或者反馈时,相对的是PID的百分数。
W/R
虚拟端子输入功能设定
2001H
保留
W/R
运行/停机参数地址说明
3000H
运行速度
R
3001H
设定速度
R
3002H
母线电压
R
3003H
输出电压
R
3004H
输出电流
R
3005H
运行转速
R
3006H
输出功率
R
3007H
输出转矩
R
3008H
PID给定值
R
3009H
PID反馈值
R
300AH
端子输入标志状态
R
300BH
端子输出标志状态
R
300CH
模拟量AI1值
R
300DH
模拟量AI2值
R
300EH
模拟量AI3值
R
300FH
模拟量AI4值
R
3010H
高速脉冲频率(HDI1)
R
3011H
高速脉冲频率(HDI2)
R
3012H
多段速及PLC当前段数
R
3013H
长度值
R
3014H
外部计数器输入值
R
3015H
转矩方向(0:
正向,1:
反向)
R
3016H
设备代码
R
参数锁定密码校验地址
4000H
****
W
参数锁定密码命令地址
4001H
55AAH
W
变频器故障地址
5000H
故障信息代码与功能码菜单中故障类型的序号一致,只不过该处给上位机返回的是十六进制的数据,而不是故障字符。
R
注意:
从5000H中读取的数字与实际故障对照表如下:
数字
故障类型
0x00
无故障
0x01
逆变单元保护(E.SC)
0x02
加速过电流(E.OCA)
0x03
减速过电流(E.OCd)
0x04
恒速过电流(E.OCC)
0x05
加速过电压(E.OVA)
0x06
减速过电压(E.OVd)
0x07
恒速过电压(E.OUC)
0x08
母线欠压故障(E.LV)
0x09
电机过载(E.OL1)
0x0A
变频器过载(E.OL2)
0x0B
输出侧缺相(E.SPO)
0x0C
整流模块过热(E.OH1)
0x0D
逆变模块过热故障(E.OH2)
0x0E
外部故障(E.EF)
0x0F
通讯故障(E.CE)
0x10
电流检测故障(E.It)
0x11
电机自学习故障(E.tU)
0x12
EEPROM操作故障(E.EP)
0x13
PID反馈断线故障(E.PID)
从变频器中读取参数全部为16进制表示,且数值都为:
实际值*10K,其中K为该参数小数点后的位数。
6.错误消息的回应
当从设备回应时,它使用功能代码域与故障地址来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。
对正常回应,从设备回应相应的功能代码和数据地址或子功能码。
对异议回应,从设备返回一等同于正常代码的代码,但最首的位置为逻辑1。
例如:
一主设备发往从设备的消息要求读一组变频器功能码地址数据,将产生如下功能代码:
00000011(十六进制03H)
对正常回应,从设备回应同样的功能码。
对异议回应,它返回:
10000011(十六进制83H)
除功能代码因异议错误作了修改外,从设备将回应一字节异常码,这定义了产生异常的原因。
主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者针对相应的故障进行命令更改。
错误代码的含义
Modbus异常码
代码
名称
含义
01H
非法功能
当从上位机接收到的功能码是不允许的操作;也可能从机在错误状态中处理这种请求。
02H
非法数据地址
上位机的请求数据地址是不允许的地址;特别是,寄存器地址和传输的字节数组合是无效的。
03H
非法数据值
当接收到的数据域中包含的是不允许的值。
注意:
它决不意味着寄存器中被提交存储的数据项有一个应用程序期望之外的值。
06H
从属设备忙
变频器忙(EPPROM正在存储中)
10H
密码
错误
密码效验地址写入的密码与F7.00用户设置的密码不同
11H
校验
错误
当上位机发送的帧信息中,RTU格式CRC校验位或ASCII格式LRC校验位与下位机的校验计算数不同时,报校验错误信息。
12H
参数更改无效
上位机发送的参数写命令中,所发的数据在参数的范围以外或写地址当前为不可改写状态。
13H
系统
被锁定
上位机进行读或写时,当设置了用户密码,又没有进行密码锁定开锁,将报系统被锁定。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AM300 通讯 协议