EP3861440A1 - Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung - Google Patents

Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung

Info

Publication number
EP3861440A1
EP3861440A1 EP19786777.3A EP19786777A EP3861440A1 EP 3861440 A1 EP3861440 A1 EP 3861440A1 EP 19786777 A EP19786777 A EP 19786777A EP 3861440 A1 EP3861440 A1 EP 3861440A1
Authority
EP
European Patent Office
Prior art keywords
programs
parallel processing
priority level
priority
program
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
EP19786777.3A
Other languages
English (en)
French (fr)
Inventor
Robin Vogt
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.)
Beckhoff Automation GmbH and Co KG
Original Assignee
Beckhoff Automation GmbH and Co KG
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 Beckhoff Automation GmbH and Co KG filed Critical Beckhoff Automation GmbH and Co KG
Publication of EP3861440A1 publication Critical patent/EP3861440A1/de
Pending legal-status Critical Current

Links

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • 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
    • 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
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Definitions

  • the present invention relates to a method for data processing on a programmable logic controller (PLC).
  • PLC programmable logic controller
  • the invention further relates to a programmable logic controller that is used in particular to regulate or control a machine or system.
  • PLC programmable logic controllers
  • the PLC controls or regulates the actuators and sensors of the machine or system via a communication interface.
  • This can be realized, for example, as a fieldbus system, and the actuators and sensors of the machine or system can be networked via the fieldbus system.
  • the PLC By reading out the measurement data from the sensors and / or the current actual data from the actuators, which are connected to the inputs of the programmable logic controller, the PLC receives information about the status of the machine or system.
  • the actuators are connected to the outputs of the programmable logic controller and enable the machine or system to be controlled.
  • the PLC For dynamic control of the actuators, the PLC generates the output data for the actuators on the basis of the actual data and / or on the basis of the measurement data of the sensors, which data can be individual values or groups of values.
  • the actuators can also be controlled on the basis of specifications, for example using motion profiles.
  • the control task of the PLC specifies which output data generated by the PLC, depending on the corresponding input data, are fed to the actuators.
  • the data is usually processed cyclically by the PLC. lisch and comprises three steps: providing current input data (for example, actual data of the actuators and / or measurement data of the sensors), processing the input data into output data, and outputting the output data for motion control (for example target positions, etc.).
  • the program execution of the PLC is specified, for example, in the IEC 61131-3 standard.
  • the PLC has a control task and this usually consists of one or more programs to be executed cyclically in general with tasks, the so-called "tasks".
  • the programmable logic controller has only a single processor core for several independent programs with tasks
  • the various program cycle times in the PLC can be, for example, in a range from 100 ms to 20 ms, or in the case of complex tasks in a range from 50 ms to 100 ms. Due to the different program cycle times, it is important to prevent programs with tasks with a longer cycle time from starting programs with tasks a shorter cycle time so that they can no longer meet their deadlines. Often this can only be achieved if the execution of such a slow program is interrupted and continued later.
  • a predetermined priority level is usually assigned to each program with corresponding tasks. This can be determined from the deadline and / or the dependencies of the respective programs on the other programs if the programs are dependent, for example, on the results of the other programs.
  • the priority level can also correspond to an integer value.
  • the PLC can divide programs with corresponding tasks over several processor cores or processors in order to reduce the total processing time of the programs with the corresponding tasks by at least partially parallel execution of the corresponding tasks.
  • a so-called computing throughput of the control task can result from a time interruption of the programs, a number of interruptions of the programs or a computing time of the respective programs.
  • the computing throughput of the control tasks can depend on a utilization of the processor cores. If the programs and tasks across multiple processor cores be divided, so it can or hear due to the assigned priority levels V that tasks that whoever the associated other tasks that level with a higher priority in the appropriate program being executed in parallel on the pa rallel working processor cores are interrupted.
  • Interruptions of tasks increase the so-called administrative effort and can vary in time.
  • the administrative burden includes the activities that are required to interrupt the execution of the tasks in the programs.
  • the activities can, for example, involve transferring and saving intermediate results of the interrupted tasks - otherwise the tasks of the pro grams are processed again.
  • the computing throughput can decrease with a high administrative outlay, since no calculations are generally carried out during the interruption period of the programs.
  • the computing time of the programs can have an influence on the computing throughput, since programs with a short program cycle time can possibly be executed purely sequentially without parallelization faster than on the processor cores working in parallel. This is because the programs on the processor cores working in parallel may be interrupted by other programs with higher priorities, which can increase the total execution time of the programs.
  • processor cores are not fully utilized, for example by executing the programs sequentially instead of in parallel by the processor cores provided for this purpose, it is possible that the computing power of the processor cores provided for the parallelization is not fully utilized. This can also reduce the computing throughput of the control task.
  • the object of the present invention is to provide a method for optimizing data processing which uses the available resources in the best possible way. It is a further object of the invention to provide an improved programmable logic controller.
  • a method for optimizing data processing on a programmable logic controller comprising at least one parallel processor core.
  • the PLC also has a control task that includes several executable programs. We at least two programs of the control task each have at least one parallel processing section with one Work package, and the work package comprises several subtasks.
  • the parallel processing sections in the respective programs are assigned a priority with a predetermined priority level, the respective priority levels being inserted into a data structure as soon as an execution of the program has reached the parallel processing section.
  • the at least one parallel processor core checks whether there are entries in the data structure and if there are entries, the at least one parallel processor core processes subtasks from the work package of the program, the priority level of which is the first position of the entries in the data structure.
  • an expected computing throughput of the control task is continuously evaluated and at least one of the priority levels of the parallel processing sections of the respective programs is dynamically adjusted if the computing throughput of the control task increases as a result.
  • a parallel processor core refers to a processor core of the PLC that is intended for the parallel processing of subtasks.
  • the PLC can have further processor cores, so-called main processor cores.
  • the main processor cores can each execute one or more programs of the control task.
  • the multiple programs of the control task can have programs that are executed purely sequentially, wherein at least two programs of the control task comprise at least one parallel processing section. These parallel processing sections of the programs can be executed with the support of the parallel processor cores.
  • the arithmetic throughput of the control task can be evaluated via the time duration of the interruption and the number of interruptions in the parallel processing sections of the programs. Because during the interruption of the processing of the subtasks of the parallel processing sections of the programs, no calculations are carried out, but instead Intermediate results are transferred and saved, the entries of the priority levels in the data structure are re-sorted, the at least one parallel processor core must only request free subtasks for processing before processing the subtasks of the work package of another program with a parallel processing section or when resuming processing interrupted subtasks first access the intermediate results memory in order to use the already calculated intermediate results as a starting point for further processing of the interrupted subtasks.
  • the duration of the interruption and the number of interruptions in the programs with parallel processing sections have an effect on the computing throughput of the control task, since they extend the overall execution time of the programs. Accordingly, a maximum computing throughput of the control task could be achieved without interruptions in the programs with parallel processing sections.
  • the number of interruptions of the programs with parallel processing sections can be reduced by means of the dynamic adjustment of the value of the at least one priority level of the parallel processing section of the programs, since the value of the at least one priority level can be specifically adapted to the respective situation in order to reduce the ver reduce the administrative effort of the control task. If subtasks of a work package are currently being executed in parallel and interrupted by other subtasks of another work package with a higher priority level of the corresponding parallel processing section of the respective program, the value of the at least one priority level of the subtasks can be changed directly within the program cycle by a further interruption to avoid the subtasks of the corresponding parallel processing sections and additional administrative effort.
  • the adjustment of the value of the at least one priority level can also be done for one new program cycle in which the respective program is executed again from the beginning.
  • an additional condition for example in the form that the value of the at least one priority level for the new program cycle must correspond to at least half the value of the predetermined at least one priority level, ensure that the value of the at least one priority level of the programs is not inadvertently set to a minimum value.
  • the minimum value of the at least one priority level of the parallel processing section of the programs means that the respective program is executed sequentially on the corresponding main processor core.
  • the computing power of the at least one parallel processor core may not be fully utilized, the unused computing power reducing the computing throughput of the control task. Accordingly, the utilization of the processor cores can advantageously be taken into account via the mentioned additional condition of the lower limit for adjusting the value of the at least one priority level of the parallel processing section of the programs.
  • the computing throughput of the control task can be evaluated using the computing time of the parallel processing sections.
  • Programs with subtasks that have a short program cycle time for example 1 ms, can certainly be distributed in the parallel processing section of the program to the at least one parallel processor core for parallel processing of the subtasks.
  • this can possibly result in the parallel processing section of the program being interrupted with the respective subtasks for another parallel processing section with a higher priority level.
  • the parallelization of the program with a short program cycle time can lead to the administration effort is increased and the computing time for the parallel machining section thereby increases.
  • the total execution time of the program can be slower due to the parallelization than when the program is executed purely sequentially and without interruption.
  • the sequential computing time of the program with a short program cycle time may be shorter than the computing time of the parallel processing section, it is advantageous to calculate the computing time required for the execution of the program when evaluating the computing throughput (in addition to the time duration and Number of interruptions in the parallel processing sections and the utilization of the processor cores) must also be taken into account in order to improve the computing throughput of the control task.
  • the dynamic adjustment of the value of the at least one priority level of the parallel processing section of the programs takes place during the program runtime if the computing throughput of the control task can thereby be increased. Without the dynamic adjustment of the value of the at least one priority level of the parallel processing section in the corresponding programs, it can otherwise happen that the total execution time of the respective programs increases due to the interruption duration and the associated additional administrative effort and the programs of the control task are generally slower, than for the case in which the tasks of the programs are processed purely sequentially in the assigned programs without interruption.
  • the at least one priority level of the parallel processing sections of the respective programs is adapted when the processing of the subtasks of the program is interrupted.
  • the computing throughput of the control task depends on the interruption of the processing of the subtasks, since no subtasks of the parallel processing sections of the programs are processed during this time, but intermediate results of the calculations of the subtasks are transferred and saved if necessary.
  • each interruption can differ in time. The interruption period can consequently extend the total execution time of the programs, since the interruption period must be taken into account in addition to the computing time of the programs.
  • a further embodiment provides that the at least one priority level of the parallel processing sections of the respective programs is adapted when the subtasks of the program are interrupted on the at least one parallel processor core due to other subtasks of another program with a higher priority level of the parallel processing section. If the subtasks of a work package are interrupted on the at least one parallel processor core due to other subtasks of another work package that is linked to a higher value of the priority level of the parallel processing section in the assigned program, then the value of we can at least one priority level of the interrupted subtask be changed directly within the program cycle in order to generate as little administrative effort as possible for the remaining subtasks.
  • the computing throughput of the control task results from the duration and the number of interruptions of the programs with tasks, i.e. the administrative effort.
  • the computing throughput can be increased by reducing the administrative effort, that is to say the number of program interruptions. It is also possible to increase the computing throughput by taking the computing time of the respective programs into account. Can a program with subtasks with a short program cycle time be purely sequentially faster, rer sequential computing time can be carried out without interruption, as is possible with interruptions in the parallel processing section of the program, the computing throughput of the control task can also be increased by taking into account the corresponding computing time in the program.
  • the computing throughput of the control task can also be increased by fully utilizing the computing power of the at least one parallel processor core and ensuring that partial tasks of the parallel processing section of the respective program to be processed in parallel are processed by the at least one parallel processor core, with programs to be executed sequentially on the respective main processor core are executed.
  • An increased computing throughput can also help to reduce the total execution time of the programs and subtasks, since this gives the control task more computing time.
  • an additional condition in particular a real-time condition of the control task, is taken into account when adapting the at least one priority level of the parallel processing sections of the respective programs.
  • the dynamic adjustment of the value of the at least one priority level of the parallel processing section of the respective programs during the program runtime can further guarantee real-time capability of the automation system.
  • the deadlines of the programs can be met in any case by adjusting the value of the priority level.
  • the above-mentioned possible condition of the lower limit for the value of the at least one priority level can be taken into account.
  • the at least one priority level of the parallel processing sections of the respective programs is reduced by a factor if the partial Tasks of the program are interrupted due to other subtasks of another program with a higher priority level of the parallel processing section on the at least one parallel processor core.
  • a reduction in the value of the at least one priority level of the parallel processing sections of the respective programs by a factor can help to reduce the administrative effort. This is because the value of the at least one priority level of the respective parallel processing section in the corresponding program, which is connected to the subtasks that have been interrupted, can be reduced directly within the program cycle to avoid a further interruption of the parallel processing sections with the subtasks.
  • the value of the at least one priority level of the parallel processing section of the program of the interrupted subtasks can be increased immediately after the processing of the subtasks has been interrupted.
  • the increase in the value of the at least one priority level of the parallel processing section of the programs can also contribute to this. ensure that the assigned subtasks are no longer interrupted by the other parallel processing section of the further program.
  • a further embodiment provides that the at least one priority level of the parallel processing sections of the respective programs is set to a minimum value if the subtasks of the programs are sequential in the corresponding programs are executable.
  • the value of the at least one priority level of the parallel processing sections of the several programs of the control task is particularly conceivable if the subtasks do not require a mandatory parallel execution, but can also be processed sequentially in the assigned program.
  • the at least one priority level of the parallel processing sections of the respective programs is reset to the predetermined value at the beginning of a new program cycle.
  • the advantage of adjusting the value of the priority level of the parallel processing sections of the respective programs is that this can be done temporarily.
  • the dynamic adjustment of the value of the at least one priority level can take place directly within the program runtime and does not have to take place in the same way for the entire runtime of the program.
  • the value of the priority level can be reset to the specified value for a new program cycle, for example, and can be changed again during the program cycle and / or for a further program cycle.
  • a further embodiment provides that the at least one priority level of the parallel processing sections of the respective programs is increased at the beginning of a new program cycle if the subtasks were previously carried out sequentially in the assigned programs.
  • the value of the at least one priority level can also be increased.
  • the value of the at least one priority level can be adjusted at the beginning of the new program cycle. This configuration is conceivable if the subtasks with a corresponding priority level in a previous program cycle are purely sequential in the assigned one Program were processed.
  • a programmable logic controller includes a communication interface, for reading sensor data and for outputting actuator data. Furthermore, the PLC includes a data processing device which comprises at least one parallel processor core for executing a control task in order to generate actuator data from the sensor data, and a control device which has a data structure memory for storing a data structure with priority levels and a priority manager for managing the priority levels in the data structure.
  • the control device comprises an intermediate result memory, on which intermediate results of calculations are saved.
  • the control task further comprises a plurality of executable programs, at least two programs of the control task each having at least one parallel processing section with a work package, and the work package comprising several sub-tasks.
  • a priority with the specified priority level is assigned to the parallel processing sections in the respective programs.
  • the priority manager is trained to insert the respective priority levels into the data structure in the data structure memory as soon as execution of the program has reached the parallel processing section and thereby to put the entry with the highest priority level at the first position of the entries in the data structure.
  • the at least one parallel processor core is designed to check the data structure in the data structure memory for entries of the priority levels and, if entries are present, to process subtasks from the work package of the corresponding program, the priority level of which is the entry in the data structure.
  • the control device is designed to continuously evaluate an expected throughput of the control task during a program cycle.
  • the priority manager is designed to dynamically adapt at least one of the priority levels of the parallel processing sections of the respective programs if the throughput of the control task increases as a result.
  • Programmable logic controllers often form the basis of an automation system and currently have complex computing and control functions that require high-performance hardware and efficient software for implementation.
  • the high computing power can be based on the simultaneous use of several processor cores in order to operate the system efficiently and to utilize the available resources in the best possible way.
  • the PLC designed in this way enables the deadlines of the programs to be met and can also provide real-time data processing.
  • the process for optimizing the data processing on a PLC can represent such efficient software for the PLC in order to make the best possible use of the computing power of the existing processor cores, in that the programs of the control task can be executed distributed over several processor cores.
  • the control device of the PLC is used to determine and evaluate the expected throughput of the control task.
  • the control device can also trigger the priority manager of the PLC to adjust the value of the at least one priority level of the parallel processing section of the respective program if the computing throughput increases in this way due to the possible adjustment of the value of the at least one priority level of the parallel processing sections of the programs .
  • the control device of the PLC can decide with a short program cycle time that the subtasks of the program are to be carried out purely sequentially, instead of in the parallel processing section of the program, which may be connected with interruptions in the calculations of the subtasks . Otherwise, the total execution time of the program may be slower due to the parallelization than if the subtasks of the program are processed sequentially without interruption.
  • control device when evaluating the computing throughput, can take into account the utilization of the computing power of the at least one parallel processor core and can ensure that programs to be executed in parallel that are not to be executed sequentially on the respective main processor core are executed by the at least one parallel processor core.
  • the control device of the PLC informs the priority manager that it has the value of the at least one priority level of the parallel processing. to adjust the program sections accordingly, for example increase if it was previously minimal.
  • the programmable logic controller with the process for optimizing data processing can be used flexibly and universally for a wide variety of automation system tasks.
  • the PLC can generate data from the sensor data that can be relevant for quality assurance / control of the automation system. If the sensor is implemented in the form of a camera, for example, the quality of manufactured components can be assessed using this camera. In this case, the PLC does not generate actuator data as results, but evaluates the quality of the components as faulty or good, for example.
  • the PLC can be implemented with the method for optimizing data processing in a transport system in which it is necessary to be able to control and position transport elements on modular guide rails with motor modules.
  • the transport elements can be positioned individually, it is possible to parallelize the calculations for the transport elements and to execute them on several processor cores.
  • the PLC with the above-mentioned method can contribute to an efficient use of the computing power of the processor cores, use the calculations to provide high reliability for the positioning of the transport elements and, due to the flexible use of the PLC, causes low implementation costs.
  • the priority manager is designed to adapt the at least one priority level of the parallel processing sections of the respective programs when the processing of the subtasks of the program is interrupted.
  • the priority manager can adjust the value of the at least one priority level directly when interrupting the processing of the subtasks of the program within the program cycle by one Avoid further interruption of the program for the remaining subtasks.
  • the priority manager is able to adjust the value of the at least one priority level of the parallel processing section of the program for the next program cycle.
  • the priority manager is designed to adapt the at least one priority level of the parallel processing sections of the respective programs if the subtasks are interrupted on the at least one parallel processor core due to other subtasks of another program with a higher priority level.
  • the priority manager can adjust the value of the at least one priority level of the parallel processing section of the corresponding program for the interrupted subtasks on the at least one parallel processor core in order to prevent further interruption of the subtasks on the at least one parallel processor core and in this connection for as little administrative effort as possible to take care of the remaining subtasks. Because with each interruption of the subtasks, the intermediate results calculated by the at least one parallel processor core must be transferred and saved on the intermediate result memory.
  • the priority manager With each interruption, the priority manager also re-sorts the entries of the priority levels in the data structure.
  • the at least one parallel processor core must access the intermediate result memory again and use the saved intermediate results as a starting point for the further processing of the subtasks. For this reason, the subtasks should be interrupted as rarely as possible in order to generate a higher computing throughput of the control task and to reduce the total execution time of the programs and subtasks in this way.
  • a further embodiment provides that the priorities are designed to be administrators, when adapting the at least a priority level of the parallel processing sections of the respective programs to take into account an additional condition, in particular a real-time condition of the control task.
  • the priority manager makes the coordination as well as the dynamic adaptation of the values of the entries of the priority levels in the data structure and the communication with the at least one parallel processor core simple. Furthermore, the real-time capability of the automation system can be ensured with the priority manager, since the priority manager adapts the values of the priority levels of the respective parallel processing sections of the corresponding programs in such a way that the deadlines of the programs are adhered to in any case.
  • the priority manager adjusts the value of at least one priority level if the computing throughput of the control task thereby increases.
  • the control device can continuously evaluate the computing throughput of the control task during a program cycle and trigger the priority manager on the basis of the evaluation of the computing throughput to adjust the value of the at least one priority level of the parallel processing section in the respective program.
  • a further embodiment provides that the priority manager is designed to reduce the value of the at least one priority level of the parallel processing sections of the respective programs by a factor if the subtasks of the program are based on other subtasks of another program with a higher priority level are interrupted on the at least one parallel processor core.
  • the priority manager can be designed to reduce the value of the at least one priority level of the parallel processing section of the respective program by a factor. For example, the value of the at least one priority level of the parallel processing section of the respective program each time the subtasks of the corresponding program are interrupted directly during the program cycle. lus be reduced by half. Alternatively, an adjustment of the value of the at least one priority level of the parallel processing section of the respective program by a smaller factor is also conceivable.
  • the value of the at least one priority level of the parallel processing section of the corresponding program can be adjusted in a different manner for each program cycle.
  • the adjusted value of the at least one priority level of the parallel processing section of the respective program need not be maintained for every program cycle.
  • the priority manager can adjust the value of the at least one priority level of the parallel processing section of the corresponding program after evaluating the computing throughput that is carried out by the control device. Since the control device continuously evaluates the computing throughput during a program cycle, the priority manager can dynamically adjust the value of the priority level within each program cycle and for each new program cycle.
  • the priority manager is designed to set the at least one priority level of the parallel processing sections of the respective programs to a minimum value if the subtasks of the programs can be executed sequentially in the corresponding programs.
  • the priority manager is able to set the value of the at least one priority level of the parallel processing section of the corresponding program to a minimum value. If the priority manager sets the value of the at least one priority level of the parallel processing section of the respective program to the lowest possible value, the associated subtasks are processed sequentially in the assigned program.
  • the minimum value of the priority level means that the subtasks do not require mandatory parallel processing in order to be able to meet the deadlines of the programs, even if the at least one parallel processor core is currently no other sub-tasks are processed, but the sub-tasks can also be processed sequentially from the assigned program.
  • This embodiment is also conceivable in the event of frequent interruption of the calculations of the subtasks in the parallel processing sections, since the priority manager can reduce the value of the priority level of the parallel processing section of the program to such an extent that the subtasks after the interruption of the calculations on the at least one The parallel processor can then be processed in the assigned program. In this way it is also possible to reduce the administrative burden.
  • the value of the at least one priority level of the parallel processing sections of the programs is set in a targeted manner by the priority manager to the minimum value, so that the subtasks of the programs are processed sequentially in the assigned program, since they do not require any parallelization.
  • the value of the at least one priority level of the parallel processing sections of the programs was reduced by the priority manager directly after the interruption of the processing of the subtasks of the parallel processing sections of the programs during the program cycle. Irrespective of this, in such a case a further reduction in the value of the at least one priority level of the parallel processing section of the programs can be advantageous for a new program cycle if the processing of the subtasks of the parallel processing sections of the programs was interrupted in the previous program cycle.
  • an additional condition can be implemented, for example, in the form that the value of the at least one priority level for the new program cycle is at least half the value of the predetermined at least a priority level, ensure that the value of the at least one priority level of the programs is not inadvertently set to the minimum value.
  • a further embodiment provides that the priorities are designed to be administrator to reset the at least one priority level of the parallel processing sections of the respective programs to the predetermined value at the beginning of a new program cycle.
  • the priority manager can dynamically adjust the value of the at least one priority level of the parallel processing section of the corresponding program with each program cycle. In this context, it is therefore possible for the priority manager to reset the value of the at least one priority level of the parallel processing section of the respective program for the new program cycle to the predetermined value of the priority level.
  • the adjustment of the value of the at least one priority level of the parallel processing section of the respective program by the priority manager has the advantage that it can be done temporarily and can be undone again.
  • the priority manager is designed to increase the at least one priority level of the parallel processing sections of the respective programs at the start of a new program cycle if the subtasks of the programs were previously carried out sequentially in the assigned programs.
  • the priority manager is also able to increase the value of the at least one priority level of the parallel processing section of the respective program of the control task, so that the associated subtasks can be processed before other subtasks of another work package and program on the at least one parallel processor core. This form of execution is conceivable if the subtasks were previously processed sequentially in the assigned program.
  • a further embodiment provides that the priority manager is designed to change the entry of the priority level in the data structure in the data structure memory in accordance with the adaptation of the at least one priority level. Furthermore, the priority manager is designed to inform the at least one parallel processor core of the change in the entry of the priority level in the data structure.
  • the priority manager takes on the one hand the dynamic adjustment of the value of the at least one priority level of the corresponding parallel processing section of the respective program and on the other hand can also inform the at least one parallel processor core about the adjustment of the value of the at least one priority level in the data structure.
  • a further embodiment provides that the priority manager is designed to be executable on several programs of the control task.
  • the priority manager which is part of the control device, can for example comprise several modules (for example software modules), wherein the individual modules (for example software modules) of the priority manager can be executed in the several programs of the control task. It is also conceivable that the priority manager has only a single central module (for example a software module) that is executed in one of the several control task programs. It is also conceivable to V to realize erwalter as a standalone program or as one or more external hardware modules.
  • FIG. 1 is a schematic representation of an embodiment of an automation system according to the invention with a storable programmable controller (PLC).
  • PLC storable programmable controller
  • FIG. 2 shows a diagram for creating work packages with subtasks and managing priority levels within the PLC according to FIG. 1;
  • FIGS. 1 and 2 shows a diagram of a method for optimizing data processing on the PLC according to FIGS. 1 and 2;
  • FIG. 4 shows a flow chart for the dynamic adaptation of a priority level of a parallel processing section of a program according to FIG. 3.
  • Programmable logic controllers often form the basis of an automation system and are used to control or regulate a system or machine.
  • the PLC or the system or the machine is controlled via sensors and actuators.
  • the sensors and actuators can be networked with the machine or the system via a communication interface, the PLC using this communication interface to interact with the sensors and actuators.
  • the data processing of the PLC is mostly cyclical and requires the PLC, more precisely the control task, that the deadlines are strictly adhered to. It should not come or V that at the time at which the output data is needed for the actuators, the processing of the input data is still ongoing in this regard, for example.
  • the control task must therefore be able to guarantee the real-time capability of the automation system.
  • the control task of the PLC is usually composed of one or more programs to be executed cyclically with tasks, the "tasks". Because many PLC processors with several processor cores, which can be implemented as main and parallel processor cores, for example, and / or several pro cessors, the PLC can split the programs with tasks (tasks) over several processor cores and / or several processors in order to reduce the total processing time of the programs with tasks and to ensure that the deadlines of the programs are met Processor cores (main processor cores and parallel processor cores) processed in parallel, so it makes sense to to be able to classify the tasks of the programs for the processing of a given priority level accordingly. For this reason, a predetermined priority level is usually assigned to each program with corresponding tasks. This can be determined from the deadline and / or the dependencies of the respective programs on the other programs if the programs are dependent, for example, on the results of the other programs.
  • the priority level of the corresponding program with tasks is organized by a priority manager in a data structure.
  • the priority manager stores the entry of the priority level in the data structure. If there is no further entry of a priority level in the data structure, the priority manager places the above-mentioned priority level in the first position in the data structure.
  • the priority manager can also be designed to inform the processor cores operating in parallel when the sequence of the entries of the priority levels in the data structure changes. For example, the order can change when a new entry of a priority level is added to the data structure, the priority level then being able to have a higher value than the priority level of the previous entry.
  • the parallel processor cores can interrupt the processing of the current tasks of the corresponding program and begin processing the tasks that correspond to a higher priority level of the corresponding program in order to meet its deadlines.
  • the tasks of a corresponding program can be divided into several work packages with subtasks.
  • An expected computing throughput of the control task is continuously evaluated during a program cycle. On the basis of this evaluation, it can be decided that at least one of the priority levels of the parallel processing section of the respective program of the control task is dynamically is fitted if the computing throughput of the control task increases due to the adjustment of the value of the at least one priority level of the parallel processing section.
  • the expected computing throughput of the control task depends on a number of interruptions in the parallel processing sections of the programs, since the number of interruptions in the parallel processing sections of the programs results in an administrative effort.
  • the administrative effort describes the activities that are required when interrupting the processing of the subtasks in the parallel processing sections in the programs of the control task, such as transferring and saving intermediate results. Frequent interruptions in the processing of the parallel processing sections therefore lead to higher administrative effort.
  • the time interruption of the programs is also relevant for the computing throughput, since during the time duration of the interruption of the processing of the subtasks of the parallel processing sections of the programs, no calculations were carried out, but rather the activities described above were carried out.
  • the period of interruption therefore extends the execution time of the program, since it has an additive effect on the actual computing time of the program, and this is generally predetermined.
  • the duration of the interruption in interrupting the calculations of the programs with parallel processing sections can vary in time. The goal is therefore to keep the administrative effort as low as possible and to dynamically adjust the value of the at least one priority level in order to reduce the frequency of interruptions in the calculations of the programs and thus increase the computing throughput.
  • the expected computing throughput of the control task depends on the computing power used by the at least one parallel processor core.
  • the programs executed purely sequentially on the corresponding main processor cores for example in that they contain the minimum value of at least one priority level of parallel processing sections of the programs were assigned, it may happen that the at least one parallel processor core is currently not carrying out any active calculations or is only active to a limited extent. This reduces the computing throughput of the control task, since the computing power of the at least one parallel processor core is not used or is not fully utilized.
  • the value of the at least one priority level of the parallel processing sections of the programs can be adapted, for example increased, so that the programs are executed in parallel on the at least one parallel processor core and the computing power of the existing processor cores is used in the best possible way.
  • the computing time of the parallel processing sections of the programs can be taken into account when evaluating the expected computing throughput of the control task. Because programs with subtasks with a short program cycle time can possibly be executed purely sequentially without parallelization faster than in the respective parallel processing section in the program.
  • the parallel processing section of the respective program can be interrupted for another parallel processing section of another program with a higher assigned priority level. Since the interruption of the parallel Bear can be beitungsabitess often triggered arbitrarily by other programs with parallel processing sections, it may under certain circumstances V or hear that all exporting delay time, the processing sections through other parallel machining of other programs will be interrupted the program is longer than without Parallelization. In such a case, it is conceivable to execute the program with partial tasks purely sequentially, in order to achieve a shorter execution time of the corresponding program and to increase the computing throughput.
  • the essence of the invention lies in the possibility of dynamically adjusting the value of the at least one priority stage. Fe of the parallel processing section of the respective program of the control task. Because by dynamically adjusting the value of the at least one priority level of the parallel processing section of the corresponding program, a flexible decision can be made as to whether the subtasks of the respective program are sequentially processed on the assigned main processor core or in the respective parallel processing section of the program on the at least one parallel processor core should be. In this way, optimal utilization of resources can be provided by the main processor cores and the parallel processor cores jointly executing subtasks of the respective program.
  • the real-time capability of the control task can still be guaranteed by adjusting the value of the priority level of the parallel processing section of the corresponding program of the control task, by always adjusting the value of the priority level in such a way that the real-time condition of the control task and the deadlines of the programs can be met .
  • the PLC 100 has a communication interface 130 and a data processing device 110. Via the communication interface 130, which can be implemented, for example, in the form of a hardware and / or software-designed fieldbus master of a fieldbus system, the PLC 100 can control the corresponding actuators 210 and sensors 220 of the machine or the system 200 of the automation system, the actuators 210 and sensors 220 can be networked with one another using the fieldbus system.
  • PLC programmable logic controller
  • the control task of the PLC 100 specifies which output data generated by the PLC 100 as a function of corresponding input data are supplied to the actuators 210.
  • the PLC 100 receives information about the state of the machine or the system 200 by reading the measurement data from the sensors 220 and / or the actual data from the actuators 210, which are correspondingly connected to the inputs of the PLC 100.
  • the sensors 220 can generate an electrical signal for recording a measured variable or record the measured variable itself in analog or digital form.
  • the actuators 210 are connected to the outputs of the PLC 100 and convert the electrical signals of the output data of the PLC 100 into mechanical movement or other physical quantities (for example temperature, pressure, etc.).
  • the dynamic activation of the actuators 210 can initially be based on reading out the current actual data of the actuators 210. Based on the actual data of the actuators 210 and the measurement data of the sensors 220, the output data for the actuators 210 can be generated from the input data. As an alternative to this, the actuators 210 can be activated on the basis of specifications, for example using motion profiles.
  • the data processing device 110 can comprise a plurality of processor cores, a first main processor core 111 and a second main processor core 112 as well as a first parallel processor core 113 and a second parallel processor core 114 being shown in FIG. 1.
  • An embodiment is also conceivable in which the data processing device 110 has a different number of main processor cores and / or parallel processor cores.
  • the advantage of the design of the data processing device 110 with a first main processor core 111 and a second main processor core 112 and a first parallel processor core 113 and a second parallel processor core 114 is that the subtasks of the respective programs of the control task of the PLC 100 to be processed are described in the following description the two main processor cores 111, 112 and which can be distributed in the parallel processor cores 113, 114. This makes it possible to reduce the computing time and, in addition, to ensure optimal utilization of resources.
  • the multiple executable programs of the control task can, for example, be executed on the first and second main processor cores 111, 112, with the first parallel processor core 113 and the second parallel processor core 114 supporting as mentioned above be able to participate in the processing of the subtasks in the respective parallel sections of the programs of the control task.
  • the control task can consist, for example, of a program cycle executed within the PLC 100, the program cycle receiving the input data (the measurement data from the sensors 220 and the current actual data from the actuators 210), processing the input data into output data for the actuators 210 and includes the output of the output data for the actuators 210. After the processing has been carried out, ie at the end of the program cycle, the program cycle of the control task begins anew.
  • a fieldbus cycle also includes the transmission of the input data of the sensors 220 or actuators 210 via the fieldbus to the PLC 100.
  • the output data contained in the program cycle of the PLC 100 were also transmitted in the fieldbus cycle to the actuators 210 via the fieldbus, so that the actuators 210 can act in accordance with the received output data.
  • the subtasks in the programs that require parallelization and are processed by multiple processor cores can be assigned to at least one parallel processing section in the program of the first main processor core 111 or in the program of the second main processor core 112.
  • the parallel processing sections in the corresponding programs of the first main processor core 111 and the second main processor core 112 can have a priority with a predetermined first priority level and one predetermined second priority level, the first priority level and the second priority level being organized by a priority manager 350 of a control device 120.
  • the priority manager 350 serves primarily to manage the first and second priority levels in the data structure and to adjust the value of the respective priority level of the assigned parallel processing section of the program.
  • the data structure can furthermore have methods which can be called by the programs on the two main processor cores 111, 112 and those on the parallel processor cores 113, 114.
  • the first main processor core 111 arrives at a parallel processing section in the program, it calls an "add my subtasks" method from the data structure of the priority manager 350.
  • the subtasks can then be classified into the data structure and the priority manager 350 can be designed to inform the first and second parallel processor cores 113, 114 of a new, higher entry or a changed order of the entries of the priority levels in the data structure if the subtasks of the method are linked to a higher priority level, the Method is executed on the first main processor core 111.
  • the two parallel processor cores then interrupt their processing of the current subtasks, organize the intermediate results, and then call a “save my intermediate results” method from the data structure of the priority manager 350 a uf.
  • the priority level of the associated subtasks in the data structure can also be adjusted if necessary. That is, this method is executed on the first and second parallel processor cores 113, 114, respectively.
  • the priority manager 350 notify the first and second main processor cores 111, 112 or the program to be executed on the two main processor cores 111, 112 about a change in the value of the current informed at least one priority level. This is because the first and second main processor cores 111, 112 always process the subtasks belonging to them, even if they are not in the first place in the data structure of the entries of the priority levels which are linked to the subtasks. That is, the two main processor cores 111, 112 process the subtasks belonging to them independently of the support of the two parallel processor cores 113, 114.
  • the purely sequential processing of the subtasks on the first and second main processor core 111, 112 represents a difference for the first and second parallel processor core 113, 114. Because if the first and second parallel processor core 113, 114 a "Give me a new subtask" - Call the method from the data structure of the priority manager 350 and only partial tasks that are associated with the minimum value of the priority level of the parallel processing sections of the programs are present and are therefore intended for purely sequential processing on the first and second main processor core 111, 112 , the two parallel processor cores 113, 114 receive "no subtasks are available" as an answer. For the sake of simplicity, the individual methods of the data structure of the priority manager 350 are omitted for the description below. Nevertheless, the methods mentioned above and other methods of the data structure can be used for the implementation of the method according to the invention in the following figures.
  • Priority manager 350 may be distributed across multiple programs in the form of multiple modules (e.g., software modules). It is also conceivable to implement the priority manager 350 as an independent module (for example as a software module) in a program that the first parallel processor core 113 and the second parallel processor core 114 can access in order to assist the first main processor core 111 and the second main processor core 112 to support the completion of the subtasks. In addition it is conceivable to implement the priority manager 350 as an independent program or as one or more external hardware modules.
  • modules e.g., software modules
  • a first work package and a second work package are also created in the parallel processing sections in the programs of the first main processor core 111 and the second main processor core 112.
  • the first work package includes a first set of subtasks and the second work package includes a second set of subtasks.
  • the first set of subtasks and the second set of subtasks can be processed by the first main processor core 111 and the second main processor core 112 or the first parallel processor core 113 and the second parallel processor core 114 in accordance with the first and second priority levels of the associated parallel processing section.
  • a program comprises several sequential processing sections as well as several parallel processing sections, the sequential processing sections of the programs, in contrast to the parallel processing sections, not being divided into work packages with partial tasks and having to be managed by the priority manager.
  • the sequential processing sections of the programs - with tasks that do not require parallelization - can be executed on the corresponding main processor core 111, 112 without the support of the first and second parallel processor core 113, 114.
  • the sequential and parallel processing sections of a program can occur alternately.
  • programs can only be executed sequentially.
  • the sequential processing sections or the programs to be executed sequentially may have a sequential priority level which applies to the sequential processing section or the entire program of the control task.
  • the sequential priority level is independent of whether the programs of the control task have a parallel processing section or not.
  • the tasks can then be processed purely sequentially in the sequential processing section of the program or in the sequentially executable program of the corresponding main processor core 111, 112.
  • the sequential priority level of the programs can differ from the priority level of the parallel processing sections assigned to the respective programs. For example, it is thereby possible for subtasks of a work package of the parallel processing section of a corresponding program to be executed on the parallel processor cores 113, 114, and at the same time tasks that do not require parallelization can be processed sequentially by the one main processor core 111, 112.
  • the sequential processing of the tasks without parallelization is interrupted by a higher priority sequential program to be executed (with tasks without parallelization) or a sequential processing section of a program (with tasks without parallelization) on which a main processor core 111, 112 can be interrupted the parallel processing of the subtasks of the corresponding work package on the first and second parallel processor cores 113, 114 continues to take place without interruption, since the parallel processing sections in the corresponding programs can be assigned a separate priority level to the sequential priority level.
  • the current subtasks can be interrupted by other subtasks with higher priority not only in the case of parallel processing of the subtasks on the parallel processor cores 113, 114, but also in the case of sequential processing of the tasks without parallelization on the one main processor core 111, 112.
  • the value of the priority level of the parallel machining section of the respective program of the control task can also be adapted in the described embodiment with a single main processor core 111, 112 by the priority manager 350 during the program cycle or for a new program cycle.
  • FIG. 2 shows a diagram 600 for the creation of work packages with subtasks and management of the priority levels within the PLC according to FIG. 1.
  • the several executable programs for the control task of the PLC can, for example, be executed on the first and second main processor core 111, 112, at least two programs of the control task each have the at least one parallel processing section.
  • the arrow with the reference symbol 500 represents the creation of the first work package 305 at the beginning of the parallel processing section of the first main processor core 111.
  • the first work package 305 comprises the first set of subtasks 320, which in the example shown consist of a first subtask 321, a second subtask 322, a third sub-task 323 and a fourth sub-task 324 be.
  • the first work package 305 further includes the reference to the first priority level 340 of the parallel processing section of the first main processor core 111.
  • the transfer of the reference to the first priority level 340 of the parallel processing section of the first main processor core 111 to the priority manager 350 is carried out using the arrow the reference numeral 505 clarifies.
  • the priority manager 350 inserts the first priority level 340 into a data structure 355 and stores the data structure 355 in the data structure memory of the control device, which is not shown in the figures. If the data structure 355 has no entries, the priority manager 350 inserts the reference to the first priority level 340 into the first position of the entries of the priority levels in the data structure 355.
  • the arrows with the reference numerals 510, 515 indicate the request of the first and the second parallel processor core 113, 114 to the priority manager 350 which entry of the priority levels is at the first position of the entries in the data structure 355.
  • the first entry of the priority level in the data structure 355 can be the reference to the first priority level 340 of the first main processor core 111. Since the first priority level 340 relates to the parallel processing section of the first main processor core 111, the first parallel processor core 113 and the second parallel processor core 114 access the corresponding first work package 305. The access of the first and second parallel processor core 113, 114 to the first work package 305 is indicated by the arrows with the reference numerals 520, 525.
  • the first parallel processor core 113 can inquire, for example, with the first work package 305 whether there is a free first to fourth sub-task 321-324 that has not yet been distributed elsewhere.
  • the request from the first parallel processor core 113 is indicated using the arrow with the reference symbol 520.
  • this can be the first sub-task 321 that the first parallel processor core 113 is assigned for processing.
  • the first sub-task 321 is then initially no longer available for distribution in order to avoid multiple assignment of the same sub-task.
  • the second sub-task 322 can be assigned to the second parallel processor core 114, for example.
  • the parallel execution of the first and second subtasks 321, 322 of the first and second parallel processor core 113, 114 is indicated by means of the reference symbol 360 and the box around the first and second parallel processor core 113, 114.
  • the first main processor core 111 can also process subtasks sequentially during the parallel processing section in the program, accordingly it also requests the first work package 305 for a free first to fourth subtask 321-324 for processing.
  • the request of the first main processor core 111 is represented by the arrow with the reference number 530.
  • the third sub-task 323 can be assigned to it.
  • the remaining fourth sub-task 324 can be allocated as described above.
  • An exemplary embodiment for the distribution of the first to fourth subtasks 321-324 to the first main processor core 111 and the first and second parallel processor cores 113, 114 was given. It is also conceivable to divide the first to fourth sub-tasks 321-324 between the first main processor core 111 and the first and second parallel processor core 113, 114.
  • the second main processor core 112 When the second main processor core 112 reaches its parallel processing section in its program, it creates the second work package 310 with the second set of subtasks 330, which in the example shown consists of a fifth subtask 331, a sixth subtask 332 and a seventh subtask 333 .
  • the creation of the second work package 310 from the second main processor core 112 is visualized with the aid of the arrow with the reference symbol 535.
  • the second work package 310 includes the reference to the second priority level 345 of the parallel processing section in the program of the second main processor core 112.
  • the reference to the second priority level 345 is also passed on to the priority manager 350 by the second main processor core 112.
  • the transfer of the reference to the second priority stage fe is represented by the arrow with reference number 540.
  • the priority manager 350 orders the reference to the second priority level 345 according to its value to the second position of the entries of the priority levels in the data structure 355 or to the first position of the entries of the priority levels in the data structure 355. Before that there was another entry in the first position of the entries of the priority levels in the data structure 355, this, in the event that the first priority level 340 is lower than the second priority level 345 of the new entry, is moved from the priority manager 350 to the second position of the entries of the priority levels in the data structure 355 sets and the entries of the data structure 355 saved in the data structure memory.
  • the priority manager 350 informs the first and second parallel processor cores 113, 114 of this.
  • the process is accompanied by the interruption of the first, second and possibly fourth sub-tasks 321, 322, 324 currently being processed by the first parallel processor core 113 and / or the second parallel processor core 114 from the first set of sub-tasks 320.
  • the intermediate results of the calculations can be transferred to the control device 120 shown in FIG. 1 and saved on an intermediate result memory (not shown).
  • Both the first and second main processor cores 111, 112 and the first and second parallel processor cores 113, 114 can access the intermediate result memory if the processing of the interrupted first, second and, if appropriate, fourth subtask 321, 322, 324 on the parallel processor cores 113, 114 to be continued.
  • the first main processor core 111 continues to process the third sub-task 323 from the first set of sub-tasks 320 of the first work package 305 sequentially, the first parallel processor core 113 and the second parallel processor core 114 and the second main processor core 112 in the second work package 310 ask about the fifth to seventh subtasks 331-333 from the second set of subtasks 330.
  • the inquiries of the respective processor cores are shown with the help of the three arrows with the reference symbols 545, 550, 555.
  • the fifth subtask 331 can be the first parallel processor core 113 and the seventh subtask there would be 333 assigned to the second parallel processor core 114.
  • the sixth sub-task 332 can be processed sequentially by the second Hauptpro processor core 112.
  • a division of the fifth to seventh subtask 331-333 deviating from the example shown is also conceivable.
  • the two parallel processor cores 113, 114 do not necessarily have to wait until all fifth to seventh subtasks 331-333 from the higher-priority second work package 310 of the parallel processing section of the program of the second main processor core 112 have been completed. For example, if the first parallel processor core 113 has already completely processed its fifth subtask 331, while the second parallel processor core 114 is still processing the seventh subtask 333 and the second main processor core 112 is processing the sixth subtask 332 of the second work package 310 first parallel processor core 113 already start processing one of the previously interrupted first to fourth sub-tasks 321-324 of the first work package 305, which are linked to a lower priority level.
  • the first parallel processor core 113 inquires after the fifth sub-task 331 of the second work package 310 for a free sub-task, but there is no longer any free sub-task in the first position of the second work package, the two work packages 305, 310 likewise May be part of the data structure 355. Then the first parallel processor core 113 can begin processing one of the first to fourth subtasks 321-324 from the first work package 305 so that the computing power of the first parallel processor core 113 can be optimally utilized. This means unnecessary waiting times for the start of processing the first to seventh sub-tasks 321-324, 331-333 from the two parallel processor cores 113, 114 can be avoided.
  • Distribution of the first and second subtasks 321, 322 from the first work package 305 to the first and second parallel processor cores 113, 114 takes place, for example, analogously to the described exemplary embodiment, i.e. the first parallel processor core 113 is assigned the first sub-task 321 and the second parallel processor core 114 is assigned the second sub-task 322 from the first work package 305.
  • the two parallel processor cores 113, 114 access the intermediate result memory in order to be able to use the intermediate results of the first and second subtasks 321, 322 for the further processing of the named subtasks.
  • the corresponding second work package 310 reports this to the priority manager 350 so that the priority manager 350 has the corresponding reference removed to the second priority level 345 from the entries of the priority levels in the data structure 355.
  • the first main processor core 111 Since the first main processor core 111 has continued to process the third sub-task 323 of the first work package 305, while the first parallel processor core 113 has processed the fifth sub-task 331 and the second parallel processor core 114 has executed the seventh sub-task 333 from the second work package 310, it is possible that the first main processor core 111 in the time in which the parallel processor cores 113, 114 are completely processing their assigned fifth and seventh subtasks 331, 333, and the first main processor core 111 is also completely processing the third subtask 323 completes. Thereafter, the first main processor core 111 can request and process the first work package 305 after the remaining fourth sub-task 324, while the parallel processor cores 113, 114 resume the processing of the first and second sub-tasks 321, 322.
  • the request from the first main processor core 111 to the first work package 305 is indicated by the arrow with the reference number 530.
  • the associated first reports Work package 305 the completion of the first to fourth subtasks 321-324 to the priority manager 350 so that the administrator removes the reference to the first priority level 340 from the entries of the priority levels in the data structure 355.
  • the priority manager 350 inquires even with the first and second work packages 305, 310 whether first to seventh sub-tasks 321-324, 331-333 from the first and second set of sub-tasks 320, 330 are still available for completion , and then, if appropriate, the corresponding reference to the first and second priority levels 340, 345 is removed from the data structure 355 in the data structure memory.
  • the first and second main processor core 111, 112 requests a further first to seventh sub-task 321-324, 331-333 from its respective work package 305, 310 in the parallel processing section, but no unprocessed first to seventh sub-task 321-324, 331-333 the first and second main processor cores 111, 112 wait until the parallel processor cores 113, 114 have completed the first to seventh sub-tasks 321-324, 331-333 which are still being carried out. Then the corresponding parallel processing section of the first and second main processor core 111, 112 is left and the first and second ar Package 305, 310 deleted. The first and second main processor cores 111, 112 can then carry out any further (non-parallelized) calculations, for example based on the results of the previous parallel processing section.
  • the total processing time of the first to seventh sub-tasks 321-324, 331 -333 reduced and the computing capacity can be used optimally. Furthermore, deadlines of the programs can be met and the real-time capability of the control task can be ensured by taking into account the first and second priority levels 340, 345 of the respective parallel processing sections of the programs of the first and second main processor core 111, 112.
  • the processing of the first to fourth subtasks 321-324, from the first set of subtasks 320 in favor of other fifth to seventh subtasks 331-333 from the second set of subtasks 330 can be interrupted. if a higher second priority level 345 is assigned to them. It is also conceivable that the processing of the fifth to seventh subtasks 331-333 from the second set of subtasks with the second priority level 345 due to the higher prioritized first set of subtasks 320 with the first to fourth subtask 321-324 and the first priority level is interrupted. Interrupted first to seventh subtasks 321-324, 331-333 from the first and second set of subtasks 320, 330 can be processed further.
  • first and second priority level entries 340, 345 is retained in the data structure 355 in the data structure memory, as long as the corresponding first to seventh sub-tasks 321-324, 331-333 from the first and second set of sub-tasks 320, 330 des first and second Work packages 305, 310 have not been completely processed.
  • this embodiment may require the backing up of all data which he created or processed when the first to seventh sub-tasks 321-324, 331-333 were processed in the parallel program section in the corresponding program if no corresponding interruption point in the first to seventh sub-tasks 321-324, 331-333 was set, up to which the processing of the first to seventh sub-tasks 321-324, 331-333 is continued and then interrupted.
  • the predetermined interruption point which can be set, for example, in a control structure in the first to seventh sub-tasks 321-324, 331-333, it is known which data are continued 321-324, 331- in the continuation of the interrupted first to seventh sub-tasks. 333 are required. If the breakpoint is set, it is not necessary to save all the data, but it is sufficient to use the current iteration the control structure, which can be a loop, and, if applicable, store any intermediate results of the calculations.
  • a further embodiment provides that the processing of the first to seventh sub-tasks 321-324, 331-333 in the parallel processing section of the respective program on the first and second parallel processor cores 113, 114 is stopped immediately and no intermediate results of the calculations are saved in the process. Consequently, a canceled first to seventh sub-task 321-324, 331-333 must be recalculated from the beginning.
  • the immediate termination of the currently executed first to seventh sub-tasks 321-324, 331-333 on the two parallel processor cores 113, 114 without backing up the data can be used, for example, if the first or second main processor core 111, 112 has a parallel processing section with a very small size Show per gram cycle time and the parallelization is necessary to meet the deadlines.
  • the advantage here is that the lowest possible latency can be achieved with the configuration, the latency being the time between the termination of the calculations of the current first to fourth sub-tasks 321-324 (fifth to seventh sub-tasks 331-333) on the parallel processor cores 113 , 114 and the start of the calculations of the new fifth to seventh sub-tasks 331-333 (first to fourth sub-tasks 321-324) on the parallel processor cores 113, 114, which is associated with a higher priority level.
  • Such an embodiment aims to achieve the lowest possible latency, so intermediate results of the first to seventh sub-tasks 321-324, 331-333 can be rejected with a low priority level.
  • the two parallel processor cores 113, 114 Because as soon as the two parallel processor cores 113, 114 have finished processing their current first to fourth sub-tasks 321-324 with a lower priority level, they receive one of the new, higher-priority fifth to seventh sub-tasks when they request the next sub-task using the conventional method 331-333 allocated.
  • the configuration can be used when the first to seventh sub-tasks 321-324, 331-333 in the first work package 305 and the second work package 310 are relatively small and the processing cores can therefore be processed quickly.
  • the advantage of this embodiment is that the computing throughput is highest on the two parallel processor cores 113, 114 without aborting or interrupting the first to seventh sub-tasks 321-324, 331-333.
  • the embodiment in which the currently processed first to seventh sub-tasks 321-324, 331-333 are interrupted and their intermediate results are saved in the intermediate result memory can correspond to a good compromise between latency and computing throughput. It is possible to combine the various configurations of the interruption, the immediate termination or the appropriate sorting of the first to seventh sub-tasks described above and to implement them appropriately depending on the situation.
  • priority manager 350 may active first and second parallel processor cores 113, 114 inform about the change of the first entry of the first or second priority level 340, 345 in the data structure 355.
  • the first and the second parallel processor core 113, 114 can each directly after the corresponding first or second work package 305, 310 after a free first to seventh Request subtask 321-324, 331-333 and start processing early.
  • the requests from the respective parallel processor cores 113, 114 are represented with the aid of reference numerals 520, 525, 545, 550.
  • the priority manager 350 can also be configured such that the first and second parallel processor cores 113, 114 actively request the priority manager 350 whether there is a change in the order of the entries of the first and second priority levels 340, 345.
  • the query of the first and second th parallel processor core 113, 114 is indicated with the aid of the two arrows with the reference symbols 510, 515.
  • the requests of the first and second main processor core 111, 112 and the first and second parallel processor core 113, 114 to the first or second work package 305, 310 are controlled by a central device.
  • the inquiries of the respective processor cores are represented with the aid of the arrows with the reference symbols 520, 525, 530, 545, 550, 555.
  • the central device can further control the task distribution of the first to seventh sub-tasks 321-324, 331-333 from the first and second set of sub-tasks 320, 330 of the first and second work packages 305, 310.
  • the central facility can ensure that the notification of the completion of all first to seventh sub-tasks 321-324, 331-333 from the first and second set of sub-tasks 320, 330 of the first and second work packages 305, 310 to the priority manager 350 is tested.
  • the first and second main processor core 111, 112 can share the first and second parallel processor core 113, 114 for the parallel execution 360 of the first to seventh sub-tasks 321-324, 331-333.
  • the previous description has related to the fact that the value of the at least one priority level of the parallel processing section of the corresponding program remains unchanged during a program cycle, in order to explain the creation of the work packages and the access to the work packages, as well as the management of the priority levels of the parallel ones Simplify processing sections of the programs.
  • the value of the at least one priority level of the respective parallel processing sections of the programs of the control task can be adapted for the embodiments shown in FIGS. 1 and 2 by the priority manager, as is the case in the following figures, in the case of interruption of the parallel processing section of the pro is described.
  • the priority manager in order to increase the computing throughput of the control task, it is also possible, when evaluating the computing throughput for FIGS.
  • FIGS. 1 and 2 (and the subsequent figures), to take the computing time of the respective parallel processing section of the programs of the control task into account and Subtasks of the corresponding programs that do not require a parallel execution to be executed sequentially on the assigned main processor core. It is also advantageous to take into account the computing power of the two parallel processor cores when evaluating the computing throughput of the control task, and to assign them partial tasks for parallel processing in the event that their computing power is not fully utilized. For this purpose, it may be necessary for the priority manager to suitably adjust the value of the at least one priority level of the parallel processing sections of the programs.
  • 3 shows a diagram of a method 300 for data processing on the PLC according to FIGS. 1 and 2.
  • the first and second main processor cores 111, 112 and the first and second serve as a starting point, as was shown in FIGS. 1 and 2 second parallel processor cores 113, 114.
  • a different number of main and / or parallel processor cores is also conceivable.
  • at least one parallel processor core for a parallel execution 375, 380, 385, 390 of the subtasks of the respective parallel machining sections 303, 304 of the programs of the control task is necessary. If a deviating number of main processor cores to that shown in FIGS. 1 to 3 is used, the number of work packages and the number of subtasks can consequently differ.
  • the first main processor core 111 in the program reaches its parallel processing section 303.
  • the parallel processing section is indicated by the top striped horizontal bar and the curly bracket with the reference symbol 303.
  • the first main processor core 111 creates the first work package with the first to fourth subtasks and the reference to the first priority level of the assigned parallel processing section 303, as described above.
  • an explicit description of the allocation of the respective subtasks is dispensed with, since it can be followed in the same way as already described in FIG. 2.
  • the first to fourth subtasks can be carried out sequentially in the parallel processing section 303 of the corresponding program on the first main processor core 111, which is illustrated with reference number 365.
  • the first to fourth subtasks can also be carried out in parallel by the first and second parallel processor cores 113, 114 in addition to the sequential execution 365.
  • the parallel execution of the first to fourth partial is shown above the two striped bars below with the reference numbers 375 and 380.
  • the calculations of the previously actively processed first to fourth sub-tasks on the first and second parallel processor cores 113, 114 are interrupted.
  • the interruption of the processing of the first to fourth subtasks of the parallel processing section 303 of the program that is executed on the first main processor core 111 is represented by reference number 366.
  • the processing of the first to fourth subtasks of the parallel processing section 303 of the corresponding program can be interrupted according to one of the options explained in connection with FIG. 2. If necessary, determined intermediate results of the calculations can be transferred to the intermediate results memory and saved there.
  • This administrative burden means that the first and second parallel processor cores 113, 114 do not immediately start processing after the interruption of the processing of the first to fourth subtasks of the parallel processing section 303 of the program that is executed on the first main processor core 111 the subtasks of the parallel processing section 304 of the corresponding program that is executed on the second main processor core 112 can begin. Due to the administrative effort, the processing of the subtasks of the parallel processing section 304 of the program, which is executed on the second main processor core 112, can only take place with a corresponding time delay.
  • the second main processor core 112 creates the second work package 310 with the fifth to seventh sub-task and the reference to the priority level of the assigned parallel processing section 304 at the beginning of its parallel processing section 304 in the corresponding program.
  • the fifth to seventh sub-task can be performed in the parallel processing section 304 of the corresponding program are executed sequentially on the second main processor core 112, which is illustrated with reference number 370.
  • the parallel processing section 304 of the second main processor core 112 in addition to the sequential execution 370 of the first and second parallel processor core 113, 114, the fifth to seventh sub-task can also be carried out in parallel.
  • the parallel execution of the fifth to seventh part task is shown on the two lower dotted bars with the reference numerals 385, 390. In Fig.
  • the value of the second priority level can be reduced by the priority manager by a factor or immediately set to a minimum value, so that the fifth to seventh subtask of the parallel processing section 304 of the corresponding program can be processed directly sequentially by the second main processor core 112, without the processing of the first to four th sub-tasks 321-324 on the two parallel processor cores 113, 114 having to be interrupted.
  • the advantage of reducing the value of the priority level of the parallel processing section 304 of the program that is executed on the second main processor core 112 is that the interruption of the processing of the first to fourth subtasks of the parallel processing section 303 of the associated program that is on the first main processor core 111 is performed, can be avoided.
  • the dynamic adjustment of the value of the priority level of the parallel processing section of the programs being carried out by the priority manager if the computing throughput of the control task can thereby be increased.
  • the increase in the computing throughput of the control task can have a particularly positive effect on programs with a high value of the priority level of the parallel processing section 303, 304 of the program and can, for example, enable shorter deadlines. In this way it may be possible to increase the working speed of the machine or system of the automation system.
  • the real-time capability of the automation system can be ensured with the aid of the priority manager, since the priority manager adapts the values of the priority levels of the respective parallel processing sections 303 of the corresponding programs in such a way that the deadlines of the programs are adhered to in any case.
  • the value of the at least one priority level can be reduced as desired. For example, the value of the priority level may remain unchanged when the respective parallel processing section 303, 304 of the program is first interrupted by the priority manager. After the second interruption of the corresponding parallel processing section 303, 304 of the program (not shown), the priority manager can reduce the value of the priority level of the assigned parallel processing section 303, 304 by a factor.
  • the value of the priority level of the corresponding parallel processing section 303, 304 of the program can be reduced, for example, the more the respective parallel processing section 303, 304 is interrupted with the subtasks of the program contained therein.
  • the priority manager can adjust the value of the priority level of the parallel processing section 303,
  • the priority manager can set the value of the priority level of the parallel processing section 303,
  • Adjust 304 of the corresponding program for the interrupted subtasks on the two parallel processor cores 133, 114 in order to prevent a further interruption of the subtasks on the two parallel processor cores 113, 114 and in this context for the least possible administrative effort for the remaining subtasks in the respective one Work package.
  • the priority manager can also adjust the value of the priority level of the parallel processing sections 303, 304 of the programs, which is responsible for interrupting the processing of the subtasks of the parallel processing sections of the programs.
  • the priority manager can determine the value of the priority level of the parallel Adjust the small processing sections 303, 304 of the corresponding programs when the respective priority level is located as an entry in the data structure in the data structure memory and there are currently no subtasks from the assigned parallel processing section 303, 304 from the two main and parallel processor cores 111-114 processed who.
  • the priority manager can adjust the value of the priority level of the parallel processing sections 303, 304 of the corresponding programs if subtasks in the respective parallel processing section 303, 304 of the program are actively processed by the processor cores and there are non-working, unprocessed subtasks in the associated work package.
  • the adjustment of the value of the priority level of the parallel processing section 303, 304 concerns the non-binding subtasks of the work package.
  • An advantage of adapting the value of the priority level of the parallel processing sections 303, 304 of the respective programs is that this can take place temporarily.
  • the dynamic adjustment of the value of the at least one priority level does not have to be carried out in the same way for the entire program cycle.
  • the value of the priority level can, for example, be reset to the specified value for a new program cycle and can be changed again for a further program cycle. Even within the program cycle, the value of the at least one priority level of the parallel processing sections of the programs can be adjusted by the priority manager as often as desired.
  • An embodiment is also conceivable in which a program which has to be executed immediately (for example due to a short program cycle time and deadline) is provided with a very high value of the priority level of the parallel processing section of the program by the priority manager, and this value of the priority level remains unchanged by the priority manager despite a possible interruption of the parallel processing section 303, 304 with a corresponding priority level for the next program cycle.
  • the value of the priority level of the respective parallel processing section 303, 304 of the program with the corresponding first to seventh sub-task can be increased when the respective parallel processing section is interrupted, so that the corresponding parallel processing section 303, 304 with the respective first to seventh sub-task the program is no longer interrupted in the next program cycle.
  • the number of interruptions in the parallel processing sections 303, 304 and their period of interruption as well as the computing power used by the processor cores can be determined by the control device of the PLC if the expected computing throughput of the control device is to be evaluated.
  • the expected throughput can also be calculated using the Computing time of the parallel processing sections 303, 304 of the programs of the control task can be determined.
  • the priority manager can determine the value of the at least one priority level of the parallel processing sections 303, 304
  • Reduce or minimize 304 of the programs so that the subtasks of the parallel processing sections 303, 304 are possibly processed sequentially, if they do not necessarily have to be executed in parallel.
  • the control task In order to evaluate the computing throughput in the aforementioned case, the control task must also check whether the computing power of the two parallel processor cores 113, 114 continues to be used as best as possible by sequential processing of the subtasks of the parallel processing sections 303, 304.
  • FIG. 4 shows a flowchart for dynamic adaptation of at least one priority level of a parallel processing section of a program according to FIG. 3, the adaptation of the value of the at least one priority level of the parallel processing section of the corresponding program of the control task by the priority manager 350 in FIG. 1 and 2 is done.
  • a first step 401 indicates the start of the dynamic adjustment of the value of the at least one priority level of the parallel processing section of the corresponding program.
  • the start values of the first to kth priority level of the parallel processing sections of the programs are determined by the priority manager for the respective program cycle, where k can be an integer, positive number really greater than one.
  • the values of the priority levels of the respective parallel processing Sections of the programs can be integer values.
  • a subsequent third step 403 it is checked in a branch whether the processing of the first to fourth sub-tasks of the first work package in the corresponding parallel processing section (with an assigned first priority level) of the program is based on sub-tasks of the k-th work package in the respective parallel processing section (with assigned kth priority level), the value of the kth priority level being higher than the value of the first priority level. If this is not the case, the system returns to the second step 402, that is, the priority manager sets the respective start values of the priority levels of the parallel processing sections of the programs.
  • a fourth step 404 further checks whether the interrupted first to fourth subtasks of the first work package of the parallel processing section of the corresponding program of the control task are sequential to be executed.
  • the priority manager in programs with a very short program cycle time can set the value of the priority level of the parallel processing sections of the programs directly to the minimum value when the corresponding subtasks are interrupted for the first time, so that the subtasks are processed sequentially by the respective main processor core.
  • the priority manager sets the value of any priority level to the minimum value when the processing of the subtasks of the parallel processing sections of the programs is interrupted for the first time, the parallel processor cores may no longer be fully utilized. This means that there is free computing time available if the higher-priority parallel processing sections are completed with partial tasks and no further higher priority There are standardized subtasks of another program with a parallel processing section for processing on the parallel processor cores.
  • This available time should normally be used by the two parallel processor cores for the processing of lower-priority parallel processing sections with subtasks. Only when the control unit notices during the evaluation of the computing throughput that the lower-priority parallel processing sections with subtasks of a work package have been frequently interrupted despite the multiple reduction in the value of the priority level, can it trigger the priorities administrator for the interrupted subtasks of the parallel one Processing sections set this minimum priority level.
  • the priority manager adjusts the value of the first priority level (and / or, if applicable, the kth priority level) of the parallel one Processing section of the corresponding program of the control task in a fifth step 406 accordingly.
  • the adjustment of the value of the first and / or kth priority level of the parallel processing section of the corresponding program by the priority manager can be a decrease or an increase in the value of the priority level, analogous to the description in FIG. 3, for further possible interruptions of the To prevent parallel processing sections of the program with the first to fourth subtasks or to reduce their number in order to minimize the administrative effort and increase the computing throughput of the control task.
  • the priority manager sets the value of the first priority level of the parallel processing section of the program to a minimum value in a sixth step 405 the subtasks of the parallel processing section of the program for the current program cycle can be carried out directly and sequentially on the corresponding main processor core.
  • the branch in the fourth step 404 leads to a seventh step 407, a further branch, for the two possibilities described above.
  • the priority manager checks whether the parallel processing section of the respective program has ended.
  • the processing of the first to four th subtasks of the parallel processing section of the program is still ongoing, a return is made to the third step 403, in which it is checked whether the first to fourth subtasks of the first work package of the parallel processing section of the program was interrupted due to subtasks of the kth work package with a higher value of the kth priority level.
  • the subsequent steps of branching the third step 403 then take place as already described.
  • the branching leads directly to an eighth step 408.
  • the priority manager checks whether the value of the adjusted first priority level of the parallel processing section of the program for the next program cycle should be maintained.
  • step 408 If the check of the priority manager in the eighth step 408 leads to a positive result, the value of the adjusted first priority level of the parallel processing section of the program is retained for the next program cycle and the eighth step 408 is traced back to the branching of the third step 403 Third step 403 is then checked whether the processing of the first to fourth subtasks of the first work package of the parallel processing section of the program is based on subtasks of the kth work package of the corresponding parallel processing section with a higher kth Priority level was interrupted. The following test steps can follow as described above.
  • the priority manager If the value of the adapted first priority level of the parallel processing section of the program is not to be retained for the next program cycle, the priority manager resets the value of the first priority level in a ninth step 409 to the predetermined value, that is to say the start value.
  • the dynamic adjustment of the value of the priority level of the parallel processing section of the program has ended in a tenth step 410. For example, this can be the case if the corresponding work packages have been deleted after the subtasks have been processed and the respective entries of the priority levels of the parallel processing sections have been removed from the data structure.
  • the individual first to tenth steps 401 to 410 can be checked by the priority manager and, if necessary, the control device, since the control device continuously evaluates the expected throughput of the control task and, if necessary, triggers the priority manager to adjust the value of the priority level of the parallel processing section of the respective program .

