APP下载

基于LabVIEW的多串口通信及数据存储的研究与实现

2015-06-07唐普英

实验室研究与探索 2015年8期
关键词:荧光粉通信协议串口

唐普英, 谢 启

(电子科技大学 光电信息学院,四川 成都 610054)



基于LabVIEW的多串口通信及数据存储的研究与实现

唐普英, 谢 启

(电子科技大学 光电信息学院,四川 成都 610054)

针对实际工业应用中数据采集点多、存储量大的特点,单串口和小型数据库如Access,已不能满足工业上多通道数据传输以及大数据量存取的需求,研究可以实现LabVIEW多串口数据通信以及将采集数据快速存储到中、大型数据库的方法,显得非常有必要。该研究实现了LabVIEW多路串口并行通信,并通过结合LabSQL ADO和SQL语言,自动实现对SQL Server数据库的链接、创建对象、数据访问等一系列操作,实现了对接收数据的快速存储。

labview; 多串口; sql server; labsql ado

0 引 言

在很多工业控制中都会用到串口通信,无论是RS232还是RS485都是通过串口来进行数据传输的,这种简单、高效的通信方式在工业控制中具有广泛的应用,但是随着产品线的增多,产品信息多元化,单个串口已不能满足实际工业控制中多条流水线监控的需要,而且一台计算机往往不会只监控一组数据,多串口通信具有很高的实际应用价值[1]。

LabVIEW(Laboratory Virtual instrument Enginee-ring Workbench)是一种图形化的编程语言的开发环境。主要应用于数据采集、仪器控制、测试测量、数据分析、数据表达及监测和控制领域。虽然LabVIEW包括了数据采集、GPIB、串口控制、数据分析、数据显示以及数据存储等函数包,但是要实现对数据库的访问并不是一件很容易的事情,现有的LabVIEW版本本身并不具备数据库访问功能,不能像VB、VC++、PowerBuilder那样方便地进行数据库程序的开发。因此以LabVIEW编制的虚拟仪器系统需要其它辅助的方法来进行数据库访问[2],而一般小型数据库如Access可存储的数据量比较小,而且这种小型数据库在储存容量过大时,会出现反应速度过慢,数据库不稳定等现象,因此实现对中、大型数据库的访问显得非常重要。

本文实现的多串口通信是针对LED生产线项目中需要同时接收多路监控数据提出来的,项目实现了八路串口同时接收各监控点发送回的监控信息,然后计算机对接收的数据进行分割、拼接等一系列数据包解析工作[3],并将最终的监控数据存储到SQL Server数据库。

1 多串口通信的实现

1.1 串口通信协议

串口是一种全双工通信方式,计算机和设备之间可以双向通信。在多串口通信的应用中,由于计算机需要同时对各串口接收的数据进行处理,而各路串口接收的数据结构一样,要正确区分是哪一路数据,就需要在通信协议中做相关协定,计算机通过识别不同的指令码[4]或者ID信息实现对不同设备的正确访问,针对LabVIEW的多串口通信模型[5]如图1所示。

图1 多串口通信模型

虚拟仪器软件结构(Virtual Instrument Software Architecture,VISA)是VXI plug&play联盟制定的I/O接口软件标准及规范总称,VISA提供用于仪器编程的标准I/O函数库。LabVIEW的VISA库包含了串口配置、数据写入、数据读取等一系列子VI[6],这些子VI是用于搭建串口通信的通道,由于LabVIEW的VISA写入和VISA读取操作对象是ASCII码[7],故要建立有效的通信需要确定一个通信协议。双方可以用数组或者字符串进行数据传输,本项目中发送端有1个字符长度的工艺编号、生产线编号等信息(如表1所示)要进行合并,4个字符长度的浮点数据要进行拆分,操作比较繁琐,而LabVIEW可以很容易地实现对字符串的截取、分割、拼接等操作,为方便后续的数据处理,此处我们选择用字符串的方式进行数据传输,采用这种方式可以更方便地对接收到的数据进行快速处理。

由于传输过程中不可避免地出现误码等情况,为了保证接收数据的正确性,通信协议中严格定义了数据起始码和结束码以及数据位长度,如果接收端发现数据有误,就自动舍弃当前接收的数据,重新开始下一帧数据的接收,项目中通信协议及数据位信息如下:

