IEC61499功能块与Docker容器化相融合

IEC61499 功能块容器化

前言

云计算技术飞速的发展,容器,微服务,消息系统,边缘计算,物联网,各项技术层出不穷,热闹非凡。不过工业控制领域似乎依然停留在旧时代不可自拔。它们依然以PLC 为中心。对其它新技术视而不见。水火泼不进。就像人们所说,会议室里大老板不说话,小人物没法干。大型控制设备厂商看起来不紧不慢。它们绝不会让门外的野蛮人闯入它们的领地。

       创新者不能按照大佬的逻辑行事。只有走的更块,才有机会。作为小人物,我们一直在研究大问题-现代信息技术融入传统控制领域。

      进入2020年,我们开始借助于工业控制领域的技术标准IEC61499 实现IT技术与控制技术的融合。进一步提出了IEC61499 功能块容器化的想法。容器化使工业软件App 化,IEC61499 使App 功能块模型化。这是边缘计算设备中软件的一个完美的架构

docker 容器技术

  docker 容器技术使应用程序部署在软件容器中运行。并且在容器中为应用程序提供合适的运行环境。并且能够快速的部署,更新和管理。

 

微服务

现代软件技术更倾向将传统的功能强大的功能单一软件解构成为多个微服务(microserver)。每个微服务可以独立的研发,部署,更新。微服务之间采取消息队列实现信息交换,比如MQTT,RabbitMQ等。

 

   在边缘设备中采用docker微服务和消息系统,能够构建模块化,富有灵活性的边缘计算设备,它们适合物联网,大数据和AI’应用。

基于Docker/微服务的边缘计算架构

下面是我们采用这些技术构建的物联网边缘设备 modular 2Edge 的架构

 

modular2 Edge 的不足

  当我们开发modular2 Edge 的第一个可工作设备后发现,尽管大大简化了IOT 应用程序开发,部署和更新的难度。提高了软件研发的效率,但是除了在我们团队内部使用的话,仍然不能够像PLC 那样直接交付给控制工程师使用。看着工程师并不想要一台少代码(less code device),而是一台无代码的设备(Codeless device)。他们更擅长使用PLC 中的梯形图编程方式。但是传统PLC 却没有访问云端应用,AI,大数据应该的能力。所以说,大量创新的信息技术没有打通与传统控制系统的最后一公里。2020年,我们开始研究现代信息技术与传统控制技术的相互融合。

  我们的工作是从PLC 编程技术IEC61131-3开始的。显然在梯形图中扩展云端访问,数据库存取,AI 算法和数据分析是不现实的。PLC厂商是期望通过功能块和ST语言来实现的,不过这一过程在缓慢地进行。我们进一步的研究表明,IEC61131-3 的后继者IEC61499 似乎更加合适担当这样的角色。这就是我们为什么如此痴迷地研究IEC61499 标准。

   2020年开始,我们将基于docker/microserver 的modular2Edge 设备转变成为modular-61499 控制器。

 

  modular-61499 是一台基于IEC61499 标准的边缘技术设备,采用IEC61499 功能块编写应用程序。并且提供了容器化的支持微服务,提供了大量在地和云端的服务,包括时间序列数据库,web服务器,数据分析,AI算法等。

相互融合的方案

 我们的研究课题中采取的融合方式是将IEC61499 的运行时放置在Docker 容器中运行。并通过消息队列与设备中的支持微服务(support service)相互交换数据和调用微服务。

 

 

 

实现方法

        我们的目标是实现无代码编程,采用IEC61499 功能块来编写工业控制和物联网应用程序。使IEC61499 功能块网络和现代信息技术相融合。其中关键的是IEC61499 与支持微服务之间的消息方式。

IEC61499 应用与支持微服务的接口

IEC61499 应用通过服务接口功能块与边缘设备交换信息。理论上,IEC61499 中的网络功能块都能够用来作为与支持微服务交互,比如Publish/subscribe,client/server对。IEC61599 通信功能块采用了ASN.1 编解码方式。

不过ASN.1编码的不足是没有变量的名称。而在web服务,网络应用和数据库访问中,需要使用变量的名称。

变量名称由谁来定义?理论上可以在支持微服务中进一步定义, 我们的设计目标是无代码(codeless)编程。支持微服务将是与应用无关的通用服务程序,不希望进一步地修改和配置。控制工程师通过唯一的IEC61499开发工具4DIAC-IDE就能够完全定义应用程序。

为此,在modular-61499 中,通过IEC61499 功能块配置变量名称。下面是扩展的client 功能块

 

通过Param 定义输入输出数据变量的名称,例如:

Temperature,humidity

支持微服务获得了变量名称和ASN.1 中的数据类型后,可以在后续的处理中可以使用这些名称和类型

 

显然,param 也可以作为支持微服务的协议参数。例如 数据库插入。

  insert <tbname>,<tags> <values>

  insert motor_status,workshop1,current,voltage,speed,temperature

  其中:

 motor_status 是表单名称

 workshop1 是tag

 current,voltage,Speed,Temperature s 是value 名称

同样的,在web server 中,如果提供了变量的名称,类型和值,就可以自动地产生网页。

功能块微服务化,微服务功能块化

         docker 容器化能够是有效地实现异构化控制软件更好地运行和部署,将工业控制软件容器化实现了工业控制软件的APP化,而将IEC61499 作为App的编排和配置工具。使用IEC61499模型的优点在于,它可以提供控制逻辑的精细表示,同时还可以清晰描述系统中的接口和通信通道。IEC61499功能块与微服务匹配,然后将微服务实现为Docker容器(可以称为微容器)。或者说,容器中的APP 通过IEC61499 功能块加以封装。用户通过IEC61499 的功能块来编排和配置App.

       这是一个边缘计算设备的一个好的架构。值得进一步研究

 

 

猜你喜欢

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