Landscapes

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

Abstract

Die Erfindung betrifft ein Verfahren zum Optimieren einer Datenverarbeitung auf einer speicherprogrammierbaren Steuerung (SPS). Die SPS weist eine Steuerungsaufgabe auf, die mehrere ausführbare Programme umfasst, wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsabschnitt mit einem Arbeitspaket mit mehreren Teilaufgaben aufweisen. Den parallelen Bearbeitungsabschnitten in den jeweiligen Programmen ist eine Priorität mit einer vorgegebenen Prioritätsstufe zugewiesen, wobei die jeweiligen Prioritätsstufen in eine DatenStruktur eingefügt werden, sobald ein Ausführen des Programms an dem parallelen Bearbeitungsabschnitt angelangt ist. Wenigstens ein Parallelprozessorkern prüft, ob in der DatenStruktur Einträge vorhanden sind und sofern Einträge vorhanden sind, arbeitet er Teilaufgaben aus dem Arbeitspaket des Programms ab, dessen Prioritätsstufe an erster Stelle der Einträge in der Datenstruktur steht. Während eines Programmzyklus wird ein zu erwartender Rechendurchsatz der Steuerungsaufgabe laufend bewertet und wenigstens eine der Prioritätsstufen der parallelen Bearbeitungsabschnitte der jeweiligen Programme dynamisch angepasst, wenn sich der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht.

