一种将CFC语言程序应用于龙芯平台的转换方法及装置转让专利

申请号 : CN202210297629.1

文献号 : CN114397856B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱立国刘佳南陈根张长江王圣洁陶新娟

申请人 : 浙江中控研究院有限公司

摘要 :

本发明公开了一种将CFC语言程序应用于龙芯平台的转换方法,其特征在于,包括以下步骤:准备编译上下文环境参数;获取程序组织单元,对其进行图元编译;其中,在程序组织单元为预设类型的情况下,进行变量申明编译;在程序组织单元为非预设类型的情况下,进行输入输出参数编译后,再进行变量申明编译;基于图元间的逻辑关系进行编译;输出IL代码,实现将CFC语言程序转换为龙芯平台可编程控制器可识别的程序。根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量、图元进行编译,然后生成IL代码,实现了将CFC语言集成到国产编程软件上,做到了CFC语言在龙芯平台下建立、编译、运行,实现了全部自主可控。

权利要求 :

1.一种将CFC语言程序应用于龙芯平台的转换方法,其特征在于,包括以下步骤:准备编译上下文环境参数;

获取程序组织单元,对其进行图元编译;

其中,在程序组织单元为预设类型的情况下,进行变量申明编译;在程序组织单元为非预设类型的情况下,进行输入输出参数编译后,再进行变量申明编译;

基于图元间的逻辑关系进行编译;

输出IL代码,实现将CFC语言程序转换为龙芯平台可编程控制器可识别的程序;

其中,所述图元间的逻辑关系进行编译的方法包括:遍历程序组织单元中的块;以块为单元,编译其数据处理逻辑。

2.根据权利要求1所述的将CFC语言程序应用于龙芯平台的转换方法,其特征在于,所述准备编译上下文环境参数的方法包括:对程序组织单元中的图元模型对应的内存数据进行初始化赋参;

按照预设规则对内存模型中的图元进行优先级排序,以实现对生成的IL代码的执行顺序进行设置。

3.根据权利要求2所述的将CFC语言程序应用于龙芯平台的转换方法,其特征在于,所述对变量申明进行编译的方法包括:遍历程序组织单元中的块及其连接引脚、边缘连接器;

对块执行如下操作:遍历每个块的输入和输出引脚,对每个引脚,遍历引脚关联的连接集合,在此连接是预设变量类型的情况下,则基于此连接绑定的变量名生成相应的IL变量申明;

基于申明为预设变量类型的边缘连接器生成相应的变量。

4.根据权利要求1所述的将CFC语言程序应用于龙芯平台的转换方法,其特征在于,所述进行输入输出参数编译的方法包括:遍历边缘连接器中的所有连接,对申明为预设变量类型的边缘连接器,基于其对应的变量名,编译生成相对应的IL变量申明。

5.根据权利要求1所述的将CFC语言程序应用于龙芯平台的转换方法,其特征在于,所述编译块数据处理逻辑的方法包括:遍历所有的输入引脚,对每个输入引脚,查找其源连接,获取原连接对应的IL变量;

实例化参数过程编译;

遍历所有的输出引脚,对每个输出引脚,遍历其对应的连接集合,查询每个连接对应的变量名,对每个连接分别生成加载输出引脚数据的IL代码和赋值连接对应变量的IL代码。

6.一种将CFC语言程序应用于龙芯平台的转换装置,其特征在于,实现权利要求1至权利要求5中任意一项所述将CFC语言程序应用于龙芯平台的转换的方法,包括:初始化准备单元,用于准备编译上下文环境参数;

程序编译单元,用于获取程序组织单元,基于图元以及图元间的逻辑关系进行编译;

程序输出单元,用于输出IL代码,实现将CFC语言程序转换为龙芯平台可编程控制器可识别的程序。

7.一种将CFC语言程序应用于龙芯平台的转换设备,其特征在于,包括:存储器,所述存储器用于存储处理程序;

处理器,所述处理器执行所述处理程序时实现如权利要求1至权利要求5中任意一项所述的将CFC语言程序应用于龙芯平台的转换方法。

8.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至权利要求5中任意一项所述的将CFC语言程序应用于龙芯平台的转换方法。

说明书 :

一种将CFC语言程序应用于龙芯平台的转换方法及装置

技术领域

[0001] 本发明属于工业控制技术领域,尤其涉及一种将CFC语言程序应用于龙芯平台的转换方法及装置。

背景技术

[0002] CFC连续功能图是IEC611131‑3标准编程语言的扩展,是基于功能块图的图形化编程语言,包含了数据流、边缘连接器、块等元素。块主要对数据流进行加工并产生输出数据流,其中:功能块即为固件块,系统自带的常用功能集合;函数块是系统自带的常用函数集合;复合块类似于其他的功能块或函数块,是为了方便构建清晰的阅读性友好的CFC图而存在的一种方法。复合块中左侧的边缘连接器申明为复合块链接时,代表复合块的输入,右侧的边缘连接器申明为复合块链接时,代表复合块的输出。复合块中可以嵌套复合块和使用普通的功能块。文本块用以添加文字性的说明注释,提供友好的图元注释机制。数据流即CFC图中的连接线,表示数据的流向,两端分别连接输出数据流(输出边缘连接器或者块的输出引脚),输入数据流(输入边缘连接器或者块的输入引脚)。边缘连接器为分布在图页面两侧的深色块,为变量或者链接的一个申明描述。它没有网络限制,摆放元素更加灵活。长期以来,如果想在工业自动化控制领域,使用CFC语言,只能使用外国开发的软件,比如西门子的Wincc,3S‑Smart Software Solutions开发的CoDeSys软件。在民用领域,使用国外的编程软件无可厚非,但是在而军工行业,需要开发我们国内自主研发的软件,以达到保护国家安全的目标。
[0003] CFC语言分为图表分区、元素、块和编辑器,如何定义、编译CFC语言并将其成功的运行在国产平台,是本发明要解决的技术难题。

发明内容

[0004] 为解决上述问题,本发明的目的是提供一种将CFC语言程序应用于龙芯平台的转换方法,该方法根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量和图元进行编译,然后生成IL(Instruction List,指令表)代码POE文件。增加了对国产操作系统和国产PLC的应用支持,扩大了应用范围,具有良好的社会意义。
[0005] 为实现上述目的,本发明的技术方案为:一种将CFC语言程序应用于龙芯平台的转换方法,包括以下步骤:
[0006] 准备编译上下文环境参数;
[0007] 获取程序组织单元,对其进行图元编译;
[0008] 其中,在程序组织单元为预设类型的情况下,进行变量申明编译;在程序组织单元为非预设类型的情况下,进行输入输出参数编译后,再进行变量申明编译;
[0009] 基于图元间的逻辑关系进行编译;
[0010] 输出IL代码,实现将CFC语言程序转换为龙芯平台可编程控制器可识别的程序。
[0011] 该方法根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量和图元进行编译,然后生成IL代码POE文件。增加了对国产操作系统和国产PLC的应用支持,扩大了应用范围,具有良好的社会意义。
[0012] 进一步的,所述准备编译上下文环境参数的方法包括:
[0013] 对程序组织单元中的图元模型对应的内存数据进行初始化赋参;
[0014] 按照预设规则对内存模型中的图元进行优先级排序,以实现对生成的IL代码的执行顺序进行设置。
[0015] 进一步的,所述对变量申明进行编译的方法包括:
[0016] 遍历程序组织单元中的块及其连接引脚、边缘连接器;
[0017] 对块执行如下操作:遍历每个块的输入和输出引脚,对每个引脚,遍历引脚关联的连接集合,在此连接是预设变量类型的情况下,则基于此连接绑定的变量名生成相应的IL变量申明;
[0018] 基于申明为预设变量类型的边缘连接器生成相应的变量。
[0019] 进一步的,进行输入输出参数编译的方法包括:
[0020] 遍历边缘连接器中的所有连接,对申明为预设变量类型的边缘连接器,基于其对应的变量名,编译生成相对应的IL变量申明。
[0021] 进一步的,图元间的逻辑关系进行编译的方法包括:
[0022] 遍历程序组织单元中的块;
[0023] 以块为单元,编译其数据处理逻辑。
[0024] 进一步的,编译块数据处理逻辑的方法包括:
[0025] 遍历所有的输入引脚,对每个输入引脚,查找其源连接,获取原连接对应的IL变量;
[0026] 实例化参数过程编译;
[0027] 遍历所有的输出引脚,对每个输出引脚,遍历其对应的连接集合,查询每个连接对应的变量名,对每个连接分别生成加载输出引脚数据的IL代码和赋值连接对应变量的IL代码。
[0028] 本发明根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量进行编译,包括:编译变量引脚连接、编译边缘连接器参数,对图元进行编译,包括:块的流入数据编译、实例化参数编译、块的输出数据流编译,然后生成IL代码POE文件。再将生成的POE文件下载到国产PLC控制器中运行。将CFC语言集成到国产编程软件上,做到了CFC语言在龙芯平台下建立、编译、运行,实现了全部自主可控。
[0029] 基于相同的构思,本发明还提供一种将CFC语言程序应用于龙芯平台的转换装置,其特征在于,实现上述任意所述的将CFC语言程序应用于龙芯平台的转换方法,包括:
[0030] 初始化准备单元,用于准备编译上下文环境参数;
[0031] 程序编译单元,用于获取程序组织单元,基于图元以及图元间的逻辑关系进行编译;
[0032] 程序输出单元,用于输出IL代码,实现将CFC语言程序转换为龙芯平台可编程控制器可识别的程序。
[0033] 基于相同的构思,本发明还提供一种将CFC语言程序应用于龙芯平台的转换设备,其特征在于,包括:
[0034] 存储器,所述存储器用于存储处理程序;
[0035] 处理器,所述处理器执行所述处理程序时实现上述任意所述的将CFC语言程序应用于龙芯平台的转换方法。
[0036] 基于相同的构思,本发明还提供一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现任意所述的将CFC语言程序应用于龙芯平台的转换方法。
[0037] 本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
[0038] 根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量进行编译,包括:编译变量引脚连接、编译边缘连接器参数,对图元进行编译,包括:块的流入数据编译、实例化参数编译、块的输出数据流编译,然后生成IL代码POE文件。再将生成的POE文件下载到国产PLC控制器中运行。将CFC语言集成到国产编程软件上,做到了CFC语言在龙芯平台下建立、编译、运行,实现了全部自主可控。

