基于GeoCom接口远程控制软件研究与设计
2017-11-01邓清军许邦鑫
邓清军,王 盼,许邦鑫
(1.中国能源建设集团安徽省电力设计院有限公司,安徽 合肥230601;2.合肥工业大学,安徽 合肥 230009)
基于GeoCom接口远程控制软件研究与设计
邓清军1,王 盼2,许邦鑫1
(1.中国能源建设集团安徽省电力设计院有限公司,安徽 合肥230601;2.合肥工业大学,安徽 合肥 230009)
研究GeoCom接口通信协议,将PC与测量机器人通过串口数据线建立连接,并在VS2010平台下调用GeoCom动态链接库,开发一套PC版测量控制系统。基于Socket网络通信原理,实现对测量机器人的远程控制,并建立友好的远程客户端功能界面、设计了快捷键控制仪器转动和模拟显示实时测量状态的功能;结合SQL Server数据库完成了本系统的开发,并在最后做了测试,结果显示本系统测量数据可靠,可用于实际测量工作中,实现测量内外业作业的一体化。
测量机器人;GeoCom;自动化观测;Socket
测量机器人具有数据通信、CCD成像技术、自动目标搜索、目标锁定、自动测量和自动记录等功能,被广泛应用于高精度变形监测工程中。利用测量机器人进行手动观测,对劳动强度减少和工作效率提高的作用很小,没有充分发挥其智能的特点。Leica公司针对TPS系列全站仪向用户提供了GeoCom地理数据通信接口,一方面,本文利用GeoCom接口完成外部控制软件开发,对研究过程中的问题和解决方法进行阐述;另一方面,利用Socket网络通信原理,设计了对全站仪实现远程控制的客户端。
1 GeoCom接口技术开发平台
1.1 GeoCom接口介绍
GeoCom是Leica测量机器人的串行通信接口,按点对点的方式进行通信[1]。图1是GeoCom的基本通信流程,客户端和服务器为相互通信的两部分。GeoCom串口通信一般由请求和应答组成,从客户端发送一个请求给服务器到客户端接收到服务器返回的应答为止为一次完整的通信过程。
图1 GeoCom基本通信流程示意图
GeoCom有两种接口协议:低级的ASCII协议和高级函数协议。ASCII协议一般用在不支持MSWindows的平台上,所以本次研究使用高级函数协议。高级函数协议只需要简单的函数调用,它们都封装在GeoCom的函数中,而使用ASCII协议需要重新编写串口函数来实现命令的发送以及数据的接收。本软件使用C++高级编程语言进行软件开发,用户可在VC编程时引入GeoCom32.lib库文件并在项目中添加com_pub.hpp函数声明文件,即可像调用本地函数一样调用GeoCom函数[2,3]。GeoCom按照功能可分为12 个子系统,每个子系统下包含对应的功能函数[4]。如表1为12个子系统的功能说明。
表1 GeoCom子系统的组成
1.2 GeoCom函数具体实现
在熟悉GeoCOM基本原理与结构后,本研究主要利用COM、AUT和TMC 3个主要模块进行软件开发,PC控制软件系统组成如图2所示。
该系统由项目管理、配置、测量 3个模块组成。项目管理主要完成项目创建和打开的操作,直接由计算机控制的软件基础功能。置中的串口设置对仪器通信进行串口、波特率、数据位等通信设置,然后调用GeoCOM的COM子系统与仪器建立通信;限差是对测量时的归零差、2C互差、测回差进行设置,保证数据的正确性[5,6]。测量模块中的设站、学习测量、记忆测量3个功能都需要调用GeoCOM的AUT和TMC子系统来协同完成仪器的测量任务。学习测量是人工进行目标照准,输入点名和棱镜高,确认后测量,得到学习点的竖直角和水平角。记忆测量是在学习测量完成之后,仪器根据学习点的竖直角和水平角,自动转动到目标棱镜方向并自动照准、测量、记录的功能。
图2 PC控制软件系统
下面以编写的“学习测量”功能的测量动作在Visual C++的具体实现为例,展示调用GeoCom完成测量作业任务的一般步骤:
1)初始化GeoCOM:rc = COM_Init();
2)打开通信端口:rc=COM_OpenConnection(eComPort,eBaudRate,1);其中 eComPort、eBaudRate分别为与仪器对应的端口和波特率;
3)将望远镜照准指定方向:rc = AUT_MakePositioning(Hz,V,POSMODE,AUT_POSITION,FALSE);其中Hz、V为指定转动到的水平角和竖直角。在完成此操作后需要用Sleep函数让程序暂停一会再发送其他命令,以保证仪器处于稳定状态,防止出现意外错误;
4)精密照准目标:rc = AUT_FineAdjust (dHzSearch Range,dVSearchRange,FALSE);这 个 函 数 的 会利用仪器ATR功能,在定义的dHzSearchRange,dVSearchRange水平角和竖直角范围内搜索棱镜并将望远镜十字丝中心精确照准棱镜中心,实现自动照准目标的功能;
5)执行测距动作:rc = TMC_DoMeasure (TMC_DEF_DIST,TMC_AUTO_INC);TMC_MEA_INC感器补偿模式,这是通过精密测量倾斜传感器的值来进行补偿的一种模式,其特点是补偿精度高,但测量所需的时间大大增加;TMC_PLANE_INC计算补偿模式,这是通过计算的方式来获取补偿信息,大大提高了测量的速度,但因为是计算得出的补偿值,实时性较TMC_MEA_INC差一些,精度得不到满足;TMC_AUTO_INC是自动补偿模式,这是以上两种模式的一个结合点,即让仪器自己来判断何时用传感器补偿模式,既能保证精度又能提高测量速度;
6)获取角度和距离的测量数据:rc = TMC_GetSimpleMea (3 000,Angles,dSlopeDist,TMC_AUTO_INC);该函数不会执行一个新的距离测量动作,所以要获得目前的距离和角度,必须要先执行TMC_DoMeasure()距离测量命令;
7)清空测距结果:TMC_DoMeasure(TMC_CLEAR);即清空仪器上数据池。至此,可完成“学习测量”的全部功能,程序可执行其他操作;
8)关闭通信端口, 退出GeoCOM:
rc=COM_CloseConnection();
rc= COM_End ();
在上述步骤中,rc为GeoCOM返回码,可以根据返回码分析仪器是否成功执行发送指令并获取数据。
2 远程控制结构设计
以上阐述的自动化数据采集软件是在以RS232电缆线为通信基础的前提下完成的。由于RS232电缆线自身提供的可用距离非常短(1.5 m),无法将观测数据及时、有效地送达远程的操作人员[7,8]。本次研究还对拓展其通信距离进行了分析、设计,设计结构如图3所示。
图3 远程控制通信结构设计
本文设计的远程控制通信结构为:将原先研究的自动化数据采集系统看作一个整体并且作为服务器,PC监控端为客户端,服务器端的设备与全站仪通信可通过RS232、蓝牙等方式,根据现场不同需求采用不同方式连接仪器,以提高采集效率。服务器与PC监控端通信可以通过TCP/IP或者GPRS的互联网方式,服务器将采集数据发送给PC端并接受PC端发送的指令。
3 远程控制的实现
在完成数据采集系统的开发后,利用.net框架开发网络通信模块和PC控制端数据处理模块实现远程控制。
3.1 建立通信
3.1.1 网络通信的实现
针对实现远程控制的问题,提出采用Socket通信方式。当服务器端采集到数据或者发生异常情况时,通过Socket将相应信息传给客户端,一个Socket对应于通信的一端。Socket(又称WinSock 或Windows Sockets)是Windows 基于 ISO 模型的网络连接规范,它是应用程序和网络之间的标准接口[9]。本文采用的是Socket流式套接字(Stream Socket),它是一种面向连接的Socket,针对面向连接的TCP服务应用。Socket的工作过程及利用Socket实现的通信连接如图4所示。
图4 Socket工作流程及客户端通信连接的实现
从图中可以看出,建立网络通信流程为:
1)首先启动服务器,服务器调用bind()将套接字与一个本地网络地址(IP 地址“114.213.247.73”和端口号“1035”)捆绑在一起,再调用listen()使套接字处于等待连接的状态,实时监控网络状态。
2)在客户端设置连接服务的地址“114.213.247.73”和端口号“1035”,点击“连接”后即向服务器请求连接。
3)服务器调用accept()来建立网络连接,服务器就可以将端口、波特率、通信协议这些设置参数发送给服务端与仪器连接的设备,建立完整通信。
4)连接一旦建立,客户端可通过客户端write()来向服务器发送各种指令,让仪器完成指定的测量任务,并通过read()来接收仪器返回的测量数据,从而实现远程控制。
3.1.2 蓝牙通信的实现
蓝牙通信主要应用在移动端设备上,如PDA和手机,且蓝牙功能的使用方法与手机通用蓝牙一致。在建立蓝牙连接时,通过Android自带的BluetoothAdapter来进行获取设备信息,连接设备:
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(device, port);通信建立后再建立线程收发信息即可完成数据的传输。
3.2 数据处理模块的实现
3.2.1 数据库的建立
开发本系统软件总体任务之一就是建立监测数据的数据库,并实现各种数据的添加、删除、查询功能[10]。本数据系统的功能划分如图5所示。
图5 数据系统功能划分示意图
本次建立的数据库分为数据库管理和数据库查询两个模块。在数据库管理模块中建立有用户和测量数据的管理,在数据查询模块中设计有点号查询和日期查询两种查询方式。
为了保证高质量、高效、便捷地完成测量任务,且测量成果满足国家测量规范,本系统数据库设计的测量数据库管理设计有盘左测量数据存储表dbo.LANGLE和盘右测量数据存储表dbo.RANGLE。LANGLE与RANGLE表结构完全一致,这里以表RANGLE结构为例,如表2所示。从表中可以看出,除了日期和时间的数据类型为指定的外,其他字段的数据类型统一为字符型,方便了数据的存储以及在数据处理时的转换。
表2 RANGLE表结构
3.2.2 模拟测量状态动画
考虑到测量机器人的作业效率,采用事件激发方式安排指令的发送次序和时机,即计算机在发送指令过程中考虑测量机器人的当前状态,根据仪器的不同状态发送相应指令,增强指令的可执行性。由此可见,仪器状态查询也是测量机器人不可或缺的功能,本软件是通过开发模拟测量状态动画来实现观测仪器状态的。
模拟测量状态的动画界面是利用C#双缓存技术开发的,如图6所示。通过“学习测量”将所有的监测点按实际的方位模拟显示在软件上。在多测回测角状态,软件会根据现场照准点的情况,模拟测量动画。并且在目标丢失后,在鼠标点击相应图标时,程序会计算出鼠标点击焦点图标的距离关系、判断选中的目标点号并触发测量事件重新照准该点。
图6 模拟测量
3.3 远程控制实验
在完成远程控制的开发后,为验证该系统的实用性和稳定性,对软件进行了实际应用。在实验室内,架设6个棱镜作为目标点,服务器端和远程PC监控端都通过实验室WIFI联网。先手动利用TS30全站仪对目标点进行3个测回观测,再利用软件远程控制直接进行数据采集,对两次观测结果进行对比,如表3所示。经对比发现,两次采集结果相当,满足精度要求,利用网络通信控制远程数据采集可用于实际测量工作中。
表3 观测数据对比
4 结 语
研究表明,在掌握GeoCom接口技术后,可根据具体监测方案,有针对性地进行自动化数据采集软件开发,设计合理的观测程序以及记录格式完成不同工程任务。Socket技术在远程控制中有着良好的优势,同时引入多线程,将有效地提高数据传输的实时性,并实现一点对多点的实时监控。此外,GeoCom接口技术结合各类通信技术有可观的开发前景,例如利用蓝牙可实现放样、控制测量等工程的电子记录功能。
[1] 梅文胜,杨红.测量机器人开发与应用[M].武汉:武汉大学出版社,2011
[2] 陈秀忠,钱林. 地理数据通信接口技术在自动监测系统中的应用[J].测绘通报,2010(1):42-44
[3] 邱法聚,丁高耀,沈峥. 基于GeoCOM接口技术的智能测量系统设计开发[J].测绘技术装备, 2013(1):50-53
[4] 贵慧宏,张锦,陈永剑. 基于GTS901A的测量机器人变形监测自动化软件的开发[J].测绘科学,2010,35(4):166-168
[5] 李青岳,陈永奇.工程测量学[M].北京:测绘出版社,2008
[6] 崔有祯,李亚静.徕卡TM30测量机器人三维测量在基坑边坡监测中的应用[J].测绘通报,2013(3):75-77
[7] 卫建东,包欢,徐忠阳,等.基于多台测量机器人的监测网络系统[ J].测绘学院学报,2005, 22(2):154-156
[8] 潘国荣,李伟.多台测量机器人在地铁隧道自动化监测中的开发与应用[J].山东科技大学学报(自然科学版),2015,34(2):79-85
[9] 张允刚,刘常春,刘伟,等. 基于Socket和多线程的远程监控系统[J].控制工程, 2006, 13(2):175-177
[10] 梅文胜, 张正禄.测量机器人控制网观测与数据处理自动化研究[J].测绘信息与工程, 2003, 28(5):37-38
TP311;P258
B
1672-4623(2017)10-0040-04
10.3969/j.issn.1672-4623.2017.10.012
2016-08-04。
项目来源:安徽省国土资源科技项目(2014-k-13);皖江城市带长江河势变化与洲滩综合利用研究资助项目(201401063-02)。
邓清军,硕士研究生,注册测绘师,主要从事精密工程测量应用研究及电力工程勘测设计工作。