a.每次传送一条生产线的数据。

b.要求确定数据传送起始字节FF、AA,数据结束字节FF、55.

c.传送速度波特率为9 600。

表1 项目中数据位信息

由于每条生产线的各个阶段都需要监控产品信息,计算机需要同时与多路信息采集点进行通信,单串口无法满足对整条生产线监控的要求,因此此处采取多串口通信的方式与各监控点进行数据通信。PC机端借助多串口卡,扩展出八路串口,通过扩展的八路串口实现PC机与各监控点的同步通信。PC机通过识别指令码来区分各路数据,从而准确地完成多串口通信。

1.2 程序开发流程

LabVIEW程序是基于数据流驱动的[8],用其进行编程则必须按数据流的方式进行程序设计,这与面向过程的程序比较相似,但是LabVIEW克服了文本语言内存不好管理的问题,且支持多个VI并行执行,当多个节点VI同时运行时,LabVIEW会自动把它们放到不同的线程中去执行,这是一般文本语言做不到的,这种自动多线程的机制给编程人员带来了很大便利,本系统就是采取多路数据流方式对串口进行配置以及对接收的数据进行处理,可轻易实现多路串口并行工作。

VISA作为通用I/O标准,它提供了统一的设备资源管理、操作和使用机制,要实现多路串口同时通信,需要创建多路VISA资源,同时为了保证各串口配置与通信协议一致,在程序初始化阶段对串口进行统一配置[9],这样可以大大简化设计。在数据接收端通过对VISA串口字节数属性节点可以判断是否有新数据接收到。VISA串口在与不多于4台仪器进行通信时,使用同步调用可获取更快的速度,与不少于5台仪器进行通信时,异步操作可使应用程序的速度显著提高。此处有8路串口,故将VISA读取同步I/O模式设置为异步调用可以得到更高的通信速度。

系统初始化时按默认参数对各串口进行初始化,由于涉及到的串口数较多,为了在出现故障时能较方便地排查出故障,在配置串口信息完成后,对各串口进行故障检测,一旦发现故障,显示出有故障的串口。由于流水线上每一路数据都非常重要,任何一道工序出问题都可能会影响到产品的质量,故在系统检测到故障时自动发出故障报警并给出相关提示信息,等待故障排除。串口数据接收流程图如图2所示。

图2 串口数据接收流程图

多个串口接收的数据形成一个并行的数据流,串口数据从VISA资源接收缓冲区流出,经过属性节点的判断、数据起始帧和结尾帧的识别、帧长度再判断等一系列操作之后,可以提取出完整的数据帧,然后对完整数据帧进行后续的位信息识别、数据拆分、数据拼接等操作,完成多点数据并行接收。基于LabVIEW的多串口通信程序实现如图3所示。

图3 LabVIEW的多串口通信程序

由于篇幅限制这里只显示了两路串口程序,其余几路可按前两路扩展实现。

2 SQL数据库的便捷访问

数据库的种类有很多,我们常见的Access属于小型数据库,这种小型数据库在储存容量过大时,一般达到100 M左右的时候性能就会开始下降!有反应速度过慢,数据库不稳定等问题出现。工业中对数据存储量有较大的要求,而且绝对不允许出现安全性、稳定性等方面的问题,因此实现对中、大型数据库的访问显得非常必要。

虽然LabVIEW在数据采集、数据分析、数据表达等领域具有较好的处理能力,但在大数据的储存方面,LabVIEW本身并不具备直接访问数据库的功能,要实现对数据库的访问需要通过其他辅助方法实现,NI公司提供的数据库工具包LabVIEW SQL Toolkit将一些数据库常用的功能单元封装成模块,虽然操作简单,但对复杂的程序设计显得比较繁琐,而且该工具包需要付费购买,昂贵的价格无疑会增加系统设计成本[10]。

本文采用第三方免费LabSQL库[11],结合SQL语言[12-13]可以灵活的实现对SQL Server 2008的访问,且程序简洁,方便扩展,整个过程无需人为干预,系统自动将解包之后的多组信息数据准确的存入数据库对应信息列表中,在LabVIEW下轻松实现对SQL Server数据库的自动链接、自动创建对象、自动插入数据等一系列操作。

