分布式工业设备的软件升级解决方案
来源:互联网 发布:中本聪是谁 知乎 编辑:程序博客网 时间:2024/06/10 17:41
随着互联网技术的日趋成熟,工业领域也逐渐吸纳接收了互联网技术带来的便利。工业以太网总线成为了当前工业互联领域十分重要的总线技术。不同于以往的总线设备,工业以太网总线设备,可以集成多种工业以太网协议,新的设备也能十分方便的接入现有总线中,与其他设备互联互通。同时,工业以太网设备维护成本低廉,产线设备的更新可依赖现成的工业以太网。产线的升级改造就能够通过网络升级的方式完成,不需要移动设备,也不需要维护人员到达现场。
1、以太网设备的单机升级解决方案
工业以太网设备通过网络升级既是先天优势,又是让自动化厂商喜闻乐见。但这并不代表设备的开发人员没有什么可抱怨的。针对以太网设备的单机升级,我们需要考虑到升级过程的原子级操作。下图以TCBLAB开发的PLC远程监控系统为例,这套系统可以看做是简单的分布式网络。
图1 PLC远程监控系统应用
这是互联网+时代,工业以太网生产线的一种典型应用。部署在产线上的数据传输单元(DTU)与产线上的工业设备(PLC、传感器等等)进行通信,获取我们想得到的关键数据。然后DTU将这些数据通过网络传输给局域网或者广域网内的服务器,由服务器完成数据收集分析。
这套系统中,针对以太网设备DTU的升级可以看做是单机升级。因为它网络通信的对象只有服务器,DTU之间并不互相通信。整个升级的过程,需要替换原有应用程序文件夹中的多个文件,这个过程中,会有一个时间窗口导致原有程序运行的不正常。这在通信另一端的服务器感知到这台DTU的异常。为避免这个情况的产生,必须保证整个升级过程的原子性,有以下两种方法。
方法一:以太网设备内运行独立升级程序,从服务器获取到最新程序文件后。先结束现有运行程序,再进行程序的替换。这一过程相当于设备出现一段时间的宕机。个人认为这段时间的宕机,比在通信过程中出现异常要更好。当更新完成后,重新启动原来路迳下的应用程序,至此完成更新,设备重新上线。
方法二:方法一中所述的方法会产生较长时间的设备宕机,对于一些关键的分布式网络设备,如军事控制系统、卫星导航等,这段时间的宕机可能会带来比较严重的问题[1]。解决办法是尽量升级的原子级过程缩短,短到网络中其他的设备并不能感知其升级过程。同样,设备内运行独立的升级应用程序。负责完成对以下目录树应用的更新[2]。
图2 目录树应用
设备中运行两个应用程序,一个是web server_1.0.1.8当前版本为1.0.1.8,一个是远程监控程序remote_monitor_2.0.1.1当前版本为2.0.1.1。升级应用获取到版本最新的应用,分别为web_server_1.0.2.9和remote_monitor_2.0.4.2。经校验升级文件无误后,结束当前系统中运行的应用程序。由启动程序setup_script重新引导应用。启动程序会通过版本号比较引导最新的应用程序,即web_server_1.0.2.9和remote_monitor_2.0.4.2。如果新的应用程序运行正常,则删除版本较早的应用程序。这个从旧版本到新版本的替换过程,实质上只是启动程序最新版本链接,这个过程可以认为是原子级别的,且时间很短。网络中的其他设备并不会感知该设备升级的具体过程。
2、分布式以太网设备的升级方案
以太网设备升级固然有一定的天然优势,但是当以太网设备真正的处于一个分布式的网络系统中。网络通信就不单单局限于设备和服务器,同时设备和设备之间也存在着通信的需求。所以分布式的网络设备在升级过程中不可避免的要面临一个难题,就是整个网络的设备升级并不是同步完成的。刚刚升级完成的设备还要面临同时与未完成升级的设备和已完成升级的设备进行通信的要求。这就要求升级服务并不是简单粗暴的更替应用程序,而是要考虑到在一段时间内兼容通信的前后版本。
解决这个问题也有很多的方法。
方法一:应用程序的设计需要考虑到对通信协议和应用功能,做到向下兼容。但这样做的缺点就是,应用程序会变得较为复杂。有些功能是在整个网络完成升级后,就会废除的功能,仍然会存在于应用程序中,这就造成了最新应用程序的冗余性增大。
方法二:应用程序的更新依赖于升级服务完成,而针对多版本通信同时存在的问题,则以这层升级服务作为代理完成[2]。我们在这里仅仅对这一思想的进行笼统的设计。为大家在自己设计程序的时候,提供一定的思路。设计架构如下图所示。
图3 升级以及代理服务
升级服务,负责将下载最新的应用程序。下载完成后,使两个版本甚至跨版本的应用程序同时运行于系统之中。升级服务提供一个APP代理,负责将上层节点传下来的不同版本的协议信息,再次传递给不同版本的应用程序进行出来。
关于不同系统的升级方案,咱们就先讨论到这里,希望能够给大家带来新的解决思路。感谢TCBLAB提供的PLC远程监控系统作为方案讲解,同时也感谢参考文献的作者提供的思路想法。
作者:耿晓博 天津通广集团数字实验室软件工程师
参考文献:
[1] 黄礼骏,分布式系统的升级和数据迁移问题研究,学位论文,北京大学,2015:12-13.
[2] 彭刚,分布式实时系统远程操作和在线升级的安全机制,学位论文,电子科技大学,2006:26-27.- 分布式工业设备的软件升级解决方案
- 我们的软件工业
- 印度的软件工业
- 软件工业的JIT宣言
- 中国软件工业的冤枉路
- 软件工业时代的到来
- 工业软件的标准模块
- 工业超纯水机:工业纯水设备的工艺特点介绍
- 软件自动升级解决方案(一)
- 升级360后导致T3软件无法使用的解决方案
- 工业软件
- 工业4.0 解决方案的架构设计
- 印度的软件工业(建议程序员必读)
- 印度的软件工业(建议程序员必读)
- 印度的软件工业(建议程序员必读)
- 印度的软件工业--建议程序员必读
- 软件升级---同类型设备如何管理
- 分布式session的解决方案
- Android ViewPager 无限循环左右滑动(可自动) 实现
- 基数排序
- ExecutorService and Future
- Java数组的应用2:数组的最大,最小,求和,平均值,倒置
- Linux下git的安装及简单使用
- 分布式工业设备的软件升级解决方案
- 华为机试2
- swift3.0把#ffffff或者ffffff格式转为UIColor的方法
- 13 个最好的免费服务器和网络监控工具
- 模仿网易云音乐移动端播放器
- 剑指offer-数组中重复的数字
- YUM常用命令详解
- 构建高效的团队协作工具(三) Confluence安装配置
- x265代码阅读(二):slicetype.cpp