技术文章

VC0020恒温恒湿实验箱数据采集的研究

发布时间:2015-12-26 15:28:37 作者: 信息来源:

 随着生产技术以及信息技术的快速发展,社会生产对高效和快捷、方便的需求也越来越高。人们急待从繁复、单调的手工劳作中解脱出来,去做一些更有意义的事情,尤其是一些工厂的生产线上,人们总是机械、乏味地重复的一种工作,极大的浪费了宝贵的人力资源,又严重的束缚了生产力的高速发展。生产生活的这种需求又极大的促进了新技术的发展。 

  在公司的一些生产线上,有许多设备都没有彼此相连,更没有连到公司的局域网上。人们对实验设备的数据都是手工记录的,既繁杂,又容易出错,而且没有一个比较系统的数据组织方式,对数据分析的难度也加大。这样的工作既耗时耗力,又可靠性不高,也不便于信息的更新和检索。于是,研究出一种更为快捷、可靠的数据采集方式成为一种必然。 
  1 研究对象及研究方法 
  本文选取VC 0020 恒温恒湿实验箱作为研究对象。恒温恒湿实验箱是用来将芯片放在规定的温度及湿度环境下,看芯片的耐高温,耐低温,以及抗湿度性能,公司用它来进行芯片的可靠性和失效性分析。平时,实验室人员需要不断地将设备仪表上显示的温度信息,湿度信息手工的记录下来,并标注好记录数据的具体时间,拿回办公室研究分析,以便确定恒温恒湿实验箱的工作状态和趋势。这样的方法不仅耗费时间,而且可靠性不高。由于人为的失误,难免给分析结果带来较大的差错。因此,需要研究一种更为高效可靠的数据采集方法。 
  VC 0020采用欧陆控制器作为主控制器,PT 系列传感器作为温湿度传感器,温度范围:低温0℃—70℃,最低可达-150℃;高温150℃。湿度范围为: 20—98﹪R.H。主要的通讯端口为RS232串口。 
  于是,可以通过研究分析VC0020的串口通信协议,实现VC0020与PC的串口通信。将通信数据保存为TXT文本文件,建立数据库,并将文件读入到数据库里。然后搭建站点,关联数据库,实现PC端的监控。 
  整个过程的数据流程见图1。 
  本文选取Visual Studio 2005作为集成开发环境,页面设计采用的是ASP.NET开发技术,网页编程语言采用C sharp语言。数据库采用Access数据库。 
  2 VC0020 通信协议 
  VC0020与PC的通信是采取主从问答方式进行的,必须将VC0020设置为从机,才能进行正确无误的通信,否则PC接收不到任何数据。 
  VC0020与PC机通信采用ASCII协议,其采用8位数据位,1位开始位,1位停止位,没有奇偶校验位。通信时,主机需要发送一串命令,VC0020才能返回数据信息,发送的命令内容及格式如图2。 
  根据图2所指的内容及格式可知,$表示命令的开始位,00表示VC0020恒温恒湿实验箱的ID号,I表示请求命令,表示命令结束位,PC->VC0020发送的命令为:$00I。 
  3 数据文件处理及创建数据库 
  将VC0020导出的数据保存为文本文件,并命名成“设备ID+设备位置”的形式。比如,“VC0020+CC1F-REL&FA Lab”,其中VC0020表示设备编号,CC1F-REL&FA Lab,即CC部门1楼可靠性与失效性分析实验室,为设备的位置。文本文件的主要内容及格式如图3所示。 
  其中“$00D0104>Temper [C] 85.0 85.0 ^ <”表示的是温度信息,第一个85.0表示的是VC0020的设定温度,第二个85.0表示当时的实际温度。“$00105Feuchte [%rF] 85.0 85.0 =”表示的是湿度信息。同样,第一个数据表示的是设定湿度,第二个数据表示实际湿度。“$00D0101 MANUAL Frei 23.07.2010 17:08”表示数据采集的时间。 
  因此设计数据库时,可以创建一张名为MachineStatus的数据表,表中创建 “Nom_Temper”、“Act_Temper”、“Nom_Humidity”、“Act_Humidity”、 “Test_Date”5个字段分别代表设备的设定温度,实际温度,设定湿度,实际湿度,以及对应的数据采集时间。另外在PC端监控时,还需知道监控的是具体是哪台设备,以及设备位置以及设备的状态。因此还需创建“MachineId”、“Location”、 “Statas”3个字段代表设备编号、设备位置及设备状态。此外,创建一个名为“ID”的字段,作为数据表的主键,数据格式采用自动增长方式,增长步长为1。 
  根据导出的文件可以看出,通常一分钟采集一次信息,所以可以按数据采集时间,分隔开每条记录。于是在将文本文件插入入数据库前,需要对文本文件进行一个简单的编辑,即在文本文件中时间日期前面插入‘&’字符,作为一条记录的分割字符。经过观察分析,文本中表示时间日期的字符之前,总会出现一个“Frei”字符串,所以只需用查找替换的方法将“Frei”用“&Frei”代替即可。 
  4 创建监控站点 
  页面设计的主要目的是设计一个站点,可以根据需要,分类检索出所需要的设备信息。如通过键入设备ID号,检索出所需设备的信息。键入设备位置,检索出该位置的所有设备的信息。还可以根据日期检索出所需日期的设备信息。在检索出的结果里,点击设备ID号,弹出第二个页面,显示所选设备的详细信息。 
  此次页面设计分为两个页面,第一个页面主要用于按条件检索信息,显示设备的基本信息,第二个页面用于显示所选设备的详细信息。两个页面采用母版页[1]方式统一布局。 
