CN117234678A - 控制程序部分的流程的方法和装置、编程方法、编程装置 - Google Patents

控制程序部分的流程的方法和装置、编程方法、编程装置 Download PDF

Info

Publication number
CN117234678A
CN117234678A CN202310716543.2A CN202310716543A CN117234678A CN 117234678 A CN117234678 A CN 117234678A CN 202310716543 A CN202310716543 A CN 202310716543A CN 117234678 A CN117234678 A CN 117234678A
Authority
CN
China
Prior art keywords
program
event
execution
priority
operator
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
Application number
CN202310716543.2A
Other languages
English (en)
Inventor
S·迪姆
M·伍尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Schneider Electric Industries SAS
Original Assignee
Schneider Electric Industries SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Schneider Electric Industries SAS filed Critical Schneider Electric Industries SAS
Publication of CN117234678A publication Critical patent/CN117234678A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/058Safety, monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15014Configure priorities of different tasks
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15127Bit and word, byte oriented instructions, boolean and arithmetic operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Programmable Controllers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种用于控制程序部分的流程的方法,具有以下步骤:通过第一事件(E1)的发生促使在第一运算器(RW1)上执行第一程序部分(P1),其中给第一事件(E1)和/或第一程序部分(P1)分配第一优先级(Py1),以及通过第二事件(E2)的发生促使第一程序部分(P1)的执行中断,然后在第一运算器(RW1)上执行第二程序部分(P2),其中给第二事件(E2)和/或第二程序部分(P2)分配第二优先级(Py2),该第二优先级高于第一优先级(Py1),其中第一和/或第二程序部分(P1,P2)是IEC 61499意义上的功能块或其一部分,或由此促使的数据传输。

Description

