首页> 中国专利> 并行化自动控制程序的方法及编译器

并行化自动控制程序的方法及编译器

摘要

本发明实施例提供了一种并行化自动控制程序的方法,该方法应用于具有多个内核的多内核可编程逻辑控制器(M-PLC)中,该方法包括:将所述M-PLC要执行的串行的自动控制程序划分为多个程序块;利用所述多个程序块将所述自动控制程序映射为并行模型;根据所述并行模型对所述多个程序块进行并行化调度,以将所述多个程序块分别分配给所述M-PLC中的各个内核;以及,分别将分配给各个内核的程序块转换为机器代码,并将转换后的机器代码下载到各个内核中,以供各个内核分别执行。本发明实施例还提出了一种用于执行上述方法的编译器。采用本发明实施例能够实现针对M-PLC的自动控制程序的并行化调度。

著录项

  • 公开/公告号CN103080900A

    专利类型发明专利

  • 公开/公告日2013-05-01

    原文格式PDF

  • 申请/专利权人 西门子公司;

    申请/专利号CN201080068889.7

  • 申请日2010-09-03

  • 分类号G06F9/38;G06F9/45;

  • 代理机构北京康信知识产权代理有限责任公司;

  • 代理人李慧

  • 地址 德国慕尼黑

  • 入库时间 2024-02-19 19:15:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-24

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20151014 终止日期:20160903 申请日:20100903

    专利权的终止

  • 2015-10-14

    授权

    授权

  • 2013-06-05

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20100903

    实质审查的生效

  • 2013-05-01

    公开

    公开

说明书

技术领域

本发明涉及自动控制系统,特别涉及应用于可编程逻辑控制器(PLC, Programmable Logic Controller)平台的并行化自动控制程序的方法及执行该方法的 编译器。

发明背景

自动控制系统(Automatic Control Systems)是在无人直接参与下可使生产过程 或其他过程按期望规律或预定程序进行的控制系统。

可编程逻辑控制器(PLC,Programmable Logic Controller)是一种广泛应用于 自动控制系统的计算机,其硬件结构基本上与微型计算机相同。其中,中央处理单 元(CPU,Central Processing Unit)是PLC的控制中枢。PLC还具有编译器,其用 于将串行的、用工程语言描述的自动控制程序(以下简称控制程序)转换为可供CPU 执行的机器代码,进而CPU得以执行控制程序中的各个指令。

为了提高PLC的系统性能及处理能力,需要对控制程序进行并行化处理。比如: 在多CPU的PLC中,多个CPU用于对整个自动控制系统要执行的控制程序进行并 行执行,也就是说每个CPU执行此控制程序的一部分;PCL中的编译器除了要将串 行的、用工程语言描述的控制程序转换为机器代码还要完成控制程序的并行化调度, 以使这些机器代码能够并行的在多个CPU上执行。

然而,对于控制程序的并行化会增加PLC的计算复杂度。因此,如何能以较低 的计算复杂度来实现较佳的控制程序的并行化已成为自动控制技术中的一个重要课 题。

发明内容

本发明实施例提供了一种并行化自动控制程序的方法,该方法应用于具有多个 内核的多内核可编程逻辑控制器(M-PLC)中,该方法包括:将所述M-PLC要执行 的串行的自动控制程序划分为多个程序块;利用所述多个程序块将所述自动控制程 序映射为并行模型;根据所述并行模型对所述多个程序块进行并行化调度,以将所 述多个程序块分别分配给所述M-PLC中的各个内核;以及,分别将分配给各个内核 的程序块转换为机器代码,并将转换后的机器代码下载到各个内核中,以供各个内 核分别执行。

本发明实施例还提供了一种用于并行化自动控制程序的编译器,该编译器应用 于具有多个内核的M-PLC中,该编译器包括:程序划分模块、并行模型模块,并行 化调度模块及编译模块;其中:所述程序划分模块用于将所述M-PLC要执行的串行 的自动控制程序划分为多个程序块;所述并行模型模块用于利用所述程序划分模块 划分所述自动控制程序得到的多个程序块将所述自动控制程序映射为并行模型;所 述并行化调度模块用于根据所述并行模型模块映射得到的并行模型对所述多个程序 块进行并行化调度,以将各个程序块分别分配给所述M-PLC中的各个内核;及,所 述编译模块用于根据所述并行化调度模块的调度结果,分别将分配给各个内核的程 序块转换为机器代码,并将转换后的机器代码下载到各个内核中,以供各个内核分 别执行。

