APP下载

基于GPRS网络的船舶数据传输装置设计

2015-01-04陈永冰

船电技术 2015年11期
关键词:数据链串口指令

吴 杰,陈永冰,钟 斌,周 岗

(海军工程大学电气工程学院,武汉 430033)

0 引言

随着我国经济建设的飞速发展,海上运输业务量日益扩大,船舶航行安全评估、航行管理等工作中需要掌握实船航行数据。随着网络和通信技术快速发展,远距离无线数据传输经过多年的开发与实际运用,已逐步成熟,为在航船舶数据无线传输提供了方便。

无线数据的传输有多种方案,比如蓝牙、WiFi、ZigBee等,可以满足近距离通讯的需要。在航船舶与陆基数据服务器之间距离较远,GPRS信号在远离海岸时无法覆盖,就需要对无信号覆盖海域航行过程中的数据进行预先存储在 SD卡中,在船舶靠岸连接到GPRS网络后再对SD中的航行数据进行发送。本文旨在搭建在航船舶数据终端和陆基数据服务器中心的数据链路。

1 船舶数据采集传输装置整体方案设计

在船舶数据终端,采用 STM32控制器为控制核心,SIM900A作为数据收发模块。GPRS数据传输是基于TCP/IP协议之上的,数据包在船舶数据终端与GPRS服务器之间,这就意味着所有的数据报文都要基于TCP/IP包。STM32将已存储在SD卡上的数据按服务器要求通过串口发送给SIM900A模块,SIM900A将自动把数据打包成TCP/IP包,再经由GPRS网络和Internet在线的陆基服务器主机建立通信链路并发送出数据。数据传输的链路如图1所示。

2 船舶数据终端硬件设计

在硬件设计方面主要包括主控电路部分、通信模块电路和供电电路部分以及相关接口的设计。图2是硬件结构框图。

图1 数据传输链路原理图

图2 船舶数据终端硬件总体结构框图

2.1 STM32F107数据处理单元

本系统采用32位微控制器STM32F107作为控制核心。该处理器采用 ARM 公司最新的 V7体系架构的内核 Cortex-M3,它的速度比 ARM7快三分之一,功耗低四分之三,同时集成了分支预测,硬件除法,单周期乘法等功能,极大地提升了处理器的数据处理能力,同时采用最新的Thumb-2指令集,有效地降低了代码的密度,提升了程序的执行效率。STM32F107有丰富的片上资源和I/O接口,不但简化了系统硬件,且STM32不同型号产品在引脚和软件上具有完美的兼容性。其最高运行速度可达72 MHz,具有256k字节的Flash、64 k字节的RAM,大大提高了程序运行速度。丰富的I/O接口使其通信能力增加,包括3个SPI接口、5个USART串行接口、2个I2S口、2个I2C口。另外STM32F107拥有全速USB(OTG)接口、两路 CAN接口,以及以太网10/100MAC模块。

在船舶数据终端的硬件电路中以STM32F107为核心处理器,在其外围除了布设电源、晶振和复位等基本电路外,根据船舶的实际情况,又添加了下列相关电路。

1)串口电路。传感器等采集系统收集来的参数数据是经过串口总线与微处理器通信的,本系统采用了工业中广泛使用的RS485半双工异步通信总线,在串口电路设计中采用了隔离型RS485收发器,保证串口通讯的稳定和数据收发的准确。

2)加速度计电路。船舶在海上的航行状况和航行的海况有很大的关联,而船舶的纵横摇角度是反映船舶航行稳定性的重要数据,而这些数据不容易直接获取,这里设计通过一个加速度计电路来采集,为了采集加速度参数数据,本系统设计中使用了 ADXL345芯片。这是一款体积小,功耗低的可以测量x,y,z三个方向的加速度计,能够测量-16g~+16g范围的加速度。能够测量倾斜中的静态重力加速度和运动中的动态加速度,且测量精度能达到分级别。再根据倾角和加速度的关系换算出纵横摇角度的量。

3)存储电路。GPRS网络无法覆盖远离海岸的区域,为了解决无网络情况下的数据处理问题防止数据的丢失,这里采用在船舶数据终端加上一个数据存储电路,将航行参数数据保存记录在存储设备中。在船舶返港和靠海岸时,GPRS网络可以连通的情况下,再将之前存储的数据通过数据链路发送到陆基服务器中心。

图3 主控芯片及外围电路框图

2.2 通信模块设计

本设计采用GPRS作为远程数据传输网络,实现在航船舶航行数据的发送。选取SIMCOM公司的紧凑型产品 SIM900模块作为本课题的GPRS控制模块。它不仅是一款两频段GSM/GPRS无线模块,而且内部具有 TCP/IP协议,可以将数据通过IP协议的格式发送到网络。不仅缩短了软件开发周期,而且减少了软件设计的繁琐。

