数字罗盘HMR3500基于Wince系统的应用与编程
2013-10-13孙雷梅志千李向国
孙雷,梅志千,李向国,朱 静
(1.河海大学机电工程学院,江苏常州 213022;2.枣庄市水利局胜利渠管理处,山东 枣庄 277317)
0 引言
HMR3500数字罗盘是美国Honeywell公司新近生产的数字磁罗盘模块,它通过对地球磁场等信息的读取、计算,并能实时精确输出地载体的航向角、纵倾角和横倾角三个方向上的姿态数据等参数,广泛应用于航海、航天、测量系统等领域。与Honeywell公司前一代数字电子罗盘HMR3000相比,具有更大的测量范围,且接收数据的格式包不相同。数字电子罗盘HMR3500与上位机通过RS-232进行串行通信,实现与上位机的信息交流与控制,从而在上位机中实现精确定位导航功能。在工业控制的机器中普遍装有嵌入式操作系统,本文结合带有微软Wince操作系统的设备平台对HMR3500的应用和开发介绍。
1 HMR3500硬件描述
HMR3500数字磁罗盘是一个很小的电路模块。它的主要构成部件如图1所示,主要被用于测量模块的三维定向。三个硅磁力计被用于测量地球的磁场。三个硅加速计被用于测量地心引力向量,同时在计算罗盘方位角时提供倾斜补偿。输入电源通过几个集成电路供电电源装置转化达到模块指定的电压要求。数据和信号处理是通过一个16位微控制器及相关固件进行的。固件将传感器信号转换成适当的离散型变量,并对加速计和磁力计的读数进行处理以完成倾斜补偿[1]。
图1 HMR3500数字磁罗盘模块示意图
2 HMR3500数据传输与通信协议
HMR3500与工业控制计算机的接口是用标准的RS-232 T型头接口,采用串口通信方式进行数据传输。串口通信运行的波特率为9 600 bit/s,1位开始位,8位数据位,1位停止位,无奇偶校验位,非同步进行。具体连接电路如图2所示。
图2 HMR3500数字磁罗盘通信接口示意图
HMR3500数据包格式,格式如下
标题 数据 文尾字节数5 18 1
标题字段,格式如下
______________信息包源 信息包ID 字节计数_____字节数3 1 1
标题字段的前三个字节是固定的,按照顺序排列,分别为0x0D,0x0A和0x7E,它们分别为回车、换行和代字号(~)的ASCII代码,信息包ID为返回的信息包类型,0x70罗盘定向指令,字节计数为18字节。罗盘定向数据包字节如表1所示。
表1 HMR3500输出数据格式
3 HMR3500与外部嵌入式Wince操作系统主机的通信与编程
基于Wince嵌入式操作系统的软件是由eVC开发平台开发,HMR3500通过RS-232与外部主机相连,发送与接收信息由简单的ASCII字符串组成的,满足通信协议数据包格式,HMR3500根据指定的格式发送数据包到主机,主机根据指令格式解析数据包,并完成数据处理,最终得到HMR3500返回的当前状态各项参数[2]。
串口编程的方法有使用 MSComm控件编程、使用WinAPI串口编程等,在eVC开发环境下不存在MSComm控件,因此可以采用WinAPI串口编程方式。使用WinAPI进行串口通信程序设计,具有很强的灵活性,但编程复杂,编程人员需要多了解相关的函数。与HMR3500的通信,只需要在主机方编写接收程序即可。针对HMR3500的应用编写串口程序的步骤可分为以下几步:创建串口、配置串口、读串口并数据处理、关闭串口[3]。
1)打开串口
如图3所示,经过上述读串口程序,将读取的串口数据放到了char型字符组str中,从字符串str的起始位置查找包头字符串,如果查找到包头字符串,取出包头字符串后18位字符存放到新的char型变量string中,否则返回重新读取串口操作。在变量string中,分别针对HMR3500发送数据包的格式进行解包,取出HMR3500对应的数据字符位,并进行int型强制转换,将HMR3500要输出的各参数高低位运算求和,输出电子罗盘 HMR3500各项参数[4]。
4)关闭串口
图3 HMR3500读串口数据处理流程图
4 结论
由于HMR3500与主机通讯采用标准的RS-232串口通信,接口较为简单,采用高级语言能够使得接收的数据控制处理比较灵活,且可移植性强。在工业控制计算机中,普遍采用Wince操作系统,适合eVC编译环境下开发,且与VC环境开发几乎相近,编程简单、易懂。此程序能在eVC编译环境下编译通过,其精度高、响应速度快,并能很好地应用在已开发的项目中。
[1]HMR3500 TruePoint Digital Compass User's Guide.Honeyewll.2007.8.
[2]汪兵,李存斌,陈鹏,等.EVC高级编程及其应用开发[M].北京:中国水利水电出版社,2005.
[3]龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社,2004.
[4]文方,黄钱飞.HMR3000在机器人姿态自控系统上的应用[J].工业控制与应用,2010,29(6):27-28.
[5]张颖.基于高级语言的HMR3000模块接口编程[J].兵工自动化,2002,21(4):41-43.