Description

Beschreibung
Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
Die vorliegende Erfindung betrifft ein Verfahren zur Daten verarbeitung auf einer speicherprogrammierbaren Steuerung (SPS) . Die Erfindung betrifft des Weiteren eine speicherpro grammierbare Steuerung, die insbesondere zur Regelung oder Steuerung einer Maschine oder einer Anlage eingesetzt wird.
Maschinen oder Anlagen eines Automatisierungssystems werden häufig mithilfe speicherprogrammierbarer Steuerungen (SPS) gesteuert. Die SPS steuert oder regelt die Aktoren und Senso ren der Maschine oder der Anlage per Kommunikationsschnitt stelle. Diese kann beispielsweise als Feldbussystem verwirk licht sein, wobei die Aktoren und Sensoren der Maschine oder der Anlage über das Feldbussystem vernetzt sein können.
Durch das Auslesen der Messdaten der Sensoren und/oder der aktuellen Ist-Daten der Aktoren, die mit den Eingängen der speicherprogrammierbaren Steuerung verbunden sind, erhält die SPS eine Information über den Status der Maschine oder der Anlage. Die Aktoren sind an die Ausgänge der speicherprogram mierbaren Steuerung angeschlossen und ermöglichen die Steue rung der Maschine oder der Anlage. Zur dynamischen Ansteue rung der Aktoren generiert die SPS auf Basis der Ist-Daten und/oder auf Basis der Messdaten der Sensoren die Ausgabeda ten für die Aktoren, wobei es sich bei den genannten Daten um einzelne Werte oder Wertegruppen handeln kann. Ebenso kann die Ansteuerung der Aktoren aufgrund von Vorgaben, zum Bei spiel anhand von Bewegungsprofilen erfolgen. Um die gewünsch te Betriebsweise der Maschine bzw. der Anlage bereitstellen zu können, legt die Steuerungsaufgabe der SPS fest, welche seitens der SPS, in Abhängigkeit von entsprechenden Eingangs daten, erzeugte Ausgangsdaten den Aktoren zugeführt werden. Die Verarbeitung der Daten durch die SPS erfolgt meist zyk- lisch und umfasst drei Schritte: Bereitstellen von aktuellen Eingabedaten (beispielsweise Ist-Daten der Aktoren und/oder Messdaten der Sensoren) , Verarbeitung der Eingabedaten zu Ausgabedaten, und Ausgabe der Ausgabedaten für die Bewegungs steuerung (beispielsweise Zielpositionen, etc. ) .
Für die Steuerung des Automatisierungssystems ist es zwingend erforderlich, dass die Verarbeitung der Eingabedaten spätes tens zu dem Zeitpunkt beendet ist, zu dem die Ausgabedaten für die Aktoren benötigt werden. Dieser Zeitpunkt bezeichnet die Deadline und entspricht gewöhnlich dem Ende eines Pro grammzyklus der SPS. Für die speicherprogrammierbare Steue rung wird in der Regel eine harte Echtzeitfähigkeit gefor dert, was bedeutet, dass Deadlines konsequent eingehalten und niemals überschritten werden dürfen. Zusätzlich muss zum Zeitpunkt der Deadline ein valides Ergebnis für die Aktoren vorliegen. Dies ist vor allem dann relevant, wenn das Über schreiten der Deadline zu Personen- oder Sachschäden führen kann, beispielsweise wenn ein Roboterarm nicht rechtzeitig abgebremst wird.
Die Programmausführung der SPS ist beispielsweise in der Norm IEC 61131-3 festgelegt. Die SPS besitzt eine Steuerungsaufga be und diese setzt sich meist aus einem oder mehreren im All gemeinen zyklisch auszuführenden Programmen mit Aufgaben, den sogenannten „Tasks" zusammen. Im einfachsten Fall weist die speicherprogrammierbare Steuerung nur einen einzelnen Prozes sorkern für mehrere unabhängige Programme mit Aufgaben
(Tasks) auf. Deshalb muss die verfügbare Rechenzeit derart aufgeteilt werden, dass alle Programme mit entsprechenden Aufgaben ihre Deadlines einhalten können. Die verschiedenen Programmzyklus-Zeiten in der SPS können sich beispielsweise je nach Anwendung in einem Bereich von 100 ys bis 20 ms oder bei komplexen Aufgaben in einem Bereich von 50 ms bis 100 ms befinden. Aufgrund der verschiedenen Programmzyklus-Zeiten gilt es zu verhindern, dass Programme mit Aufgaben mit einer längeren Zykluszeit den Start von Programmen mit Aufgaben mit einer kürzeren Zykluszeit verzögern, so dass diese ihre Dead lines nicht mehr einhalten können. Häufig kann dies nur er reicht werden, wenn die Ausführung eines solchen langsamen Programms unterbrochen und später fortgesetzt wird.
Aus diesem Grund wird jedem Programm mit entsprechenden Auf gaben gewöhnlich eine vorgegebene Prioritätsstufe zugeteilt. Diese kann aus der Deadline und/oder den Abhängigkeiten der jeweiligen Programme zu den anderen Programmen ermittelt wer den, wenn die Programme beispielsweise auf die Ergebnisse der anderen Programme angewiesen sind. Die Prioritätsstufe kann ferner einem ganzzahligen Wert entsprechen.
Da viele SPS Prozessoren mit mehreren Prozessorkernen
und/oder mehrere Prozessoren umfassen, kann die SPS Programme mit entsprechenden Aufgaben auf mehrere Prozessorkerne oder Prozessoren aufteilen, um die Gesamtverarbeitungszeit der Programme mit den entsprechenden Aufgaben durch eine zumin dest teilweise parallele Ausführung der entsprechenden Aufga ben zu reduzieren. Dabei kann sich ein sogenannter Rechen durchsatz der Steuerungsaufgabe aus einer zeitlichen Unter brechungsdauer der Programme, einer Anzahl an Unterbrechungen der Programme bzw. einer Rechenzeit der jeweiligen Programme ergeben. Ferner kann der Rechendurchsatz der Steuerungsaufga be von einer Auslastung der Prozessorkerne abhängen . Werden die Programme und Aufgaben auf mehrere Prozessorkerne aufge teilt, so kann es aufgrund der zugeordneten Prioritätsstufen Vorkommen, dass Aufgaben, die gerade parallel ausgeführt wer den von anderen Aufgaben, die mit einer höheren Prioritäts stufe im entsprechenden Programm verknüpft sind, auf den pa rallel arbeitenden Prozessorkernen unterbrochen werden. Un terbrechungen von Aufgaben erhöhen den sogenannten Verwal tungsaufwand und können zeitlich voneinander variieren. Der Verwaltungsaufwand umfasst die Aktivitäten, die beim Unter brechen der Abarbeitung der Aufgaben in den Programmen erfor derlich sind. Die Aktivitäten können beispielsweise im Über geben und Sichern von Zwischenergebnissen der unterbrochenen Aufgaben liegen - andernfalls müssen die Aufgaben der Pro- gramme wieder von Neuem abgearbeitet werden. Folglich kann der Rechendurchsatz bei einem hohen Verwaltungsaufwand sin ken, da während der Unterbrechungsdauer der Programme in der Regel keine Berechnungen durchgeführt werden. Ebenso kann die Rechenzeit der Programme einen Einfluss auf den Rechendurch satz nehmen, da Programme mit kurzer Programmzyklus-Zeit ge gebenenfalls ohne Parallelisierung schneller rein sequentiell ausgeführt werden können, als auf den parallel arbeitenden Prozessorkernen. Denn die Programme auf den parallel arbei tenden Prozessorkernen können unter Umständen durch höher priorisierte andere Programme unterbrochen werden, wodurch sich die Gesamtausführungszeit der Programme verlängern kann. Werden die Prozessorkerne nicht vollständig ausgelastet, z.B. indem die Programme sequentiell ausgeführt werden, statt pa rallel von den dafür vorgesehenen Prozessorkernen, so ist es möglich, dass die Rechenleistung der für die Parallelisierung vorgesehenen Prozessorkerne nicht vollständig ausgenutzt wird. Dies kann den Rechendurchsatz der Steuerungsaufgabe ebenfalls reduzieren.
Die Aufgabe der vorliegenden Erfindung besteht darin ein Ver fahren zum Optimieren einer Datenverarbeitung anzugeben, das die vorhandenen Ressourcen bestmöglich nutzt. Es ist weiter hin Aufgabe der Erfindung, eine verbesserte speicherprogram mierbare Steuerung anzugeben.
Diese Aufgabe wird durch die Merkmale der unabhängigen An sprüche gelöst. Weitere vorteilhafte Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen angegeben.
Erfindungsgemäß wird ein Verfahren zum Optimieren einer Da tenverarbeitung auf einer speicherprogrammierbaren Steuerung (SPS) vorgeschlagen, wobei die SPS wenigstens einen Parallel prozessorkern umfasst. Die SPS weist ferner eine Steuerungs aufgabe auf, die mehrere ausführbare Programme umfasst. We nigstens zwei Programme der Steuerungsaufgabe weisen jeweils wenigstens einen parallelen Bearbeitungsabschnitt mit einem Arbeitspaket auf, und das Arbeitspaket umfasst mehrere Teil aufgaben. Den parallelen Bearbeitungsabschnitten in den je weiligen Programmen ist eine Priorität mit einer vorgegebenen Prioritätsstufe zugewiesen, wobei die jeweiligen Prioritäts stufen in eine Datenstruktur eingefügt werden, sobald ein Ausführen des Programms an dem parallelen Bearbeitungsab schnitt angelangt ist. Der wenigstens eine Parallelprozessor kern prüft, ob in der Datenstruktur Einträge vorhanden sind und sofern Einträge vorhanden sind, arbeitet der wenigstens eine Parallelprozessorkern Teilaufgaben aus dem Arbeitspaket des Programms ab, dessen Prioritätsstufe an erster Stelle der Einträge in der Datenstruktur steht. Während eines Programm zyklus wird ein zu erwartender Rechendurchsatz der Steue rungsaufgabe laufend bewertet und wenigstens eine der Priori tätsstufen der parallelen Bearbeitungsabschnitte der jeweili gen Programme dynamisch angepasst, wenn sich der Rechendurch satz der Steuerungsaufgabe dadurch erhöht.
Ein Parallelprozessorkern bezeichnet einen Prozessorkern der SPS, der für die parallele Abarbeitung von Teilaufgaben vor gesehen ist. Zusätzlich kann die SPS weitere Prozessorkerne, sogenannte Hauptprozessorkerne, aufweisen. Die Hauptpro zessorkerne können jeweils ein oder mehrere Programme der Steuerungsaufgabe ausführen. Die mehreren Programme der Steu erungsaufgabe können Programme aufweisen, die rein sequenti ell ausgeführt werden, wobei wenigstens zwei Programme der Steuerungsaufgabe wenigstens einen parallelen Bearbeitungsab schnitt umfassen. Diese parallelen Bearbeitungsabschnitte der Programme können mit der Unterstützung der Parallelprozessor kerne ausgeführt werden.
Der Rechendurchsatz der Steuerungsaufgabe kann über die zeit liche Unterbrechungsdauer und die Anzahl der Unterbrechungen der parallelen Bearbeitungsabschnitte der Programme bewertet werden. Denn während der Unterbrechungsdauer der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsabschnitte der Programme werden keine Berechnungen durchgeführt, sondern Zwischenergebnisse übergeben und gesichert, die Einträge der Prioritätsstufen in der Datenstruktur werden neu sortiert, der wenigstens eine Parallelprozessorkern muss vor der Abar beitung der Teilaufgaben des Arbeitspakets eines weiteren Programms mit parallelem Bearbeitungsabschnitt erst nach freien Teilaufgaben für die Abarbeitung anfragen oder bei der Wiederaufnahme der Abarbeitung der unterbrochenen Teilaufga ben zunächst auf den Zwischenergebnisspeicher zugreifen, um die bereits berechneten Zwischenergebnisse als Ausgangspunkt für die weitere Abarbeitung der unterbrochenen Teilaufgaben nutzen zu können. Insofern wirken sich die zeitliche Unter brechungsdauer, sowie die Anzahl der Unterbrechungen der Pro gramme mit parallelen Bearbeitungsabschnitten auf den Rechen durchsatz der Steuerungsaufgabe aus, da sie die Gesamtausfüh rungszeit der Programme verlängern. Demnach könnte ein maxi maler Rechendurchsatz der Steuerungsaufgabe ohne Unterbre chungen der Programme mit parallelen Bearbeitungsabschnitten erzielt werden.
Die Anzahl der Unterbrechungen der Programme mit parallelen Bearbeitungsabschnitten kann mithilfe der dynamischen Anpas sung des Werts der wenigstens einen Prioritätsstufe des pa rallelen Bearbeitungsabschnitts der Programme reduziert wer den, da der Wert der wenigstens einen Prioritätsstufe gezielt an die jeweilige Situation angepasst werden kann, um den Ver waltungsaufwand der Steuerungsaufgabe zu reduzieren. Werden Teilaufgaben eines Arbeitspakets gerade parallel ausgeführt und von anderen Teilaufgaben eines weiteren Arbeitspakets mit höherer Prioritätsstufe des entsprechenden parallelen Bear beitungsabschnitts des jeweiligen Programms unterbrochen, so kann der Wert der wenigstens einen Prioritätsstufe der Teil aufgaben direkt innerhalb des Programmzyklus verändert wer den, um eine weitere Unterbrechung der Teilaufgaben der ent sprechenden parallelen Bearbeitungsabschnitte und zusätzli chen Verwaltungsaufwand zu vermeiden. Die Anpassung des Werts der wenigstens einen Prioritätsstufe kann ebenso für einen neuen Programmzyklus erfolgen, in dem das jeweilige Programm wieder von Anfang an ausgeführt wird.
Damit der Wert der wenigstens einen Prioritätsstufe nicht für jeden Programmzyklus verringert wird, kann über eine zusätz liche Bedingung, zum Beispiel in der Form, dass der Wert der wenigstens einen Prioritätsstufe für den neuen Programmzyklus mindestens dem halben Wert der vorgegebenen wenigstens einen Prioritätsstufe entsprechen muss, sichergestellt werden, dass der Wert der wenigstens einen Prioritätsstufe der Programme nicht ungewollt auf einen minimalen Wert gesetzt wird. Denn der minimale Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme bedeutet, dass das jeweilige Programm sequentiell auf dem entsprechen den Hauptprozessorkern ausgeführt wird. Auf diese Weise kann die Rechenleistung des wenigstens einen Parallelprozessor kerns gegebenenfalls nicht vollständig ausgenutzt sein, wobei die nicht genutzte Rechenleistung den Rechendurchsatz der Steuerungsaufgabe reduziert. Demnach kann die Auslastung der Prozessorkerne vorteilhaft über die genannte zusätzliche Be dingung der Untergrenze für die Anpassung des Werts der we nigstens einen Prioritätsstufe des parallelen Bearbeitungsab schnitts der Programme berücksichtigt werden.
Des Weiteren kann der Rechendurchsatz der Steuerungsaufgabe mithilfe der Rechenzeit der parallelen Bearbeitungsabschnitte bewertet werden. Programme mit Teilaufgaben, die eine kurze Programmzyklus-Zeit aufweisen, beispielsweise 1 ms, können zwar durchaus in dem parallelen Bearbeitungsabschnitt des Programms auf den wenigstens einen Parallelprozessorkern zur parallelen Abarbeitung der Teilaufgaben verteilt werden. Dies kann gegebenenfalls aber dazu führen, dass der parallele Be arbeitungsabschnitt des Programms mit den jeweiligen Teilauf gaben für einen anderen parallelen Bearbeitungsabschnitt mit höherer Prioritätsstufe unterbrochen wird. In dem erläuterten Beispiel kann die Parallelisierung des Programms mit kurzer Programmzyklus-Zeit dazu führen, dass der Verwaltungsaufwand erhöht wird und die Rechenzeit für den parallelen Bearbei tungsabschnitt dadurch ansteigt. Die gesamte Ausführungszeit des Programms kann aufgrund der Parallelisierung langsamer sein, als für den Fall, in dem das Programm rein sequentiell und unterbrechungsfrei ausgeführt wird. Da die sequentielle Rechenzeit des Programms mit kurzer Programmzyklus-Zeit gege benenfalls kürzer sein kann, als die Rechenzeit des paralle len Bearbeitungsabschnitts, ist es vorteilhaft, die jeweilige benötigte Rechenzeit für die Ausführung des Programms bei der Bewertung des Rechendurchsatzes (neben der zeitlichen Dauer und der Anzahl der Unterbrechungen der parallelen Bearbei tungsabschnitte sowie der Auslastung der Prozessorkerne) mit zu berücksichtigen, um den Rechendurchsatz der Steuerungsauf gabe zu verbessern.
Die dynamische Anpassung des Werts der wenigstens einen Prio ritätsstufe des parallelen Bearbeitungsabschnitts der Pro gramme erfolgt während der Programmlaufzeit, wenn der Rechen durchsatz der Steuerungsaufgabe dadurch erhöht werden kann. Ohne die dynamische Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts in den entsprechenden Programmen, kann es sonst passieren, dass die gesamte Ausführungszeit der jeweiligen Programme aufgrund der Unterbrechungsdauer und des damit verbundenen zusätzlichen Verwaltungsaufwands steigt und die Programme der Steuerungs aufgabe insgesamt langsamer sind, als für den Fall, in dem die Aufgaben der Programme ohne Unterbrechung rein sequenti ell in den zugeordneten Programmen abgearbeitet werden.
Neben der dynamischen Anpassung des Werts der wenigstens ei nen Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme während der Programmlaufzeit, ist es ferner denk bar, den bestmöglichen Wert der wenigstens einen Prioritäts stufe der parallelen Bearbeitungsabschnitte der Programme mithilfe einer Simulation vor dem Programmstart der Steue rungsaufgabe der SPS zu ermitteln. Der auf diese Weise erhal tene optimale Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme kann als Startwert für die Programmausführung genutzt werden, wenn sich mehrere Programme der Steuerungsaufgabe der SPS einen Hauptprozessorkern teilen bzw. auch für den Fall, dass auf einem Hauptprozessorkern jeweils nur ein Programm ausgeführt wird .
In einer weiteren Ausführungsform erfolgt die Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbeitungs abschnitte der jeweiligen Programme bei einer Unterbrechung der Abarbeitung der Teilaufgaben des Programms. Der Rechen durchsatz der Steuerungsaufgabe ist von der zeitlichen Unter brechungsdauer der Abarbeitung der Teilaufgaben abhängig, da in dieser Zeit keine Teilaufgaben der parallelen Bearbei tungsabschnitte der Programme abgearbeitet werden, sondern Zwischenergebnisse der Berechnungen der Teilaufgaben gegebe nenfalls übergeben und gesichert werden. Zudem kann sich jede Unterbrechung zeitlich unterscheiden. Die Unterbrechungsdauer kann folglich die Gesamtausführungszeit der Programme verlän gern, da die zeitliche Unterbrechungsdauer zusätzlich zur Re chenzeit der Programme berücksichtigt werden muss. Es ist ferner ersichtlich, dass häufige Unterbrechungen der Abarbei tung der Teilaufgaben der parallelen Bearbeitungsabschnitte zu einer Verminderung des Rechendurchsatzes führen, da mit der Häufigkeit der Unterbrechungen der Berechnungen auch der Verwaltungsaufwand durch das vermehrte Übergeben und Sichern der Zwischenergebnisse der Berechnungen der Teilaufgaben steigt. Daher sollen die Anzahl und die Dauer der Unterbre chungen möglichst gering gehalten werden, um auf diese Weise einen hohen Rechendurchsatz der Steuerungsaufgabe erzielen zu können. Dies kann mithilfe der dynamischen Anpassung der we nigstens einen Prioritätsstufe der parallelen Bearbeitungsab schnitte der Programme bei der Unterbrechung der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsabschnitte der Programme umgesetzt werden. Eine weitere Ausführungsform sieht vor, dass die Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbei tungsabschnitte der jeweiligen Programme erfolgt, wenn die Teilaufgaben des Programms aufgrund von anderen Teilaufgaben eines weiteren Programms mit höherer Prioritätsstufe des pa rallelen Bearbeitungsabschnitts auf dem wenigstens einen Pa rallelprozessorkern unterbrochen werden. Werden die Teilauf gaben eines Arbeitspakets aufgrund von anderen Teilaufgaben eines weiteren Arbeitspakets, das mit einem höheren Wert der Prioritätsstufe des parallelen Bearbeitungsabschnitts im zu geordneten Programm verknüpft ist, auf dem wenigstens einen Parallelprozessorkern unterbrochen, so kann der Wert der we nigstens einen Prioritätsstufe der unterbrochenen Teilaufga ben direkt innerhalb des Programmzyklus verändert werden, um möglichst wenig Verwaltungsaufwand für die noch ausstehenden Teilaufgaben zu erzeugen.
Darüber hinaus, ist es ebenfalls möglich, den Wert der we nigstens einen Prioritätsstufe der unterbrochenen Teilaufga ben des parallelen Bearbeitungsabschnitts des jeweiligen Pro gramms für den nächsten Programmzyklus entsprechend anzupas sen, wie oben bereits beschrieben wurde. Auch kann mit der oben genannten, zusätzlichen Bedingung für den Startwert der wenigstens einen Prioritätsstufe, für den nächsten Programm zyklus sichergestellt werden, dass der Wert der wenigstens einen Prioritätsstufe nicht ungewollt unterhalb einer Unter grenze sinkt.
Der Rechendurchsatz der Steuerungsaufgabe ergibt sich aus der Dauer und der Anzahl der Unterbrechungen der Programme mit Aufgaben, also dem Verwaltungsaufwand. Der Rechendurchsatz kann erhöht werden, indem der Verwaltungsaufwand, das heißt die Anzahl der Unterbrechungen der Programme reduziert wird. Weiterhin ist es möglich den Rechendurchsatz zu erhöhen, in dem die Rechenzeit der jeweiligen Programme berücksichtigt wird. Kann ein Programm mit Teilaufgaben mit kurzer Programm zyklus-Zeit rein sequentiell schneller, das heißt mit kürze- rer sequentieller Rechenzeit unterbrechungsfrei ausgeführt werden, als dies im parallelen Bearbeitungsabschnitt des Pro gramms gegebenenfalls mit Unterbrechungen möglich ist, so kann der Rechendurchsatz der Steuerungsaufgabe durch eine Be rücksichtigung der entsprechenden Rechenzeit im Programm ebenfalls erhöht werden. Auch kann der Rechendurchsatz der Steuerungsaufgabe erhöht werden, indem die Rechenleistung des wenigstens einen Parallelprozessorkerns vollständig ausge nutzt und dafür gesorgt wird, dass parallel abzuarbeitende Teilaufgaben des parallelen Bearbeitungsabschnitts des jewei ligen Programms von dem wenigstens einen Parallelprozessor kern abgearbeitet werden, wobei sequentiell auszuführende Programme auf dem jeweiligen Hauptprozessorkern ausgeführt werden. Ein erhöhter Rechendurchsatz kann ferner dazu beitra gen, dass die Gesamtausführungszeit der Programme und Teil aufgaben reduziert wird, da die Steuerungsaufgabe auf diese Weise mehr Rechenzeit erhält.
In einer weiteren Ausführungsform wird bei der Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbeitungs abschnitte der jeweiligen Programme eine zusätzliche Bedin gung, insbesondere eine Echtzeitbedingung der Steuerungsauf gabe, berücksichtigt. Die dynamische Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungs abschnitts der jeweiligen Programme während der Programmlauf zeit kann weiterhin eine Echtzeitfähigkeit des Automatisie rungssystems garantieren. Die Deadlines der Programme können durch die Anpassung des Werts der Prioritätsstufe in jedem Fall eingehalten werden. Für die Anpassung der wenigstens ei nen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme kann neben der Echtzeitbedingung noch die oben ge nannte mögliche Bedingung der Untergrenze für den Wert der wenigstens einen Prioritätsstufe berücksichtigt werden.
In einer weiteren Ausführungsform wird die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der je weiligen Programme um einen Faktor reduziert, wenn die Teil- aufgaben des Programms aufgrund von anderen Teilaufgaben ei nes weiteren Programms mit höherer Prioritätsstufe des paral lelen Bearbeitungsabschnitts auf dem wenigstens einen Paral lelprozessorkern unterbrochen werden. Eine Reduktion des Werts der wenigstens einen Prioritätsstufe der parallelen Be arbeitungsabschnitte der jeweiligen Programme um einen Faktor kann dazu beitragen, dass der Verwaltungsaufwand reduziert wird. Denn der Wert der wenigstens einen Prioritätsstufe des jeweiligen parallelen Bearbeitungsabschnitts im entsprechen den Programm, der mit den Teilaufgaben verbunden ist, die un terbrochen worden sind, kann zur Vermeidung einer weiteren Unterbrechung der parallelen Bearbeitungsabschnitte mit den Teilaufgaben direkt innerhalb des Programmzyklus herabgesetzt werden. Bei der Unterbrechung der Berechnungen der Teilaufga ben in den parallelen Bearbeitungsabschnitten der Programme kann es zudem Vorkommen, dass aktuelle Zwischenergebnisse übergeben und Daten gesichert werden müssen. Häufige Unter brechungen der Teilaufgaben können daher einen enormen Auf wand erzeugen, den es zu minimieren gilt. Die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Be arbeitungsabschnitts des jeweiligen Programms erfolgt stets unter der Bedingung, dass die Echtzeitfähigkeit des Automati sierungssystems gewährleistet werden kann, das heißt, dass die Verarbeitung der Eingabedaten spätestens zu dem Zeitpunkt beendet sein muss, zu dem die Ausgabedaten für die Aktoren benötigt werden. Folglich muss garantiert werden können, dass die Deadlines der Programme trotz einer Reduktion des Werts der wenigstens einen Prioritätsstufe der parallelen Bearbei tungsabschnitte der entsprechenden Programme weiterhin einge halten werden können.
Des Weiteren kann der Wert der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts des Programms der unterbrochenen Teilaufgaben unmittelbar nach der Unterbre chung der Abarbeitung der Teilaufgaben erhöht werden. Die Er höhung des Werts der wenigstens einen Prioritätsstufe des pa rallelen Bearbeitungsabschnitts der Programme kann dazu bei- tragen, dass die zugeordneten Teilaufgaben nicht mehr von dem anderen parallelen Bearbeitungsabschnitt des weiteren Pro gramms unterbrochen werden. Neben der dynamischen Anpassung des Werts der wenigstens einen Prioritätsstufe der unterbro chenen Teilaufgaben der parallelen Bearbeitungsabschnitte der Programme ist es weiterhin denkbar, den Wert der Prioritäts stufe des Programms anzupassen, dass die Unterbrechung der Abarbeitung der Teilaufgaben des parallelen Bearbeitungsab schnitts des anderen Programms verursacht hat. So kann ver mieden werden, dass die aktuell abgearbeiteten Teilaufgaben des parallelen Bearbeitungsabschnitts des einen Programms nicht erneut von dem anderen parallelen Bearbeitungsabschnitt des anderen Programms unterbrochen werden.
Alternativ zur Reduktion der Dauer und der Anzahl der Unter brechungen des parallelen Bearbeitungsabschnitts in dem je weiligen Programm durch die Anpassung des Werts der wenigs tens einen Prioritätsstufe des parallelen Bearbeitungsab schnitts ist es ferner denkbar, die Rechenzeit des parallelen Bearbeitungsabschnitts des jeweiligen Programms bei der Be wertung des Rechendurchsatzes mit zu berücksichtigen. Das heißt es kann individuell entschieden werden, ob der Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungs abschnitts des jeweiligen Programms angepasst und/oder die Teilaufgaben des Programms gegebenenfalls rein sequentiell abgearbeitet werden sollen, falls die sequentielle Rechenzeit für die Teilaufgaben des jeweiligen Programms kürzer ist, als die Rechenzeit des parallelen Bearbeitungsabschnitts des je weiligen Programms. Dies gilt für die nachfolgenden Ausfüh rungsformen in gleicher Weise, daher wird diese alternative Möglichkeit für die nachfolgenden Ausführungsformen nicht mehr wiederholt.
Eine weitere Ausführungsform sieht vor, dass die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme auf einen minimalen Wert gesetzt wird, wenn die Teilaufgaben der Programme sequentiell in den entsprechenden Programmen ausführbar sind. Im Extremfall ist es möglich, den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der mehreren Programme der Steuerungsaufgabe auf einen minimalen Wert zu setzen. Insbe sondere ist diese Ausgestaltung denkbar, wenn die Teilaufga ben keine zwingende parallele Ausführung erfordern, sondern ebenfalls sequentiell in dem zugeordneten Programm abgearbei tet werden können.
In einer weiteren Ausführungsform wird die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der je weiligen Programme zu Beginn eines neuen Programmzyklus auf den vorgegebenen Wert zurückgesetzt. Von Vorteil bei der An passung des Werts der Prioritätsstufe der parallelen Bearbei tungsabschnitte der jeweiligen Programme ist, dass diese vo rübergehend erfolgen kann. Die dynamische Anpassung des Werts der wenigstens einen Prioritätsstufe kann direkt innerhalb der Programmlaufzeit erfolgen und muss nicht für die gesamte Laufzeit des Programms in gleicher Weise stattfinden. Der Wert der Prioritätsstufe kann beispielsweise für einen neuen Programmzyklus wieder auf den vorgegebenen Wert zurückgesetzt werden und kann während des Programmzyklus und/oder für einen weiteren Programmzyklus erneut abgeändert werden.
Eine weitere Ausführungsform sieht vor, dass die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme zu Beginn eines neuen Programmzyklus erhöht wird, wenn die Teilaufgaben vorher sequentiell in den zugeordneten Programmen ausgeführt wurden. Statt der Redukti on des Werts der wenigstens einen Prioritätsstufe der paral lelen Bearbeitungsabschnitte der jeweiligen Programme kann der Wert der wenigstens einen Prioritätsstufe auch erhöht werden. Beispielsweise kann die Anpassung des Werts der we nigstens einen Prioritätsstufe zu Beginn des neuen Programm zyklus erfolgen. Diese Ausgestaltung ist denkbar, wenn die Teilaufgaben mit entsprechender Prioritätsstufe in einem vor herigen Programmzyklus rein sequentiell in dem zugeordneten Programm abgearbeitet wurden. Mithilfe dieser Ausgestaltung kann vermieden werden, dass zu viele Programme der Steue rungsaufgabe irgendwann einen minimalen Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme haben und die Programme rein sequentiell ausge führt werden. Werden die Programme rein sequentiell auf den Hauptprozessorkernen ausgeführt, kann dies gegebenenfalls zur Folge haben, dass die verfügbare Rechenleistung der Parallel prozessorkerne nicht mehr vollständig ausgenutzt wird, was dann in einem verminderten gesamten Rechendurchsatz der Steu erungsaufgabe resultiert.
Erfindungsgemäß wird des Weiteren eine speicherprogrammierba re Steuerung (SPS) vorgeschlagen. Die SPS umfasst eine Kommu nikationsschnittstelle, zum Einlesen von Sensordaten und zum Ausgeben von Aktordaten. Ferner umfasst die SPS eine Daten verarbeitungseinrichtung, die wenigstens einen Parallelpro zessorkern zum Ausführen einer Steuerungsaufgabe umfasst, um aus den Sensordaten Aktordaten zu erzeugen, sowie eine Steue rungseinrichtung, die einen Datenstrukturspeicher zum Spei chern einer Datenstruktur mit Prioritätsstufen und einen Pri oritätenverwalter zum Verwalten der Prioritätsstufen in der Datenstruktur aufweist. Die Steuerungseinrichtung umfasst ei nen Zwischenergebnisspeicher, auf dem Zwischenergebnisse von Berechnungen gesichert werden. Die Steuerungsaufgabe umfasst weiterhin mehrere ausführbare Programme, wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsabschnitt mit einem Arbeitspaket auf weisen, und das Arbeitspaket mehrere Teilaufgaben umfasst.
Den parallelen Bearbeitungsabschnitten in den jeweiligen Pro grammen ist eine Priorität mit der vorgegebenen Prioritäts stufe zugewiesen. Der Prioritätenverwalter ist ausgebildet, die jeweiligen Prioritätsstufen in die Datenstruktur im Da tenstrukturspeicher einzufügen, sobald ein Ausführen des Pro gramms an dem parallelen Bearbeitungsabschnitt angelangt ist und dabei den Eintrag mit der höchsten Prioritätsstufe an die erste Stelle der Einträge in der Datenstruktur zu setzen. Der wenigstens eine Parallelprozessorkern ist ausgebildet, die Datenstruktur im Datenstrukturspeicher auf Einträge der Prio ritätsstufen zu prüfen, und sofern Einträge vorhanden sind, Teilaufgaben aus dem Arbeitspaket des entsprechenden Pro gramms abzuarbeiten, dessen Prioritätsstufe an erster Stelle der Einträge in der Datenstruktur steht. Die Steuerungsein richtung ist ausgebildet, während eines Programmzyklus einen zu erwartenden Rechendurchsatz der Steuerungsaufgabe laufend zu bewerten. Ferner ist der Prioritätenverwalter ausgelegt, wenigstens eine der Prioritätsstufen der parallelen Bearbei tungsabschnitte der jeweiligen Programme dynamisch anzupas sen, wenn sich der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht.
Speicherprogrammierbare Steuerungen bilden häufig die Grund lage eines Automatisierungssystems und verfügen derzeit über komplexe Rechen- und Regelfunktionen, die eine leistungsstar ke Hardware und effiziente Software zur Umsetzung erfordern. Die hohe Rechenleistung kann dabei auf der gleichzeitigen Nutzung von mehreren Prozessorkernen basieren, um das System effizient zu betreiben und die vorhandenen Ressourcen best möglich auszulasten. Die so konzipierte SPS ermöglicht die Deadlines der Programme einzuhalten und kann ferner die Echt- zeitdatenverarbeitung gewähren. Das Verfahren zur Optimierung der Datenverarbeitung auf einer SPS kann eine solche effizi ente Software für die SPS darstellen, um die Rechenleistung der vorhandenen Prozessorkerne bestmöglich auszunutzen, in dem die Programme der Steuerungsaufgabe auf mehrere Pro zessorkerne verteilt ausgeführt werden können. Werden die Programme parallelisiert auf dem wenigstens einen Parallel prozessorkern ausgeführt, so kann es aufgrund der den jewei ligen parallelen Bearbeitungsabschnitten der Programme zuge ordneten Prioritätsstufen Vorkommen, dass die Programme von anderen Programmen mit höherer Prioritätsstufe des parallelen Bearbeitungsabschnitts unterbrochen werden. Unterbrechungen der Programme der Steuerungsaufgabe der SPS sind in der Regel nicht gewünscht, da sie den Rechendurchsatz der Steuerungs- aufgabe reduzieren. Sie verlängern zudem die Gesamtausfüh- rungszeit der Programme, da sich die zeitliche Unterbre chungsdauer der Programme additiv auf die reine Rechenzeit der Programme auswirkt. Insofern ist es günstig, den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungs abschnitts des Programms vom Prioritätenverwalter der Steue rungseinrichtung der SPS dynamisch während des Programmzyklus bei einer Unterbrechung des Programms mit parallelem Bearbei tungsabschnitts anpassen zu können. Dabei dient die Steue rungseinrichtung der SPS zur Ermittlung und Bewertung des zu erwartenden Rechendurchsatzes der Steuerungsaufgabe. Die Steuerungseinrichtung kann den Prioritätenverwalter der SPS zudem zur Anpassung des Werts der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des jeweili gen Programms anstoßen, wenn sich der Rechendurchsatz durch die mögliche Anpassung des Werts der wenigstens einen Priori tätsstufe der parallelen Bearbeitungsabschnitte der Programme auf diese Weise erhöht. Gegebenenfalls kann die Steuerungs einrichtung der SPS bei einer kurzen Programmzyklus-Zeit ent scheiden, dass die Teilaufgaben des Programms rein sequenti ell ausgeführt werden sollen, statt in dem parallelen Bear beitungsabschnitt des Programms, der unter Umständen mit Un terbrechungen der Berechnungen der Teilaufgaben verbunden sein kann. Es kann andernfalls möglich sein, dass die gesamte Ausführungszeit des Programms durch die Parallelisierung langsamer ist, als für den Fall, in dem die Teilaufgaben des Programms ohne Unterbrechung sequentiell abgearbeitet werden.
Zudem kann die Steuerungseinrichtung bei der Bewertung des Rechendurchsatzes die Ausnutzung der Rechenleistung des we nigstens einen Parallelprozessorkerns mit berücksichtigen und dafür sorgen, dass parallel auszuführende Programme, die nicht sequentiell auf dem jeweiligen Hauptprozessorkern aus geführt werden sollen, von dem wenigstens einen Parallelpro zessorkern ausgeführt werden. Die Steuerungseinrichtung der SPS teilt dem Prioritätenverwalter dazu mit, dass er den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbei- tungsabschnitte der Programme dahingehend anpassen soll, bei spielsweise erhöhen falls er vorher minimal war.
Die speicherprogrammierbare Steuerung mit dem Verfahren zum Optimieren einer Datenverarbeitung ist flexibel und univer sell für die verschiedensten Aufgaben des Automatisierungs systems einsetzbar. Beispielsweise kann die SPS aus den Sens ordaten Daten erzeugen, die für die Qualitätssicherung/- kontrolle des Automatisierungssystems relevant sein können. Ist der Sensor zum Beispiel in Form einer Kamera verwirk licht, so kann mithilfe dieser Kamera die Qualität von herge stellten Bauteilen bewertet werden. In diesem Fall erzeugt die SPS dann keine Aktordaten als Ergebnisse, sondern bewer tet die Qualität der Bauteile beispielsweise als fehlerhaft oder als gut. Ferner kann die SPS mit dem Verfahren zum Opti mieren einer Datenverarbeitung in einem Transportsystem umge setzt werden, in dem es erforderlich ist, Transportelemente auf modularen Führungsschienen mit Motormodulen ansteuern und positionieren zu können. Da die Transportelemente individuell positioniert werden können, ist es möglich die Berechnungen für die Transportelemente zu parallelisieren und auf mehrere Prozessorkerne verteilt auszuführen. Die SPS mit dem oben ge nannten Verfahren kann dabei zu einer effizienten Nutzung der Rechenleistung der Prozessorkerne beitragen, mithilfe der Be rechnungen eine hohe Zuverlässigkeit für die Positionierung der Transportelemente bereitstellen und verursacht, durch die flexible Nutzungsmöglichkeit der SPS, geringe Kosten in der Umsetzung .
In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgebildet, die Anpassung der wenigstens einen Priori tätsstufe der parallelen Bearbeitungsabschnitte der jeweili gen Programme bei einer Unterbrechung der Abarbeitung der Teilaufgaben des Programms vorzunehmen. Der Prioritätenver walter kann den Wert der wenigstens einen Prioritätsstufe di rekt bei der Unterbrechung der Abarbeitung der Teilaufgaben des Programms innerhalb des Programmzyklus anpassen, um eine weitere Unterbrechung des Programms für die noch ausstehenden Teilaufgaben zu vermeiden. Gleichermaßen ist der Prioritäten verwalter in der Lage den Wert der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des Programms für den nächsten Programmzyklus anzupassen.
In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgelegt, die Anpassung der wenigstens einen Prioritäts stufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme vorzunehmen, wenn die Teilaufgaben aufgrund von an deren Teilaufgaben eines weiteren Programms mit höherer Prio ritätsstufe auf dem wenigstens einen Parallelprozessorkern unterbrochen werden. Der Prioritätenverwalter kann den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des entsprechenden Programms für die unter brochenen Teilaufgaben auf dem wenigstens einen Parallelpro zessorkern anpassen, um einer weiteren Unterbrechung der Teilaufgaben auf dem wenigstens einen Parallelprozessorkern vorzubeugen und in diesem Zusammenhang für möglichst wenig Verwaltungsaufwand für die noch ausstehenden Teilaufgaben zu sorgen. Denn bei jeder Unterbrechung der Teilaufgaben müssen die vom wenigstens einen Parallelprozessorkern berechneten Zwischenergebnisse übergeben und auf dem Zwischenergeb nisspeicher gesichert werden. Bei jeder Unterbrechung sor tiert der Prioritätenverwalter zudem die Einträge der Priori tätsstufen in der Datenstruktur neu. Bei jeder Wiederaufnahme der unterbrochenen Teilaufgaben muss der wenigstens eine Pa rallelprozessorkern erneut auf den Zwischenergebnisspeicher zugreifen und die gesicherten Zwischenergebnisse als Aus gangspunkt für die weitere Abarbeitung der Teilaufgaben nut zen. Aus diesem Grund sollen die Teilaufgaben möglichst sel ten unterbrochen werden, um einen höheren Rechendurchsatz der Steuerungsaufgabe zu erzeugen und die gesamte Ausführungszeit der Programme und Teilaufgaben auf diese Weise zu reduzieren.
Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, bei der Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme eine zusätzliche Bedingung, insbe sondere eine Echtzeitbedingung der Steuerungsaufgabe, zu be rücksichtigen. Der Prioritätenverwalter gestaltet die Koordi nation sowie die dynamische Anpassung der Werte der Einträge der Prioritätsstufen in der Datenstruktur und die Kommunika tion mit dem wenigstens einen Parallelprozessorkern einfach. Ferner kann mithilfe des Prioritätenverwalters die Echtzeit fähigkeit des Automatisierungssystems gewährleistet werden, da der Prioritätenverwalter die Anpassung der Werte der Prio ritätsstufen der jeweiligen parallelen Bearbeitungsabschnitte der entsprechenden Programme in der Weise vornimmt, dass die Deadlines der Programme in jedem Fall eingehalten werden. Der Prioritätenverwalter passt den Wert von wenigstens einer Pri oritätsstufe an, wenn sich der Rechendurchsatz der Steue rungsaufgabe dadurch erhöht. Die Steuerungseinrichtung kann in diesem Zusammenhang den Rechendurchsatz der Steuerungsauf gabe während eines Programmzyklus laufend bewerten und den Prioritätenverwalter anhand der Bewertung des Rechendurchsat zes zur Anpassung des Werts der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts im jeweiligen Programm anstoßen.
Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, den Wert der wenigstens einen Pri oritätsstufe der parallelen Bearbeitungsabschnitte der jewei ligen Programme um einen Faktor zu reduzieren, wenn die Teil aufgaben des Programms aufgrund von anderen Teilaufgaben ei nes weiteren Programms mit höherer Prioritätsstufe auf dem wenigstens einen Parallelprozessorkern unterbrochen werden. Der Prioritätenverwalter kann dazu ausgelegt sein, den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des jeweiligen Programms um einen Faktor zu reduzieren. Beispielsweise kann der Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des je weiligen Programms bei jeder Unterbrechung der Teilaufgaben des entsprechenden Programms direkt während des Programmzyk- lus um die Hälfte reduziert werden. Alternativ dazu ist eben so eine Anpassung des Werts der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts des jeweiligen Programms um einen geringeren Faktor denkbar. Ferner kann die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des entsprechenden Pro gramms für jeden Programmzyklus auf andere Weise erfolgen. Beispielsweise muss der angepasste Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des je weiligen Programms nicht für jeden Programmzyklus beibehalten werden. Der Prioritätenverwalter kann die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des entsprechenden Programms nach der Bewer tung des Rechendurchsatzes der durch die Steuerungseinrich tung erfolgt, vornehmen. Da die Steuerungseinrichtung den Re chendurchsatz während eines Programmzyklus laufend bewertet, kann der Prioritätenverwalter den Wert der Prioritätsstufe innerhalb eines jeden Programmzyklus und für jeden neuen Pro grammzyklus dynamisch anpassen.
In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgelegt, die wenigstens eine Prioritätsstufe der paral lelen Bearbeitungsabschnitte der jeweiligen Programme auf ei nen minimalen Wert zu setzen, wenn die Teilaufgaben der Pro gramme sequentiell in den entsprechenden Programmen ausführ bar sind. Der Prioritätenverwalter ist in der Lage den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des entsprechenden Programms auf einen mini malen Wert zu setzen. Setzt der Prioritätenverwalter den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des jeweiligen Programms auf den geringsten möglichen Wert, so werden die zugehörigen Teilaufgaben in dem zugeordneten Programm sequentiell abgearbeitet. Denn der mi nimale Wert der Prioritätsstufe bedeutet, dass die Teilaufga ben keine zwingende parallele Abarbeitung erfordern um die Deadlines der Programme einhalten zu können, selbst dann nicht, wenn der wenigstens eine Parallelprozessorkern gerade keine anderen Teilaufgaben abarbeitet, sondern die Teilaufga ben können ebenso sequentiell vom zugeordneten Programm abge arbeitet werden. Diese Ausführungsform ist ebenfalls denkbar bei einer häufigen Unterbrechung der Berechnungen der Teil aufgaben in den parallelen Bearbeitungsabschnitten, da der Prioritätenverwalter den Wert der Prioritätsstufe des paral lelen Bearbeitungsabschnitts des Programms gleich soweit her absetzen kann, dass die Teilaufgaben nach der Unterbrechung der Berechnungen auf dem wenigstens einen Parallelprozessor kern anschließend in dem zugeordneten Programm weiter abgear beitet werden. Auf diese Weise ist es ferner möglich, den Verwaltungsaufwand zu reduzieren.
In der oben dargestellten Ausführungsform wird der Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungs abschnitte der Programme vom Prioritätenverwalter gezielt auf den minimalen Wert gesetzt, damit die Teilaufgaben der Pro gramme sequentiell im zugeordneten Programm abgearbeitet wer den, da sie keine zwingende Parallelisierung benötigen. Es kann jedoch möglich sein, dass der Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme direkt nach der Unterbrechung der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsabschnitte der Pro gramme während des Programmzyklus vom Prioritätenverwalter reduziert wurde. Unabhängig davon kann in einem solchen Fall eine weitere Reduktion des Werts der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts der Programme für einen neuen Programmzyklus von Vorteil sein, wenn die Ab arbeitung der Teilaufgaben der parallelen Bearbeitungsab schnitte der Programme im vorherigen Programmzyklus unterbro chen wurde. Damit der Wert der wenigstens einen Prioritäts stufe jedoch nicht für jeden Programmzyklus verringert wird, kann über eine zusätzliche Bedingung, die zum Beispiel in der Form implementiert sein kann, dass der Wert der wenigstens einen Prioritätsstufe für den neuen Programmzyklus mindestens dem halben Wert der vorgegebenen wenigstens einen Prioritäts stufe entspricht, sichergestellt werden, dass der Wert der wenigstens einen Prioritätsstufe der Programme nicht unge wollt auf den minimalen Wert gesetzt wird.
Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, die wenigstens eine Prioritätsstu fe der parallelen Bearbeitungsabschnitte der jeweiligen Pro gramme zu Beginn eines neuen Programmzyklus auf den vorgege benen Wert zurückzusetzen. Der Prioritätenverwalter kann, wie bereits oben erläutert, den Wert der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des entspre chenden Programms dynamisch mit jedem Programmzyklus anpas sen. In diesem Zusammenhang ist es demnach möglich, dass der Prioritätenverwalter den Wert der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des jeweili gen Programms für den neuen Programmzyklus wieder auf den vorgegebenen Wert der Prioritätsstufe zurücksetzt. Die Anpas sung des Werts der wenigstens einen Prioritätsstufe des pa rallelen Bearbeitungsabschnitts des jeweiligen Programms durch den Prioritätenverwalter hat den Vorteil, dass sie vo rübergehend erfolgen und wieder rückgängig gemacht werden kann .
In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgelegt, die wenigstens eine Prioritätsstufe der paral lelen Bearbeitungsabschnitte der jeweiligen Programme zu Be ginn eines neuen Programmzyklus zu erhöhen, wenn die Teilauf gaben der Programme vorher sequentiell in den zugeordneten Programmen ausgeführt wurden. Der Prioritätenverwalter ist ebenso in der Lage den Wert der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts des jeweiligen Programms der Steuerungsaufgabe zu erhöhen, damit die zugehö rigen Teilaufgaben vor anderen Teilaufgaben eines anderen Ar beitspakets und Programms auf dem wenigstens einen Parallel prozessorkern abgearbeitet werden können. Diese Ausführungs form ist denkbar, wenn die Teilaufgaben vorher im zugeordne ten Programm sequentiell abgearbeitet worden sind. Mithilfe dieser Ausgestaltung kann vermieden werden, dass zu viele Programme der Steuerungsaufgabe irgendwann einen minimalen Wert der wenigstens einen Prioritätsstufe des parallelen Be arbeitungsabschnitts der Programme haben und die Programme rein sequentiell ausgeführt werden. Werden die Programme rein sequentiell auf den Hauptprozessorkernen ausgeführt, kann dies gegebenenfalls zur Folge haben, dass die verfügbare Re chenleistung der Parallelprozessorkerne nicht mehr vollstän dig ausgenutzt wird, was dann in einem verminderten gesamten Rechendurchsatz der Steuerungsaufgabe resultiert.
Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, den Eintrag der Prioritätsstufe in der Datenstruktur im Datenstrukturspeicher gemäß der vorge nommenen Anpassung der wenigstens einen Prioritätsstufe abzu ändern. Ferner ist der Prioritätenverwalter ausgebildet, den wenigstens einen Parallelprozessorkern über die Änderung des Eintrags der Prioritätsstufe in der Datenstruktur zu infor mieren. Der Prioritätenverwalter übernimmt einerseits die dy namische Anpassung des Werts der wenigstens einen Prioritäts stufe des entsprechenden parallelen Bearbeitungsabschnitts des jeweiligen Programms und kann andererseits weiterhin den wenigstens einen Parallelprozessorkern über die Anpassung des Werts der wenigstens einen Prioritätsstufe in der Datenstruk tur informieren.
Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, auf mehreren Programmen der Steue rungsaufgabe verteilt ausführbar zu sein. Der Prioritätenver walter, der Bestandteil der Steuerungseinrichtung ist, kann beispielsweise mehrere Module (beispielsweise Software- Module) umfassen, wobei die einzelnen Module (beispielsweise Software-Module) des Prioritätenverwalters in den mehreren Programmen der Steuerungsaufgabe ausgeführt werden können. Denkbar ist weiterhin, dass der Prioritätenverwalter nur ein einziges zentrales Modul (beispielsweise ein Software-Modul) aufweist, das in einem der mehreren Programme der Steuerungs aufgabe ausgeführt wird. Zudem ist denkbar, den Prioritäten- Verwalter als eigenständiges Programm zu verwirklichen oder als ein oder mehrere externe Hardware-Module .
Die vorstehend erläuterten und/oder in den Unteransprüchen wiedergegebenen vorteilhaften Aus- und Weiterbildungen der Erfindung können - außer zum Beispiel in Fällen eindeutiger Abhängigkeiten oder unvereinbarer Alternativen - einzeln oder aber auch in beliebiger Kombination miteinander zur Anwendung kommen .
Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung, sowie die Art und Weise, wie diese erreicht werden, werden klarer und deutlicher verständlich in Zusam menhang mit der folgenden Beschreibung von Ausführungsbei spielen, die im Zusammenhang mit den schematischen Zeichnun gen näher erläutert werden. Es zeigen:
Fig. 1 eine schematische Darstellung einer erfindungsgemäßen Ausführungsform eines Automatisierungssystems mit einer spei cherprogrammierbaren Steuerung (SPS) ;
Fig. 2 ein Schema zur Erstellung von Arbeitspaketen mit Teil aufgaben und Verwaltung von Prioritätsstufen innerhalb der SPS nach Fig. 1;
Fig. 3 ein Schema eines Verfahrens zum Optimieren einer Da tenverarbeitung auf der SPS nach den Fig. 1 und 2; und
Fig. 4 ein Ablaufdiagramm zur dynamischen Anpassung einer Prioritätsstufe eines parallelen Bearbeitungsabschnitts eines Programms nach Fig. 3.
Anhand der folgenden Figuren wird ein Ausführungsbeispiel ei nes Verfahrens zum Optimieren einer Datenverarbeitung auf ei ner speicherprogrammierbaren Steuerung (SPS) beschrieben. Es wird darauf hingewiesen, dass die Figuren lediglich schemati scher Natur und nicht maßstabsgetreu sind. In diesem Sinne können in den Figuren gezeigte Komponenten und Bauteile zum besseren Verständnis übertrieben groß oder verkleinert darge stellt sein. Ferner wird darauf hingewiesen, dass die Bezugs zeichen in den Figuren unverändert gewählt worden sind, wenn es sich um gleich ausgebildete Bauteile und/oder Komponenten und/oder Größen handelt.
Speicherprogrammierbare Steuerungen (SPS) bilden häufig die Grundlage eines Automatisierungssystems und dienen zur Steue rung oder Regelung einer Anlage oder einer Maschine. Die An steuerung der SPS bzw. der Anlage oder der Maschine erfolgt dabei über Sensoren und Aktoren. Die Sensoren und Aktoren können über eine Kommunikationsschnittstelle mit der Maschine oder der Anlage vernetzt sein, wobei die SPS diese Kommunika tionsschnittstelle nutzt, um mit den Sensoren und Aktoren zu interagieren. Die Datenverarbeitung der SPS ist meist zyk lisch und erfordert von der SPS, genauer gesagt von der Steu erungsaufgabe, dass die Deadlines konsequent eingehalten wer den. Es darf in diesem Zusammenhang zum Beispiel nicht Vor kommen, dass zu dem Zeitpunkt zu dem die Ausgabedaten für die Aktoren benötigt werden, die Verarbeitung der Eingabedaten noch nicht abgeschlossen ist. Die Steuerungsaufgabe muss also die Echtzeitfähigkeit des Automatisierungssystems gewährleis ten können.
Meist setzt sich die Steuerungsaufgabe der SPS aus einer oder mehreren zyklisch auszuführenden Programmen mit Aufgaben, den „Tasks" zusammen. Da viele SPS Prozessoren mit mehreren Pro zessorkernen, die zum Beispiel als Haupt- und Parallelpro zessorkerne verwirklicht sein können, und/oder mehrere Pro zessoren umfassen, kann die SPS die Programme mit Aufgaben (Tasks) auf mehrere Prozessorkerne und/oder mehrere Prozesso ren aufteilen, um die Gesamtverarbeitungszeit der Programme mit Aufgaben zu reduzieren und die Einhaltung der Deadlines der Programme zu sichern. Werden die Aufgaben der Programme von mehreren Prozessorkernen (Hauptprozessorkerne und Paral lelprozessorkerne) parallel abgearbeitet, so ist es sinnvoll, die Aufgaben der Programme für die Abarbeitung einer vorgege benen Prioritätsstufe entsprechend klassifizieren zu können. Aus diesem Grund wird jedem Programm mit entsprechenden Auf gaben gewöhnlich eine vorgegebene Prioritätsstufe zugeteilt. Diese kann aus der Deadline und/oder den Abhängigkeiten der jeweiligen Programme zu den anderen Programmen ermittelt wer den, wenn die Programme beispielsweise auf die Ergebnisse der anderen Programme angewiesen sind.
Die Prioritätsstufe des entsprechenden Programms mit Aufgaben wird von einem Prioritätenverwalter in einer Datenstruktur organisiert. Der Prioritätenverwalter legt den Eintrag der Prioritätsstufe in der Datenstruktur ab. Sofern kein weiterer Eintrag einer Prioritätsstufe in der Datenstruktur vorhanden ist, setzt der Prioritätenverwalter die genannte Prioritäts stufe an die erste Stelle in der Datenstruktur. Der Prioritä tenverwalter kann ferner dazu ausgebildet sein, die parallel arbeitenden Prozessorkerne darüber in Kenntnis zu setzen, wenn sich die Reihenfolge der Einträge der Prioritätsstufen in der Datenstruktur ändert. Beispielsweise kann sich die Reihenfolge ändern, wenn ein neuer Eintrag einer Prioritäts stufe in der Datenstruktur hinzukommt, wobei die Prioritäts stufe dann einen höheren Wert als die Prioritätsstufe des bisherigen Eintrags haben kann. In einem solchen Fall können die Parallelprozessorkerne die Abarbeitung der aktuellen Auf gaben des entsprechenden Programms unterbrechen und mit der Abarbeitung der Aufgaben beginnen, die mit einer höheren Pri oritätsstufe des entsprechenden Programms korrespondieren, um dessen Deadlines einzuhalten. Die Aufgaben eines entsprechen den Programms können in mehrere Arbeitspakete mit Teilaufga ben untergliedert sein.
Während eines Programmzyklus wird ein zu erwartender Rechen durchsatz der Steuerungsaufgabe laufend bewertet. Anhand die ser Bewertung kann entschieden werden, dass wenigstens eine der Prioritätsstufen des parallelen Bearbeitungsabschnitts des jeweiligen Programms der Steuerungsaufgabe dynamisch an- gepasst wird, wenn sich der Rechendurchsatz der Steuerungs aufgabe durch die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts erhöht. Der zu erwartende Rechendurchsatz der Steuerungsaufgabe ist von einer Anzahl an Unterbrechungen der parallelen Bearbei tungsabschnitte der Programme abhängig, da die Anzahl der Un terbrechungen der parallelen Bearbeitungsabschnitte der Pro gramme in einem Verwaltungsaufwand resultiert. Der Verwal tungsaufwand beschreibt die Aktivitäten, die beim Unterbre chen der Abarbeitung der Teilaufgaben in den parallelen Bear beitungsabschnitten in den Programmen der Steuerungsaufgabe erforderlich sind, wie zum Beispiel das Übergeben und Sichern von Zwischenergebnissen. Häufige Unterbrechungen der Abarbei tung der parallelen Bearbeitungsabschnitte führen demnach zu einem höheren Verwaltungsaufwand. Auch die zeitliche Unter brechungsdauer der Programme ist für den Rechendurchsatz re levant, da während der zeitlichen Dauer der Unterbrechung der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsab schnitte der Programme keine Berechnungen durchgeführt, son dern die oben beschriebenen Aktivitäten ausgeführt werden.
Die zeitliche Unterbrechungsdauer verlängert demnach die Aus führungszeit des Programms, da sie additiv auf die eigentli che Rechenzeit des Programms wirkt und diese ist in der Regel vorgegeben. Zudem kann die Unterbrechungsdauer bei der Unter brechung der Berechnungen der Programme mit parallelen Bear beitungsabschnitten zeitlich variieren. Das Ziel ist also den Verwaltungsaufwand möglichst gering zu halten und den Wert der wenigstens einen Prioritätsstufe dynamisch anzupassen, um die Häufigkeit der Unterbrechungen der Berechnungen der Pro gramme zu senken und den Rechendurchsatz damit zu erhöhen.
Ferner ist der zu erwartende Rechendurchsatz der Steuerungs aufgabe von der genutzten Rechenleistung des wenigstens einen Parallelprozessorkerns abhängig. Werden die Programme rein sequentiell auf den entsprechenden Hauptprozessorkernen aus geführt, zum Beispiel in dem sie den minimalen Wert der we nigstens einen Prioritätsstufe der parallelen Bearbeitungsab- schnitte der Programme zugewiesen bekamen, so kann es passie ren, dass der wenigstens eine Parallelprozessorkern gerade keine aktiven Berechnungen durchführt oder nur eingeschränkt aktiv ist. Dies vermindert den Rechendurchsatz der Steue rungsaufgabe, da die Rechenleistung des wenigstens einen Pa rallelprozessorkerns nicht oder nicht vollständig ausgenutzt wird. In einem solchen Fall kann der Wert der wenigstens ei nen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme angepasst, zum Beispiel erhöht werden, damit die Programme parallel auf dem wenigstens einen Parallelpro zessorkern ausgeführt werden und die Rechenleistung der vor handenen Prozessorkerne bestmöglich genutzt wird.
Des Weiteren kann bei der Bewertung des zu erwartenden Re chendurchsatzes der Steuerungsaufgabe die Rechenzeit der pa rallelen Bearbeitungsabschnitte der Programme mit berücksich tigt werden. Denn Programme mit Teilaufgaben mit kurzer Pro grammzyklus-Zeit können gegebenenfalls ohne Parallelisierung schneller rein sequentiell ausgeführt werden, als im jeweili gen parallelen Bearbeitungsabschnitt im Programm. Der paral lele Bearbeitungsabschnitt des jeweiligen Programms kann un terbrochen werden für einen anderen parallelen Bearbeitungs abschnitt eines weiteren Programms mit höherer zugeordneter Prioritätsstufe. Da die Unterbrechungen des parallelen Bear beitungsabschnitts beliebig häufig durch andere Programme mit parallelen Bearbeitungsabschnitten ausgelöst werden können, kann es unter Umständen Vorkommen, dass die gesamte Ausfüh rungszeit des Programms, das durch andere parallele Bearbei tungsabschnitte weiterer Programme unterbrochen wird, länger ist, als ohne Parallelisierung. In einem solchen Fall ist es also denkbar, das Programm mit Teilaufgaben rein sequentiell auszuführen, um auf diese Weise eine kürzere Ausführungszeit des entsprechenden Programms zu erzielen und den Rechendurch satz zu erhöhen.
Der Kern der Erfindung liegt in der Möglichkeit der dynami schen Anpassung des Werts der wenigstens einen Prioritätsstu- fe des parallelen Bearbeitungsabschnitts des jeweiligen Pro gramms der Steuerungsaufgabe. Denn durch die dynamische An passung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des entsprechenden Pro gramms kann flexibel entschieden werden, ob die Teilaufgaben des jeweiligen Programms sequentiell auf dem zugeordneten Hauptprozessorkern oder im jeweiligen parallelen Bearbei tungsabschnitt des Programms zusätzlich auf dem wenigstens einen Parallelprozessorkern abgearbeitet werden sollen. Auf diese Weise kann eine optimale Ausnutzung der Ressourcen be reitgestellt werden, indem die Hauptprozessorkerne und die Parallelprozessorkerne gemeinsam Teilaufgaben des jeweiligen Programms abarbeiten. Die Echtzeitfähigkeit der Steuerungs aufgabe kann durch die Anpassung des Werts der Prioritätsstu fe des parallelen Bearbeitungsabschnitts des entsprechenden Programms der Steuerungsaufgabe weiterhin garantiert werden, indem die Anpassung des Werts der Prioritätsstufe stets so erfolgt, dass die Echtzeitbedingung der Steuerungsaufgabe und die Deadlines der Programme eingehalten werden können.
Fig. 1 zeigt eine speicherprogrammierbare Steuerung (SPS) 100 zur Steuerung einer Maschine bzw. Anlage 200. Die SPS 100 weist eine Kommunikationsschnittstelle 130 sowie eine Daten verarbeitungseinrichtung 110 auf. Über die Kommunikations schnittstelle 130, die beispielweise in Form eines hardware- und/oder softwaremäßig ausgebildeten Feldbusmasters eines Feldbussystems verwirklicht sein kann, kann die SPS 100 die entsprechenden Aktoren 210 und Sensoren 220 der Maschine bzw. der Anlage 200 des Automatisierungssystems steuern, wobei die Aktoren 210 und Sensoren 220 mithilfe des Feldbussystems mit einander vernetzt sein können.
Um die gewünschte Betriebsweise der Maschine bzw. der Anlage 200 bereitstellen zu können, legt die Steuerungsaufgabe der SPS 100 fest, welche seitens der SPS 100 in Abhängigkeit von entsprechenden Eingangsdaten erzeugte Ausgangsdaten den Akto ren 210 zugeführt werden. Die SPS 100 erhält eine Information über den Zustand der Maschine bzw. der Anlage 200, indem sie die Messdaten der Sensoren 220 und/oder die Ist-Daten der Ak toren 210 ausliest, die entsprechend mit den Eingängen der SPS 100 verbunden sind. Die Sensoren 220 können ein elektri sches Signal zur Erfassung einer Messgröße erzeugen oder die Messgröße selbst analog oder digital aufnehmen. Die Aktoren 210 sind an die Ausgänge der SPS 100 angeschlossen und setzen die elektrischen Signale der Ausgangsdaten der SPS 100 in me chanische Bewegung oder andere physikalische Größen (zum Bei spiel Temperatur, Druck, etc.) um.
Die dynamische Ansteuerung der Aktoren 210 kann zunächst auf dem Auslesen der aktuellen Ist-Daten der Aktoren 210 beruhen. Auf Basis der Ist-Daten der Aktoren 210 und der Messdaten der Sensoren 220 können aus den Eingabedaten die Ausgabedaten für die Aktoren 210 generiert werden. Alternativ dazu kann die Ansteuerung der Aktoren 210 aufgrund von Vorgaben, zum Bei spiel anhand von Bewegungsprofilen, erfolgen.
Die Datenverarbeitungseinrichtung 110 kann mehrere Prozessor kerne umfassen, wobei in Fig. 1 beispielsweise ein erster Hauptprozessorkern 111 und ein zweiter Hauptprozessorkern 112 sowie ein erster Parallelprozessorkern 113 und ein zweiter Parallelprozessorkern 114 gezeigt sind. Ebenso denkbar ist eine Ausgestaltung, in der die Datenverarbeitungseinrichtung 110 eine dazu abweichende Anzahl an Hauptprozessorkernen und/oder Parallelprozessorkernen aufweist. Der Vorteil an der Ausgestaltung der Datenverarbeitungseinrichtung 110 mit einem ersten Hauptprozessorkern 111 und einem zweiten Hauptpro zessorkern 112 sowie einem ersten Parallelprozessorkern 113 und einem zweiten Parallelprozessorkern 114 liegt darin, dass die abzuarbeitenden Teilaufgaben der jeweiligen Programme der Steuerungsaufgabe der SPS 100 gemäß der folgenden Beschrei bung auf die beiden Hauptprozessorkerne 111, 112 und die bei den Parallelprozessorkerne 113, 114 verteilt werden können. Dadurch ist es möglich die Rechenzeit zu reduzieren und zu sätzlich eine optimale Auslastung der Ressourcen zu gewähren. Die mehreren ausführbaren Programme der Steuerungsaufgabe, von denen wenigstens zwei Programme einen parallelen Bearbei tungsabschnitt aufweisen, können beispielsweise auf dem ers ten und zweiten Hauptprozessorkern 111, 112 ausgeführt wer den, wobei der erste Parallelprozessorkern 113 und der zweite Parallelprozessorkern 114 wie oben genannt, unterstützend bei der Abarbeitung der Teilaufgaben in den jeweiligen parallelen Abschnitten der Programme der Steuerungsaufgabe mitwirken können. Die Steuerungsaufgabe kann beispielsweise aus einem innerhalb der SPS 100 ausgeführten Programmzyklus bestehen, wobei der Programmzyklus den Empfang der Eingabedaten (die Messdaten der Sensoren 220 und die aktuellen Ist-Daten der Aktoren 210), die Verarbeitung der Eingabedaten zu Ausgabeda ten für die Aktoren 210 und die Ausgabe der Ausgabedaten für die Aktoren 210 umfasst. Nach der erfolgten Verarbeitung, al so dem Ende des Programmzyklus, beginnt der Programmzyklus der Steuerungsaufgabe von neuem.
Im Unterschied zum erfindungsgemäßen Programmzyklus der Steu erungsaufgabe, umfasst ein Feldbuszyklus neben den oben ge nannten Schritten des Programmzyklus, des Weiteren die Über mittlung der Eingabedaten der Sensoren 220 bzw. Aktoren 210 über den Feldbus an die SPS 100. Die Ausgabedaten, die im Programmzyklus innerhalb der SPS 100 generiert wurden, werden in dem Feldbuszyklus ferner über den Feldbus an die Aktoren 210 übertragen, damit die Aktoren 210 entsprechend der emp fangenen Ausgabedaten handeln können.
Die Teilaufgaben in den Programmen, die eine Parallelisierung erfordern und von mehreren Prozessorkernen abgearbeitet wer den, können jeweils wenigstens einem parallelen Bearbeitungs abschnitt in dem Programm des ersten Hauptprozessorkerns 111 bzw. in dem Programm des zweiten Hauptprozessorkerns 112 zu geordnet werden. Den parallelen Bearbeitungsabschnitten in den entsprechenden Programmen des ersten Hauptprozessorkerns 111 und des zweiten Hauptprozessorkerns 112 kann eine Priori tät mit einer vorgegebenen ersten Prioritätsstufe und einer vorgegebenen zweiten Prioritätsstufe zugewiesen sein, wobei die erste Prioritätsstufe und die zweite Prioritätsstufe von einem Prioritätenverwalter 350 einer Steuerungseinrichtung 120 organisiert werden. Der Prioritätenverwalter 350 dient in erster Linie zum Verwalten der ersten und zweiten Prioritäts stufe in der Datenstruktur und zur Vornahme der Anpassung des Werts der jeweiligen Prioritätsstufe des zugeordneten paral lelen Bearbeitungsabschnitts des Programms. Die Datenstruktur kann des Weiteren Methoden aufweisen, welche von den Program men auf den beiden Hauptprozessorkernen 111, 112 und den bei den Parallelprozessorkernen 113, 114 aufgerufen werden kön nen. Wenn der erste Hauptprozessorkern 111 beispielsweise an einen parallelen Bearbeitungsabschnitt im Programm angelangt, so ruft er eine „Füge meine Teilaufgaben hinzu"-Methode von der Datenstruktur des Prioritätenverwalters 350 auf. In der Methode können die Teilaufgaben dann in die Datenstruktur eingeordnet werden und der Prioritätenverwalter 350 kann dazu ausgelegt sein, den ersten und zweiten Parallelprozessorkern 113, 114 über einen neuen, höheren Eintrag oder eine geänder te Reihenfolge der Einträge der Prioritätsstufen in der Da tenstruktur zu informieren, falls die Teilaufgaben der Metho de mit einer höheren Prioritätsstufe verknüpft sind, wobei die Methode auf dem ersten Hauptprozessorkern 111 ausgeführt wird. Die beiden Parallelprozessorkerne unterbrechen darauf hin ihre Abarbeitung der aktuellen Teilaufgaben, organisieren die Zwischenergebnisse und rufen dann eine „Sichere meine Zwischenergebnisse"-Methode aus der Datenstruktur des Priori tätenverwalters 350 auf. In dieser Methode kann dann bei Be darf auch die Prioritätsstufe der zugehörigen Teilaufgaben in der Datenstruktur angepasst werden. Das heißt diese Methode wird jeweils auf dem ersten und zweiten Parallelprozessorkern 113, 114 ausgeführt.
Es ist im Allgemeinen nicht notwendig, dass der Prioritäten verwalter 350 den ersten und zweiten Hauptprozessorkern 111, 112 bzw. das auf den beiden Hauptprozessorkernen 111, 112 auszuführende Programm über eine Änderung des Werts der we- nigstens einen Prioritätsstufe informiert. Denn der erste und zweite Hauptprozessorkern 111, 112 arbeiten die ihm zugehöri gen Teilaufgaben stets ab, auch wenn sie nicht an erster Stelle der Einträge der Prioritätsstufen, die mit den Teil aufgaben verknüpft sind, in der Datenstruktur stehen. Das heißt, die beiden Hauptprozessorkerne 111, 112 arbeiten die ihnen zugehörigen Teilaufgaben unabhängig von der Unterstüt zung der beiden Parallelprozessorkerne 113, 114 ab. Hingegen stellt die rein sequentielle Abarbeitung der Teilaufgaben auf dem ersten und zweiten Hauptprozessorkern 111, 112 einen Un terschied für den ersten und zweiten Parallelprozessorkern 113, 114 dar. Denn wenn der erste und zweite Parallelpro zessorkern 113, 114 eine „Gib mir eine neue Teilaufgabe"- Methode aus der Datenstruktur des Prioritätenverwalters 350 aufrufen und nur noch Teilaufgaben, die mit dem minimalen Wert der Prioritätsstufe der parallelen Bearbeitungsabschnit te der Programme verknüpft sind, vorhanden sind und folglich für die rein sequentielle Abarbeitung auf dem ersten und zweiten Hauptprozessorkern 111, 112 vorgesehen sind, so er halten die beiden Parallelprozessorkerne 113, 114 „Es sind keine Teilaufgaben verfügbar" als Antwort. Der Einfachheit halber wird für die Beschreibung im Folgenden auf die einzel nen Methoden der Datenstruktur des Prioritätenverwalters 350 verzichtet. Gleichwohl können die oben genannten Methoden so wie weitere Methoden der Datenstruktur für die Implementie rung des erfindungsgemäßen Verfahrens in den nachfolgenden Figuren eingesetzt werden.
Der Prioritätenverwalter 350 kann auf mehreren Programmen in Form von mehreren Modulen (beispielsweise Software-Module) verteilt ausgeführt werden. Ebenfalls denkbar ist es, den Prioritätenverwalter 350 als eigenständiges Modul (beispiels weise als Software-Modul) in einem Programm zu verwirklichen, auf den der erste Parallelprozessorkern 113 und der zweite Parallelprozessorkern 114 zugreifen können, um den ersten Hauptprozessorkern 111 und den zweiten Hauptprozessorkern 112 bei der Abarbeitung der Teilaufgaben zu unterstützen. Zudem ist denkbar, den Prioritätenverwalter 350 als eigenständiges Programm zu verwirklichen oder als ein oder mehrere externe Hardware-Module .
In den parallelen Bearbeitungsabschnitten in den Programmen des ersten Hauptprozessorkerns 111 und des zweiten Hauptpro zessorkerns 112 werden zudem ein erstes Arbeitspaket und ein zweites Arbeitspaket erstellt. Das erste Arbeitspaket umfasst eine erste Menge an Teilaufgaben und das zweite Arbeitspaket umfasst eine zweite Menge an Teilaufgaben. Die erste Menge an Teilaufgaben und die zweite Menge an Teilaufgaben können von dem ersten Hauptprozessorkern 111 und dem zweiten Hauptpro zessorkern 112 bzw. dem ersten Parallelprozessorkern 113 und dem zweiten Parallelprozessorkern 114 entsprechend der ersten und zweiten Prioritätsstufe des zugehörigen parallelen Bear beitungsabschnitts abgearbeitet werden.
Es ist möglich, dass ein Programm mehrere sequentielle Bear beitungsabschnitte sowie mehrere parallele Bearbeitungsab schnitte umfasst, wobei die sequentiellen Bearbeitungsab schnitte der Programme im Unterschied zu den parallelen Bear beitungsabschnitten nicht in Arbeitspaketen mit Teilaufgaben aufgeteilt sein und vom Prioritätenverwalter verwaltet werden müssen. Denn die sequentiellen Bearbeitungsabschnitte der Programme - mit Aufgaben, die keine Parallelisierung erfor dern - können auf dem entsprechenden Hauptprozessorkern 111, 112 ohne die Unterstützung des ersten und zweiten Parallel prozessorkerns 113, 114 ausgeführt werden. Die sequentiellen und parallelen Bearbeitungsabschnitte eines Programms können alternierend auftreten. Zudem können Programme nur rein se quentiell ausgeführt werden. Die sequentiellen Bearbeitungs abschnitte bzw. die sequentiell auszuführenden Programme kön nen eine sequentielle Prioritätsstufe aufweisen, die für den sequentiellen Bearbeitungsabschnitt bzw. das ganze Programm der Steuerungsaufgabe gilt. Des Weiteren ist die sequentielle Prioritätsstufe unabhängig davon, ob die Programme der Steue rungsaufgabe einen parallelen Bearbeitungsabschnitt aufweisen oder nicht. Die Aufgaben können dann rein sequentiell im se quentiellen Bearbeitungsabschnitt des Programms bzw. dem se quentiell auszuführenden Programm des entsprechenden Haupt prozessorkern 111, 112 abgearbeitet werden.
In diesem Zusammenhang ist es denkbar, dass mehrere Programme der Steuerungsaufgabe auf einem einzigen Hauptprozessorkern 111, 112 ausgeführt werden können, wobei die sequentielle Prioritätsstufe hierbei relevant ist. Die sequentielle Prio ritätsstufe der Programme kann sich von der Prioritätsstufe der den jeweiligen Programmen zugeordneten parallelen Bear beitungsabschnitte unterscheiden. Beispielsweise ist es dadurch möglich, dass Teilaufgaben eines Arbeitspakets des parallelen Bearbeitungsabschnitts eines entsprechenden Pro gramms auf den Parallelprozessorkernen 113, 114 ausgeführt werden und gleichzeitig können Aufgaben, die keine Paralleli sierung erfordern von dem einen Hauptprozessorkern 111, 112 sequentiell abgearbeitet werden. Falls die sequentielle Abar beitung der Aufgaben ohne Parallelisierung durch ein höher priorisiertes sequentiell auszuführendes Programm (mit Aufga ben ohne Parallelisierung) bzw. einen sequentiellen Bearbei tungsabschnitt eines Programms (mit Aufgaben ohne Paralleli sierung) auf dem einen Hauptprozessorkern 111, 112 unterbro chen wird, kann die parallele Abarbeitung der Teilaufgaben des entsprechenden Arbeitspakets auf dem ersten und zweiten Parallelprozessorkern 113, 114 weiterhin unterbrechungsfrei erfolgen, da den parallelen Bearbeitungsabschnitten in den entsprechenden Programmen eine zur sequentiellen Prioritäts stufe separate Prioritätsstufe zugewiesen sein kann.
Folglich kann eine Unterbrechung der aktuellen Teilaufgaben durch höher priorisierte andere Teilaufgaben nicht nur im Fall der parallelen Abarbeitung der Teilaufgaben auf den Pa rallelprozessorkernen 113, 114, sondern auch im Fall einer sequentiellen Abarbeitung der Aufgaben ohne Parallelisierung auf dem einen Hauptprozessorkern 111, 112 erfolgen. Der Wert der Prioritätsstufe des parallelen Bearbeitungsabschnitts des jeweiligen Programms der Steuerungsaufgabe kann auch in der beschriebenen Ausführungsform mit einem einzigen Hauptpro zessorkern 111, 112 vom Prioritätenverwalter 350 während des Programmzyklus oder für einen neuen Programmzyklus angepasst werden .
Fig. 2 zeigt ein Schema 600 zur Erstellung von Arbeitspaketen mit Teilaufgaben und Verwaltung der Prioritätsstufen inner halb der SPS nach Fig. 1. Die mehreren ausführbaren Programme der Steuerungsaufgabe der SPS können beispielsweise auf dem ersten und zweiten Hauptprozessorkern 111, 112 ausgeführt werden, wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils den wenigstens einen parallelen Bearbeitungsabschnitt aufweisen. Der Pfeil mit dem Bezugszeichen 500 stellt das Er stellen des ersten Arbeitspakets 305 zu Beginn des parallelen Bearbeitungsabschnitts des ersten Hauptprozessorkerns 111 dar. Das erste Arbeitspaket 305 umfasst die erste Menge an Teilaufgaben 320, die im dargestellten Beispiel aus einer ersten Teilaufgabe 321, einer zweiten Teilaufgabe 322, einer dritten Teilaufgabe 323 und einer vierten Teilaufgabe 324 be steht. Das erste Arbeitspaket 305 umfasst ferner die Referenz auf die erste Prioritätsstufe 340 des parallelen Bearbei tungsabschnitts des ersten Hauptprozessorkerns 111. Das Über geben der Referenz auf die erste Prioritätsstufe 340 des pa rallelen Bearbeitungsabschnitts des ersten Hauptprozessor kerns 111 an den Prioritätenverwalter 350 wird mithilfe des Pfeils mit dem Bezugszeichen 505 verdeutlicht. Der Prioritä tenverwalter 350 fügt die erste Prioritätsstufe 340 in eine Datenstruktur 355 ein und speichert die Datenstruktur 355 im Datenstrukturspeicher der Steuerungseinrichtung, der in den Figuren nicht gezeigt ist. Besitzt die Datenstruktur 355 kei ne Einträge, so fügt der Prioritätenverwalter 350 die Refe renz auf die erste Prioritätsstufe 340 an die erste Stelle der Einträge der Prioritätsstufen in der Datenstruktur 355 ein . Die Pfeile mit den Bezugszeichen 510, 515 zeigen das Anfragen des ersten und des zweiten Parallelprozessorkerns 113, 114 beim Prioritätenverwalter 350 an, welcher Eintrag der Priori tätsstufen an der ersten Stelle der Einträge in der Daten struktur 355 steht. Beispielsweise kann der erste Eintrag der Prioritätsstufe in der Datenstruktur 355 die Referenz auf die erste Prioritätsstufe 340 des ersten Hauptprozessorkerns 111 sein. Da sich die erste Prioritätsstufe 340 auf den paralle len Bearbeitungsabschnitt des ersten Hauptprozessorkerns 111 bezieht, greifen der erste Parallelprozessorkern 113 und der zweite Parallelprozessorkern 114 auf das dazu korrespondie rende erste Arbeitspaket 305 zu. Der Zugriff des ersten und zweiten Parallelprozessorkerns 113, 114 auf das erste Ar beitspaket 305 wird mit den Pfeilen mit den Bezugszeichen 520, 525 angezeigt.
Der erste Parallelprozessorkern 113 kann beispielsweise beim ersten Arbeitspaket 305 anfragen, ob es eine freie erste bis vierte Teilaufgabe 321-324 gibt, die noch nicht anderweitig verteilt wurde. Die Anfrage des ersten Parallelprozessorkerns 113 wird mithilfe des Pfeils mit dem Bezugszeichen 520 ange zeigt. Beispielsweise kann dies die erste Teilaufgabe 321 sein, die der erste Parallelprozessorkern 113 zur Abarbeitung zugeteilt bekommt. Die erste Teilaufgabe 321 steht dann für die Verteilung vorerst nicht mehr zur Verfügung, um eine Mehrfachvergabe derselben Teilaufgabe vermeiden zu können.
Dem zweiten Parallelprozessorkern 114 kann auf diese Weise zum Beispiel die zweite Teilaufgabe 322 zugewiesen werden.
Die parallele Ausführung der ersten und zweiten Teilaufgabe 321, 322 von dem ersten und zweiten Parallelprozessorkern 113, 114 ist mithilfe des Bezugszeichens 360 und dem Kasten um den ersten und zweiten Parallelprozessorkern 113, 114 her um angedeutet. Der erste Hauptprozessorkern 111 kann während des parallelen Bearbeitungsabschnitts im Programm auch se quentiell Teilaufgaben abarbeiten, demnach fragt er ebenfalls beim ersten Arbeitspaket 305 nach einer freien ersten bis vierten Teilaufgabe 321-324 zur Abarbeitung an. Die Anfrage des ersten Hauptprozessorkerns 111 wird über den Pfeil mit dem Bezugszeichen 530 dargestellt. Beispielsweise kann ihm die dritte Teilaufgabe 323 zugeteilt werden.
Sobald der erste Hauptprozessorkern 111 oder einer der beiden Parallelprozessorkerne 113, 114 ihre erste bis dritte Teil aufgabe 321-323 vollständig abgearbeitet haben, kann die ver bleibende vierte Teilaufgabe 324 wie oben beschrieben zuge teilt werden. Es wurde ein Ausführungsbeispiel für die Ver teilung der ersten bis vierten Teilaufgabe 321-324 auf den ersten Hauptprozessorkern 111 und den ersten und zweiten Pa rallelprozessorkern 113, 114 gegeben. Ebenfalls denkbar ist es die erste bis vierte Teilaufgabe 321-324 anderweitig auf den ersten Hauptprozessorkern 111 und den ersten und zweiten Parallelprozessorkern 113, 114 aufzuteilen.
Gelangt der zweite Hauptprozessorkern 112 an seinen paralle len Bearbeitungsabschnitt in seinem Programm, so erstellt er das zweite Arbeitspaket 310 mit der zweiten Menge an Teilauf gaben 330, die im dargestellten Beispiel aus einer fünften Teilaufgabe 331, einer sechsten Teilaufgabe 332 und einer siebten Teilaufgabe 333 besteht. Das Erstellen des zweiten Arbeitspakets 310 vom zweiten Hauptprozessorkern 112 ist mit hilfe des Pfeils mit dem Bezugszeichen 535 visualisiert . Fer ner umfasst das zweite Arbeitspaket 310 die Referenz auf die zweite Prioritätsstufe 345 des parallelen Bearbeitungsab schnitts im Programm des zweiten Hauptprozessorkerns 112. Die Referenz auf die zweite Prioritätsstufe 345 übergibt der zweite Hauptprozessorkern 112 ferner dem Prioritätenverwalter 350. Das Übergeben der Referenz auf die zweite Prioritätsstu fe wird mit dem Pfeil mit dem Bezugszeichen 540 dargestellt. Der Prioritätenverwalter 350 ordnet die Referenz auf die zweite Prioritätsstufe 345 ihrem Wert entsprechend an die zweite Stelle der Einträge der Prioritätsstufen in die Daten struktur 355 oder an die erste Stelle der Einträge der Prio ritätsstufen in die Datenstruktur 355 ein. Befand sich vorher bereits ein anderer Eintrag an der ersten Stelle der Einträge der Prioritätsstufen in der Datenstruktur 355, so wird die ser, für den Fall, dass die erste Prioritätsstufe 340 niedri ger ist als die zweite Prioritätsstufe 345 des neuen Ein trags, vom Prioritätenverwalter 350 an die zweite Stelle der Einträge der Prioritätsstufen in der Datenstruktur 355 ge setzt und die Einträge der Datenstruktur 355 im Datenstruk turspeicher gesichert.
Ändert sich die Reihenfolge der Einträge der Prioritätsstufen in der Datenstruktur 355, so informiert der Prioritätenver walter 350 den ersten und zweiten Parallelprozessorkern 113, 114 darüber. Der Vorgang geht mit dem Unterbrechen der aktu ell von dem ersten Parallelprozessorkern 113 und/oder dem zweiten Parallelprozessorkern 114 bearbeiteten ersten, zwei ten und gegebenenfalls vierten Teilaufgabe 321, 322, 324 aus der ersten Menge an Teilaufgaben 320 einher. Die Zwischener gebnisse der Berechnungen können an die in Fig. 1 dargestell te Steuerungseinrichtung 120 übergeben werden und auf einem nicht dargestellten Zwischenergebnisspeicher gesichert wer den. Auf den Zwischenergebnisspeicher können sowohl der erste und zweite Hauptprozessorkern 111, 112 als auch der erste und zweite Parallelprozessorkern 113, 114 zugreifen, falls die Abarbeitung der unterbrochenen ersten, zweiten und gegebenen falls vierten Teilaufgabe 321, 322, 324 auf den Parallelpro zessorkernen 113, 114 fortgeführt werden soll.
Während der erste Hauptprozessorkern 111 die dritte Teilauf gabe 323 aus der ersten Menge an Teilaufgaben 320 des ersten Arbeitspakets 305 weiter sequentiell abarbeitet, so fragen der erste Parallelprozessorkern 113 und der zweite Parallel prozessorkern 114 sowie der zweite Hauptprozessorkern 112 beim zweiten Arbeitspaket 310 nach den fünften bis siebten Teilaufgaben 331-333 aus der zweiten Menge an Teilaufgaben 330 an. Die Anfragen der jeweiligen Prozessorkerne sind mit hilfe der drei Pfeile mit den Bezugszeichen 545, 550, 555 dargestellt. Beispielsweise kann die fünfte Teilaufgabe 331 dem ersten Parallelprozessorkern 113 und die siebte Teilauf- gäbe 333 dem zweiten Parallelprozessorkern 114 zugeteilt wer den. Die sechste Teilaufgabe 332 kann vom zweiten Hauptpro zessorkern 112 währenddessen sequentiell abgearbeitet werden. Für die Verteilung der fünften bis siebten Teilaufgabe 331- 333 auf den ersten und zweiten Parallelprozessorkern 113, 114 und den zweiten Hauptprozessorkern 112 ist ebenso eine vom dargestellten Beispiel abweichende Aufteilung der fünften bis siebten Teilaufgabe 331-333 denkbar.
Die beiden Parallelprozessorkerne 113, 114 müssen nicht zwin gend warten, bis alle fünften bis siebten Teilaufgaben 331- 333 aus dem höher priorisierten zweiten Arbeitspaket 310 des parallelen Bearbeitungsabschnitts des Programms des zweiten Hauptprozessorkerns 112 fertig abgearbeitet worden sind. Hat der erste Parallelprozessorkern 113 zum Beispiel seine fünfte Teilaufgabe 331 bereits vollständig abgearbeitet, während der zweite Parallelprozessorkern 114 noch mit der Abarbeitung der siebten Teilaufgabe 333 und der zweite Hauptprozessorkern 112 mit der Abarbeitung der sechsten Teilaufgabe 332 des zweiten Arbeitspakets 310 beschäftigt sind, so kann der erste Paral lelprozessorkern 113 bereits mit der Abarbeitung einer der zuvor unterbrochenen ersten bis vierten Teilaufgabe 321-324 des ersten Arbeitspakets 305 beginnen, die mit einer niedri geren Prioritätsstufe verknüpft sind. Dies ist möglich, falls der erste Parallelprozessorkern 113 nach der Abarbeitung sei ner fünften Teilaufgabe 331 beim zweiten Arbeitspaket 310 nach einer freien Teilaufgabe anfragt, es jedoch gerade keine freie Teilaufgabe an erster Stelle des zweiten Arbeitspakets mehr gibt, wobei die beiden Arbeitspakete 305, 310 ebenfalls Teil der Datenstruktur 355 sein können. Dann kann der erste Parallelprozessorkern 113 mit der Abarbeitung einer der ers ten bis vierten Teilaufgabe 321-324 aus dem ersten Arbeitspa ket 305 beginnen, damit die Rechenleistung des ersten Paral lelprozessorkerns 113 optimal ausgenutzt werden kann. Das heißt, unnötige Wartezeiten für den Beginn der Abarbeitung der ersten bis siebten Teilaufgaben 321-324, 331-333 von den beiden Parallelprozessorkernen 113, 114 können vermieden wer den .
Bei der Wiederaufnahme der Abarbeitung der ersten und zweiten Teilaufgabe 321, 322 des ersten Arbeitspakets 305 durch den ersten und zweiten Parallelprozessorkern 113, 114 kann die
Verteilung der ersten und zweiten Teilaufgabe 321, 322 aus dem ersten Arbeitspaket 305 auf den ersten und zweiten Paral lelprozessorkern 113, 114 beispielsweise analog zum beschrie benen Ausführungsbeispiel erfolgen, d.h. der erste Parallel prozessorkern 113 bekommt die erste Teilaufgabe 321 und der zweite Parallelprozessorkern 114 die zweite Teilaufgabe 322 vom ersten Arbeitspaket 305 zugeteilt. Die beiden Parallel prozessorkerne 113, 114 greifen auf den Zwischenergebnisspei cher zu, um die Zwischenergebnisse der ersten und zweiten Teilaufgabe 321, 322 für die weitere Abarbeitung der genann ten Teilaufgaben nutzen zu können.
Sind die fünfte, sechste und siebte Teilaufgabe 331, 332, 333 von den oben beschriebenen Prozessorkernen aus der zweiten Menge an Teilaufgaben 330 gänzlich erledigt, so meldet das entsprechende zweite Arbeitspaket 310 dies an den Prioritä tenverwalter 350, damit der Prioritätenverwalter 350 die ent sprechende Referenz auf die zweite Prioritätsstufe 345 aus den Einträgen der Prioritätsstufen in der Datenstruktur 355 entfernt .
Da der erste Hauptprozessorkern 111 die dritte Teilaufgabe 323 des ersten Arbeitspakets 305 weiter abgearbeitet hat, während der erste Parallelprozessorkern 113 die fünfte Teil aufgabe 331 und der zweite Parallelprozessorkern 114 die siebte Teilaufgabe 333 aus dem zweiten Arbeitspaket 310 abge arbeitet haben, ist es möglich, dass der erste Hauptpro zessorkern 111 in der Zeit, in der die Parallelprozessorkerne 113, 114 ihre zugeteilte fünfte und siebte Teilaufgabe 331, 333 gänzlich abarbeiten, auch der erste Hauptprozessorkern 111 die Abarbeitung der dritten Teilaufgabe 323 vollständig abschließt. Danach kann der erste Hauptprozessorkern 111 beim ersten Arbeitspaket 305 nach der verbleibenden vierten Teil aufgabe 324 anfragen und diese abarbeiten, während die Paral lelprozessorkerne 113, 114 die Abarbeitung der ersten und zweiten Teilaufgabe 321, 322 wieder aufnehmen. Die Anfrage des ersten Hauptprozessorkerns 111 beim ersten Arbeitspaket 305 wird über den Pfeil mit dem Bezugszeichen 530 angezeigt.
Sind die erste, zweite und vierte Teilaufgabe 321, 322, 324 vollständig von dem ersten und zweiten Parallelprozessorkern 113, 114 sowie dem ersten Hauptprozessorkern 111 abgearbeitet worden, und ferner die dritte Teilaufgabe 323 von dem ersten Hauptprozessorkern 111 fertiggestellt worden, so meldet das zugehörige erste Arbeitspaket 305 die Erledigung der ersten bis vierten Teilaufgabe 321-324 an den Prioritätenverwalter 350, damit dieser die Referenz auf die erste Prioritätsstufe 340 aus den Einträgen der Prioritätsstufen in der Datenstruk tur 355 entfernt. Denkbar ist weiterhin, dass der Prioritä tenverwalter 350 selbst bei dem ersten und zweiten Arbeitspa ket 305, 310 anfragt, ob noch erste bis siebte Teilaufgaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilauf gaben 320, 330 zur Erledigung bereitstehen, und dann gegebe nenfalls die entsprechende Referenz auf die erste und zweite Prioritätsstufe 340, 345 aus der Datenstruktur 355 im Daten strukturspeicher entfernt.
Sobald der erste und zweite Hauptprozessorkern 111, 112 im parallelen Bearbeitungsabschnitt eine weitere erste bis sieb te Teilaufgabe 321-324, 331-333 von seinem jeweiligen Ar beitspaket 305, 310 anfordert, aber keine unbearbeitete erste bis siebte Teilaufgabe 321-324, 331-333 mehr verfügbar ist, wartet der erste und zweite Hauptprozessorkern 111, 112 bis die Parallelprozessorkerne 113, 114 die aktuell noch ausge führten ersten bis siebten Teilaufgaben 321-324, 331-333 zu Ende abgearbeitet haben. Dann wird der entsprechende paralle le Bearbeitungsabschnitt des ersten und zweiten Hauptpro zessorkerns 111, 112 verlassen und das erste und zweite Ar- beitspaket 305, 310 gelöscht. Danach können der erste und zweite Hauptprozessorkern 111, 112 beliebige weitere (nicht parallelisierte) Berechnungen ausführen, z.B. auf den Ergeb nissen des vorherigen parallelen Bearbeitungsabschnitts auf bauend .
Durch die Verteilung einzelner erster bis siebter Teilaufga ben 321-324, 331-333 auf den ersten und zweiten Hauptpro zessorkern 111, 112 und den ersten und zweiten Parallelpro zessorkern 113, 114 kann die Gesamtbearbeitungszeit der ers ten bis siebten Teilaufgaben 321-324, 331-333 reduziert und die Rechenkapazität optimal ausgenutzt werden. Ferner können Deadlines der Programme eingehalten und die Echtzeitfähigkeit der Steuerungsaufgabe gewährleistet werden, indem die erste und zweite Prioritätsstufe 340, 345 der jeweiligen parallelen Bearbeitungsabschnitte der Programme des ersten und zweiten Hauptprozessorkerns 111, 112 berücksichtigt werden. Denn mit hilfe der ersten und zweiten Prioritätsstufe 340, 345 kann die Abarbeitung der ersten bis vierten Teilaufgabe 321-324, aus der ersten Menge an Teilaufgaben 320 zugunsten anderer fünfter bis siebter Teilaufgaben 331-333 aus der zweiten Men ge an Teilaufgaben 330 unterbrochen werden, falls diesen eine höhere zweite Prioritätsstufe 345 zugeordnet ist. Ebenso denkbar ist, dass die Abarbeitung der fünften bis siebten Teilaufgabe 331-333 aus der zweiten Menge an Teilaufgaben mit der zweiten Prioritätsstufe 345 aufgrund der höher priori- sierten ersten Menge an Teilaufgaben 320 mit der ersten bis vierten Teilaufgabe 321-324 und der ersten Prioritätsstufe unterbrochen wird. Unterbrochene erste bis siebte Teilaufga ben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 können weiter abgearbeitet werden. Denn die Referenz auf den ersten und zweiten Prioritätsstufenein trag 340, 345 bleibt in der Datenstruktur 355 im Datenstruk turspeicher erhalten, so lange die entsprechenden ersten bis siebten Teilaufgaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 des ersten und zweiten Arbeitspakets 305, 310 nicht vollständig abgearbeitet worden sind .
In einer Ausführungsform wird das erste und zweite Arbeitspa ket 305, 310 mit der ersten und zweiten Menge an Teilaufgaben 320, 330, sowie der Referenz auf die erste und zweite Priori tätsstufe 340, 345 zu Beginn der Ausführung des jeweiligen Programms von dem ersten und zweiten Hauptprozessorkern 111, 112 erstellt. Ebenfalls ist denkbar, dass am Anfang eines weiteren parallelen Bearbeitungsabschnitts im Programm des ersten Hauptprozessorkerns 111 und/oder des zweiten Hauptpro zessorkerns 112 jeweils ein neues Arbeitspaket erstellt wird.
Bei der Unterbrechung der Abarbeitung der ersten bis siebten Teilaufgabe 321-324, 331-333 in dem parallelen Bearbeitungs abschnitt des jeweiligen Programms ist in der Regel jedoch nicht bestimmbar, welche Daten für eine Fortführung der ge nannten Teilaufgaben im jeweiligen Programm nach der Unter brechung relevant sind, da die erste bis siebte Teilaufgabe 321-324, 331-333 an einer beliebigen Stelle im entsprechenden Programm während der Ausführungszeit des Programms unterbro chen werden kann. Insofern kann diese Ausführungsform die Si cherung sämtlicher Daten erfordern, die bei der Abarbeitung der ersten bis siebten Teilaufgaben 321-324, 331-333 im pa rallelen Bearbeitungsabschnitt im entsprechenden Programm er stellt bzw. bearbeitet wurden, wenn kein entsprechender Un terbrechungspunkt in den ersten bis siebten Teilaufgaben 321- 324, 331-333 gesetzt wurde, bis zu dem die Abarbeitung der ersten bis siebten Teilaufgaben 321-324, 331-333 fortgeführt und dann unterbrochen wird. Denn mithilfe des vorgegebenen Unterbrechungspunkts, der beispielsweise in einer Kontroll struktur in den ersten bis siebten Teilaufgaben 321-324, 331- 333 gesetzt sein kann, ist bekannt, welche Daten bei der Fortführung der unterbrochenen ersten bis siebten Teilaufga ben 321-324, 331-333 benötigt werden. Im Fall des gesetzten Unterbrechungspunkts müssen nicht sämtliche Daten gesichert werden, sondern es ist ausreichend, die aktuelle Iteration der Kontrollstruktur, die sich um eine Schleife handeln kann, und gegebenenfalls vorhandene Zwischenergebnisse der Berech nungen zu speichern.
Eine weitere Ausführungsform sieht vor, dass die Abarbeitung der ersten bis siebten Teilaufgabe 321-324, 331-333 in dem parallelen Bearbeitungsabschnitt des jeweiligen Programms auf dem ersten und zweiten Parallelprozessorkern 113, 114 umge hend abgebrochen wird und dabei keine Zwischenergebnisse der Berechnungen gesichert werden. Folglich muss eine abgebroche ne erste bis siebte Teilaufgabe 321-324, 331-333 wieder von Beginn an neu berechnet werden. Der sofortige Abbruch der ak tuell ausgeführten ersten bis siebten Teilaufgaben 321-324, 331-333 auf den beiden Parallelprozessorkernen 113, 114 ohne Sicherung der Daten kann beispielsweise angewendet werden, wenn der erste oder zweite Hauptprozessorkern 111, 112 einen parallelen Bearbeitungsabschnitt mit einer sehr kleinen Pro grammzyklus-Zeit aufweisen und die Parallelisierung erforder lich ist, um die Deadlines einhalten zu können. Von Vorteil ist dabei, dass mithilfe der Ausgestaltung eine geringste mögliche Latenz erzielt werden kann, wobei die Latenz die Zeit zwischen dem Abbruch der Berechnungen der aktuellen ers ten bis vierten Teilaufgabe 321-324 (fünften bis siebten Teilaufgabe 331-333) auf den Parallelprozessorkernen 113, 114 und dem Beginn der Berechnungen der neuen fünften bis siebten Teilaufgabe 331-333 (ersten bis vierten Teilaufgabe 321-324) auf den Parallelprozessorkernen 113, 114, die mit einer höhe ren Prioritätsstufe verknüpft ist, angibt. Eine solche Aus führungsform setzt das Erreichen einer möglichst geringen La tenz zum Ziel, daher können Zwischenergebnisse der ersten bis siebten Teilaufgabe 321-324, 331-333 mit einer niedrigen Pri oritätsstufe verworfen werden.
Statt der Unterbrechung der aktuell ausgeführten ersten bis vierten Teilaufgabe 321-324 ist es ferner denkbar, die erste bis vierte Teilaufgabe 321-324 bis zum Ende abzuarbeiten und eine neue fünfte bis siebte Teilaufgabe 331-333 mit höherer Prioritätsstufe des jeweiligen parallelen Bearbeitungsab schnitts, geeignet in die Datenstruktur 355 des Prioritäten verwalters 350 einzusortieren, jedoch ohne die Abarbeitung der aktuellen ersten bis vierten Teilaufgaben 321-324 dabei zu unterbrechen. Die Parallelprozessorkerne 113, 114 werden auf diese Weise nicht gezwungen, ihre Berechnungen umgehend abzubrechen oder sie zu unterbrechen, falls der neuen fünften bis siebten Teilaufgabe 331-333 eine höhere Priorität zuge ordnet ist, als der aktuellen ersten bis vierten Teilaufgabe 321-324. Denn sobald die beiden Parallelprozessorkerne 113, 114 die Abarbeitung ihrer aktuellen ersten bis vierten Teil aufgaben 321-324 mit niedrigerer Prioritätsstufe abgeschlos sen haben, bekommen sie bei der Anfrage nach der nächsten Teilaufgabe über den herkömmlichen Weg eine der neuen, höher priorisierten fünften bis siebten Teilaufgaben 331-333 zuge teilt. Beispielsweise kann die Ausgestaltung zum Einsatz kom men, wenn die ersten bis siebten Teilaufgaben 321-324, 331- 333 in dem ersten Arbeitspaket 305 und dem zweiten Arbeitspa ket 310 relativ klein sind und die Abarbeitung von den Pro zessorkernen demnach zügig erfolgen kann. Der Vorteil an die ser Ausgestaltung ist, dass der Rechendurchsatz ohne Abbruch oder Unterbrechung der ersten bis siebten Teilaufgabe 321- 324, 331-333 auf den beiden Parallelprozessorkernen 113, 114 am höchsten ist.
Die Ausführungsform, bei der die aktuell bearbeiteten ersten bis siebten Teilaufgaben 321-324, 331-333 unterbrochen und deren Zwischenergebnisse auf dem Zwischenergebnisspeicher ge sichert werden, kann einem guten Kompromiss zwischen Latenz und Rechendurchsatz entsprechen. Es ist möglich, die oben be schriebenen verschiedenen Ausgestaltungen der Unterbrechung, des sofortigen Abbruchs oder der passenden Einsortierung der ersten bis siebten Teilaufgabe miteinander zu kombinieren und sie situationsbedingt geeignet umzusetzen.
In einer Ausführungsform kann der Prioritätenverwalter 350 den ersten und zweiten Parallelprozessorkern 113, 114 aktiv über die Änderung des ersten Eintrags der ersten oder zweiten Prioritätsstufe 340, 345 in der Datenstruktur 355 informie ren. Damit können der erste und der zweite Parallelprozessor kern 113, 114 jeweils direkt beim entsprechenden ersten oder zweiten Arbeitspaket 305, 310 nach einer freien ersten bis siebten Teilaufgabe 321-324, 331-333 anfragen und frühzeitig mit deren Abarbeitung beginnen. Die Anfragen der jeweiligen Parallelprozessorkerne 113, 114 sind mithilfe der Bezugszei chen 520, 525, 545, 550 dargestellt. Auch kann der Prioritä tenverwalter 350 dahingehend ausgestaltet sein, dass der ers te und zweite Parallelprozessorkern 113, 114 selbst aktiv beim Prioritätenverwalter 350 anfragen, ob es eine Änderung in der Reihenfolge der Einträge der ersten und zweiten Prio ritätsstufe 340, 345 gibt. Das Anfragen des ersten und zwei ten Parallelprozessorkerns 113, 114 ist mithilfe der beiden Pfeile mit den Bezugszeichen 510, 515 angedeutet.
Denkbar ist weiterhin, dass die Anfragen des ersten und zwei ten Hauptprozessorkerns 111, 112 und des ersten und zweiten Parallelprozessorkerns 113, 114 an das erste oder zweite Ar beitspaket 305, 310 von einer zentralen Einrichtung gesteuert werden. Die Anfragen der jeweiligen Prozessorkerne sind mit hilfe der Pfeile mit den Bezugszeichen 520, 525, 530, 545, 550, 555 dargestellt. Die zentrale Einrichtung kann des Wei teren die Aufgabenverteilung der ersten bis siebten Teilauf gaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 des ersten und zweiten Arbeitspakets 305, 310 steuern. Ferner kann die zentrale Einrichtung dafür Sorge tragen, dass die Meldung der Erledigung aller ersten bis siebten Teilaufgaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 des ersten und zweiten Arbeitspakets 305, 310 an den Prioritätenverwalter 350 gelei tet wird.
Haben die erste und zweite Prioritätsstufe 340, 345 der ent sprechenden parallelen Bearbeitungsabschnitte in den Program men der ersten und zweiten Hauptprozessorkerne 111, 112 den gleichen Wert, so können sich der erste und zweite Hauptpro zessorkern 111, 112 den ersten und zweiten Parallelprozessor kern 113, 114 für die parallele Ausführung 360 der ersten bis siebten Teilaufgaben 321-324, 331-333 teilen.
Die bisherige Beschreibung hat sich darauf bezogen, dass der Wert der wenigstens einen Prioritätsstufe des parallelen Be arbeitungsabschnitts des entsprechenden Programms unverändert während eines Programmzyklus bleibt, um die Erläuterung der Erstellung der Arbeitspakete und des Zugriffs auf die Ar beitspakete sowie die Verwaltung der Prioritätsstufen der pa rallelen Bearbeitungsabschnitte der Programme zu vereinfa chen. Der Wert der wenigstens einen Prioritätsstufe der je weiligen parallelen Bearbeitungsabschnitte der Programme der Steuerungsaufgabe kann für die in den Fig. 1 und 2 gezeigten Ausführungsformen vom Prioritätenverwalter ebenso angepasst werden, wie es in den nachfolgenden Figuren, im Fall der Un terbrechung des parallelen Bearbeitungsabschnitts der Pro gramme beschrieben wird. Um den Rechendurchsatz der Steue rungsaufgabe zu erhöhen, ist es bei der Bewertung des Rechen durchsatzes für die Fig. 1 und 2 (sowie die nachfolgenden Fi guren) ferner möglich, die Rechenzeit des jeweiligen paralle len Bearbeitungsabschnitts der Programme der Steuerungsaufga be mit zu berücksichtigen und Teilaufgaben der entsprechenden Programme, die keine zwingende parallele Ausführung erfordern rein sequentiell auf dem zugeordneten Hauptprozessorkern ab zuarbeiten. Ferner ist es günstig, bei der Bewertung des Re chendurchsatzes der Steuerungsaufgabe die Rechenleistung der beiden Parallelprozessorkerne mit zu berücksichtigen, und ihnen im Fall der nicht vollständigen Ausnutzung ihrer Re chenleistung Teilaufgaben für die parallele Abarbeitung zuzu teilen. Dazu kann es erforderlich sein, dass der Prioritäten verwalter den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme geeignet an passt . Fig. 3 zeigt ein Schema eines Verfahrens 300 zur Datenverar beitung auf der SPS nach den Fig. 1 und 2. Als Ausgangspunkt dient ebenso wie in den Fig. 1 und 2 gezeigt wurde, der erste und zweite Hauptprozessorkern 111, 112 sowie der erste und zweite Parallelprozessorkern 113, 114. Es ist hingegen auch eine dazu abweichende Anzahl an Haupt- und/oder Parallelpro zessorkernen denkbar. Jedoch ist wenigstens ein Parallelpro zessorkern für eine parallele Ausführung 375, 380, 385, 390 der Teilaufgaben der jeweiligen parallelen Bearbeitungsab schnitte 303, 304 der Programme der Steuerungsaufgabe notwen dig. Wird eine zu den in den Fig. 1 bis 3 gezeigte, abwei chende Anzahl an Hauptprozessorkernen eingesetzt, so können sich die Anzahl der Arbeitspakete und die Anzahl der Teilauf gaben folglich unterscheiden. In dem in Fig. 3 gezeigten Aus führungsbeispiel gelangt zunächst der erste Hauptprozessor kern 111 im Programm an seinen parallelen Bearbeitungsab schnitt 303. Der parallele Bearbeitungsabschnitt ist mithilfe des obersten gestreiften horizontalen Balkens und der ge schweiften Klammer mit dem Bezugszeichen 303 angedeutet. Zu Beginn seines parallelen Bearbeitungsabschnitts 303 erstellt der erste Hauptprozessorkern 111 das erste Arbeitspaket mit der ersten bis vierten Teilaufgabe und der Referenz auf die erste Prioritätsstufe des zugeordneten parallelen Bearbei tungsabschnitts 303, wie oben beschrieben. An dieser Stelle wird auf eine explizite Beschreibung der Zuteilung der jewei ligen Teilaufgaben verzichtet, da sie in gleicher Weise er folgen kann, wie bereits in Fig. 2 beschrieben wurde.
Die erste bis vierte Teilaufgabe kann im parallelen Bearbei tungsabschnitt 303 des entsprechenden Programms auf dem ers ten Hauptprozessorkern 111 sequentiell ausgeführt werden, was mithilfe des Bezugszeichens 365 verdeutlicht wird. Im paral lelen Bearbeitungsabschnitt 303 des ersten Hauptprozessor kerns 111 kann die erste bis vierte Teilaufgabe zusätzlich zur sequentiellen Ausführung 365 von dem ersten und zweiten Parallelprozessorkern 113, 114 auch parallel ausgeführt wer den. Die parallele Ausführung der ersten bis vierten Teilauf- gäbe ist über die beiden unteren gestreiften Balken mit den Bezugszeichen 375 und 380 dargestellt. Zuerst sind nur die erste bis vierte Teilaufgabe des ersten Arbeitspakets des pa rallelen Bearbeitungsabschnitts 303 des ersten Hauptpro zessorkerns 111 verfügbar, welche daher konkurrenzlos und oh ne vorherige Unterbrechung von dem ersten und zweiten Paral lelprozessorkern 113, 114 abgearbeitet werden können.
Gelangt jedoch der zweite Hauptprozessorkern 112 im Programm an seinen parallelen Bearbeitungsabschnitt 304, so werden die Berechnungen der zuvor aktiv abgearbeiteten ersten bis vier ten Teilaufgaben auf dem ersten und zweiten Parallelpro zessorkern 113, 114 unterbrochen. Die Unterbrechung der Abar beitung der ersten bis vierten Teilaufgabe des parallelen Be arbeitungsabschnitts 303 des Programms, das auf dem ersten Hauptprozessorkern 111 ausgeführt wird, ist mithilfe des Be zugszeichens 366 dargestellt. Die Unterbrechung der Abarbei tung der ersten bis vierten Teilaufgabe des parallelen Bear beitungsabschnitts 303 des entsprechenden Programms kann nach einer der im Zusammenhang mit Fig. 2 erläuterten Möglichkei ten erfolgen. Gegebenenfalls können ermittelte Zwischenergeb nisse der Berechnungen an den Zwischenergebnisspeicher über geben und dort gesichert werden. Dieser Verwaltungsaufwand führt dazu, dass der erste und zweite Parallelprozessorkern 113, 114 nach dem Zeitpunkt der Unterbrechung der Abarbeitung der ersten bis vierten Teilaufgabe des parallelen Bearbei tungsabschnitts 303 des Programms, das auf dem ersten Haupt prozessorkern 111 ausgeführt wird, nicht umgehend mit der Ab arbeitung der Teilaufgaben des parallelen Bearbeitungsab schnitts 304 des entsprechenden Programms, das auf dem zwei ten Hauptprozessorkern 112 ausgeführt wird, beginnen können. Aufgrund des Verwaltungsaufwands kann die Abarbeitung der Teilaufgaben des parallelen Bearbeitungsabschnitts 304 des Programms, das auf dem zweiten Hauptprozessorkern 112 ausge führt wird, erst mit entsprechender zeitlicher Verzögerung erfolgen . Der zweite Hauptprozessorkern 112 erstellt zu Beginn seines parallelen Bearbeitungsabschnitts 304 im entsprechenden Pro gramm das zweite Arbeitspaket 310 mit der fünften bis siebten Teilaufgabe und der Referenz auf die Prioritätsstufe des zu geordneten parallelen Bearbeitungsabschnitts 304. Die fünfte bis siebte Teilaufgabe kann im parallelen Bearbeitungsab schnitt 304 des entsprechenden Programms auf dem zweiten Hauptprozessorkern 112 sequentiell ausgeführt werden, was mithilfe des Bezugszeichens 370 verdeutlicht wird. Im paral lelen Bearbeitungsabschnitt 304 des zweiten Hauptprozessor kerns 112 kann die fünfte bis siebte Teilaufgabe zusätzlich zur sequentiellen Ausführung 370 von dem ersten und zweiten Parallelprozessorkern 113, 114 auch parallel ausgeführt wer den. Die parallele Ausführung der fünften bis siebten Teil aufgabe ist über die beiden unteren gepunkteten Balken mit den Bezugszeichen 385, 390 dargestellt. In Fig. 3 wurde ange nommen, dass der Wert der zweiten Prioritätsstufe des paral lelen Bearbeitungsabschnitts 304 des entsprechenden Pro gramms, das auf dem zweiten Hauptprozessorkern 112 ausgeführt wird, höher ist, als der Wert der ersten Prioritätsstufe des entsprechenden parallelen Bearbeitungsabschnitts 303 des an deren Programms, das auf dem ersten Hauptprozessorkern 111 ausgeführt wird. Diese Annahme führt dazu, dass die Abarbei tung der ersten bis vierten Teilaufgabe des parallelen Bear beitungsabschnitts 303 des entsprechenden Programms auf dem ersten und zweiten Parallelprozessorkern 113, 114 unterbro chen wird.
Weitet man das dargestellte Ausführungsbeispiel in Fig. 3 auf weitere Haupt- und Parallelprozessorkerne aus, so ist er sichtlich, dass die Anzahl der Unterbrechungen bei der Abar beitung der entsprechenden Teilaufgaben der entsprechenden parallelen Bearbeitungsabschnitte der Programme auf den Pa rallelprozessorkernen zunehmen kann. Falls die Teilaufgaben der jeweiligen parallelen Bearbeitungsabschnitte 303, 304 der Programme hingegen eine nicht zwingende parallele Ausführung 375, 380, 385, 390 auf dem ersten und zweiten Parallelpro- zessorkern 113, 114 erfordern, so kann der dem jeweiligen pa rallelen Bearbeitungsabschnitt 303, 304 zugeordnete Wert der Prioritätsstufe dynamisch während des Programmzyklus ange passt werden. Im konkreten Beispiel kann der Wert der zweiten Prioritätsstufe vom Prioritätenverwalter um einen Faktor re duziert bzw. sofort auf einen minimalen Wert gesetzt werden, damit die fünfte bis siebte Teilaufgabe des parallelen Bear beitungsabschnitts 304 des entsprechenden Programms direkt sequentiell vom zweiten Hauptprozessorkern 112 abgearbeitet werden können, ohne dass die Abarbeitung der ersten bis vier ten Teilaufgaben 321-324 auf den beiden Parallelprozessorker nen 113, 114 unterbrochen werden muss. Der Vorteil an der Verringerung des Werts der Prioritätsstufe des parallelen Be arbeitungsabschnitts 304 des Programms, das auf dem zweiten Hauptprozessorkern 112 ausgeführt wird, ist, dass die Unter brechung der Abarbeitung der ersten bis vierten Teilaufgabe des parallelen Bearbeitungsabschnitts 303 des zugeordneten Programms, das auf dem ersten Hauptprozessorkern 111 ausge führt wird, dadurch vermieden werden kann. Somit ist es mög lich den Verwaltungsaufwand zu minimieren, wobei die dynami sche Anpassung des Werts der Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme vom Prioritätenverwalter erfolgt, wenn der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht werden kann. Die Erhöhung des Rechendurchsat zes der Steuerungsaufgabe kann sich insbesondere positiv auf Programme mit einen hohen Wert der Prioritätsstufe des paral lelen Bearbeitungsabschnitts 303, 304 des Programms auswirken und kann zum Beispiel kürzere Deadlines ermöglichen. Auf die se Weise kann es möglich sein, die Arbeitsgeschwindigkeit der Maschine oder Anlage des Automatisierungssystems zu erhöhen.
Ferner kann mithilfe des Prioritätenverwalters die Echtzeit fähigkeit des Automatisierungssystems gewährleistet werden, da der Prioritätenverwalter die Anpassung der Werte der Prio ritätsstufen der jeweiligen parallelen Bearbeitungsabschnitte 303 der entsprechenden Programme in der Weise vornimmt, dass die Deadlines der Programme in jedem Fall eingehalten werden. Der Wert der wenigstens einen Prioritätsstufe kann beliebig verringert werden. Beispielsweise kann der Wert der Priori tätsstufe bei der ersten Unterbrechung des jeweiligen paral lelen Bearbeitungsabschnitts 303, 304 des Programms vom Prio ritätenverwalter unverändert bleiben. Nach der zweiten Unter brechung des entsprechenden parallelen Bearbeitungsabschnitts 303, 304 des Programms (nicht dargestellt) kann der Prioritä tenverwalter den Wert der Prioritätsstufe des zugeordneten parallelen Bearbeitungsabschnitts 303, 304 um einen Faktor reduzieren. Dabei kann der Wert der Prioritätsstufe des ent sprechenden parallelen Bearbeitungsabschnitts 303, 304 des Programms zum Beispiel umso stärker reduziert werden, je häu figer der jeweilige parallele Bearbeitungsabschnitt 303, 304 mit den enthaltenen Teilaufgaben des Programms unterbrochen wird .
Der Prioritätenverwalter kann die Anpassung des Werts der Prioritätsstufe des parallelen Bearbeitungsabschnitts 303,
304 dann vornehmen, wenn die Teilaufgaben aufgrund von ande ren Teilaufgaben eines weiteren Programms mit höherer Priori tätsstufe auf den beiden Parallelprozessorkern 113, 114 un terbrochen werden. Der Prioritätenverwalter kann den Wert der Prioritätsstufe des parallelen Bearbeitungsabschnitts 303,
304 des entsprechenden Programms für die unterbrochenen Teil aufgaben auf den beiden Parallelprozessorkern 133, 114 anpas sen, um einer weiteren Unterbrechung der Teilaufgaben auf den beiden Parallelprozessorkern 113, 114 vorzubeugen und in die sem Zusammenhang für möglichst wenig Verwaltungsaufwand für die noch ausstehenden Teilaufgaben in dem jeweiligen Arbeits paket zu sorgen.
Ferner kann der Prioritätenverwalter auch den Wert der Prio ritätsstufe der parallelen Bearbeitungsabschnitte 303, 304 der Programme anpassen, der für die Unterbrechung der Abar beitung der Teilaufgaben der parallelen Bearbeitungsabschnit te der Programme verantwortlich ist. Alternativ dazu kann der Prioritätenverwalter den Wert der Prioritätsstufe der paral- leien Bearbeitungsabschnitte 303, 304 der entsprechenden Pro gramme dann anpassen, wenn sich die jeweilige Prioritätsstufe als Eintrag in der Datenstruktur im Datenstrukturspeicher be findet und gerade aktiv keine Teilaufgaben aus dem zugeordne ten parallelen Bearbeitungsabschnitt 303, 304 von den beiden Haupt- und Parallelprozessorkernen 111-114 abgearbeitet wer den. Ferner kann der Prioritätenverwalter den Wert der Prio ritätsstufe der parallelen Bearbeitungsabschnitte 303, 304 der entsprechenden Programme dann anpassen, wenn Teilaufgaben im jeweiligen parallelen Bearbeitungsabschnitt 303, 304 des Programms aktiv von den Prozessorkernen abgearbeitet werden und im zugehörigen Arbeitspaket freibleibende, unbearbeitete Teilaufgaben vorhanden sind. Im diesem Fall betrifft die An passung des Werts der Prioritätsstufe des parallelen Bearbei tungsabschnitts 303, 304 die freibleibenden Teilaufgaben des Arbeitspakets .
Von Vorteil bei der Anpassung des Werts der Prioritätsstufe der parallelen Bearbeitungsabschnitte 303, 304 der jeweiligen Programme ist, dass diese vorübergehend erfolgen kann. Die dynamische Anpassung des Werts der wenigstens einen Priori tätsstufe muss nicht für den gesamten Programmzyklus in glei cher Weise erfolgen. Der Wert der Prioritätsstufe kann bei spielsweise für einen neuen Programmzyklus wieder auf den vorgegebenen Wert zurückgesetzt werden und für einen weiteren Programmzyklus erneut abgeändert werden. Auch innerhalb des Programmzyklus kann der Wert der wenigstens einen Prioritäts stufe der parallelen Bearbeitungsabschnitte der Programme vom Prioritätenverwalter beliebig oft angepasst werden. In diesem Zusammenhang ist es weiterhin möglich, den Wert der wenigs tens einen Prioritätsstufe der parallelen Bearbeitungsab schnitte 303, 304 der jeweiligen Programme für den nächsten Programmzyklus zu erhöhen, falls die Teilaufgaben im vorange henden Programmzyklus rein sequentiell in den jeweiligen Pro grammen abgearbeitet wurden, damit die Deadlines der Program me eingehalten werden können oder um dafür Sorge zu tragen, dass die erste bis siebte Teilaufgabe der jeweiligen paralle- len Bearbeitungsabschnitte der Programme für den jeweiligen nächsten Programmzyklus parallel ausgeführt werden. Gleich zeitig kann so sichergestellt werden, dass die Rechenleistung der beiden Parallelprozessorkerne 113, 114 bestmöglich ausge nutzt wird.
Ebenso denkbar ist eine Ausführungsform, in der ein Programm, welches umgehend ausgeführt werden muss (zum Beispiel auf grund einer kurzen Programmzyklus-Zeit und Deadline) , mit ei nem sehr hohen Wert der Prioritätsstufe des parallelen Bear beitungsabschnitts des Programms vom Prioritätenverwalter versehen wird, und dieser Wert der Prioritätsstufe vom Prio ritätenverwalter trotz einer möglichen Unterbrechung des pa rallelen Bearbeitungsabschnitts 303, 304 mit entsprechender Prioritätsstufe für den nächsten Programmzyklus weiterhin un verändert bleibt. Auch kann der Wert der Prioritätsstufe des jeweiligen parallelen Bearbeitungsabschnitts 303, 304 des Programms mit der entsprechenden ersten bis siebten Teilauf gabe bei einer Unterbrechung des jeweiligen parallelen Bear beitungsabschnitts erhöht werden, damit der entsprechende pa rallele Bearbeitungsabschnitt 303, 304 mit der jeweiligen ersten bis siebten Teilaufgabe des Programms im nächsten Pro grammzyklus nicht mehr unterbrochen wird.
Die genannten Möglichkeiten für die Anpassung des Werts der Prioritätsstufe des parallelen Bearbeitungsabschnitts 303,
304 des Programms bezogen sich jeweils darauf, den Verwal tungsaufwand durch eine geringe Anzahl an Unterbrechungen der parallelen Bearbeitungsabschnitte 303, 304 der Programme zu reduzieren und eine bestmögliche Ausnutzung der Rechenleis tung der Prozessorkerne bereitzustellen. Die Anzahl der Un terbrechungen der parallelen Bearbeitungsabschnitte 303, 304 und ihre zeitliche Unterbrechungsdauer sowie die genutzte Re chenleistung der Prozessorkerne kann von der Steuerungsein richtung der SPS ermittelt werden, wenn der zu erwartende Re chendurchsatz der Steuerungseinrichtung bewertet werden soll. Ebenso kann der zu erwartende Rechendurchsatz auch anhand der Rechenzeit der parallelen Bearbeitungsabschnitte 303, 304 der Programme der Steuerungsaufgabe ermittelt werden. Das heißt Teilaufgaben der entsprechenden Programme, die keine zwingen de parallele Ausführung 375, 380, 385, 390 erfordern, können ebenso rein sequentiell auf dem zugeordneten Hauptprozessor kern abgearbeitet werden, wenn die sequentielle Rechenzeit kürzer ist, als die Rechenzeit der Teilaufgaben des paralle len Bearbeitungsabschnitts 303, 304 mit möglichen Unterbre chungen des parallelen Bearbeitungsabschnitts 303, 304. Dazu kann der Prioritätenverwalter den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte 303,
304 der Programme reduzieren bzw. minimieren, damit die Teil aufgaben der parallelen Bearbeitungsabschnitte 303, 304 gege benenfalls sequentiell abgearbeitet werden, falls sie nicht notwendigerweise parallel ausgeführt werden müssen. Die Steu erungsaufgabe muss zur Bewertung des Rechendurchsatzes im ge nannten Fall zudem prüfen, ob die Rechenleistung der beiden Parallelprozessorkerne 113, 114 durch eine sequentielle Abar beitung der Teilaufgaben der parallelen Bearbeitungsabschnit te 303, 304 weiterhin bestmöglich genutzt wird.
Fig. 4 zeigt ein Ablaufdiagramm zur dynamischen Anpassung we nigstens einer Prioritätsstufe eines parallelen Bearbeitungs abschnitts eines Programms nach Fig. 3, wobei die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des entsprechenden Programms der Steu erungsaufgabe vom Prioritätenverwalter 350 in den Fig. 1 und 2 erfolgt. Ein erster Schritt 401 zeigt den Start der dynami schen Anpassung des Werts der wenigstens einen Prioritätsstu fe des parallelen Bearbeitungsabschnitts des entsprechenden Programms an. In einem zweiten Schritt 402 werden die Start werte der ersten bis k-ten Prioritätsstufe der parallelen Be arbeitungsabschnitte der Programme vom Prioritätenverwalter für den jeweiligen Programmzyklus festgelegt, wobei k eine ganze, positive Zahl echt größer eins sein kann. Die Werte der Prioritätsstufen der jeweiligen parallelen Bearbeitungs- abschnitte der Programme können sich um ganzzahlige Werte handeln .
In einem nachfolgenden dritten Schritt 403 wird in einer Ver zweigung geprüft, ob die Abarbeitung der ersten bis vierten Teilaufgabe des ersten Arbeitspakets im entsprechenden paral lelen Bearbeitungsabschnitt (mit zugeordneter erster Priori tätsstufe) des Programms aufgrund von Teilaufgaben des k-ten Arbeitspakets im jeweiligen parallelen Bearbeitungsabschnitt (mit zugeordneter k-ter Prioritätsstufe) unterbrochen wurden, wobei der Wert der k-ten Prioritätsstufe höher ist, als der Wert der ersten Prioritätsstufe. Wenn dies nicht der Fall ist, erfolgt ein Rücksprung zu dem zweiten Schritt 402, also dem Festlegen der jeweiligen Startwerte der Prioritätsstufen der parallelen Bearbeitungsabschnitte der Programme durch den Prioritätenverwalter. Ergibt die Prüfung auf Unterbrechung der Abarbeitung der Teilaufgaben im dritten Schritt 403 ein positives Ergebnis, so wird in einem vierten Schritt 404 fer ner geprüft, ob die unterbrochenen ersten bis vierten Teil aufgaben des ersten Arbeitspakets des parallelen Bearbei tungsabschnitts des entsprechenden Programms der Steuerungs aufgabe sequentiell ausgeführt werden sollen.
Beispielsweise kann der Prioritätenverwalter bei Programmen mit sehr kurzer Programmzyklus-Zeit den Wert der Prioritäts stufe der parallelen Bearbeitungsabschnitte der Programme di rekt bei der ersten Unterbrechung der entsprechenden Teilauf gaben auf den minimalen Wert setzen, damit die Teilaufgaben sequentiell vom jeweiligen Hauptprozessorkern abgearbeitet werden. Setzt der Prioritätenverwalter hingegen bei der ers ten Unterbrechung der Abarbeitung der Teilaufgaben der paral lelen Bearbeitungsabschnitte der Programme den Wert jeglicher Prioritätsstufen auf den minimalen Wert, so sind die Paral lelprozessorkerne gegebenenfalls nicht mehr voll ausgelastet. Das heißt, es ist freie Rechenzeit verfügbar, wenn die höher priorisierten parallelen Bearbeitungsabschnitte mit Teilauf gaben fertig abgearbeitet und noch keine weiteren höher prio- risierten Teilaufgaben eines weiteren Programms mit paralle lem Bearbeitungsabschnitt für die Abarbeitung auf den Paral lelprozessorkernen vorhanden sind. Diese verfügbare Zeit sollte von den beiden Parallelprozessorkernen im Normalfall für die Abarbeitung von niedriger priorisierten parallelen Bearbeitungsabschnitten mit Teilaufgaben verwendet werden. Erst wenn die Steuerungseinheit bei der Bewertung des Rechen durchsatzes merkt, dass die niedriger priorisierten paralle len Bearbeitungsabschnitte mit Teilaufgaben eines Arbeitspa kets trotz mehrfacher Verringerung des Werts der Prioritäts stufe häufig unterbrochen wurden, kann sie den Prioritäten verwalter dazu anstoßen, für die unterbrochenen Teilaufgaben der parallelen Bearbeitungsabschnitte diese minimale Priori tätsstufe zu setzen.
Sind die ersten bis vierten Teilaufgaben des ersten Arbeits pakets des parallelen Bearbeitungsabschnitts des Programms auf die Parallelisierung angewiesen, um die Deadline des Pro gramms einzuhalten, so passt der Prioritätenverwalter den Wert der ersten Prioritätsstufe (und/oder gegebenenfalls der k-ten Prioritätsstufe) des parallelen Bearbeitungsabschnitts des entsprechenden Programms der Steuerungsaufgabe in einem fünften Schritt 406 entsprechend an. Die Anpassung des Werts der ersten und/oder k-ten Prioritätsstufe des parallelen Be arbeitungsabschnitts des entsprechenden Programms von dem Prioritätenverwalter kann in einem Verringern oder Erhöhen des Werts der Prioritätsstufe liegen, analog zu der Beschrei bung in Fig. 3, um weiteren möglichen Unterbrechungen des pa rallelen Bearbeitungsabschnitts des Programms mit der ersten bis vierten Teilaufgabe vorzubeugen bzw. deren Anzahl zu re duzieren, um den Verwaltungsaufwand zu minimieren und den Re chendurchsatz der Steuerungsaufgabe zu erhöhen.
Wird die Prüfung im vierten Schritt 404 hingegen bejaht, so setzt der Prioritätenverwaltern in einem sechsten Schritt 405 den Wert der ersten Prioritätsstufe des parallelen Bearbei tungsabschnitts des Programms auf einen minimalen Wert, damit die Teilaufgaben des parallelen Bearbeitungsabschnitts des Programms für den aktuellen Programmzyklus direkt rein se quentiell auf dem entsprechenden Hauptprozessorkern ausge führt werden können. Die Verzweigung im vierten Schritt 404 führt für die beiden Möglichkeiten, die oben beschrieben wur den, auf einen siebten Schritt 407, einer weiteren Verzwei gung. In der Verzweigung im siebten Schritt 407 prüft der Prioritätenverwalter, ob der parallele Bearbeitungsabschnitt des jeweiligen Programms beendet ist. Ist dies nicht der Fall, das heißt, dauert die Abarbeitung der ersten bis vier ten Teilaufgaben des parallelen Bearbeitungsabschnitts des Programms noch an, so erfolgt ein Rücksprung zum dritten Schritt 403, in dem geprüft wird, ob die erste bis vierte Teilaufgabe des ersten Arbeitspakets des parallelen Bearbei tungsabschnitts des Programms aufgrund von Teilaufgaben des k-ten Arbeitspakets mit höherem Wert der k-ten Prioritätsstu fe unterbrochen wurden. Die nachfolgenden Schritte der Ver zweigung des dritten Schritts 403 erfolgen dann wie bereits beschrieben .
Ergibt die Prüfung im siebten Schritt 407, dass der parallele Bearbeitungsabschnitt beendet ist, so führt die Verzweigung direkt auf einen achten Schritt 408. Im achten Schritt 408 prüft der Prioritätenverwalter, ob der Wert der angepassten ersten Prioritätsstufe des parallelen Bearbeitungsabschnitts des Programms für den nächsten Programmzyklus beibehalten werden soll. Falls die Prüfung des Prioritätenverwalters im achten Schritt 408 zu einem positiven Ergebnis führt, so wird der Wert der angepassten ersten Prioritätsstufe des paralle len Bearbeitungsabschnitts des Programms für den nächsten Programmzyklus beibehalten und der achte Schritt 408 zurück geführt auf die Verzweigung des dritten Schritts 403. Im dritten Schritt 403 erfolgt dann die Prüfung, ob die Abarbei tung der ersten bis vierten Teilaufgabe des ersten Arbeitspa kets des parallelen Bearbeitungsabschnitts des Programms auf grund von Teilaufgaben des k-ten Arbeitspakets des entspre chenden parallelen Bearbeitungsabschnitts mit höherer k-ter Prioritätsstufe unterbrochen wurde. Die nachfolgenden Prü fungsschritte können in der Weise wie bereits beschrieben er folgen .
Soll der Wert der angepassten ersten Prioritätsstufe des pa rallelen Bearbeitungsabschnitts des Programms für den nächs ten Programmzyklus nicht beibehalten werden, so setzt der Prioritätenverwalter den Wert der ersten Prioritätsstufe im einem neunten Schritt 409 auf den vorgegebenen Wert, also den Startwert zurück. Die dynamische Anpassung des Werts der Pri oritätsstufe des parallelen Bearbeitungsabschnitts des Pro gramms ist in einem zehnten Schritt 410 beendet. Beispiels weise kann dies der Fall sein, wenn die entsprechenden Ar beitspakete nach erfolgter Abarbeitung der Teilaufgaben ge löscht und die jeweiligen Einträge der Prioritätsstufen der parallelen Bearbeitungsabschnitte aus der Datenstruktur ent fernt wurden.
Die einzelnen ersten bis zehnten Schritte 401 bis 410 können vom Prioritätenverwalter und gegebenenfalls der Steuerungs einrichtung geprüft werden, da die Steuerungseinrichtung den zu erwartenden Rechendurchsatz der Steuerungsaufgabe laufend bewertet und den Prioritätenverwalter gegebenenfalls zur An passung des Werts der Prioritätsstufe des parallelen Bearbei tungsabschnitts des jeweiligen Programms anstößt.
Die Erfindung wurde im Detail durch bevorzugte Ausführungs beispiele beschrieben. Sie ist jedoch nicht durch die offen barten Beispiele eingeschränkt, da vom Fachmann andere Varia tion daraus abgeleitet werden können, ohne dabei den Schutz umfang der Erfindung zu verlassen. Bezugs zeichenliste
100 Speicherprogrammierbare Steuerung
110 Datenverarbeitungseinrichtung
111 erster Hauptprozessorkern
112 zweiter Hauptprozessorkern
113 erster Parallelprozessorkern
114 zweiter Parallelprozessorkern
120 Steuerungseinrichtung
130 Kommunikationsschnittstelle
200 Maschine/Anlage
210 Aktoren
220 Sensoren
300 Verfahren zur Datenverarbeitung auf der SPS
303 paralleler Bearbeitungsabschnitt des ersten Haupt prozessorkerns
304 paralleler Bearbeitungsabschnitt des zweiten Haupt prozessorkerns
310 zweites Arbeitspaket
320 erste Menge an Teilaufgaben
330 zweite Menge an Teilaufgaben
321 erste Teilaufgabe
322 zweite Teilaufgabe
323 dritte Teilaufgabe
324 vierte Teilaufgabe
331 fünfte Teilaufgabe
332 sechste Teilaufgabe
333 siebte Teilaufgabe
340 erste Prioritätsstufe
345 zweite Prioritätsstufe 350 Prioritätenverwalter
355 DatenStruktur
3 60 Parallele Ausführung
3 65 Sequentielle Ausführung des ersten Hauptprozessor kerns
366 Unterbrechung
37 0 Sequentielle Ausführung des zweiten Hauptprozessor kerns
375 erste parallele Ausführung des ersten Parallelpro zessorkerns
38 0 erste parallele Ausführung des zweiten Parallelpro zessorkerns
385 zweite parallele Ausführung des ersten Parallelpro zessorkerns
3 90 zweite parallele Ausführung des zweiten Parallel prozessorkerns
4 0 0 Ablaufdiagramm zur dynamischen Anpassung einer Pri- oritätsstufe
4 0 1 Start
4 02 Startwerte erste bis k-te Prioritätsstufe
4 03 Teilaufgaben des ersten Arbeitspakets aufgrund von
Teilaufgaben des k-ten Arbeitspakets mit einer hö heren Prioritätsstufe unterbrochen?
4 04 Teilaufgaben des ersten Arbeitspakets auch sequen tiell ausführbar?
4 05 Setzte jeweilige Prioritätsstufe auf einen minima len Wert
4 0 6 Reduziere oder Erhöhe den Wert der ersten und/oder k-ten Prioritätsstufe
4 07 paralleler Bearbeitungsabschnitt beendet?
4 0 8 Wert der jeweiligen angepassten Prioritätsstufe für den nächsten Programmzyklus beibehalten? 409 Setzte Wert der jeweiligen Prioritätsstufe auf den entsprechenden Startwert
410 Ende 500 erster Pfeil
505 zweiter Pfeil
510 dritter Pfeil
515 vierter Pfeil
520 fünfter Pfeil
525 sechster Pfeil
530 siebter Pfeil
535 achter Pfeil
540 neunter Pfeil
545 zehnter Pfeil
550 elfter Pfeil
555 zwölfter Pfeil
600 Erstellung von Arbeitspaketen mit Teilaufgaben und
Verwaltung der Prioritätsstufen

