基于OpenADR规范的智能船舶数据采集与传输系统

2017-09-03 10:00军周啸伟鲁
船舶 2017年4期
关键词:串口报文指令

吴 军周啸伟鲁 杨

(1.常熟瑞特智能船舶装备研究院有限公司 常熟215500;2.常熟瑞特电气股份有限公司 常熟215500)

基于OpenADR规范的智能船舶数据采集与传输系统

吴 军1周啸伟2鲁 杨2

(1.常熟瑞特智能船舶装备研究院有限公司 常熟215500;2.常熟瑞特电气股份有限公司 常熟215500)

为使智能船舶的底层数据采集和传输达到完整和规范,文章基于物联网技术,参考美国OpenADR通讯规范,以自动需求相应平台硬件和软件的开发设计思路和框架,设计和实现了一套针对智能船舶的数据采集和传输系统,从而为智能船舶上层的应用平台奠定良好的基础。

智能船舶;物联网;数据采集与传输;数据平台

引 言

近年来,物联网技术有了突飞猛进的发展,在飞机、汽车、电力等领域均获得广泛应用,但在船舶领域,尤其是在国内造船领域,智能船舶似乎遇到了瓶颈。这其中的一个核心问题就是数据采集和传输的规范化。

本文以物联网和自动需求相应(OpenADR)规范为开发思路和理念,通过具体的实施方案将美国自动需求相应规范[1]应用于现代智能船舶之中,对智能船舶的理念及实施作些有益的探索。

1 背 景

为了规范和引领国内的智能船舶建设,中国船级社(CCS)《智能船舶规范》[2]针对智能船舶作如下描述:智能船舶系指利用传感器、通信、物联网、互联网等技术手段,自动感知和获得船舶自身、海洋环境、物流、港口等方面的信息和数据,并基于计算机技术、自动控制技术和大数据处理和分析技术,在船舶航行、管理、维护保养、货物运输等方面实现智能化运行的船舶,以使船舶更加安全、更加环保、更加经济、更加可靠。

现代船舶的自动化设计包括无人机舱和一人桥楼等,仅局限于船舶或系统本身,其借助物联网和互联网的智能化水平较低。究其原因,是由于目前我国造船还没有实现标准化设计、采购和生产,船舶制造还停留在定制阶段;即使同一船东的同一系列船型,制造时的分段划分、设备和材料的采购、系统原理都不能做到完全相同。由于设备和系统的多样性和独立性,其数据接口水平不一,在实施数据统一采集、处理、显示和控制时非常困难。

基于以上原因,本文通过参考自动需求相应(OpenADR)规范实现采集终端与数据服务器的连接,期望能使底层数据采集和设备控制更加规范化。

2 智能船舶的数据需求分析

《智能船舶规范》针对常规的轴系柴油机推进的运输商船提出有关智能的六大基本符号,概括为:

i-ship(N) 智能航行/Navigation

i-ship(H) 智能船体/Hull

i-ship(M) 智能机舱/Machinery

i-ship(E) 智能能效/Energy

i-ship(C) 智能货控/Cargo

i-ship(I) 智能集成平台/Integration

以智能机舱为例,CCS要求的基本功能为:对机舱内的主推进发动机、辅助发电用发动机、轴系的运行状态进行监测;根据状态监测系统收集的数据,对机械设备的运行状态和健康状况进行分析和评估;根据分析与评估结果,提出纠正建议,为船舶操作提供决策建议;同时对主机等监测点也提出了具体要求。

对照发现,CCS要求的监测点大多数在现有AIS系统里均已包括,只有少量监测点需要增加(如内燃烧状态、温度和震动等)。我们认为,不能遗漏监测点的同时也应该避免数据重复采集,在设计和采购之初就应该全盘考虑,例如,要求AIS供应商开放数据串口、增加数据采集点;机舱智能平台的数据统一从AIS获得;然后按照统一的元数据框架标准上传数据服务器。

智能船舶的应用服务器至少应包括以下几个层面:

(1)数据及模型层

包括数据服务器采集到的数据和来自外部的数据,如水文气象数据、码头数据、航线数据等。此外,还应该包括让所有设备执行的指令库或者指令函数库,需要造船工程师、航运工程师、软件工程师、硬件工程师、设备供应商的通力合作。船舶需要采集的数据点,对于需要采集数据和执行下发指令的设备,设备供应商必须打开数据端口。此外,还需要完善预案库,即船舶航行时的各种姿态下设备运行的设定参数,该库需连接故障诊断系统,且能修改保存。

(2)逻辑层

包括算法、专家诊断系统以及视情维护系统,不仅需要对大量的数据进行计算和逻辑分析,而且也是一个积累的过程。不同的数据得出不同的结论,执行不同的预案,同时向显示层传递结果。

