APP下载

基于WebSocket的舱车平台综合运维系统设计

2022-10-26俞振东

新技术新工艺 2022年9期
关键词:服务端通信协议客户端

周 展,俞振东,张 红

(中国电子科技集团第二十八研究所,江苏 南京 210000)

近年来,随着舱车平台的不断发展壮大,舱车平台上集成的设备也越来越多,功能和性能要求也越来越高,但舱车平台内部空间有限,分散控制的方式越来越满足不了需求,因此,迫切需要一种通用、实时性强和容易操作的综合运维系统[1]。

综合运维系统对舱车平台上装设备进行监测和控制目前面临2个研究难题。

一方面,由于综合运维系统需要实时监测舱车平台上装设备的运行状态,以及实时进行远程控制,因此保证综合运维系统的实时性是研究重点和设计难点之一。

另一方面,区别于北美和欧洲已有的底层CAN总线通信协议和在CAN通信协议基础上发展的专有大型货车和公共机械车辆设计的J1939协议,舱车平台上装设备的通信接口缺乏统一的顶层规范标准,上装设备的接口种类繁多,涵盖RS232、RS485、RS422、CAN以及LAN在内的绝大部分通信接口类型[2]。另外,不同设备的供应厂商不同,其提供的通信协议也是千差万别。为了能够和所有的上装设备进行数据交互,综合运维系统必须能够适配所有被控设备的通信接口和协议,这就提高了综合运维系统的定制化程度。当不同舱车平台上装设备不同或者是同一舱车平台的上装设备出现更换或者升级时,综合运维系统需要进行重新适配,导致系统通用性难以得到保证。在被控设备可变的条件下,保证综合运维系统的通用性是研究重点和设计难点之一。

为了确保系统的实时性和通用性,本文采用B/S架构,通过引入WebSocket技术来保证系统的实时性,通过优化软件架构设计来保证系统的通用性,设计了一套舱车平台综合运维系统,实现舱车平台上装设备的实时监测和控制功能。采用B/S构架基于Web技术设计的综合运维系统,用户只需要使用通用的Web浏览器就可以完成复杂的设备监测和控制任务[3],实现客户端零维护,极大地方便了系统的实施[4]。在局域网建立的情况下,运维人员可以在任意位置使用浏览器访问综合运维系统,通过可视化界面直观地展示上装设备的实时状态,同时运维人员可以点击界面上的按钮对监控设备进行远程控制。

1 舱车平台综合运维系统设计

舱车平台综合运维系统包含了综合运维设备和综合运维系统软件2个部分,综合运维系统软件部署在综合运维设备中,综合运维设备放置在舱车平台的设备柜中,并接入舱车平台的局域网中。

1.1 系统架构设计规划

为了保证综合运维系统的通用性,将设备通信接口和通信数据分析等定制化工作放在综合运维软件中实现,尽可能地保留了综合运维设备的通用性。因为与变更综合运维设备的硬件以及底层驱动相比,在软件中进行接口和协议适配的投入更小,配置更灵活。因此综合运维系统采用3层架构,自下而上分别是设备层、接口层和应用层(见图1)。

图1 系统架构图

设备层是指舱车平台上装设备,包含串口设备、CAN设备、网络设备和其他设备。设备层中的各设备通过各自的通信接口和设备私有的通信协议与综合运维设备进行数据交付。

接口层是指综合运维设备,为了保证综合运维系统的通用性,综合运维设备只完成各个通信接口的数据交互和硬件管理,并转化成综合运维系统内部协议与综合运维系统软件进行数据交互。

应用层是指综合运维系统软件。当新的设备接入或者原有接入设备变更时,用户只需要在软件界面中配置设备的通信接口类型、接口地址以及通信协议,即可完成综合运维系统与新设备的适配,以此解决通用性问题。综合运维系统软件与综合运维设备之间采用WebSocket技术实现数据的实时交互,解决了综合运维系统的实时性问题。

1.2 WebSocket

WebSocket是一种协议,支持在单个TCP连接上进行全双工通信[5],在本质上WebSocket能够为通信的双方提供一个基于TCP连接的双向通道,即服务器端能够主动给客户端推送数据,同时客户端也能够主动向服务端发送请求数据,能够实现在服务端和客户端之间高效地互相发送数据。

传统通信方案中使用的HTTP协议是单向通信协议,只有客户端发起HTTP请求,服务端才会返回数据。另外HTTP连接步骤复杂且只提供短链接,因此在实际运行时会严重影响传输实时性[6]。与HTTP协议相比,WebSocket具有更轻量级的头信息,减少了大量交互信息和网络吞吐量,节省了带宽,提高了通信效率[7]。通过WebSocket技术,浏览器和服务器只需要做一个握手的动作,浏览器和服务器之间就形成了一条快速通道,两者之间就可以直接进行数据互相传输。

WebSocket是HTML5新增的协议,属于应用层第7层上的一个应用层协议,它必须依赖HTTP协议进行第1次握手[8],在JS中创建WebSocket后,会有一个HTTP请求发送至浏览器以发起请求。在取得服务器响应后,建立的连接会使用HTTP升级将HTTP协议转换为WebSocket协议,连接建立之后,客户端与服务端之间就可以直接进行数据互相传输,与HTTP无关[9-10]。WebSocket服务端与客户端的交互图如图2所示。

图2 WebSocket服务端与客户端的交互图

在舱车平台综合运维系统中需要对舱车平台上装设备的状态进行实时监测,同时需要对上装设备进行远程控制,这就要求客户端和服务端之间能够高效、实时地进行数据交互,而基于WebSocket的舱车平台综合运维系统正好解决了系统实时性的问题。一方面,综合运维系统服务端在采集到设备的状态信息时,会同步将状态信息发送给与之建立连接的客户端,运维人员可以实时掌握设备的状态信息;另一方面,运维人员在客户端对被控设备进行控制操作后,服务端能够及时收到控制指令并发送控制指令给相应的设备,实现设备控制功能。

舱车平台综合运维系统的结构图如图3所示。舱车平台综合运维系统主要采集舱车平台上环境类设备、机电类设备和电源类设备等设备数据。其中,环境类设备包括温湿度传感模块、空调和加热器等,机电类设备包括调平机构、升降台和倒伏机构等,电源类设备包括综合电源和配电箱等。这些设备的接口为RS232、RS485、CAN和网络。服务端的硬件接口处理模块负责与接入系统的被控设备建立连接,采集被控设备上报的设备状态信息和故障信息,同时发送被控设备的控制信息。消息处理模块负责处理接收到的设备状态信息和故障信息以及客户端发送的控制指令。WebSocket服务负责监听和推送实时数据,客户端与WebSocket服务建立连接之后,WebSocket服务将采集到的设备状态信息和故障信息实时发送给客户端,便于运维人员实时监测舱车平台中上装设备的状态,用户通过客户端将对设备的控制指令发送给WebSocket服务,由WebSocket服务将信息逐层发送给对应设备,实现设备的控制功能。

图3 系统结构图

1.3 综合运维系统软件设计

服务端监测设备数据的流程如图4所示,综合运维设备上电后,服务端程序启动初始化后,先进行硬件接口的初始化,根据人机界面上配置的设备信息打开对应的硬件接口,用于接收RS232设备、RS485设备、CAN设备和网络设备的数据,硬件接口打开成功即进入数据监听状态,一旦监听到有接入设备发送的状态数据,立即按照系统内部通信协议进行数据的处理并发送给已经与服务端建立连接的客户端,从而在客户端可以实时地查看接入设备的状态信息和故障信息。

图4 服务端监测设备数据的流程图

服务端控制设备的流程如图5所示,服务端接收到客户端发送的连接请求后,与客户端建立连接,连接建立成功后监听客户端消息,一旦收到客户端发送的设备控制指令,立即进行处理并通过硬件接口发送给对应的设备,实现设备的控制功能。

图5 服务端控制设备的流程图

客户端的流程如图6所示,用户通过浏览器访问服务端,提出连接服务端请求,连接建立后,实时接收服务端通过WebSocket服务发送的设备状态信息和故障信息,并在界面上实时更新显示;用户在界面上点击设备控制按钮,客户端通过WebSocket服务给服务端发送设备控制指令,以此实现设备的控制功能。

图6 客户端的流程图

2 结语

本文设计了一套基于WebSocket的舱车平台综合运维系统的解决方案,该方案在人机交互界面进行接入设备的配置工作,实现了接入设备的灵活配置,极大地提高了综合运维系统的通用性,并且能够将采集到的设备状态信息通过WebSocket实时推送至客户端界面,直观地将设备状态信息呈现给运维人员,便于运维人员及时掌握舱车平台上装设备的整体运行状态,同时运维人员也可以方便地通过点击客户端上的操作按钮远程控制设备,解决了系统的实时性。这一套系统已经在多个项目中进行了使用,极大地简化了开发工作量,也提高了系统的稳定性。

猜你喜欢

服务端通信协议客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
虚拟专用网络访问保护机制研究
奖状训练器飞行管理系统研究
新华社推出新版客户端 打造移动互联新闻旗舰
基于R8C的汽车OBD通用故障诊断仪设计
SIP协议系统模型的形式化研究