Claims

Patentansprüche
1. Verfahren zum Optimieren einer Datenverarbeitung (300) auf einer speicherprogrammierbaren Steuerung (100), die wenigstens einen Parallelprozessorkern (113, 114) um fasst,
wobei eine Steuerungsaufgabe mehrere ausführbare Pro gramme umfasst,
wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsab schnitt (303) mit einem Arbeitspaket (305, 310) aufwei sen, und das Arbeitspaket (305, 310) mehrere Teilaufga ben (321-324, 331-333) umfasst,
wobei den parallelen Bearbeitungsabschnitten (303) in den jeweiligen Programmen eine Priorität mit einer vor gegebenen Prioritätsstufe (340, 345) zugewiesen ist, wobei die jeweiligen Prioritätsstufen (340, 345) in ei ne Datenstruktur (355) eingefügt werden, sobald ein Ausführen des Programms an dem parallelen Bearbeitungs abschnitt (303) angelangt ist,
wobei der wenigstens eine Parallelprozessorkern (113, 114) prüft, ob in der Datenstruktur (355) Einträge vor handen sind und wobei, sofern Einträge vorhanden sind, Teilaufgaben (321-324, 331-333) aus dem Arbeitspaket (305, 310) des Programms, dessen Prioritätsstufe (340, 345) an erster Stelle der Einträge in der Datenstruktur (355) steht, von dem wenigstens einen Parallelpro zessorkern (113, 114) abgearbeitet werden,
wobei während eines Programmzyklus ein zu erwartender Rechendurchsatz der Steuerungsaufgabe laufend bewertet wird, und
wobei wenigstens eine der Prioritätsstufen (340, 345) der parallelen Bearbeitungsabschnitte (340, 345) der jeweiligen Programme dynamisch angepasst wird, wenn sich der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht .
2. Verfahren nach Anspruch 1, wobei die Anpassung der wenigstens einen Prioritätsstu fe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme bei einer Unterbrechung (366) der Abarbeitung der Teilaufgaben (321-324, 331- 333) des Programms erfolgt.
3. Verfahren nach Anspruch 2,
wobei die Anpassung der wenigstens einen Prioritätsstu fe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme erfolgt, wenn die Teil aufgaben (321-324, 331-333) des Programms aufgrund von anderen Teilaufgaben eines weiteren Programms (321-324, 331-333) mit höherer Prioritätsstufe (340, 345) des pa rallelen Bearbeitungsabschnitts (303) auf dem wenigs tens einen Parallelprozessorkern (113, 114) unterbro chen werden.
4. Verfahren nach Anspruch 1 bis 3,
wobei bei der Anpassung der wenigstens einen Priori tätsstufe (340, 345) der parallelen Bearbeitungsab schnitte (303) der jeweiligen Programme eine zusätzli che Bedingung, insbesondere eine Echtzeitbedingung der Steuerungsaufgabe, berücksichtigt wird.
5. Verfahren nach Anspruch 3 oder 4,
wobei die wenigstens eine Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme um einen Faktor reduziert wird, wenn die Teilaufgaben (321-324, 331-333) des Programms auf grund von anderen Teilaufgaben (321-324, 331-333) eines weiteren Programms mit höherer Prioritätsstufe (340, 345) des parallelen Bearbeitungsabschnitts (303) auf dem wenigstens einen Parallelprozessorkern (113, 114) unterbrochen werden.
6. Verfahren nach einem der Ansprüche 3 bis 5, wobei die wenigstens eine Prioritätsstufe (113, 114) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme auf einen minimalen Wert gesetzt wird, wenn die Teilaufgaben (321-324, 331-333) der Programme sequentiell (365) in den entsprechenden Programmen aus führbar sind.
7. Verfahren nach Anspruch 1 bis 6,
wobei die wenigstens eine Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme zu Beginn eines neuen Programmzyklus auf den vorgegebenen Wert zurückgesetzt wird.
8. Verfahren nach Anspruch 6,
wobei die wenigstens eine Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme zu Beginn eines neuen Programmzyklus erhöht wird, wenn die Teilaufgaben (321-324, 331-333) vorher sequentiell (365) in den zugeordneten Programmen ausgeführt wurden.
9. Speicherprogrammierbare Steuerung (100), umfassend:
eine Kommunikationsschnittstelle (130), zum Einlesen von Sensordaten und zum Ausgeben von Aktordaten, eine Datenverarbeitungseinrichtung (110), die wenigs tens einen Parallelprozessorkern (113, 114) zum Ausfüh ren einer Steuerungsaufgabe umfasst, um aus den Sensor daten Aktordaten zu erzeugen,
eine Steuerungseinrichtung (120), die einen Datenstruk turspeicher zum Speichern einer Datenstruktur (355) mit Prioritätsstufen (340, 345) und einen Prioritätenver walter (350) zum Verwalten der Prioritätsstufen (340, 345) in der Datenstruktur (355) aufweist,
wobei die Steuerungseinrichtung (120) einen Zwischener gebnisspeicher umfasst, auf dem Zwischenergebnisse von Berechnungen gesichert werden, wobei die Steuerungsaufgabe mehrere ausführbare Pro gramme umfasst,
wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsab schnitt (303) mit einem Arbeitspaket (305, 310) aufwei sen, und das Arbeitspaket (305, 310) mehrere Teilaufga ben (321-324, 331-333) umfasst,
wobei den parallelen Bearbeitungsabschnitten (303) in den jeweiligen Programmen eine Priorität mit der vorge gebenen Prioritätsstufe (340, 345) zugewiesen ist, wobei der Prioritätenverwalter (350) ausgebildet ist, die jeweiligen Prioritätsstufen (340, 345) in die Da tenstruktur (355) im Datenstrukturspeicher einzufügen, sobald ein Ausführen des Programms an dem parallelen Bearbeitungsabschnitt (303) angelangt ist und dabei den Eintrag mit der höchsten Prioritätsstufe (340, 345) an die erste Stelle der Einträge in der Datenstruktur (355) zu setzen,
wobei der wenigstens eine Parallelprozessorkern (113, 114) ausgebildet ist, die Datenstruktur (355) im Daten strukturspeicher auf Einträge der Prioritätsstufen (340, 345) zu prüfen, und sofern Einträge vorhanden sind, Teilaufgaben (321-324, 331-333) aus dem Arbeits paket (305, 310) des entsprechenden Programms abzuar beiten, dessen Prioritätsstufe (340, 345) an erster Stelle der Einträge in der Datenstruktur (355) steht, wobei die Steuerungseinrichtung (120) ausgebildet ist, während eines Programmzyklus einen zu erwartenden Re chendurchsatz der Steuerungsaufgabe laufend zu bewer ten, und
wobei der Prioritätenverwalter (350) ausgelegt ist, we nigstens eine der Prioritätsstufen (340, 345) der pa rallelen Bearbeitungsabschnitte (303) der jeweiligen Programme dynamisch anzupassen, wenn sich der Rechen durchsatz der Steuerungsaufgabe dadurch erhöht.
10. Speicherprogrammierbare Steuerung nach Anspruch 9, wobei der Prioritätenverwalter ausgebildet ist, die An passung der wenigstens einen Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme bei einer Unterbrechung (366) der Abar beitung der Teilaufgaben (321-324, 331-333) des Pro gramms vorzunehmen.
11. Speicherprogrammierbare Steuerung nach Anspruch 10, wobei der Prioritätenverwalter (350) ausgelegt ist, die Anpassung der wenigstens einen Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme vorzunehmen, wenn die Teilaufgaben (321-324, 331-333) aufgrund von anderen Teilaufgaben (321-324, 331-333) eines weiteren Programms mit höherer Prioritätsstufe (340, 345) auf dem wenigstens einen Pa rallelprozessorkern (113, 114) unterbrochen werden.
12. Speicherprogrammierbare Steuerung nach Anspruch 9 bis
11,
wobei der Prioritätenverwalter (350) ausgebildet ist, bei der Anpassung der wenigstens einen Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme eine zusätzliche Bedingung, insbesondere eine Echtzeitbedingung der Steuerungsauf gabe, zu berücksichtigen.
13. Speicherprogrammierbare Steuerung nach Anspruch 10 bis
12,
wobei der Prioritätenverwalter (350) ausgebildet ist, die wenigstens eine Prioritätsstufe (340, 345) der pa rallelen Bearbeitungsabschnitte (303) der jeweiligen Programme um einen Faktor zu reduzieren, wenn die Teil aufgaben (321-324, 331-333) des Programms aufgrund von anderen Teilaufgaben (321-324, 331-333) eines weiteren Programms mit höherer Prioritätsstufe (340, 345) auf dem wenigstens einen Parallelprozessorkern (113, 114) unterbrochen werden.
14. Speicherprogrammierbare Steuerung nach Anspruch 10 bis
13,
wobei der Prioritätenverwalter (350) ausgelegt ist, die wenigstens eine Prioritätsstufe (340, 345) der paralle len Bearbeitungsabschnitte (303) der jeweiligen Pro gramme auf einen minimalen Wert zu setzen, wenn die Teilaufgaben (321-324, 331-333) der Programme sequenti ell (365) in den entsprechenden Programmen ausführbar sind .
15. Speicherprogrammierbare Steuerung nach Anspruch 9 bis
14,
wobei der Prioritätenverwalter (350) ausgebildet ist, die wenigstens eine Prioritätsstufe (340, 345) der pa rallelen Bearbeitungsabschnitte (303) der jeweiligen Programme zu Beginn eines neuen Programmzyklus auf den vorgegebenen Wert zurückzusetzen.
16. Speicherprogrammierbare Steuerung nach Anspruch 14, wobei der Prioritätenverwalter (350) ausgelegt ist, die wenigstens eine Prioritätsstufe (340, 345) der paralle len Bearbeitungsabschnitte (303) der jeweiligen Pro gramme zu Beginn eines neuen Programmzyklus zu erhöhen, wenn die Teilaufgaben (321-324, 331-333) der Programme vorher sequentiell (365) in den zugeordneten Programmen ausgeführt wurden.
17. Speicherprogrammierbare Steuerung nach Anspruch 9 bis 16,
wobei der Prioritätenverwalter (350) ausgebildet ist, den Eintrag der Prioritätsstufe (340, 345) in der Da tenstruktur (350) im Datenstrukturspeicher gemäß der vorgenommenen Anpassung der wenigstens einen Priori tätsstufe (340, 345) abzuändern, und
wobei der Prioritätenverwalter (350) ausgebildet ist den wenigstens einen Parallelprozessorkern (113, 114) über die Änderung des Eintrags der Prioritätsstufe (340, 345) in der Datenstruktur (355) zu informieren.
18. Speicherprogrammierbare Steuerung nach Anspruch 9 bis 17,
wobei der Prioritätenverwalter (350) ausgebildet ist, auf mehreren Programmen der Steuerungsaufgabe verteilt ausführbar zu sein.
EP19786777.3A 2018-10-10 2019-10-10 Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung Pending EP3861440A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102018125090.8A DE102018125090A1 (de) 2018-10-10 2018-10-10 Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
PCT/EP2019/077497 WO2020074650A1 (de) 2018-10-10 2019-10-10 Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung

