APP下载

基于LABVIEW的上位机串口通信程序设计

2018-06-11汤佳明安伟

电子设计工程 2018年11期
关键词:数据通信下位单点

汤佳明,安伟

(江南大学机械工程学院,江苏无锡214122)

随着工业自动化进程的不断深入,虚拟仪器的使用越来越普遍,上位机作为虚拟仪器的一部分在工业生产与科学研究领域也被广泛得使用,在测控与软件设计方面已有了许多成功实例。上位机的功能是发出指令并传送至下位机端,在这一过程中,数据的传输与反馈需要监控,故根据需求设计相关的上位机程序显得很有必要。

LABVIEW作为一款已被广泛使用的虚拟仪器开发平台,在教学、研究、测试和生产自动化领域被广泛应用[1]。其图形化编程界面与常规编程语言的不同在于以图形数据流代替了代码,这对于从事工程应用的工程师而言简洁易懂,故可灵活迅速地开发上位机软件。同时,LABVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可以方便地创建用户界面[2]。通过LABVIEW搭建的控制系统,软件程序是其核心[3]。本文基于串口通信原理,编写了上位机通信监控程序,并对其进行模拟通信验证。

1 串口配置

本文设计的上位机软件程序是基于串口通信方式,串口通信是一种在计算机与计算机之间或者计算机与外围设备之间传送数据的常用方法[4],通常应用于传统仪器的控制和缓慢变化信号的采集[5]。

在本文的串口通信过程中,上位机写入的为字符类型的数据,而后软件将字符按照单个的字节位发送至接收端,作为接收端的下位机一方再将这些位组成完整的字节,从而完成数据的传送。通常采用美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)表示数据位对应的值,当传输特定文件时则会使用二进制数据类型。在串口通信中,数据位是数据帧格式的一部分,完整的数据帧一般涵盖了起始位、数据位、校验位与停止位。校验位根据字符编码中“1”的数目用于检查数据的准确性。

在通信传输过程中,按照相同的通信规则规定上位机与下位机端口的性质,即对两者的通信端口进行初始化设置,按要求设置通信端口的传输速度、单位、起始位、停止位和校验位等参数,这一过程由LABVIEW中的虚拟仪器软件架构(Virtual Instrument Software Architecture,VISA)模块实现。VISA作为一个综合软件包模块,可在任何平台、总线和环境下对串口进行配置、编程和调试[6]。同时,VISA也是测试程序与数据传输中总线的中间层,为应用程序和仪器总线的通信建立了通道,是应用于仪器编程的标准I/O应用程序接口[7]。同时,如前所述,VISA的串口配置要与下位机的串口配置一一对应[8]。VISA模块的串口初始化配置如图1所示。

图1 串口参数配置

由于串口参数类型不同,在此通过数据簇模块设定。簇为一种数据类型,相当于文本编程语言中的结构体变量,是由不同类型的数据组成的集合[9]。由上到下依次为波特率、数据位、校验位、停止位、流控制位,经“解除捆绑”后分割为独立的参数,通过串口资源名称模块选择串口。

2 数据通信

在上位机监控模式中,上位机与下位机之间的数据通信是整个系统的基础,这方面也有许多应用实例[10]。本文在此设计了两种数据通信模式,一种为单点通信,即将单个或少量特定数据字符写入后发送至下位机端;另一种为表格通信,即将大量以Excel表格文件形式汇总的数据读取转换后发送至下位机端。设定的上位机端串口数据通信流程如图2所示。

图2 串口通信流程

初始阶段虚拟串口设置主要通过VSPD软件实现,串口参数配置与串口通信终止字符类型设置两者均相同,通过模式选择按钮选择不同的通信方式,表格通信较单点通信的区别在于表格文件的读取与数据的转换,两种方式的实现过程将在下文详细阐述。

2.1 单点通信

在LABVIEW平台控制的串行通信过程中,数据格式是以字符串形式构成的[11]。实际使用过程中,上位机端需要根据需求发送单个或少量数据至下位机端,故在此设计了单点通信模式。单点通信程序如图3所示:整个程序包含在一个条件判断结构体(Case Structure)中,根据选择按钮的开关状态决定程序的运行与停止。首先进行串口参数配置,包含输出与输入端口两个。其次,是设置VISA传输中的终止字符类型,在此用到了字节属性模块,用于在传输完毕下位机端收到的字符串后增加指定的结束字符,例如换行、回车或者空字符等类型,例如本程序框图中字节属性模块设定了终止字符(Term Char)判断、终止字符使能(Term Char En)开关、写入结束模式(ASRL End Out)3个属性功能。需要注意的是,字节属性模块同时也用于检测串口数据的存在,起到判断的作用[12]。由于端口数据收发之间有延时,故需要加入计时功能,通过写函数模块(VISA Write)写入数据后延时500ms再经由读函数模块(VISA Write)读出串口数据。由于加入了结束字符,因此读出的字符会比写入的字符多一位,故将写入的数据字节数与读出的数据字节数进行比较时两者不相等,若前者小于后者且与前面板显示结果一致,则表明通信正常,若两个结果不同则表明通信异常。在串口通信结束后必须关闭串口,因此使用串口关闭函数(VISA Close)执行这一功能。

图3 单点通信

2.2 表格通信

在实际使用过程中,往往需要发送大量数据至下位机,这些数据通常以表格文件形式存储,如此一来发送更加便捷,因此针对这一需求本文也设计了表格数据通信功能,程序分为表格数据的读取与数据的转换通信两部分。

2.2.1 表格数据读取

表格数据通信的首要条件是上位机能够读取表格文件,在此本文通过ActiveX控件读取表格文件内容。ActiveX控件是一类面向对象程序技术和工具的策略性软件组件的简称,涉及的主要技术内容为部件对象模型(Component Object Model,COM),通过使用ActiveX组件,可以在开发工具中增添特定的功能。在LABVIEW环境下,通过打开ActiveX生成主对象,再由其生成所需子对象,通过设置和调用这些对象的属性来实现程序所需功能[13]。

由于自带相关的ActiveX控件,因此LABVIEW在处理Excel表格文件时直接采用该控件即可[14]。首先打开自动化引用模块并创建自动化引用句柄[15],作用为通过引用句柄找到指定文件路径下的文件;随后通过属性节点与调用节点找到用户指定表格文件中的表单号(Sheet);最后将表单范围内的数据值以数组格式输出前面板显示。表格文件读取及显示程序如图4所示。

2.2.2 表格数据通信

由于串口通信接受字符串数据格式,因此需先将从表格中读取的、以数组形式呈现的表格数据转化为字符串形式发送,这一过程由“数组至字符串转换”模块实现。表格数据通信程序如图5所示。

表格数据通信程序结构与单点通信大致相同,同样在此增加了延时与字节比较功能。

3 模拟通信

由于串口通信至少需要一对串口互相连接、传输数据,为方便快捷地对上位机程序进行模拟验证、降低实验成本,在此使用了专用的串口调试软件:虚拟串口驱动(Virtual Serial Port Driver,VSPD)。VSPD可通过虚拟出成对的相互连接的串口,用于模拟上位机与下位机或者外部串行设备的通信通道[16-17]。

图4 表格数据读取

图5 表格数据通信

模拟通信分为两部分,单点模拟通信与表格模拟通信,其中单点通信以COM2为上位机发送端口,设定COM3为下位机接收端口;表格通信以COM4为上位机发送端口,设定COM5为下位机接收端口。上位机监控界面模拟通信结果与VSPD串口收发字符统计如图6、图7所示。

图6 上位机监控界面显示

在显示界面中,单点通信的中止字符为十六进制显示的字符“A”,对应ASCII码表中换行键,即下位机读出完毕后自动换行;表格通信中的终止字符为“0”,对应为空字符,因此读取的字节数均比写入的多了一位。两对虚拟串口发送与接收的数据字节数一致,说明通信内容完整。模拟通信结果表明,设计的上位机串口通信监控程序能够准确地在端口间传送数据。

图7 VSPD串口收发字节统计

4 结论

文中说明了基于串口通信原理的上位机监控程序的设计过程。使用LABVIEW开发上位机通信监控界面软件,解决了工程设计中实现简易的串口通信的问题,不仅能够简化软件开发流程和减少硬件成本,而且具有良好的扩展性。文中设计了单点数据通信和表格数据通信两种通信模式。前者采用Case条件选择结构选定模式,通过VISA函数配置模块配置参数、VISA字节模块设置终止格式,根据字节数判断通信是否正常。后者相比前者的不同之处在于:在数据发送与显示过程之前需通过ActiveX控件读取表格文件并转化为字符串数据,然后进行正常的通信。总体而言,该上位机软件实现了所需功能,但包含的通信模式较少,只能作为简单的数据通信工具使用,对后续的深入开发具有一定的参考价值。

猜你喜欢

数据通信下位单点
历元间载波相位差分的GPS/BDS精密单点测速算法
超薄异型坯连铸机非平衡单点浇铸实践与分析
基于快牙平台实现全站仪与计算机的数据通信
发射机房监控系统之下位机
监测系统接口数据通信方式
数字电视地面传输用单频网与单点发射的效果比较
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
16吨单点悬挂平衡轴的优化设计
一种高效可靠的串行数据通信协议及处理算法