当前位置:主页 > 房产 > 财经新闻 > 正文

基于VC的PLC数据采集管理系统

未知 2019-07-11 10:53

0 引 言

 PLC具有可靠性高,系统设计灵活,编程简单,易于安装,抗干扰能力强等优点,但单独的PLC不能提供良好的人机界面和数据处理能力。在实际应用中,往往需要将一组PLC的数据存储、显示和打印出来并对PLC进行实时的监控,应用工业监控组态软件可以解决此类问题。当系统不是很大时,也可以采用VC等工具自己开发出上位机监控通信软件,相对于专业监控组态软件,它具有灵活、小巧、成本低等优点。正是基于现场的应用实际,使用VC开发出了一套满足现场需要的数据采集管理软件系统。

l 现场需求描述

 车间有10台单独的试验台(由OMRON CJlG-HPLC和触摸屏组成),负责检验4种类型制动阀产品的性能参数,并存入各自的DM,EM存储区中,现要求用一台工控机将各台PLC内的数据采集进去,实现产品信息的集中管理,可以灵活地查询、修改、添加、导出所有的产品信息,并能打印出各种指定格式的产品记录单和汇总单;同时需要对PLC工作状态进行监视。

2 系统的硬件构成

  该系统的硬件由1台上位机(工控机),11个RS 232/RS 485转换模块(该系统选用1个FS-485G模块(需外接电源)连接工控机,10个UT-201型连接PLC),10根CJIG-H自由口到RS 232的转换电缆(该系统选用FS-CN26),10台CJIG-H PL及若干双绞线组成,其示意图如图1所示。

