咨询电话
ENGLISH0755-88840386发布时间:2020-10-21 13:45:56 |来源:网络转载
0引言
随着科学技术的进步及生产力水平的提高,工业生产朝着集成自动化方向发展[1],在许多工业现场中都会用到称重设备,而现在使用的称重仪表显示字体较小,对操作者来说,远距离读数很不方便,特别是在工作量大、工作繁忙的时候,仪表显示界面信息不够清晰直观将直接加重操作者的工作负担,故采用具有一定技术集成的触摸屏与仪表进行连接、通信,使之与仪表同步并大字号实时显示测量数值,从而减轻操作者的负担,间接达到提高工作效率的目的。
1硬件系统组成与功能
1.1硬件系统组成
该文硬件系统由触摸屏、称重仪表[2]、称重传感器、220V交流电源和24V直流电源构成,硬件结构如图1所示
系统工作原理:称重传感器读取称重重量并在托利多称重仪表显示出来,供产品检测人员记录查看,托利多称重仪表通过RS232串口数据线把重量数据传到触摸屏内部的数据内存区中,内部处理器对传来的数据进行截取、校验、二次校验,再转换成有效信息,最后在触摸屏上显示出来,实现与称重仪表的同步显示,方便工作人员对工业现场称重状态的实时监视。
1.2硬件系统功能
触摸屏:由24V直流电源供电,通过RS232串口通信数据线接收称重仪表传来的实时数据,然后对接收的数据进行截取、存储、校验、转换,没有错误后实时显示出来,最后在触摸屏上以大字号实时显示称重仪表上的数据值。
称重仪表:由220V交流电源供电,通过信号线对称重传感器传来的模拟量数据进行A/D转换[3],存储到称重仪表中并显示称重值,并把转换的数字量数据发送给触摸屏。
称重传感器:用于称重重量,获得具体的重量测量信息,并通过RS232串口通信数据线将获得的重量数据以模拟量的形式传输给称重仪表。
2上位机程序设计
2.1程序设计流程
软件设计流程如图2所示,
基于威纶通EasyBuilderPro开发环境,一方面对组态界面开发环境的显示进行合理地组态布局,另一方面对通信方式进行编程,借助内部函数对仪表实时发过来的数据进行加工处理,进行数据截取、校验、转换、显示等步骤。
2.2通信数据传送与处理
为使硬件系统与软件系统很好地结合,两者通信方式的参数设置需要一致,上电后对与通信数据有关的称重仪表进行参数设置,而软件编程的算法是保证系统准确实时显示的核心部分。
2.2.1对IND236称重仪表通信设置
IND236称重仪表通过RS232接口进行数据传输[4],选择相应型号的触摸屏MT8121iE/MT8150iE(1024×768)进行开发,IND236称重仪表支持两种串行端口,分别为主板上的标准串口COM1和可选串口COM2,该文选用COM1为通信端口,并将其设为连续输出的模式,IND236称重仪表具有连续输出模式的特点,在传输中可以连续发送重量数据和称重状态信息,通过数据线把数据提供给触摸屏,该数据含有17或18个字节,按标准连续输出的格式输出[5],如表1所示,信息的起始标志为STX,可查ASCII码表得到,即0x02作为文本的开始,CR为结束标志,即
为0x0D。
连续输出格式说明:
1)ASCII文本开始字符(0x02),始终发送。
2)显示的重量,可以是毛重或是净重,6位,没有小数点或符号,不足6位前补空格。
3)皮重,具有6位皮重数据,在此显示的字段中没有小数点。
4)ASCII回车<CR>字符(0x0D)。
5)启用和校验时需要校检位的发送,校验和用于检测数据发送中的错误[6]。
由于触摸屏MT8150iE使用COM1口与托利多仪表进行通信,故将接口类型设置为“RS232”,然后对COM1口进行通信参数设置,点击COM1口对应的“设置”,根据IND236对参数配置的要求,选用其默认参数配置,将波特率设定为“9600”,数据位设定为“8Bits”,校验位设定为“None”,停止位设为“1Bits”,超时设为“1.0”,设备属性窗口和通信端口设置如图3所示。
2.2.2利用内建函数接收数据
首先用到通信相关的函数即INPORT为内建函数,使得触摸屏可以接收仪表数据,具体格式为:IN ̄PORT(read_data[start],"device_name",read_count,return_value),从串行端口或者以太网络读取数据至HMI,这些资料保存在read_data[start]~read_data[start+read_count-1]一维数组中,device必须选择为“FreeProtocol”PLC类型,read_count是设定需要读取的命令位组长度,可以是常数或者变量,若此函数能够成功的从PLC或者控制器中读取数据,则return_value值为1,否者为0,触摸屏每个周期从仪表获得数据后,根据开始标志与结束标志从中提取出所需信息,存入数组中等待进行下一步解读,程序语句如下:
INPORT(response1[0],"toledp",40,return_value)
∥数据读至HMI取40位至数组,返回值为1
i=StringLength(response1[0])
∥变量i为取数组response1[0]字符串长度
2.2.3数据截取与校验程序
为保证数据同步显示,需要对仪表发来的数据实时处理,通过INPORT内建函数对称重仪表发来的数据进行截取、校验、转换处理,才能保证截取的数据达到同步显示的效果,是保证称重仪表同步正常显示的关键一步,程序如下:
Ifi>=40then∥对于response1[0]长度大于40位的则清空缓存区
PURGE(1)∥i为短整型变量,如果大于40则清空COM1的缓冲区
jj=0∥给短整型变量jj赋初始值
forii=0to39∥ii的值从0~39,共40个
ifresponse1[ii]==0x02then∥对数组中的数据进行判断,哪个为0x02
jj=ii∥jj为短整型变量,代表第几位是0x02,并跳出循环体
breakendif
next
forj=0to16∥把截取数据进行赋值,i为短整型变量
ji1=ji+j
response[j]=response1[ji1]∥把截取17位标准连续输出存到response[0]一维数组中
next
endif
为保证称重数据在触摸屏上显示正确无误,又增加了二次校验功能,使得显示更加稳定,经过实验,在半年多的实际应用中,没出现任何错误,保证了用户在实际应用中的体验,程序段如下:
ifresponse[0]==0x02andresponse[16]==0x0Dthen//检验数组第1位、第17位是否满足条件
GETBIT(response[1],A0,0)∥位状态转换,解析出A位数位0的数值
GETBIT(response[1],A1,1)∥位状态转换,解析出A位数位1的数值
GETBIT(response[1],A2,2)∥位状态转换,解析出A位数位2的数值
GETBIT(response[2],B1,1)∥位状态转换,解析出状态字节B位数位1的值
GETBIT(response[2],B4,4)∥位状态转换,解析出状态字节B位数位4的值
GETBIT(response[3],C0,0)∥位状态转换,解析出状态字节C位数位4的值
GETBIT(response[3],C1,1)∥位状态转换,解析出状态字节C位数位4的值
GETBIT(response[3],C2,2)∥位状态转换,解析出状态字节C位数位4的值
ASCII2FLOAT(response[4],read_data,6)
endif
当完成二次校验时,则需要对截取的数据分段进行译码处理,把带有负数的单位以及称重仪表中的单位对应起来的数据进行转换处理,当完成这些必要的步骤后,需要在触摸屏上对应位置正确显示。
出称重数值以及单位,根据IND236的连续输出格式,数组中第5~第10为重量的数值信息,故从数组中取出第5~第10的数据,因组态软件提供了众多十分方便的转换函数,故在此可直接调用组态软件携带的函数ASCII2FLOAT,将数据由ASCII码转为浮点数,再从数组中分别取出3个状态位对应的数据,即数组中的第2~第4个数据,根据表提供的参数设置手册,对IND236的状态字节位的定义分别确定小数点位置、数值的正负和单位,对数值进行相应的处理并传送到相应的地址,程序如下:ASCII2FLOAT(response[4],read_data,6)
ifB1==1then∥状态字节B位符号定义,B1为1则为负号,为0则是正号
read_data=read_data∗(-1)∥显示数据数值的正负号转换
endif
ifA2==0andA1==1andA0==0then∥010代表小数点后没有数值
result=readdata
_
endif
ifA2==0andA1==1andA0==1then∥011代表小数点后有一位数值
result=readdata/10
_
endif
ifA2==1andA1==0andA0==0then∥100代表小数点后有两位数值
result=readdata/100
_
endif
SetData(result,"LocalHMI",LW,20,1)
ifB4==0then∥B4字符型变量,状态字节B
位数位4,lb=0weightunit[0]=′l′weightunit[1]=′b′endif
ifB4==1then∥B4字符型变量,状态字节B
位数位4,kg=1weightunit[0]=′K′weightunit[1]=′g′endif
ifC2==0andC1==0andC0==1then∥对应的数位为001时,重量单位为克(g)
weightunit[0]=′′weightunit[1]=′g′endif
ifC2==0andC1==1andC0==1then∥对应的数位为011时,重量单位为盎司(oz)
weightunit[0]=′o′weightunit[1]=′z′endif
2.3触摸屏与称重仪表大字号实时显示
把需要的数据都解析出来后,调用内建函数,使传过来的数据以与称重仪表上的称重值和所对应的单位在触摸屏中显示出来[7],实物图如图4所示,不需要再连接任何型号的PLC等设备,既减少了设备成本又能准确、实时传输并大字号显示,满足了客户在多变化的工厂环境下的使用需求。
3结语
该文依托威纶通触摸屏,使用梅特勒-托利多的工业电子秤为硬件基础,借助威纶通触摸屏自带的开发工具,使得系统上下位机更稳定地配合,使用RS232串口通信接口来传输数据,实现对称重仪表数据大字号同步显示,该系统经调试运行后现已投入使用,经过半年多的现场运行,表明该文数据传输可靠,效果理想,满足了生产需求,程序代码可移植性好,具有较大的市场推广价值,系统设计方案简单,经济、有效,同步性稳定可靠,也提高了设备的可维护性,成本低,使用方便。
文章来源于网络转载,侵删