基于LwIP的海洋数据采集与传输系统
扫描二维码
随时随地手机看文章
摘 要: 针对海洋数据采集系统中串行数据传输能力不能满足海洋环境实时监测需求的现状,设计并实现了一种传输速率较高的以太网数据传输系统。系统以STM32F207VGT6处理器为核心,选择轻量级的LwIP作为以太网协议栈,将LwIP TCP/IP协议栈移植到STM32F207VGT6上,在应用层实现了一个网络、串口数据双向传输的数据传输系统。经测试,其传输速率优于同条件下RS232、RS485、CAN总线的传输速度,满足了设计要求。
关键词: 数据采集;LwIP;TCP/IP;数据传输
以海底观测节点为载体的海洋数据采集与传输系统,可以实现海平面以下水环境监测数据的实时、自动获取,它由各个传感器、CPU控制器、数据传输接口以及水上远程监测平台组成,可为海洋的探索和监测提供丰富的信息和资料。从我国开始研制海洋数据采集与监测系统至今,先后采用了多种数据传输方式[1],包括RS232、RS485、CAN总线等,各个传输方式各有利弊。RS232支持全双工通信,虽然是众多设备的直接连接渠道,但传输速率慢、抗干扰能力差、传输距离短;RS485只支持半双工通信,抗噪声干扰性好,传输距离较RS232远,但传输速率慢;CAN总线只支持半双工通信,通信距离远,抗干扰能力强,但传输速率仍有限制[2]。根据数据采集及传输系统对数据传输速率的要求,本文利用LwIP作为以太网协议栈,完成LwIP TCP/IP协议栈在STM32F207VGT6的移植;考虑到以太网支持全双工通信,同时利用以太网中的UDP传输方式实现各类传感器开启、采集间隔的控制以及对采集数据的实时监测,大幅度提高了系统远程的可控性及实时性。
1 系统工作原理
海洋数据采集与传输系统的整体结构如图1所示。其中数据采集板是本系统设计和实现的主要组成部分,本文主要阐述由传感器、数据采集板和用户远程检测终端组成的海洋数据采集与传输系统。它主要完成对传感器采集到的数据进行存储和传输以及对传感器进行实时监测,其目的是提高传感器水下工作时长、提供外部电源供电引脚、方便进行长期观测。
海洋数据采集与传输系统工作原理为:当水下传感器采集到数据时,即刻通过串口传递至数据采集板,采集板收到数据请求信号,立即执行SD卡数据存储操作,并通过以太网对数据进行接收,在UDP传输方式下通过网线将数据传递至用户远程计算机终端。数据接收完毕后,水下传感器继续执行数据的采集。与此同时,远程计算机终端通过网络发送控制命令,信号经网络传输至采集板CPU,CPU进行命令解析,针对不同的解析结果对传感器发送相应控制命令,实现对传感器开启、采集间隔设置的实时控制。
CTD传感器1~传感器5是一般的RS232接口传感器,而耦合传感器1、2、3属于感应耦合自容式传感器,若要连入电路,需要加入调制解调模块。两种传感器除了都能以RS232形式输出数据外,也可进行自容式存储。
2 系统硬件
目前,实现传感器串行数据与以太网数据交换的方式主要有3种:(1)使用专用的网络处理芯片;(2)使用高档嵌入式系统处理;(3)使用单片机和网络控制芯片。通过比较可以发现:第(1)种成本较高,且用户需要重新设计接口;第(2)种成本也较高,且如果仅用于通信接口,芯片资源则不能充分利用;相比较而言,通过从成本和使用场合考虑,第(3)种方法成本低,实现比较容易,并且可以根据实际需要进行功能扩展,只是软件编程工作量比较大。因此本文采用第三种方法来实现。
本系统中主控板微处理器选用ST公司基于Cortex-M3内核的32 bit微处理器STM32F207,其主频达120 MHz,专用于网络型嵌入式设备中。STM32F207具有丰富的串口资源、4路USART通道、2路UART通道。其中USART1和USART6最高波特率支持7.5 Mb/s,其他接口最高支持3.75 Mb/s,不仅支持调制解调模块、传感器的物理连接,而且对于数据的传输也提供了较高的传输速率,可以有效缩短传感器通过串口下载历史数据的时间。
以太网收发芯片选用美国National公司的10/100 M以太网物理层收发芯片DP83848C,该芯片遵循Ethernet II和IEEE802.3u标准,同时支持MII、RMII、SNI三种数据连接方式,内部还集成了数据收发及滤波功能。在全双工模式下,可以同时实现发送和接收,理论上最高速度能达到100 Mb/s,本文对其配置为100 Mb/s。采集板简要框图如图2所示。
如图2所示,微控制器与以太网收发芯片间采用了RMII模式[3]。这种方式在保持物理层器件现有特性的前提下减少了PHY的连接引脚,在保持IEEE802.3规范中所有特性的同时,降低了系统设计的成本。
3 系统软件设计
本系统软件设计包括两部分:水下采集板传感器数据采集、传输程序和远程用户界面实时监测程序。其中,采集板程序均在KEIL Uvision4下编译、测试,远程监测程序在Visual Studio 2008下编译、测试。
3.1 TCP/IP协议栈——LwIP 移植
LwIP是瑞士计算机科学院的Adam Dunkles等人开发的用于嵌入式系统的开放源码TCP/IP协议栈,其在保持TCP主要功能的基础上减少对RAM的占用,一般只需要几十字节的RAM和40 KB左右的ROM就可运行,使LwIP适合在中低端的嵌入式系统中应用。
嵌入式TCP/IP协议栈有两种普遍的实现方式:一种是将协议簇中的每个协议作为一个单独的进程,并指定进程之间的通信点。其优点在于结构清晰,代码易懂,占用系统资源较少,且方便调试;另一种方式是将协议栈驻留在操作系统内核中,应用程序通过系统调用与协议栈通信。该方式对系统RAM、ROM资源占用较高,且不能很好地支持MDK[4]环境下的断点调试。故本文选择第一种方式。
3.2 STM32F207采集板程序设计