HART协议智能仪表自动校验系统的设计和实现

来源:网络  作者:网络转载   2019-09-22 阅读:158
摘 要:简单介绍了HART协议智能仪表的自动校验系统的设计思想和实现的方法, 提出了应用HART通信技术、计算机测控技术和数据库技术来实现比较新型的自动校验系统。系统已经在现场得到应用。 关键词: HART协议,GPIB总线,多任务,SQL Server Abstract: The design and implementaion of auto calibration and measurement system for HART instrument is introduced, and the system integrated the HART communication technology, computer based measurement& control technology and database technology. The system have already been used in the factory. Keyword:HART Protocol, GPIBbus, multi-task, SQL Server1、引言: HART (Highway Addressable Remote Transducer) 协议是最早由Rosemount公司开发并得到众多仪表公司支持的通信协议,其实现了在现有模拟信号传输线上的数字通信。 在对HART协议智能仪表的校准和检验过程中,工作人员需要使用多种标准的仪器,HART协议手操器等设备来完成,其中操作过程比较复杂,对工作人员的要求比较高,效率难以满足生产的需要,而且还有人为误差,校准和检验的数据纪录、存档的不便等缺点。 所以,我们考虑如何利用HART通信技术、计算机测控技术和数据库技术来实现HART协议智能仪表的自动校准、检验及数据管理为一体的系统。2、系统分析 通过对系统的分析,确定了系统的总体要求以及所需要的硬件环境和支撑软件,以及用户对系统的功能、性能等方面的要求,简单的概述为如下几个方面: * 系统功能的要求:对HART协议智能变送器的校准,检验,出厂设置。 * 系统数据的要求:数据的自动采集、存储和输出。 * 系统运行的要求:需要构建一个容易实现的软、硬件平台。 * 系统性能的要求:高精度,高可靠性,高效率,极易操作。 * 异常处理的要求:各种异常事件的处理,保护,自动诊断。 * 将来可能提出的要求:保留充分的可扩充性。3、自动校验系统的硬件集成 自动校验系统的硬件集成主要考虑到较好的可扩充性、性能价格比和易于升级,为此我们采用一台带有ISA插槽的计算机作为主要控制的部分,如图(1)所示:  利用安装在计算机内部的一块ISA总线的GPIB接口卡,就可以连接带GPIB模块的标准电压/电流信号发生器、标准压力信号发生器(压力信号发生器可以通过级联多台设备的方法来满足量程和精度的需求)、高精度数字万用表等,就可以自动完成模拟信号发生和模拟信号的采集。  通过连接在计算机串行口上的HART信号的调制解调器,来取代HART手操器,可以实现由计算机自动完成与仪表间的Hart通信。通过计算机控制的一块 ISA接口I/O卡驱动一块继电器输出卡,实现各接口之间的自动转换和信号灯的控制等。同时I/O卡还负责接收校验系统面板上用户的开关输入。4、自动校验系统的软件设计 4.1 概述 自动校验系统的软件设计要除了要能够实现系统的各种功能的实现,还有能够有很良好的人机界面,可靠的性能等要求。为此,软件的支撑和运行平台选择WindowsNT WorkStation4.0, Windows NT是一个32位,抢先式多任务的操作系统,工作稳定可靠,具有很强的防崩溃机制,通过多进程和多线程的新机制可以实现应用程序的并行处理,对实现通信应用程序的快速响应有很大的帮助。 软件设计采用面向对象的方法, 软件开发的平台采用Microsoft Visual C++6.0,主要是它有功能强大MFC类库和Win32API的支持,使用也相当灵活,既容易开发出良好的 Windows图形界面的应用程序,又可以支持底层的各种通讯协议的定义和封装等,还提供多种对数据库操作的方法等。 由于自动校验系统还包含了产品的信息管理系统, 我们采用Microsoft Sql Server2000构建产品信息数据库, SQL Server 是Microsoft公司推出的一个大型数据库系统,使用非常广泛,与Windows NT达到了完美的组合,如果企业实现了ERP系统,也可以很方便的利用这个数据库。对数据库存取使用Visual C++ 6.0 提供的ADO ( ActiveX Data Object) 方式, ADO定义了一组COM对象以操作不同数据源的数据,为不同类型的数据提供了一个非常通用的接口,不管这些接口是在单机还是在分布式的网络上,可以在花费较少的时间的前提下开发客户/服务器应用系统。 4.2 模块化的设计 根据自动校验系统需要实现的功能和性能,在实现阶段对其进行了模块化的划分,主要包括4个子系统和8个模块(如图2所示):图(2) 1) 操作员子系统主要面向于使用校验系统进行仪表校准检验的人员,他们将使用操作员账号登陆系统的用户,共有4个模块。 a. 设备驱动及控制模块主要向自动校验系统软件提供了所有设备的接口,属于校验系统软件的最底层部分和支撑部分,主要描述和定义了系统各个设备的“语言”,正是由于设备比较多,不同厂家设备的通讯方式和指令格式相差也比较大,为了正确而又简单的完成的与各个设备的对话,我们采用了C++语言以面向对象的方法将GPIB通讯,I/O控制, HART通讯,仪器控制和驱动等封装成一个个类,将其所有数据成员私有化,把具体指令的数据结构的实现等的细节放到类的内部,对这些设备的读写等操作只要使用这些设备自身提供的方法,实现了数据的安全性和代码的可重用性,而且非常的简单方便。 对HART协议进行了封装,定义了HART通讯所用到的数据类型和结构,如HART的浮点数,ASCII码的压缩,长地址,短地址,以及通用的HART数据帧(包括前导符、分界符、地址、命令号、字节数、数据、校验字节、响应码等)的组装、发送以及接收的方法, 这样需要发某一条HART命令时, 只要根据HART协议查出这条命令需要的数据,用HART数据帧组装的方法填入数据,再分别使用HART数据帧发送以及接收的方法就可以了。 对GPIB接口卡和I/O卡提供的DLL 函数进行了重新封装,如在GPIB接口卡的类包含了PC需要的讲、听和控制的方法,对GPIB接口的标准的仪器进行的封装,就可以继承GPIB接口类,这样定义仪器所支持读、写操作时,就可以使用GPIB接口卡提供的函数。 定义了对各种仪器及设备的读/写的操作和方法。包括对标准电压/电流信号发生器,标准压力信号发生器,频率信号发生器,数字万用表并口、串口通讯类封装了打开端口,配置端口,以及读,写的操作的Windows API函数, 需要配置的结构有DCB, COMMTIMEOUTS等, 主要使用函数的有CreateFile, ReadFile, WriteFile等。 b. 数据发送和采集模块主要是通过对设备驱动模块的访问,完成了所有需要的对数据发送和采集的的方法的封装,这些方法基本上都是使用设备驱动模块定义了的设备或仪表自身提供的方法,并将这些方法提供给变送器检验检验模块。 * 定义及实现了对HART变送器进行电流微调的方法 如调整DAC零点,首先将发送HART 40号命令,参数为4.0,将输出电流锁定为当前零点 ,然后采集电流表的读数并类型将其转换成HART的浮点数,再发送45号命令将电流表的读数发送给HART变送器进行校准,然后再次采集电流表的读数,判断实际电流输出是否满足精度要求,如果满足精度要求,则发送40号命令,参数为0.0, 退出校准,否则重复上述步骤。 * 定义及实现了对HART变送器进行出厂校准的方法,如对于1151压力/差压变送器,通过发送特殊命令 132号命令设定的传感器类型和量程范围, 发送133号命令确定校验点为0,进入出厂标定状态,然后进行零点标定(标定第1点),发送GPIB指令使得压力信号发生器加零压力,待压力稳定后(延时)发送命令133 设定校验点为1,还有当前仪表工程量单位和零点的校验值为0.0, 然后类似的进行60%,100%的点以及负区的标定。 * 定义及实现了对HART变送器进行出厂检验的方法,如对于热电偶温度变送器,需要输入8个分度号,根据量程每个分度号取5个点的mV值,向电压/电流信号发生器发送指令,让其输出指定的mV信号,然后用HART 1号命令读取主变量的值,与标准值比较,得出HART的数字精度,同时读取数字万用表的测量值,与标准值比较,得出4—20 mA输出的模拟精度。 * 定义及实现了对HART变送器进行各种信息设定的方法,写组态信息,如用HART 18号指令写入工位、描述、时间,17号命令写入信息值, 19号命令写入装配号等。 c. 变送器校准检验模块主要是为了完成对变送器校准检验的具体操作,包含了针对不同变送器校验检验的步骤,并向数据打印及入库模块提供数据源。这个模块还根据管理员子系统中功能设置模块对系统需要自动完成的操作的定义,自动将数据采集和发送模块的方法进行组装,以实现对校验系统的自定义功能。 d. 数据打印及入库模块主要是完成校验结果的打印和进入数据库,是操作员子系统的所要完成的最后一个功能,主要是将校验过程中采集的数据、运算的结果、产品的出厂编号等信息以打印报表和进入数据库的两种方式进行处理。 打印报表可以利用对并口读写的封装,直接将格式化的字符串输出到连接在并口上的打印机就可以了。 与SQL Server数据库的连接采用ADO的方式,这样可以满足本地和远程访问数据库的需要,这里主要是将校验得到的数据和产品信息等存储到SQL Server的数据库中去。 2) 管理员子系统主要面向校验系统的管理员,他们使用管理员的账号登陆系统,管理员的权限大于操作员,可以完成系统功能设置和数据库管理的功能。 功能设置模块主要是通过弹出得对话框,使得系统的管理员可以定制系统的操作步骤、选择需要完成的校验内容,以及可以自动写入变送器的一些信息,功能设置完成后,在操作员模式,当系统检测到有变送器接入时候,可以自动完成设置好检验项目等内容。功能的可定制使得自动校验系统能够适应多种场合的需求。  数据库管理模块主要是完成对操作员子系统进入数据库的数据进行管理,可以对产品的信息进行检索,还可以方便对各个时期产品的性能指标进行评测比较,来研判企业的生产水平。 3) 人机界面子系统的功能主要完成系统和用户的界面,由于适用了Visual C++作为开发工具,大量MFC类库作为基础,所以比较容易开发出很友好的Windows图形界面。 由于变送器的校验过程要占用系统很多的时间,存在着比较多得延时,而用户界面需要实时接受用户的操作和实时显示对用户输入面板的监控,为此采用了多线程的技术解决了这一问题,主线程主要完成校验功能的实现,由辅助线程来实时更新用户的界面,对I/O端口进行轮询。 4) 异常处理子系统主要是为了解决系统中使用得设备比较多,由于每一个设备出现问题都会引起系统的异常问题。 为了保证校验系统的可靠性,在对各种可能出现的人为的误操作和各个设备可能出现的情况进行了分析以后,编写了大量的异常处理的方法,使得这个模块的内容覆盖了整个系统,当系统使用过程中出现异常情况,会立即转入到这个模块进行处理, 使得校验系统可以对异常情况进行保护和报错,使得系统的智能化和可靠性得到很大的提高。 4.3 软件的工作过程 软件开始执行后,首先初始化及系统自检工作, 主要是初始化GPIB接口卡,并将GPIB接口卡上的设备设成远程工作方式,初始化 48回路I/O卡,将I/O设置为40路输出,8路输入,打开并配置计算机串口和并口。 完成了系统自检后, 将开启一个辅助线程用于监控I/O 操作,做为软件工作过程的主要部分,下面将比较详细的介绍一些这部分内容。 为了实现多线程之间的同步控制关系,创建一个手工的事件对象(手工的事件对象显式得使用ResetEvent来改变信号量的状态)。  m_hEvent=CreateEvent(NULL,TRUE,TRUE,NULL)  然后创建并开启一个辅助线程,  m_pThread=AfxBeginThread(MyThreadFunction,GetSafeHwnd(), THREAD_PRIORITY_NORMAL,0, CREATE_SUSPENDED, NULL);  if(m_pThread!=NULL)  { m_pThread->ResumeThread(); }  辅助线程是以函数的形式出现在程序中,它的代码是整个进程代码的一部分,并可以共享进程的全局变量等。  UINT MyThreadFunction( LPVOID pParam )  {  while(1){  m_Test.SCANDin();/// 读取I/O卡的状态  WaitForSingleObject(m_hEvent,200);///等待并检查事件对象的状态  ResetEvent(m_Test.m_hEvent);  PostMessage((HWND)pParam, WM_MYMESSAGE,0, 0);  //发送自定义消息给主线程通报I/O状态  continue;  }  return 0;  }  这样就由辅助线程完成了读取I/O口状态,判断用户在操作面板的动作,实现了对I/O端口的监视,  在主线程中定义消息映射机制, 在头文件中添加对自定义消息及消息处理函数的定义,  #define WM_MYMESSAGE (WM_USER+100)  afx_msg LONG OnMyMessage(WPARAM w,LPARAM l);  DECLARE_MESSAGE_MAP()  在CPP文件中添加消息处理函数的实现  BEGIN_MESSAGE_MAP( )  ….  ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)  ….  END_MESSAGE_MAP()  LONG CMyApp::OnMyMessage(WPARAM w,LPARAM l)  {  /////对辅助线程中检测到的端口数据进行处理,判断并进入变送器校验操作。  SetEvent(m_hEvent);////通过设置事件信号,表示数据处理完毕,辅助线程得到事件信号的状态后就可以继续了   return 0l;  }  通过事件对象对多线程的同步控制,就可以使得耗时的I/O操作与程序的主线程分开,既保证了I/O监视的实时性,又可以使主线程可以自由的处理其他的事情,充分利用了CPU的处理能力,使得各操作可以并行进行。5、结束语 HART协议在仪表中的应用为仪表的自动化校准检验及信息管理提供了基础,本文阐述了较为通用的HART智能变送器校验检验系统的设计思想和实现方法,针对不同厂家的HART变送器,只要添加数据发送及采集模块中关于变送器校准的HART协议的特殊指令,就可以完成,具有一定的通用性,较好的实现了HART协议智能变送器的出厂校准检验及产品信息管理。产品已经在现场实际运行,使用效果良好。参考文献: ⒈The HART Protocol Reference Liabrary ⒉Microsoft. Designing and Implementing Databases with Microsoft SQL Server 2000. MS Press ⒊Microsoft. Distributed Applications With Microsoft Visual C++6.0 . MS Press.
标签: 校验
打赏

免责声明:
本站部份内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及内容、版权等问题,请在30日内联系,我们将在第一时间删除内容!

购物指南

支付方式

商家合作

关于我们

微信扫一扫

(c)2008-2018 DESTOON B2B SYSTEM All Rights Reserved
免责声明:以上信息由相关企业或个人自行免费发布,其真实性、准确性及合法性未证实。请谨慎采用,风险自负。本网对此不承担任何法律责任。

在线咨询

在线咨询:

QQ交流群

微信公众号