(3)显示层

人机互动的层面,可以查看和下载数据,形成各种报表,同时也应有权限管理。

从以上分析可以看出,由于设备的多样性和独立性,数据接口水平的参差不齐,使得按照统一的元数据框架标准采集和传输各类数据成为了整个系统成败的关键,这其中涉及到的问题包括:标准化、可靠性、安全性、需求响应等多个方面,OpenADR标准在这方面作了详细规范。

2002年,为解决加利福尼亚州的电力危机,劳伦斯·伯克利国家实验室(LBNL)的需求响应研究中心(DRRC)成立了OpenADR研究项目,尝试支持基于事件的自动需求响应机制和实时电价,优化电力供需双方关系,提升电网的经济性和可靠性。后来,OpenADR1.0规范被捐赠给标准组织(OASIS),在OASIS的Energy Interoperation 1.0规范基础上形成众多国家广泛参与的OpenADR2.0标准。

OpenADR是一个通信数据模型,定义了电力服务提供者和消费者之间信息交换的标准和规范。OpenADR基于已有标准的通信协议(例如HTTP、XMPP),采用XML方式传递需求响应、价格、可靠性等信息。

借鉴OpenADR的概念和标准,我们将其应用于智能船舶中,设计和实现一个数据采集和传输系统。

3 系统设计与实现

按照自动需求相应(OpenADR)规范,系统从结构上可分为采集终端、数据传输和数据服务器等三大块。本文并未深入涉及建于数据服务器平台之上的应用层,例如故障诊断和视情维护等。系统的整体框图见图1。其中每一个数据采集终端都有三种数据源接口,终端和服务器(包括数据库服务器及应用服务器)通过网络相连,信息传输则采用HTTP协议。

3.1 采集终端

采集终端的设计对于整个物联网系统来说至关重要,它直接连接传感器或采集器,把接收到的信号进行处理和存储,并且生成标准格式的报文,按照服务器的要求定时、加密传输到服务器;同时还能接受服务器指令,对设备进行一定的操作,例如大型设备的启、停以及通过串口对一些设备进行软控制等。由于现在船用设备,例如主机、副机、冷水机组等既有智能装备的信息接口标准不统一,如果大量的数据都直接交给服务器处理,会给服务器带来巨大的压力,信息的第三方应用集成与二次开发相对困难。因此,由采集终端分散处理,以标准的格式传递给服务器显得非常重要。

3.1.1 采集终端硬件

由于采集终端需要进行多线程编程,本文选用4核arm处理器,预装linux系统的电脑板,用可插拔SD卡作为存储器,主板带有IO口和串口,可实现脉高低电平、串口以及USB总线的输入和输出用于数据的采集和设备的控制。电脑板内置有线网卡,可扩展无线网卡以及gprs模块,可通过光纤、Wi-Fi以及gprs连接服务器。

3.1.2 采集终端软件

采集终端的编程语言可采用C、JAVA或Python等。由于Python语言的简洁性、易读性以及可扩展性,在国外用Python进行科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。因此,我们以Python在Linux操作系统下编程为例,对终端的开发作说明。

终端预装MySQL数据库,可滚动保存30天的数据。配置页面使用Python的FLASK开源框架,在有线网卡上虚拟一个静态IP网口,采集终端实际上就是一个BS构架的微型Web服务器,电脑可以直接通过浏览器对采集终端进行配置,如:网络连接、设备连接以及导入解析函数、ssl安全证书等的配置。将采集终端设计为WEB服务器,其目的是能够对采集终端进行初始设置,与路由器的配置页面类似,当电脑通过网线连接采集终端后,通过浏览器访问采集终端预置的IP地址或域名,便可访问终端服务器,如图1所示。登录后对终端将要连接的服务器IP地址或域名进行配置以及对所采集的数据源进行配置,图2是终端服务器的登陆页面。图3为登录后页面。

登录后可以对终端的网络、目标服务器、脉冲信号源、串口信号源等进行配置,相关信息存入终端内置的数据库,后台程序读取数据库的配置信息,按照所设置的信息运行程序,启动相应的线程,完成对数据源的采集和传输。

3.2 数据采集和设备控制

采集终端上共有3种数据源的数据接口,IO脉冲信号、IO串口输出信号以及USB Modelbus 485信号。

3.2.1 IO脉冲信号

脉冲信号的输入可通过终端后台程序计算出相应的数据,例如通过接入智能电表的脉冲信号能计算出电表的功率和电能,按此原理同样可以获得轴系转速等数据。脉冲信号的输出可以通过二进制的组合控制输出针脚的高低电平,例如通过2个针脚可以组合成:00、01、10、11共四种信号,每种信号可以映射不同的预案。

3.2.2 IO串口输出信号

