文章信息
- 周浩, 段发阶, 邵毅, 周文清. 2019.
- ZHOU Hao, DUAN Fa-jie, SHAO Yi, ZHOU Wen-qing. 2019.
- 基于串行通信的传感器自动识别与通用型浮标数据采集系统设计
- Design of automatic sensor identification and universal buoy data acquisition system based on serial communication
- 海洋科学, 43(11): 68-75
- Marine Sciences, 43(11): 68-75.
- http://dx.doi.org/10.11759/hykx20190605001
-
文章历史
- 收稿日期:2019-06-05
- 修回日期:2019-08-21
2. 国家海洋技术中心, 天津 300112
2. National Ocean Technology Center, Tianjin 300112, China
海洋资料浮标是随着海洋科技的发展和需求而迅速发展的自动化监测平台, 其数据采集控制系统是整个浮标系统的“大脑”[1]。国际上, 典型的浮标数据采集系统有美国CAMPBELL公司的CR系列系统、伍兹霍尔研究所8080系列系统、德国Contros System & Solutions Gmbh公司的SmartDI UW- Logger系统、加拿大Axys公司的Watchman500系统等[2], 此类系统虽然功能完善、扩展性强, 但不是专门为浮标而设计的, 需要进行一系列的更改、设置等二次开发。在国内, 随着国家海洋战略的推进和全球海洋观测系统(GOOS)的建立, 浮标在海洋环境监测和科学研究方面得到了极大的运用和推广[3]。现阶段, 浮标的生产厂家较少, 专用于浮标的通用型数据采集系统也比较少, 但浮标种类较多, 如水质浮标、波浪浮标、冰浮标、光学浮标、海啸浮标、应急监测浮标等[4], 每一种浮标都有各自的程序设计和参数要求, 当需求新型浮标时, 需要花费时间进行设计, 这不仅影响了浮标的生产周期, 还影响了整个浮标系统的可扩展性与可替代性。此外, 由于科学技术的迅速发展, 海洋浮标传感器更新换代速度加快, 浮标监测需求应用面临多样化, 同时, 海洋环境气候的多变性与不可控性, 使得浮标在布放后面临着定期维护与不断更新采集参数要求的问题。
不同类型浮标虽然工作在不同的环境, 搭载不同的传感器, 但是其主要的工作流程都是相同的:采集-传输-存储, 完全可以使用一个数据采集控制系统, 通过搭建不同的外围设备, 实现不同功能。设计通用型海洋浮标数据采集系统, 从软件上实现海洋传感器的即插即用, 将大大较少浮标后期维护所用人力物力。本文以串行通信接口为载体提出了一种自动识别海洋浮标传感器的方法, 该方法通过建立传感器关键信息库的方式, 实现对传感器的准确识别, 通过添加IAP功能可以在线拓展其识别范围, 最后, 通过设计通用型浮标数据采集系统进行实验室原型试验验证了该方法的可行性及拓展性。
1 传感器自动识别设计 1.1 方法的提出目前, 海洋浮标传感器多种多样, 即使同类传感器由于生产厂家、测量参数、测量机制的不同导致传感器通信协议以及波特率的不同, 例如ADCP海流计至少有几十种不同的通信协议。在有些情况下, 同种类型的浮标可能会要求搭载同类传感器的不同型号, 如1 m浮标、3 m浮标、6 m浮标和10 m浮标对搭载传感器的要求会根据布放位置、布放环境等而不同; 不同类型的浮标会要求搭载不同类型的传感器, 如波浪浮标、应急水质浮标等会根据浮标主要检测的参数搭载不同类型传感器; 此外, 现阶段浮标数据采集系统在设计时, 是传感器指定端口连接, 一旦接错接口将得不到当前传感器参数。因此, 设计一种能够对海洋浮标传感器自动识别的方法, 不仅可以减少整个浮标系统的平均生产周期, 而且还可以增强系统的通用性能。
1.2 方法的实现根据工程经验, 海洋浮标传感器大多都具有基于串行通信的接口, 而且厂家会提供技术协议。由于数据按位顺序传输, 所以只有发送和接收匹配度足够高才能实现数据的正常传输[5]。因此, 对海洋浮标传感器的自动识别需要与MCU联合实现, 具体分为两个步骤:波特率的自动识别和传感器的自动识别。
1.2.1 波特率的自动识别波特率的自动识别, 是能够正确识别传感器型号并准确无误采集参数的首要目标。虽然目前有些MCU具有硬件自动波特率检测和软件自动波特率检测的方法, 但是其都是限定在预先选择的标志字符上, 如0x7F, 0x55等, 不适用于发送字符未知的待测传感器。因此, 波特率的自动识别方法采用公因数法[6], 方法原理如下:
波特率的计算公式为
经过以上计算, 结合海洋浮标传感器波特率为常用的整数值, 便可唯一确定该I/O口所接待测传感器的波特率值。
1.2.2 传感器的自动识别实现自动识别传感器需要搭建传感器关键信息库, 在信息库中, 将海洋浮标传感器分为两类:第一类传感器在上电之后便发送地址帧信息, 可直接根据接收缓存中的地址帧信息直接识别, 如北斗模块、美国AirMar公司的综合气象站等; 第二类传感器上电之后无地址帧信息或无明显地址帧信息, 这其中又可分为两类: A.连续发送数据信息的传感器, 此类传感器如国家海洋技术中心的XQY2-1数字气压计、PNI公司的TCM2.5电子罗盘传感器; B.上电之后需发送特定命令才有响应的传感器, 此类传感器如YSI公司的EXO水质监测传感器、Vaisala公司的多功能综合气象站等。
(1) 对于第一类传感器可以直接从地址信息中确定传感器的类型以及信号, 如AirMar公司的150WX, 上电之后会有如下信息:
AIRMAR (R) Serial Flash Bootloader
$PAMTT, Weather Station model 150WX
通过判断地址帧信息中的AIRMAR与传感器类型信息150WX便可确定待测传感器为AirMar公司的150WX一体式超声波气象传感器, 然后根据信息库中对该型号传感器数据格式的记录, 进行接下来的数据采集、处理。
(2) 对于A类传感器, 此类传感器会直接发送相关数据, 根据“存同求异”的方法来进行传感器识别。如气压传感器、电子罗盘传感器和GPS的单次数据分别为:
1101.24
$C301.2P4.4R-1.4T17.9*08
$GPRMC, 100355.00, A, 3900.14141, N, 11719.01293, E, 0.980, 350.56, 190314, ,, A*60
因为此类传感器的数据是周期发送的, 且发送的数据格式固定(GPS除外, 因为GPS会出现定位无效的情况), 因此可以按照数据格式、特殊数据包头、特殊数据包尾、数据中的特殊字符以及特殊字符前后的数据格式、数据长度的层次顺序建立多层次的区分机制。例如, GPS传感器可根据特殊数据包头: $GPRMC来进行识别, 电子罗盘传感器可根据$C、R和T的数据格式来进行识别。
(3) 对于B类传感器的识别, 需要建立如同USB握手协议的识别机制。从OSI七层模型出发, 将识别机制建立在数据传输层中。机制的建立是基于传感器收发机制的差异性以及响应的异步性, 如图 1所示设计握手协议示意图, 基本上可以归结为“三段式”传输:
首先, 系统发送第一个packet给待测传感器, packet中是在B类传感器的测试中, 达到最大差异响应的数据。
其次, 系统收到传感器响应后, 发送第二个packet, 此packet中的数据依然是测试数据。
最后, 经过处理前两次得到的响应, 可以初步确定传感器类型, 第三个packet的选择则是根据初步确定的传感器类型和型号, 发送不同的packet, 如初步确定为Vaisala公司的多功能综合气象站, 则依次发送0x30, 0x52, 0x30, 0x0d, 0x0a, 如收到正确响应则识别成功。
通过上述步骤便可初步完成对于现有海洋浮标传感器的自动识别, 目前信息库中存储的传感器信息包括水质、综合气象站、GPS、气压、海流等十多种传感器。以YSI的EXO水质传感器为待测传感器, 系统在加电之后没有接收到任何数据流信息, 因此将其归为B类传感器进行识别, 在识别过程中, 根据握手协议发送第一个packet(测试发送0x43 0x53 0x3F), 接收到回馈(0x43 0x53 0x3F)之后, 发送第二个packet(测试发送0x3F 0x0D 0x0A), 接收到回馈(?Command #), 根据上面两次回馈, 可初步确定为EXO水质传感器, 发送第三个packet(测试发送0x56 0x45 0x52 0x0D), 接收到回馈(VER 1.0.18 #), 确定固件版本号, 最后发送DATA进行参数数据接收。若要完整的提取所需数据, 还需要对不同的传感器传输数据格式进行分析, 设计不同传感器的接收函数, 通过设置不同标志位, 进入相应的数据接收函数, 达到同一接口可以正确接收不同传感器数据的目的。此外, 可通过完善传感器库的方式, 添加目标传感器的关键信息, 以识别更多的传感器类型。
1.3 方法后期拓展随着海洋浮标传感器的不断更新, 信息库中的传感器信息也需要不断丰富完善, 为了后期可以在线拓展自动识别的范围进行IAP(In Application Programming)设计。IAP功能实现的原理就是将MCU的内部Flash分为BOOT和APP两个区域[7], 每个区域的程序可以独立运行, 也可以通过程序控制进行相互跳转。
基于这样的原理, 设计如图 2所示IAP远程更新流程图。在IAP过程中, 系统进入Bootloader程序准备更新, 在接收到远程数据包后, 首先检验数据包的完整性, 采用MD5算法进行数据校验, MD5算法的计算比较快速容易而且数据的任何改动得到的MD5值都会不同, 并且其值长度是固定的, 可以准确、快速的计算出接收数据包的MD5值, 与发送MD5值进行比较, 检验数据的正确性[8]。当验证接收数据包无误后会返回“receive complete”, 并将数据包除去校验码依次写入Flash的APP区域, 依次循环, 直到所有数据包接收完成。接收完成之后, 检验是否为Flash程序, 若为Flash程序则指针偏移到APP区域首地址, 并将程序覆盖在SD卡程序备份区; 若不是Flash程序, 则发送回馈后导入SD卡程序备份区。程序无误后, 进入APP程序main函数运行。
远程升级可选择的数据包格式有两种方式, 一种程序解析之后生成的BIN文件, 另外一种是生成的HEX文件[9], 但是同种条件下BIN文件大小远小于HEX文件大小, 因此使用BIN文件进行程序升级。
2 通用型浮标数据采集系统设计 2.1 系统硬件设计本系统采用ST公司的基于Cortex M4内核的STM32F407芯片, 其具有硬件FPU单元以及DSP指令, 可以进行浮点运算和DSP处理, 具有1M的Flash[10], 满足浮标系统实现要求。通过外围搭载EEPROM芯片、SD卡模块、串口扩展等模块以实现系统其他扩展功能。系统结构设计如图 3所示, 采用CDMA和卫星双通信机制与岸边基站进行信息交换; 电源单元为整个系统供电, 保证系统正常工作; 采集单元负责传感器信号的采集, 数据的处理等工作[11]; 存储单元采用大容量Flash SD卡存储系统采集数据[12], 其体积小, 通过SDIO最高每秒可传输24M字节数据, 另外通过IIC实现和EEPROM双向通信, 用于存储系统设置的参数。
2.2 系统软件设计数据采集系统的主要任务是完成对海洋环境参数的采集、处理、存储、发送等功能[13], 并在此基础上添加交互功能、远程监测功能、系统状态自检功能、远程更新等功能扩展。其程序主要流程图如图 4所示。将系统整体设计为三种模式:常规模式、交互模式和更新模式。在STM32后备寄存器中建立模式选择标志位, 将RTC闹钟唤醒、卫星通信唤醒和CDMA通信唤醒配以不同的标志位使系统进入不同的模式, 三种模式皆可独立稳定运行。
在常规模式中, 程序主要完成接入传感器的识别、按照时序进行采集、数据传输和存储工作。当系统识别传感器类型之后, 其可根据库函数中传感器参数信息和采集需求进行信息规划, 确定最为优化的采集时序, 如平均风速和对应风向根据海滨观测规范中风的观测和记录方法需连续观测10 min; 海流计采集数据也需要几分钟的时间。通过移植RTOS可先开启风速传感器或海流计的采集任务, 将任务优先级设置为最高, 任务可以以类似于多进程的形式进行, 使得当系统在进行风速风向采集时, 同时可以进行海流计的采集, 这样不仅节省了整体的采样时间以及降低了功耗, 可以使浮标更稳定、持久的运行。常规模式下, 可以通过函数跳转进入另外两个模式。
在交互模式中, 主要进行配置参数的更改, 比如北斗接收机ID的更改、采集间隔的更改, 以及存储固定的采集时序类型等信息, 交互模式下, 可以通过远程命令跳转到另外两个模式。
在更新模式中, 完成对传感器库的远程更新, 包括数据包的接收、校验、导入和更新。根据浮标的工作环境, 系统使用CDMA模块接收远程数据, 通过串行接口传输到系统, 系统将接收到的数据存储到APP区域, 待全部接收完毕后进行数据更新, 指针跳转。升级模式完成后, 程序进入到APP程序后自动运行, 需要远程更新时通过远程更改标志位参数, 进入到更新模式。在更新过程中, 无法完成其他模式的跳转。
此外, 系统通过移植FAT32文件管理系统, 实现数据高速存储与文件化管理[14]; 移植FreeRTOS嵌入式操作系统提高CPU利用率, 通过建立任务, 配置任务优先级, 进行任务进程管理[15], 使系统即使在正常工作情况下也能迅速响应基站命令。系统在常规模式下通过自动识别传感器来实现系统的通用性, 在更新模式下通过更新升级来拓展系统的通用性。
3 测试与结果系统通过Keil_MDK5编写, 时钟为168 MHz, 通过串口扩展具有10个外接传感器预留端口。实验设备包括自制浮标数据采集控制系统, GPS、北斗模块、EXO水质传感器等仪器, 利用浮标数据采集控制系统主板的预留端口与常用海洋浮标传感器连接进行自动识别实验, 并结合CDMA服务器与客户端进行远程更新实验。
传感器自动识别实验借助Keil软件的Debug调试功能完成, 调试时有程序执行时间显示, 通过设计程序断点便可直观的观察到识别时间, 其精度可达到0.01 µs, 对于每个传感器测25组数据, 测试结果如图 5传感器识别实验结果所示。对于第一类传感器的识别, 存在因为当确认波特率之后, 地址信息可能已发送完, 此时由于监测不到地址信息, 系统自动将其归为第二类传感器的情况, 所以测试初期会出现偶尔时间较长的情况; 第二类中的A类传感器相比于第一类传感器, 其识别时间要长, 因为其数据是周期性发送, 因此测量过程中有些识别过程从第二周期数据开始; 第二类中的B类传感器的识别, 因为握手协议、启动时间和响应时间的差别, 其识别时间最长, 如EXO传感器上电之后需要等待几秒钟才能正常工作。基于以上情况, 在波特率确定后, 利用CMOS管采用断电再加电的方式, 可提高识别效率, 减少循环识别的次数, 缩短识别时间。
在软件中分别设置BOOT区域和APP区域的起始位置为0x08000000、0x08010000。将程序程序生成的BIN文件通过CDMA远程发送给数据采集系统, CDMA采用四信通信科技有限公司的CDMA客户端, 其接收缓存为512 K大小。根据程序大小进行多次试验有如表 1的实验结果。
当程序包数据增大时, 其程序更新成功率会减小, 这主要是因为数据量增加时, 其误码率和丢包率也会相应增加, 但是可以通过多分包、分小包的方式来降低误码率, 增加程序更新成功率, 通过数据包检验和数据包重发的方式可保证数据接收成功率提高到100%。经过系统多次试验, 当分包大小为60 K时, 发送成功率与整体发送时间会得到最优, 这对于一般浮标程序200 K大小左右的数据量来说, 仅需要十几秒钟便可实现程序更新。
4 结论本文提出了一种基于串行通信的传感器自动识别与通用型浮标数据采集系统, 在自动识别波特率的基础上通过研究不同海洋浮标传感器的传输特点, 进行区分分类, 设计了不同层次的识别机制。设计传感器关键信息库函数, 即插即用, 并优化采集时序, 今后可不断添加传感器关键信息, 适用于多种不同的环境。与目前浮标常用通用型数据采集系统CR系列系统相比, 系统设计完成后, 只要是库内传感器便即插即用, 更换传感器不需要再进行二次开发, 并且可以进行采集时序更新; CR系列系统集成的传感器库对国内传感器支持较少, 而且更新库较慢, 本系统兼容国内浮标常用传感器, 只要有厂家提供的技术协议便可快速实现远程更新, 较为方便; 系统内集成的子函数, 调用方便, 便于在线调试、检修。现阶段, 浮标的放置近海居多, 可以用CDMA更新实现, 由于更新是基于串口通信实现的, 所以对于不断推进的深远海浮标网建设和不断发展的宽带卫星通信技术, 深远海浮标的数据更新同样具有可行性, 在岸边便可进行一部分标体运行检查。但是考虑到通信价格的限制, 今后浮标数据采集系统远程更新会偏向于数据压缩的发展。
[1] |
李晴.多参数海洋浮标监测系统研究[D].上海: 上海海洋大学, 2017. Li Qing. Research of multi-parameter marine buoy monitoring system[D]. shanghai: Shanghai Ocean University, 2017. http://cdmd.cnki.com.cn/Article/CDMD-10264-1017854711.htm |
[2] |
Anthony Ethier, Jeannette Bedard. Development of a Real-Time Water Quality Buoy for the Fraser River Estuary[C]//IEEE. OCEANS 2007, Canada: Vancouver, BC, 2007: 1-6. https://ieeexplore.ieee.org/document/4449424/
|
[3] |
戴洪磊, 牟乃夏, 王春玉, 等. 我国海洋浮标发展现状及趋势[J]. 气象水文海洋仪器, 2014, 31(2): 118-121, 125. Dai Honglei, Mu Naixia, Wang Chunyu, et al. Development status and trend of ocean buoy in China[J]. Meteorological, Hydrological and Marine Instruments, 2014, 31(2): 118-121, 125. DOI:10.3969/j.issn.1006-009X.2014.02.032 |
[4] |
王波, 李民, 刘世萱, 等. 海洋资料浮标观测技术应用现状及发展趋势[J]. 仪器仪表学报, 2014, 35(11): 2401-2414. Wang Bo, Li Min, Liu Shixuan, et al. Current status and trend of ocean data buoy observation technology applications[J]. Journal of Instrumentation, 2014, 35(11): 2401-2414. |
[5] |
贾昊, 张烨, 崔忠政, 等. 异步串行通信协议的设计与实现[J]. 电子制作, 2018, 20: 10-11, 23. Jia Hao, Zhang Ye, Cui Zhongzheng, et al. Design and implementation of asynchronous serial communication protocol[J]. Practical Electronics, 2018, 20: 10-11, 23. |
[6] |
乔渠, 赵国豪, 王文记. 串行通信波特率的自动识别[J]. 单片机与嵌入式系统应用, 2007, 2: 33-35. Qiao Qu, Zhao Guohao, Wang Wenji. Automatic identification of serial baud rate[J]. Microcontrollers & Embedded Systems, 2007, 2: 33-35. |
[7] |
朱飞龙, 杨鸣. 基于IAP功能单片机的远程更新系统设计[J]. 机电工程, 2010, 27(9): 76-79. Zhu Feilong, Yang Ming. Design of remote update system based on the SCM with IAP function[J]. Journal of Mechanical & Electrical Engineering, 2010, 27(9): 76-79. DOI:10.3969/j.issn.1001-4551.2010.09.019 |
[8] |
孔祥佳.基于海洋平台监测的流数据管理研究[D].大连: 大连理工大学, 2015. Kong Xiangjia. Research of data stream management based on offshore platforms monitoring[D]. Dalian: Dalian University of Technology, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10141-1015357927.htm |
[9] |
罗正华, 唐帅. 基于Uboot的嵌入式系统远程更新设计[J]. 成都大学学报(自然科学版), 2018, 37(2): 173-175, 190. Luo Zhenghua, Tang Shuai. Embedded system remote update design based on Uboot[J]. Journal of Chengdu University (Natural Science Edition), 2018, 37(2): 173-175, 190. DOI:10.3969/j.issn.1004-5422.2018.02.014 |
[10] |
刘涛. 利用ARM嵌入式设计海洋气象数据采集存储模块[J]. 舰船科学技术, 2017, 6: 186-188. Liu Tao. Marine meteorological data collection and storage module using ARM embedded design[J]. Ship Science and Technology, 2017, 6: 186-188. |
[11] |
王军成. 海洋资料浮标原理与工程[M]. 北京: 海军出版社, 2013: 198-219. Wang Juncheng. Marine Data Buoy Principle and Engineering[M]. Beijing: Naval Publishing House, 2013: 198-219. |
[12] |
唐原广, 王平. SZF型波浪浮标上U盘存储器的设计与实现[J]. 海洋技术学报, 2014, 33(3): 1-5. Tang Yuanguang, Wang Ping. Design and Implementation of the U-disk Memorizer on SZF Wave Buoys[J]. Journal of Ocean Technology, 2014, 33(3): 1-5. |
[13] |
张喜验. FZF2-3型海洋资料浮标系统数据采集处理、控制及传输系统[J]. 海洋技术, 1998, 2: 31-35. Zhang Xiyan. The data acquisition process control and telemetry system of Model FZF2-3 marine data buoy system[J]. Journal of Ocean Technology, 1998, 2: 31-35. |
[14] |
周莹, 魏永星, 于金花, 等. ARM和FPGA在水声浮标数据采集存储中的应用[J]. 海洋测绘, 2015, 35(1): 79-82. Zhou Ying, Wei Yongxing, Yu Jinhua, et al. Application of ARM and FPGA buoy data acquisition and storage[J]. Hydrographic Surveying and Charting, 2015, 35(1): 79-82. DOI:10.3969/j.issn.1671-3044.2015.01.022 |
[15] |
孟德国.基于uC/OS-Ⅱ的大型海洋资料浮标监控软件设计与实现[D].青岛: 中国海洋大学, 2011. Meng Deguo. The design and development of monitoring software based on uC/OS-Ⅱ for ocean data buoys[D]. Qingdao: Ocean University of China, 2011. http://cdmd.cnki.com.cn/Article/CDMD-10423-1011229128.htm |