2.1 链接数据库

链接数据库[14-15]是访问数据库最困难也是最重要的一步,链接不了数据库,后续访问操作都无法进行,特别是大型数据库链接信息比较多,需要数据库的类型、服务器的名称、用户名和密码等信息,这里我们借助Windows自带udl(Universal Data Link)通用数据连接文件,可以快速准确地生成数据库链接信息,LabVIEW通过这些链接信息可以实现后续对数据库的访问。生成数据库链接信息流程如下:

(1) 在安装有SQL Server数据库的计算机上新建一个文本文件并将后缀名更改为*.udl。

(2) 双击打开上一步中的*.udl文件,在“提供程序”选项卡中选择Microsoft OLE DB Provider for SQL Server,在“连接”选项卡的服务器名称一项中选择本机上安装的SQL Server 名称,在登录服务器信息一项中根据数据库设置的登录信息做相应填写,此处选择“使用Windows NT集成安全设置”,以上信息填写完毕后,点击右下方“测试连接”按钮,如果弹出“测试连接成功”则表明初步连接数据库成功,点击确定。建立数据库链接信息如图4所示。

(3) 以记事本方式打开刚才设置好的*.udl文件,文件会以SQL语言的形式呈现刚才设置好的链接信息,此处显示“Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=VICTORYXIEQI”可以作为LabVIEW连接数据库的配置信息,根据此信息可以实现LabVIEW对SQL Server数据库的链接。LabVIEW链接数据库实现如图5所示。

2.2 创建数据库对象及数据存储

LabSQL库包含Connection execute数据库连接执行模块、Command execute数据库参数读写模块、以及Recordset execute数据库操作记录模块等,LabVIEW可以通过这些单元模块结合正确的SQL语言灵活的实现对数据库的访问操作。

图4 建立数据库链接信息

图5 LabVIEW链接数据库实现

程序在初始化时通过Connection execute模块执行SQL语句“USE My_LED CREATE TABLE dbo.LED *(采集日期 varchar(20),采集时间 varchar(20),工作绑定电压 float,工作绑定电流 int,荧光粉曝光时间 int,荧光粉涂覆量 int,荧光粉显影水温 int,荧光粉显影时间 int,显影后干燥温度 int,显影后干燥时间int);”自动完成数据表单的创建工作;各串口接收的数据在经过数据分割、位信号识别之后可以通过Command exeute模块来执行SQL语句“INSERT dbo.LED*(采集日期,采集时间,工作绑定电压,工作绑定电流,荧光粉曝光时间,荧光粉涂覆量,荧光粉显影水温,荧光粉显影时间,显影后干燥温度,显影后干燥时间) VALUES (…)”完成生产线对应数据位的插入,通过这一系列操作可以完成对接收数据的存储工作。LabVIEW实现对SQL Server数据插入程序见图6。

图6 LabVIEW实现对SQL Server的数据插入程序

3 系统实现

系统在完成相关参数设定之后启动数据接收程序,在接收各路串口数据的同时,以界面的形式实时显示当前各路生产线参数状态,同时将数据保存到SQL Server 数据库,完成同步数据存储工作。为了验证LabVIEW多串口通信实现的正确性以及LabVIEW访问SQL Server的正确性,此处模拟了8路串口数据并同时发往计算机,计算机将接收的数据显示在对应方框内并将对于数据存储到SQL Server。随机截取2014/11/20 21:27:40时刻数据,生产线监控显示界面截图和第三条生产线存储到SQL Server的数据截图分别如图7和图8所示。

图7 产品监控显示界面

图8 第三条生产线存储到SQL Server的数据

4 结 语

系统有效地实现了多路串口数据的并行接收,在LabVIEW平台下通过第三方软件LabSQL库结合Windows自带的通用数据连接文件,成功连接SQL Server数据库,同时利用SQL语言,灵活地实现了对数据库的表单项创建,数据插入等一系列操作,最终实现了多串口通信和数据存储工作。

[1] ZHANG Jun, JIAO Shengjie, YE Min,etal. Multichannel Subgrade Temperature Acquisition System Based on LabVIEW and Serial Communication[C]//2013 IEEE Internation Conference on Automation Science, 2013: 558-563.