SIM900A采用工业标准接口,工作频率为GSM/GPRS850/900/1800/1900 MHz,可以低功耗实现语音、SMS、数据和传真信息的传输。SIM900A模块的原理图如下:

图4 SIM900A 模块电路

SIM900A模块与STM32是通过USART连接的,实现数据的交换和通信,硬件设计也较简单。SIM900A模块与STM32对应的连接端口是RXD与USART2_TXD,TXD与USART2_RXD,用以实现数据传输。其中SIM900上的引脚10 RXD口是用于接收STM32传来的数据,最终数据通过SIM900A外接的天线发送出去到服务器,引脚9 TXD口是用于向STM32发送数据。

图5 SIM900A与STM32控制器连接示意图

2.3 供电电路设计

在主电路中,主控芯片 STM32F107的工作电压为3.3 V,通信芯片SIM900 A的工作电压为4 V,为了使模块各个部分正常运行,必须对两者分别进行供电,设计的电源供电电路如下:

图6 电源电路

3 船舶数据发送链路的搭建

要实现在航船舶航行数据的发送,就要求在终端和服务器之间建立一个稳定可靠的数据通道。考虑到应用规模适中,而且数据的实时性要求不高,选择采用无固定公网IP主机配合最新版内网穿透的花生壳域名解析软件来搭建数据链路,将处于网络覆盖中的船舶上的航行数据按要求传输到陆基服务器上。

经过多方案测试,这种数据链路的搭建方式还可以用于无线设备上网的电脑服务器上,由于移动GPRS网络可看作成一个巨大的内网,而最新的花生壳内网版经过测试可以穿透这个移动无线网络,而后再与 Internet在线的服务器进行通信和数据的传输。

图7 花生壳域名服务软件

通过域名的方式来连接服务器,首先需要有一个固定域名,比较后选用花生壳这款软件。在花生壳网站上注册一个个人账号,会免费获得一个域名。在经过注册登陆后,获得了一个免费域名为:ctxc0805.xicp.net。图7是花生壳域名服务软件的界面,可以看到陆基数据服务器电脑的内网IP和一个固定的域名以及相应的端口号。下面我们将用这个域名来进行实验测试。

3.1 连接的建立与关闭

微处理器STM32对通信模块SIM900A的控制是通过AT指令来实现的。AT指令是通信模块识别控制指令,其基本格式为:AT+命令字符及相关设置参数,模块识读后返回相应的参数和信息。在本设计中各模块上电之后,STM32控制器通过USART2串口向SIM900A模块发送预先在程序中编入的AT指令,执行模块的初始化、波特率设置、数据格式设置和配置连接的相关参数。具体相关AT指令如下:

1)AT+CPIN?,该指令用于查询SIM卡的状态,主要是 PIN 码,如果该指令返回:+CPIN:READY,则表明 SIM卡状态正常,返回其他值,则有可能是无SIM卡或者 SIM卡不可用。

2)AT+CIPMUX=0,这条命令是用来设置SIM900A模块工作在单链接方式的,本文中船舶数据终端是和服务器一对一连接的,故设置单链接模式。

3)AT+CIPMODE=0,这条命令是用来选择TCP/IP应用模式的,如果参数为0,那么以非透明的方式来应用,如果参数为 1,那么以透明方式来应用。本文这里是以非透明的方式来用。

4)AT+IPR="9600",设置数据通信波特率为9600。

5)AT+CGCLASS="B",设置移动台类别为B,即模块支持包交换和电路交换模式,但不能同时支持。

6)AT+CGDCONT=1,"IP","CMNET",设置PDP上下文标志为 1,采用互联网协议(IP),接入点为"CMNET"。

7)AT+CLPORT="TCP","1201",即设置TCP连接的本地端口号为1201。

8)AT+CIPSTART="TCP","ctxc0805.xicp.net","57425"通过申请的固定域名连接服务器,连接成功后SIM900A返回"CONNECT OK"。此时船舶数据终端就已经成功连接到指定的域名为"ctxc0805.xicp.net"的 TCP服务器也就是陆基的数据服务器电脑,接入的端口号 57425。这些相关的AT指令操作都是软件运行完成的:

sim900a_send_cmd("AT+CIPCLOSE=1","CL OSE OK",100);//关闭连接。

sim900a_send_cmd("AT+CIPSHUT","SHUT OK",100);//关闭移动场景。