采集终端通过IO串口输出,可以连接继电器,通过一组指令实现对设备的启、停,也可以连接带有串口数据接口的配电板,在接到服务器平台的指令后,自动向继电器或配电板下发指令,以达到控制的目的。

3.2.3 USB Modelbus 485信号

通过USB Modelbus 485总线,可以向所连接的若干个地址码发出不同指令,每个地址码可以连接采集器或者连接带有串口接受指令的设备,通过这种方式,可以对设备进行柔性控制,前提是设备供应商必须开放串口以及提供指令库或指令算法。为了降低干扰,所有报文均进行crc16校验或者根据设备商的标准算法进行校验。考虑到采集器或设备的品牌多样性,报文的格式也不相同,数据解析函数以及校验方法也不同,因此在终端可预置常用品牌型号的解析函数,遇到新的品牌型号也可以通过配置页面导入。这样可以实现灵活接入不同的设备,并且具有记忆功能,只要导入一次,下次同样的设备便可自动识别。

3.3 通讯安全和数据传输

数据的传输可以通过光缆、Wi-Fi或gprs为载体,分为连接层和应用层两个层面。连接层即TCP层,应用层即http层。

3.3.1 通讯安全

数据传输的安全性是非常重要的,目前比较流行的是http加SSL/TLS,即https。SSL/TLS是指非对称加密。同时还需要证书双向认证。具体实现过程如下:

(1)终端生成一个随机数 random-client,连同自己的证书信息、加密方式等传到服务器端(Say Hello)。

(2)服务器随后以权威机构颁发的CA 数字证书验证终端的证书;确认无误后,服务器端也生成一个新的随机数 random-server,连同服务器的证书和加密公钥,一起回馈给终端(I got it)。

(3)终端收到后,同样先以权威机构颁发的CA 数字证书验证服务器的证书;确认无误后,再次生成一个随机数,使用服务器的公钥加密后形成premaster secret发给服务器。

(4)服务器收到后使用自己的私钥解密premaster secret,这样,终端和服务器都有了3个随机数(random-client、random-server、premaster secret),此时安全通道已经建立,服务器和终端各自根据这3个随机数以及在以上交流中确定的算法算出相同的会话密码即 session key。以后的通讯双方均使用session key进行加密和解密。

3.3.2 数据传输

虽然上述加密过程有些复杂,但却可确保通讯安全。连接层加密通道建立后,在应用层上使用http协议进行数据传输,其最大优点是会话结束后便断开连接,从而节省TCP资源,但其也有一个最大缺点,就是及时性差。http连接在一般情况下,服务器是没有办法找到终端的,只能由终端去找服务器。在过去的项目中,我们设定终端每隔一段时间便主动请求一下服务器,即轮询poll。服务器收到轮询请求后如果没有新的指令要终端执行,则回复一个正常的回复报文response;如果有新的指令需要终端执行,则回复一个事件报文Distribute,终端收到后便会根据具体指令,通过串口或USB总线下发指令操控所连接的设备。

由此可见,如果服务器想要某个设备执行某个无法立刻做到的指令,只能等到终端下次轮询来了才能下发指令,这种方式对于同步要求不高的陆用场景适用,但智能船舶上会有很多需要设备立刻动作的场景,因此,http传输不一定适用,可以考虑用XMPP服务器。

3.4 数据服务器平台

对于物联网数据服务器来说,不但要求运行稳定,而且更重要的是要解决终端高并发请求的问题;因此,在之前的物联网项目中,我们选用Python一个强大的异步服务器框架TORNADO,同时配MongoDB数据库。为了更进一步加强异步效果,采用NGINX 反向代理TORNADO服务器群,等于同时部署多台TORNADO服务器,利用NGINX作负载均衡,我们在阿里云上进行了试验,效果非常不错。服务器群如图4所示。

Tornado服务器监听8003端口

用户可以通过浏览器登录服务器平台管理终端、设置终端的数据报告、下载数据以及对终端发送操作指令。服务器平台同时提供数据库接口,可以向其他应用服务器提供数据。

4 系统数据信息的完整性

数据信息的完整性即元数据的概念。如果采集的数据信息不完整,数据将变得毫无意义。例如,当你采集到一个温度的数值时,这一数据必须包含描述其一切属性(包括单位、时间、设备ID编号、设备名称、采集频率和周期等等)。

采集终端存储在MySQL数据表ven_info中的信息如图5所示。

当采集终端第一次连接服务器时,终端会自动读取以上信息,并生成注册请求(oadrCreatePartyRegistration)的XML报文,提交给服务器,请求注册,生成如图6所示报文。

服务器收到请求后,将其解析成字典(见图7)或者JSON格式,并存储在服务器的数据库内。

服务器在处理完以上注册请求后,会给终端一个相应(oadrCreatedPartyRegistration)报文,格式如图8所示。

