CN116909543A - 基于微服务架构的ot域工业组件建模及其代码生成方法 - Google Patents
基于微服务架构的ot域工业组件建模及其代码生成方法 Download PDFInfo
- Publication number
- CN116909543A CN116909543A CN202310901638.1A CN202310901638A CN116909543A CN 116909543 A CN116909543 A CN 116909543A CN 202310901638 A CN202310901638 A CN 202310901638A CN 116909543 A CN116909543 A CN 116909543A
- Authority
- CN
- China
- Prior art keywords
- micro
- domain
- service
- component
- modeling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000011161 development Methods 0.000 claims abstract description 15
- 230000006399 behavior Effects 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 15
- 230000009466 transformation Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 241001269238 Data Species 0.000 claims description 2
- 230000005012 migration Effects 0.000 claims description 2
- 238000013508 migration Methods 0.000 claims description 2
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于微服务架构的OT域工业组件建模及其代码生成方法,所述方法采用SpringCloudAlibaba作为微服务架构的具体实现方式,消息队列组件与服务注册与发现组件分别使用与之配套的RocketMQ与Nacos,OT域使用4diacIDE作为开发环境,包括如下步骤:步骤1:OT域工业软件组件建模;步骤2:微服务程序代码生成;步骤3:微服务程序运行。该方法结合IT域的微服务技术与OT域的IEC61499标准,提出了一套高效、灵活的OT域工业软件组件的通用模型,并利用代码生成器,打通了从OT域模型到IT域程序实现的路线,形成了高效、低学习成本的开发环境。
Description
技术领域
本发明属于软件、计算机与网络技术领域,涉及一种跨IT/OT域的工业软件组件综合建模方法,具体涉及一种基于微服务架构的OT域工业软件组件建模及其代码生成方法。
背景技术
工业及城市场景下的工业软件***具有规模庞大、设备与软件组件异构性高、跨平台、跨操作***、编程语言不同、信息流、业务流异常复杂等典型特征。如何高效快速、灵活地、低成本地进行大型工业软件的开发,是该领域迫切需要解决的关键问题。随着基于组件的软件工程理论与技术的发展,通过构建通用、统一和高效的应用组件以屏蔽工业软件***开发过程中平台、***、语言高度异构的问题,已成为复杂工业软件***开发的一个重要趋势。
工业软件的跨域集成技术是一个亟待解决的问题。IT域相比OT域,具有更高的灵活性与可扩展性,两者的融合可有效降低工业软件***高复杂性,解决由于工业软件***高异构性所带来的问题。然而,目前缺少覆盖软件与物联网嵌入式设备、智能制造设备等设备实体的通用、统一、高效的跨域工业软件通用服务组件模型,这成为了工业软件跨域集成技术发展的一大阻碍。其原因来自于多方面:大多数的工业场景依托于特定设备与***供应商所提供的解决方案,而不同供应商所提供的硬件与软件彼此异构,难以定义通用的组件模型;IT/OT域的软件开发方法彼此相对独立,在建模、应用程序编程接口(API)以及标准规范等方面差异很大,导致IT/OT域的开发人员在进行跨域开发时存在困难;工业软件通用服务组件模型的构建既要适配IT域的各类软件,也要适配OT域中的各类工业现场生产设备、物联网嵌入式设备等等,这其中包括设计组件结构、行为、组件互操作接口等多方面的兼容需求。因此,需要一种跨IT/OT域的工业软件组件综合建模方法,具体表现为基于微服务架构的OT域工业软件组件建模及其代码生成方法。
发明内容
为了解决工业自动化领域缺乏通用、统一、高效的工业软件通用服务组件模型的问题,以及跨IT/OT域的软件组件建模方法缺乏高效率应用开发手段的问题,本发明提供了一种基于微服务架构的OT域工业组件建模及其代码生成方法。该方法结合IT域的微服务技术与OT域的IEC 61499标准,提出了一套高效、灵活的OT域工业软件组件的通用模型,并利用代码生成器,打通了从OT域模型到IT域程序实现的路线,形成了高效、低学习成本的开发环境。
本发明的目的是通过以下技术方案实现的:
一种基于微服务架构的OT域工业组件建模及其代码生成方法,包括如下步骤:
步骤1:基于微服务的OT域工业软件组件建模
步骤1.1:基于IEC 61499标准对工业场景下的工业自动化应用进行建模,模型以基本功能块为单位,规定每一个基本功能块的外部行为和内部行为;
步骤1.2:将步骤1.1提出的模型进行面向微服务架构的功能与接口改造;
步骤1.3:通过步骤1.1、步骤1.2得到对应场景下的基于微服务的OT域工业软件组件,在OT域的开发环境下进行软件组件模型的运行与测试,验证其有效性;
步骤2:微服务程序代码生成
步骤2.1:获取步骤1中描述基本功能块组件的XML文件,利用代码生成器提取其中的有效信息;
步骤2.2:代码生成器按照微服务程序模板进行代码生成;
步骤2.3:根据代码生成器提供的注释,将代码生成器无法生成的部分代码进行补全;
步骤3:微服务程序运行
步骤3.1:将微服务程序项目进行封装;
步骤3.2:在运行环境中部署消息队列组件与服务注册与发现组件;
步骤3.3:在运行环境中部署各微服务程序。
相比于现有技术,本发明具有如下优点:
1、利用本发明可以为工业自动化领域提供通用、统一、高效的跨IT/OT域工业软件通用服务组件模型。
2、利用本发明中提到的方法可以帮助开发人员使用代码生成器进行高效的工业自动化软件应用开发且学习成本较低。
附图说明
图1为基于微服务架构的OT域工业组件建模及其代码生成方法流程图;
图2为微服务程序四类模块间调用关系的简化示意图;
图3为微服务程序主要模块UML图;
图4为微服务程序状态机模块UML图;
图5为微服务程序消息队列模块UML图;
图6为微服务程序辅助模块UML图;
图7为物料分拣场景四类设备对应的基本功能块模型;
图8为RocketMQ消息队列组件运行状态;
图9为Nacos服务注册与发现组件运行状态。
具体实施方式
下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。
本发明提供了一种基于微服务架构的OT域工业组件建模及其代码生成方法,所述方法采用Spring CloudAlibaba作为微服务架构的具体实现方式,消息队列组件与服务注册与发现组件分别使用与之配套的RocketMQ与Nacos,OT域使用4diac IDE作为开发环境。如图1所示,包括如下步骤:
步骤1:基于微服务的OT域工业软件组件建模
步骤1.1:基于IEC 61499标准对工业场景下的工业自动化应用进行建模,模型以基本功能块为单位,需规定每一个基本功能块的外部行为和内部行为。
本步骤中,基本功能块的模型定义规则包括外部行为与内部行为,其中:
外部行为包括事件输入接口、事件输出接口、数据输入接口、数据输出接口、“WITH结构”和接口的存在与扇入扇出规则:数据输入接口必须与某一事件输入接口间存在WITH接口,数据输出接口可单独存在;数据接口不允许扇入,但允许扇出;事件接口允许扇入与扇出;两类同输入输出侧的接口间使用“WITH结构”进行关联,一个事件接口可与一组数据接口进行关联,事件接口处信息到来时,数据接口处的值会被采样;
内部行为包括ECC(执行控制图)、算法与内部变量,ECC以有限状态机的形式定义逻辑,包括初始状态、一组普通状态、一组状态机迁移条件、一组状态触发的算法执行关系和一组算法与事件输出接口的绑定关系;算法负责具体的逻辑执行;内部变量负责协助ECC与算法的执行。
本步骤中,基本功能块的外部行为与内部行为按照如下格式进行实现:
Rulessasic={BVEX,BVIN}
BVEX={EventsIN,EventsOUT,DatasIN,DatasOUT,WITHsEvent&Datas,RulesEX}
BVIN={ECC,Algorithms,VarInternal}
步骤1.2:将步骤1.1提出的模型进行面向微服务架构的功能与接口改造。
本步骤中,改造要求如下所示:
RulesMicroService={Logic,Function,Interface}
改造要求包括三部分,分别为逻辑(Logic)、功能(Function)、接口(Interface)的要求,具体包括:1、基本功能块应具有完备的逻辑控制能力;2、基本功能块应具有尽可能完备的功能;3、基本功能块应将关键信息设置为数据输出接口。
步骤1.3:通过步骤1.1、步骤1.2得到对应场景下的基于微服务的OT域工业软件组件,在OT域的开发环境(4diac IDE)下进行软件组件模型的运行与测试,验证其有效性。
步骤2:微服务程序代码生成
步骤2.1:获取步骤1中描述基本功能块组件的XML文件,利用代码生成器提取其中的有效信息,具体步骤如下:
获取4diac IDE用于描述单个基本功能块组件的.fbt文件与描述组件应用的.sys文件,利用代码生成器提取其中的有效信息。对于无法直接提取必要信息,需要用户自行定义。
步骤2.2:代码生成器按照微服务程序模板进行代码生成。
本步骤中,微服务程序应具有四类模块,包括程序主体模块、状态机模块、消息队列模块和辅助模块,各模块间的交互关系如图2所示:
服务程序包含两类消息:业务消息与服务消息;
业务消息由消息队列组件进行管理,过程如下:消息首先从外部到来,被消费者类(Consumer)接受;消费者类判别该消息的归属,调用程序主体模块中的服务接口类(Service),服务接口类通过调用服务实现类,发出状态机消息,或是同数据库产生交互;状态机模块接收状态机消息,使内部状态机发生迁移,触发***并执行算法;算法执行完毕后,调用生产者模块生产对应的业务消息;
服务消息由微服务原生的Restful风格接口实现,经由HTTP请求,通过调用Controller类内的RestfulAPI进行信息交互,Controller类内的API会进一步调用Service接口类、Service实现类,并产生状态机消息或与数据库进行交互。
四类模块的具体构成如图3~6所示:
程序主体模块为微服务应用程序的核心部分,包括Controller-Service-Mapper三层架构和若干辅助信息收发的类;
状态机模块包括三个枚举变量类和三个状态机类,负责还原基本功能块有限状态机的逻辑;
消息收发模块包括消息的生产者与消费者,负责还原基本功能块的消息输入与输出逻辑;
辅助模块负责微服务应用程序中的数据同步等辅助功能。
步骤2.3:由于4diac IDE使用ST语言进行算法编辑,无法直接转换为SpringCloudAlibaba架构使用的Java语言,故根据代码生成器提供的注释(注释包括算法名称与算法代码),将代码生成器无法生成的算法代码进行相应的Java代码手动补全。
步骤3:微服务程序运行
步骤3.1:将微服务程序项目进行封装,封装为Jar包,使其可以灵活部署与运行。
步骤3.2:在运行环境中部署RocketMQ消息队列组件与Nacos服务注册与发现组件。
步骤3.3:在运行环境中部署各微服务程序。
实施例:
本实施例中,采用Spring CloudAlibaba作为微服务架构的具体实现方式,消息队列组件与服务注册与发现组件分别使用与之配套的RocketMQ与Nacos,OT域使用4diac IDE作为开发环境。选取如图7所示的物料分拣场景作为模型蓝本,该场景包含四类设备,分别为控制器、传送带、传感器与机械臂。
在OT域工业软件组件建模阶段,根据IEC 61499基本功能块的建模需求定义了四类设备对应的基本功能块模型,并根据面向微服务架构的功能与接口改造标准进行模型改造,改造结果如图7所示。
在微服务程序代码生成阶段,利用Python进行了代码生成器实现,将模型对应的.fbt文件与.sys文件作为输入放入生成器,输出得到对应微服务程序项目,并根据注释进行了相应Java代码的补全。
在微服务程序运行阶段,四类微服务项目程序被封装为Jar包。部署了RocketMQ消息队列组件与Nacos服务注册与发现组件后,以上Jar包程序可正常运行。RocketMQ消息队列组件与Nacos服务注册与发现组件的运行状态如图8、图9所示。
本发明提供了跨IT/OT域的工业软件组件建模方法,经测试,相应微服务程序的各项功能可正确执行,且单次的交互时延普遍位于6ms以下,能够满足非高实时工业自动化应用的需求。
Claims (7)
1.一种基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述方法包括如下步骤:
步骤1:基于微服务的OT域工业软件组件建模
步骤1.1:基于IEC 61499标准对工业场景下的工业自动化应用进行建模,模型以基本功能块为单位,规定每一个基本功能块的外部行为和内部行为;
步骤1.2:将步骤1.1提出的模型进行面向微服务架构的功能与接口改造;
步骤1.3:通过步骤1.1、步骤1.2得到对应场景下的基于微服务的OT域工业软件组件,在OT域的开发环境下进行软件组件模型的运行与测试,验证其有效性;
步骤2:微服务程序代码生成
步骤2.1:获取步骤1中描述基本功能块组件的XML文件,利用代码生成器提取其中的有效信息;
步骤2.2:代码生成器按照微服务程序模板进行代码生成;
步骤2.3:根据代码生成器提供的注释,将代码生成器无法生成的部分代码进行补全;
步骤3:微服务程序运行
步骤3.1:将微服务程序项目进行封装;
步骤3.2:在运行环境中部署消息队列组件与服务注册与发现组件;
步骤3.3:在运行环境中部署各微服务程序。
2.根据权利要求1所述的基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述基本功能块的模型定义规则包括外部行为与内部行为,其中:
外部行为包括事件输入接口、事件输出接口、数据输入接口、数据输出接口、“WITH结构”和接口的存在与扇入扇出规则:数据输入接口必须与某一事件输入接口间存在WITH接口,数据输出接口可单独存在;数据接口不允许扇入,但允许扇出;事件接口允许扇入与扇出;
内部行为包括ECC、算法与内部变量,ECC以有限状态机的形式定义逻辑,包括初始状态、一组普通状态、一组状态机迁移条件、一组状态触发的算法执行关系和一组算法与事件输出接口的绑定关系;算法负责具体的逻辑执行;内部变量负责协助ECC与算法的执行。
3.根据权利要求2所述的基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述基本功能块的外部行为与内部行为按照如下格式进行实现:
RulesBasic={BVEX,BVIN)
BVEX={EventsIN,EventsOUT,DatasIV,DatasOUT,WITHsEvent&Datas,RulesEX}
BVIN={ECC,Algorithms,,VarInternal}
4.根据权利要求1所述的基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述改造要求如下所示:
RulesMicroservice={Logic,Function,Interface}
改造要求包括三部分,分别为逻辑Logic、功能Function、接口Interface的要求,具体包括:1、基本功能块具有完备的逻辑控制能力;2、基本功能块具有尽可能完备的功能;3、基本功能块将关键信息设置为数据输出接口。
5.根据权利要求1所述的基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述步骤2.1的具体步骤如下:获取4diac IDE用于描述单个基本功能块组件的.fbt文件与描述组件应用的.sys文件,利用代码生成器提取其中的有效信息。
6.根据权利要求1所述的基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述微服务程序包括程序主体模块、状态机模块、消息队列模块和辅助模块四类模块。
7.根据权利要求6所述的基于微服务架构的OT域工业组件建模及其代码生成方法,其特征在于所述程序主体模块包括Controller-Service-Mapper三层架构和若干辅助信息收发的类;状态机模块包括三个枚举变量类和三个状态机类,负责还原基本功能块有限状态机的逻辑;消息收发模块包括消息的生产者与消费者,负责还原基本功能块的消息输入与输出逻辑;辅助模块负责微服务应用程序中的数据同步辅助功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310901638.1A CN116909543A (zh) | 2023-07-21 | 2023-07-21 | 基于微服务架构的ot域工业组件建模及其代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310901638.1A CN116909543A (zh) | 2023-07-21 | 2023-07-21 | 基于微服务架构的ot域工业组件建模及其代码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116909543A true CN116909543A (zh) | 2023-10-20 |
Family
ID=88350819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310901638.1A Pending CN116909543A (zh) | 2023-07-21 | 2023-07-21 | 基于微服务架构的ot域工业组件建模及其代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909543A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311683A (zh) * | 2023-11-24 | 2023-12-29 | 浙江口碑网络技术有限公司 | 一种代码辅助***、代码辅助处理方法、装置及电子设备 |
-
2023
- 2023-07-21 CN CN202310901638.1A patent/CN116909543A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311683A (zh) * | 2023-11-24 | 2023-12-29 | 浙江口碑网络技术有限公司 | 一种代码辅助***、代码辅助处理方法、装置及电子设备 |
CN117311683B (zh) * | 2023-11-24 | 2024-03-19 | 浙江口碑网络技术有限公司 | 一种代码辅助***、代码辅助处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lyu et al. | Towards IEC 61499-based distributed intelligent automation: A literature review | |
Lee et al. | Feature‐based approach to object‐oriented engineering of applications for reuse | |
Bozga et al. | Source-to-source architecture transformation for performance optimization in BIP | |
Ye et al. | Toward the plug-and-produce capability for industry 4.0: An asset administration shell approach | |
CN110221815B (zh) | 一种基于本体的控制软件模型的自动生成方法 | |
CN112416337B (zh) | 一种面向航天嵌入式***的软件架构开发*** | |
Yoong et al. | IEC 61499 in a Nutshell | |
Cengic et al. | On formal analysis of IEC 61499 applications, Part A: Modeling | |
CN116909543A (zh) | 基于微服务架构的ot域工业组件建模及其代码生成方法 | |
CN110109658B (zh) | 一种基于形式化模型的ros代码生成器及代码生成方法 | |
Thramboulidis | IEC 61499 as an Enabler of Distributed and Intelligent Automation: A State‐of‐the‐Art Review—A Different View | |
Schmidt et al. | Predictable component architectures using dependent finite state machines | |
Lu et al. | An integrated object-oriented approach for design and analysis of an agile manufacturing control system | |
CN111399829A (zh) | 一种基于模型驱动的波形建模方法及终端 | |
Alshareef et al. | An an approach for activity-based DEVS model specification | |
Hasanagić et al. | Code generation for distributed embedded systems with VDM-RT | |
CN116166245A (zh) | 一种领域建模方法、装置、计算机设备和存储介质 | |
Lu et al. | A UML profile to model safety-critical embedded real-time control systems | |
Braga et al. | Towards a rewriting semantics for a software architecture description language | |
CN117492723A (zh) | 一种基于数据和行为模型的工业软件代码自动生成方法 | |
CN113434118A (zh) | 基于Java平台的集中器的分层架构*** | |
Arshad et al. | Reverse Engineering Encapsulated Components from Object-Oriented Legacy Code. | |
CN113204409A (zh) | 一种基于s2ml的安全攸关***建模方法 | |
Coutts et al. | Model-driven distributed systems | |
Al Mamun et al. | Towards formalizing assumptions on architectural level: A proof-of-concept |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |