来源:网络转载更新时间:2019-12-20 09:08:51点击次数:7144次
随着微处理器在工业测控中的广泛应用和性价比的降低,出现了以微处理器为核心的高精度的智能压力变送器,这就对压力变送器的生产、检验提出了更高的要求。为了提高精度,通过软件和硬件结合的方法,这就需要对压力变送器和传感器的参数进行大量的检测,形成软件补偿用的表格和判断变送器、传感器精度是否满足要求。本文就是为了满足这一需要,建立以工业控制计算机为主的变送器测试系统。
1 系统结构
主要包括某公司的DP1520系列标准压力发生器3台,某公司的数字万用表2700系列1个,某公司的可编程控制器(PLC)C200H1台,智能温箱1个,继电器组和变送器、传感器阵列等几部分。由于这些智能仪表上均带有RS232通讯口,而通常的工业控制计算机只带有2个232通讯口,为了增加串口,我们采用某公司的C168H系列的一拖八的多串口卡
2 系统工作原理与功能
整个测试系统的工作原理为:利用工控机的人机交互界面 进行设置要检测的变送器或传感器组、压力大小的设置和温度, 通过PLC对所选择的变送器或传感器顺序检测;把采集来的放 在数据库里,然后进行相应的计算。
一般情况下,对于压力传感器在使用前,要对其进行温漂补偿和非线性校正,传统的方法就是测试几个温度点下对应压力下输出值根据经验值选用补偿用的电阻,这使得整个补偿后的精度不高。要在全温度范围内得到高精度的补偿效果,需要对传感器在各个温度下的参数进行大量测量,通过公式计算出补偿电阻的大小,提高传感器的精度和可靠性。本测试系统功能之一就是一次最多可以对64个传感器进行测试,并计算出相应的补偿电阻阻值,同时也可以计算出传感器的非线性、重复性和迟滞性,在此基础上得到其精度,并判断其是否满足要求。
随着智能变送器的出现,对变送器的温漂补偿和非线性校正的方法也有原来以单纯的模拟电路调节变为以软件调节为主。软件调节的主要原理就是生产变送器时,对变送器在不同温度、标准压力下的输出进行计算,形成补偿参数预先存储到变送器的程序存储器里,在生产现场,实际应用时,程序根据现场温度和压力自动调用补偿参数,从而完成了补偿过程。本系统的功能之二就是可以对最多64台变送器进行测试,进行相关处理后就可以得到补偿用的参数。
通过使用本系统,一方面可以提高生产和检验传感器的生产效率,另一方面通过对传感器和变送器进行补偿,使得它们的精度大大提高。
3系统软件设计
由于系统要求多个人机交互界面对大量参数进行设置和监视,我们选用选用了Microsoft Visual C++6.0开发软件系统,操作系统为Windows 2000,充分利用其强大的网络功能和稳定性。系统的软件设计主要人机界面的设置、多串口通讯和数据库处理等。人机界面的设置主要是利用VC++中的控件进行编程,数据库部分主要是存储数据和计算相应的参数,比较简单,这里就不做介绍,下面重点介绍一下多串口通讯的程序设计。
3.1封装串口类
Visual C++的微软基础类(MFC)里没能提供通用的串口通信代码,并且采用32位Windows API函数对串口进行操作又十分繁琐。由于系统中的大量数据传送都采用串行口,所以对串口的操作就尤其频繁。我们主要采取面向对象的设计方法,在VC6.0下对常用的串口操作实现一个串口类CSeriaIPort封装了相关的属性和方法,增加对串口操作的透明度,提高串口传输数据的可靠性,屏蔽了底层的细节,方便了对串口操作的编程实现,它可以对一个串口进行读、写和监视其运行状况,并把在串口发生事件传递给主机。
为了对串口进行操作,我们在SeriaIPort.cpp源文件中定义了一系列函数:如用于初始化串口和设置串口属性的InitPort()函数;用于对线程进行启动和停止的StartMonitoring()、RestartMonitoring()、StopMonitoring()函数;用于对串口进行读写操作的ReceiveChar()和WriteToPort()函数。
3.2通讯协议的实现
系统采用的智能仪表,由于是不同的厂家生产的,所使用的协议也是不同的,这就给软件设计带来了一定的困难。采用面向对象的方法从所有的智能仪表中抽象出一些共同的性质(如:端口号、仪表序号、下位机地址,功能描述等等),将归纳起来的共同性质组合起来形成一个智能仪表基类CCommen类,还定义了一组标准的仪表访问和数据存取接口,以虚函数的形式给出,再对每一个实际的仪表派生出与自身相匹配的仪表类。对于各个智能仪表我们采用相应厂家提供的通讯协议。
3.3多线程串口通讯的实现
由于工控机要与4个以上的智能仪表进行通讯,而且要长期动态稳定的运行,是整个变送器检测系统的枢纽,其可靠性、鲁棒性要求较高,因此整个整个数据采集的驱动程序对各个串口读写协调显得尤为重要,我们使用了多线程技术。再启动串口数据采集驱动程序之前先根据实际仪表连接情况对仪表进行配置,设置每个串口连接的仪表类型和个数,以及基本的串口通讯参数,并进行存储。驱动程序的主线程的任务是负责人机交互的界面操作和各个串口操作线程的启动与协调,线程间的通信采用Windows的消息机制
4结束语
系统采用了多串口扩展控制器,组建称重压力变送器检测系统,通过对变送器、传感器参数进行测试,计算出对传感器补偿用的电阻阻值和对变送器补偿用的参数,把补偿用的参数下载到变送器的程序存储器中,提高了变送器的精度和可靠性。串口数据采集软件设计采用了面向对象的设计(OOP)方法抽象出了通用的串口类和仪表基类;利用Windows多线程和消息机制实现了多串口的通信与同步。该系统在淄博某公司已稳定运行,提高了生产效率,为生产高性能的智能变送器提供了可靠的保证。
参考文献
1 Michael J.Young.Visual C++6从入门到精通[M].邱仲潘等译北 京:电子工业出版社,1999.
2 Peter W.Gofton.精通串行通信[M],王仲文等译.北京:电子工业出版 社,1995
本文源于网络转载,如有侵权,请联系删除
×