基于LabVIEW的外置串口采集控制卡的研制
前面板有如仪器的外形设计,而程序框图就是仪器的内部电路,是设计的核心部分。LabVIEW方便之处就是能很方便的将流程图转换为图形编程语言。流程图中的循环可以直接调用LabVIEW中的While循环,顺序执行可以调用LabVIEW中Sequence Structure(顺序结构),条件执行则可以调用LabVIEW中Case Structure(选择结构)。程序流程图设计如图3所示。LabVIEW所采用的是并行执行结构,主流程图中横虚线上方的左右两边为同时执行的两个独立的单元。
本次设计的图形编程可以分为串口通讯、数据接收以及文件读写三个部分。
在LabVIEW中,实现串口通讯方式有直接调用NI公司提供的Serial系列子VI; VISA串行系列(位于Functions->All Functions->Instrument I/O->serial中);采用Active X控件来控制访问串行口(先向LabVIEW中添加一个Active X Container控件,然后向其中添加MSComm控件)三种方式。本次设计采用了第二种方式来访问和控制串行口,即通过调用功能模板的VISA中的Serial系列(包含VISA Configure Serial、VISA Write、VISA Read、VISA Close)来实现对串行口的访问和控制。采用该方式设计的优点是:每个函数开始接收一个端口号,结束后输出一个其复制的端口号,这样在设计中就不用担心对于一个端口有遗忘或是重复的操作,从而使程序设计更加清晰。
LabVIEW中对于串行口的读写都是以字符为单位传输其ASCII码来实现的,因而需将需要传输的数据字符转换成对应的ASCII码。本设计通过调用CIN (代码接口接点)将C语言程序嵌入到整个设计中,然后采用LabVIEW与C语言混合编程来实现所需的功能(CIN在LabVIEW中的调用路径为Functions→All Functions→Advanced→Code Interface Node)。
本设计中首先将采集控制系统的通道号和量程发送给下位机,然后程序进入到相应的数据接收处理程序。在数据接收过程中采用了数据帧方式:下位机将对应通道号、相应量程的采集结果以一帧数据为单位循环发送给PC机,PC机通过判断帧头来识别数据,从而提高数据传输的准确性。帧数据格式如下:
前面两个字节数据0xAA和0xAB为帧头标志,DATA1和DATA0为采集结果,但并非为最终的结果,它们仍需要相应的处理(该处理在服务子程序中进行)。
采集到的数据要转换为实际电压值后,再进行显示、存储。本设计可以很方便的把每个实际电压值存储到Excel文件中,以便于查看和处理。而且在存储的过程中可以将通道号、量程、采集数据序号信息都写入文件,这样,就很容易生成报表输出。
根据流程图设计的采集控制系统程序框图如图4所示。
系统测试
将采集控制系统硬件、软件按要求设计好后,运行控制软件,先对采集控制系统进行相应的配置,然后可以实时观看某个通道的电压值。调节输入电压,通过实时监控界面可以观看到输入电压的变化过程。程序运行结束后,可以在程序的安装目录下找到一个由先前配置所命名的Excel文件,打开这个文件就可以看到采集到的所有数据(包括通道号、量程、采集数据及所采集数据序号信息)。通过测试表明,采集控制系统操作简单、方便,采集数据准确、价格低廉,且有热插拔优点。
结语
因为NI公司所提供的数据采集卡价格昂贵,对用户来说,自主研制基于LabVIEW的采集控制卡在实际中有很大的意义,采用LabVIEW平台来实现,很大程度上简化了设计,希望本文能给众多设计者带来新的设计概念。
评论