控制程序部分的流程的方法和装置、编程方法、编程装置
技术领域
本发明涉及一种用于控制程序部分的流程的方法和装置。本发明尤其涉及用于控制控制程序的流程的方法和装置,优选地在存储器编程的控制器上并且相应于IEC 61499标准。该方法或装置例如可以作为制造设施或物流设施的控制计算机等应用在工业环境中。
背景技术
图6示意性地示出了这种控制装置的结构。101是此处示出的最大单元。其例如可以是电路板。在此,102和103可以是分离的硬件部件、例如相同电路板上的不同处理器。其代表不同的运算器RW,不同的运算器一方面可以彼此独立地并行工作,但另一方面也可以请求访问相同的资源、例如数据或外围硬件部件、如接口等。仅示意性地示出的运行控制器107执行必要的控制步骤,以便确保各个运算器RW的可靠、独立且相对于彼此没有干扰的运行。
然而,与此前描述的不同,不同的运算器也可以是单个硬件上的虚拟运算器。但是,在任何情况下应该注意的是,运算器在一定程度上相互竞争。虚拟运算器分配有真实硬件的计算时间,其总共不可能超过可用时间的100%。并且运算器可以访问公共的外围资源。在这方面,图6中的图示仅应示例性地理解。本发明的一个重要方面是,并行地存在两个或通常更多个在其资源方面有限的运算器。相比之下,其如何实施的问题是次要的。
运算器RW1和RW2可以相互通信,也可以对外通信。彼此之间的通信仅高度示意性地用箭头104表示。根据运算器的实现类型,该通信可以使用不同的技术、例如运行系统层面上的通信、总线通信、网络通信等。就运算器彼此之间的通信而言,通信通常以数字方式进行。利用箭头105和106用符号表示从外部输入的通信和到外部的通信。此处也可以涉及数字通信、例如来自其他数字部件的通信。或者可以是模拟信号、例如从传感器输入或输出到执行器的信号。相应地,也可以存在未示出的转换器、例如A/D转换器或相反地D/A转换器和可能必要的驱动器。
在图6中示出的结构用于执行控制程序,该控制程序优选地被设计为符合IEC61499。在IEC 61499中,程序被描述为由功能块FB组成。图7a示例性地示出了这种功能块110的图示。在左上方用符号表示触发该功能块的输入事件111。在右上方用符号表示由功能块110生成的输出事件112。在此重要的是,功能块110被输入事件111触发以进行处理,并且该功能块本身尤其在其活动结束时可以产生输出事件112或多个这种事件作为输出,以便触发一个或多个另外的功能块110用于执行或进行外部启动。在左下方利用113用符号表示输入数据,功能块110接收该输入数据作为其活动的输入。在右下方利用114用符号表示输出数据,功能块110产生该输出数据并提供给其他功能块或整体上提供给其他数字部件。
图7b示出了两个功能块110a和110b的交互作用的符号表示。假定已经以某种方式触发的功能块110a作为其活动的结果而触发了功能块110b。这是通过功能块110a在其事件输出端112a处生成事件来实现的,该事件被馈送到第二功能块110b的事件输入端111b。这通过连接115用符号表示。与此并行地,功能块110a和110b可能但并非在任何情况下都必要地以这种方式交换数据,使得进行触发的功能块110a将数据提供给被触发的功能块110b。这通过连接116用符号表示。然而,功能块110b可以从其他来源获得其可能需要的输入数据,并且功能块110a可以将输出数据发送给其他接收者。
作为所示内容的补充,功能块110可能在其事件输出端112处生成多个事件,该多个事件可以导致多个不同功能块的准同时触发。功能块110还可以在其事件输入端111处接收来自不同源的多个事件并且因此通过不同的事件触发。
例如可以在图6示意性地示出的硬件上运行的控制程序由多个或许多个功能块的组合组成,如图7a、图7b所示。如果功能块被触发用于执行,则其通过运行控制器107分配有运算器之一用于执行。运行控制器107是通用的控制装置,其上级设置地为各个运算器执行同步和控制措施。运行控制器以这种方式工作,即该运行控制器例如监测和控制真实CPU上的逻辑建立的运算器的计算时间分配、正确地配属输入和输出数据通信、启动功能块在运算器上由事件和优先级控制的执行,等等。
如果多个功能块110在多个运算器RW上在一个或可能也在多个同时运行的控制程序中并行地执行,则可能在不同的状况下出现访问冲突。图8示出了对此的非常基本的流程。上方的线示出了沿时间轴发生的不同事件,而下方的图形示出了特定运算器RWn的占用情况。假定在时间点t1,第一事件E1触发第一程序部分P1、例如如上所示的功能块110。然后在下方用符号表示的运算器RWn上执行该功能块。执行在时间点t3结束。还假定在时间点t3之前的时间点t2发生另外的事件E2。假定除了所示的运算器RWn之外没有其他运算单元可用,在这种状态下,在存储器编程的控制器中不可能执行可能由事件E2触发的程序部分P2、尤其功能块110。更确切地,等到时间点t3之后运算器RWn变得空闲,以便然后执行对应于第二事件E2的程序部分P2或功能块110。
可以将优先级分配给事件或由其启动的程序部分或功能块110。优先级相对于彼此具有如下意义,即在已经提及的资源竞争中,例如在真实CPU上的计算时间或真实运算器的分配,较高优先级的事件优先于较低优先级的事件进行处理。如果在短时间内预期发生多个事件,则形成队列(queue)。根据特定的结构标准,在队列中存在不同优先级的事件。然后,优先级可能导致队列中最高优先级的事件被用于立即执行,而较低优先级的事件必须等待。
然而,在图8的情况下,如果高优先级的事件,如图8所示,在时间点t2发生,则其也至少等待至时间点t3才能执行。如果例如执行持续时间长的低优先级事件对可用的运算器提出持续时间长的要求并且因此妨碍高优先级事件能够执行,则这是不利的。
发明内容
本发明要解决的技术问题是,提供一种用于控制程序部分的流程的方法和装置,其可以实现对程序部分的流程进行改进的优先级控制。
上述技术问题通过本发明的特征来解决。
用于控制程序部分的流程的方法具有以下步骤:通过第一事件的发生促使,在第一运算器上执行第一程序部分,其中,第一事件和/或第一程序部分被分配第一优先级;以及通过第二事件的发生促使,中断在第一运算器上的第一程序部分的执行,然后在第一运算器上执行第二程序部分,其中,第二优先级被分配给第二事件和/或第二程序部分,其中第二优先级与第一优先级具有预定的并且特别是用户定义的关系,其中第二优先级可以高于第一优先级,其中第一和/或第二程序部分是IEC 61499意义上的功能块或其一部分或由其促使的数据传输,和/或其中第一程序部分是在发生第二事件时在第一运算器上运行的程序。
利用所述方法,在优先级控制下,可以中断正在运行的程序部分,以便能够执行另一个程序部分。特别地,所述装置是这样的,即优先级较高的程序部分可以中断优先级较低的程序部分。以这种方式避免了高优先级的程序部分或高优先级的事件长期被先前启动的低优先级程序部分阻止执行或严重减慢执行速度。这些中断也由运行控制器107执行、实施和管理。这同样适用于先前中断的程序部分的后续继续。
如果在本说明书中提到了根据IEC 61499的设计,并且例如示出了符合性,则应将其理解为本发明的功能所必需的程度,或者它不被本发明的描述特征所改变。
如上所述,程序部分可以是设备或设施控制程序的一部分。它可以与许多外部部件通信,包括模拟和数字的部件。一般说来,流程控制至少部分地是事件控制的和优先级控制的。这意味着,程序部分或功能块是事件控制的并且彼此之间按优先级分级。如果计算能力或运算器可用,则可以直接执行程序部分。否则,它们或它们触发的事件将被放置在一个或多个事件列表中,也被称为队列,这些事件列表将根据特定的标准进行处理。
本发明的一个重要特征是,事件和/或程序部分已经被分配了优先级。在此,优先级可以指示相应程序部分或触发程序部分的事件的执行紧迫性。示例性地,在该描述中有时假定,存在四个优先级。它们的编号为1、2、3和4。例如,每个事件都可以与这些优先级中的一个相关联。这里假定优先级1是最高优先级、即指示最高执行紧迫性,此后,优先级2、3和4降低地分别指示较低的执行紧迫性。所考虑的控制程序内的事件或程序部分可能在编程中被分配了优先级。从外部到达的事件可以根据所使用的接口或类似的方式分配优先级。
所分配的优先级导致运行控制器中的明确结果,因为具有不同优先级的事件或程序部分相互竞争,使得优先级较高的事件或程序部分在优先级较低的事件或程序部分之前执行。在具有相同优先级的事件或程序部分相互竞争的情况下,其他战略可以解决冲突,例如Round Robin(轮询)、FIFO(First In,First Out,先进先出)、LIFO(Last In,First Out,后进先出)等。
因此,系统为不能立即执行的事件或程序部分引导队列。在此,对于多个优先级,可以在队列的意义上分别引导自己的事件列表,这些事件列表分别存储分别分配的优先级的发生的事件,这些事件表示仍待处理的程序部分。然后,上面提到的第二事件被录入到与其优先级相对应的事件列表中,并且,如果在事件列表中没有更高优先级的条目,则根其自身优先级的事件列表中的条目的处理规则,例如Round Robin(轮询)、FIFO(First In,First Out,先进先出)、LIFO(Last In,First Out后进先出),必要时,用于中断第一程序部分在第一运算器上的执行。
对于正在运行的程序部分,以适当的方式存储它们的优先级或调用它们的事件的优先级,以便将它们包括在基于优先级的比较中。因此,可以从上面、即从最高优先级处理事件列表,并相对于可能正在运行的程序部分的优先级处理事件列表。例如,可以将这些优先级一起放入表格,然后更新和发展这些优先级,然后在需要时调用这些优先级,或者可以为这些优先级提供收集例程,以便在需要时从分布式的源、例如正在进行的任务的定义中收集不同的优先级。
对于该方法,可以使用预先创建为相应执行环境的多个任务。任务被创建为执行环境可以包括优先级的配置,利用优先级的配置,应该根据事件或功能块的优先级和事件队列的优先级执行任务,并且可以继续包括与相应优先级的事件列表的链接或关联。通过预先定义的、存储的和可在执行时间点调用的参数组来定义执行环境。参数组形成运算器的设置,运算器的设置在程序部分的执行中被使用。
然后,运算器的设置是预先定义的和组织的,并且因此在执行时间点不需要任何更高级别的行政活动,从而可以快速提供。运行控制器107进行关联和相关的控制。此外,运算器也是预先指定的或预先定义的和组织的,并且因此在执行时间点不需要任何更高的行政活动,从而可以快速提供。
例如,如果定义了四个优先级,则可以为这些优先级中的每一个创建一个或多个任务,并与它们相关联用于执行。运行控制器107进行关联和相关的控制。
但是,也可以使用如下任务,其实时地被创建为相应的执行环境,优选地响应于发生的事件,并且实时地被删除,优选地在程序部分的处理结束时,其中根据触发它们的事件的优先级激活运算器。
该变体是有利的,即存在较少的、长持续时间的用于执行的程序部分。这样对于管理不需要的运算器就不会产生管理负担。但是,如果存在许多事件要执行,这将是不利的,因为即使创建了许多任务,这也不会增加实际可用的资源,从而可能会导致创建任务的徒劳的管理开销。
导致第一运算器上的第一程序部分中断的第二事件通常由在另一运算器上运行的另一程序部分产生。然而,也可以想到,程序部分产生一个事件,该事件中断正在产生的程序部分本身。
为了决定是否需要中断正在进行的程序部分,可以生成或获取监测结果。在此,这可能是对单个运算器的活动的监测结果。这些监测结果可以由所描述的方法本身产生,例如由运行控制器107产生,或者可以从其他系统部件、诸如运行系统例如通过运行控制器107获得。如果根据监测结果中可以看出,运算器在空运行或可以在可用的计算时间的情况下使用,则程序部分的中断对于执行优先级较高的程序部分是不必要的。相反,可以将程序中优先级较高的部分分配给例如空运行的(leer laufende)任务,或者可以为此创建一个新任务。
关于程序部分、特别是第二程序部分的执行分配给被监测的运算器中的一个,也可以根据被监测运算器的特性来决定。这考虑到了这样一个事实,即并不是所有的运算器都必须相同,而是可以在计算能力、数据连接等方面有所不同。此外,关于这样的标准,可以将要执行的程序部分分配给运算器,并且可能在必要时导致所描述的中断。
程序部分本身可以由可区分的子部分组成。可能需要的第一程序部分的执行的中断可以在处理第一程序部分中包含的一个子部分之后和在开始处理第一程序部分中的另一个子部分之前进行。但是,在必要时,中断也可以发生在程序部分或其子部分的任何位置。
根据IEC 61499的执行控制计划、即所谓的“执行控制图(execution controlchart)”,程序部分也可以被调用和处理,其中从执行控制计划中调用程序部分可以是引起执行第一程序部分的第一事件和/或引起执行第二程序部分的第二事件,其优先级可以被分配或已经被分配。这些事件的优先级控制的处理可以覆盖或改变执行控制计划的其他下面的规定。通过这种方式,与已知的、使用“执行控制图”-“ECC”的IEC 61499下的方法建立操作连接。因此,部分地使用并且部分地覆盖IEC 61499的方法。
中断第一程序部分的执行可以包括对当前相关设备状态的备份存储、特别是存储运算器、寄存器、数据存储器、程序存储器、程序指针、文件的值。然后,先前中断的程序部分的继续可以包括加载在中断时备份存储的设备状态以供接管继续的运算器使用。通过这种方式,中断的程序部分可以在以前已经结束处理的逻辑位置继续处理。
可以将程序部分指定为不可中断的或不可多次并行执行的程序部分,从而该程序部分即使根据更高优先级的事件的请求也不能被中断,或者该程序部分能够不被更高优先级调用的任务并行地再次执行。这例如可能是有意义的,当它是状态不能被缓存的程序部分时,因为该程序部分例如是外部的、或者是庞大的,或者是类似的东西。因此,即使按照先前描述的方法,程序部分的中断或并行执行将被执行,如果检查表明用于中断的程序部分被标记为不可中断或不能并行多次执行,则该中断或并行执行将被中止。
本发明的主题还涉及一种用于执行所述方法的根据IEC61499的装置,其可以是设备控制器或设施控制器和/或存储器编程的控制器,并且可以具有至少一个传感器或数据输入和至少一个执行器或数据输出。
本发明的主题还涉及一种用于符合IEC 61499的程序的执行装置。它包括至少两个运算器,用于并行地执行由标记有优先级的事件触发的程序部分。执行控制器基于与触发程序部分的事件相关联的优先级控制程序部分在运算器上的执行。执行控制器被设计为,在特定条件下,当触发第二程序部分执行的事件比触发第一程序部分执行的事件具有更高的优先级时,在运算器上中断第一程序部分的执行,并在该运算器上触发第二程序部分的执行。
再次指出,对IEC 61499的引用并不意味着其已经被完全实施。更确切地,其可以根据描述中的说明进行修改。
本发明的主题也是一种编程方法,其中,提供符合IEC 61499标准的编程接口,该编程接口被设计为或适合于对上述方法进行编程。特别地,其适合于输入可能必要的中断、输入可能为此所需的数据备份和数据备份、必要时输入将程序部分标记为不可中断或不可多次执行,等等。编程界面在此可以是或具有图形用户界面,该图形用户界面被设计为用于输入所提及的步骤。在这方面,本发明的主题还是一种实现刚才所述的编程方法的编程装置。
附图说明
下面,参考附图描述本发明的实施方式。在附图中:
图1一般地示出了程序部分的中断,
图2示出了对运算器的并发访问,
图3a、3b示出了多个事件列表,
图4a、4b示出了控制程序的示例,
图5a至5c示出了根据本发明的流程的示例,
图6示出了已知的执行结构,
图7a、7b示出了IEC 61499意义上的功能块,以及
图8示出了已知方法。
具体实施方式
在图1中,上面的行示出了沿着时间轴出现的事件。E1是事件13,对事件13分配了优先级Py"3"。一般来说,可以在对控制程序或者各个程序部分编程时对事件分配优先级。假定,事件E1 13使得执行第一程序部分P111a。进一步假定,在第一程序部分P1的处理尚未结束的时间点t2,出现了第二事件E2 14。第二事件E2 14具有优先级Py 2,因此与具有优先级3的第一事件E1 13或者对应的第一程序部分P1相比,第二事件E2 14被赋予了更高的优先级。
假定,由于系统原因不能将与第二事件E2相关联的第二程序部分P2分配给不同于所示出的运算器RW1的运算器,则第二事件E2 14导致第一程序部分P1 11a在时间点t2之后很短的时间内中断,从而在第一运算器RW1上执行由第二事件E2 14触发的第二程序部分P212。
进一步假定在稍后的时间点t4,第二程序部分P2 12的处理结束。这是随后在时间点t5继续中断的第一程序部分11a的处理的时机,这用附图标记11b表示。
已经指出,程序部分可能被标记为不可中断的。如果这在图1的示例中针对程序部分P1 11给出,则与在图1中所示出的不同,第二事件E2 14在时间点t2的出现不导致第一程序部分11的中断。相反,这将继续进行,并且必须将与被赋予了更高的优先级的第二事件E214对应的第二程序部分P2分配给另一个运算器执行,或者在必要时按照惯例等待。
图2更详细地示出了对运算器的访问冲突可能如何出现的一种可能性。与在图1中不同,不是在上面示出事件并且在下面示出运算器占用,而是上下重叠地示出了程序部分对两个运算器的占用。假定开始时程序部分P0 21在运行单元RW0上运行,并且如所示出的,具有优先级Py=3的第一程序部分P1 11a稍后或者也可能更早在运行单元RW1上开始运行。对于程序部分P0 21,假定在时间点t2其执行结束时,产生了两个事件,即已经在图1中描述的具有优先级Py=2的第二事件E2以及例如具有相同的优先级Py=2的另一个事件23。
由事件23触发的程序部分24于是可以在由于程序部分P0结束而释放的运算器RW0上执行,同时程序部分P2于是不能在那里执行。因此,将其分配给另一个运行单元、即运算器RW1,对于运算器RW1,假定在时间点t2,第一程序部分P1 11a的处理仍在运行。于是在该运算器RW1上中断第一程序部分P1 11a的处理,因为程序部分P2 12是以更高的优先级调用的,于是在那里进行已经示出的第二程序部分P2 12的处理,假定第二程序部分P2 12的处理在时间点t4结束。
在该时间点t4,第二程序部分P2 12本身可能产生一个或多个事件,这些事件对应于第二程序部分P2 12的常规编程,并且在图2中用附图标记25指示。此外,例如运行控制器107可能添加事件15,例如可以将事件15录入事件列表中,并且触发第一程序部分P1 11b的处理的恢复。因此,可以将恢复纳入按照优先级控制的事件处理中。但是也可以直接在中断的程序部分P2 12的处理结束之后,由运行控制器促使第一程序部分P1 11b的处理的恢复。为此,运行控制器可以使用中断的并且等待恢复的程序部分的适当的列表。
在图1和图2中示出的程序部分中断的同时,一般地说,即响应于由于事件(在该示例中为E2(Py:2))要进行的程序部分中断,例如也可以由运行控制器107定义或者产生另一个事件15',即用于触发中断的程序部分的处理的事件。也可以对该事件15'设置优先级。例如可以获得中断的程序部分的优先级,或者也可以将其等级分为更高,以优先结束中断的程序部分。然后,可以将该另一个事件录入在其它情况下使用的事件列表35或者事件列表31-34中,并且与其余事件一起,以按照优先级控制的方式进行处理。
图3a示出了事件列表的设立的一种可能性,时间列表有时也称为“队列”或者在英语中称为“queue”。示出了如下的实施方式,在该实施方式中,再次假定事件设置有四个优先级中的一个,并且对于这些优先级1、2、3和4中的每一个,使用自己的事件列表31、32、33、34。这些列表本身于是不需要列出事件的优先级,因为优先级已经通过相应的列表本身预先给定。但是列表无论如何都以表格列出了具有相关的优先级的尚待处理的事件。列表例如可以在相应的事件旁边列出由列出的事件调用的程序部分,并且在必要时也可以保持在调用程序传递的参数。
为了避免误解,应当指出,动态地改变事件列表,方式是,由于运行,添加新的事件、特别是最近产生的事件,并且删除以前录入的事件、特别是已处理的事件。具体的表示于是相应地是快照(Momentaufnahme)。
如已经提到的,由事件触发的程序部分可以是IEC 61499的意义上的功能块。因此,在图3a的实施方式中,在相应的右侧列中示出的说明将是IEC 61499的相应的功能块的标识。对于具有优先级1的列表31,假定其仅保持事件E7,事件E7触发具有仅通过“A”表示的参数组的程序部分P2。用于优先级2的事件列表32相应地包含三个事件。对于事件E9,假定其触发程序部分P3,对于程序部分P3触发,不需要传输参数。假定用于优先级3的事件列表33是空的,因为目前没有优先级为3的事件等待处理。再次假定用于优先级4的事件列表34被几个事件占用。
现在,在所描述的流程控制方法中,系统控制器可以以第一事件列表31开始,对等待处理的事件进行处理。因此,在图3a的示例中,将首先使用用于优先级1的事件列表31中的事件E7来执行。当可能时,将事件E7分配给空闲的运算器进行处理。当这不可能时,如所描述的,将促使被占用的运算器上的低优先级的过程中断。当用于优先级1的事件列表31为空时,可以开始对用于优先级2的事件列表32中的事件的处理。与在用于优先级1的事件列表31中不同,在事件列表32中存在多个事件。于是要决定按照什么标准对这些事件进行处理。这里,可以使用诸如FIFO(先进先出)、LIFO(后进先出)或者Round Robin(轮询)的策略。当在处理过程中的某一时间点,事件列表31、32和33都为空时,可以开始事件列表34中的事件的处理。
图3b示出了事件列表的另一种设计。这里,对于所有优先级,建立了唯一的事件列表。因此,在该列表中也必须列出相应的事件的优先级,因为否则将丢失信息。然后,在进行处理时,从该列表中分别搜索优先级最高的事件,并且如所描述的进行处理。
根据图3b的事件列表设计可以与以下事实相关:运算器不是事先定义和安装的,而是在执行时间点安装的。
迄今为止,描述了按照事件和优先级控制的执行以及必要时程序部分的中断。这可以以相同的方式适用于按照事件和优先级控制的执行以及必要时数据传输的中断,数据传输在这方面也可以被理解为程序部分。
在本说明书中,执行环境可以是以特定方式通过参数配置的运算器。一个任务可以是在执行环境中运行或可执行的程序部分。运算器可以是具有相关硬件的处理器,或者一般地说,是被分配的物理资源,例如具有多任务能力的硬件的运算时间份额。其也可以是虚拟的运算资源,或者是在单个硬件上逻辑地组织的运算资源,这些资源本身分别在一个时间点执行一个任务。程序部分可以是IEC 61499意义上的功能块。运算器可以是IEC61499意义上的核。
图4a示例性地示出了控制程序以及其通过编程定义的程序部分和事件。正方形42定义了程序部分P、X、K、T、R、Y、L、U、F、M、O和N。它们可以是符合IEC 61499标准的功能块。箭头43表示事件,事件一个接一个地触发程序部分42。这里,对事件分配优先级Py,其被绘制在相应的箭头中,即左侧的箭头列中一个接一个的1、4、1、1,中间的箭头列中一个接一个的4、1、1、2,以及右侧的1。图4a在左侧示出了分别通过定义的事件产生的流程。
利用41定义了输入事件,其由控制程序触发,而不由程序本身发起。其通常是外部事件,例如导致特定的处理并且结果可能导致设备控制的传感器数据的到达。在图5a中再次假定优先级1具有最高的紧迫性,与此相对,优先级2、3和4具有依次下降的紧迫性。
在图4a中,应当注意到,这里考虑的控制程序仅能够部分地被触发和执行。例如,在图4a中,假定上面的行中的功能块P和R以及下面的行中的功能块T和U没有被触发,因此没有执行。根据图4a,触发事件仅针对功能块X和K发生,这里,为了进行说明,假定这或多或少是同时发生的。
图4b示出了与图4a对应的具有IEC 61499意义上的功能块的控制程序的图示。在上面的部分中示出了事件连接,但是没有优先级,其触发各个程序部分或者功能块的执行。
图5a至5c示出了图4a和4b中的程序的处理的动态流程。假定存在两个运算器,并且以四个不同的优先级进行处理。如已经提到的,这里,由于没有外部触发,因此不执行程序部分P、R、T和U。因此,没有示出程序部分P、R、T和U。
图5a示出了初始事件41到达之前的控制装置的状态。三角形表示潜在运行的任务,其中,由于两个运算器RW1和RW2可用,因此最多可以同时执行两个。所有任务都处于空闲或休眠模式。这里,假定任务是预先定义的,并且为每个优先级分别创建了两个任务。
图5a象征性地示出了图4a中的外部事件41到达之前的系统状态。整个系统处于静止状态,所有运算器都在空运行。所有队列此刻也是空的。如图4a所示,在外部事件41到达之后,系统开始处理程序部分X和K,并且其分别在结束时产生具有优先级4和1的事件,用于触发程序部分Y和L。与此对应,在程序部分X和K的处理结束时,第四事件列表34和第一事件列表31具有相应的条目,同时其它事件列表是空的。但是假定Y是一个长期运行的、以低优先级触发的程序部分。当已经处理了程序部分L时,Y仍在运行。
如已经提到的,也可以通过适当的步骤对到达的外部事件41分配优先级,或者可以假定为默认设置。这可以在运行控制器107中进行。
图5b示出了系统正忙于程序部分L和Y的处理的状态。在开始处理程序部分L和Y的时刻,从相应的事件列表中取出相应的事件,因此事件列表又是空的。程序部分L在结束时产生三个事件,分别用于触发程序部分F、M和O。前两个具有优先级1,最后一个具有优先级2。因此,于是在第一事件列表31中存在两个条目,在第二事件列表32中存在一个条目,并且其余事件列表为空。
图5b示出了程序部分X和K的处理结束之后的状态,在该状态下,在此期间,利用任务Py 1RW2执行程序部分L,并且利用任务Py 4RW1处理程序部分Y。因此,在程序部分L的处理开始之后,所有队列都是空的。然而,当程序部分L的处理结束时,产生了三个事件,其中两个用于触发程序部分F和M,并且被录入第一事件列表31中,一个被录入第二事件列表32中。于是存在两个具有最高优先级的事件,另一个事件具有次低的优先级2,并且具有最低优先级4的程序部分Y仍在执行。
图5c示出了,用于程序部分F和M的两个高优先级事件导致了它们的执行,方式是,在两个运算器RW1和RW2上处理程序部分F和M。为了实现这一点,以第二高的优先级调用的程序部分O,或者该优先级为2的事件,仍然留在等待循环中等待,这在图中通过Py2RW1指示。在Py4 RW1处仍在运行的程序部分Y被中断,以使得能够处理两个高优先级的程序部分F和M。这在图5c中示意性地示出。当在图5c的工作状态下对高优先级的程序部分F和M中的一个进行了处理时,接下来可以执行第二优先级的程序部分O。当之后有运算器空闲时,之后可以结束程序部分Y。
以这种方式,确保高优先级的程序部分能够可靠地执行,而不会被可能长时间运行的低优先级的过程意外阻断。
附图标记列表
11,12,21,24,52程序部分
13,14,15,23,25,53事件
31至35事件列表
51 外部事件
101 电路板
102 CPU、内核
103 CPU、内核
104 通信结构
105 通信输入
106 通信输出
107 运行控制器
110 功能块
111 输入事件
112 输出事件
113 输入数据
114 输出数据
115 事件连接
116 数据连接

