基于虚拟仪器设备的数据通信研究
2021-03-01赵维卫
赵维卫
摘 要:传统的DSP通信设备设计里,中央处理芯片数据运算性能存在先天不足,且这类上位机软件较为复杂,设计开发周期较长,存在软件调试与日常维护较为困难的问题,本文基于虚拟仪器设备设计了一个通讯与数据处理解决方案。该方案整合了数据通讯硬件接口和下位机串行通讯软件,采用工控机作为上位机,基于LABVIEW开发环境,编写了上位机通讯程序软件,并进行了实际试验与测试。通过试验可知,本文编写的上位机软件运行可靠,通讯误差小,可扩展性强,成本低,便于维护。
关键词:LABVIEW;串行通讯;VISA;
1.绪论
随着中国制造2025的逐步到来,工业生产中试验数据传输与分析愈加庞大,传统处理器电路很难同时满足快速数据传输和复杂统计工作,数字信号处理器(DSP)由此而生,广泛应用于工业各个领域[1]。但是在一个自动化集成系统里,只有主控电路远不能满足使用要求,这时就需要一个上位机通讯软件来实现数据的传输、处理、显示和运算。因此,上位机与下位机之间的数据通讯就至关重要。作为经常使用的数据通讯方式,串行通信因其特有的优势,被经常使用到,使用串行通信的硬件电路更加简单,造价低廉,能够实现远距离数据通讯,在工业化进程中应用甚广。在传统的上位机数据通讯软件中,经常用到VC、VB、Delphi等高级语言来编程,这些软件在上位机程序编写中设计比较复杂,研发周期较长,调试与维护都存在较大困难。[2]LABVIEW是NI公司研发的,基于图形化编程的VI开发平台,上位机软件同时能够跨平台运行,软件使用上手容易,便于编程者与操作者理解,平台内部自带集成多种函数库,能够快速完成用户的编写需要,能够以高效的方式开发相对复杂的控制通讯系统。
鉴于上述理由,本文提出一种基于LABVIEW的串行通讯解决方案。
2.基于LABVIEW的通讯软件设计
LABVIEW软件平台内部集成了串行通讯VISA函数,VISA是一个I/O接口软件库和相关规范的集合。[3]LABVIEW的软件编写前面板中,数据通讯VI位于Instrument I/O的Serial中,经常使用的VI节点包括:
(1)VISA Configure Serial Port:初始化VISA
(2)VISA resource name设置通讯参数;
(3)VISA Write:把缓冲区的数据发送到VISA resource name设置的端口;
(4)VISA Read:将VISA resource name设置的端口接收缓冲区中的数据读取设置字节数的数据;
(5)VISA Bytes at Serial Port:反馈VISA resource name设置的端口在读取缓冲区的数据字节数;
(6)VISA Close:关闭VISA会话;
(7)VISA Set I/O Buffer Size:设置VISA的I/O缓冲区大小;
(8)VISA Flush I/0 Buffer:清空VISA的I/O缓冲区。
3.LABVIEW串行通讯设计流程
LABVIEW软件平台的基于VISA数据库通讯的流程框图如图1所示。
根据上图所示,软件先需要调用VISA Configure Serial Port来设置端口参数,参数簇中包括端口号分配、数据波特率、波特率、数据位、停止位、校验位和数据流控制等。当串口初始化完成时,就可以使用该端口进行数据通讯了如果初始化没有问题,就可以使用这个串口进行数据传输。VISA Write,VISA Read函数的作用是发送数据。在接收数据帧之前需要用VISA Bytes at Serial Port检查该端口接收缓冲区的字节数,如果VISA Read需要读取的字节数大于当前缓冲区中的数据字节数,VISA Read将一直等待当前操作,直到等待时间超时,或者缓冲区中的数据字节数满足需要读取的字节数。若需要读取的数据有较大容量的需要,可以设置串口接收/发送缓冲区的数据容量,使用VISA Set I/O Buffer Size函数进行缓冲区容量设置;使用VISA Flush I/O Buffer可以清空接收与发送缓冲区。在串口通讯试验结束后,使用VISA Close关闭与VISA resource name规定的端口的会话[4]。
4.LABVIEW串行通讯设计实例
编写完成的上位机通讯程序框图如图2所示。在图2中,在主循环中放置一个while循环结构,然后在其中添加一个事件结构,这样就可以根据是否满足读取数据的需要进行数据解算工作,这些功能需要在事件结构中添加不同的触发事件,来触发数据发送或接收部分。在程序执行的最初阶段,需要对端口进行初始化操作,在这个程序狂徒中,将波特率设置为115200、数据位为8,无奇偶校验。在数据发送触发事件里,使用前文所述LABVIEW中的VISA串口通讯流程步骤,首先清空初始化VISA I/O缓冲区,然后将设置好的数据包转换成一个完整的十六制字符串通讯指令,通过VISA Write函数将通讯命令传输到下位机的缓冲区,延时20ms后,再调用VISA Read函数,将下位机反馈的数据帧在前面板进行显示,通讯完毕后使用VISA close函数,释放先前占用的串口资源。
该设计方案使用while循环+事件结构的优势是增强了系统的实时控制,减少系统的资源占用。除此之外,串口傳输数据需要一定时间,在执行读写操作时要进行延时处理,避免函数之间竞争系统资源或导致时序混乱,这样能确保下位机反馈的信息能够被正确识别到。
5.结论
本文基于LABVIEW虚拟仪器软件研究了一种上位机通讯程序,并进行了数据传输试验与分析。结果表明,该上位机软件成熟可靠、接口简单、便于使用,软件维护方便,能够满足串行通讯的工程应用,具用一定工程应用前景。
6.参考文献
[1]徐华中,黄丽萍.基于LabVIEW和DSP串口的多通道电机参数采集系统[J].电子测量技术,2011,34(4):66-69.
[2]吴振奎,张自雷,魏毅立,等.基于LabVIEW平台DSP与PC的Modbus协议串口通信实现[J].内蒙古科技大学学报,2014,33(1):58-62.
[3]易牧,胡延霖,李保林.基于LABVIEW和DSP的数据采集系统[J].四川兵工学报,2009,30(10):138-140.
[4]商秋芳,吴学杰,梅红伟,等.基于LabVIEW和TMS320F2812的液压伺服控制系统的设计[J].现代电子技术,2007,21(260)