1 监控系统构成
整个监控系统由A/D模块、D/A模块、CPU、传感器、电气转换器、平板电脑组成,如图1所示。 上位机对数据进行分析、存盘、综合处理、打印、报警、图形显示、人机对话,并可通过数据传送对PLC进行控制。
2 监控软件的设计
2.1 窗体设计
在软件的编程过程中,人机界面(MM,)非常重要,因为它直接与操作员产生信息交流,友好的人机界面要求能真实再现控制设备的状态以及准确的采集所需参数的数据,这主要依靠VB 6.0的控件组合及原代码完成。整个人机界面包括硫化状态画面(主画面)、实时曲线画面、数据查看画面、历史曲线画面、工艺编辑画面、报警画面、口令画面、开关状态画面,各画面间可以相互切换。当然也可根据用产习惯编辑不同的人机界面,具有很好的灵活性。它实时采集硫化机温度压力信号,并将其保存在以日期为名称的数据库里。显示每锅轮胎硫化的时间、步序参数数据,产量、胶囊计数、本机目前的信息也一目了然,棒图控件能动态表明每条轮胎的硫化进程,并有百分数提醒操作员。如果某一阀门打开,主画面中相应阀门名称的颜色变化,管路里就会有液体流动的动画,形象再现了阀门状态的变化,这可以在picture控件中应用API函数实现。清零菜单可分别对左右计数和产量进行清零。单击"通讯"按钮通过串口与PLC通信,进行数据交换,数据采集频率可在Timer控件中设定。主画面为监控系统的窗口,基本上所有操作员需要了解的数据都集中在这里,其画面的友好程度及功能的完整性直接影响人机界面成功与否。
实时曲线画面实时跟踪硫化机的温度压力参数,可分为圆盘型和直线型。圆盘型尊重原有圆盘记录仪的习惯,以一天为单位,实时记录每一时间的数值,在实时数据与上一时间数据间画圆弧,这样能准确显示数值的变化情况。直线型以一小时(一般轮胎硫化时间在一小时内)为单位显示,如果采集完一个小时数据,则实时曲线以采集频率从右向左漂移,这时在Picture控件最右端显示当前数值对应的曲线,这种动态漂移效果可由WINDOWS API函数实现。这两种曲线方式各有千秋,前者可以直观了解当天所有轮胎的曲线情况,但上位机的显示屏显示一天数据,图形就显得小,分辨率不高。者清晰度高,但只能显示当前一段时间的映线,如果需要更长时间的曲线,得从历史画面中查看。一般来讲,两者兼顾应用,相得益彰。每天采集的数据都存放在当天的数据库里,要查看哪天的曲线只要打开该天的数据库就可以画出该天的历史曲线。
工艺编辑画面:所有需要修改的参数都集中在工艺编辑画面里,步序、分步时间、阀门状态、PID参数、延时设定、硫化规格、机号都可修改。该画面功能多,操作较为复杂,但主要还是围绕数据库做文章。建立一个数据库与Treeview控件联接,数据库中包括各种工艺号,每个工艺号为一个表(Table)。单击表名,该表的内容显示在 Datagrid控件中,可以通过键盘修改表的内容。其它画面不再详述。
2.2 上位机与PLC间的通信
在上位机链接通信中,上位机多是以主态同PLC进行通信,命令一般从上位机发至PLC,任何数据都能从PLC发送至上位机。两者间的通信通过上位机的串口与连接实现,并遵循RS-232协议,其命令格式为: @ 节点号 标题码 FCS检验码 结束符 响应码为: @ 节点号 标题码 结束代码 正文 FCS检验码 结束符 用V 8 6.0编写通信程序时,要用通讯控件(Mscomm)。将通讯控件调入后,还需编通信代码, 如PLC采集的内温、内压、外温、外压存芯正数据区DMOOOONDM0003,主画面的内温、内压、外温、外压分别显示在Label 1(0)~Label 1(3)中。
则在VB6.0下建立的通信代码如下: Private Sub Timer 1-Timer() Form l. MSComm l. CommPort=1’使用COM l端口 Form l. MSComm l. Settings="9600,e,7,2"’设置通信条件 Form l. MSComm l. Port Open=True’打开串口 R$="@ 00RD00000004"’读PLCDM0000-DM 0003的内容 RD$=R$+fcs(R$) Form 1. MSComm 1.In Buffer Count=0 Form 1. MSComm 1.Output=RD$+Chr$(13)’发送命令 Do Dummy=Do Everts(1) Loop Until Form 1. MSComm 1. In Buffer Count>=27 Instring$=form1. MSComm 1. Input’接受数据 Label 1(0). caption=MId$(instring$,8,4) Label 1(1). caption=MId$(instring$,12,4) Label 1(2). caption=MId$(instring$,16,4) Label 1(3). caption=MId$(instring$,20,4) From1. MSComm 1. Port Open=Faise End Sub
数据是以帧为单位发送的,每次接受一帧时计算FCS并将结果与包含在帧中的FCS比较使之能检查帧中的数据错误。FCS是转换成2个ASC Ⅱ字符的8位数据,这8位数据是对帧开始数据直到此帧正文结束的数据进行异或运算的结果。
VB 6.0下的FCS函数代码如下: Function fcs(O$) Dim B%,I%,Ⅱ%,FF$ B%=0 Ⅱ%=Len(O$) For I%= I TO Ⅱ% B%=B%×or Asc(Mid(O$,I%,1)) Next I% FF$二He×$(B%) 1f Len(FF$)=1 Then FF$="0"+FF$ End If Fcs=FF$+"*" End Function
3 结束语
本例已成功地应用于硫化机自动控制系统中,从实际运行情况,状态良好。当然,它有待不断完善,使之画面更丰富,功能更强大。
新闻中心