Parallelization of plc programs for operation in multi-processor environments
AssigneeSiemens Aktiengesellschaft
InventorsArquimedes Martinez Canedo, Mohammad Abdullah Al Faruque, Michell Packer, Richard Freitag
Life of this patent
Estimating the term…
Abstract
A method of identifying and extracting functional parallelism from a PLC program has been developed that results in the ability of the extracted program fragments to be executed in parallel across a plurality of separate resources, and a compiler configured to perform the functional parallelism (i.e., identification and extraction processes) and perform the scheduling of the separate fragments within a given set of resources. The inventive functional parallelism creates a larger number of separable elements than was possible with prior dataflow analysis methodologies.
Claims11
A programmable logic controller (PLC) for executing a program written in one or more high-level functional languages, the controller comprising
- a plurality of resources for executing various portions of the program;
- and
- at least one memory coupled to the processors;
- and
- a compiler for performing functional parallelism by:
- parsing the program into a plurality of program organization units (POUs);
- identifying blocks within the high-level functional languages of each POU that include one or more time delays such that operations before and after the time delays can be executed in parallel;
- creating program fragments as partitioned by the identified time delays;
- and
- scheduling the program fragments across the plurality of resources to be executed in parallel.
A method of creating parallelism in a PLC program to provide parallel execution of various segments of the PLC program across a plurality of separate resources, the method comprising the steps of:
- evaluating a high-level functional representation of the PLC program;
- performing a functional analysis by identifying locations within the high-level functional representation of a time delay between an input and an output of a function block;
- separating the identified locations into program fragments that may be executed in parallel in different resources of the plurality of separate resources.
Dependencies are inferred from the claim text.