点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程
一、引言
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显着区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW [2]集成了与满足 GPIB、VXI、RS-232 和 RS-485 协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX 等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。
PLC主要是指数字运算操作电子系统的可编程逻辑控制器,用于控制机械的生产过程。也是公共有限公司、电源线车等的名称缩写。PLC = Programmable Logic Controller,可编程逻辑控制器,一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。是工业控制的核心部分。
将 LabVIEW 与PLC 结合起来应用于工程实践,不仅可以大大降低成本、缩短开发周期,而且可以使得控制操作方便、界面美观。
二、应用背景
在某遥控模型装置的研制过程中,因被遥控装置的体积小、重量轻、内部结构复杂,以及其恶劣的工作环境决定了不适合在装置内部安装普通计算机,所以选用体积小重量轻、工作可靠的松下公司FPE 型PLC 来作为被遥控装置被控端的主控单元。该型号的PLC 有16点输入和16 点输出,程序容量可达32KB。PLC 在遥控装置中的作用主要是采集模型装置的状态、接收遥控端的控制信号以及驱动电机等。遥控端选用普通计算机,作用主要是负责读取PLC 中模型装置的相关动态数据并进行相关运算、根据具体工作模式给PLC 端自动发送控制信号或者通过采集人工输入信号并将其发送给被遥控装置的PLC。
鉴于 LabVIEW 软件可方便实现数据采集和信号处理,具有强大的外部接口能力,而且采用LabVIEW 编写控制程序主界面的既简单美观,又能节约开发时间,大大提高了程序设计效率等优点,遥控端的控制程序采用LabVIEW 编写。
三、LavVIEW 与PLC 的无线通信
无线通信(Wireless communication)是利用电磁波信号可以在自由空间中传播的特性进行信息交换的一种通信方式,近些年信息通信领域中,发展最快、应用最广的就是无线通信技术。在移动中实现的无线通信又通称为移动通信,人们把二者合称为无线移动通信。无线通信主要包括微波通信和卫星通信。微波是一种无线电波,它传送的距离一般只有几十千米。但微波的频带很宽,通信容量很大。微波通信每隔几十千米要建一个微波中继站。卫星通信是利用通信卫星作为中继站在地面上两个或多个地球站之间或移动体之间建立微波通信联系。
由于模型装置的遥控端和被控端相隔的距离较远,为方便控制被控装置的运动,所以考虑采用无线通信的方式让遥控端与被控端进行通信联系。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 之间通过串口的无线通信的方法。这种方法已经在某无线遥控模型装置上通过测试并得到应用。实践证明,这种无线通信方法不仅通信可靠,错误率极低,而且简单易行,能完全满足一些工程实际需求。
评论
查看更多