采用本发明实施例能够实现基于M-PLC的自动控制程序的并行化调度。

附图简要说明

下面将通过参照附图详细描述本发明的示例性实施例,使本领域的普通技术人 员更清楚本发明的上述及其它特征和优点,附图中:

图1为依据本发明实施例的并行化自动控制程序的方法流程图;

图2示出了一个程序依赖图(PDG,Program Dependency Graph)的示例;

图3示出了一个作为并行化调度的输入的PDG示例;

图4为本发明一实施例中计算PDG中各个结点优先级的方法流程图;

图5为本发明一实施例中根据结点优先级逐个调度PDG中各个结点的方法流程 图;

图6为依据本发明实施例的用于执行本发明方法的编译器示意图;

图7为依据本发明实施例的并行化自动控制程序的方法流程图;及,

图8示出了依据本发明实施例的并行化调度示例。

实施本发明的方式

以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描 述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

本发明的发明人发现:多核处理器已成为计算机领域的一种发展方向。所谓的 多核处理器是指在一枚处理器(即CPU)中集成两个或两个以上完整的计算引擎, 即内核(Core)。这样,在未来的自动控制系统中,就可能基于多内核处理器的平 台来构建PLC,以实现更高的处理能力和更优的系统性能。此种PLC可被称为多 内核可编程逻辑控制器(M-PLC,Multi-core Programmable Logic Controller)。然 而,如果要充分利用PLC的多核处理器的处理能力,就必须对控制程序进行并行化 处理以使控制程序可以并行的在CPU的多个内核中执行。但是,目前还未提出任何 针对M-PLC的并行化方案。

本发明实施例提出了一种用于对自动控制程序并行化的方法,该方法应用于基 于M-PLC的平台,并由此平台中的编译器来执行。图1为依据本发明实施例的并行 化自动控制程序的方法流程图,如图1所示,该方法包括:

步骤101:将此M-PLC要执行的串行的自动控制程序划分为多个程序块。其中, 可依据指令之间的依赖性来划分自动控制程序,这样,一个程序块可包括一组具有 紧密依赖性的指令。

在本发明一实施例中,在对基于梯形图(LAD,Ladder Diagram)和功能块图 (FBD,Function Block Diagram)的自动控制程序(如:S7-300/400程序等)进行 划分时,可将网络(Network)作为一种划分单位,即将网络作为一种并行化粒度。 这是因为,在基于LAD/FBD的自动控制程序中,网络中包括的指令之间具有相对 紧密的依赖性。

可选的,还可进一步的在某些情况下采用小于网络的指令集作为一个程序块。 具体的,网络可能包括一条网络间跳转指令(即指示从本网络跳转到另一网络的指 令),如下面表1所示,指令“JU M044;”是一个网络间跳转指令,其指示跳转 到由“M044”标识的另一网络;此时,从此网络中的第一条指令到此跳转指令之间的 各个指令可构成一个程序块,同时,从此跳转指令之后到此网络中的最后一条指令 之间的各个指令则构成另一个程序块;显然,此种情况下,所划分出的两个程序块 均小于网络,则并行化粒度小于网络。同理,当某一网络包括多条网络间跳转指令 时,则可以这些跳转指令为分界点来划分程序块。比如:网络包括共五条指令:指 令1、指令2、指令3、指令4和指令5,其中指令2和指令4为网络间跳转指令, 则此网络对应的控制程序被划分为三个程序块:包括指令1和指令2的程序块、包 括指令3和指令4的程序块、以及包括指令5的程序块。

表1

此外,网络也可能包括网络内部跳转指令,如下面表2所示,指令“JNB_001;” 是一个网络内部跳转指令,其指示跳转到由“_001”标识的本网络内部的另一指令; 此时,仍采用网络作为划分单位,即此网络被划分为一个程序块。

表2

基于上述对于程序块的定义,将基于LAD/FBD的自动控制程序划分为多个程 序块的方法可具体包括如下步骤:逐条扫描此自动控制程序中的指令;当扫描到一 个网络中的第一条指令时,创建一个程序块,并将此第一条指令分配到当前创建的 程序块中,如果此第一条指令为网络间跳转指令,则还要进一步创建新的程序块; 之后,每当扫描到一条指令时,执行如下处理:如果当前扫描到的指令为网络间跳 转指令且非最后一条指令,则将此网络间跳转指令分配到最近创建的程序块中,再 创建一新的程序块;如果当前扫描到的指令非网络间跳转指令,则将此指令分配到 最近创建的程序块中;如果当前扫描到的指令为此网络中的最后一条指令时,则将 此最后一条指令分配到最近创建的程序块中,并停止向最近创建的程序块分配指令。 这样,就能基本上将属于同一网络的指令分配到同一程序块,其中,如果一网络中 有一条或一条以上网络间跳转指令,则可以这些网络间跳转指令为分界点将此网络 中的指令划分为两个或两个以上程序块。

