基于串口实现LabVIEW与PLC的无线通信
扫描二维码
随时随地手机看文章
一、引言
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是美国国家仪器公司(National Instruments)推出一种基于图形语言(G 语言)的开发环境,编程非常方便,人机交互界面直观友好,用户可以创建独立的可执行文件,能够脱离开发环境而单独运行,是目前最流行的虚拟仪器编程平台,广泛应用于测试测量、过程控制、实验室研究与自动化等方面。
可编程控制器(Programmable Logic Controller,简称PLC)是将计算机技术、通信技术和自动控制技术结合在一起的自动控制设备,具有可靠性高、体积小、功耗低、抗干扰能力强等诸多优点,保证其在温度和湿度都较高、空间较小、工作环境恶劣的环境下稳定、可靠、长时间连续地工作。
将 LabVIEW 与PLC 结合起来应用于工程实践,不仅可以大大降低成本、缩短开发周期,而且可以使得控制操作方便、界面美观。
二、应用背景
在某遥控模型装置的研制过程中,因被遥控装置的体积小、重量轻、内部结构复杂,以及其恶劣的工作环境决定了不适合在装置内部安装普通计算机,所以选用体积小重量轻、工作可靠的松下公司FPE 型PLC 来作为被遥控装置被控端的主控单元。该型号的PLC 有16点输入和16 点输出,程序容量可达32KB。PLC 在遥控装置中的作用主要是采集模型装置的状态、接收遥控端的控制信号以及驱动电机等。遥控端选用普通计算机,作用主要是负责读取PLC 中模型装置的相关动态数据并进行相关运算、根据具体工作模式给PLC 端自动发送控制信号或者通过采集人工输入信号并将其发送给被遥控装置的PLC。
鉴于 LabVIEW 软件可方便实现数据采集和信号处理,具有强大的外部接口能力,而且采用LabVIEW 编写控制程序主界面的既简单美观,又能节约开发时间,大大提高了程序设计效率等优点,遥控端的控制程序采用LabVIEW 编写。
三、LabVIEW 与PLC 的无线通信
由于模型装置的遥控端和被控端相隔的距离较远,为方便控制被控装置的运动,所以考虑采用无线通信的方式让遥控端与被控端进行通信联系。LabVIEW 与PLC 之间的通信通常是采用串口方式,为此只需在这两者之间架设无线电台,并以无线电台为桥梁实现LabVIEW与PLC 之间通过串口进行无线通信。
3.1 无线电台及其与终端的连接
我们采用深圳市友讯达科技发展有限公司生产的 FC211LP 微功率无线数传模块作为无线电台。该电台工作频率在ISM 频段(载波频率433MHz),基于FSK 的调制方式,采用高效信道编码技术,提高了数据抗突发干扰和随机干扰的能力。其传输性能优良,接口多样,且设置使用方便,共提供三种内部接口方式:TTL/RS232/RS485,并提供透明的数据接口,接口波特率为1200/2400/4800/9600Bit/s,空中波特率为1200/2400/4800/9600Bit/s,用户均可根据实际需要进行设置。另外,该电台还具有可靠性高、体积小、重量轻等特点。
该电台采用单片射频集成电路及单片 MCU,外围电路少,电台与被控端和遥控端的连接如图1 所示。
将电台和用户终端连接好后,只需打开其附带的编程软件Fc211sp,进行相关设置即可使用。在这个编程软件中,可以读取电台当前设置,也可以改变信道、空中频率以及端口等的相关设置。由于PLC 与LabVIEW 之间数据传送是双向的,所以两个电台的设置应当完全一致。
3.2 LabVIEW 与PLC 的串口通信
利用串口实现 LabVIEW 与PLC 之间通信的常用方法一般有两种,第一种方法是利用VISA 进行串口通信。VISA 是应用于仪器编程的标准I/O 应用程序接口,它本身并不具有仪器编程能力,VISA 是调用底层驱动器的高层API。第二种方法是利用标准串口通信函数进行串口通信。LabVIEW 中提供了几个标准的串口通信函数,包括串口初始化函数、数据写入串口函数、从串口读出数据函数以及关闭端口函数等。这两种方法虽然都可是实现LabVIEW 与PLC 的串口通信,但是前提是程序设计人员必须充分熟悉串口通信的工作原理及LabVIEW 的程序编写,并且还需要设置相关的参数以及出错处理等,保证串口通信正常进行,程序编制过程相对比较复杂。
实际上,LabVIEW 本身就带有“Instrument I/O Assistant”,这个I/O 助手可帮助程序设计人员轻松完成串口通信相关参数的设置,并实现与相关设备的串口通信。下面就以LabVIEW 与PLC 的串口通信为例说明如何利用I/O 助手实现串口通信。
I/O 助手可以选择不同的设备端口,设定延迟时间以及定义接收和发送时结尾字符。由于LabVIEW 与PLC 的串口通信是应答式的,并且设计中以LabVIEW 为主动,PLC 为被动,所以在“Select Instrument”中要先选择加入“Write”,并将其输入的字符串命名为input,用以存放给串口的写入命令,来对PLC 进行读或写,然后选择加入“Read and Parse”,并将其输出的字符串命名为output,用以存放串口中的返回数据。设置好的设置界面如图2 所示。
松下公司的 PLC 串口通信格式是采用MEWTOCOL 协议,所以还要根据其协议格式来组织输入的命令字符串以及分解串口返回的字符串。以向PLC 中写数据为例,如果要向PLC的DT600 到DT603 四个数据单元中分别写入数据100、200、300、400,则输入字符串,即控制命令字符串应为“%01#WD00600006036400C8002C019001CR”,其中CR 为校验码,控制命令字符串中的4 个数据项应当都为16 进制数据。命令字符串的组成可以通过LabVIEW提供的相关函数来完成,如图3 所示。
其中 XOR 子VI 作用是求取“%01#WD00600006036400C8002C019001CR”这个字符串的校验码,其程序可采用LabVIEW 中的相关函数来编写。命令字符串组成完后,将其赋值给input 字符串变量,然后建立input 字符串变量的一个局部变量,将其连接到“Instrument I/O Assistant”中input 项。另外,还要创建一个接收从串口返回的字符串的变量output,以及为串口通信报错的error 变量,并将其都连接至“Instrument I/O Assistant”中的相关项,连接完成后如图4 所示。
对于向 PLC 写入数据,如果串口通信正常,则返回字符串output 中将应是“%01$WD13”,否则将会报错,并提示错误代码,错误原因可根据错误代码查阅MEWTOCOL 协议手册。如果是从PLC 中读出数据,与向PLC 写入数据相比,则不仅输入的命令字符串不同,而且返回字符串output 的内容也不同,返回字符串output 中将包含所读取的数据信息以及其他校验信息等,需要从这个字符串中将数据信息提取出来。例如,如果命令是读取PLC中DT650到DT653 的数据,则写入的命令字符串是“%01RDD0065000653CR”,其中CR 是校验码。
假设PLC 中这几个寄存器中的数据分别为150、250、350、450,则返回的字符串是“%01$RD9600FA005E01C201CR”,其中CR 是校验码。得到返回字符串后,还需要进一步将其分解,以便得到相应的数据,分解子VI 程序如图5 所示。
因采用的是应答式串口通信,当数据量很大时,通信滞后可能是要面临的一个问题。另外,因无线通信为保证通信准确率,在距离较远的情况下,需要适当调低无线通信的空中频率,这也可能会造成串口无线通信的滞后。当通信的数据量较大,可采用数据分组的方法,将所有要交互的数据分成若干组,让那些实时性要求很高的数据在每一组数据中都出现,而其他数据分布再不同的组中,但每一组的数据总量要适中,程序在每一次循环内只分别对一组数据进行读操作和写操作,这样会在很大程度上减少大量数据通信滞后带来的一些问题。
四、结束语
本文介绍了利用无线电台实现LabVIEW 与PLC 之间通过串口的无线通信的方法。这种方法已经在某无线遥控模型装置上通过测试并得到应用。实践证明,这种无线通信方法不仅通信可靠,错误率极低,而且简单易行,能完全满足一些工程实际需求。
本文创新点:采用LabVIEW 中的“Instrument I/O Assistant”模块与PLC 进行串口通信,并实现LabVIEW 与PLC 的无线通信,不仅通信可靠,且简单易行。