时间:2024-12-22
赵 炯,唐 聪,杨天琳
(同济大学 机械工程学院,上海 201804)
地铁隧道变形包括隧道的横向与纵向形变,简称隧道整体形变.通过建立一套完善可靠的隧道形变监测以及报警机制,保证地铁运营环境的安全.
目前隧道监测主要有人工测量和全站仪2种方法,前者主要靠人工实时采集各个分散的变形监测点的数据,最终通过网络传递给上层数据库并进行分析处理得到变形曲线,该方法效率较为低下,人为误差难以控制;后者通过在隧道侧壁上安放多点光源,形成x,y,z三个方向上的隧道模型,再通过后期处理得到隧道的变形程度分析.但全站仪成本高,不适合普遍运用以及远距离隧道的监测[1].针对上述2种方法的缺点,本文提出将嵌入式Linux技术运用在隧道变形的纵向变形监测中,在隧道侧壁上多点安装嵌入式终端,并利用rs485总线实现主机PC与多从机之间的控制以及数据传输,形成了一套可靠有效的监测终端网络.
组建嵌入式终端网络,由分布于隧道各监测断面上的图像传感器及其网络系统构成[2].图像传感器获取各断面上光源图像并通过图像处理技术获取圆心数据,并通过网络系统向站级监测系统发送结果.站级监测系统收到数据后再结合隧道横向的监测数据进行三维建模,评估整条线路的状态,实现隧道安全预警及信息网络发布.隧道纵向监测网络见图1.
图1 隧道纵向监测网络Fig.1 Tunnel deformation detected network
嵌入式终端是纵向监测网络中的节点.基于S3C2440微处理器,板载64 MB大小的同步动态随机存储器(SDRAM)以及64 MB大小的资料存储型闪存(Nand Flash),通过分时复用,控制2个ov9650图像传感器,分别获取安装在隧道前后的光源图像,编写Qt界面程序实现视频预览以及设置节点地址等其他功能.
Ov9650是OMNIVISION公司推出的一款互补性氧化金属半导体(CMOS)摄像头,最大支持1300像素×1028像素(1,336,400像素).其动态图像分辨率有4倍视频图像阵列(SXGA),视频图像阵列(VGA),1/4视频图像阵列(QVGA)等.
在隧道侧壁上安装多个监测终端,并配置2个ov9650摄像头来获取隧道前后方向的光源图像,这种方法主要是为了建立起误差传递以及校正的机制.由于不需要两路摄像头同时工作,因此它们共用数据线和时钟线并通过2个使能引脚GPH9,GPH10实现摄像头的切换.
终端扩展了800像素×480像素的LCD并编写Qt程序实现交互界面,通过切换摄像头分别预览隧道前后目标光源的位置、亮度等是否符合图像采集的要求,同时提供设置节点地址的功能实现串行通信,方便初期的安装调试.
S3c2440内含Camera Interface接口(简称CamIf),ov9650属于该接口所支持的外设.摄像头要正常工作,分别需要编写CamIf和ov9650的驱动.
根据Linux视频设备驱动的模型V4L2编写CamIf驱动,向外设以及用户程序提供了接口[3].实现Preview和Codec 2个通道以及直接内存存取(DMA)传输功能,用来对设备输出的视频流进行处理传输.切换到P通道,输出RGB565彩色格式的像素数据,并在DMA控制器的作用下将数据传输到内存中,Qt界面通过定时刷新读取内存中的像素数据,实现视频预览;切换到C通道,把图像数据按照YCbCr4∶2∶2的格式传输到内存中,通过提取Y,Cb,Cr等3个分量并将其转换为RGB格式的BMP位图格式图片,经图像处理后得到光源的圆心数据.
Ov9650驱动主要通过配置寄存器完成一些初始化操作,如输出的视频格式、分辨率、自动白平衡、自动曝光控制等工作,驱动也可对OA和OB地址进行读操作,获取设备ID作为初始化确认信息.通过调用CamIf驱动提供的接口s3c2440_camif_register_camhw(&ov9650)将自身注册到CamIf支持的设备列表中.注册成功后,CamIf驱动将会在文件系统中创建与该设备对应的video N节点,用户程序可通过v4l2接口来对CamIf进行设置,更改输入视频格式、通道模式或者窗口大小等[4].程序实现如下:
自定义v4l_device数据结构,cap_len大小根据视频预览或图像采集而定,表示capbuf或者cambuf的像素缓冲区的长度;v4l2_format是内核中定义的结构体,主要是用来设置CamIf的格式.
v4l2_format结构体中定义1个枚举变量,用来表示格式类型,根据类型确定union联合体内部的具体结构体.由于只需使用到截取图像(CAPTURE)这个功能,设置类型为V4L2_BUF_TYPE_VIDEO_CAPT URE,同时初始化pix结构体变量,该变量内部包括像素数据的格式以及宽度、高度等.通常定义2个结构体变量oldfmt以及newfmt,oldfmt用来保存原始的CamIf摄像头接口格式,定义newfmt用来配置新的摄像头接口格式.对CamIf摄像头接口的操作通过调用内核中V4L2机制提供的VIDIOC_G_FM T以及VIDIOC_G_FMT命令来实现.操作程序过程如图2所示.
新格式生效后,再分配像素缓冲区并对像素进行操作.另外用户程序可以通过sccb总线对ov9650进行设置.在隧道壁上安装调试多个嵌入式终端后,需要自定义通信协议来实现主机PC多个节点之间的控制与数据传输功能.
图2 功能实现图Fig.2 Function process on borad
上面已经实现了嵌入式终端所需的基本功能,为了实现隧道纵向的远距离监测,需要布置多个节点,多个节点与主机PC的通信成为了要解决的下一个问题.因此需组建RS485网络以及制定适合需求的串口通信协议.考虑到隧道监测系统节点多以及数据量少的特点,本协议参考开放式系统互联(OSI)系统模型,简化为物理层、数据链路层和应用层.
考虑到RS485接口优良的特性,采用其作为物理层的传输媒介并组建网络[5].系统选用了MAX3485作为RS485协议芯片,完成将T TL电平转换为RS-485电平的功能.主机PC通过RS232转485的接口与通信总线相连,嵌入式终端直接通过扩展485接口挂靠总线,拓扑图如图3所示.
图3 RS485网络模型Fig.3 RS485 Network model
该层主要实现数据无差错的双向传输,基本通信单位是帧,该层设计实现了寻址、冲突检测机制、流量控制和差错处理4个方面的功能.
3.2.1 寻址与流量控制
RS485总线上的每个节点都要分配不同的地址,在本协议中,将地址信息加入帧内,包括源地址字段和目的地址字段.源地址与目的地址各由2个字节组成,并且主机支持广播功能,主机PC地址为0x0000,从机地址范围为0x0000~0xFFFE.设置广播地址为0xFFFF,当主机PC发送广播地址时,从节点都接收(见图4).
通信协议中的流量控制采用停止等待方法,即主机发送出一帧后等待从机的应答信息.若在N时间以及M次重复发送后仍没有等待从机的信息,则跳过当前节点继续与下一节点通信;若立刻收到应答信息,也继续向一下节点通信,保证通信的效率.
3.2.2 冲突检测机制和差错检验
RS485为半双工结构,同一时刻只能有1个从节点处于发送状态,否则将导致总线冲突.通过给每个节点定义1个唯一的地址以及等待节点数据传输完成,消除了串行线路上由于几个从节点同时发送引起冲突的可能性.采用循环冗余校验(CRC)循环校验对帧的数据段,进行计算得到校验码,并将其添加在帧中.主机收到该帧后重新计算CRC,检验接收到的数据是否正确.
3.2.3 数据链路层的帧结构
考虑到隧道监测要实现主机端的控制以及双向的数据传输,本协议定义了以下3种类型的帧:请求帧、数据帧、确认帧.确认帧用来应答主机,表示正确接收到帧.帧格式如表1所示.
若主机需要控制从机发生动作,则发送请求帧,从机根据帧类型做出具体的响应;若主机需向嵌入式终端传递设置参数,则发送数据帧,从机接收到数据并确定CRC校验无误后,根据帧类型设置参数.若需实现其他的控制功能,则可扩展帧类型字段,并定义从机的响应行为.
在数据链路层接收到请求帧以后,根据帧类型调用应用程序的子程序,包括控制嵌入式终端进行视频截图以及图像处理等.子程序处理完后将数据返回给链路层,组合成帧并通过串口发送.
图4 流量控制图Fig.4 Flow control process
表1 帧格式Tab.1 Frame format
首先,主机首先建立1张1024项的网络表.每一项用来描述该节点的属性,包括节点地址、在线时间和工作状态.主机依次向表中各项发送请求查询帧,若在线则更新节点在线标志位.通过一定间隔的扫描实现从机表项的添加或者移除.
其次,主机广播发送请求同步帧,该帧以广播形式发送,所有的在线节点均能响应该请求.请求同步帧主要是实现隧道的同步拍摄,得到某一时刻的光源图像,并对该图像进行处理[6],当收到主机请求数据帧时再返回数据.
最后,主机依次向网络表中的节点发送请求数据帧,从机的数据帧实现了CRC循环校验,主机收到数据后对数据重新进行CRC校验,若二者相等,则向下一表项发送请求.为了确保总线数据不冲突,同一时刻只能向1个表项发送数据请求帧.主机端的通信流程图如图5所示.
图5 主机端通信流程图Fig.5 Function process on host
嵌入式技术应用在隧道监测中有着较强的创新性.通过自定义RS485通信协议,实现了多种请求帧类型,从而使主机端更有效地对嵌入式终端进行控制.采用RS485总线以及ARM(Advanced Reduced Instruction set Computer Machines)组成的终端网络,更加有利于调试以及管理.整套监测系统具有较强的通用性,其设计采用一般的协议分层模式,实现了向上接口友好,通过帧结构设计及灵活的冲突检测方式可以实现总线上主机与节点的通信,满足了项目的实际需求.
[1]晏成.全站仪在隧道变形监测中的应用研究[M].上海:同济大学出版社,2005.YAN Cheng.T he research of total station in subway tunnel deformation detection[M].Shanghai:Tongji Univerity Press,2005.
[2]周奇才,高嵩,熊肖磊,等.基于图像传感器网络的隧道形变监测系统研究[J].计算机测量与控制,2009,17(9):1699-1700,1704.ZHOU Qicai,GAO Song,XIONG Xiaolei,et al.T he research of subway tunnel deformation detection based on video sensor network[J].Computer Measurement&Control,2009,17(9):1699-1700,1704.
[3]孙天泽,袁文菊.嵌入式设计及Linux驱动开发指南[M].北京:电子工业出版社,2007.SUN Tianze,YUAN Wenju.T he director of Linux driver and embedded design[M].Beijing:Publishing House of Electronics Industry,2007.
[4]CO RBET J,RUBLNI A,HARTM AN G.Linux device driver[M].3rd.ed.Sebastopol:O'Reilly Media,Inc,2006.
[5]闫成华,周余,都思丹.基于嵌入式Linux的 RS485通信协议[J].计算机工程,2008,34(11):278-280.YAN Chenghua,ZHOU Yu,DU Sidan.T he RS485 protocol based on embedded Linux[J].Computer Engineering,2008,34(11):278-280.
[6]郑宇轩.地铁隧道形变检测的数字图像处理技术应用[D].上海:同济大学,2009.ZHENG Yuxuan.The application research of the digital image process in deformation monitoring of subway tunnel[D].Shanghai:Tongji University,2009.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!