3 上位机软件的实现

 3.1 通信部分的实现

  3.1.1 功能描述

  自动将现场10台试验台的紧急阀和主阀信息采集存人数据库;较实时地监视工控机与各试验台的通信状态和通信内容;并可设置COM口;配置待通信的试验台;编排试验员姓名与其编号的对应序列。通信部分的运行界面如图2所示。

  3.1.2 上位机与PLC之间的通信协议

  该系统采用Host Link通信协议,上位机与PLC组成1:N的Host Link通信系统。Host Link采用总线式通信方式,通信的主动权在上位机一方,上位机启动通信;首先向PLC发出FINS命令,PLC收到后会自动识别并加以执行,然后将执行结果返回上位机,上位机以帧的形式发送命令(命令码),PLC也以帧的形式回送执行结果(响应码)。在通信时,PLC与上位机的通信参数(如节点地址、通信波特率、数据格式)应设为一致。上位机的通信设置在对应的VC编写的程序中进行,PLC的通信设置在其对应的系统设定区进行。FINS命令具体格式可在OMRON CJCS通信手册中查找。

  3.1.3 上位机的通信编程

 上位机通过串口与PLC相连,故使用VC的串口通信控件 MSComm,完成对串口的读写工作。在使用Mscomm控件进行读写前,必须先初始化该控件的一些属性,串口初始化代码如下:

  //选择串口,参数为整型变量m_nserialport的值,m_Com为CMSComm类的一个对象
  m Com.SetCommPort(m_nserialport);

  if(m_Com.GetPortOpen()) //打开串口
  m_LCom.SetPortOpen(FALSE);
  m_Com.SetPortOpen(TRUE);
  m_Com.SetSettings(''''9600,E,7,2'''');
  //设置通信参数,必须与PLC设置一致
  m_com.SetInputMode(O); //输入方式为文本传输方式
 m_Com.SetRThreshold(78);
 //接收缓冲区有78个字符时触发OnComm事件
  m_Com.SetInputLen(O);//参数为O表示读取接收缓冲区中全部内容
  m_com.GetInput(); //先预读缓冲区,以清除残留数据

  该程序中使用事件驱动(Event-driven)的方法来接收数据,当串口接收缓冲区中有字符到达时,MsComm控件的Oncomm事件处理函数捕获到相关的通信事件,并被自动调用,在OnComm函数中加入自己的处理代码,即可把PLC中传来的数据进行处理、存储等;通过MSComm控件的SetRThreshold函数设置产生OnComm事件之前要接收的字符数,在OnComm函数中用Switch语句,即可实现对不同的响应码的不同处理。

 通过定时函数和循环控制函数,周期地依次向各个PLC发送读写PLC的FINs命令码,再在OnComm函数中加入对不同PLC响应码的处理函数,就可实时地完成对PLC数据的采集。同时根据响应码的内容监视PLC的运行状态。PLC自动将检验的产品性能数据连续存入D存储区中,当存储区满时自动从头循环覆盖存放,上位机定时将PLC的D存储区的产品数据读入、处理并存人数据库。该系统中上位机1 min内可依次读完10台PLC的各自1条产品性能信息,而PLC检验完1个产品需15 min左右,故可满足相对的实时性。为保证上位机完整且不重复地读取PLC的所有产品性能数据,在各台PLC中对每种产品都定义了A,B两个存储单元,A单元存放上位机读取过的最后一条信息地址,当上位机每读完1条信息,就由上位机对此单元的内容更新;B单元存放最新的产品信息存放地址,当PLC每产生1条新信息时,就由PLC更改该单元内容;上位机在读取产品信息前,先对比A,B单元的内容,决定是否进行数据读取和读取哪个地址的数据。这样即使上位机与PLC断开一定时间后,当重新连接上,也可将以前没读到的信息读入。程序流程图如图3所示。

  在上位机中向PLC发送命令码时,必须加相应的FCS校验码。该校验码是8位的二进制数转换成的2位ASCII字符。这8位数据是将1帧中校验码前所有字符的ASCII码按位连续异或的结果,转换为字符时,按照2位16进制数转换成对应的数字字符。同时,当接收到PLC自动发回的响应码时,为确保接收数据的正确性,也必须用响应码中的FCS进行校验。系统中的发送命令码、接收响应码、生成命令码和检验响应码的代码如下:

(1)发送命令码

  3.1.4 设置COM口、配置试验台、编排试验员的实现程序

  设置COM口、配置试验台、编排试验员的实现程序还需有以下功能:设置通信的COM口;配置实验台,根据PLC的工作状态,选择需进行通信的PLC;编排试验员,由于PLC中存放的是试验人员的工号,故需在程序中建立一张表将工号对应为姓名,再将该姓名存入数据库。

  以上功能的实现,是通过在程序中写配置文件,将配置信息存入硬盘,程序启动时再从硬盘读取相应的配置信息。VC中用GetPrivateProfileInt和WritePri-vateProfileString函数实现配置文件的读写。

  3.2 查询打印部分的实现

  用户登陆后,可对从PLC中采集到数据库中的数据进行查询、打印、删除、修改、备份,并将数据导出到EXCEL等,系统管理员可对一般用户进行相应的管理。查询部分的界面如图4所示。

  3.2.1 VC与SQL Server 2000的连接

 该系统中VC通过ADO访问数据库,ADO是最新的数据库访问技术,由3个主要对象Connection,Command,Recordset和几个辅助对象组成。Con-nection对象提供OLE/DB数据源和对话对象之间的关联;Command对象封装了数据源可以解释的命令;Recordset用于表示从数据源中返回的表格数据;为了方便地在程序中访问数据库,需要进行适当的封装,该系统中定义了一个类ADOConn封装了对数据库的基本操作,在此后的数据库访问中可以方便地用ADOConn类的对象进行操作。

  利用SQL Servet 2000的企业管理器,在数据库中为PLC上的各种产品的检验报告各建立一张表,以存储PLC上传来的各项信息,此外还需建立一张用户表来管理用户的帐号和密码。然后在VC程序中对每张表定义一个类,类的成员变量对应表的列,类的成员函数是对成员变量和表的操作,以方便程序对这些表的操作。

  3.2.2 各功能在VC中的实现

  查询、修改、添加功能是在连接上数据库后通过执行相应的delete,insert,update语句来实现的;可在SQL Server2000的企业管理企中设置备份调度来实现备份,也可在程序中写BACKUP DATABASE命令来实现备份;VC中实现数据库数据与Excel表格数据的互导,可以充分利用Exeel处理数据的强大功能,增强程序的数据处理能力和与外部数据的交互性,程序中采用这种方式来导出产品数据汇总表,以便存档、复制和打印,具体的实现代码较长,读者可参照相关VC资料来实现。

  VC中实现打印功能的方法有:将数据导入到Excel,World中进行打印;安装第三方的打印控件(如水晶报表)实现;若是基于单/多文档的程序可通过其封装的打印功能实现。该系统中,通过将数据导入到Excel中的方式来打印汇总表,而各个产品的报告单则通过编写基于对话框的打印程序来打印,其方法是通过CPrintDialog类的GetPrinterDC函数得到打印机的设备环境,再通过CDC类的StartDoc,DrawText,Selec-tObject等函数绘制打印的图表并打印输出。系统中用CDC类的开始打印新页函数StartPage和结束当前打印页函数EndPage来实现连续打印多张报告单。

4 结 语

 windows环境下的应用程序编程是目前的主要趋势,PLC与上位机的通信是目前工业自动化发展方向之一。利用Visual C++6.O和SQL Server 2000,在Windows XP环境下开发了OMRON PLC的数据采集、存储和查询软件,其投资少,可靠性高,具有强大的数据库功能,现已成功运用于某厂的产品检验车间。若需要控制各PLC的设备,只需修改相应的命令码即可实现。

标签