Publications (1)

Publication Number Publication Date
EP3861440A1 true EP3861440A1 (de) 2021-08-11

Family

ID=68234003

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19786777.3A Pending EP3861440A1 (de) 2018-10-10 2019-10-10 Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung

Country Status (5)

Country Link
US (1) US20210208561A1 (de)
EP (1) EP3861440A1 (de)
CN (1) CN112823337A (de)
DE (1) DE102018125090A1 (de)
WO (1) WO2020074650A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328383A (zh) * 2020-11-19 2021-02-05 湖南智慧畅行交通科技有限公司 基于优先权的作业并发控制及调度算法
CN114489926B (zh) * 2021-12-09 2024-06-07 西安邮电大学 一种基于截止期限制的云中微服务负载均衡方法
EP4224260A1 (de) * 2022-02-03 2023-08-09 Abb Schweiz Ag Verfahren zur bereitstellung einer dienstbasierten steuerungsanwendung für eine industrieanlage

Family Cites Families (11)

* 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
GB2334116A (en) * 1998-02-04 1999-08-11 Ibm Scheduling and dispatching queued client requests within a server computer
US20090025004A1 (en) * 2007-07-16 2009-01-22 Microsoft Corporation Scheduling by Growing and Shrinking Resource Allocation
EP2356567A2 (de) * 2008-12-08 2011-08-17 Kpit Cummins Infosystems Ltd. Verfahren zur neuorganisation von aufgaben zur ressourcenoptimierung
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US20130074088A1 (en) * 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
US8898434B2 (en) * 2011-11-11 2014-11-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
KR101666395B1 (ko) * 2013-10-14 2016-10-14 한국전자통신연구원 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
EP3470980A1 (de) * 2017-10-10 2019-04-17 OpenSynergy GmbH Steuereinheit, verfahren zum betreiben einer steuereinheit, verfahren zum konfigurieren eines virtualisierungssystems einer steuereinheit