步骤102:利用步骤101中划分自动控制程序而得到的多个程序块将此串行的 自动控制程序映射为一并行模型(Parallelization Model)。

在本发明实施例中,此并行模型可包括多个结点,这些结点与步骤101得到的 多个程序块一一对应,每一结点代表一个程序块,结点之间的依赖关系则代表相应 的程序块之间的依赖关系,如:程序块之间的数据交互、执行优先级和/或硬件约束 条件等。

具体的,此并行模型可以是自动控制程序的程序依赖图(PDG,Program  Dependency Graph)。当整个自动控制程序被划分为多个程序块之后,这些程序块依 据PDG而被分析,其中,每一结点代表一个程序块,任两个结点之间的连接代表这 两个结点之间的依赖关系。图2为一个PDG的示例,此PDG中包括A至O共15 个结点。从图2中可以看出,PDG为一个串行图,这样,自动控制程序就可以以一 个串行的图来表示并作为并行化调度的输入而输入编译器。

步骤103:根据步骤102的并行模型对多个程序块进行并行化调度,以将各个 程序块分别分配给此M-PLC中的各个内核。

在本发明一实施例中,此并行模型为PDG,则根据PDG对多个程序块进行并 行化调度的方法可具体包括三个步骤:

步骤一、搜索PDG中的关键路径(Critical Path)。

具体的,为了分析方便,首先要在PDG中加入两个虚拟结点,开始(START) 结点和结束(END)结点。如图3所示,在图2的PDG中加入了以虚线表示的虚拟 结点,START结点和END结点。在加入了这两个虚拟结点之后,可以搜索得到关 键路径。在PDG中,每一个结点具有一个权重(weight),此权重可以为这个结点 对应程序块的执行代价,任意两个具有连接关系的结点之间还对应这两个结点之间 的执行代价。这里,所谓关键路径就是指PDG中具有最长路径长度的路径,而一条 路径的路径长度可以指此路径的执行代价,则关键路径可以指执行代价最大的路径, 关键路径的长度可简称为CP_Length。在本发明实施例中,可以以结点的执行代价 (execution cost)作为结点的权重,此时,关键路径就是指结点的执行代价之和最 大的路径。本领域技术人员可以知道,结点的执行代价可以为时间代价,这样,结 点的执行代价可用来表示执行此结点对应的控制程序所需的时间。参见图3,假定 路径A-G-H-I-J的执行代价之和最大,则此路径A-G-H-I-J就被确定为关键路径。基 于上述对于关键路径及路径长度的定义,可采用现有的多种搜索算法来在PDG中搜 索得到关键路径,其具体实现这里不再赘述。

步骤二、根据搜索到的关键路径计算PDG中所有结点的优先级。

在本发明一实施例中,可采用尽可能晚(ALAP,As Late As Possible)参数来 表示结点的优先级,可根据CP_Length来计算各个结点的ALAP参数,其中 CP_Length为关键路径的执行代价。具体的计算各个结点的ALAP参数的方法将在 后面结合图4来描述,这里暂不做详述。本领域技术人员可以知道,ALAP参数为 一种时间参数,其表示开始执行的最晚的时间,这样,一个结点的ALAP参数就能 表示执行此结点对应的控制程序的最晚时间。

步骤三、根据步骤二计算得到的各个结点的优先级逐个调度PDG中的各个结 点,将各个结点逐个分配给M-PLC中的各个内核,进而将各个结点对应的各个程序 块分别分配给各个内核来执行。

在本发明一实施例中,可采用ALAP参数来表示结点的优先级,这样,本步骤 中可根据步骤二中计算得到的各个结点的ALAP参数来逐个调度各个结点,具体的 根据ALAP参数来调度各个结点的方法将在后面结合图5来描述,这里暂不做详述。

进一步的,在将各个程序块分配给各个内核之后,还需要在一些程序块中增加 内核之间同步通信的指令(简称增加同步通信)。比如:程序块1被分配到内核1, 程序块2被分配到内核2,并且程序块1和程序块2之间具有依赖关系,此时就要 在内核1和内核2之间增加程序块1和程序块2之间的同步通信的指令。