在上述报文中,请求ID(pyld:requested)节点的值为“4027410604”,与终端请求报文中的同名节点的值相同,代表是同一次请求。同时在相应报文中增加了注册ID(ei:registrationID)节点,注册ID可以在以后的重新注册中使用,以及轮询要求(oadr:oadrRequestedOadrPollFreq),其子节点“xcal:duration”的值为“PT5M”,代表每五分钟轮询一次。

以上是OpenADR注册请求的2次交互,按照OpenADR规范的要求,采集终端(VEN)和数据服务器(VTN)至少要有8组不同的交互报文,简述如下:

(1)VEN上电后立即注册

①VEN发送oadrCreatePartyRegistration注册请求;

②VTN发送oadrCreatedPartyRegistration建立注册;

③VEN发送oadrRegisterReport注册报告;

④VTN发送oadrRegisteredReport,不请求任何报告。

(2)VEN注册后,按照服务端指定的轮询频率,开始发送oadrPoll轮询

(3)VTN向设备请求数据报告

①VEN发送oadrPoll轮询VTN;

②VTN发送oadrCreateReport;

③VEN发送oadrCreatedReport。

(4)VEN向VTN上传数据报告

①VEN发送oadrUpdateReport上传数据;

②VTN发送oadrUpdatedReport确认。

(5)VTN取消VEN的数据报告

①VEN发送oadrPoll轮询VTN;

②VTN发送oadrCancelReport取消报告请求;

③VEN发送oadrCanceledReport确认取消报告请求。

(6)VTN请求设备重新注册

①VEN发送oadrPoll轮询VTN;

②VTN发送oadrRequestReregistration;

③VEN发送oadrResponse;

④VEN发送oadrCreatePartyRegistration;

⑤VTN发oadrCreatedPartyRegistration。

(7)VTN取消VEN注册信息

①VEN发送oadrPoll轮询VTN;

②VTN发送oadrCancelPartyRegistration;

③VEN发oadrCanceledPartyRegistration

(8)VTN向VEN发送事件信息

①VEN发送oadrPoll轮询VTN;

②VTN发送oadrDistributeEvent;

③VEN发送oadrCreatedEvent;

④VTN发送oadrResponse。

以上每组报文,用户可根据自己所需要自行制定,力求做到数据信息完整。

在将来智能船舶的元数据中,首先需要制定统一的元数据框架标准,无论数据怎样变化,对于系统来说其框架都是相同的,变化的只是数值和属性。这对于船舶庞大而复杂的系统来说至关重要。

5 结 论

本文首先分析智能船舶的数据采集和传输所面临的问题与需求,然后,面对底层数据采集和传输的完整性和规范性要求,基于物联网技术,参考美国OpenADR通讯规范,以自动需求相应平台硬件和软件的开发设计思路和框架,设计和实现一套针对智能船舶的数据系统,包括数据采集终端、数据传输和数据服务器等三大内容,并论述系统数据的信息完整性问题,最终实现规范化的数据采集、传输和管理,为智能船舶的上层应用平台奠定良好的基础。

[1] OpenADR Alliance. OpenADR 2.0 Profile Specification B Profile[R]. 2013.

[2] 中国船级社.智能船舶规范[S]. 2015:1-39.

Data collection and transmission system of intelligent ship based on OpenADR specif i cation

WU Jun1ZHOU Xiao-wei2LU Yang2
(1. ChangshuRuite Institute of Intelligent Ship Equipment Co., Ltd., Changshu 215500, China; 2. Changshu Ruite Electric Co., Ltd., Changshu 215500, China)

In order to make the underlying data collection and transmission of the intelligent ship complete and regulatory, this paper designs and implements a data collection and transmission system based on the technology of the internet of things. It is developed through the concept and framework of the hardware and software for the automated demand response platform with reference to the American OpenADR Specif i cation. It could provide a good foundation for the application platform of the intelligent ship.

intelligent ship; Internet of Things; data collection and transmission; data platform

U665.261

A

1001-9855(2017)04-0032-07

10.19423 / j.cnki.31-1561 / u.2017.04.032

2017-05-11;

2017-06-30

吴 军(1967-),男,工程师。研究方向:造船工程、物联网工程。

周啸伟(1983-),男,工程师。研究方向:信息工程、计算机。

鲁 杨(1982-),男,工程师。研究方向:自动化系统集成。

猜你喜欢
串口报文指令
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
《单一形状固定循环指令G90车外圆仿真》教案设计
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
浅析反驳类报文要点
关于ARM+FPGA组建PLC高速指令控制器的研究
基于Qt和OpenDDS的船舶电力模拟训练系统指令处理方法
MCS—51单片机中的多串口通讯技术的应用
1588v2中的PTP报文格式及应用