谈谈工业App (1)

    近一段时间在媒体,网络,论坛和地方政府的各种文件中经常看见“工业App”的字眼,也看到一些名不见经传的三线城市,区县在推广工业App,千企,万企上云,实行各种政府补贴政策这些匪夷所思的新闻。本人虽然自喻为资深软件工程师,还是感觉孤陋寡闻,看不明白所谓“工业App”到是什么?使用英文 “Industry Apps” 谷歌一番,好像也搜不出什么像样的文章。估计“工业App”不是舶来品,而是中国专家们的自主创新出来的新词。我并不想与专家们打口水战,而是谈谈自己对工业应用软件的理解。

工业应用软件的特点

     所谓工业App可能来自于手机App的概念,我并没有找到权威的工业App 描述,还是来琢磨一下什么是“工业应用软件”?这个问题吧。我在Qt 公司的《The Perfect Framework for Industrial Applications》一文中读到一个对“Industry Application”比较贴切的描述。

  1. 用于工业设备的安装,配置,运行,维护的软件
  2. 在嵌入式系统,桌面,穿戴设备,移动手机/平板,网关,和无头设备上部署。所谓无头设备(headless device)是指没有显示器和HMI 外设(例如鼠标,键盘)的设备。
  3. 放置在物联网的边缘设备和边缘管理设备中
  4. 具有非常高的可靠性和复原能力。包括符合 IEC61508, IEC62304, or ISO26262 等安全标准。

 从"工业App“ 概念看,工业App 应该具有某些类似手机App 那样的特点。我们可以在做一些补充:

  1. 能方便容易地安装,远程部署和维护。
  2. 在特定的工业领域中,相对通用的软件。行业用户可以方面地使用,配置和二次开发。

从上面两点补充来看,工业App 有别于传统的嵌入式软件(embedded software)。嵌入式软件和物理零部件结合的更加紧密。例如各种传感器,设备控制板,电机控制器,数字丝杆等设备中的控制软件。它们为专用的物理零部件而设计,在特定的硬件系统上运行,在制造过程中烧入程序和测试。而且一般不通过客户升级和维护。

 当然,工业App和嵌入式系统中的程序并没有清晰的界限,只是各自的侧重点不同而已。比如机床控制器和汽车操控面板上的中的应用软件,到底是嵌入式软件,还是嵌入式软件呢?我们毕竟不是什么专家,还是不要纠结概念为好。

工业应用软件的发展趋势

App化

也许受到手机App 的启发,工业应用程序趋于App化,它们功能单一,可以在不同的设备上方便地安装,部署和运行。根据工业应用的需要,可以在网关,控制器等边缘设备上安装各种工业App 小程序。比如 安装一个RFID 读入App,或者传感器数据分析,视频识别App程序。

  要实现这一功能,边缘设备的软件平台化和API标准化非常重要,传统的边缘设备平台也许是windows,或者是android 。随着Arm cortex-A 处理器在工业控制器中的广泛应用,linux OS 将成为通用的计算平台。

容器化

       使用类似docker 这样的容器技术是在linux OS 上部署App 的有效工具。工业App 将在docker 容器中运行。

      容器技术实现了沙箱式应用隔离。并且在一个系统上可以运行多种程序环境的应用,比如在一个边缘设备上,同时运行一个NodeJS 的数字看板程序,一个C++ 的传感器软件和一个python 数据分析程序。

跨平台化

   为了实现工业软件的开发效率,实现跨平台软件开发非常重要。所谓跨平台化,就是编写一个源代码,可以在windows,iOS,Android,linux等多种操作系统下运行。

  跨平台化技术包括:

  1.  java 技术
  2. JavaScript/NodeJS 技术
  3. Qt C++ 平台
  4. python

网络化

     工业设备数字化的重要特点就是可连接性,工业App具有强大的网络功能。重要的工业网络协议包括 NQTT,OPC UA,MTConnect ,websock,https 等等。

安全性和可靠性

   工业App 对安全和可靠性要求更高。

工业应用软件的开发平台

   开发工业App  的概念也许不错,非常理想化。不过要使这个概念落地,被工业界和软件开发者广泛接受,有许多的工作要做。世界上有许多的好事情可以去做,而细节是成败的关键。

硬件和软件平台的标准化

     现代软件都是必需在一个软硬件平台上运行的,如果缺乏一个具有号召力的软硬件平台,工业App 也就是传统的工业应用软件而已,构建不出工业App 的生态系统,成不了什么气候。有的公司和组织声称已经在航天,大飞机领域开发了上万个工业App,我不知道它们是在什么平台上开发的,有对其它企业有多少推广的价值?App 是系统平台上的App。Google 开发的Android OS 才成就了手机App。微信平台可以安装微信App。所以,建立一个具有号召力的工业App 平台至关重要。要成为这样的一个广泛接受的平台是不容易的事情,并不是说你是中科院,航天部研究院,阿里巴巴,或者华为公司,程序员就会买你的帐。通过地方政府大跃进式的推广也无济于事。代码不是吹的,是实实在在敲出来的。看看西门子,GE 公司的软件平台。功能非常齐全,上千个API 和软件模块。文档齐全,代码开源,并且不遗余力地推广。其中的投入的人力物力就可想而知了。

  按笔者而言,与其不遗余力地推广一个不成熟的平台,甚至不惜动用政府的行政力量推广某些云平台。不如脚踏实地建立一个基金会,制定规范,公开招标,联合开发一个开源的工业App 软硬件平台,并且向大众开源。利用纳税人支持开发的软件,理所当然地应该开源,让更多的企业分享成果,而不是成为利益团体牟利的工具。开源的另一个好处是让广大人们群众参与监督,群策群力,不要让少数人忽悠了。

      国家层面是这样,企业层面上也是如此。如果要开发工业App 生态系统,首先要建立基础平台的标准化工作。然后在该平台上定义各种软件模块和插件。构成完整的结构体系。其实,并不需要什么都自己闭门造车了。已经有许多的开源技术平台技术可供选择,我们需要做的是选择,完善和推广。

丰富的软件模块和API 库

     针对工业应用的需要,要开发丰富的软件模块和API 库。例如RFID 读写,二维码识别,OPC UA 协议,设备健康监控等等。没有丰富的软件库,一个粗糙简陋的平台,同样也得不到程序员的青睐。

针对不同的行业,将会需要更多的软件模块,比如过程控制算法,行业OPC UA 模型等。

十分小心地规划好模块和API接口非常重要,也是工作量巨大的。

具有良好的客户体验和文档

    越来越觉得写软件大部分时间是写界面和文档。客户体验的优劣决定了系统平台的成败。笔者为了开发物联网接入程序曾经阅读了国内知名通信公司写的文档。真是不敢恭维工程师文化氛围下写出来的用户文档,有时恐怕比源代码还要难念。要开发一个高质量的软件系统,文档的工作量不可小觑。

一个实验性工业App 运行平台

为了研究工业App 的实现细节,我们尝试搭建了一个实验性工业App 平台。

硬件平台

树莓Pi 3 或者华硕的Tinker Board

操作系统 ubuntu Linux/Mbed Linux OS

容器技术 docker

-软件开发平台和程序设计语言

   HMI 为主的软件:比如看板,SCADA 系统等应用 采样 HTML5/javas/NodeJS。

-控制和协议类应用程序:采样Qt QML/C++开发工具。Qt是一个跨平台的软件开发环境,能够开发灵活的嵌入式HMI 界面和纯C++应用程序。在汽车面板,机床控制器,医疗设备中,广泛使用Qt 开发HMI界面和控制软件。

主要网络协议:MQTT,OPC UA,HTTP,websock,未来将支持更多工业物联网协议。

云端平台: TelegrafInfluxDBChronograf, 和 Kapacitor

      最后,还是强调这句话“ 很多事都不错,细节是成败的关键”,目前,这一实验系统正在进行中,以期望研究实现真正意义上的工业App 的细节问题,有兴趣的可以一起交流。

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/88375805