在本发明一实施例中,采用PDG作为并行模型,在对各个程序块进行并行化调 度时是将代表各个程序块的PDG中的各个结点分别分配给各个内核,同时,要进一 步考虑各个结点之间的依赖关系来确定是否在内核之间增加同步通信以及在哪些结 点之间增加同步通信。具体的,在将对应一个进程/线程(也称为可用部分available  part)的一个或多个结点分配给某一内核时,针对每一个结点,判断此结点的所有祖 先结点(precursor)是否都被分配给此内核,如果是,则不必增加同步通信,否则 确定未被分配给此内核的各个祖先结点所在的内核,并增加此结点和与其不属同一 内核的祖先结点之间的同步通信,进而增加内核之间的同步通信。其中,在两个结 点之间增加同步通信时,需要在这两个结点对应的程序块中增加同步通信的指令。 这里,本发明实施例可采用现有技术来增加内核间的同步通信,编译器可自动产生 代表内核间同步通信的指令代码,其具体实现本文不再赘述。

步骤104:分别将分配给各个内核的程序块转换为机器代码,并将转换后的机 器代码下载到各个内核中,以供各个内核分别执行。

可选的,在执行步骤104之前,进一步将用工程语言编写的自动控制程序翻译 成通用语言的格式,这样在步骤104中将程序块转换为机器代码时可直接调用通用 语言的编译器对每个内核需要执行的自动控制程序进行编译。具体的,在前述方案 中,步骤101中划分整个自动控制程序得到的各个程序块以及步骤103中进行并行 化调度之后分配给各个内核的程序块都对应一段工程语言编写的自动控制程序,本 发明实施例中,可以在执行步骤103之后将每一内核对应的程序块翻译成通用语言 的格式。此种情况下,当增加内核间的同步通信时,编译器将以通用语言的格式来 编写同步通信的代码。

考虑到C语言是目前最为流程的通用编程语言,且当前已经存在多种为不同硬 件平台设计的成熟的C语言编译器,因此,在本发明的实施例中,可以将C语言作 为工程语言到机器代码之间转换的媒介。具体来讲,步骤103之后,将各个内核的 执行队列(即各内核对应的程序块)翻译成C语言格式的代码,此时,编译器在步 骤103中加入的同步通信也将是用C语言编写的代码。则在上述情况下,在步骤104, 编译器将直接调用C语言编译器将各个内核的执行队列转换为机器代码。

图4为本发明一实施例中计算PDG中各个结点优先级的方法流程图。在此实施 例中,使用ALAP参数作为结点的优先级。如图4所示,该方法包括如下步骤:

步骤401:按反向拓扑顺序对PDG中的所有结点进行排序,并构成列表 (RevTopList)。这里,可以采用深度优先的算法逐个遍历PDG中的各个结点,每 遍历到一个结点就将此结点加入到RevTopList中,此RevTopList可以是个先进先出 的队列,这样就可以形成一种按反向拓扑排序的结点序列。本领域技术人员可以知 道,可采用现有的各种方法来具体的实现本步骤,本文就不再进一步详述。

步骤402:从RevTopList中取一个结点i。

步骤403:路径的最大执行代价(min_ft)=关键路径长度(CP_Length)。其中, min_ft代表PDG中以当前结点为终点的路径的最大执行代价,CP_Length代表的关 键路径长度为关键路径的执行代价。步骤404:如果结点i有子结点,则对于结点i 的每一个子结点做如下处理:如果此子结点的ALAP参数-此子结点与结点i之间的 执行代价<min_ft,则min_ft=此子结点的ALAP参数-此子结点与结点i之间的执行 代价。

步骤405:结点i的ALAP参数=min_ft-结点i的执行代价。

步骤406:判断RevTopList中是否还有未处理的结点,如果是,则返回步骤402, 否则,结束本流程。

具体的,以下表3示出了依据上述方法计算PDG中各结点的ALAP参数的一个 伪码(Pseudo Code)实例。在表3中,min_ft为路径的最大执行代价,alap(ni)和alap(ny) 为结点ni和ny的ALAP参数,w(ni)为结点ni的权重(即执行代价),c(ni,ny)为结 点ni与结点ny之间的执行代价。

表3

图5为本发明一实施例中根据结点优先级逐个调度PDG中各个结点的方法流程 图。在此实施例中,使用ALAP参数作为结点的优先级。如图5所示,该方法包括 如下步骤:

