HMR3000应用介绍
经验交流
Technical Communications
信。HMR3000数字罗盘上自带标准的D型9针串口插头,可以利用该插头通过MAX232芯片,连接到单片机的串口。这里需注意的是,在使用串口连接单片机时,HMR3000 的9针串口的2、3管脚经常会出现连接错误。这主要是因为HMR3000的输出数据在连接到D型插头时,为了方便和PC机的连接已经调换了2、3脚的顺序,因此只要将HMR3000的2、3脚按顺序连接到对应管脚就可以了。考虑到采用电源的不同,HMR3000还有两种不同的连接方式,如果是使用5V稳压电源的,将它和HMR3000的9针串口中的8脚连接,如果是使用6-15V未经稳压电源的,将它和HMR3000的9针串口中的9脚连接[2]。其具体连接电路如图2所示。
3 通讯协议及指令
3.1 HMR3000数字罗盘的通讯协议
HMR3000数字罗盘的串行通信是根据NMEA0183标准制定的简单的、异步的ASCII协议,可以在单片机系统中使用RS-232或者是RS-485接口电路。ASCII的传输和接收使用1位起始位、8位数据位、1位停止位,共10位码。数据传输率可选择1200、2400、4800、9600、19200、38400波特率。
3.2 HMR3000数字罗盘的指令
HMR3000数字罗盘有输入、输出及控制3类指令。对于HMR3000的输入有两类形式:一是对于句子的请求,二是设定一个组态参数。对于所有有效的输入,HMR3000都送出一个响应。
HMR3000数字罗盘的输出有6种可供选择的NMEA0183信息标准。3种标准的数据格式(HDG、HDT、XDR)和3种专用的数据格式(HPR、RCD、CCD)。现以HPR语句为例,它的标准输出格式为:
¥PTNTHPR,x.x(航向),a,x.x(俯仰角),a,x.x(横滚角),a*hh
该数据输出格式将HMR3000数字罗盘的3个重要测量结果和相应的测量状态结合在一起,数据中的“a”表示测量状态,共有6种状态,分别是:L(低级报警)、M(低级警告)、N(正常)、O(高级警告)、P(高级报警)和C(调节模拟电路)。
在HMR3000数字罗盘的控制类指令中,启动、停止、询问和响应是其最为基本的控制指令[4][5]。
2.2 数据存储接口电路设计
一般测控系统都采用单片机来完成数据处理和控制算法,但在本系统中,如果采用普通的单处理器与常规的异步串行通信方案,在实际应用中,会出现一系列的问题。主要有以下几点:1、由于HMR300D输出的串行数据是ASCⅡ码, 并不能被单片机直接进行处理, 必须要将ASCⅠl码字符进行转换才能处理。整个转换过程会占用单片机大量的内部RAM,造成单片机资源紧张。2、串行通信速度较慢,会影响整个系统的实时响应速度。3、测控系统的控制算法和串行通信都要保证实时性和连续性,因此在程序设计中经常要使用中断,而单片机的串行通信一般也采用中断方式,且串行数据寄存器SBUF只有一个字节,在这种情况下,单片机就有可能无法及时响应和处理串行通信的中断,造成传输数据的丢失或错误,从而影响串行通信数据接收的可靠性[3]。
因此在本系统中采用主从单片机的双处理器设计方案,从单片机作为通信单片机和HMR3000数字罗盘通信,完成数据的接收及前期处理。主单片机完成数据后续处理和控制算法。单片机之间用双端口RAM实现数据共享。由于数据总是由从单片机写入RAM,又从RAM读入主单片机,因此在双端口RAM的设计中不需考虑同时读或同时写的非法状态,可以简化相关的软硬件设计。其中通信单片机的具体连接电路如图3所示。
4 系统软件设计
为了增强控制的灵活性,且使开发的程序具有较好的可移植性,决定采用C51进行开发。软件设计主要分为2大块,其中主单片机主要完成数据后续处理及控制算法。通信单片机主要完成串行数据的接收、数据转换及向双端口RAM写入数据。其中串行数据的接收是通信单片机软件设计的关键。本文给出了数据接收
图3 通信单片机连接电路图
T(下转第90页)