Claims (19)

1.一种用于控制程序部分的流程的方法,具有以下步骤:
通过第一事件(E1)的发生促使在第一运算器(RW1)上执行第一程序部分(P1),其中,给第一事件(E1)和/或第一程序部分(P1)分配了第一优先级(Py1),以及
通过第二事件(E2)的发生促使第一程序部分(P1)在第一运算器(RW1)上的执行中断,然后在第一运算器(RW1)上执行第二程序部分(P2),其中,给第二事件(E2)和/或第二程序部分(P2)分配了第二优先级(Py2),
其中,第二优先级(Py2)与第一优先级(Py1)具有预定的并且特别是用户定义的关系,其中,第二优先级(Py2)高于第一优先级(Py1),
其中,第一和/或第二程序部分(P1,P2)是IEC 61499意义上的功能块或其一部分,或由其促使的数据传输。
2.根据上述权利要求中任一项所述的方法,其中,一个或多个程序部分是在存储器编程的控制器上运行的设备或设施控制程序的部分。
3.根据上述权利要求中任一项所述的方法,其中,使用至少一个事件列表(31-35),所述事件列表存储了与发生的事件相应地相关联的优先级,并且标明尚待处理的程序部分,
其中,能够为多个优先级分别引导自身的事件列表(31-34),所述事件列表分别存储相关联的优先级的发生的事件,并标明尚待处理的程序部分,其中,将第二事件(E2)录入与其优先级(Py2)相对应的事件列表(31-34)中,然后,如果在事件列表中没有更高优先级的条目,则根据自身优先级的事件列表(31-34)中的条目的处理规则,必要时用于中断第一程序部分(P1)在第一运算器(RW1)上的执行。
4.根据上述权利要求中任一项所述的方法,其中,使用多个任务,所述任务已事先创建为相应的执行环境,优选地使得为每个优先级值创建一个或多个任务。
5.根据上述权利要求中任一项所述的方法,其中,使用任务,所述任务优选地响应于所发生的事件,实时创建为相应的执行环境,并且优选地在程序部分的处理结束时,实时删除所述任务。
6.根据上述权利要求中任一项所述的方法,其中,第二事件(E2)通过在另外的运算器(RWx)上运行的另外的程序部分(Px)产生。
7.根据上述权利要求中任一项所述的方法,具有以下步骤:
-获得第一运算器(RW1)的占用和/或利用的监测结果,特别是从运行系统功能中获得,并且
-根据监测结果,当第二事件(E2)发生时,促使第二程序部分(P2)在第一运算器(RW1)上的中断和执行。
8.根据权利要求5所述的方法,其中,获得与第一运算器(RW1)和一个或多个另外的运算器(RW2,...,RWn)的占用和/或利用有关的监测结果,并且根据监测结果,当第二事件(E2)发生时,促使第二程序部分(P2)在第一运算器(RW1)上的中断和执行。
9.根据权利要求8所述的方法,其中,根据监测结果决定将第二程序部分(P2)的执行分配给被监测的运算器(RW)之一。
10.根据权利要求8或9所述的方法,其中,关于将第二程序部分(P2)的执行分配给被监测的运算器(RW)之一,也根据被监测的运算器(RW)的特性来决定。
11.根据上述权利要求中任一项所述的方法,其中,程序部分(P1,P2)包含可区分的部分,并且第一程序部分(P1)的执行在处理第一程序部分(P1)中所包含的部分(Ti)之后和在开始处理第一程序部分(P1)中的后续部分(Ti+1)之前中断,或者在处理这样的部分(Ti)期间中断。
12.根据上述权利要求中任一项所述的方法,其中,程序部分根据按照IEC 61499的执行控制计划被调用和处理,其中,来自执行控制计划的程序部分的调用能够是导致第一程序部分执行的第一事件和/或导致第二程序部分执行的第二事件,能够给所述事件分配或已经分配了优先级,并且所述事件能够覆盖或改变执行控制计划的规定。
13.根据上述权利要求中任一项所述的方法,其中,第一程序部分(P1)的执行的中断包括备份存储当前相关的设备状态,特别是存储运算器、寄存器、数据存储器、程序存储器、程序指针、文件的值,并且其中,先前中断的程序部分(P1)的继续包括为接管继续的运算器(RW)加载在中断期间备份存储的设备状态。
14.根据上述权利要求中任一项所述的方法,其中,程序部分优选地与优先级分配无关地被证实为不可中断或不可同时执行多次,然后在出现其他条件时也不中断或同时执行多次。
15.一种用于执行根据上述权利要求中任一项所述的方法的根据IEC 61499的装置,所述装置能够是设备控制器或设施控制器和/或存储器编程的控制器,并且能够具有至少一个传感器或数据输入和至少一个执行器或数据输出。
16.一种编程方法,其中,提供符合IEC 61499的编程接口,所述编程接口被设计为用于对根据上述权利要求中任一项所述的方法进行编程。
17.根据权利要求16所述的编程方法,其中,所述编程接口是或具有图形用户界面,所述图形用户界面被设计为用于输入编程,所述编程是对在第一运算器上的第一程序部分的执行的优先级引起的中断进行的。
18.一种用于执行根据权利要求16或17所述的编程方法的编程装置。
19.一种用于符合IEC 61499的程序的执行装置,具有
至少两个运算器(RW1 102,RW2 103),用于并行地执行由标有优先级的事件触发的程序部分,
运行控制器(107),所述运行控制器基于与触发程序部分的事件相关联的优先级,来控制程序部分在运算器(RW1 102,RW2 103)上的执行,
其中,所述运行控制器(107)被设计为,中断第一程序部分在运算器上的执行,并在触发第二程序部分执行的事件比触发第一程序部分执行的事件具有更高的优先级时,促使第二程序部分在所述运算器上执行。
CN202310716543.2A 2022-06-15 2023-06-15 控制程序部分的流程的方法和装置、编程方法、编程装置 Pending CN117234678A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP22305874.4A EP4293437A1 (de) 2022-06-15 2022-06-15 Verfahren und vorrichtung zum steuern des ablaufs von programmteilen, programmierverfahren, programmiervorrichtung
EP22305874.4 2022-06-15