步骤501:对PDG中的各个结点进行排序,并搜索得到关键路径。

步骤502:计算每一结点的ALAP参数。

上述步骤501和502中可按反向拓扑对各个结点进行排序进而计算得到每一结 点的ALAP参数,上述步骤501和502的具体处理在前文已有详细描述,这里不再 赘述。

步骤503:为每一个结点创建一个ALAP参数列表,其中,一个结点的ALAP 参数列表包括以升序排列的此结点及其所有子结点的ALAP参数。根据ALAP参数 的特点,本领域技术人员可以知道,一个结点的ALAP参数一定小于其子结点的 ALAP参数,这样,一个结点的ALAP参数列表中,此结点的ALAP参数将被排在 第一位,之后以升序排列此结点的各个子结点的ALAP参数。这里,此ALAP参数 列表可以实现为一个先进先出的队列。

步骤504:按词典顺序(lexicographical order)对步骤503中各结点的ALAP参 数列表进行升序的排序,并依据排序结果创建一个结点列表。

本领域技术人员可以知道,步骤503中创建的各个ALAP参数列表包括升序排 列的一个或多个ALAP参数,那么在对这些ALAP参数列表进行词典顺序的排序时, 首先比较各个ALAP参数列表中的首个ALAP参数,对于任两个ALAP参数列表, 如果首个ALAP参数不同,则将较小ALAP参数对应的ALAP参数列表排在前面, 如果首个ALAP参数相同,则依同样的方法比较下一个ALAP参数,直至比较结果 为两个ALAP参数不同或者比较完ALAP参数列表中的最后一个ALAP参数。这里, 可采用现有技术对多个ALAP参数列表进行词典顺序的排序,这里不再赘述。

具体的,在依据排序结果创建结点列表时,此结点列表列出以上述升序词典顺 序排列的各个ALAP参数列表分别对应的各个结点,此结点列表中可包括排序后的 各个ALAP参数列表对应的各个结点的信息。比如:假定有三个结点:结点1、结 点2和结点3,为这三个结点创建的ALAP参数列表分别为列表1、列表2和列表3, 在对这三个ALAP参数列表进行词典顺序的排序之后,顺序结果为:列表3、列表1 和列表2,则可依据此排序结果创建一个结点列表,此结点列表中按顺序依次包括: 结点3的信息、结点1的信息和结点2的信息。

步骤505:将此结点列表列出的第一个结点调度给一个允许最早执行的内核, 再将此结点从结点列表中删除。这里,可采用现有技术来确定允许最早执行的内核, 本文对此不做详述。

步骤506:判断上述结点列表是否为空,如果是,结束本流程,否则返回步骤 505。

具体的,在将结点列表中的结点逐个调度给各个内核时,可为每一内核建立一 个先进先出的执行队列,此执行队列中按顺序排列调度给此内核的各个结点的信息, 当将一个结点调度个某一个内核时,可采用插入的方式将此结点的信息插入此内核 的执行队列中。在完成调度之后,编译器根据这些执行队列中的结点信息可以确定 调度给各个内核的各个程序块。

通过上述流程可知,本发明实施例在进行并行化调度时,不仅能够考虑PDG中 单一结点的优先级(如ALAP参数),还能进一步考虑到其子结点的优先级,进而, 当有两个结点的优先级相同时,它们的子结点优先级将被迭代的比较,进而基本避 免具有相同优先级的结点之间的竞争问题;相对于现有的调度算法,本发明实施例 的并行化调度方法能够将结点调度到更为合适的时间片,并且计算复杂度较低,假 定PDG中的结点数量为v,则本发明实施例的并行化调度方法的计算复杂度为 O(v2logv)。

基于上述本发明实施例提供的并行化自动控制程序的方法,本发明实施例还提 出了一种用于执行此方法的编译器。图6为依据本发明实施例的用于执行本发明方 法的编译器示意图。如图6所示,此编译器包括如下部件:

程序划分模块601,用于将M-PLC要执行的串行的自动控制程序划分为多个程 序块。

并行模型模块602,利用程序划分模块601划分自动控制程序得到的多个程序 块将此串行的自动控制程序映射为一并行模型。

并行化调度模块603,根据并行模型模块602映射得到的并行模型对多个程序 块进行并行化调度,以将各个程序块分别分配给此M-PLC中的各个内核。

