CN111610974B - 一种面向边缘计算的跨系统平台编译方法 - Google Patents
一种面向边缘计算的跨系统平台编译方法 Download PDFInfo
- Publication number
- CN111610974B CN111610974B CN201910140322.9A CN201910140322A CN111610974B CN 111610974 B CN111610974 B CN 111610974B CN 201910140322 A CN201910140322 A CN 201910140322A CN 111610974 B CN111610974 B CN 111610974B
- Authority
- CN
- China
- Prior art keywords
- function
- api
- platform
- target system
- api abstract
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种面向边缘计算的跨系统平台编译方法,包括以下步骤:建立API抽象函数库,并存储API抽象函数到目标系统函数的映射关系;对功能块程序中的API抽象函数进行标记;对已标记的API抽象函数与预先存储的目标系统函数进行匹配,根据重构内容以及映射关系,将匹配成功的API抽象函数替换为对应的目标系统函数,实施代码重构;对重构完成的代码进行编译,生成目标系统平台可运行的文件。与现有编译器相比,本发明在编译之前自动实现面向特定平台的代码重构,实现IEC 61499功能块的跨操作系统使用,方便功能块在分布式系统中各操作系统平台统一部署和运行,有利于推动IEC 61499标准在工业互联网边缘计算分布式系统中的进一步应用与发展。
Description
技术领域
本发明涉及计算机技术领域以及工业互联网边缘计算领域,尤其涉及一种面向边缘计算的IEC 61499功能块跨系统平台编译方法。
背景技术
工业互联网是以互联网为代表的新一代信息技术与工业系统深度融合形成的产业和应用生态,是工业智能化发展的关键综合信息基础设施。边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台,就近提供边缘智能服务,满足行业数字化在敏捷联接、实时业务、数据优化、应用智能、安全与隐私保护等方面的关键需求。工业互联网边缘计算是指在工业互联网技术生态中使用边缘计算技术,满足上述的关键需求。
边缘计算工业分布式控制系统的组成中,包含各种分散的计算资源,比如可编程逻辑控制器(PLC),智能传感器,智能控制器,边缘服务器等。这些计算资源平台运行不同的操作系统,比如Linux,QNX,Vxworks,Windows等。工厂要实现分布式系统的统一编程和统一部署,就必须要针对不同的操作系统平台单独编程,并且不同的平台需要不同的开发环境与编程语言,这两个因素增加了分布式控制系统的开发成本与复杂度。
IEC 61499标准定义了面向工业过程测量和控制的分布式系统模型,提供了面向分布式系统统一编程与部署的参考模型。利用功能块实现面向对象的程序功能块封装,实现程序的模块化,并通过组合的形式构建应用程序。但是,现有编译器不支持含有系统API的功能块在不同系统平台上的交叉编译,编译缺少系统API之间的等效替换,难以实现同一功能块的跨平台使用,即对于不同操作系统实现同一功能的功能块需要开发多个版本以适应不同平台。该问题制约了IEC 61499在工业互联网边缘计算应用场景中的进一步发展和“设计一次,到处使用”的愿景。
发明内容
基于上述问题,本发明提供一种面向边缘计算的IEC 61499功能块跨系统平台编译方法,用来实现IEC 61499功能块的跨平台使用,减少功能块版本开发工作量,促进IEC61499在工业互联网边缘计算分布式系统中的进一步发展。
本发明解决其技术问题所采用的技术方案是:一种面向边缘计算的跨系统平台编译方法,包括以下步骤:
建立包含API抽象函数的API抽象函数库,并存储API抽象函数到目标系统函数的映射关系;
确定代码重构位置:对功能块程序中的API抽象函数进行标记;
确定代码重构内容:根据程序执行的目标系统操作类型平台,对已标记的API抽象函数与预先存储的目标系统函数进行匹配,将匹配成功的API抽象函数作为代码重构内容;
根据重构内容以及映射关系,将匹配成功的API抽象函数替换为对应的目标系统函数,实施代码重构;
对重构完成的代码进行编译,生成目标系统平台可运行的文件。
所述API抽象函数为与系统无关的函数。
所述API抽象函数通过语义描述建立函数功能描述本体,包括目标系统的头文件、函数类型、函数形参类型、函数返回值类型以及数据结构中的至少一种。
对功能块程序中的API抽象函数进行标记之前,对功能块程序进行语法检测,确保程序没有语法错误。
将标记成功的API抽象函数位置保存。
所述匹配具体如下:
对标记位置的API抽象函数的函数功能描述本体进行语义解析,得到目标系统的引用头文件、函数类型、函数形参类型、函数返回值类型以及数据结构;
对标记位置的API抽象函数根据映射关系得到对应的目标系统函数,即匹配成功。
所述目标系统函数包含但不仅限于进程操作、线程操作、信号量操作、互斥锁操作和网络操作。
所述功能块为符合IEC 61499标准的程序模块。
一种面向边缘计算的跨系统平台编译器,包括存储器,用于存储编译程序;当编译程序被执行时,实现一种面向边缘计算的跨系统平台编译方法的步骤。
本发明具有以下有益效果及优点:
与现有编译器相比,本发明提出的一种面向边缘计算的IEC 61499功能块跨系统平台编译方法,在编译之前自动实现面向特定平台的代码重构,实现IEC61499功能块的跨操作系统使用,方便功能块在分布式系统中各操作系统平台统一部署和运行,有利于推动IEC 61499标准在工业互联网边缘计算分布式系统中的进一步应用与发展。
附图说明
图1为本发明的实施例要解决的问题示意图;
图2为自适配编译器的工作原理图;
图3为本发明对系统API抽象的函数类型示意图;
图4为功能块程序预编译阶段的工作流程图;
图5为程序对系统平台适配过程流程图;
图6为功能块代码重构步骤流程图;
图7为本发明实施例中使用API抽象函数实现的功能块源程序示意图;
图8为本发明实施例中经过代码重构之后的功能块源程序示意图。
具体实施方式
下面结合实施例对本发明做进一步的详细说明。
本发明提供一种面向边缘计算的IEC 61499功能块跨系统平台编译方法,包括对功能块程序的预编译处理、系统抽象函数与系统函数的适配、重构功能块代码以及编译生成。其技术方案如下:
S1:增加系统无关的API抽象函数库,即将常见操作系统的API统一抽象为系统无关的抽象函数调用接口,并将抽象函数到系统函数的映射规则存储在规则库中。功能块程序采用分层设计,隔离系统相关的代码,即,功能块程序调用的函数均来自系统无关的API抽象函数库。
S1中常见操作系统API包含但不仅限于进程操作、线程操作、信号量操作、互斥锁操作和网络操作。
S1中所涉及的抽象函数以及相关的数据类型,即引用头文件、函数类型、函数形参类型、函数返回值类型以及特殊的数据结构,通过语义描述建立函数功能描述本体。
利用S1中建立的映射规则,通过查找函数功能描述本体,可以实现抽象函数到系统函数的具体映射内容。
S2:功能块程序的预编译处理,对功能块程序中使用的与系统API抽象函数进行标记,确定代码重构位置。
S2中功能块程序的预编译处理是指对采用API抽象函数实现功能块程序进行语法检测,确保程序没有语法错误。
S2中对使用API抽象函数的标记方法采用但不仅限于正则匹配,标记成功记录API抽象函数使用位置并保存。
S3:系统API抽象函数与系统API函数的适配。根据程序执行的目标系统操作类型平台,对已标记的抽象函数与编译器预先存储的系统相关函数进行匹配,寻找系统相关函数的替代版本,确定代码重构内容。
S3中函数匹配过程采用语义解析和映射规则,对标记位置的API抽象函数进行语义解析和映射规则,确定API抽象函数和对应API函数的引用头文件、函数类型、函数形参类型、函数返回值类型以及特殊的数据结构。
S3中解析完成之后,需要根据解析结果查找多操作系统API集成库,进行解析结果匹配,完成对解析结果的校验。
S4:重构功能块代码。根据重构内容以及规则库中的映射规则,替换系统相关API头文件和函数名并对基本数据类型之间的差异进行调整,实施代码重构过程。
S5:面向目标系统平台编译。对重构完成的代码进行编译,生成目标系统平台可运行的二进制文件。
IEC 61499功能块中,如图1所示,对于调用操作系统API的功能块,只能面向固定系统平台进行单独编译执行,无法实现跨系统平台的编译与部署。这种情况导致同一功能类型的功能块需要开发多种面向不同系统类型的版本,增加了功能块的开发、使用和维护成本。鉴于此,开发一种面向边缘计算的IEC61499功能块跨系统平台编译器,降低上述成本,其工作原理如图2所示。
本发明通过socket套接字实现C++编写的TCP/IP客户端通信功能块,分别部署在Linux和Windows系统平台上作为实施例,用来说明本发明提出的支持跨系统平台的自适配编译器的具体实施步骤:
201:对Linux和Windows系统API函数进行抽象,建立系统无关的API抽象函数库,如图3所示,在该实施例中实现socket通信的系统API相关函数包括:系统头文件、初始化函数、socket关闭函数、socket类型等。
201中系统头文件包括Linux系统环境下的“sys/socket.h”和“arpa/inet.h”,Windows系统环境下“winsock.h”。
201中初始化函数包括Windows系统环境下WSAStartup()。Linux系统环境不需要初始化函数。
201中socket关闭函数包括Linux系统环境下close(),Windows系统环境下closesocket()。
201中socket类型包括Linux系统环境下socket类型为int,Windows系统环境下为SOCKET类型。
201步骤中,将所述系统相关API函数抽象为“F_socket.h”,“F_socketstartup()”,“F_socketclose()”和“F_SOCKET”类型。抽象过程的同时分别建立抽象函数到Linux和Windows平台的映射规则并存储在规则库中。
使用系统API抽象函数实现socket客户端的C++源程序代码如图7所示,其中代码加粗部分表示实现socket客户端所采用的API抽象函数(例如,F_socketstartup()和F_socketclose())以及抽象函数依赖的头文件(例如,F_socket.h)和数据类型(例如,F_SOCKET sock)。
TCP/IP客户端通信功能块采用抽象函数库中的函数编写,与具体执行平台无关。
202:程序预处理过程,包括对头文件和程序语句的分析和标记程序中使用API抽象函数的位置,如图4所示。
在分析过程中根据C++语言的语法规则检查源程序代码的语法是否错误。如果出现错误则提示出错信息并停止后续分析过程,如果语法没有错误则进行API抽象函数标记。
API抽象函数标记使用正则表达式对功能块源代码进行逻辑过滤匹配,并将匹配结果中代码的位置进行标记。
203:根据目标系统平台,对系统平台进行API函数适配。如图5所示,自适配编译器包含集成多种操作系统的API库。
203中API函数适配过程是根据目标系统平台要求匹配相应操作系统的API函数。
步骤203对标记位置的API抽象函数进行语义解析和映射规则,确定API抽象函数和对应API函数的引用头文件、函数类型、函数形参类型、函数返回值类型以及特殊的数据结构。
该实施例中是针对202中已标记的API抽象函数匹配对应Linux和Windows系统环境下的API函数,以确定204步骤中代码替换的内容。
204:实施代码重构,根据201中提到的规则库中的规则库,将202中标记的API抽象函数进行重构,生成与平台相关的代码,实现代码对系统API的调用,工作流程如图6所示。
204步骤根据API抽象函数标记位置,替换对应的API函数;根据语义解析结构替换系统相关头文件;根据系统平台对数据类型修改。
本实施例中,以Linux环境为例,经过重构生成的Linux环境下实现socket客户端的C++源程序代码如图8所示。代码中加粗部分(linux系统下的API函数close(sock)、API函数头文件sys/socket.h和数据类型int sock;)即为代码重构的部分,实现了API抽象函数到API函数的映射。
S5:对重构生成的代码进行编译,生成目标系统平台可运行的二进制代码。
综上所示,本发明的提出的面向边缘计算的跨系统平台编译器重点在于对多种操作系统API函数进行系统无关抽象和面向具体操作系统平台编译时的代码重构。这两个阶段使得功能块的开发者无需考虑系统平台差异,便可以直接在各个系统平台之间使用。
Claims (5)
1.一种面向边缘计算的跨系统平台编译方法,其特征在于包括以下步骤:
建立包含API抽象函数的API抽象函数库,并存储API抽象函数到目标系统函数的映射关系;
所述API抽象函数为与系统无关的函数;
目标系统函数包含:进程操作、线程操作、信号量操作、互斥锁操作和网络操作;
确定代码重构位置:对功能块程序中的API抽象函数进行标记;
所述功能块为符合IEC 61499标准的程序模块;
确定代码重构内容:根据程序执行的目标系统操作类型平台,对已标记的API抽象函数与预先存储的目标系统函数进行匹配,将匹配成功的API抽象函数作为代码重构内容;
所述匹配具体如下:
对标记位置的API抽象函数的函数功能描述本体进行语义解析,得到目标系统的引用头文件、函数类型、函数形参类型、函数返回值类型以及数据结构;
对标记位置的API抽象函数根据映射关系得到对应的目标系统函数,即匹配成功;
根据重构内容以及映射关系,将匹配成功的API抽象函数替换为对应的目标系统函数,实施代码重构;
对重构完成的代码进行编译,生成目标系统平台可运行的文件。
2.根据权利要求1所述的一种面向边缘计算的跨系统平台编译方法,其特征在于,所述API抽象函数通过语义描述建立函数功能描述本体,包括目标系统的头文件、函数类型、函数形参类型、函数返回值类型以及数据结构中的至少一种。
3.根据权利要求1所述的一种面向边缘计算的跨系统平台编译方法,其特征在于,对功能块程序中的API抽象函数进行标记之前,对功能块程序进行语法检测,确保程序没有语法错误。
4.根据权利要求1所述的一种面向边缘计算的跨系统平台编译方法,其特征在于,将标记成功的API抽象函数位置保存。
5.一种面向边缘计算的跨系统平台编译器,其特征在于,包括存储器,用于存储编译程序;当编译程序被执行时,实现如权利要求1至权利要求4任一项所述的一种面向边缘计算的跨系统平台编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910140322.9A CN111610974B (zh) | 2019-02-26 | 2019-02-26 | 一种面向边缘计算的跨系统平台编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910140322.9A CN111610974B (zh) | 2019-02-26 | 2019-02-26 | 一种面向边缘计算的跨系统平台编译方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111610974A CN111610974A (zh) | 2020-09-01 |
CN111610974B true CN111610974B (zh) | 2023-05-12 |
Family
ID=72201386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910140322.9A Active CN111610974B (zh) | 2019-02-26 | 2019-02-26 | 一种面向边缘计算的跨系统平台编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111610974B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363728B (zh) * | 2020-11-20 | 2023-07-18 | 浪潮软件科技有限公司 | 一种支持持续集成构建的跨平台编译方法及系统 |
CN113448619A (zh) * | 2021-06-29 | 2021-09-28 | 上海达梦数据库有限公司 | 跨平台程序的实现方法、装置、计算机设备及存储介质 |
CN114610385B (zh) * | 2022-03-16 | 2023-05-09 | 山东福生佳信科技股份有限公司 | 一种运行环境适配系统及方法 |
CN117118962B (zh) * | 2023-07-25 | 2024-03-22 | 领悦数字信息技术有限公司 | 用于跨多个云平台部署用户方法的方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880452A (zh) * | 2012-02-01 | 2013-01-16 | 日照市国软软件有限公司 | 一种可跨语言重用的编程语言 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886249B2 (en) * | 2015-11-16 | 2018-02-06 | Sap Se | Universal transcompiling framework |
-
2019
- 2019-02-26 CN CN201910140322.9A patent/CN111610974B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880452A (zh) * | 2012-02-01 | 2013-01-16 | 日照市国软软件有限公司 | 一种可跨语言重用的编程语言 |
Also Published As
Publication number | Publication date |
---|---|
CN111610974A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111610974B (zh) | 一种面向边缘计算的跨系统平台编译方法 | |
Basu et al. | Rigorous component-based system design using the BIP framework | |
CN111736954B (zh) | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 | |
US20070277163A1 (en) | Method and tool for automatic verification of software protocols | |
JPH0561683A (ja) | オブジエクトに基づく情報処理システム及びソフトウエア保守システム | |
CN110955431A (zh) | 编译环境的处理方法及装置 | |
CN104932905A (zh) | 一种aadl到c语言的代码自动生成方法 | |
US20160132308A1 (en) | Leveraging legacy applications for use with modern applications | |
US10083029B2 (en) | Detect application defects by correlating contracts in application dependencies | |
CN107463421B (zh) | 一种静态流程模型的编译执行方法及系统 | |
Weisenburger et al. | Multitier modules | |
Alfonso et al. | Modeling self-adaptative IoT architectures | |
Evans et al. | Zones, contracts and absorbing changes: An approach to software evolution | |
CN113608748B (zh) | C语言转换Java语言的数据处理方法、装置及设备 | |
US20030115571A1 (en) | Construction of a software application from a plurality of programming languages | |
Ceccato et al. | Adding distribution to existing applications by means of aspect oriented programming | |
Dinkloh et al. | A tool for integrated design and implementation of conversations in multiagent systems | |
Yue et al. | SPOT: A DSL for extending fortran programs with metaprogramming | |
Constantinides et al. | A framework to address a two-dimensional composition of concerns | |
Costa et al. | Dynamic adaptation of aspect-oriented components | |
WO2008015110A2 (en) | Methods, apparatus and computer programs for modelling computer programs | |
Tao et al. | Model Based Methodology and Framework for Design and Management of Next-Gen IoT Systems. | |
CN108595166A (zh) | 一种分布式物联网应用执行引擎实现方法及系统 | |
Laarman | Achieving QVTO & ATL Interoperability: An Experience Report on the Realization of a QVTO to ATL Compiler | |
CN114691117B (zh) | 一种边缘控制器软件快速开发方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |