组态软件编程中对AIBUS通讯协议的理解
关键词:AIBUS通讯协议、组态软件
一、 通讯协议的正确理解
AIBUS协议及快速通讯:
早在1994年宇电推出的基于RS485通讯接口的AIBUS通讯协议,简单高效又功能齐全。目前的产品在RS485通讯19200波特率下,平均每台仪表读取3个常用变量及1个参数的速度仅20ms,是常用如MODBUS协议的进口仪表的3-10倍以上,利用采用AIBUS协议的AI系列仪表组建FCS结构的计算机监控系统,每个串口连接50台仪表仍能获得满意的数据刷新率,加上多串口及多机连网,无论组建小系统还是大、中型系统均可达到与DCS同等使用效果。
采用AIBUS协议的AI仪表在9600波特率下能在40ms内向上位机传送4个重要数据,比采用MODBUS协议的进口仪表速度高3-10倍以上,因此即使采用廉价的RS485通讯,AIFCS也具备如DCS或FF、PROFIDBUS等高价现场总线系统同等的使用效果,并可以组建大型系统,而不象通常进口仪表那样只能应用于小型系统。RS485不仅价格低,还具备布线简单、对通讯线要求低及通讯距离长等优点。
AI系列仪表使用异步串行通讯接口,接口电平符合RS232C或RS485标准中的规定。数据格式1个起始位,8位数据,无校验位,1个或2个停止位。通讯传输数据的波特率可调为4800~19200 bit/S,通常用9600 bit/S,单一通讯口所连接仪表数量大于40台或需要更快刷新率时,推荐用19200bit/S,当通讯距离很长或通讯不可靠常中断时,可选4800bit/S。AI仪表采用多机通讯协议,采用RS485通讯接口,则可将1~80台的仪表同时连接在一个通讯接口上。串口调试设置如下图:
根据宇电AIBUS通讯协议,AI仪表采用16进制数据格式来表示各种指令代码及数据。AI仪表软件通讯指令经过优化设计,标准的通讯指令只有两条,一条为读指令,一条为写指令.以AI-808P为例利用此串口通讯工具与其通讯,当要读仪表的设定值时,发送8个字节分别是:
即要发送的8个字节分别是81H 81H 52H 00H 00H 00H 53H 00H 仪表中的地址ADDR=1,00H是仪表的参数代号表示AI-808P的STEP程序段,53H 00H是校验码,采用16位求和校验方式,读指令的校验码计算方法为:要读的参数代号*256+82+ADDR(10进制算法)这里是0*256+82+1=83转换为16进制就是53H为校验码的低字节,00H是高字节,在发送的时候要倒置.
AI系列的仪表通讯协议中没有说明测量值是哪一个参数代号,而是无论执行读/写指令后,仪表都会自动返回以下10个字节的数据:
例如我要读取某一台仪表的PV值,只要执行该仪表对应通讯协议中任意一个参数代号就可以有PV值返回,如图2以读取00H(给定值)这个参数代号为例:
图2中40H 02H为返回的测量值高位在前,低位在后,读取的时候要倒置(其他数据读取时也是如此),也就是0240H,转换成10进制就是57。6,有带一位小数点。由于是读00H这个参数代号的值,就是第7、8个这字节的数据,也就是01H在此例中仪表执行在第一段。
如果是写参数,则发送以下8个字节:
举写(T01)1BH这个参数代号为例,写入数为-1时,则要发送的8个字节是81H 81H 43H 1BH FFH FFH 43H 1BH如下图:
写指令的校验码计算方法为以下公式做16位二进制加法计算得出的余数(溢出部分不处理):要写的参数代号×256+67+要写的参数值+ADDR,若是要写入负值时,则应当把负值转换成补码在转换成10进制,算出的值减去65536换成16进制发送,所以要写入-1时,57(1BH)*256+65535+1-65536=6979(1B43H)发送时要倒置。返回来的10个字节的数据中FFFF就是所写的参数值-1。
对于AI系列仪表,不论是读/写任可一个参数都是用这两条指令,编写容易能完整的对仪表进行操作。二、AI-808PAK5S型仪表的程序通讯与MCGS组态软件编写内容:
与MCGS组态软件通讯时,选择宇光系列智能仪表的驱动,由于软件中能设置的参数的代号只到19H,所以对于宇电程序型仪表只能通过编写内部函数来实现读写1AH这个参数代号以后的参数,实现的方法;
①:要先在实时数据库中建立好要读的变量,如C01、T01……等以C01~T02为例,变量类型为数值型。
②:建立好后则进入运行策略进行策略组态,新建策略为循环策略或用户策略,进入编写脚本程序如下图3,是读以下参数的命令!setDevice(设备0,6,“read(26,1,C01)”),
意思是把26中这个参数代号中的数据读到C01这个变量中;
③:写参数的命令与读是一样的如,!SetDevice(设备0,6,“write(26,1,C01)”):写数据应当建立的设备命令为用户策略(不能用循环策略),如下图4:
④:为了能在运行画面中随时写入参数代号26以后的数值,应当在实时数据库中建立与之前变量同等个数的变量,如下图5;
⑤:在组态动画窗口中,设置属性时输入与输出时不能为同一个变量,应当设置为与之对应的一个,如C01对应sdc01……,做一个按钮属性设置为执行运得策略块,在脚本程序中写C01=sdc01如下图6:
则在运行画面中要设定某一值时都需点击这个按钮。
三、AI-3011开关量状态在MCGS组态软件上的读取:
执行读指令,仪表模块上的开关量状态按D0D1D2D3D4D5D6D7D8D9的顺序,由低到高按二进制码顺序排列在参数编号R10中,它的数据低10位(D0-D9)表示对应的开关量状态。举例MCGS中的操作。
①:开关量状态读取:仪表的驱动选宇光系列智能仪表,表类型选择AI-708,在设备内部属性中读写SC这个参数就可了,操作方式为读写,小数点位置固定为0。开关量的状态D0~D9在MCGS中是用10进制数表示的,例如以上各位均无继电器输出或外部开关量断开时,SC中的参数值为0(二进制:0000000000000000)全部动作或外部开关接通时,SC参数值为1023(0000001111111111);例如:当D1、D2接通,其余断开时,SC参数值为6(二进制数为0000000000000110)
②:开关量状态的输出:MCGS欲控制AI301系列仪表上的的继电器动用时,向参数SC写入对应当的状态字即可,例如D0、D1、D2、D3、D6、D7为继电器输出,D4、D5、D6、D8、D9为开关量输入,正常工作状态时D5和D8接通,现需要使D0、D1、D3、D7继电器接通其余端口保持正常工作状态不变,应改变必须向参数编号SC写入139(二进制:0000000010001011)注意的是,对于用作输入的端口,则不应写入1,必须写入0,否则无论外部的开关是接通还是断开,读回的数据都是1。
4、现MCGS已经有最新带帮助文件的驱动:不需要在策略中编写内部函数来实现读写参数代号26以后的数据,可以直接在通道中读写(R0~R5AH),每个通道所对应的参数意义请参照宇电AIBUS通讯协议V7.0说明.
四、结语:
宇电发展至今,自己开发上位机软件,功能强大,并与多家组态软件公司合作,如:MCGS、组态王、力控……等,都能对仪表进行百分之百的操作。
提交
宇电AI温度控制器在箱式电阻炉的应用
宇电AI-7048D5在玻璃非球面成型机上的应用
基于AIBUS与各PLC之间通讯及与AIFCS计算机系统组建
宇电AI-7048及AI-2070总线式无纸记录仪在塑料机械上的应用
宇电AI仪表通过无线GPRS来实现远程数据采集