单功能块应用程序的研究(1)

      工业软件的功能块化

  工业自动化行业主张采用功能块(function block) 的方法构建软件,所谓功能块是完成单一功能的一段程序,它们具备清晰的接口(输入参数,输出参数和事件)。许多工业自动化标准中都包含了功能块的定义。例如IEC61131-3中的FBD和IEC61499 基于事件的功能块。在IT 领域,也有许多基于功能块的程序编排方法,例如Node-red 中的块和儿童编程工具Scratch。

     功能块是图形编程的基础,多个功能块能够通过图形的方式构成一个功能块图(FBD),或者称为功能块网络(FB Network)。功能块图能够实现更加复杂,强大和定制化的应用。

   基于功能块及其网络的技术是实现低代码程序设计方法之一。功能块网络能够通过编译器或者解释器转化为可执行程序,在各种控制器中运行。

单功能块应用程序的研究(1)_第1张图片

IEC61499 功能块架构 

       

       工作流程(workFlow)表示了生产线,机器和人的工作流程,它们能够使用功能块网络图来表示。一个企业或者组织的工作流程要比产线的控制复杂的多,它涵盖了IT/OT 的各个环节,例如ERP,MES,物流等等。如果要实现一个企业基于工作流的数字化系统。IT和OT 软件统一采纳一种功能块网络来构建,开发,运营的效率会得到大幅度地提升。

单功能块应用程序的研究(1)_第2张图片

 单一功能块应用(single Function  Block Application)

       在传统的OT 软件中,操作逻辑相对比较简单,一组功能块库基本能够涵盖大多数应用的需求,OT 工程师主要工作是使用标准功能块库来构建功能块图应用。OT 工程师自己编写功能块的场合比较少。功能块的功能相对比较单一。

  但是,在IT 软件中,构建一个涵盖大多数应用的功能块库是困难的,它涉及数据库,网络,表单,图形等等。与此同时,不同的应用也许要使用不同的程序设计语言来实现效率更高。比如C# java适合组态,NodeJS和Golang 适合Web。而Python 适合数据分析和人工智能。在IT行业主张容器/微服务,App 等方式来实现软件的模块化,复用,低代码化,功能单一原则和敏捷开发。

   那么IT 的App和微服务如何与OT行业的功能块融为一体。笔者提出单一功能块应用(Single FB Application) 的架构。所谓Single FB 应用是指包含一个功能块的应用。或者说,将应用程序封装成为一个“胖”功能块。

单一功能块程序的主要特征:

  • 可执行程序

      单一功能块应用可以在某些运行环境(被称为资源)下运行,例如Docker容器,Window,Linux或者嵌入式系统中直接运行,不需要OT观点下的运行时。

  • 数据和事件的输入输出通过多种网络协议实现

在OT观点下,功能块网络在运行时中运行,功能块之间的执行和信息传递是内部通过程序调用和队列来完成的,而单一功能块应用主要通过网络协议实现不同单一功能块之间事件和数据的传递。例如TCP/IP.OPCUA,MQTT,http,websocket 诸如此类。一个功能完备的功能块可以提供多种网络协议供选择。用户可以通过组态选择各种网络协议。

  • 多种程序设计语言实现

       单一功能块应用本质上是一个应用程序,当然能够使用不同的程序设计语言实现,而不像OT

行业那样,仅限于少数几种语言(例如ST语言)。这有利于基于功能块程序设计的普及。

单一功能块的结构

单功能块应用程序的研究(1)_第3张图片

 单一功能块在其它场合的应用

       单一·功能块不需要运行时就能够实现与其它功能块之间的协同操作,带来了巨大的灵活性,实现的程序也会更小,因此,单一功能块能够嵌入式到更小的设备上运行,例如专用控制器,仪表,传感器和执行部件。

单功能块应用程序的研究(1)_第4张图片

小结

      在符合OT行业功能块技术标准的基础上,将应用程序和小型嵌入式设备构成单一功能块应用(设备)能够将IT 应用程序与OT 融合,并且带来灵活性。在具体实现过程中,本人倾向IEC61499 事件功能块和OPCUA 信息模型。下一步,我们会实现一个演示系统。

   探索工业标准的灵活应用,让开放自动化技术现在就能够发挥作用,而不是等待遥远的未来。这是笔者最近关注的重点。

你可能感兴趣的:(OPCUA,功能块,IEC61499)