[2] 秘晓元,张彦斌,薛德庆,等. LabVIEW中利用LabSQL对数据库访问技术的探讨[J].自动化与仪器仪表,2004(6):54-56.

[3] QIU Yingxiang, CHEN Qijun. The Realization of Cyclic Serial Port Commuication Based On LabVIEW[C]//2014 IEEE Internation Conference on System Science and Engineering, 2014.

[4] 崔牧凡. 基LabVIEW和FPGA的串口通信系统设计与实现[J]. 计算机应用,2012, 32(S2): 82-84.

[5] 王中训, 许 超, 王德法. 基于VC++6.0的多串口通信方法[J]. 计算机应用, 2008(28): 244-246.

[6] 吕向峰, 高洪林, 马 亮, 等. 基于LabVIEW串口通信的研究[J]. 理论与方法, 2009, 28(12): 27-30.

[7] 施雅婷, 郭前岗, 周西峰. 一种改进的LabVIEW串口通信系统的实现[J]. 电子测试, 2010(8):64-69.

[8] 潘 华, 夏红梅, 李 安, 等. LabVIEW数据流控制方法研究[J]. 微计算机信息, 2006, 22(10-1): 58-60.

[9] Machacek J, Drapela J. CONTROL OF SERIAL PORT(RS-232) COMMUNICATION IN LabVIEW[C]//2008 International Conference Modern Technique and Technologies, 2008, 36-40.

[10] 贾海朋,彭 嫚,张正平,等. LabVIEW访问Access数据库的研究[J]. 微计算机信息, 2007,23(11-1):102-104.

[11] 张 荣. LabVIEW数据库与报表的混合编程设计技术[J]. 信息与电子工程, 2010, 8(4): 476-479.

[12] XU Shanzhen, WANG Cheng. Study on the Test Database for Engine Ignition Performance Based on LabSQL[C]//2011 Fourth International Conference on Information and Computing, 2011: 58-61.

[13] 周 欢, 莫 军, 李代生, 等. 基于LabSQL的LabVIEW数据库访问功能研究[J]. 仪器仪表学报, 2009, 30(6): 321-324.

[14] WEN Hao, DONG Xiao-rui, MA Yu-cheng,etal. The Research of the Databases Connection Methods in LabVIEW base on ADO[C]//2010 International Conference on Computer Application and System Modeling, 2010: 229-233.

[15] XUE jie Wei, JIE Zhang, ZHAO Yang,etal. The Management System for Data Acquisition Based on LabVIEW and LavSQL[C]//Third International Conference on Information Science and Technology, Yangzhou, Jiangsu, China, Marcg 23-25, 2013: 369-372.

Research and Implementation on Multi-channel Serial Communication and Data Storage Based on LabVIEW

TANGPu-ying,XIEQi

(School of Optoelectronic Information, University of Electronic Science and Technology of China, Chengdu 610054, China)

For the characteristic that large amounts of data need to be collected and stored in industrial applications, a single serial and small databases such as Access has been unable to meet the needs of industry to access multi-channel data transmission and large amount of data needs to be stored. A method that LabVIEW can achieve multi-channel serial communication and fast access to medium or large database is necessary. This study achieves a multi-channel serial parallel communications and can automatically implements a series of operations, such as linking to the SQL Server database, creating objects, and data access. Large amounts of data from multi-channel can be stored by using LabSQL ADO and SQL language.

labview; multi-serial port; sql server; labsql ado

2015-01-09

电子科技大学教学改革研究项目(2013XJYSL011)

唐普英(1965-),男,广西桂平人,博士,副教授,研究方向为计算智能,数据库应用等。

Tel.:13688094495;E-mail:pytang@uestc.edu.cn

TP 311

A

1006-7167(2015)08-0093-05

猜你喜欢

荧光粉通信协议串口
宽带激发BaBi2(MoO4)4:Eu3+荧光粉的制备与发光性能
浅谈AB PLC串口跟RFID传感器的通讯应用
基于Z-Stack通信协议栈的红外地温采集电路设计
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
硼酸、Li+掺杂对YAG:Ce3+荧光粉的影响
XPS在YAG∶Ce3+荧光粉中Ce3+半定量分析方面的应用