if(sim900a_send_cmd("AT+CGCLASS="B"","OK",1000))return1;//设置移动台类别为B。

if(sim900a_send_cmd("AT+CGDCONT=1,"I P","CMNET"","OK",1000))return 2;

if(sim900a_send_cmd("AT+CGATT=1","OK",500))return 3;//附着GPRS服务。

if(sim900a_send_cmd("AT+CIPCSGP=1,"C MNET"","OK",500))return 4;//设置GPRS连接模式。

为了更加直观描述 STM32对通信模块SIM900A的控制流程和链路的建立过程,这里使用串口助手来模拟数据链路的连接过程和数据的发送情况。完成上述相关指令的串口发送后,向TCP SERVER发送数据“Test DATA”,在串口调试工具发送如下指令:AT+CIPSEND返回符号">"在发送框内输入“Test DATA”手动发送,在手动发送“TEST DATA”后,以十六进制发送1A结束,返回SEND OK。此时已经把测试的数据“Test DATA”发送出去,可以在数据服务器上的网络调试助手上看到从通信模块 SIM900A发来的数据“Test DATA”。整个运行流程及测试结果如下图所示。

若要关闭已经连接的数据通道,发送指令AT+CIPCLOSE,用于关闭TCP/UDP连接。发送:AT+CIPCLOSE=1,即可快速关闭当前TCP/UDP连接。

3.2 断线重连的处理

船舶的航行环境多变无疑会对数据链路的状态带来影响,GPRS网络状态的差异会在数据链路上产生掉线和重连的情形。TCP链接的建立涉及到的 AT命令 AT+CIPSTART,该指令有两个返回值,分别是模块的IP地址和端口号。首先将AT+CIPSTART指令返回的当前模块的IP地址和端口号存放到一个Buf中,然后将这个Buf写入到串口 2中,如果之后能够读取到返回值“CONNECT OK”,就表示TCP链接已经建立好。

TCP链接的关闭涉及到的 AT命令是AT+CIPCLOSE,该指令没有返回值,可以直接将该指令写到串口 2中,如果检测到“CLOSE OK”,就表示TCP链接已经被关闭。STM32在检测Buf的内容可以判断TCP连接是否已经建立或者是服务器控制模块下线。

若意外掉线的情况下,就需要模块自动重连,重连需要用到DCD引脚,当TCP连接建立之后,DCD引脚电平就会由高电平变为低电平,所以DCD引脚的电平状态可以用于指示 TCP的连接状况。在程序中,设置时钟在上升沿检测 DCD引脚的状态值,当该引脚的电平值由高电平变为低电平时,就表示模块已经掉线,然后模块就开始重新登陆,重新搭建数据链路。

图8 数据链路发送数据测试

4 结束语

本设计结合ARM芯片STM32F107、通信模块SIM900A以及域名服务软件花生壳,设计了一个便于远航船舶数据采集的通信链路。考虑了硬件和相关网络服务的成本,解决了便携式电脑的在无线上网环境下无固定IP作为服务器的问题。实验结果表明,整个数据链路通信状况良好,能满足测试数据的发送。链路系统稳定可靠且功耗较低,运行成本低廉,对方便快捷采集在航船舶相关数据起了促进作用。

[1]金子瑜,张声传,房茂金,等.智能家居系统研究与实现[J].自动化与仪表,2011,26(9):47-50.

[2]陈学泉,关宇东.嵌入式 TCP/IP协议单片机技术在网络通信中的应用.电子技术应用,2002,(8):48-49.

[3]李涛,马殷元,杨东,等.基于STM32的GPRS远程监测终端设计[J].电子世界,2012,6:126-127.

[4]徐志,何明华,林武,等.一类基于软件载波的学习型遥控器的设计与实现[J].现代电子技术,2009,(2):36-38.

[5]李斌,高恭娴.学习型红外遥控器的设计[J].微型机与应用,2010,(1): 13-15.

[6]尹东至.基于 GSM/GPS的汽车防盗系统设计的[D].武汉:武汉理工大学,2007.

[7]刘晓杰.汽车 GPRS防盗报警系统的研究与设计[D].大连:大连理工大学,2010.

[8]王建伟.基于ARM与GPRS的智能控制系统的研究[J].仪表技术,2008,(7):45-47.

猜你喜欢

数据链串口指令
多平台通用数据链助力未来战场
浅谈AB PLC串口跟RFID传感器的通讯应用
高速公路工程项目实施中数据链应用探析
《单一形状固定循环指令G90车外圆仿真》教案设计
基于深度学习的无人机数据链信噪比估计算法
一种无人机数据链信道选择和功率控制方法
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
中断与跳转操作对指令串的影响