-1-
用 VB实现分布式光纤光栅传感网络的通道切换
摘 要:光纤光栅传感网络为了实现大范围、准分布式测量需要实时地切换传感通道。本文
介绍了利用 Visual Basic的MSComm控件实现微机与光栅传感网络间的串口通信,并在“手
工模式”和“自动模式”两种工作模式下成功切换了传感通道。
关键词:Visual Basic,串口通信,MSComm控件,光纤光栅
中图分类号: TP311,TN913
1. 引言
随着光纤光栅制备工艺日趋完善和波分、时分、空分等复用技术的发展,可实现准分布
式光纤光栅(FBG)传感网络[1]。因为光纤光栅传感器结构紧凑、易于集成和埋覆测量,对
传感信息采用本征性波长编码,免受电磁噪声和光强波动干扰,在国防与民用工业有着广阔
的应用前景。大型传感网络就需要用光开关实时地切换传感通道[2]。因此如何实时地、快速
地驱动光开关实现传感通道的切换,已成为大型传感网络实用化推广的相关技术问题。
传感网络系统的主要性能指标为[3]: ⑴应变、温度波长分辨率;⑵传感网络规模;⑶对
传感元的取样速率。波长分辨率主要取决于解调仪和系统信噪比;取样速率主要取决于传感
网络规模、网络采用的拓朴结构和系统所采用的波长探测技术。通过组合光开关拓朴结构可
构建各种实用的传感网络。光开关的组合方式、切换速率及其引各种损耗都会影响传感网络
的性能。因此,在经济、实用的前提条件下,设计出光开关的驱动电路及控制程序,就显得
至关重要。
本文用 1×4光开关组建光纤光栅传感网络,并制作了以 AT89C2051单片机为主光开关
驱动电路,该电路通过 MAX232芯片实现与微机串行口(DB9)通信。同时在Windows环
境下利用 Visual (以下简称 VB)ActiveX控件MSComm(Microsoft Communication
control)实现微机与光栅传感网络间的串口通信,并在“手动模式”和“自动模式”两种工作模
式下成功切换了传感通道。
2. 光开关驱动电路与计算机串口的硬件连接
由于 AT89C2051单片机输入、输出电平为 TTL电平,而计算机配置的是 RS-232C标准
串行接口,二者的电气规范不一致,因此,要实现微机与单片机的数据通信,就必须进行电
平转换。本系统用 MAXIM公司生产的 MAX232芯片制作了相应接口电路,如图 1所示。
在实际应用中,计算机与光开关驱动电路接口只需 3根信号线:发数据线(TXD)、收数据
线(RXD)和信号地线(SG)便可以实现两者间互相数据接收和发送,不需对信号线的状
态进行判断或设置。
图 1 系统硬件连接框图
-2-
3. 软件设计
为了实现计算机(上位机)与光纤光栅传感网络间(下位机)串口通信,约定两者通信
协议:波特率为 9600,无奇偶校验,8位数据位,1位停止位。上位机用 VB进行可视化编
程,下位机用 C 语言编写。对于串口事件两者都采用中断方式进行访问,以提高程序运行
速率。下位机每接到一个控制信号(要切换的端口号),就向上机位回传这个信号,作为确
认信号。上位机基于MSComm控件编写串口通信程序,设计了两种工作模式:手动模式和
自动模式。
上位机编程环境
VB提供的MSComm控件[4] “隐藏”了大部分串口通信低层运行过程和许多繁琐的过程,
它使用户能够方便地访问Windows下串口通信驱动程序的大多数特性。MSComm控件提供
了两种处理通信方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当
串口发生事件或错误时,MSComm控件会产生 OnComm事件,用户程序可以捕获该事件进
行相应处理,本系统采用该方式。另一种为查询方式,在用户程序中设计定时或不定时查询
MSComm控件的某些属性是否发生变化,从而确定相应处理。
MSComm只有一个 OnComm事件,所有可能发生的状况全集中在此一事件中处理。而
且只要 CommEvent属性值一产生变化,就会产生 OnComm事件,这表示发生了一个通迅事
件或一个错误。一旦 OnComm事件发生,连带地会引入 CommEvent参数,使用者可以在每
一个相关的 Case 语句之后撰写程序代码来处理特定的事件或错误[5]。本程序将 Rthreshold
设置为 1,当接受缓冲区有一个字符时,就会使得 CommEvent属性值改为 ComEvReceive,
因而程序在 OnComm 事件用 Select 语句对 CommEvent 属性值进行判断,当其值为
ComEvReceive时,就执行显示“信号确认”程序。
编写程序代码
本程序设计了两个窗口,分别是主界面与工作界面。工作界面又分为“手动模式”和“自
动模式”。由于 MSComm 控件不在最常用的控件工具箱中出现,因此编程第一步将其添加
到工具栏上。在部件对话框中选择“Microsoft Comm Control ”,此时工具箱上出现一个电
话机图表,这就是 MSComm图标。同时还设置了两个 Timer控件,一个用 NOW命令来显
示当前系统时间(在主界面上),另一个用于在自动模式下(在工作界面上),根据用户设置
的通道切换时间间隔来实现 4个通道间循回切换。
主界面程序
主界面是本程序的入口。当按下“开始”键,程序开始运行,首先提示用户设置工作模式,
不同工作模式用单选按钮来切换,如图 2所示。当选择了其中一种工作方式,程序就切换到
工作界面,按工作界面的“回主界面”按钮可回到主界面。主界面用于串口初始化和设置工作
状态。主要代码如下:
-3-
图 2 主界面图
Private Sub Form_Load()
'系统开始界面
……
= "开始" '控制功能:启动/结束程序
= 1 '设置通信口为 PC机 COM1串口
= True '开启串口
= 1 '接收缓冲区阀值,使接收缓冲区接收到一个字符,就
产生
一次 OnComm事件
= 1 '发送缓冲区阀值,当发送缓冲区中字符小于该值的瞬
间产生 OnComm事件
= 1 '设置每次从接收缓冲区中只读一个字符
= "9600,n,8,1" '波特率为 9600,无校验,8位数据位,1位停止
位
……
End Sub
Private Sub Command1_Click()
'当按键名为开始时,启动系统;按键名为退出时,关闭串口,结束程序
If = "开始" Then
= "退出"
MsgBox "请选择光开关工作方式", vbOKOnly + vbInformation, "通道工作方式
"
'弹出提示选择控制模式对话框
……
Else
= False '退出之前关闭串口
Unload Form2
Unload Form1
End sub
-4-
工作界面程序
工作界面分“手动模式”和“自动模式”两种。当在手动模式下,窗口(Form2)标题为“通
道手动选择模式”,同时按键(Command1)显示“切换到自动模式”。若在此模下,按下此键,
系统就切换到自动模式,切换时无需回主界面。同时窗口标题和按键名也随即变换为“通通
自动选择模式”和“切换到手动模式”,并跳出提示设置切换时间间隔的对话框。
通过设置时间间隔,即单击下拉列表(Combo1),将触发 Timer2 正常工作。若要回主
界面则可按“回主界面”按钮(Command2)。
手动模式下,用户可以在“通道选择”(Frame2)中,用鼠标左键选择所要切换的通道。当
选择了某通道,状态指示灯(Frame1)的相关的指示灯由红变绿,同时用文本提示现所选的
通道号。将光纤光栅网络接口模块连接到计算机串口 COM1上,接上接口模块电源时,“通
信确认”(Frame3)就会回复确认信号。如果硬件没有接通,则没有确认信号,如图 3所示。
信号确认由 Form1的()函数完成,主要代码如下:
Case comEvReceive '当事性属性为 comEvReceive时,回复成功通信确认信号
= "通道" + Str() + "回复确认信号"
图 3 手动模式
注:上图中的光栅波形是张图片,非真实的光栅波形。留此图片是为了后续开发光栅传感的监控系统。
手动模式,主要编写了“通道选择”(Frame2)中几个通道的切换程序(Option1-4),4
个通道切换子程序基本相同,因此这里只给出了通道 1的控制程序,具体如下:
Private Sub Option1_Click() '切换到通道 1
= True
= "1" '向光栅传感网络发送选择通道 1命令
= "提示:选择了通道 1"
(0).BackColor = RGB(0, 255, 0) '控制指示灯
……
End Sub
自动模式中,首先设置 3个公有变量,以控制通道自动切换,具体如下:
Public TIME_COUNTER As Integer '自动模式下时钟计时
Public PORTN As Integer '自动模式下设置通道口
-5-
Public N As Integer '自动模式下设置通道切换时间间隔
在实际应用中,用户可通过选择下拉列表(Combo1)中 List项目,设定通道切换时间
间隔 N,同时触发 Timer2 计时。此时,程序进入自动模式,当 Timer2 计数到
TIME_COUNTER=N这个阀值时,实现通道切换,同时暂时屏蔽 Timer2事件。相关程序如
下:
Private Sub Combo1_Click() '设置通道切换时间间隔
Select Case
Case Is = 0
N = 4
TIME_COUNTER = 0
……
= True '开启 Timer2
= 500 '设置 Timer2事件时间间隔为 500 ms
End Sub
Private Sub Timer2_Timer()
If TIME_COUNTER = N Then '自动模式下,达到阀值切换通道
TIME_COUNTER = 0
Select Case PORTN
Case Is = 0
= 0 '在通道切换的瞬间,暂时关闭计时时钟中断事
件
= True
PORTN = 1
……
End Select
If = False Then = 500 '重新开启中断
Else
TIME_COUNTER = TIME_COUNTER + 1
End If
End Sub
运行结果
计算机连接上光纤光栅传感网络接口电路,点击“光通道选择仪”的“开始”按键,程序开
始运行,用户可根据需要选择“手工模式”或“自动模式”。在自动模式下,每隔一定时间,就
向光纤光栅传感网络达传切换通道命令。传感网络接收到此命令回,通过单片机驱动光开关
电路,选取相应有光通道,同时回传确认信号。上位机程序接收到确认信号后,将其显示在
“通信确认”(Frame3)的文本框(Text1)中。在程序运行过程中在右下角显示系统当前的时间,
如图 4所示。
-6-
图 4 自动模式
注:上图中的光栅波形是张图片,非真实的光栅波形。留此图片是为了后续开发光栅传感的监控系统。
4. 结语
在 Windows 环境下利用 中的 MSComm 控件,成功实现了用计算机控制分布式
光纤光栅传感网络的通道切换。通道切换的成功实现,必将为光纤光栅传感网络调解和信号
处理打下良好的基础。
参考文献
[1] Alan D. Kersey, Michael A. Davis, Heather J. Patrick, et al. Fiber Grating Sensors [J].Journal of Lightwave
Technology , 1997, 15⑻: 1442~1463
[2] M. A. Davis, D. G. Bellemore, M. A. Putnam, et al. Interrogation of 60 fiber Bragg grating sensors with µ strain reolution capability [J].Electron. Lett. , 1996, 32:1393
[3] 李志全, 汤敬, 许明妍, 等. 分布式光纤光栅传感网的复用解调技术[J]. 光电子技术与信息, 2005,
18(2):53~57.
[4] 孙颖, 沈精虎. 基于 VB 的串行通信在电机驱动监控系统中的应用[DL] . ,
2006.
[5] 李锋, 曾德良, 于湘涛. 基于 的串口通讯程序设计[J]. 现代电子技术, 2002, 10(141):54-57.
Channels Switch of Distributed Fiber Bragg Grating Sensing
Network by applying VB
Zhou Qinfeng, Xu Tiefeng
Faculty of Information Science and Engineering, Ningbo University, Ningbo (315211)
Abstract
In order to achieve wide-range and distributed measurement, Fiber Bragg Grating Sensing Network
needs to switch channels at right moment. This paper introduces the way of realizing serial
communication of personal computer and Fiber Bragg Grating Sensing Network by applying Microsoft
Communication Control(MSComm) of Visual Basic and successfully switching channels under
automated pattern and manual pattern.
Keywords: Visual Basic, Serial Communication, Microsoft Communication Control, fiber grating