编译模块604,根据并行化调度模块603的调度结果,分别将分配给各个内核 的程序块转换为机器代码,并将转换后的机器代码下载到各个内核中,以供各个内 核分别执行。

进一步的,此编译器还可包括同步通信模块605,此同步通信模块605连接并 行化调度模块603,根据并行化调度模块603的调度结果在M-PLC中的各个内核之 间增加同步通信,即在一个或多个内核的相应的一个或多个程序块中增加一条或多 条内核间同步通信的指令。

此编译器中的编译模块604可能仅具备通用语言编译功能,此时,此编译器还 可包括通用语言转换模块606,通用语言转换模块606用于将由工程语言编写的自 动控制程序转换为通用语言的格式,这样编译模块604可以将通用语言格式的自动 控制程序转换为机器代码供CPU中的各个内核来执行。具体的,通用语言转换模块 606可连接并行化调度模块603,通用语言转换模块606根据并行化调度模块603 的调度结果将每一内核对应的程序块翻译成通用语言的格式。进一步的,当此编译 器包括同步通信模块605时,通用语言转换模块606连接在并行化调度模块603和 同步通信模块605之间;其中,通用语言转换模块606用于根据并行化调度模块603 的调度结果将各内核的由工程语言编写的程序块转换成通用语言的格式,并输出转 换成通用语言格式的各内核的程序块给同步通信模块605;同步通信模块605在各 个内核的程序块中直接增加通用语言格式的同步通信的指令,并将通用语言格式的 各内核的程序块输出给编译模块604。

上述各个模块的功能的具体实现方法在前述本发明实施例中均有详述,这里不 再赘述。

基于图6所示编译器的功能及结构,采用此编译器对自动控制程序进行并行化 的方法流程如图7所示,该方法包括如下步骤:

步骤701:输入M-PLC要执行的自动控制程序,将此自动控制程序划分为多个 程序块,并利用这些程序块将此自动控制程序映射为PDG,通过此PDG可以分析 各个程序块之间的依赖性。其中,针对基于LAD/FBD的自动控制程序,每一程序 块小于或等于网络。

步骤702:利用PDG对这些程序块进行并行化调度。

步骤703:将由工程语言编写的各个内核对应的程序块转换为通用语言格式。

步骤704:加入通用语言格式的内核间同步通信的指令代码。

步骤705:调用通用语言编译器,将通用语言格式的程序代码转换为针对M-PLC 的并行化的机器代码。

上述各个步骤的具体实现方法在前面均有详述,这里不再赘述。

图8示出了依据本发明实施例的并行化调度示例。在图8中,一个用户程序被 并行化调度到单一CPU的两个内核,内核1和内核2。首先,此用户程序被划分为 多个程序块,并被映射为一PDG,其中,PDG中的结点与各个程序块一一对应;之 后,依据此PDG中呈现的程序块之间的依赖关系,各个程序块被并行的调度到内核 1和内核2中;进一步的,根据程序块之间的依赖关系,内核1和内核2之间增加 了三个同步通信。

为了验证本发明实施例提出的并行化方案的技术效果,以下给出一验证实例。 此实例针对具有Intel2.9GHz CPU和4G内存的PLC平台上的基于LAD/FBD的控 制程序,使用的是双核CPU,并且所使用的并行化调度算法由C#语言实现。以下的 表4列出了五次测试结果,并使用在并行计算领域中常用的两个度量来评估自动控 制程序的并行化程度,包括加速比(Speedup)以及并发度(DoC,Degree of  Concurrency)。从以下表4中可以看出,当DoC大于内核数量(即2)时,加速比 趋近于2,也就是说速度几乎提高为原来的两倍,进而可以说明本发明实施例提出 的并行化方案可以充分利用CPU的双核资源,并显著提高了PLC平台的系统性能 和处理能力。

  DoC Speedup 测试1 2.515 1.997 测试2 1.229 1.213 测试3 5.193 1.999 测试4 1.389 1.389 测试5 1.346 1.345

表4

通过上述本发明实施例可知,针对基于LAD/FBD的自动控制程序,采用小于 或等于网络的并行化粒度,进而充分利用M-PLC的多内核资源,还采用了静态的调 度机制,使并行化的计算复杂度较低。本发明的实施例可以有效地将串行的由工程 语言编写的自动控制程序转换为并行的且能够同时在CPU的多个内核上执行的代 码,因此可以大大缩短自动控制程序的执行时间,显著提高M-PLC的系统性能及处 理能力。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的 精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护 范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号