Also Published As

Publication number Publication date
DE102018125090A1 (de) 2020-04-16
CN112823337A (zh) 2021-05-18
US20210208561A1 (en) 2021-07-08
WO2020074650A1 (de) 2020-04-16

Similar Documents

Publication Publication Date Title
EP3861440A1 (de) Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung
DE19931139A1 (de) Produktionssystem und Fertigungsmittel-Auswahlverfahren in einem Produktionssystem
EP3510456B1 (de) Verfahren zum montieren eines objekts
DE60223143T2 (de) Bereichsgroessen-ablaufverfahren fuer die mehrfachbehandlung von vielen artikeln
WO2017140504A1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
EP3200034B1 (de) Zugriff auf daten oder funktionen einer speicherprogrammierbaren steuerung mittels eines webdienstes
DE2411824C2 (de) Verfahren zum Betreiben einer Aufzugsanlage
DE102017130552B3 (de) Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
DE4445651A1 (de) Verfahren zur Steuerung von technischen Vorgängen
WO2000019283A1 (de) Verfahren zum betrieb eines automatisierungssystems
EP2574996B1 (de) Verfahren zur Ermittlung eines Teillastzustandes einer Anlage
EP4139849A1 (de) Verfahren zum konfigurieren von komponenten in einem system mit hilfe von multi-agent reinforcement learning, computerlesbares speichermedium und system
EP3070038A1 (de) Verfahren, vorrichtung und computerprogramm zur zuteilung von saugluft auf saugluft anfordernde arbeitsstellen einer textilmaschine
EP2126700B1 (de) Steuerung des laufzeitverhaltens von prozessen
DE2419522A1 (de) Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers
DE60315264T2 (de) Durch timebox angesteuertes scheduling von softwarekomponenten in hard-echtzeitsystemen
DE102004014257A1 (de) Rezeptverwaltung in einer Textilmaschinenanlage
DE4014746C5 (de) Numerische Steuereinrichtung zum Steuern zumindest zweier gesteuerter Einheiten im Parallelbetrieb und zugehöriges Verfahren
WO2023138870A1 (de) Verfahren und datenverarbeitungsnetzwerk zur verarbeitung von sensordaten
DE19534757C1 (de) Verfahren zum Betreiben eines Telekommunikationssystems
DE102016211440A1 (de) Konfigurations- und Anzeigewerkzeug für einen Mehrkernprozessor für eine Anlage zur Verwendung in einem automatisierten Prozess und Verfahren zum Konfigurieren eines Mehrkernprozessors für einen automatisierten Prozess mit einem Konfigurations- und Anzeigewerkzeug
WO2023066626A1 (de) Verfahren zur verarbeitung von daten mit einem datenverarbeitungsnetzwerk umfassend eine mehrzahl von datenverarbeitungsmodulen, datenverarbeitungsmodul und datenverarbeitungsnetzwerk
DE102020202853A1 (de) Weiterleitungsvorrichtung
AT512781A4 (de) Verfahren zum Betreiben von Energieverbrauchern einer Spritzgießmaschine
DE102019217764A1 (de) Verfahren zum Verwalten eines Hardware-Pufferspeichers und Steuereinheit

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20210505

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20210906

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
APBK Appeal reference recorded

Free format text: ORIGINAL CODE: EPIDOSNREFNE

APBN Date of receipt of notice of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA2E

APBR Date of receipt of statement of grounds of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA3E

APAF Appeal reference modified

Free format text: ORIGINAL CODE: EPIDOSCREFNE