4.1 第一个页面的设计 
  第一个页面的布局设计如图4所示。 
  其中txtMachineId编辑控件用于获取设备ID信息和设备位置信息。 Search和Reset按钮,分别完成搜索和重置功能。RadioButtonList 控件中设置MachineId、Location、TestDate三个单选按钮用于限定搜索的条件。文件上传控件,实现将采集好的数据文件上传到数据库。点选From Date与To Date两日历控件,完成日期区间内所有设备的搜索。对于检索出的信息,使用Gridview控件来显示。将Gridview控件与整个MachineStatus数据表绑定。当页面初始化时,Gridview就会显示设备的编号,设定温湿度,实际温湿度与运行状态等信息。Gridview分页显示,每页设置最多显示5条记录。 
  当控件位置设置好后,在页面初始化函数里添加语句,以实现页面初始化时,编辑框处于活动状态而两个日历处于不活动状态。为RadioButtonList控件添加相应的函数及语句,以实现当“MachineId”按钮被选中时,只能键入设备ID信息,按设备ID进行检索;当选中“Location”按钮时,只能根据设备位置进行检索;当选中“TestDate”按钮时,编辑框处于不活动状态,只能通过时间日期检索。为“Search”和“Reset”按钮控件添加相应的功能函数。当单击“Search”按钮时,就会按相应的条件查询数据库,将查询结果与Girdview绑定,显示相应设备的信息。当点击“Reset”按钮时,编辑框清空,Girdview与整个数据表绑定。为“Sumit”按钮添加相应的函数,以实现遍历整个文件,每遇到一个分隔符时,向数据库插入一条记录。 
  设计好的页面如图5所示。 
  图6中可以看到检索出的数据在GridView控件中显示出来,显示的信息主要有设备编号,设备位置信息和测试日期等信息。选择“MachineId”一列任一设备单击,将会显示对应设备的详细信息,即第二个页面。 
  4.2 第二个页面的设计 
  创建第二个页面时,在页面的左上方添加一个站点地图控件,以完成页面间的导航。SiteMapPath控件的根结点命名为“Main Menu”,指向第一个页面。SiteMapPath控件的子节点命名为“Test Result”,指向第二个页面。SiteMapPath控件完成页面间的切换[2]。 
  在站点地图控件的下方,添加两个FormView控件,FormView1控件按指定的ID查询数据表的全部数据列并与FormView1进行绑定。而FormView2控件位于整个页面的右下角,按指定的ID查询并绑定数据表的“Nom_Temper”、“Act_Temper”、“Nom_Humidity”、“Act_Humidity”、 “Statas”数据列。FormView显示了选中设备的详细信息。而显示所选设备最近一段时间的工作趋势,则需要设计一张图表来显示。 
  VC0020工作状态图表是由DotNetCharting图表控件实现的,总共设计两张表,一张显示温度趋势,一张显示湿度趋势。 
  首先,在页面合适位置放置一个图表控件,并在程序头部引入“dotnetCHARTING” [3]命名空间。然后创建一个名为“chart”的命名空间,在命名空间里建立一个名为“showdata”的类,来定义图表控件,包括图片存放路径,图片标题,图片x座标名称,图片y座标名称,图例名称,图片宽度,图片高度,图片数据源以及曲线表的绘制方法。然后在Drawing绘图程序里实例化“showdata”类的一个对象“show”,来绘制图表。具体的绘图程序[4]如下: 
  private void Drawing() 
  { 
   ShowData show = new ShowData(); 
   //实力化showdata类的一个对象 
   DataSet ds = new DataSet(); 
   //创建一个DataSet对象 
   ds = TdataSet(); 
  show.Title = "Temper Test"; 
   //定义图表的标题 
  show.XTitle = "Id_Num"; 
  //定义图表的x座标名称 
  show.YTitle = "Temper ℃"; 
  //定义图表的y座标名称” 
  show.PicHight = 300; 
  //定义图表的高度 
  show.PicWidth = 500; 
  //定义图表的宽度 
  show.SeriesName = "Act_Temper"; 
  //定义图表的图例名称 
  show.PhaysicalImagePath="ChartImages"; 
  //统计图片存放的文件夹show.DataSource=GetDataSource(ds);show.CreateLine(this.Chart1); 
  //绘制图表图片 
  } 
  其中DataSet对象用来存放查询的数据表信息,GetDataSource函数则完成图表x轴,y轴分别与数据库“ID”数据列和“Act_Temper”数据列的绑定。 
  湿度表的创建同温度表一样,两者通过Temper_test按钮与Humidity_test按钮进行切换。 
  设置好的页面如图7所示。 
  5 总结 
  本文通过研究VC0020,用串口通信的方法,对VC0020的设备信息进行了采集,并通过网页编程的方法,在PC端将信息呈现出来,免去了人工记录的麻烦,也提高了数据的可靠性。由于此次仅是一个初步的研究,信息量也少,所以选用了一个简单的数据库Access。将来随着设备数量的增加,信息量也将增加,小型数据库将不能满足要求,所以在实际应用中还需要将数据库更新为SQL或Oracle等大型数据库。另外VC0020数据文件的保存过程,还是需要人工的参与,需要在今后的研究过程中,继续改进。 
产品咨询