Publications (1)

Publication Number Publication Date
CN117234678A true CN117234678A (zh) 2023-12-15

Family

ID=82308497

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310716543.2A Pending CN117234678A (zh) 2022-06-15 2023-06-15 控制程序部分的流程的方法和装置、编程方法、编程装置

Country Status (3)

Country Link
US (1) US20230409001A1 (zh)
EP (1) EP4293437A1 (zh)
CN (1) CN117234678A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19500957A1 (de) * 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
EP4012516A1 (de) * 2020-12-10 2022-06-15 Schneider Electric Industries SAS Ausführungsumgebung für eine speicherprogrammierbare steuerung

Also Published As

Publication number Publication date
US20230409001A1 (en) 2023-12-21
EP4293437A1 (de) 2023-12-20

Similar Documents

Publication Publication Date Title
US7487503B2 (en) Scheduling threads in a multiprocessor computer
US6892261B2 (en) Multiple operating system control method
US8387052B2 (en) Adaptive partitioning for operating system
EP1836569B1 (en) Interrupt control function adapted to control the execution of interrupt requests of differing criticality
US5526521A (en) Method and system for process scheduling from within a current context and switching contexts only when the next scheduled context is different
US10248463B2 (en) Apparatus and method for managing a plurality of threads in an operating system
US9361156B2 (en) Adaptive partitioning for operating system
KR20040068600A (ko) 운영 시스템 기능 실행 방법 및 시스템, 전자 기기
EP2677377A1 (en) Safety control device and safety control method
CN111897637A (zh) 作业调度方法、装置、主机及存储介质
EP1892625B1 (en) Finer grained operating system scheduling
CN114461365A (zh) 一种进程调度处理方法、装置、设备和存储介质
US20180321973A1 (en) Method and apparatus for scheduling tasks to a cyclic schedule
JP3644042B2 (ja) マルチタスク処理装置
CN117234678A (zh) 控制程序部分的流程的方法和装置、编程方法、编程装置
US8078907B2 (en) Failsoft system for multiple CPU system
CN114035926A (zh) 应用线程调度方法、装置、存储介质及电子设备
JP7188472B2 (ja) コンピュータ、スケジューリング方法、及び、プログラム
Burgess et al. BED: a multithreaded kernel for embedded systems
JP2021060923A (ja) 車両の制御装置
Schaffer et al. The joy of scheduling
JPH05224961A (ja) タスクの時間待ち処理方式
JPH0460842A (ja) 計算機システム
Rajput et al. Scheduling Algorithms in Operating Systems
JPH04313124A (ja) タスク実行制御方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication