组态软件编程中对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(000000);例如:当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(二进制:00000000)注意的是,对于用作输入的端口,则不应写入1,必须写入0,否则无论外部的开关是接通还是断开,读回的数据都是1。 4、现MCGS已经有最新带帮助文件的驱动:不需要在策略中编写内部函数来实现读写参数代号26以后的数据,可以直接在通道中读写(R0~R5AH),每个通道所对应的参数意义请参照宇电AIBUS通讯协议V7.0说明. 四、结语: 宇电发展至今,自己开发上位机软件,功能强大,并与多家组态软件公司合作,如:MCGS、组态王、力控……等,都能对仪表进行百分之百的操作。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/88216.html