工控编程吧

标题: 厦门宇电AI 系列仪表串行通讯接口协议说明 [打印本页]

作者: qq263946146    时间: 2015-10-29 20:06
标题: 厦门宇电AI 系列仪表串行通讯接口协议说明
AI 系列仪表 V5.0 串行通讯接口协议说明
PDF格式下载:
百度云附件:厦门宇电AI 系列仪表串行通讯接口协议说明 .rar   
AI系列人工智能调节器/多路巡检仪/流量积算仪的AI通讯接口协议,具备 16位的求
和校正码,通讯可靠,支持1200,2400,4800,9600,19200等多种波特率,并且将上位机访问一
台仪表的平均时间缩短到0.1秒以下. 仪表允许在一个 RS485 通讯接口上连接多达 101 台仪
表(为保证通讯可靠,仪表数量大于60台时需要加一个RS485中继器)。

一、接口规格

    AI 系列仪表使用异步串行通讯接口,接口电平符合 RS232C 或 RS485 标准中的规定。数
据格式为 1 个起始位,8 位数据,无校验位,一个或 2 个停止位。通讯传输数据的波特率可
调为 1200--19200 bit/S(波特率为 19200 时需配界高速光耦的通讯模块。AI 仪表采用多机
通讯协议,如果采用 RS485 通讯接口,则可将 1—101 台的仪表同时连接在一个通讯接口上。
采用 RS232C 通讯接口时,一个通讯接口只能联接一台仪表。
    RS485 通讯接口通讯距离长达 1KM 以上,只需两根线就能使多台AI 仪表与计算机进行
通讯,优于 RS232 通讯接口。为使用普通个人计算机PC能作上位机,可使用 RS232C/RS485
型通讯接口转换器,将计算机上的 RS232C 通讯口转为 RS485 通讯口。宇光电子技术有限公
司所为此专门开发了新型 RS232/RS485 转换器,与其他公司同类产品相比,具备体积小,无
需初始化而可适应任何软件,无需外接电源,具有抗雷击等优点.
按 RS485 接口的规定,RS485 通讯接口可在一条通讯线路上连接最多32 台仪表或计算
机。需要联接更多的仪表时需要中继器,也可选择采用 75LBC184 或 MAX487 芯片的通讯接口,
则最多可连接 100 台 AI 仪表在一条通讯线路上, 目前生产的 AI 仪表通讯接口模块通常采用
75LBC184,这种芯片具备一定的防雷和防静电功能,且无需中继器即可连接约 60 台仪表。
AI仪表的RS232C及RS485通讯接口采用光电隔离技术将通讯接口与仪表的其他部分线
路隔离,当通讯线路上的某台仪表损坏或故障时,并不会对其它仪表产生影响。同样当仪表
的通讯部分损坏或主机发生故障时,仪表仍能正常进行测量及控制,并可通过仪表键盘对仪
表进行操作。16 位校验码不仅保证数据可靠性,并保证在通讯异常,比如网络上有地址相
同的仪表或有其他公司产品时,仪表和计算机机仍能分别正常工作,不会产生数据混乱的问
题,因此采用 AI 仪表组成的集散型控制系统具有较高工作可靠性。
由于采用普通计算机作上位机,其软件资源丰富,发展速度极快。新的 AI 上位机软件
广泛采用 WINDOWS 作为操作环境,不仅操作直观方便,而且功能强大。这使得 AIDCS 系统价
格大大低于传统 DCS 系统,而性能及可靠性则均可优于传统 DCS 系统。  

二、通讯指令

    AI 仪表采用 16 进制数据格式来表示各种指令代码及数据。 AI 仪表软件通讯指令经过优
化设计,只有两条,一条为读指令,一条为写指令,两条指令使得上位机软件编写容易。不
过却能 100%完整地对仪表进行操作。
    地址代号:为了在一个通讯接口上连接多台 AI 仪表,需要给每台 AI 仪表编一个互不相
同的代号。AI 有效的地址为 0—100。所以一条通讯线路上最多可连接 101 台 AI 仪表。仪表
的地址代号由参数 Addr 决定。
    仪表内部采用整型数据表示参数及测量值等,数据最大范围为:-2999—+32767。因此
采用-32768—-7160 之间的数值来表示地址代号,来降低因数据与地址重复造成冲突的可能性。AI 仪表通讯协议规定,地址代号为两个字节,其数值范围(16 进制数)是 80H—BFH,
两个字节必需相同,数值为(仪表地址+80H)。例如,仪表参数 Addr=10(16 进制数为 0AH,
0A+80H=8AH),则该仪表的地址表示为:
                                     8AH  8AH
参数代号:仪表的参数用 1 个 8 位二进制数(一个字节,写为 16 进制数)的参数代号
来表示。它在指令中表示要读/写的参数名。
AI 仪表可读/写的参数代号表:
参数
代号
工业调节器
AI-708/808/708P/808P
流量积算仪
AI-708H/Y
多路巡检仪
AI-708M
00H  SV/STEP 给定值/程序段  SV  (空)
01H  HIAL 上限报警  FHIA  HIA(X)
02H  LoAL 下限报警  FIoA  LoA(X)
03H  dHAL 正偏差报警  SPE  (空)
04H  dLAL 负偏差报警  Act  (空)
05H  dF 回差  Esn  dF(X)
06H  CtrL 控制方式  FSc  (空)
07H  M5 保持参数  PdIH  (空)
08H  P 速率参数  CSc  (空)
09H  t 滞后参数  CdIH  (空)
0AH  CtI 控制周期  Cut  (空)
0BH  Sn 输入规格  FdIH  Sn(X)-34 (只读)
0CH  dIP 小数点位置  FdIP  Sn(X)-1 (只读)
0DH  dIL 下限显示值  PA  dIL(X)
0EH  dIH 上限显示值  Po  dIH(X)
0FH  ALP 报警输出选择  Co  ALP(X)
10H  Sc 传感器修正  Frd  (空)
11H  Op1 输出方式  CF  (空)
12H  oPL 输出下限  bc  (空)
13H  oPH 输出上限  IoL  (空)
14H  CF 功能选择  FoH  Cn 功能选择
15H  波特率/808P运行状态控制字
运行:0 暂停:4 停止:12
仪表型号特征  仪表型号特征
16H  ADDR 通讯地址  ADDR 通讯地址  ADDR 通讯地址
17H  dL 数字滤波  IoH
Sn(X)-2 (只读)
18H  run 运行参数  dL  nonc 常开/常闭选择
19H  Loc 参数封锁  Loc  Loc 参数封锁
1AH-55H  C01-t30 程序数据  无  无
56H  运行时间  无  无   
说明:1、如果向仪表读取参数代号在表格中参数以外,则仪表不会返回任何数据。
      2、AI—808 系列 1AH 为手动输出值 MV。当参数 run=0 时,可通过写该参数来调
节手动输出值。为保持兼容性,写 AI-808 型仪表1AH 也为手动输出值,但建议目前编
程统一到 16H。
      3、AI-708P 型另有 60 个参数(30 个时间及 30 个温度),其参数代号从 1AH-55H,第
1 段温度为 1AH,第一段时间为 1BH,第二段温度为 1CH,依此排列,程序段号参数 SteP 为
00H,无 SV 参数。代号 56H 为当前段已运行时间,只许读,不能写。
4、15H为仪表型号的特征:
V5.0-V6.0 版仪表开始,15H 将逐步用于表示仪表的型号特征,这样从上位机软件就能
实现对下位机仪表的自动识别。为了尽量与旧有仪表保持兼容,特作以下约定:
(1)虽然 AI 系列仪表允许设置很低的通讯波特率,但 1200 及以下波特率的使用基本
上没有,对于 AI-708/808 型仪表,15H 仍返回波特率,这样其高位字节数通常应大于或等
于5,当在软件中识别 15H 高字节大于5时,上位机软件可识别为 AI-708/808 型仪表。
(2)对于AI-708/808P 型仪表,15H 仍返回程序控制字,其高位字节数值为0,低位
字节数据如下:
     (X) (X) (X) (X)(EV2)(EV1)(HOLD)(STOP)
前4位( BIT)目前暂不用,程序中应允许起为任意值。
HOLD 及 STOP=0,则程序运行。
STOP=0,HOLD=1 则程序暂停,
STOP=1,HOLD=1,则程序停止
EV1,EV2 表示事件输出状态,为1时表示事件输出动作,为0时表示事件输出无效。
(3)AI-708H./Y 型仪表,15H 的高字节为1低字节备用,应允许其为任意值。
(4)AI-708M 型仪表,15H 的高字节为3低字节备用,应允许其为任意值。

读/写指令分别如下:

    读: 地址代号+52H(82)+要读参数的代号+0+0+CRC 校验码
    写: 地址代号+43H(67)+要写参数的代号+写入数低字节+写入数高字节+CRC 校验码

读指令的 CRC 校验码为:要读参数的代号*256+82+ADDR
ADDR 为仪表地址参数值,范围是 0-100(注意不要加上 80H)。CRC 为以上数做二进制
16 位整数加法后得到的余数(溢出部分不处理),余数为2个字节,其低字节在前,高字节
在后。
写指令的 CRC 校验码则为:要写的参数代号*256+67+要写的参数值+ADDR。
要写得参数值用16位二进制整数表示。
    无论是读还是写,仪表都返回以下数据
    测量值 PV+给定值 SV+输出值 MV 及报警状态+所读/写参数值+CRC 校验码
    其中 PV、SV 及所读参数值均为整数格式,各占 2 个字节,MV 占一个字节,数值范
围 0-220,报警状态占一个字节,CRC 校验码占 2 个字节,共 10 个字节。
    CRC 校验码为 PV+SV+(报警状态*256+MV)+参数值+ADDR,按整数加法相加后得到的余
数。
    每 2 个 8 位数据代表一个 16 位整形数,低位字节在前,高位字节在后,各温度值采用
补码表示,热电偶或热电阻输入时其单位都是 0.1℃,1—5V 或 0—5V 等线性输入时,单位都是线性最小单位。因为传递的是 16 位二进制数,所以无法表示小数点,要求用户在上位
机处理。
    输出值和报警状态各占 1 个字节,报警状态采用二进制代码表示各报警信号,如下:
    位 0 为 0 则上限报警(HIAL)不成立,为 1 为上限报警成立。
    位 1 为 0 则下限报警(LoAL)不成立,为 1 为下限报警成立。
    位 2 为 0 则正偏差报警(dHAL)不成立,为 1 为正偏差报警成立。
    位 3 为 0 则负偏差报警(dLAL)不成立,为 1 为负偏差报警成立。
    位 4 为 0 则输入超量程报警(orAL)不成立,为 1 则输入超量程报警成立。
    位 5 为 0 则事件输出 1 不成立,为 1 则事件输出 1 成立(仅 AI—708P 使用)。
    位 6 为 0 则事件输出 2 不成立,为 1 则事件输出 2 成立(仅 AI—708P 使用)。      
    位 7 固定为 0。
    上位机通过分析可得到仪表当前的工作状态。
    上位机每向仪表发一个指令,仪表返回一个数据。编写上位机软件时,注意每条
有效指令,仪表在 0—0.2 秒内作出应答,而上位机也必须等仪表返回数据后,才能发新的
指令,否则将引起错误。如果仪表超过最大响应时间仍没有应答,则原因可能无效指令、通
讯线路故障,仪表没有开机,通讯地址不合等,此时上位机应重发指令。
    对于流量表,累积值=MV*1000+SV 。
    例如, 将 ADDR为 1 的仪表的给定值 (参数代号 0) 写为 100.0℃(整数为 1000), 用 BASIC
语言(VB)的编程方法如下:
    1、初始化通讯口,包括与仪表相同的波特率,数据位 8,停止位 2,无校验,如果采用
RS485 通讯口,要注意某些型号的 RS485 通讯口(或 RS232/RS485 通讯转换器)对 RTS、DTR
等控制线有一定的要求,上位机软件必须对这些控制线进型编程。
    2、VB3 编程指令如下:
       COMM1.OUTPUT=CHR$(129)+CHR$(129)+CHR$(67)+CHR$(0)
                    +CHR$(232)+CHR$(3)+CHR$(44)+CHR$(4)
数据分解如下(vb5):
  Dim instring
  Dim pv as integer
  Dim sv as integer
  Dim mv as integer
  Dim cs as integer
  Dim crc as integer
  instring = MSComm1.Input        '设已经有数据返回
  Open "datafile.bin" For Binary As #1
   Put #1, 1, instring
   Get #1, 13, pv          ' 因 VB5 字符格式为 32 位,所以从第三 13 位数据
'  开始才是真实数据(可以用 debug.exe 来查看 datafile.bin 对照)
   Get #1, 15, sv
   Get #1, 17, mv
   Get #1, 19, cs
   Get #1, 21, crc
   Form1.Print pv, sv, mv, cs, crc
Close #1
注意事项: 从通讯口向仪表写数据时,每个存储单元(包括给定值)的写入次数是有限的,AI 仪
表提供至少 10 万次的写入次数。如果写入次数超出要求,仪表存储单元可能损坏。







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4