附图说明

[0039] 下面结合附图对本发明的具体实施方式作进一步详细说明,其中:
[0040] 图1为本发明的一种将CFC语言程序应用于龙芯平台的转换方法流程图;
[0041] 图2为本发明的CFC程序实施例。

具体实施方式

[0042] 以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。
[0043] 需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
[0044] 如图1所示,本发明的技术方案为:一种将CFC语言程序应用于龙芯平台的转换方法,包括以下步骤:
[0045] 准备编译上下文环境参数;
[0046] 获取程序组织单元,对其进行图元编译;
[0047] 其中,在程序组织单元为预设类型的情况下,进行变量申明编译;在程序组织单元为非预设类型的情况下,进行输入输出参数编译后,再进行变量申明编译;
[0048] 基于图元间的逻辑关系进行编译;
[0049] 输出IL代码,实现将CFC语言程序转换为龙芯平台可编程控制器可识别的程序。
[0050] 该方法根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量和图元进行编译,然后生成IL代码POE文件。增加了对国产操作系统和国产PLC的应用支持,扩大了应用范围,具有良好的社会意义。
[0051] 进一步的,准备编译上下文环境参数的方法包括:
[0052] 对程序组织单元中的图元模型对应的内存数据进行初始化赋参;
[0053] 按照预设规则对内存模型中的图元进行优先级排序,以实现对生成的IL代码的执行顺序进行设置。
[0054] 所述图元包括块、连接、边缘连接器等。对内存模型中的功能块或者函数按照在CFC语言编辑器中的排布规则,进行优先级排序,为编译成IL代码中功能块的执行顺序进行设置。
[0055] 进一步的,如果此CFC的POU(Program Organization Unit,程序组织单元)是IEC‑61131标准内规定的预设程序,对变量申明进行编译的方法包括:
[0056] 遍历程序组织单元中的块及其连接引脚、边缘连接器;
[0057] 对块执行如下操作:遍历每个块的输入和输出引脚,对每个引脚,遍历引脚关联的连接集合,在此连接是预设变量类型的情况下,则基于此连接绑定的变量名生成相应的IL变量申明;
[0058] 基于申明为预设变量类型的边缘连接器生成相应的变量。
[0059] 进一步的,如果此CFC的POU不是IEC‑61131标准内规定的预设程序,而是功能块或者函数,进行输入输出参数编译的方法包括:
[0060] 遍历边缘连接器中的所有连接,对申明为预设变量类型的边缘连接器,基于其对应的变量名,编译生成相对应的IL变量申明。
[0061] 进一步的,图元间的逻辑关系进行编译的方法包括:
[0062] 遍历程序组织单元中的块;
[0063] 以块为单元,编译其数据处理逻辑。
[0064] 进一步的,编译块数据处理逻辑的方法包括:
[0065] 遍历所有的输入引脚,对每个输入引脚,查找其源连接,获取原连接对应的IL变量;
[0066] 实例化参数过程编译;
[0067] 遍历所有的输出引脚,对每个输出引脚,遍历其对应的连接集合,查询每个连接对应的变量名,对每个连接分别生成加载输出引脚数据的IL代码和赋值连接对应变量的IL代码。
[0068] 其中,实例化参数过程即为功能块或者函数实例化具体指令过程,通过功能块或函数名,从全局的IEC标准指令集中查询某个具名的块或函数的指令名称,将块的所有输入引脚对应变量使用具体相关指令进行操作。
[0069] 本发明根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量进行编译,包括:编译变量引脚连接、编译边缘连接器参数,对图元进行编译,包括:块的流入数据编译、实例化参数编译、块的输出数据流编译,然后生成IL代码POE文件。再将生成的POE文件下载到国产PLC控制器中运行。将CFC语言集成到国产编程软件上,做到了CFC语言在龙芯平台下建立、编译、运行,实现了全部自主可控。
[0070] 第一实施例
[0071] 如图2所示,是本发明一种以实现 CFC 语言程序实施例。具体的编译过程如下:
[0072] S1:准备编译上下文环境参数。对图中的三个块进行排序,分别为ADD_INT_FBD,MUL_INT_FBD,ABS_INT_FBD
[0073] S2:CFC程序的变量申明编译。为每个块的输出引脚编译生成隐式变量如下:
[0074] IMPLICIT_FCT_10_1_ADD_INT_FBD_OUTPUT : INT;
[0075] IMPLICIT_FCT_10_1_MUL_INT_FBD_OUTPUT : INT;
[0076] IMPLICIT_FCT_10_1_ABS_INT_FBD_OUTPUT : INT;
[0077] 遍历所有边缘连接连接器,生成相应的变量:
[0078] INT_03 : INT;
[0079]     INT_04 : INT;
[0080]     INT_06 : INT;
[0081]     INT_01 : INT;
[0082]     INT_02 : INT;
[0083]     INT_05 : INT;
[0084] S3:编译图元对象逻辑代码。首先对ADD_INT_FBD块进行编译,IN1输入引脚关联的输出边缘连接器为int_01, ADD_INT_FBD块对应的IEC‑61131标准指令为ADD,IN2输入引脚关联的输出边缘连接器为int_02,最终ADD_INT_FBD块编译生成的IL代码为:
[0085] LD  INT_01
[0086] ADD INT_02
[0087] ST IMPLICIT_FCT_10_1_ADD_INT_FBD_OUTPUT
[0088] LD IMPLICIT_FCT_10_1_ADD_INT_FBD_OUTPUT
[0089] ST INT_03
[0090] MUL_INT_FBD同理生成如下代码:
[0091]     LD  INT_04
[0092] MUL INT_05
[0093] ST IMPLICIT_FCT_10_1_MUL_INT_FBD_OUTPUT
[0094] LD IMPLICIT_FCT_10_1_MUL_INT_FBD_OUTPUT
[0095] ST INT_06
[0096] ABS_INT_FBD块生成的代码:
[0097]     LD  IMPLICIT_FCT_10_1_ADD_INT_FBD_OUTPUT
[0098] ABS
[0099] ST IMPLICIT_FCT_10_1_ABS_INT_FBD_OUTPUT
[0100] LD IMPLICIT_FCT_10_1_ABS_INT_FBD_OUTPUT
[0101] ST INT_04
[0102] S4:基于变量申明头和对象逻辑代码体结合即为最终输出的IL代码POE文件。
[0103] 第二实施例
[0104] 基于相同的构思,本发明还提供一种将CFC语言程序应用于龙芯平台的转换装置,其特征在于,实现上述任意所述将CFC语言程序应用于龙芯平台的转换的方法,包括:
[0105] 初始化准备单元,用于准备编译上下文环境参数;
[0106] 程序编译单元,用于获取程序组织单元,基于图元以及图元间的逻辑关系进行编译;
[0107] 程序输出单元,用于输出IL代码以实现CFC语言程序的转换。
[0108] 第三实施例
[0109] 基于相同的构思,本发明还提供一种将CFC语言程序应用于龙芯平台的转换设备,其特征在于,包括:
[0110] 存储器,所述存储器用于存储处理程序;
[0111] 处理器,所述处理器执行所述处理程序时实现上述任意所述的将CFC语言程序应用于龙芯平台的转换的方法。
[0112] 第四实施例
[0113] 基于相同的构思,本发明还提供一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现上述任意所述的将CFC语言程序应用于龙芯平台的转换的方法。
[0114] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0115] 下面对本发明的工作过程作详细说明:
[0116] 进行初始化,即准备编译上下文环境参数;获取程序组织单元,对其进行图元编译;其中,在程序组织单元为预设类型的情况下,进行变量申明编译;在程序组织单元为非预设类型的情况下,进行输入输出参数编译后,再进行变量申明编译;基于图元间的逻辑关系进行编译;输出IL代码。根据CFC语言的特点和组成方式,使用边缘连接器定义变量、通过数据流的方式将变量和块相连,对变量和图元进行编译,然后生成IL代码POE文件。增加了对国产操作系统和国产PLC的应用支持,扩大了应用范围,具有良好的社会意义。
[0117] 上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。