LabVIEW编程实例:如何通过TCP协议进行数据通信
对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议、UDP协议、DataSocket技术、甚至远程面板通信技术等方式进行通信。
下面通过一个简单的例子,演示在LabVIEW中如何通过TCP协议实现两个程序之间的数据通信功能。
实例说明
编写两个程序,分别为服务器端程序和客户端程序。其中,服务器端程序开始运行时,处于等待客户端连接的状态中,一旦有客户端成功连接,则向客户端发送带有时间信息的字符串“I`m sever!”;客户端程序与服务器成功建立连接后,则读取服务器端发送的信息,并在前面板上显示出来,以此来实现服务器端与客户端的通信。
编程思路
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。使用LabVIEW基于TCP协议编写通信软件时,一般其整个传输过程如下:
(1)服务器通过主机名或者IP地址与端口号,建立侦听,等待客户端连接;
(2)客户端根据主机的IP地址和端口号发出连接请求;
(3)服务器与客户端建立连接后,通过读写函数进行TCP数据通信;
(4)关闭连接。
在LabVIEW中,提供了一组专门的相关TCP的操作函数,在后面板程序框图中进入函数®数据通信®协议中选择TCP可以进入TCP子模板,主要节点函数如下图所示。
使用上面的函数,下面分别给出服务器端程序和客户端程序的具体实现方法。
服务器端程序
服务器端前面板如下图所示,其中,“端口号”设置服务器程序的端口,该值即为客户端程序的要连接的服务器程序的端口标识值;“待发送字符串”为发送给客户端程序的内容,该处设置为“I`m sever!”。
服务器端程序框图如下:
在程序框图中,首先利用“TCP侦听”函数创建一个侦听,该函数需要2个关键参数:端口号和超时时间(单位为ms)。该示例超时时间设为-1表示永远不超时,即无限等待下去直到有一个客户端程序连接。该函数运行后返回一个“连接ID”参数,该参数是其它TCP相关操作函数的输入参数接口。利用“格式化日期/时间字符串”函数取得当前的系统日期及时间,然后与待发送的字符串连接后得到实际发送的消息内容,利用“写入TCP数据”函数发送到客户端程序即可。该例中采用了两个“写入TCP数据”节点函数发送数据,首先发送消息内容的字节数(此处使用“强制类型转换”函数将“I32”类型的长度数据转换为字符串),其次发送实际的内容字符串数据。这种先发字符串长度再发字符串内容的发送方式有利于客户端正确的接收数据。最后调用“关闭TCP连接”函数,退出程序。
客户端程序
客户端前面板如下图所示,其中,“端口号”即为服务器端程序设置的端口标识值;“IP地址”设置服务器端程序的IP地址,“已接收字符串”显示服务器端程序发送的消息及收到该消息时的时间信息。
客户端端程序框图如下:
在程序框图中,首先调用“打开TCP连接”函数建立与服务器端程序的连接,该函数需要2个关键参数:IP地址和端口号,即服务器端程序所在的主机的IP地址及服务器端程序设置的端口号。该函数与服务器端程序正确建立连接后返回一个“连接ID”参数,该参数是其它TCP相关操作函数的输入参数接口。与服务器端框图程序相对应,该程序也采用了2个“读取TCP数据”节点函数读取服务器端程序发送的数据,与“写入TCP数据”节点函数不同的是,该函数还需要一个参数:要读取的字节数。由于服务器端程序先发送的是总字节信息,因此客户端首先读取接收消息内容的字节信息,输入I32类型的常数“4”,表示读取4个字节的内容,然后将读取的字符串内容使用“强制类型转换”函数转换为“I32”类型的字节值,将字节值作为第2个“读取TCP数据”节点函数的读取的字节值参数,然后将实际的消息内容读出显示到前面板的“已接收字符串”控件上即可。这种方法是TCP通信中常用的方法,可以保证在不丢失数据的前提下有效地发送或接收数据。最后调用“关闭TCP连接”函数,退出程序。
总结
通过上面的程序可以看出,由于LabVIEW对TCP协议通信底层的具体实现方法进行了高度的封装,因此使用这些函数构建复杂、灵活的网络测试系统时,相对于其它高级编程语言,将会大大降低编程人员的开发难度,提高编程效率,这也是图形化编程语言的高效、简洁的魅力所在。
另外,需要说明的是:
(1)采用TCP节点通信时,在服务器端框图程序中必须指定网络通信端口,客户端也要指定相同的端口,才能与服务器之间进行正确的通信,如上面例子中指定端口号为1800。在一次通信连接建立后,就不能改变端口的值了。如的确需要改变端口值,则必须首先断开连接,才能重新设置新的端口值。
(2)在客户端要指定服务器的IP地址才能与服务器之间建立连接。若服务器和客户机在同一台机子上运行时,客户端框图程序中输入的服务器地址可以设置为下面任意一个值:“localhost”、“127.0.0.1”、空字符串或者当前计算机的名称。
如果你觉得这篇文章对你有用的话,收藏 +点赞 吧。
基于单片机和LabVIEW的通信系统电能管理控制
摘 要 : 为了实现对水下观测设备电能供给状态的实时监测和控制,提出了一种基于单片机和LabVIEW的远程电力监控方案。设计了电能管理控制系统的总体结构和接驳盒节点的硬件结构。系统采用分级控制策略,通过光以太网进行通信,采用电压传感器和电能控制模块相结合的办法实现对电能的管理控制。试验表明,该系统能够可靠稳定地运行,为通信系统长期运行提供了保证。
0 引言
近年来,随着科技的不断进步,水下观测平台已经成为新的研究热点[1-3]。为了实现对远离岸基的水下各种信息连续不断地监测,必须利用海底光缆将岸基电能源源不断地送到接驳盒和观测传感器中,使各种远程接驳盒内部设备能够连续不间断地运行。因此观测网络电能管理系统将成为整个网络的核心组成部分[4-5]。
目前建立的观测网络多采用恒压供电方式,利用海水作为回路进行电能的传输,将岸基设置为阳极,海水和水下接驳盒设置为阴极,利用光缆中的铜导线将数千伏的高压电能传输到水下各个接驳盒,再利用接驳盒中的DC/DC模块将高压直流电能转换为可供各种传感设备使用的低压直流电能。
1 系统总体结构
在目前的观测网络系统中,全部采用的是直流输电系统。直流输电系统相对于交流供电系统主要有线路造价低、调节速度快等优点。在直流输电系统中又分为恒压供电和恒流供电两种方式。对于观测网络,部分系统采用恒压供电,但其供电系统复杂,设置有大量的控制装置和复杂庞大的电源变控系统,并且存在故障隔离难度大、不适合远距离供电、变换器复杂等缺点,没有得到广泛的应用。相对于恒压供电方式,恒流供电具有故障自动隔离、安全可靠、供电距离远、可带负载多、转换电路简单、需高压转换电路等优点,因此,本课题采用串联恒流供电方式[6]。
观测网络远程电力监控系统主要用于实现对直流电能传输过程的实时在线电力监控,系统总体结构如图1所示。基站远程电力监控中心实现对观测网络接驳盒监控节点和观测传感器的集中监测和控制,是系统的总控制中心。接驳盒监控节点是系统的水下分控制中心,也是整个监控系统实现的关键装置。接驳盒监控节点负责采集所连接的各个传感器的工作电压、电流及节点内部的工作温度,并把这些原始采集数据通过光以太网传送至基站远程电力监控中心。接驳盒监控节点还能够接收基站监控中心下发的各种控制指令,并通过节点内部的单片机微控制器控制机械继电器的开关,从而实现对各个观测传感器的远程遥控供电控制[7-8]。
2 水下接驳盒监控节点设计
2.1 接驳盒节点硬件结构
图2所示为接驳盒电能分配节点的硬件结构框图。系统采用两个控制模块进行电能的控制,采用三级控制策略对各种传感设备、供电模块进行通、断控制。第一级别是岸基工作人员通过基站监控中心向接驳盒内部ADAM4060进行控制命令的下达,ADAM4060控制模块实现相应的操作,完成对传感设备和供电模块的控制。第二级别是C8051F020主控模块自主完成对传感设备的控制,没有人工的参与,首先在前期的C8051F020软件设计中,设定相应采集电压的阈值,在主控模块工作中通过模拟外设ADC0进行各种传感模块电压的采集,如果采集到的电压不在阈值范围之内则触发P1口控制继电器工作,进行断开命令,防止电压过大使设备损坏,同时向岸基发送相应的控制信息。第三级别主要由供电模块自身硬件电路完成。
2.2 接驳盒节点电量测量模块
观测网络电源模块提供的电压是标准的5 V、12 V、24 V,即整个监控系统的输出电压范围为5 V~12 V,可以利用电量隔离传感器进行电压的隔离和变换,取得与被测电压成正比的0~5 V信号电压,经过A/D转换由采集模块接收,然后通过传输模块传送给监控中心。观测网络电能管理系统中,采用直流供电技术进行对接驳盒内部各种设备的供电。为了实现采集信号和低压数据采集系统的完全隔离,提高系统的抗干扰能力和可靠性,系统采用WBV121G07电压隔离传感器进行供电设备直流电压的检测,该电压隔离传感器采用线性光电隔离原理,对电压信号进行实时测量,经隔离转换成跟踪输入信号的、有一定隔离能力的标准跟踪电压(VG)输出[9]。如果要改变传感器设备供电电压测量范围,可以在电量隔离传感器的某一输入端串入分压电阻,电压测量通过分压电阻可以在不更换传感器的情况下改变测量范围。
2.3 接驳盒节点远程控制
开关量输出通道一般用于继电器、电磁阀门等模块的控制,在观测网络电能管理系统主要为了实现各种科学仪器的电能分配和电能的保护,采用继电器输出方式来实现电能的分配控制。继电器输出模块工作原理是将单片机内部的输出数字信号转换成继电器触点的不同动作。单片机输出信号“1”对应继电器触点闭合,单片机输出信号“0”对应继电器触点打开。图3为某一路输出模块电路设计图。开关量模块采用光耦隔离,可以实现继电器和单片机的隔离。大功率三极管用来驱动继电器工作,同时利用发光二极管来指示工作状态。
3 远程电力监控系统软件设计
观测网络远程电力监控系统的软件主要包括基站主程序和接驳盒主程序两大部分[10-11]。基站主程序通过基站前置机与接驳盒主程序通信,把从接驳盒监控节点接收到的原始数据进行处理与换算、界面显示及数据库存储等[12]。接驳盒监控节点主程序用于实现各观测传感器的A/D数据采集和机械继电器开关控制。
3.1 接驳盒节点程序
接驳盒节点主控程序采用C语言开发设计,其程序流程如图4所示。C805lF020控制程序主要分为初始化程序、主循环程序、采样中断子程序和通信中断子程序四个模块。初始化程序是对C8051F020单片机的一系列初值进行设定。
主循环模块主要包含指令执行函数和数据打包上传函数。指令执行函数对接收到的上位机指令进行解析,若不符合通信协议,则返回主循环;若符合通信协议,则执行相应的指令。数据打包上传函数对要发送到上位机的各路采集信号进行打包封装,送到发送缓冲区由通信中断子程序进行处理。通信中断子程序主要进行上位机命令数据包的接收和下位机系统采样数据包的上传。采样中断子程序主要对循环采样的各路数据进行判断检测和处理,并将采样数据暂存。
3.2 岸基站控制台程序
观测网络电能管理系统上位机软件要实现对接驳盒内电能参数进行长期实时连续监测,对超过阈值的情况报警,提供灵活的监测方案。一般布置在岸基工作站。利用LabVIEW虚拟仪器可以开发出功能强大的上位机软件,采用Modbus通信协议,通过RS-485串口实现与接驳盒下位机系统的通信,实现对观测网络电能参数的实时监控。
上位机软件设计中涉及到LabVIEW的多个功能和概念,主要包括枚举型、事件结构、通知器、状态机、生产者/消费者设计模式、While循环等。整个上位机软件充分利用了LabVIEW的并行处理优势,在以队列消息处理器为模板的基础上进行了设计和实现,队列消息处理器用于进行多个任务并行执行的设计,可以在进行数据连续采集和存储任务的同时监控用户界面事件。系统的程序框图如图5所示,可以看到系统由并行的5个循环组成,主要包括事件处理循环、UI消息循环、采集数据循环、存储数据循环、显示数据循环。事件处理循环(EHL)主要负责按用户界面操作生成对应的消息将事件生成消息传送到UI消息循环。UI消息循环从事件处理循环接收消息同时将响应消息送到其他消息处理循环(MHL)。采集数据循环主要进行远程接驳盒内部电能参数的采集。存储数据循环主要进行采集数据的记录。显示数据循环主要进行采集数据的处理和波形图表的更新。
4 系统测试与实验
为了验证观测网电能管理系统能否有效地实现电能的管理控制,利用台式机(其中带有RS485接口)来进行采集数据的显示,并在次级接驳盒接上各种传感设备,如图6所示。观测网电能管理系统将采集的电能参数通过传输系统送到2M协转口,并通过相应的监控软件进行显示。
通过监控中心上位机软件界面可以看到采集到的远程接驳盒内部监测信息如图7所示,显示了接驳盒内部的温湿度和各种设备的电压参数,同时按下监控界面的程控灯控制按钮,可以通过电能管理系统将水下程控灯打开,实现对电能的监测控制。
5 结论
本文提出了一种基于接驳盒监控节点的远程电力监控系统设计方案,接驳盒监控节点采用霍尔电流传感器检测观测传感器的工作电流,采用电阻分压的方法测量工作电压,采用热敏电阻来测量接驳盒节点内部的工作温度,并通过接驳盒内部的机械继电器开关,实现了观测传感器的电能分配控制,初步实现了观测网络电能供给系统运行状态的在线实时监测。实验结果表明,该电能管理系统能提高观测网络电能供给的安全性和自动化水平,从而为我国的深海海底观测平台建设提供关键技术支撑。
参考文献
[1] WATERWORTH G. Connecting long-term seafloor observatories to the shore[J]. Sea Technology, 2004,45(9):10-13.
[2] PERSON R, AOUSTIN Y, BLANDIN J, et al. From bottom landers to observatory networks[J]. Annals of Geophysics, 2006,49(2/3):581-593.
[3] 卢汉良,李德骏,杨灿军,等.深海海底观测网络水下接驳盒原型系统设计与实现[J].浙江大学学报(工学版),2010,44(1):8-13.
[4] 张平官,李小敏,凌岚.海底观测—科学与技术的结合[M].上海:同济大学出版社,2011.
[5] 卢汉良,李德骏,杨灿军,等.深海海底观测网络远程电力监控系统研究[J].传感技术学报,2011,24(4):564-569.
[6] 王希晨,周学军,忽冉,等.海光缆远程供电系统可靠性研究[J].上海交通大学学报(工学版),2013,47(3):428-433.
[7] 马伟锋,崔维成,刘涛,等.海底电缆观测系统的研究现状与发展趋势[J].海岸工程,2009,28(3):76-84.
[8] 赵伟,杨灿军,张佳帆,等.新型赤潮监测系统设计研究[J].传感技术学报,2008,21(5):744-747.
[9] 李泽勇,王文生.闭环霍尔电流传感器在逆变焊机中的应用[J].机械工人:热加工,2006(1):41-43.
[10] 卢汉良,李德骏,杨灿军,等.基于水下接驳盒的深海海底观测网络设计[J].计算机工程,2011,37(18):19-21.
[11] 刘超,王红霞,魏巍,等.海底观测网监控系统的设计实现[J].光通信技术,2014,38(1):14-17.
[12] 李德骏,杨竣程,林冬冬,等.单片机与CPLD技术的海底接驳盒电能监控系统[J].浙江大学学报:工学版,2012,46(8):1369-1374.
相关问答
如何用labview去控制绝缘耐压测试仪?
使用NILabVIEW软件来控制绝缘耐压测试仪,可以实现自动化测试和数据采集。首先需要建立一个LabVIEW程序,通过USB或GPIB接口与测试仪建立连接。然后,在...
怎么使用QQ进行远程控制-ZOL问答
选择对话框上方的一个电脑图标,然后点击,有三个选择,第一个是您申请远程控制对方电脑。第二个是您申请远程控让对方制你电脑。不管是您邀请对方控制你电脑...
开启海信电视ADB远程教程-ZOL问答
labview怎么自己设置一个开始运行的按钮?5419浏览9回答怎样把电脑的默认cpu数设置成8?2296浏览10回答石墨文档如何撤回修改8591浏览5回答一款日本游...
急急急:Labview培训要多少钱?
[回答]航天:中国民航,山东航空,西安咸阳国际机场,珠海航空,成都机场,民航华北空管局,首都机场,中航工业航空动力控制系统研究所(614所),民航数据通信有限...
android手机怎样远程控制android手机,大神求教-ZOL问答
7条回答:【推荐答案】手机远程控制手机,可以参考华为的亲情关怀。teamviewer只能手机控制电脑端,不可以手机控制手机端
怎么用一套键鼠分别控制多台主机?真心求教~-ZOL问答
只能使用DMZ的远程桌面。其实DMZ也是很简单的。弄好后完全是你要的想过。回...labviewVI里导出到excel数据怎么改为小数点后三位3623浏览8回答ZOL问答...
怎么指定远程服务器的ip地址-ZOL问答
labview怎么自己设置一个开始运行的按钮?5419浏览9回答怎么样将文件类型:Word.Document.12转为文件类型:MicrosoftWord文档7631浏览笔记本键盘打...
能远程删除iPad上的某个程序吗-ZOL问答
labview生成exe后,调用的vi没法运行,出现下面的问题5054浏览5回答电脑声音最大了还是很小怎么处理?8907浏览9回答WPS表格超链接问题。例:A、B两个工作...
Win7系统关机的时提示说你正在关闭一台远程计算机有人正在用...
labview生成exe后,调用的vi没法运行,出现下面的问题5056浏览5回答mac肿么进不了windows系统9575浏览6回答ZOL问答笔记本电脑问题详情电脑版首页资....
工业互联网技术学什么?
访问安全:通过建立统一的访问机制,限制用户的访问权限和所能使用的计算资源和网络资源实现对云平台重要资源的访问控制和管理,防止非法访问。平台安全:通过...