AI仪表通讯协议规定,地址代号为两个字节,其数值范围(16进制数)是80H—BFH,两个字节必需相同,数值为(仪表地址+80H)。例如,仪表参数Addr=10(16进制数为0AH,0A+80H=8AH),则该仪表的地址表示为:  8AH  8AH读: 地址代号+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,按整数加法相加后得到的余数。

解决方案 »

  1.   

    自己定义一个数据缓冲区,把字节对应地写到里面,然后向下位机发送就行了。也不是很难,
    算法都有了。。type
      TDataBuffer=array [0..255] of Char;
    var
      sendbuffer:tdatabuffer;
      receviceBuffer:Tdatabuffer;procedure readdata(var receviceData:Tdatabuffer);
    var 
      sendlen:word;
    begin
    //地址代号+52H(82)+要读参数的代号+0+0+CRC校验码
    zeromemory(sendbuffer,256);
    sendbuffer[0]:=char($82);
    sendbuffer[1]:=char($82);
    sendbuffer[2]:=char($52);
    sendbuffer[3]:=char($01);
    sendbuffer[4]:=char($0);
    sendbuffer[5]:=char($0);
    sendbuffer[6]:=char($XX);//crc:自己算算吧,这个不难。
    sendlen:=7;
    ...
    //你的通讯协议就是这样的?呵~~,要真是这样,就不好了,不完整啊。
    end;
      

  2.   

    AI 仪表可读/写的参数代号表:
    参数 调节器 AI-708M巡检仪 流量积算仪 AI-338频率调节器
    代号 (AI-708/808/708P/808P)   (AI-708H/Y) /IO模块
    00H  状态位 (空)  SV批量控制给定值  SV/SteP给定值/程
       给定值/程序段      序段
    01H  HIAL上限报警  HIA(X)  FHIA  HIAL上限报警
    02H  LoAL下限报警  LoA(X)  FLoA  LoAL下限报警
    03H  DHAL正偏差报警 (空)  SPE  DHAL正偏差报警
    04H  DLAL负偏差报警 (空)  Act  DLAL负偏差报警
    05H  dF回差  dF(X)  Esn  dF回差
    06H  Ctrl控制方式 (空)  FSc  CtrL控制方式
    07H  M5保持参数 (空)  PdIH  M5保持参数
    08H  P速率参数 (空)  CSc  P速率参数
    09H  t滞后参数 (空)  CdIH  t滞后参数
    0AH  CtI控制周期 (空)  Cut  CtI控制周期
    0BH  Sn输入规格  Sn(X)-34(只读)  FdIH  
    0CH  dIP小数点位置  Sn(X)-1(只读)  FdIP  dIP小数点位置
    0DH  dIL下限显示值  dIL(X)  PA  
    0EH  dIH上限显示值  dIH(X)  Po  
    0FH  ALP报警输出选择  ALP(X)  Co  
    10H  Sc传感器修正 (空)  Frd  
    11H  OP1输出方式 (空)  CF  
    12H  OPL输出下限 (空)  bc  
    13H  OPH输出上限 (空)  IoL  
    14H  CF功能选择  Cn功能选择  Foh  
    15H  仪表型号特征  仪表型号特征  仪表型号特征  仪表型号特征
    16H  addr仪表地址 addr仪表地址 addr仪表地址 addr仪表地址
    17H  dL数字滤波  Sn(X)-2(只读)  IoH  
    18H  run运行参数  nonc常开/常闭  dL  
    19H  Loc参数封锁  Loc参数封锁  Loc  
    1AH  C01  无  备用  
    1BH  t01   无  FDF  
    1CH  C02  无  CHIA  
    1DH  t02  无  CLOA  
    1EH  C03  无  PHIA  
    1FH  t03  无  PLOA  
    20H  C04  无  ALP  
    21H  t04  无  FSB  
    22H  C05  无  CDIP  
    23H  t05  无  PDIP  
    24H  C06  无  PSc  
    25H  t06  无  CLN  
    26H  C07  无  FLJH  
    27H  t07  无  FLJL  
    28H  C08  无  EJH(补前流量高)  
    29H  t08  无  EJL(补前流量低)  
    2AH-  C09-C31程序数据  无  无  
    55H        
    56H  运行时间