EP3861440A1 - Verfahren zur datenverarbeitung und speicherprogrammierbare steuerung - Google Patents
Verfahren zur datenverarbeitung und speicherprogrammierbare steuerungInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 412
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 13
- 230000006978 adaptation Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 8
- 229940036310 program Drugs 0.000 claims 1
- 230000008901 benefit Effects 0.000 description 8
- 238000005259 measurement Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000003754 machining Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000000275 quality assurance Methods 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
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
Description
Claims
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)
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)
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 |
-
2018
- 2018-10-10 DE DE102018125090.8A patent/DE102018125090A1/de active Pending
-
2019
- 2019-10-10 WO PCT/EP2019/077497 patent/WO2020074650A1/de active Search and Examination
- 2019-10-10 EP EP19786777.3A patent/EP3861440A1/de active Pending
- 2019-10-10 CN CN201980066138.2A patent/CN112823337A/zh active Pending
-
2021
- 2021-03-19 US US17/206,734 patent/US20210208561A1/en active Pending
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 |