基于VC++的数据采集系统设计与实现

2016-11-22 08:23葛婉宁姜明顺张法业隋青美
化工自动化及仪表 2016年11期
关键词:数据通信串口流程

葛婉宁 姜明顺 张法业 张 雷 隋青美

(山东大学控制科学与工程学院,济南 250061)

基于VC++的数据采集系统设计与实现

葛婉宁 姜明顺 张法业 张 雷 隋青美

(山东大学控制科学与工程学院,济南 250061)

基于VS2010平台利用VC++开发了一套适用于RS232、USB、TCP/IP协议通信接口的数据采集系统。该系统实现了监控计算机与嵌入式仪表设备的通信,满足了不同种类传感器的数据采集和处理。并通过实验验证了系统软件的稳定性。

数据采集系统 VC++ 软件设计

随着计算机技术、数字通信技术、测控技术和智能仪器仪表的快速发展,数据采集处理技术已被广泛应用于通信、军事、航空航天及工业等领域,它是计算机与外部物理世界连接的桥梁。数据采集(DAQ)又称数据获取,是指从传感器和其他待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,然后通过PC接口总线送至上位机中进行分析、处理、显示和存储[1]。数据采集系统可实现对生产现场的各种环境参量和设备运行状态的采集、监测和存储,保证安全生产。而目前智能传感器或智能仪表等外围设备与计算机主机系统之间进行信息交换的主要接口包括TCP/IP以太网口、USB接口、RS232接口[2],因此设计一种可通用的应用程序软件具有一定的实用价值。

针对以上3种不同的通信接口类型,开发了一套上位机软件系统,该软件系统采用基于TCP/IP协议的Socket通信、RS232串口通信和USB通信技术,多线程并行工作模式、消息映射机制和SQL Server 2008数据库,集数据采集、数据分析、数据处理及数据存储等功能于一体,能及时、准确地监测各类传感器数据的变化。

1 系统设计

1.1 总体方案

数据采集系统结构框图如图1所示,由图可以看出,数据采集系统由3部分构成,即传感器、数据采集终端和上位机软件。数据采集终端通过不同种类的传感器(传感器A、B、C)完成对被测对象各种参量的获取,然后通过数据传输通道(TCP/IP协议的Socket通信、RS232串口通信和USB通信接口)将采集的数据传输给上位机,从而完成对数据的分析、处理、显示及存储等一系列功能。

图1 数据采集系统结构框图

1.2软件设计

数据采集系统软件平台工作流程可简化为数据通信、数据分析、数据处理、实时显示、数据存储和历史查询。图2为整个系统的软件流程。

图2 系统软件流程

整个工作流程中,数据通信、实时显示和数据存储之间需要并行工作,所以将它们放在不同的辅助线程中,而不同线程间的数据传递依赖于MFC的消息映射机制,该机制的具体实现方法是:定义一个消息与对应的消息处理函数,当有消息需要处理时,能依照静态表快速找出并调用对应的消息处理函数[3]。

1.2.1数据通信的实现

数据通信是该软件系统的核心部分,其余各模块功能的实现都要以此为基础。该部分的数据传输通道包括TCP/IP协议的Socket通信、RS232串口通信技术和USB通用串行总线技术,为了使不同的数据传输手段之间协调工作,采用多线程技术。

针对基于TCP/IP协议的Socket通信的数据传输通道,设计了Server端和Client端程序,通信流程如图3所示。将套接字设计为监听模式(Listen),根据绑定的地址和端口,准备接受Client端的连接请求,当请求到来后进入主程序,Server端根据不同的频率设置向Client端发送数据,Client端实现接收、处理、显示和存储的功能,最后Client端发出关闭请求,实现了一次完整的网络通信[4]。

图3 TCP/IP通信流程

针对基于RS232接口的数据传输通道,开启多线程,每个线程中都需要实现串口通信,基于面向对象的设计思想,设计了CSerialCtrl类,该类主要完成串口资源的申请和释放,指定输入、输出缓冲区的大小,填写设备控制块DBC,对已打开的串口进行参数配置(端口设置、波特率设置、校验位设置、数据位设置),ReadComm()、WriteComm()对串口进行读写操作,完成数据的接收和发送。图4为该过程的流程。

图4 RS232通信流程

针对基于USB通用串行总线的数据传输通道,该通信接口与其他两种通信接口不同,需要专门的设备驱动程序。在应用程序与人机接口设备(HID)开始通信之前,应该先识别该设备并读取其报表信息[5,6]。在此利用Windows系统下的API函数获取设备信息集、识别接口信息、获取设备路径名、获得设备句柄。在成功获取设备句柄后,就可以使用它与设备进行交换通信。当应用程序结束与设备的通信之后,必须释放之前保留的资源数据。

