AIBUS通讯协议说明(V7.0)
AIBUS是厦门宇电自动化科技有限公司为AI系列显示控制仪表开发的通讯协议,能用简单的指令实现强大的功能,并提供比其它常用协议(如MODBUS)更快的速率(相同波特率下快3-10倍),适合组建较大规模系统。AIBUS采用了16位的求和校正码,通讯可靠,支持4800、9600、19200等多种波特率,在19200波特率下,上位机访问一台AI-7/8系列高性能仪表的平均时间仅20mS,访问AI-5系列仪表的平均时间为50mS。仪表允许在一个RS485通讯接口上连接多达80台仪表(为保证通讯可靠,仪表数量大于60台时需要加一个RS485中继器)。AI系列仪表可以用PC、触摸屏及PLC作为上位机,其软件资源丰富,发展速度极快。基与PC的上位机软件广泛采用WINDOWS作为操作环境,不仅操作直观方便,而且功能强大。的工业平板触摸屏式PC的应用,更为工业自动化带来新的界面。这使得AIDCS系统价格大大低于传统DCS系统,而性能及可靠性也具备比传统DCS系统更*的潜力,V7.X版本AI-7/8系列仪表允许连续写参数,写给定值或输出值,可利用上位机将仪表组成复杂调节系统。
一、接口规格
AI系列仪表使用异步串行通讯接口,接口电平符合RS232C或RS485标准中的规定。数据格式为1个起始位,8位数据,无校验位,1个或2个停止位。通讯传输数据的波特率可调为4800~19200 bit/S,通常用9600 bit/S,单一通讯口所连接仪表数量大于40台或需要更快刷新率时,推荐用19200bit/S,当通讯距离很长或通讯不可靠常中断时,可选4800bit/S。AI仪表采用多机通讯协议,采用RS485通讯接口,则可将1~80台的仪表同时连接在一个通讯接口上。
RS485通讯接口通讯距离长达1KM以上(部分实际应用已达3-4KM),只需两根线就能使多台AI仪表与计算机进行通讯,优于RS232通讯接口。为使用普通个人计算机PC能作上位机,可使用RS232/RS485或USB/RS485型通讯接口转换器,将计算机上的RS232通讯口或USB口转为RS485通讯口。宇电为此专门开发了新型RS232/RS485及USB/RS485转换器,具备体积小、无需初始化而可适应任何软件、无需外接电源、有一定抗雷击能力等优点。
按RS485接口的规定,RS485通讯接口可在一条通讯线路上连接zui多32台仪表或计算机。需要联接更多的仪表时,需要中继器,也可选择采用75LBC184或MAX487等芯片的通讯接口。目前生产的AI仪表通讯接口模块通常采用75LBC184,这种芯片具备一定的防雷击和防静电功能,且无需中继器即可连接约60台仪表。
AI仪表的RS232及RS485通讯接口采用光电隔离技术将通讯接口与仪表的其他部分线路隔离,当通讯线路上的某台仪表损坏或故障时,并不会对其它仪表产生影响。同样当仪表的通讯部分损坏或主机发生故障时,仪表仍能正常进行测量及控制,并可通过仪表键盘对仪表进行操作,工作可靠性很高。16位校验码的正确性是简单奇偶校验的30000倍,基本能保证数据可靠性。并且同一网络上有其他公司也采用主从方式通讯的产品时,如PLC、变频器等,多数情况下AI系列仪表都不会受其它公司产品通讯干扰,不会产生采集数据混乱或无法通讯的问题。但是AI仪表协议并不能保证其它公司产品能否正常工作,所以除非万不得已,不应将AI仪表与其它产品混在一个RS485通讯总线上,而应分别使用不同的总线。
二、通讯指令
AI仪表采用16进制数据格式来表示各种指令代码及数据。AI仪表软件通讯指令经过优化设计,标准的通讯指令只有两条,一条为读指令,一条为写指令,两条指令使得上位机软件编写容易,不过却能*完整地对仪表进行操作;标准读和写指令分别如下:
读: 地址代号+52H(82)+要读的参数代号+0+0+校验码
写: 地址代号+43H(67)+要写的参数代号+写入数低字节+写入数高字节+校验码
地址代号:为了在一个通讯接口上连接多台AI仪表,需要给每台AI仪表编一个互不相同的通讯地址。有效的地址为0~80(部分型号为0~100),所以一条通讯线路上zui多可连接81台AI仪表,仪表的通讯地址由参数Addr决定。仪表内部采用两个重复的128~208(16进制为80H~D0H)之间数值来表示地址代号,由于大于128的数较少用到(如ASC方式的协议通常只用0-127之间的数),因此可降低因数据与地址重复造成冲突的可能性。
AI仪表通讯协议规定,地址代号为两个相同的字节,数值为(仪表地址+80H)。例如:仪表参数Addr=10(16进制数为0AH,0A+80H=8AH),则该仪表的地址代号为:8AH 8AH
参数代号:仪表的参数用1个8位二进制数(一个字节,写为16进制数)的参数代号来表示。它在指令中表示要读/写的参数名。
校验码:校验码采用16位求和校验方式,其中读指令的校验码计算方法为:
要读参数的代号×256+82+ADDR
写指令的校验码计算方法为以下公式做16位二进制加法计算得出的余数(溢出部分不处理):
要写的参数代号×256+67+要写的参数值+ADDR
公式中ADDR为仪表地址参数值,范围是0~80(注意不要加上80H)。校验码为以上公式做二进制16位整数加法后得到的余数,余数为2个字节,其低字节在前,高字节在后。要写的参数值用16位二进制整数表示。
返回数据:无论是读还是写,仪表都返回以下10个字节数据:
测量值PV+给定值SV+输出值MV及报警状态+所读/写参数值+校验码
其中PV、SV及所读参数值均各占2个字节,代表一个16位二进制有符号补码整数,低位字节在前,高位字节在后,整数无法表示小数点,要求用户在上位机处理;MV占一个字节,按8位有符号二进制数格式,数值范围-110~+110,状态位占一个字节,校验码占2个字节,共10个字节。
不同型号仪表返回各数据含义如下:
仪表型号 | 调节器 温控器 | AI-708M巡检仪 | AI-708H/808H 流量通道 | AI-808H 温度/压力通道 | AI-301M频率调节器/IO模块 |
PV | 测量值PV | 测量值 | 瞬时流量测量值
| 温度测量值,单位为0.1℃ | 测量值PV |
SV | 当前给定值SV | 通道号 (1-6) | 累积流量低位 或批量控制测量值 | 压力测量值,单位为0.001MPa | 当前给定值SV |
MV | 输出值MV 状态字节B | 状态字节B | 累积流量高位 或批量控制给定值 | 补偿前流量或频率值,单位0.1Hz | 调节输出值MV |
状态字节 | 状态字节A | 状态字节A | 状态字节A | ||
参数值 | 表示要读或写的参数的值 |
返回校验码:PV+SV+(报警状态*256+MV)+参数值+ADDR按整数加法相加后得到的余数。计算校验码时,每2个8位字节组成1个16位二进制整数进行加法运算,溢出数忽略,余数作为校验码。
状态字节A表示仪表部分状态,其含义如下(位7固定为0):
| 调节器及单显表(V7.0) | AI-702M/704M/706M | 调节器、温控器及单显表(V7.5) |
位0 | 上限报警(HIAL) | 上限报警(HIAL) | HIAL |
位1 | 下限报警(LoAL) | 下限报警(LoAL) | LoAL |
位2 | 正偏差报警(dHAL) | 0 | HdAL |
位3 | 负偏差报警(dLAL) | 0 | LdAL |
位4 | 输入超量程报警(orAL) | 超量程报警(orAL) | orAL |
位5 | AL1状态,0为动作 | 0 | 备用(0) |
位6 | AL2状态,0为动作 | 0 | 0表示MV为输出值,1为状态字B |
巡检仪具备状态字节B,对于V7.5版本以上调节器、温控仪、单显表,MV则可交替代表MV值及状态字节B(由状态字节A的位6决定)。状态字节B的位0~6分别表示OP1、OP2、AL1、AL2、AU1、AU2及MIO口的输入状态,0表示为未接通或未输出,1表示外部开关接通或有输出,OUTP或AUX做调节输出时则对应位固定为0。利用功能可将对应端口作为上位机开关量的输出或输出,应用ALP参数设置没有用到的报警端口均可作为I/O端口,利用修改NONC(常开/常闭)参数即可实现对开关量的输出,作为开关量输入时,应将nonc对应位设置为常开,若读入信号为1,则表示外部开关闭合或有信号输入。
AI仪表可读/写的参数代号表:
表一
参数代号 | 调节器 | 巡检仪 | |||
10进制 | 16进制 | AI-518/708/808/518P/708P/808P | AI-519/719/719P | AI-501/701 | AI-702M/704M/706M |
0 | 00H | SV给定值/SteP程序段 | SV给定值/SteP程序段 | (空) | (空) |
1 | 01H | HIAL上限报警 | HIAL上限报警 | HIAL上限报警 | HIAL上限报警 |
2 | 02H | LoAL下限报警 | LoAL下限报警 | LoAL下限报警 | LoAL下限报警 |
3 | 03H | dHAL正偏差报警 | HdAL偏差上限报警 | HdAL第二上限报警 | (空) |
4 | 04H | dLAL负偏差报警 | LdAL偏差下限报警 | LdAL第二下限报警 | (空) |
5 | 05H | dF回差 | CHYS控制回差 | AHYS报警回差 | dF回差 |
6 | 06H | Ctrl控制方式 | Ctrl控制方式 | (空) | (空) |
7 | 07H | M5保持参数 | P比例带 | (空) | (空) |
8 | 08H | P 速率参数 | I积分时间 | (空) | (空) |
9 | 09H | t滞后时间 | d微分时间 | (空) | (空) |
10 | 0AH | CtI控制周期 | CtI控制周期 | (空) | Cn测量路数 |
11 | 0BH | Sn输入规格 | InP输入规格 | InP输入规格 | Sn 输入规格 |
12 | 0CH | dIP小数点位置 | dPt小数点位置 | dPt小数点位置 | dIP小数点位置 |
13 | 0DH | dIL输入下限显示值 | SCL信号刻度下限 | SCL信号刻度下限 | dIL输入信号刻度下限 |
14 | 0EH | dIH输入上限显示值 | SCH信号刻度上限 | SCH信号刻度上限 | dIH输入信号刻度上限 |
15 | 0FH | ALP报警输出定义 | AOP报警输出定义 | AOP报警输出定义 | ALP报警输入定义 |
16 | 10H | Sc输入平移修正 | Scb输入平移修正 | Scb输入平移修正 | Sc输入平移修正 |
17 | 11H | OP1输出方式 | OPt主输出类型 | OPt主输出类型 | OPn变送输出通道号 |
18 | 12H | oPL输出下限 | OPL输出下限 | (空) | oPL变送输出电流下限 |
19 | 13H | oPH输出上限 | OPH输出上限 | (空) | oPH变送输出电流上限 |
20 | 14H | CF功能选择 | AF功能代码 | (空) | AF功能代码 |
21 | 15H | 仪表特征码/程序控制字(运行:0 暂停:4 停止:12) | 仪表特征码/程序控制字(运行:0 暂停:4 停止:12) | 仪表特征码(与SV的值一样,且可修改) | 仪表特征码 |
22 | 16H | 仪表地址(读/写) | 仪表地址(读/写) | 仪表地址(读/写) | 仪表地址(读/写) |
23 | 17H | dL数字滤波 | FILt输入数字滤波 | FILt输入数字滤波 | dL数字滤波 |
24 | 18H | run运行参数 | A-M自动/手动控制选择 | (空) | nonc常开/常闭选择 |
25 | 19H | Loc参数封锁 | Loc参数封锁 | Loc参数封锁 | Loc参数封锁 |
26 | 1AH | C01 (AI-808写入时设置MV值) | C01(AI-519/719写入时设置MV值) |
|
|
27 | 1BH | t01 | t01 |
|
|
28 | 1CH | C02 | C02 |
|
|
29 | 1DH | t02 | t02 |
|
|
30 | 1EH | C03 | C03 |
|
|
31 | 1FH | t03 | t03 |
|
|
32 | 20H | C04 | C04 |
|
|
33 | 21H | t04 | t04 |
|
|
34 | 22H | C05 | C05 |
|
|
35 | 23H | t05 | t05 |
|
|
36 | 24H | C06 | C06 |
|
|
37 | 25H | t06 | t06 |
|
|
38 | 26H | C07 | C07 |
|
|
39 | 27H | t07 | t07 |
|
|
40 | 28H | C08 | C08 |
|
|
41 | 29H | t08 | t08 |
|
|
42 | 2AH | C09 | C09 |
|
|
43-85 | 2BH-55H | t09-C30程序数据 | t09-C30程序数据 |
|
|
86 | 56H | 当前程序段运行时间 | 当前程序段运行时间 |
|
|
表二
参数代号 | 流量积算仪 | AI-301M | 四路PID调节器 | |
10进制 | 16进制 | (AI-708H/Y/808H) | 频率测量/开关量 | AI-7048 |
0 | 00H | SV批量控制给定值 | SV频率控制给定值 | SP给定值 |
1 | 01H | FHIA瞬时流量上限报警 | HIAL上限报警 | HIAL上限报警 |
2 | 02H | FloA瞬时流量下限报警 | LoAL下限报警 | LoAL下限报警 |
3 | 03H | SPE批量控制流量累积速率时间 | dHAL正偏差报警 |
|
4 | 04H | Act批量控制继电器动作时间 | dLAL负偏差报警 |
|
5 | 05H | Sn输入规格 | dF回差 | AHYS回差 |
6 | 06H | FSc流量信号测量平移修正 | CtrL控制方式 | At自整定开关 |
7 | 07H | PdIH压力测量量程定义 | M5保持参数 | P比例带 |
8 | 08H | CSc温度测量平移修正 | P速率参数 | I积分时间 |
9 | 09H | CdIH温度测量量程定义 | t滞后时间 | d微分时间 |
10 | 0AH | Cut流量小信号切除比率 | CtI控制周期 |
|
11 | 0BH | FdIH流量测量量程定义 | Frd频率量程 | InP输入规格 |
12 | 0CH | FdIP流量小数点 | dIP小数点位置 | dPt小数点位置 |
13 | 0DH | PA大气压力/温度补偿系数 | dIL下限显示值 | SCL信号刻度下限 |
14 | 0EH | Po流量传感器设计工作压力 | dIH上限显示值 | SCH信号刻度上限 |
15 | 0FH | Co流量传感器设计工作温度 | ALP报警输出选择 | AOP报警输出定义 |
16 | 10H | Frd频率信号上限 | 开关量状态 | Scb输入平移修正 |
17 | 11H | CF功能选择参数 | oP1输出方式 |
|
18 | 12H | bC温压补偿类型 | OPL输出下限 |
|
19 | 13H | IoL变送输出电流下限 | OPH输出上限 | OPH输出上限 |
20 | 14H | FoH变送输出流量量程 | CF功能选择 | AF功能代码 |
21 | 15H | 仪表特征码 | 仪表特征码 | 仪表特征码 |
22 | 16H | 仪表地址(读/写) | 仪表地址(读/写) | 仪表地址(读/写) |
23 | 17H | IoH变送输出电流上限 | dL数字滤波 | FILt输入数字滤波 |
24 | 18H | FdL流量信号数字滤波强度 | run运行参数 | Nonc常开/常闭选择 |
25 | 19H | Loc参数封锁 | Loc参数封锁 | Loc参数封锁 |
26 | 1AH | (空) | MV手动输出值 | Cn测量路数 |
27 | 1BH | FdF瞬时流量报警回差 |
|
|
28 | 1CH | CHIA温度上限报警 |
|
|
29 | 1DH | CLoA温度下限报警 |
|
|
30 | 1EH | PHIA压力上限报警 |
|
|
31 | 1FH | PLoA压力下限报警 |
|
|
32 | 20H | ALP报警输出定义 |
|
|
33 | 21H | FSb批量控制给定值偏移 |
|
|
34 | 22H | CdIP温度小数点 |
|
|
35 | 23H | PdIP压力小数点 |
|
|
36 | 24H | PSc压力测量信号平移修正 |
|
|
37 | 25H | CLn清零次数(只读) |
|
|
38 | 26H | FLJH累积流量高4位(只可清零) |
|
|
39 | 27H | FLJL累积流量低4位(只可清零) |
|
|
40 | 28H | EJH(补前流量高) |
|
|
41 | 29H | EJL(补前流量低) |
|
|
42 | 2AH | 批量累积值清零位 |
|
|
43-85 | 2BH-55H |
|
|
|
86 | 56H |
|
|
|
说明:
1、如果向仪表读取参数代号在表格中参数以外,则仪表不会返回任何数据。AI-501/701型仪表不具备表格中所有参数,当读写实际参数表以外的参数或备用参数时,仪表实际均对SP1参数操作。
2、带手动调节功能的仪表处于手动状态时,可通过写1AH参数来调节手动输出值。
3、AI-7048型4路控制器占4个地址,比如Addr=5,则5,6,7,8分别为4个回路的通讯地址。
4、程序控制字:对于AI-518P/708P/808P等型号程序仪表,15H返回程序控制字,其高位字节数值为0,低位字节数据则如下:
(X)(X)(X)(X)(EV2)(EV1)(HOLD)(STOP)
前4位(BIT)目前暂不用,程序中应允许其为任意值;HOLD及STOP=0,则程序运 STOP=0,HOLD=1,则程序暂停;S,HOLD=1,则程序停止;EV1、EV2表示事件输出状态,为1时表示事件输出动作,为0时表示事件输出无效。
5、累积流量清零:AI-708H/808H的流量累积参数FLJH及FLJL只能清零,不能改写,清零方法是向FLJH写入30808(占2个地址时,必须是用*个地址),即可清零累积流量FLJH、FLJL及补偿前流量累积EJH及EJL,同时CLn值加1,CLn为只读,不可改写。向参数代号2AH写入31808,则可清除批量控制累积值,同时复位批量控制输出继电器。
三、编程方法
系统采用主从式多机通讯结构,每向仪表发一个指令,仪表返回一个数据。编写上位机软件时,注意每条有效指令仪表应在0~150mS内作出应答,而上位机也必须等仪表返回数据后,才能发新的指令,否则将引起错误。如果仪表超过zui大响应时间(150mS)仍没有应答,则原因可能无效指令、通讯线路故障,仪表没有开机,通讯地址不合等,此时上位机应重发指令或跳过改地址仪表。例如,将地址(参数ADDR)为1的仪表的给定值(参数代号0)写为100.0℃(整数为1000),用VB的编程方法如下:
1、初始化通讯口,包括与仪表相同的波特率,数据位8,停止位2,无校验。注意某些厂家的RS232/RS485通讯转换器对RTS、DTR等控制线有一定的要求,上位机软件必须对这些控制线进型编程。用本公司生产的RS232/RS485转换器则可免去对这些线进行编程。
2、VB编程指令(写SV为1000)为:
Dim Cmdout (0 To 7) As Byte
Cmdout(0)=129
Cmdout(1)=129
Cmdout(2)=67
Cmdout(3)=0
Cmdout(4)=232
Cmdout(5)=3
Cmdout(6)=44
Cmdout(7)=4
COMM1.OUTPUT=Cmdout
仪表返回数据:
Dim instring() as byte
Dim pv as integer, sv as integer, mv as integer, alm as integer, cs as integer, crc as integer
instring = MSComm1.Input '假设已经有数据返回
pv= Join2Byte(instring(0), instring(1))
sv= Join2Byte(instring(2), instring(3))
mv= (instring(4))
alm= integer(instring(5))
cs= Join2Byte(instring(6), instring(7))
crc= Join2Byte(instring(8), instring(9))
Public Function Join2Byte(lowbyte As Byte, highbyte As Byte)
Dim c As Integer
c = highbyte
If c > 127 Then
c = (c - 256) * 256
Else
c = c * 256
End If
Join2Byte = c + lowbyte
End Function
注:对于AI-5XX系列仪表,写入参数周期不易低于2分钟,否则可能导致仪表在5年保修期内损坏存储单元损坏。