本文介绍了高精度液位变送器测试系统的系统结构和软件设计,重点介绍了基于多线程的多串口通讯协议的开发和程序流程,实现了对液位变送器、传感器参数的大量采集,提高了生产效率,为液位变送器的软件补偿和标定提供了可靠的保证,进而提高了液位变送器的精度和可靠性。
随着微处理器在工业测控中的广泛应用和性价比的降低,出现了以微处理器为核心的高精度的智能液位变送器,这就对液位变送器的生产、检验提出了更高的要求。为了提高精度,通过软件和硬件结合的方法,这就需要对液位变送器和传感器的参数进行大量的检测,形成软件补偿用的表格和判断变送器、传感器精度是否满足要求。本文就是为了满足这一需要,建立以工业控制计算机为主的变送器测试系统。
1、系统结构
变送器测试系统整体结构如图,所示,主要包括德鲁克公司的DPI520系列标准液位发生器3台,吉时利公司的数字万用表2700系列1个,欧姆龙公司的可编程控制器(PLC)C2OO日1台,智能温箱1个,继电器组和变送器、传感器阵列等几部分。由于这些智能仪表上均带有RS232通讯口,而通常的工业控制计算机只带有2个232通讯口,为了增加串口,我们采用MOXA公司的C168日系列的一拖八的多串口卡。
2、系统工作原理与功能
整个测试系统的工作原理为:利用工控机的人机交互界面进行设置要检测的变送器或传感器组、液位大小的设置和温度,通过PLC对所选择的变送器或传感器顺序检测;把采集来的放在数据库里,然后进行相应的计算。
一般情况下,对于液位传感器在使用前,要对其进行温漂补偿和非线性校正,传统的方法就是测试几个温度点下对应液位下输出值根据经验值选用补偿用的电阻,这使得整个补偿后的精度不高。要在全温度范围内得到高精度的补偿效果,需要对传感器在各个温度下的参数进行大量测量,通过公式计算出补偿电阻的大小,提高传感器的精度和可靠性。本测试系统功能之一就是一次多可以对64个传感器进行测试,并计算出相应的补
偿电阻阻值,同时也可以计算出传感器的非线性、重复性和迟滞性,在此基础上得到其精度,并判断其是否满足要求。
随着智能变送器的出现,对变送器的温漂补偿和非线性校正的方法也有原来以单纯的模拟电路调节变为以软件调节为主。软件调节的主要原理就是生产变送器时,对变送器在不同温度、标准液位下的输出进行计算,形成补偿参数预先存储到变送器的程序存储器里,在生产现场,实际应用时,程序根据现场温度和液位自动调用补偿参数,从而完成了补偿过程。本系统的功能之二就是可以对多64台变送器进行测试,进行相关处理后
就可以得到补偿用的参数。
通过使用本系统,一方面可以提高生产和检验传感器的生产效率,另一方面通过对传感器和变送器进行补偿,使得它们的精度大大提高。
3、系统软件设计
由于系统要求多个人机交互界面对大量参数进行设置和监视,我们选用选用了MicrosoftVisuaIC++6.0开发软件系统,操作系统为Windows2000,充分利用其强大的网络功能和稳定性。系统的软件设计主要人机界面的设置、多串口通讯和数据库处理等。人机界面的设置主要是利用VC十+中的控件进行编程,数据库部分主要是存储数据和计算相应的参数,比较简单,这里就不做介绍,下面重点介绍一下多串口通讯的程序设计。
3.1封装串口类
VisuaIC++的微软基础类(MFC)里没能提供通用的串口通信代码,并且采用32位WindowsAPI函数对串口进行操作又十分繁琐。由于系统中的大量数据传送都采用串行口,所以对串口的操作就尤其频繁。我们主要采取面向对象的设计方法,在VC6.O下对常用的串口操作实现一个串口类CSerialP0rt封装了相关的属性和方法,增加对串口操作的透明度,提高串口传输数据的可靠性,屏蔽了底层的细节,方便了对串口操作的编程实现,它可以对一个串口进行读、写和监视其运行状况,并把在串口发生事件传递给主机。
为了对串口进行操作,我们在SerialPOrt.cpp源文件中定义了一系列函数:如用于初始化串口和设置串口属性的InitP0r()函数;用于对线程进行启动和停止的StartMonitoring()、RestartMonitoring()、StoPMonitoring()函数;用于对串口进行读写操作的ReeeiveChar()和WriteToPort()函数。
3.2通讯协议的实现
系统采用的智能流量计,由于是不同的厂家生产的,所使用的协议也是不同的,这就给软件设计带来了一定的困难。采用面向对象的方法从所有的智能仪表中抽象出一些共同的性质(如:端口号、仪表序号、下位机地址,功能描述等等),将归纳起来的共同性质组合起来形成一个智能仪表基类CC0mmen类,还定义了一组标准的仪表访问和数据存取接口,以虚函数的形式给出,再对每一个实际的仪表派生出与自身相匹配的仪表类。对于各个智能仪表我们采用相应厂家提供的通讯协议。
3.3多线程串口通讯的实现
由于工控机要与4个以上的智能仪表进行通讯,而且要长期动态稳定的运行,是整个液位变送器检测系统的枢纽,其可靠性、鲁棒性要求较高,因此整个整个数据采集的驱动程序对各个串口读写协调显得尤为重要,我们使用了多线程技术。再启动串口数据采集驱动程序之前先根据实际仪表连接情况对仪表进行配置,设置每个串口连接的仪表类型和个数,以及基本的串口通讯参数,并进行存储。驱动程序的主线程的任务是负责人机交互的
界面操作和各个串口操作线程的启动与协调,线程间的通信采用Windows的消息机制。