1.2.2显示模块的实现

软件设计可分为编码设计和UI设计,显示模块是UI设计的一部分,它是人机交互的重要组成部分。该系统显示界面的设计以功能实现为基础,与硬件分布情况相对应,主要包括解调仪参数(频率、增益及噪声门限等)的配置、各类传感器的模拟量数值和变化曲线、数据库的连接、历史曲线的查询和报警查询。

该模块中,所有曲线的绘制,都采用TeeChart控件来完成,该控件使用方便,绘图美观,只需事先注册,并设置好相应的参数,便可完成图形的绘制[7]。绘图数据的传递由消息映射机制,从数据采集线程传递给绘图线程,存放于动态数组中,而动态数组直接映射到内存中,这样使得对动态数组的访问和修改速度与计算机的处理速度一致,保证了数据的实时性。

1.2.3数据存储的实现

在高频采样模式下,会产生大量的数据需要存储,为了保证系统的存储效率和查询速度,采用ADO数据库访问技术去访问SQL Server 2008数据库,该数据库是表的集合,基于触发器的设计,完成了不同传感器向它对应表格中的存储,实现了历史曲线的查询[8,9]。

在对数据库操作的过程中,首先需要引用支持ADO的组件类型库,并在程序初始化过程中初始化组件,然后通过实例化ADO的3个核心对象完成对数据库的连接、插入及查询等操作。

2 测试结果与分析

图5为基于TCP/IP协议的温度传感器的测试结果,图6为基于RS232通信的红外CO2传感器测试结果,图7为基于USB通用串行通信接口的压力传感器的测试结果。

图5 温度传感器显示曲线

图6 CO2传感器显示曲线

从显示曲线可以看出,该系统可以在不同的通信传输方法下实时地采集各类传感器的数据,并监测不同参数的模拟量数值和变化趋势,满足了不同接口类型和传输速率的需求。

3 结束语

经过实验测试,基于VS2010平台开发的数据采集系统上位机软件实现了与不同接口间的数据通信,同时能够保证采集数据的完整、安全与正确,界面友好,操作简便,显示直观,具有良好的扩展性和兼容性,为功能的扩充和其他系统的集成奠定了良好的基础。

[1] 祝常红.数据采集与处理技术[M].北京:电子工业出版社,2008.

[2] 王琳,商周,王学伟.数据采集系统的发展与应用[J].电测与仪表,2004,41(8):4~8.

[3] 孙鑫.VC++深入详解[M].北京:电子工业出版社,2006.

[4] 刘爽,史国友,张远强.基于TCP/IP协议和多线程的通信软件的设计与实现[J].计算机工程与设计,2010,31(7):1417~1420.

[5] 崔岩松,段大高,邓中亮.USB接口的实时数据采集卡的设计与实现[J].电子技术,2004,(8):43~45.

[6] 夏益民,王光君.基于USB的高速数据采集系统[J].国外电子元器件,2003,(10):33~38.

[7] 吴胜勇,张胜,孙小飞. TeeChart图形控件在通信检测软件中的使用[J].网络与通信,2009,22(37):88~98.

[8] 王武生,韩艳,倪宏革.基于ADO的SQL Server数据库访问技术的研究[J].微机发展,2003,13(11):95~98.

[9] 邹建.SQL Server 2000开发、管理与应用实例[M].北京:人民邮电出版社,2008.

DesignandImplementationofDataAcquisitionSystemBasedonVC++

GE Wan-ning, JIANG Ming-shun, ZHANG Fa-ye, ZHANG Lei, SUI Qing-mei

(SchoolofControlScienceandEngineering,ShandongUniversity,Jinan250061,China)

Basing on VS2010 platform, making use of VC++ to develop a data acquisition system suitable for RS232, USB and TCP/IP protocol communication interfaces was implemented to realize communication between the monitoring computer and the embedded instrument and to meet data acquisition and processing of different sensors. The experimental results verify stability of the system software.

data acquisition system, VC++, software design

TP274+.2

A

1000-3932(2016)11-1186-04

2016-09-20(修改稿)

国家自然科学基金项目(61174018,41472260,61505097);山东大学基本科研业务费项目(2014YQ009)

猜你喜欢
数据通信串口流程
吃水果有套“清洗流程”
浅谈AB PLC串口跟RFID传感器的通讯应用
关于数据通信网络维护与网络安全问题的探讨
监测系统接口数据通信方式
违反流程 致命误判
关于数据通信电源现状和高压直流供电新系统的分析
本刊审稿流程
析OGSA-DAI工作流程
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索