CN114115092A - 一种异构双核plc协同执行方法与装置 - Google Patents
一种异构双核plc协同执行方法与装置 Download PDFInfo
- Publication number
- CN114115092A CN114115092A CN202111042132.7A CN202111042132A CN114115092A CN 114115092 A CN114115092 A CN 114115092A CN 202111042132 A CN202111042132 A CN 202111042132A CN 114115092 A CN114115092 A CN 114115092A
- Authority
- CN
- China
- Prior art keywords
- instruction
- cpu unit
- plc
- instructions
- unit
- 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
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/11—Plc I-O input output
- G05B2219/1103—Special, intelligent I-O processor, also plc can only access via processor
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本发明公开了一种异构双核PLC协同执行方法,应用编写于上位机编译生成的中间指令送入异构双核PLC进行协同执行,异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元。S1:启动上位机,进行编译获得包括运算指令和操作指令的中间指令。S2:启动并初始化可编程控制器,接收中间指令。S3:依次序读取中间指令,若为运算指令则进入步骤S4,若为操作指令则进入步骤S5。S4:接收运算指令,并使FPGA单元执行相对应的操作,进而进入步骤S6。S5:接收操作指令,并使CPU单元执行相对应的操作,进而进入步骤S6。S6:判断中间指令未读取完毕,则跳转至步骤S3,若读取完毕,则初始化可编程控制器,待接收新的中间指令进入步骤S3。本发明可以显著提高PLC的执行速度并降低成本。
Description
技术领域
本发明属于嵌入式系统技术领域,尤其涉及一种异构双核PLC协同执行方法与装置。
背景技术
可编程控制器(PLC)是一种采用数字化操作的电子设备,通过外部输入状态或根据其程序或逻辑做出决定,从而控制输出使机器或者过程自动化。目前,PLC可编程控制器已经广泛应用于各种工业生产活动中。
在目前市场上广泛应用的PLC可编程控制器大体工作流程如下,用户在上位机中编写调试代码,编译无误后,将编译后的目标程序下载到下位机PLC可编程控制器系统中,下位机PLC可编程控制器的CPU核负责程序的执行,执行过程与传统CPU运行过程类似,即根据指令指针IP命令指针从存储器中取出要执行的指令,指令分为操作码和操作数两部分,操作码经过译码单元送入控制器执行相应操作,操作数经过地址计算单元后得到操作码所需数据的地址,根据相应地址到存储器中取出数据送入控制器的寄存器,指令指针IP命令指针自增,指向下一条要执行的指令。
这种方案使得PLC可编程控制器的执行速率大大受限于CPU的计算速度,难以适应社会发展的需要,而想要提高PLC可编程控制器的执行速度就需要提高CPU的主频,这样就会带来高昂的成本问题。因此,传统方案难以将速度与成本之间进行平衡。
发明内容
本发明的技术目的是提供一种异构双核PLC协同执行方法与装置,以解决在不提高成本条件下如何提高PLC执行速度的技术问题。
为解决上述问题,本发明的技术方案为:
一种异构双核PLC协同执行方法,应用编写于上位机编译生成的中间指令送入异构双核PLC以进行协同执行,异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元,包括如下步骤:
S1:启动上位机,进而对调试任务进行编译,获得若干中间指令,若干中间指令包括运算指令和操作指令;
S2:启动并初始化异构双核PLC,接收若干中间指令;
S3:依次序读取一中间指令,对当前中间指令进行判断,若当前中间指令为运算指令则进入步骤S4,若当前中间指令为操作指令则进入步骤S5;
S4:接收运算指令,并使FPGA单元执行相对应的操作,进而进入步骤S6;
S5:接收操作指令,并使CPU单元执行相对应的操作,进而进入步骤S6;
S6:判断中间指令是否读取完毕,若未读取完毕,则跳转至步骤S3,若读取完毕,则初始化可编程控制器,并等待直至接收若干中间指令后进入步骤S3。
其中,运算指令为操作计算指令,操作指令包括跳转/返回指令、变量传递指令、外部扩展指令;
操作计算指令配置于CPU单元并用于指示FPGA单元对数据进行计算操作;
跳转/返回类配置于CPU单元并用于指示CPU单元控制相对应的指令指针实现跳转与返回;
变量传递指令配置于CPU单元并用于控制CPU单元的寄存器与CPU单元的内存之间数据传递;
外部扩展指令用于配置于CPU单元并用于提供调用外部函数的接口。
进一步优选地,步骤S2还包括如下步骤A1
A1:将当前需要执行的调试任务的各类数据加载到CPU单元的相应寄存器中。
进一步优选地,在步骤S2与步骤S3之间还包括如下步骤B1
B1:判断是否存在中间指令需要执行,若存在,则进入步骤S3,若不存在,则初始化可编程控制器,并等待直至接收若干中间指令后进入步骤S3。
其中,在步骤S4具体包括如下步骤
S41:接收运算指令,运算指令包括操作码和操作数,基于操作数,读取操作数映射的CPU单元的内存中的数据并送入CPU单元的寄存器内;
S42:基于CPU单元的寄存器内的数据和操作码进行数据计算,得到计算结果;
S43:返回计算结果,并保存至CPU单元的内存中,进而进入步骤S6。
一种异构双核PLC协同执行装置,包括:上位机和异构双核PLC;
上位机用于将相应调试任务编译为中间指令;异构双核PLC用于执行中间指令,中间指令包括运算指令和操作指令,异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元;
CPU单元用于按照次序依次读取中间指令,对当前中间指令进行判断,若当前中间指令为运算指令则输入至FPGA单元并令其执行相对应的操作,若当前中间指令为操作指令则使CPU单元进一步执行相对应的操作,直至将中间指令读取完毕。
一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行满足上述任一项的一种异构双核PLC协同执行方法。
本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
本发明提出一种异构双核PLC协同执行方法,通过将中间指令分为两类,一类为跳转/返回、变量传递等类型的指令,此类指令在CPU单元上执行,另外一类为占用资源较多、执行时间较长的运算指令,此类指令在性能和成本很低的FPGA单元上执行,通过FPGA单元的硬件加速可以有效减少运算指令的执行时间。CPU单元持续从内存中逐条读取中间指令,当遇到FPGA单元执行指令时,就将该指令发送给FPGA单元执行,并通过PCI-e高速接口接收其计算结果。该架构通过异构多核协同执行PLC的程序,可以显著提高PLC的执行速度并降低PLC的成本。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明的一种异构双核PLC协同执行方法流程示意图;
图2为本发明的一种异构双核PLC的系统结构框图;
图3为本发明的一种异构双核PLC的IL指令码格式;
图4为本发明的一种异构双核PLC协同执行装置的任务流程图;
图5为本发明的一种异构双核PLC协同执行装置的执行流程图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
以下结合附图和具体实施例对本发明提出的一种基于中断向量的固件检测方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
实施例1
一种异构双核PLC协同执行方法,应用编写于上位机编译生成的中间指令送入异构双核PLC以进行协同执行,异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元,包括如下步骤:
参看图1、图2和图5,首先在步骤S1中,启动上位机,输入源程序即调试任务,进而对调试任务进行编译,获得若干中间指令,将中间指令分成两类,分别为在CPU单元上执行的操作指令,在FPGA单元上执行的运算指令。
在异构双核PLC中,要执行的程序以任务的形式被用户发布,任务类型有三种,分别是循环、定时与中断。无论对于哪种任务,其执行过程都可以分为初始化、加载、执行、保存四个阶段。在进入初始化阶段的时候,首先判断需要任务类型(中断、循环、定时)及任务的优先级,当存在多个任务同时被下载时会考虑优先级,并将任务的句柄号、堆栈段的段号以及累加器的段号加载到一个结构体变量中。
本实施例中将中间指令分为跳转/返回、变量传递、操作计算以及外部扩展四种类型。跳转/返回指令的主要功能是通过控制指令指针IP来实现程序的跳转与返回。变量传递指令的主要功能是将数据从CPU单元的内存中加载到CPU的寄存器当中或者从CPU的寄存器中赋值回内存中。操作计算指令的主要功能是对数据进行相关计算操作并得到结果。外部扩展指令是由于基本控制指令数量有限,为了拓展指令的数量所产生的,它的主要功能是提供给外部函数一个调用的接口。从上述介绍可以看出只有操作计算指令涉及到数据的运算操作,故本系统将跳转/返回、变量传递以及外部扩展三种类型的指令加载到CPU单元中执行,将操作计算指令加载到FPGA单元中执行,使FPGA单元实现加速计算功能。CPU单元与FPGA单元之间通过高速PCI-e传递数据。
然后,在步骤S2中,启动并初始化可编程控制器,接收中间指令,需要在进入步骤S3之前判断类型和次序。较优地,步骤S2还包括如下步骤A1加载阶段,将当前需要执行的调试任务的各类数据加载到CPU单元的相应寄存器中。具体为向异构双核PLC传递一个指向结构体变量的指针,该变量存储在寄存器中,保存了关于要执行任务实例的全部信息的副本。
较优地,在步骤S2后还包括如下步骤B1。参看图5,在步骤B1中每次进入步骤S3前需要判断是否存在中间指令需要执行,若存在,则进入步骤S3,若不存在,则初始化可编程控制器,并等待直至接收到新的中间指令后进入步骤S3。
接着,参看图2至图5,在步骤S3中,开始执行阶段,CPU单元从当前代码位置开始读取中间指令,即根据程序计数器从代码段中读取一条指令(一个字节),PLC的中间指令由一个字节的操作码组成,根据操作码的不同,操作码之后可以跟一个字或两个字的操作数,如图3所示。由于操作码的恒定长度为1字节,可以用一个switch语句来决定要执行的函数,即每个操作码都有自己对应的函数分支。根据switch语句表达式的值来决定指令在CPU单元或者FPGA单元中执行,如果指令属于跳转/返回、变量传递以及外部扩展这三种类型,则进入步骤S5,如果指令属于操作计算指令,则进入步骤S4。
根据中间指令的类型进入步骤S4或步骤S5,因此,步骤S4或步骤S5为并列关系而非先后关系。
参看图5,假如为运算指令,则在步骤S4中进行如下步骤,接收运算指令,操作计算指令总是将累加器、操作数以及运算符组合在一起,该操作的结果被写回到累加器。累加器相当于CPU单元内部的一个寄存器,用来存放数据的,每次对数据进行操作实际就是对累加器进行操作,例如执行一个循环加一命令,每次执行结果放到累加器中,当下次进行计算时,累加器就是加数,操作数一就是被加数,加法命令就是运算符。这意味着累加器是栈顶元素,而操作数是栈的第二个元素。因此可以将堆栈的两个顶部元素映射到CPU单元的全局变量寄存器(AE和AEs)中,这些变量可以在CPU单元的内存中找到。这意味着CPU单元与FPGA单元传递数据时只需传递指令类型与累加器相关数据即可。全局变量寄存器可以理解为寄存器,只不过使用全局变量寄存器(的话作用的范围更广。
将CPU单元的内存中的数据转移到寄存器内,通过操作码进行数据计算,得到计算结果;向CPU单元返回计算结果,并保存至CPU单元的内存中,程序执行完毕时,设置标志位并返回进而进入步骤S6。
假如为操作指令,则在步骤S5中,根据相关指令调用相应的执行函数,当所有程序执行完毕时,设置标志位并返回进而进入步骤S6。操作指令为变量传递指令,在加载数据时,也是直接将CPU单元内存中所需的数据加载到CPU单元的全局变量寄存器(AE或AEs)中,同理,在写回数据时,也是将全局变量寄存器的值写入内存中。CPU单元中的累加器(AE)没有固定的数据类型,其当前数据类型取决于将要处理的数据类型。
最后在步骤S6中,判断中间指令是否读取完毕,若未读取完毕,则跳转至步骤S3,若读取完毕,则初始化可编程控制器,并等待直至接收若干中间指令后进入步骤S3。在进入等待之前,还需要进入保存阶段,传递一个指向结构体变量的指针,该变量保存关于当前任务的信息,也用来存储当前任务的状态。CPU单元调用函数将寄存器的当前内容保存到该结构体变量中,此时该变量就保存了整个任务相关数据的副本。
实施例2
参看图2,本实施例提供一种能够实现实施例1的一种异构双核PLC协同执行装置,包括:上位机和异构双核PLC,上位机用于将相应调试任务编译为中间指令,并将中间指令输送至异构双核PLC中。PLC的执行分为解释方式和编译方式。在解释执行方式下,PLC的程序在上位机中被编译为中间指令,比如infoteam的UCODE。PLC中的运行时(runtime)将逐条解释执行UCODE。
本实施例中,异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元,此外,将中间指令分为两类,具体为运算指令和操作指令。一类为跳转/返回、变量传递等类型的操作指令,此类指令在CPU单元上执行;另外一类为占用资源较多、执行时间较长的运算指令,此类指令在性能和成本很低的从FPGA单元上执行,通过FPGA单元的硬件加速可以有效减少运算指令的执行时间。
CPU单元会按照次序依次读取中间指令,对当前中间指令进行判断,若当前中间指令为运算指令则输入至FPGA单元并令其执行相对应的操作,并通过PCI-e高速接口接收其计算结果;若当前中间指令为操作指令则使CPU单元进一步执行相对应的操作,直至将中间指令读取完毕。
实施例3
本实施例一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行满足上述任一项的一种异构双核PLC协同执行方法。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。
Claims (7)
1.一种异构双核PLC协同执行方法,其特征在于,应用编写于上位机编译生成的中间指令送入所述异构双核PLC以进行协同执行,所述异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元,包括如下步骤:
S1:启动所述上位机,进而对所述调试任务进行编译,获得若干中间指令,若干所述中间指令包括运算指令和操作指令;
S2:启动并初始化所述异构双核PLC,接收若干所述中间指令;
S3:依次序读取一所述中间指令,对当前所述中间指令进行判断,若当前所述中间指令为所述运算指令则进入步骤S4,若当前所述中间指令为所述操作指令则进入步骤S5;
S4:接收所述运算指令,并使所述FPGA单元执行相对应的操作,进而进入步骤S6;
S5:接收所述操作指令,并使所述CPU单元执行相对应的操作,进而进入步骤S6;
S6:判断所述中间指令是否读取完毕,若未读取完毕,则跳转至所述步骤S3,若读取完毕,则初始化所述可编程控制器,并等待直至接收若干所述中间指令后进入所述步骤S3。
2.根据权利要求1所述的异构双核PLC协同执行方法,其特征在于,所述运算指令为操作计算指令,所述操作指令包括跳转/返回指令、变量传递指令、外部扩展指令;
所述操作计算指令配置于所述CPU单元并用于指示所述FPGA单元对数据进行计算操作;
所述跳转/返回类配置于所述CPU单元并用于指示所述CPU单元控制相对应的指令指针实现跳转与返回;
所述变量传递指令配置于所述CPU单元并用于控制所述CPU单元的寄存器与所述CPU单元的内存之间数据传递;
所述外部扩展指令用于配置于所述CPU单元并用于提供调用外部函数的接口。
3.根据权利要求1所述的异构双核PLC协同执行方法,其特征在于,所述步骤S2还包括如下步骤A1
A1:将当前需要执行的所述调试任务的各类数据加载到所述CPU单元的相应寄存器中。
4.根据权利要求1所述的异构双核PLC协同执行方法,其特征在于,在所述步骤S2与所述步骤S3之间还包括如下步骤B1
B1:判断是否存在所述中间指令需要执行,若存在,则进入所述步骤S3,若不存在,则初始化所述异构双核PLC,并等待直至接收若干所述中间指令后进入所述步骤S3。
5.根据权利要求4所述的异构双核PLC协同执行方法,其特征在于,在所述步骤S4具体包括如下步骤
S41:接收所述运算指令,所述运算指令包括操作码和操作数,基于所述操作数,读取所述操作数映射的所述CPU单元的内存中的数据并送入所述CPU单元的寄存器内;
S42:基于所述CPU单元的寄存器内的数据和所述操作码进行数据计算,得到计算结果;
S43:返回所述计算结果,并保存至所述CPU单元的内存中,进而进入所述步骤S6。
6.一种异构双核PLC协同执行装置,其特征在于,包括:上位机和异构双核PLC;
所述上位机用于将相应调试任务编译为中间指令;
所述异构双核PLC用于执行所述中间指令,所述中间指令包括运算指令和操作指令,所述异构双核PLC包括用于实现协同执行的FPGA单元和CPU单元;
所述CPU单元用于按照次序依次读取所述中间指令,对当前所述中间指令进行判断,若当前所述中间指令为所述运算指令则输入至所述FPGA单元并令其执行相对应的操作,若当前所述中间指令为所述操作指令则使所述CPU单元进一步执行相对应的操作,直至将所述中间指令读取完毕。
7.一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至5中任一项所述的一种异构双核PLC协同执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111042132.7A CN114115092A (zh) | 2021-09-07 | 2021-09-07 | 一种异构双核plc协同执行方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111042132.7A CN114115092A (zh) | 2021-09-07 | 2021-09-07 | 一种异构双核plc协同执行方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114115092A true CN114115092A (zh) | 2022-03-01 |
Family
ID=80441239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111042132.7A Pending CN114115092A (zh) | 2021-09-07 | 2021-09-07 | 一种异构双核plc协同执行方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114115092A (zh) |
-
2021
- 2021-09-07 CN CN202111042132.7A patent/CN114115092A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR950003552B1 (ko) | 프로그램 가능한 제어기 | |
US7930443B1 (en) | Router having routing engine software instance and interface controller software instance on a single processor | |
JP2019160352A (ja) | 多重スレッド実行プロセッサ及び動作方法 | |
CN110427337B (zh) | 基于现场可编程门阵列的处理器内核及其运行方法 | |
CN101730881A (zh) | 包括多个处理器的系统以及操作该系统的方法 | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
US20220414052A1 (en) | Multi-Core Processor, Multi-Core Processor Processing Method, and Related Device | |
US20110264892A1 (en) | Data processing device | |
KR102228502B1 (ko) | 컴퓨터 프로세싱의 타이밍 제어 | |
JP6094356B2 (ja) | 演算処理装置 | |
US7603542B2 (en) | Reconfigurable electric computer, semiconductor integrated circuit and control method, program generation method, and program for creating a logic circuit from an application program | |
EP4152150A1 (en) | Processor, processing method, and related device | |
CN114115092A (zh) | 一种异构双核plc协同执行方法与装置 | |
US20060200648A1 (en) | High-level language processor apparatus and method | |
US8631173B2 (en) | Semiconductor device | |
JP6292324B2 (ja) | 演算処理装置 | |
GB2069733A (en) | Conditional instruction execution in a pipelined processor | |
JP2001014161A (ja) | プログラマブルコントローラ | |
CN113407240B (zh) | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 | |
KR20150081148A (ko) | 프로세서 및 프로세서 제어 방법 | |
JP7495030B2 (ja) | プロセッサ、処理方法、および関連デバイス | |
JP2003140910A (ja) | Vliwプロセッサにおけるバイナリトランスレーション方法 | |
WO2022231733A1 (en) | Method and apparatus for desynchronizing execution in a vector processor | |
JP5866697B2 (ja) | 複数のコンディションフラグを有するcpu | |
WO2015136686A1 (ja) | 情報処理装置及び方法 |
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 |