Method and programming tool for generating a control program for an automation system

Converting LD diagrams to data flow graphs simplifies and enhances the generation and modification of control programs for programmable logic controllers, addressing the limitations of hierarchical structuring and reducing computational complexity.

JP7779932B2Active Publication Date: 2025-12-03BECKHOFF AUTOMATION GMBH
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023574639
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-06-04
Filing Date
2022-06-03
Publication Date
2025-12-03
Estimated Expiration
2042-06-03

AI Technical Summary

Technical Problem

Existing methods for generating control programs for programmable logic controllers using ladder diagram (LD) graphical programming language are restricted by hierarchical structuring, limiting flexibility and requiring complex restructuring for even minor changes, and cannot represent all diagrams meeting IEC 61131-3 standards.

Method used

A method that converts LD diagrams into data flow graphs, representing elements as nodes and connections as edges, allowing for flexible and simplified generation and modification of control programs without hierarchical constraints.

Benefits of technology

This approach enables the creation of clearer, easier-to-read control programs with reduced computational requirements, facilitating faster execution and modification of automation system control programs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007779932000001
    Figure 0007779932000001
  • Figure 0007779932000002
    Figure 0007779932000002
  • Figure 0007779932000003
    Figure 0007779932000003
Patent Text Reader

Abstract

The present application relates to a method for generating a control program for controlling an automation system. The method comprises, in a diagram generation step, a step of generating a graphical diagram of the control program according to a ladder diagram LD, which is a graphical programming language for programmable logic controllers. The method comprises, in a graph generation step, a step of generating a data flow graph as a representation of the graphical diagram, in which the elements of the graphical diagram are represented as nodes and the connecting lines between the elements of the graphical diagram are represented as edges of the data flow graph. The method comprises, in a program generation step, a step of generating a version of the control program executable by a programmable logic controller based on the data flow graph. The application further relates to a programming tool for carrying out the method.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present application relates to a method for generating a control program for controlling an automation system, and to a programming tool for carrying out this method.

[0002] [CROSS-REFERENCE TO RELATED APPLICATIONS] This patent application claims priority from German patent application DE 102021114449.3, the disclosure of which is incorporated herein by reference. [Background technology]

[0003] The IEC 61131-3 standard defines five programming languages ​​for programming control programs for programmable logic controllers (PLCs). Among the five defined programming languages ​​are both text-based and graphical programming languages. One of the graphical programming languages ​​for programming programmable logic controllers is ladder diagram (LD). The ladder diagram (LD) programming language allows users to create graphical diagrams for programming the control programs of programmable logic controllers. The graphical diagram is based on the schematic diagram of a relay circuit. The elements of the graphical diagram are called voltage rails, contacts, and (relay) coils. The connecting lines between the elements of the graphical elements represent the flow of current between the elements.

[0004] When interpreting a graphical diagram as a control program, each element is associated with a variable in the control program: an element may be activated or deactivated, and each variable is assigned a corresponding value of 1 or 0.

[0005] To convert a graphical diagram into a corresponding executable control program, the graphical diagram is typically first converted into a text-based representation suitable for displaying the information in the graphical diagram. To this end, prior art graphical diagrams are hierarchically structured and divided into hierarchically ordered units. These units may consist of, for example, individual elements, groups of elements arranged in series, or groups of elements arranged in parallel.

[0006] However, such a hierarchical structuring constitutes a strong restriction on the creation of graphical diagrams, since only exclusive graphical diagrams are possible that can be represented in an unambiguous way in the corresponding hierarchical structure.

[0007] As a result, not all graphical diagrams that meet the requirements of the IEC 61131-3 standard can be produced in practice with the current state of the art, or they must be extended and complicated to meet the hierarchical structure requirements. In particular, the underlying hierarchical structure is an obstacle to modifying existing graphical diagrams, because even small changes to a graphical diagram can require serious structural changes in the underlying hierarchical structure, which can result in complex changes and even a complete restructuring of the graphical diagram to take into account the desired changes and also meet the hierarchical structure requirements. Summary of the Invention [Problem to be solved by the invention]

[0008] An improved method for generating a control program for controlling an automation system, a programming tool for implementing the method, and a method for controlling an automation system are provided. [Means for solving the problem]

[0009] [Example] A method for generating a control program for controlling an automation system is provided, the method comprising: In a graphical diagram generating step, a graphical diagram of a control program is generated according to a ladder diagram LD, which is a graphical programming language for programmable logic controllers; generating a data flow graph as a representation of the graphical diagram in a graph generation step, wherein elements of the graphical diagram are represented as nodes and connecting lines between elements of the graphical diagram are represented as edges of the data flow graph; and The program generation step includes generating a version of the control program executable by the programmable logic controller based on the data flow graph.

[0010] This provides a technical advantage in that an improved method for generating control programs for controlling automation systems is provided. The method is based on programming a control program using a Ladder Diagram (LD), a graphical programming language defined for programming programs for programmable logic controllers (PLCs). To this end, the method provides a representation of a graphical diagram created in accordance with the Ladder Diagram (LD) graphical programming language in the form of a data flow graph. The representation of the graphical diagram by the corresponding data flow graph corresponds to the corresponding elements of the graphical diagram represented by the data flow graph, and the edges of the data flow graph correspond to the connecting lines of the graphical diagram, allowing for increased flexibility in the generation of graphical diagrams for graphical programming of control programs. In this context, the representation of the graphical diagram by the corresponding data flow graph serves to replace the representation of graphical diagrams known from the prior art by corresponding hierarchical structures.

[0011] Flexible representations in the form of data flow graphs can be used to generate graphical diagrams that meet the requirements of ladder diagram LD programming languages ​​but cannot currently be represented by hierarchical representations in the prior art. Furthermore, data flow graph representations can be used to generate graphical diagrams that are simplified in complexity compared to graphical diagrams that can be generated in the prior art but have the same functionality. For example, by simplifying a graphical diagram to have fewer elements and fewer connecting lines, the generation of graphical programs and diagrams can be simplified, resulting in faster programs. On the other hand, less complex graphical diagrams are easier to read, clearer, and therefore easier to understand. Furthermore, by reducing the complexity of a graphical diagram, the complexity of the control program represented by the graphical diagram can also be simplified. Such control programs can then reduce the computational capacity required to execute the control program. In this way, faster control of an automation system or programmable logic controller can be achieved by executing the corresponding control program, requiring less computational power.

[0012] A graphical diagram in the application sense is a graphical representation generated by graphical programming operations, which, according to the definition of the graphical programming language Ladder Diagram (LD), provides a representation of the control program of an automation system or a programmable logic controller.

[0013] For the purposes of this application, a data flow graph is a graph-based representation of the information of a corresponding graphical diagram. A data flow graph comprises a plurality of nodes and edges connecting the nodes to one another, where the nodes are representations of elements and the edges are representations of connecting lines of the respective graphical diagrams. According to this application, a data flow graph is realized such that the complete information of each graphical diagram as well as the data flow within the graphical diagrams are represented by the data flow graph.

[0014] For purposes of this application, an executable version of a control program may be, for example, a binary version of the control program that is executed.

[0015] According to one embodiment, the diagram generation step comprises: In the receiving step, a step of receiving a graphical programming request according to a ladder diagram LD which is a graphical programming language, the graphical programming request including steps of adding and / or deleting and / or rearranging elements and / or connecting lines of the graphical diagram, and the graph generating step includes: modifying the data flow graph by adding and / or deleting and / or rearranging nodes and / or edges of the data flow graph according to the programming requirements in the programming step, wherein the graph generating step comprises: Adding and / or deleting and / or rearranging elements and / or connecting lines in the graphical diagram based on the modifications to the data flow graph and according to the graphical programming requirements in the graphical programming step.

[0016] The technical advantage of this is that it allows for simplified and efficient programming in accordance with the graphical programming language Ladder Diagram LD. To this end, based on the graphical programming requirements available to create a control program in accordance with the graphical programming language Ladder Diagram LD, both the graphical diagram and the corresponding data flow graph are modified accordingly.

[0017] In this context, modifying includes both the creation of a new data flow graph or corresponding graphical diagram, respectively, and the modification of an existing data flow graph or corresponding graphical diagram. Executing a graphical programming request generates or modifies both the graphical diagram to be generated or modified and the data flow graph representing the graphical diagram. A data flow graph describes the representation of information in the graphical diagram that underlies the graphical diagram. The structure of the data flow graph that underlies a graphical diagram in this context determines the possibility of modifying and / or generating the graphical diagram. Therefore, only graphical diagrams whose information can be represented in the corresponding data flow graph can be generated or modified.

[0018] As described above, representation of graphical diagrams in the form of data flow graphs can be used to generate graphical diagrams of reduced complexity compared to the prior art, and therefore to generate control programs that can be executed with reduced computational capacity.

[0019] According to one embodiment, the diagram generation step comprises: In a reading step, a control program programmed in Ladder Diagram LD, which is a graphical programming language, is read; In the second graph generation step, a data flow graph is generated based on information of the read control program; In the display step, a graphical diagram is generated based on the information in the data flow graph.

[0020] As a result, a technical advantage can be achieved in that precise modification of an existing control program that is programmed according to the graphical programming language, ladder diagram LD, is provided. The existing control program is first loaded, and a corresponding data flow graph and a graphical diagram represented thereby are generated based on the information in the loaded control program. This increases flexibility, as new control programs may be generated or existing control programs may be modified. By representing the graphical diagram of an already existing control program using a data flow graph according to the present application, the existing control program can be changed or modified with increased flexibility. The data flow graph representation in this context replaces the original representation with a hierarchical structure. Therefore, modification of the control program is not limited by the limitations based on the hierarchical structure of graphical diagram representations known in the prior art.

[0021] According to one embodiment, the graphical programming and / or displaying steps include: In a first arrangement step, converting nodes of the data flow graph into elements of a graphical diagram and arranging the elements into a two-dimensional array; In a second placement step, the edges of the data flow graph are converted into connection lines between elements of the graphical diagram, and the connection lines between the elements of the graphical diagram are placed, each connection line having exclusively horizontal and / or vertical components and connecting exclusively two elements.

[0022] This provides a technical advantage in that a clear representation of a control program can be achieved in the form of a graphical diagram that conforms to the requirements of the graphical programming language, ladder diagram (LD), based on the representation in the form of a data flow graph. For this purpose, the nodes of the data flow graph are converted into respective graphical diagram elements and arranged in a two-dimensional array. As a result, a clear representation of the graphical diagram can be achieved.

[0023] Furthermore, the edges of the data flow graph are converted into corresponding connection lines between the respective elements of the graphical diagram, and the connection lines between the elements of the graphical diagram arranged in a two-dimensional array contain exclusively horizontal or vertical components. As a result, the connection lines meet the requirements of the ladder diagram (LD), the graphical programming language defined in the above-mentioned standard. By explicitly converting the nodes and edges of the data flow graph into the corresponding elements and connection lines of the graphical diagram, it is possible to provide a graphical diagram with the lowest possible complexity, limited to the minimum number of necessary elements and connection lines. In this way, the most efficient control program can be achieved, which can be executed using the least amount of computing power.

[0024] According to one embodiment, the two-dimensional array is embodied as a matrix array having a plurality of plot units, each element being arranged in a plot unit and the connecting lines being arranged at least partially along the dividing lines between the plot units.

[0025] This achieves the technical advantage that elements and connecting lines of a graphical diagram can be clearly displayed, resulting in a clear and easy-to-read graphical diagram.

[0026] According to one embodiment, the dataflow graph is implemented as an acyclic graph, comprising a start node and an end node.

[0027] This achieves the technical advantage that an unambiguous assignment between a generated data flow graph and a corresponding graphical diagram can be achieved. By instantiating the data flow graph in an acyclic format, a start node and an end node can be identified, thereby determining the order of the nodes in the data flow graph. The start node and the end node may be identified as the left and right voltage rails of the graphical diagram, respectively, for the representation of the corresponding graphical diagram, thereby enabling an unambiguous assignment of individual nodes in the data flow graph and respective elements of the associated graphical diagram. This allows for unambiguous determination of an associated graphical diagram, which has the same information content as the associated data flow graph. This enables unambiguous graphical programming of control programs.

[0028] According to one embodiment, the graphical programming and / or displaying steps include: a sorting step of topologically sorting the nodes of the data flow graph and the corresponding elements of each graphical diagram, wherein in said sorting step an order of the nodes of the data flow graph and the corresponding elements of the graphical diagram is determined, said order corresponding to the distance of each node from the starting node; and The arranging step includes arranging the elements of the graphical diagram according to a topological sorting order.

[0029] This may achieve the technical advantage of enabling clearly arranged and therefore easily readable graphical diagrams. By topologically sorting the nodes of the data flow graph, the order of the nodes is achieved according to the distance of each node to the starting node of the data flow graph. By arranging the associated graphical diagram elements according to the order of each element generated in the topological sort, the clearest possible graphical diagram can be generated, allowing for the smallest possible distance between the left and right voltage rails and each element of the graphical diagram. As a result of the clarity achieved in this way, simplified graphical programming of the control program may be achieved. Due to the simplified graphical programming, the time required to create the control program may be minimized. Additionally, the clarity of the generated graphical diagram contributes to the quality of the control program generated by the graphical programming, which may also be embodied in a clearer and therefore more efficient form, thereby reducing the computational capacity required to execute the corresponding control program.

[0030] According to one embodiment, the graphical programming and / or displaying steps include: The optimization step includes optimizing the arrangement of elements and / or connecting lines of the graphical diagram with the aid of an optimization algorithm, the optimization including minimizing the length of connecting lines and / or minimizing the distance between elements and / or avoiding intersections of multiple connecting lines.

[0031] This may achieve the technical advantage that the clarity of the graphical diagram may be further optimized, which may also facilitate graphical programming and, in this regard, contribute to reducing the time required to create a control program and increasing the efficiency of the generated control program.

[0032] According to one embodiment, edges of a dataflow graph are embodied as directed edges, where the direction of an edge between two nodes of the dataflow graph represents the flow of current between the elements of the graphical diagram represented by the nodes.

[0033] This achieves the technical advantage of allowing a clear mapping between the data flow graph and the corresponding graphical diagram. This allows for precise graphical programming of control programs based on the graphical diagrams of the graphical programming language, Ladder Diagram (LD), and the data flow graphs that serve as representations in each case. The directed edges of the data flow graph allow for a clear interpretation of the data flow starting from the start node of the data flow graph in the direction of the end node of the data flow graph, which corresponds to the flow of current in the graphical diagram starting from the left voltage rail and heading in the direction of the right voltage rail.

[0034] According to one embodiment, the elements of the graphical diagram include voltage rails and / or contacts and / or coils and / or function block instances and / or function blocks and / or further elements defined according to the programming language Ladder Diagram LD.

[0035] This achieves the technical advantage of being able to generate clear graphical diagrams based on data flow graphs that meet the requirements of the graphical programming language Ladder Diagram (LD), which allows for precise graphical programming of control programs for automation systems.

[0036] According to one embodiment, the method comprises: The storing step includes storing the data flow graph in a text representation and / or storing an executable version of the control program in an executable file.

[0037] This can achieve the technical advantage of providing an efficient method for generating control programs. By storing a data flow graph in a textual representation, the corresponding data flow graph can be reloaded at a later point in time to modify the programmed control program. By storing an executable version of the control program, the corresponding control program can be executed later on any data processing unit.

[0038] According to a second aspect, there is provided a programming tool for generating a control program for controlling an automation system, the programming tool comprising a graphical editor unit and a conversion unit and configured to perform a method according to any of the preceding embodiments.

[0039] This allows for the technical advantage of providing an improved programming tool, the improved programming tool being configured to perform the method according to the present application for generating a control program having the above-mentioned technical advantages.

[0040] According to a third aspect, there is provided a method for controlling an automation system by executing a control program, the control program being generated by a method for generating a control program for controlling an automation system according to any of the preceding embodiments.

[0041] This may achieve the technical advantage that an improved method for controlling an automation system may be provided, the control being performed by executing a control program having the above technical advantages. [Brief description of the drawing]

[0042] The present application will now be described in more detail with reference to the accompanying drawings, in which: [Figure 1] Schematic diagram of the programming language ladder diagram (LD) and graphical diagram using data flow graph; [Figure 2] Further schematic representation of the programming language Ladder Diagram LD and further graphical diagrams with Data Flow Graphs; [Figure 3] Further schematic representation of a further graphical diagram in the programming language Ladder Diagram LD and further Data Flow Graph; [Figure 4] Further schematic representation of a further graphical diagram in the programming language Ladder Diagram LD and further Data Flow Graph; [Figure 5] Further schematic representation of a further graphical diagram in the programming language Ladder Diagram LD and another Data Flow Graph; [Figure 6] Schematic diagram of a method for generating a control program for controlling an automation system according to an embodiment; [Figure 7] Flowchart of a method for generating a control program for controlling an automation system according to an embodiment; [Figure 8] A further flowchart of a method for generating a control program for controlling an automation system according to a further embodiment; [Figure 9] A further flowchart of a method for generating a control program for controlling an automation system according to a further embodiment; FIG. 10 is another flowchart of a method for generating a control program for controlling an automation system according to another embodiment. FIG. 11 is a schematic diagram of a programming tool according to an embodiment.

[0043] Detailed Description FIG. 1 shows a schematic representation of a graphical diagram 200 according to the programming language Ladder Diagram LD and a data flow graph 300 .

[0044] In the following Figures 1 to 5, the properties and advantages of the method according to the present application for generating a control program for controlling an automation system are explained using various graphical examples. For this purpose, in particular, a depiction or representation of a graphical diagram 200 created according to the graphical programming language Ladder Diagram LD in a corresponding data flow graph 300 is explained or presented. Furthermore, advantages of the representation of the graphical diagram 200 in the corresponding data flow graph 300 compared to the hierarchical structuring of the graphical diagram 200 known in the prior art are explained.

[0045] It should be noted that the graphs shown in the following Figures 1 to 5 are for illustrative purposes only and do not represent actual examples of control programs for an automation system programmed in accordance with the Ladder Diagram LD graphical programming language. The symbols used in the graphical diagram 200 and the data flow graph 300 correspond to the usual nomenclature of the Ladder Diagram LD graphical programming language. A detailed description of the individual elements of the graphical diagram 200, their functions or effects within the graphical diagram, or the control programs represented thereby, is omitted. In this regard, reference is made to the above-mentioned standard IEC 61131-3 or to the description of the Ladder Diagram LD graphical programming language known in the state of the art.

[0046] Graphical representation A of FIG. 1 illustrates an exemplary graphical diagram 200 created in accordance with the Ladder Diagram LD graphical programming language. In accordance with the requirements of the Ladder Diagram LD graphical programming language, the graphical diagram 200 includes multiple elements 201 interconnected by straight connecting lines 203. In this context, the diagram 200 includes a left voltage rail L and a right voltage rail R, between which a first contact E1, a second contact E2, a third contact E3, and a first coil A1 are arranged and connected to each other via corresponding connecting lines 203. In the illustrated diagram 200, the second and third contacts E2 and E3 are arranged in parallel, which is in series with the first contact E1 and the first coil A1. Each of the elements 201 of the graphical diagram 200 includes an input and an output, and a connection between two elements 201 via connecting lines 203 is established by placing the connecting line 203 from the output of one of the elements 201 to the input of the other element 201. The exception to this is the left and right voltage lines L, R. There is no connecting line 203 pointing to the left voltage line L and no connecting line 203 pointing to the right voltage line R. The connecting lines 203 can have common segments, can overlap, and have the property that they always run from left to right in the graphical diagram 200.

[0047] The elements 201 of the graphical diagram 200 are associated in the present context with variables of the control program, which may assume the value 1 or 0. Assigning each individual element 201 a respective value 1 or 0 corresponds to switching the corresponding element, e.g., a switch or a relay coil. The contacts further describe Boolean inputs, where a value 1 corresponds to closing the switch and a value 0 corresponds to opening the switch. The current flow in the diagram corresponds to a closed switch, which corresponds to a value 1 to the left of the switch.

[0048] Graphical representation B of Fig. 1 shows the graphical diagram 200 shown in graphical representation A. Furthermore, graphical representation B shows the hierarchical structure of diagram 200 known from the prior art. Following the hierarchical structure, the elements of diagram 200, in particular the first to third contacts E1, E2, E3 and the first coil A1, are structured to result in a first sequence SEQ1 and a first alternative ALT1.

[0049] For purposes of this application, an array SEQ is a sequence of elements or a group of elements in graphical diagram 200 that are arranged sequentially or from left to right relative to the current flow in the diagram. For purposes of this application, an alternative ALT is a sequence of elements or a group of elements that are arranged in parallel or in parallel relative to the current flow.

[0050] In the illustrated hierarchical structure, the first array SEQ1 includes a first contact E1, a first alternative ALT1, and a first coil A1. Meanwhile, the first alternative ALT1 comprises two parallel second and third contacts E2, E3. According to the illustrated hierarchical structure, the information may be represented as follows:

[0051] Structure 1 SEQ1 Contact E1 ALT1 Contact E2 Contact E3 Coil A1 In graphical representation C of FIG. 1 , a representation of a graphical diagram 200 structured in accordance with the present application is shown in a corresponding dataflow graph 300. The dataflow graph 300 comprises a plurality of nodes 301, each interconnected by a plurality of edges 303. The edges 303 are embodied as directed edges and include a direction represented by an arrow. The current flow in the graphical diagram 200 between individual nodes 301 can be represented by the direction of the directed edges 303. Each node 301 corresponds to an element 201, and the edges 303 represent the connecting lines 203 in the graphical diagram 200. As in the graphical diagram 200, the edges 303 in the dataflow graph 300 point from the output of a node 301 to the input of another node 301. The direction of the directed edges 303 represents the data flow in the dataflow graph 300, which corresponds to the current flow in the graphical diagram 200. Thus, edges 303 in dataflow graph 300 are created only between nodes 301 that are representations of elements 201 in graphical diagram 200 that provide the current direct flow in graphical diagram 200 from the output of one element 201 to the input of each other element 201. Because the current flow between two elements 201 in graphical diagram 200 is always from left to right, directed edges 303 in dataflow graph 300 can also have a left-to-right direction.

[0052] In this context, dataflow graph 300 includes a start node 305 and an end node 307. The nodes 301 of dataflow graph 300 may be further arranged in a topological order, such that in addition to the start node 305 and end node 307, dataflow graph 300 includes a first node 308, a second node 309, a third node 310, and a fourth node 311. Dataflow graph 300 therefore corresponds to an acyclic graph with uniquely identifiable start and end nodes 305, 307, characterized in that start node 305 is connected only to edges 303 directed away from start node 305, while end node 307 is connected only to edges 303 directed toward end node 307. Dataflow graphs 300 with multiple end nodes 307 are also possible, although in this case, each end node 307 is uniquely identifiable as an end node. In the illustrated data flow graph, the start node 305 corresponds to the left voltage rail L, and the end node 307 corresponds to the right voltage rail R. The first node 308 corresponds to the first contact E1, the second node 309 corresponds to the second contact E2, the third node 310 corresponds to the third contact E3, and the fourth node 311 corresponds to the first coil A1. The topological sorting of the individual nodes 301 is based on their distance to the start node 305. The distance of a node to the start node 305 may be defined in this context by the number of nodes 301 connected via at least one edge between the respective node and the start node 305. Recursively, a distance of 0 may be assigned to the start node 305, while a distance may be assigned to each further node as the sum of the value 1 and the maximum distance of the immediately preceding node. A topological order is also defined / imposed on edges 303, and dataflow graph 300 includes a first edge 313, a second edge 314, a third edge 315, a fourth edge 316, a fifth edge 317, and a sixth edge 318.

[0053] In the illustrated embodiment, the arrangement of nodes 301 in dataflow graph 300 corresponds to the arrangement of elements 201 in graphical diagram 200, and dataflow graph 300 in graphical diagram C is a unique representation of graphical diagram 200 in graphical diagram A and contains the same information content as graphical diagram 200 shown. Dataflow graph 300 may be shown in different configurations than shown. If the topological order of the graph, or of the nodes and edges of the graph, is preserved, all possible configurations are equivalent and represent the same graphical diagram 200.

[0054] A textual representation of the information content of dataflow graph 300 may be shown as follows: Structure 2 Node 305:L Node 307:R Node 308:E1 Node 309:E2 Node 310:E3 Node 311:A1 Edge 313: Node 305, Node 308 Edge 314: Node 308, Node 309 Edge 315: Node 308, Node 310 Edge 316: Node 310, Node 311 Edge 317: Node 309, Node 311 Edge 318: Node 311, Node 307 An edge is defined in this context by an ordered pair of nodes connected by each edge. The order of the nodes within an ordered pair of edges represents the direction of the directed edge.

[0055] The illustrated text-based representation represents the entire information content of dataflow graph 300. The information content of dataflow graph 300 corresponds to the information content of associated graph 200, and dataflow graph 300 is a unique representation of graph 200 in graphical depiction A.

[0056] FIG. 2 shows a further schematic view of a further graphical diagram 200 in accordance with the programming language ladder diagram LD and a further data flow graph 300 .

[0057] 2 shows an example of a graphical diagram 200 that cannot be represented according to a hierarchical structure known from the prior art or can only be represented with increasing complexity. On the other hand, the graphical diagram 200 shown in the graphical representation A of FIG. 2 can be represented by a representation according to the present application with the help of a data flow graph 300.

[0058] The graphical diagram 200 shown in graphical representation A includes first, second, and third contacts E1, E2, and E3, and first and second coils A1, A2, respectively, connected between a left voltage rail L and a right voltage rail R. The first and third contacts E1, E3 are disposed upstream of the first and second coils A1, A2, respectively, with respect to current flow between the left and right voltage rails L, R, and the second contact E2 is disposed adjacent to the first and third contacts E1, E3 with respect to current flow. In the illustrated diagram, the second contact E2 is further connected to both the first coil A1 and the second coil A2 by respective connecting lines 203.

[0059] Graphical representation B shows a hierarchical structure of the graphic diagram 200 of graphical representation A similar to the prior art procedure of Figure 1. However, hierarchical structuring into sequences SEQ and alternatives ALT similar to the structure of Figure 1 fails in the illustrated graphical diagram because the second contact E2 connects to both the first coil A1 and the second coil A2, and no clear assignment of the second contact E2 to a sequence or alternative is visible, making clear structuring impossible.

[0060] In Diagram B, an exemplary hierarchical structure is shown. The illustrated graphical diagram 200 is structured into a first array SEQ1, a second array SEQ2, and a first alternative ALT1. The first array SEQ1 includes the first alternative ALT1, and thus the first and second contacts E1 and E2, as well as the coil A1. The second array SEQ2 includes the third contact E3 and the second coil A2. However, due to the marked connection line 203 between the second contact E2 and the second coil A2, the proposed structure is not complete because the second contact E2 must also be part of the second array SEQ2, which includes the second coil A2. However, in the illustrated diagram 200, the second contact E2 occurs only once, so a double assignment of the second contact E2 to two different arrays or alternatives is not possible.

[0061] Graphical representation C shows an alternative graphical representation 200 to diagram 200 of graphical representation A. As mentioned above, hierarchical structures known from the prior art fail to represent diagram 200 shown in graphical representation A. To circumvent this, graphical representation C includes the information content of diagram 200 and therefore shows an alternative arrangement of diagram 200 that represents a functional alternative to diagram 200 of graphical representation A. Diagram 200 of graphical representation C shows second junction E2 in a first instance and a second instance. In diagram 200 of graphical representation C, in contrast to the diagrams of graphical representations A and B, second junction E2 is shown in a first instance and a second instance.

[0062] Due to the dual arrangement of second contact E2, a first instance of second contact E21 is connected to first coil A1, and a second instance of second contact E2 is connected to second coil A2. Furthermore, a first instance of second contact E2 is arranged in parallel with first contact E1, and a second instance of second contact E2 is arranged in parallel with third contact E3. As a result, the alternative structuring of diagram 200 in graphical representation C corresponds similarly to diagram 200 in graphical representation A.

[0063] This allows for a clear hierarchical structuring. To this end, the illustrated diagram 200 is structured into a first alternative ALT1 comprising a first array SEQ1 and a second array SEQ2. The first array SEQ1 comprises a second alternative ALT2 comprising first and second contacts E1, E2 arranged in parallel with each other and a first coil A1. The second array SEQ2 comprises a third alternative ALT3 comprising second and third contacts E2, E3 arranged in parallel with each other and a second coil A2.

[0064] Thus, the illustrated alternative structuring of diagram 200 allows for a clear hierarchical structure consisting of sequences and alternatives. Furthermore, the alternative structuring of diagram 200 represents the information content of graphical diagram 200 in graphical representation A and the corresponding control programs in two diagrams, graphical representations A and C, each of which has the same operating mode. However, a drawback of the alternative structuring of diagram 200 in graphical representation C is the double instantiation of second contact E2. This makes graphical diagram 200 more complex than the structuring of graphical representation A, including an additional element 201. This is particularly problematic when complex subdiagrams must be added instead of a single element. This can increase the complexity of the respective control programs based on graphical diagram 200 in graphical representation C, and thus the computational effort for executing the respective control programs may also increase due to the additional element 201. The additional element 201 is exclusively required for achieving the hierarchical structuring but does not provide any additional informational contribution to the graphical diagram.

[0065] Meanwhile, graphical representation D shows a dataflow graph 300 according to the present application as a representation of the graphical diagram 200 of graphical representation A. Similar to the dataflow graph of FIG. 1 , the dataflow graph 300 comprises nodes 301 connected to each other via edges 303 between a start node L and an end node R. The nodes correspond to elements of the graphical diagram 200 of graphical representation A. The illustrated dataflow graph therefore comprises first, second, and third junctions E1, E2, and E3, as well as first and second coils A1 and A2. The nodes correspond to elements of the graphical diagram 200 of graphical representation A. While the illustrated dataflow graph therefore includes first, second, and third junctions E1, E2, and E3, as well as first and second coils A1 and A2, as can be seen in graphical representation D, duplication of the second junction E2 is not necessary. Referring to graphical diagram 200 in graphical diagram A, first through third contacts E1, E2, and E3 are each connected to a start node 305 representing the left voltage rail L. The first and third contacts E1 and E3 are each connected to first and second coils A1 and A2, which are connected to an end node 307 representing the right voltage rail R. The second contact E2 is connected to the first and second coils A1 and A2, respectively, via the illustrated directed edge 303. As can be seen in graphical representation D, it is not necessary to add additional nodes, as would be required in the alternative structuring of diagram 200 in graphical representation C. Representation of diagram 200 in dataflow graph 300 thus allows for a simplified representation of diagram 200, with the information content of dataflow graph 300 being similar to the information content of graphical diagram 200 in first graphical representation A. The control program represented by the data flow graph 300 can eliminate the redundancy due to the duplication of the second junction E2 and is therefore simplified compared to the control program represented by the graphic diagram 200 of the graphic representation C. A textual representation of the information content of the data flow graph 300 can be performed according to the example shown in FIG.

[0066] In the illustrated dataflow graph 300, the elements 201 and connecting lines 203 of the graphical diagram 200 are represented by corresponding nodes 301 and directed edges 303, demonstrating the flexibility achieved as a result. Because of the representation provided by the dataflow graph 300, changes within the graphical diagram 200 are readily possible without being constrained by the limitations of the representation used, as is the case with, for example, hierarchical structures. For example, if changes are made in the graphical diagram 200 by deleting or adding elements 201 or changing the connections between elements 201, these changes can be applied without restriction to the respective dataflow graph 300. Because the directed edges 303 of the dataflow graph 300 are defined as ordered pairs, any new nodes 301 and / or edges 303 can be added or existing nodes 301 and / or edges 303 can be deleted without affecting the changes; typically, adding or deleting a node 301 is accompanied by a corresponding addition or deletion of an edge 303. This allows changes to be made to the graphical diagram 200 without the constraints imposed by a particular representation, however the cycle freedom of the dataflow graph 300 must always be maintained during adjustments.

[0067] Structures 1 and 2 below describe in textual representation the graphic diagram 200 of graphical representation C (structure 1) and the data flow graph 300 of graphical representation D (structure 2).

[0068] Structure 1 Alt1 SEQ1 ALT2 Contact E1 Contact E2 Coil A1 SEQ2 ALT3 Contact E2 Contact E3 Coil A2 Structure 2 Node 305:L Node 307:R Node 308:E1 Node 309:E2 Node 310:E3 Node 311:A1 Node 312:A2 Edge 313: Node 305, Node 308 Edge 314: Node 305, Node 309 Edge 315: Node 305, Node 310 Edge 316: Node 308, Node 311 Edge 317: Node 309, Node 311 Edge 318: Node 309, Node 312 Edge 319: Node 310, Node 312 Edge 320: Node 311, Node 307 Edge 321: Node 312, Node 307 FIG. 3 shows a further schematic view of the further graphical diagram 200 in accordance with the programming language ladder diagram LD and a further data flow graph 300 .

[0069] FIG. 3 shows a further example of a graphical diagram 200 that is a valid diagram according to the requirements of the graphical programming language Ladder Diagram LD, but which cannot be represented in the form shown in graphical representation A according to the hierarchical structure known in the prior art.

[0070] The diagram 200 of the graphical representation A includes a first contact E1, a first coil A1 and a second coil A2, and a call to a first function block instance FB1 of the function block CALC. The first function block instance FB1 can be any type of function block CALC that processes a signal received via a first input A and accordingly outputs a corresponding functional result via a first output X. In the illustrated diagram 200, the call to the first function block instance FB1 is connected to both the first coil A1 and the second coil A2 via the first output X. The first contact E1 is connected to the first input A and the second coil A2 of the call from the first function block instance FB1.

[0071] 1 and 2, diagram B illustrates a failed hierarchical structuring of diagram 200 of graphical representation A. Similarly to the above-mentioned problem with the diagram of FIG. 2, in the diagram of FIG. 3, both the connection between the call of the first function block instance FB1 and the first coil A1 and coil A2, and the connection between the call of the first function block instance FB1 and the second coil A2 and the first contact E1, raise problems for clear structuring into sequences and alternatives according to the hierarchical structuring known from the prior art. In the illustrated structure, diagram 200 is structured into a first array SEQ1, a second array SEQ2, and a first alternative ALT1, where the first array SEQ1 includes the first contact E1 and the first alternative ALT1, which includes the second array SEQ2 and the second coil A2, and the second array SEQ2 includes the call of the first function block instance FB1 and the first coil A1. However, the connection line 203 shown between the first function block FB1 and the second coil A2 does not allow for an explicit assignment to sequences or alternatives, in particular of the calls of the first function block instance FB1.

[0072] Similarly, with respect to the example of FIG. 2, an alternative structure for diagram 200 of graphical representation A is shown in graphical representation C. Diagram 200 of graphical representation C represents the same information content as diagram 200 of graphical representation A. Here, diagram 200 of graphical representation C represents the same information content as diagram 200 of graphical representation A, and therefore, the operation of the control program based on each of the different diagrams 200 of graphical representations A and C is obviously the same. In this regard, function block CALC should be considered to have no side effects. Similarly, with respect to the example of FIG. 2, in the alternative structure of diagram 200 of graphical representation C, the aforementioned ambiguous assignment of first function block FB1 is resolved by the fact that first function block FB1 in the alternative structure is placed twice in diagram 200.

[0073] Arranging the call of the first function block instance FB1 twice in the alternative structure of graphical diagram 200 in graphical representation C should not be confused with adding an additional function block instance to a control program. Instead, placing the call of the first function block instance FB1 twice in graphical diagram 200 should be understood as executing the behavior of function block CALC twice on function block instance FB1 in the associated control program.

[0074] In the diagram 200 shown in graphic representation C, the call of the first function block instance FB1 in each case is connected twice to the first contact E1 and once to both the first coil A1 and the second coil A2. Here, the two calls of the first function block instance FB1 are arranged next to each other in terms of current flow, as are the first and second coils A1 and A2. The first contact E1 is also connected to the second coil A2. Thus, the illustrated diagram appears, mutatis mutandis, to correspond to the diagram 200 in graphic representation A and thus simply represents an alternative structuring of the same control program. In the illustrated diagram 200, the two arrangements of the calls of the first function block instance FB1 allow for a clear hierarchical structuring into sequences and alternatives. Thus, the diagram can be configured into a first sequence SEQ1 with a first contact E1 and a first alternative ALT1. The first alternative ALT1 further comprises two arrays SEQ2 and SEQ3 arranged in parallel with each other. The second array SEQ2 in this context comprises a call to the first function block instance FB1 and a first coil A1, and the third array SEQ3 comprises the second alternative ALT2 and a second coil A2. The second alternative ALT2 again comprises a duplicated call to the first function block instance FB1 and a fourth array SEQ4 arranged in parallel with the duplicated call to the first function block instance FB1, and further comprises a connecting line arranged in parallel with the duplicated call to the first function block instance FB1. Due to the duplicated placement of the call to the first function block instance FB1, the function block CALC of the call to the first function block instance FB1 is executed twice when the associated control program is executed. This may result in an increased computational effort due to the duplication of the first function block FB1, which was required exclusively to enable hierarchical structuring but does not represent any informational added value for the control program. Also, the execution of the behavior may have side effects, i.e., the behavior of the control program may actually shift if the state of the control program changes.For example, if an action increments a global variable X in the control program, its value will be different after the execution of B) and C). Common function blocks with side effects are R_TRIG and F_TRIG in IEC 61131-3 for edge detection. Therefore, duplicating the calls of instances of these FBs indirectly changes the behavior of the program.

[0075] Graphical representation D shows a representation of the graphical diagram 200 according to the present application in a corresponding dataflow graph 300. The dataflow graph 300 includes all elements of the diagram 200 in graphical representation A, avoiding double execution of the first function block FB1. To this end, the first contact E1 is connected to both of the first inputs A of the first function block FB1 via directed edges. The first contact E1 is further connected to the second coil A2 via another directed edge. The first function block FB1 is connected to the first coil A1 via the first output X via a directed edge, and to the second coil A2 via another directed edge. This eliminates the need for multiple executions of the function block CALC of the first function block FB1, as was required in the structure of graphical representation C. Thus, the directed edge 303 allows for clear assignment of the individual nodes 301 to each other without the need to insert additional nodes 301 into the graph to ensure clarity. This reduces the complexity of the control program and, in some cases, can reduce the computational effort required to execute the control program. Furthermore, for a function block CALC that is affected by side effects, the behavior does not deviate between A) and D).

[0076] Structures 1 and 2 below describe in textual representation the graphical diagram 200 of graphical representation C (structure 1) and the data flow graph 300 of graphical representation D (structure 2).

[0077] Structure 1 SEQ1 Contact E1 ALT1 SEQ2 ALT2 Function block FB1 SEQ4 Coil A1 SEQ3 Function block FB1 Coil A2 Structure 2 Node 305:L Node 307:R Node 308:E1 Node 309:FB1 Node 310:A1 Node 311:A2 Edge 313: Node 305, Node 308 Edge 314: Node 308, Node 309 Edge 315: Node 308, Node 311 Edge 316: Node 309, Node 310 Edge 317: Node 309, Node 311 Edge 318: Node 311, Node 307 Edge 319: Node 310, Node 307

[0078] FIG. 4 shows a further schematic view of a further graphical diagram 200 in accordance with the programming language ladder diagram LD and a further data flow graph 300 .

[0079] The example graphical diagram shown in FIG. 4 is permissible according to the rules of the graphical programming language, Ladder Diagram LD, but, like the examples of FIGS. 2 and 3, cannot be displayed according to the structuring rules of the prior art. Diagram 200 shown in graphical representation A includes left and right voltage rails L and R, as well as first through third contacts E1, E2, and E3, first through third coils A1, A2, and A3, and a call to a first function block instance FB1 with a function block CALC to be executed. The first through third contacts E1, E2, and E3 are arranged in parallel with respect to current flow and are connected to the first input A, the second input B, or the third input C, respectively, of the call to the first function block instance FB1. The first through third coils A1, A2, and A3 are also arranged adjacent to one another, with the first coil A1 connected to the first output X of the call to the first function block instance FB1 and the third coil A3 connected to the second output Y of the call to the first function block instance FB1. The second coil A2 is connected to both the first output X and the second output Y of the call to the first function block instance FB1. Similar to the examples shown with respect to Figures 2 and 3, due to the dual connection of the second coil A2 to the first and second outputs X, Y of the call to the first function block instance FB1, the diagram 200 of the graphical representation A cannot be uniquely structured in sequence and alternation according to a hierarchical structure. Furthermore, the multiple inputs and outputs of the first function block FB1 prevent an unambiguous representation of the diagram 200 in a corresponding hierarchical structure.

[0080] Unlike the examples shown in Figures 2 and 3, no alternative representations are shown in Figure 4. Such alternative representations would not be possible without numerous modifications to the graphical diagram 200 shown in Figure 4. The graphical diagram 200 shown in graphical representation A is an acceptable graphical diagram that follows the rules of the programming language Ladder Diagram LD, and can be represented without modification with a hierarchical structure, e.g., additional Boolean operators at inputs A, B, and C of the first function block FB1.

[0081] However, representation as a data flow graph is readily possible, as shown in diagram B.

[0082] 1-3, the following does not include further description of alternative graphical diagrams 200 and corresponding hierarchical structures. Instead, graphical representation B shows a data flow graph 300 according to an application for the graphical diagram 200 of graphical representation A.

[0083] Dataflow graph 300 is suitable for this purpose to clearly represent diagram 200 of graphical representation A without the need to insert additional elements or nodes. Thus, dataflow graph 300 contains only elements of diagram 200 of graphical representation A, and all elements are listed exclusively in dataflow graph 300.

[0084] First, second, and third nodes E1, E2, and E3 are connected to a start node 305 and to first, second, and third terminals A, B, and C of the call to the first function block instance FB1, respectively. First, second, and third coils A1, A2, and A3 are each simply connected to an end node 307, with the first coil A1 connected to the first output X and the third coil A3 connected to the second output Y of the first function block instance FB1. Meanwhile, the second coil A2 is connected to both the first and second outputs X and Y of the call to the first function block instance FB1. This provides a simplified representation of graph 200 of graphical representation A compared to the prior art, in which the complete information content of graph 200 is clearly represented by data flow graph 300.

[0085] FIG. 5 shows a further schematic view of a further graphical diagram 200 in accordance with the programming language ladder diagram LD and a further data flow graph 300 .

[0086] FIG. 5 shows a further example of a graphical diagram 200 that is permissible according to the rules of the graphical programming language Ladder Diagram LD, but cannot be clearly represented according to the structuring rules of the prior art.

[0087] Diagram 200 of graphical representation A includes first, second, and third contacts E1, E2, and E3, a call to a first function block instance FB1, a call to a second function block instance FB2, and first and second coils A1 and A2. The first, second, and third contacts E1, E2, and E3 are positioned adjacent to one another in terms of current flow and simply connect to first, second, and third terminals A, B, and C, respectively, of the call to the first function block instance FB1. The first and second coils A1 and A2 are positioned side by side and connected to first and second outputs X and Y, respectively, of the call to the second function block instance FB2. The calls to the first and second function block instances FB1 and FB2 are connected to each other by connecting the first output X of the call to the first function block instance FB1 to the second input B of the call to the second function block instance FB2, and connecting the second output Y of the call to the first function block instance FB1 to the second function block instance FB2 to the first input A of the call to the second function block instance FB2. Furthermore, a third junction E3 is connected to the third input C of the call to the second function block instance FB2. Furthermore, because the calls to the first and second function block instances FB1 and FB2 are cross-connected to each other, structuring diagram 200 into arrangements and alternative forms according to the prior art rules for hierarchical structuring is clearly impossible. Following the example above, alternative structures of diagram 200 must be created for this purpose, in that multiple configurations of calls to the first and / or second function block instances FB1 and FB2 are implemented. However, because each call to the second function block instance FB2 requires values ​​for ports A, B, and C, auxiliary variables must be introduced for hierarchical structuring. The graphical representation of the ladder diagram language (LD) makes it difficult to read the diagram, as such connections cannot be represented. The double placement of the mentioned elements increases the complexity of the graphical diagram and the corresponding control program.Furthermore, the multiple placement of calls to the function block instances FB1 and FB2 causes multiple executions of the function blocks CALC of the function block instances FB1 and FB2 during the execution of each control program. As a result, additional calculation steps must be performed during the execution of the control program, which is due solely to the limited hierarchical structuring for the representation of the graphical diagram, and therefore unnecessarily increases the calculation capacity required for the execution of the control program.

[0088] Alternatively, a representation of the graphical diagram 200 by a dataflow graph 300 according to the present application is shown in graphical representation B. Here, the dataflow graph 300 includes only the elements of the graphical diagram 200 in graphical representation A; additional or multiple representations of the elements are not required. Any connection of individual nodes 301 of the dataflow graph 300 can be implemented by connecting the individual nodes 301 with individual directed edges 303. In particular, the cross-connection of the first and second function block instances FB1 and FB2 can be easily implemented by corresponding directed edges 303 extending between the first and second outputs X and Y of the call to the first function block instance FB1 and the corresponding first and second inputs A and B of the call to the second function block instance FB2, respectively. Furthermore, the third junction E3 can be easily connected via two separate directed edges to both the third input C of the call to the first function block instance FB1 and the third input C of the call to the second function block instance FB2. Therefore, the data flow graph according to the present application is not subject to the hierarchical structuring of the prior art, and therefore does not require multiple executions of elements required in the prior art example shown above. An unambiguous textual representation according to the example shown with respect to Figure 1 can be achieved by performing a topological sorting of the individual nodes and an unambiguous assignment of edges 303 as ordered pairs of nodes 301 connected by each edge 303.

[0089] FIG. 6 shows a schematic diagram of a method for generating a control program for controlling an automation system according to one embodiment.

[0090] Figure 6 shows a graphical representation of the execution of the method according to the present application for generating a control program for controlling an automation system. Figure 6 shows, using various graphical representations A to E, how, according to the method according to the present application, based on a data flow graph, corresponding synonymous representations of associated graphical diagrams are performed according to LD by executing various method steps. In the following description, the nomenclature introduced in Figures 1 to 5 is used for both the graphical diagrams and the data flow graphs and will not be further explained below.

[0091] 1 to 5, the graphical description of the method according to the present application is also given for any example that is not intended to serve as a limitation of the present application. As already mentioned above, the representation of the graphical diagram according to the present application by the data flow graph according to the present application is not subject to the limitations known from the prior art. Therefore, based on the exemplary graphical diagram 200 of the graphical representation A of FIG. 6, the means for generating a control program according to the method according to the present application described below can be applied to any graphical diagram that is allowed according to the rules of the graphical programming language, ladder diagram LD.

[0092] In the illustrated example, the graphical diagram 200 of the graphical representation A includes first, second, and third contacts E1, E2, and E3 and first and second coils A1 and A2, respectively, disposed between left and right voltage rails L and R. The first contact E1 and first coil A1 are disposed one behind the other with respect to the current flow, while the second contact E2, third contact E3, and second coil A2 are disposed one behind the other with respect to the current flow. The second contact E2 is further connected to the first coil A1 by a further connecting line 203. In the following embodiments, the diagram 2 shown in diagram A represents a graphical diagram obtained by implementing the method according to the present application. This can be performed, for example, based on a corresponding graphical input request during the graphical programming process. Alternatively, the desired graphical diagram 200 can be generated by reading an existing graphical diagram and performing the appropriate conversion steps performed in the following embodiments.

[0093] To generate a control program, a dataflow graph 300 is first created based on either graphical programming requirements or the read text information of an existing control program. According to the embodiment of FIGS. 1-5, the dataflow graph 300 includes a start node 305, an end node 307, and multiple nodes 301 disposed therebetween, each interconnected by a respective edge 303. The dataflow graph 300 shown here includes all the elements required to represent the desired graphical diagram 200, including first, second, and third contacts E1, E2, and E3, and first and second coils A1 and A2. In this case, the first contact E1 is connected in series to the first coil A1, the second contact E2 is connected in series to the third contact E3, the second contact E2 is connected in series to the second coil A2, and the second contact E2 is further connected to the first coil A1.

[0094] The generation of dataflow graph 300 may be performed according to graphical programming requests, in which various elements of desired graphical diagram 200 are added or deleted. To this end, nodes 301 and edges 303 of dataflow graph 300 may be assigned to each element 201 and each connection line 203 of graphical diagram 200, respectively. In this case, each edge 303 extends from the output of a node 303 to the input of another node 303, and is directed in a direction starting from start node 305 and in a direction toward end node 307, respectively. Edges 303 are created in graphical diagram 200 at the exact time when a corresponding connection line runs from the output of a corresponding element 201 to the input of a further element 201, thus allowing a direct current to run between two elements 201 in the direction of right voltage bar R. In this context, a corresponding graphical programming request may be directly translated into a corresponding modification of dataflow graph 300 by deleting or adding nodes 301 and / or edges 303 accordingly. Alternatively, the dataflow graph 300 may be generated based on a textual representation according to the example given in Figure 1. For this purpose, for example, a prior art textual representation in which hierarchical structuring into sequences and alternatives is performed may be converted into a corresponding textual representation in which individual elements are represented as nodes and connecting lines are represented as directed edges of the dataflow graph. The textual representation of the dataflow graph 300 may also be directly converted into a corresponding dataflow graph by creating nodes 303 and edges 303.

[0095] According to a further method step, a topological sorting may be performed involving determining the depth of the nodes of the dataflow graph 300, where the dataflow graph or nodes 301 of the dataflow graph 300 may be arranged in a two-dimensional array 400 as shown in graphical representation C, with each node 301 arranged in a corresponding plot unit 401 of the two-dimensional array 400, and the array 400 may be in the form of a grid. Thereby, a node with distance i is arranged in the jth column, where j>=i. In this context, the depth of a node 301 describes the number of nodes 301 arranged between the start node 305 and the respective node 301 via corresponding connections to both. The topological sorting, where the order of the nodes of the dataflow graph 300 is determined, is based on the distance of each node 301 from the start node 305 of the dataflow graph, respectively. By topologically sorting the dataflow graph 300 for or on each node 301, a path can be found from the start node 305 to the end node 307 where none of the directed edges 303 of the path are pointed towards or traversed in the direction of the start node 305.

[0096] In a further method step, the dataflow graph 300 of the graphical representation C is then transformed into a corresponding graphical diagram 200, which is shown in the graphical representation D. In this context, all nodes 301 of the dataflow graph 300 are transformed into corresponding elements 201 of the graphical diagram 200, where the array 400, which is embodied as a grid, and the positions of the nodes 301 within it are taken over. Furthermore, the directed edges 303 of the dataflow graph 300 are transformed into corresponding connecting lines 203 of the graphical diagram 200, where the connecting lines 203 have only horizontal or only vertical components. The connecting lines 203 are arranged such that corresponding nodes 301 connect the elements 201 connected by the directed edges 303 of the dataflow graph 300. In this context, the individual elements 201 of the graphical diagram are in each case arranged in individual plot units 401 of the two-dimensional array 400. Connecting lines 203, consisting of horizontal or vertical components, are further disposed on the dividing lines 403 of the two-dimensional array 400, thereby separating adjacent plot units 401 from each other.

[0097] In the illustrated embodiment, each connection line 203 includes a respective horizontal starting component 209, a first vertical component 211, a horizontal center component 213, a second vertical component 215, and a horizontal input component 217. In graphical representation D, for clarity, corresponding components are labeled with corresponding reference numerals only for the connection line between the third contact E3 and the second coil A2. In this context, the horizontal starting component 209 is connected to the output of the third contact E3, while the horizontal input component 217 is connected to the input of the second coil A2. The first and second vertical components 211, 215 are each positioned on a vertical dividing line 403 of the two-dimensional array 400. The horizontal center component 213 is again positioned on the horizontal dividing line 403 of the two-dimensional array 400.

[0098] In the illustrated embodiment, the two-dimensional array 400 includes a plurality of horizontal separation lines 403, each of which is located in a central region of the two-dimensional array 400 and separates two overlapping rows of plot units 401. In the illustrated embodiment, the two-dimensional array 400 includes eight horizontal separation lines 403, such that one horizontal separation line 403 is provided for each of the eight connecting lines 203. The horizontal center components 213 of the eight different connecting lines 203 may be individually positioned on the horizontal separation line 403. Furthermore, the two-dimensional array 400 includes a plurality of vertical separation lines 403, such that the first and second vertical components 211, 215 of the different connecting lines 203 may be positioned exclusively on the vertical separation line 403.

[0099] As an alternative to the graphical representation D, correspondingly differently structured two-dimensional arrays 400 may be generated for differently structured graphical diagrams 200 or differently structured data flow graphs 300. For example, these may include multiple superimposed rows of plot units 401 and may include different numbers of vertical and horizontal dividing lines 403.

[0100] Alternatively, nodes 301 may be arranged according to other methods, provided that when there is an edge 303 between two nodes 301, the exit of the predecessor node 301 is to the left of the entrance of the successor node 301.

[0101] In a further method step, an optimization is then performed based on the arrangement 400 of graphical representation D, minimizing the distances between the elements 201 and / or the lengths of the connecting lines 203 and / or avoiding crossings of the connecting lines 203. Graphic representation E shows the graphical diagram 200 resulting from the optimization. Compared to the graphical diagram 200 of graphical representation D, in particular, the lengths of the connecting lines 203 are reduced. In each case, the connecting lines 203 connecting the inputs of one element 201 to the outputs of other elements 201 arranged in the same row of the plot unit 401 are reduced to straight horizontal connecting lines 203 during the optimization by reducing the first and second vertical components 211, 215 to zero. Similarly, the second vertical component 215 is reduced to zero for the connecting line between the left voltage rail L and the second contact E2, while the first vertical component 211 is reduced to zero for the connecting line 203 between the second coil A2 and the right voltage rail R. The graphical diagram 200 thus optimized has only connecting lines 203 that are clearly represented and have only horizontal and vertical components 205 and 207, respectively. The graphical diagram 200 thus generated corresponds to the desired diagram 200 in graphical representation A and is clearly represented by the data flow graph 300 in graphical representation B.

[0102] FIG. 7 shows a flowchart of a method 100 for generating a control program for controlling an automation system, according to one embodiment.

[0103] The method 100 according to the present application for generating a control program for controlling an automation system is applicable to the example of a graphical diagram 200 according to the graphical programming language Ladder Diagram LD and Data Flow Graph 300 according to the applications indicated above.

[0104] To generate a control program for controlling an automation system, a graphical diagram 200 of the control program is first generated in a diagram generation step 101 according to a graphical programming language, Ladder Logic LD, for a programmable logic controller (PLC). The graphical diagram 200 includes a plurality of elements 201, each of which is interconnected by a connecting line 203. The elements 201 herein include at least a left voltage rail L and a right voltage rail R, and a plurality of elements 201 disposed between the left and right voltage rails L and R. In this context, the elements 201 disposed between the voltage rails L and R may include contacts, coils, calls to function block instances, functions, or other elements defined in the guidelines for the Ladder Diagram LD graphical programming language. Following the example above, the connecting line 203 may consist of only a horizontal component 205 and a vertical component 207.

[0105] In the graph generation step 103, a dataflow graph 300 is further generated as a representation of the graphical diagram 200 of the control program to be generated. The dataflow graph 300 includes a plurality of nodes 301 interconnected by directed edges 303. The dataflow graph 300 includes at least a start node 305 and an end node 307, where the start node 305 represents the left voltage rail L of the graphical diagram 200 and the end node 307 represents the right voltage rail R of the graphical diagram 200. A plurality of nodes 301 are disposed between the start node 305 and the end node 307, each representing an element 201 of the graphical diagram 200. According to the example described with reference to FIG. 1 , a directed edge 303 is defined as an ordered pair of two nodes 301 connected by a respective directed edge 303, and corresponds to a connecting line 203 of the graphical diagram 200. Thus, an edge 303 between two nodes 301 of a dataflow graph 300 should be inserted when the graphical diagram 200 includes a connecting line 203 extending between the elements 201 represented by the two nodes 301, the connecting line 203 extending between the output of one element 201 and the input of the other element 201, the connecting line 203 representing a left-right direct current between the two elements 201. In this context, the order of the entries in the ordered pair specifies the direction of the respective edge 303. The diagram generation step 101 and the graph generation step 103 may be performed sequentially in time or simultaneously in time. At the same time, it should be understood that during the creation of the graphical diagram 200, a corresponding representation is created as a dataflow graph. The conversion of the elements or connecting lines of the graphical diagram 200 into the corresponding nodes 301 and edges 303 of the dataflow graph 300 obviously occurs programmatically after the creation of the graphical diagram 200.

[0106] The dataflow graph 300 may be formed as an acyclic graph and may include a start node 305 and an end node 307. Here, the edges 303 of the dataflow graph 300 may be embodied as directed edges and represented as ordered pairs of nodes 301, where the order of the nodes 301 listed in the ordered pairs defines the direction of each edge 303.

[0107] In a program generation step 105, a corresponding control program for controlling the programmable logic controller is then generated based on the data flow graph 300.

[0108] As shown in the above example, dataflow graph 300 is a unique representation of the associated graphical diagram 200 and contains the same information content of the graphical diagram 200. A textual representation of both the graphical diagram 200 and the dataflow graph 300 may be achieved, for example, according to the embodiment shown in Figure 1. Elements 201 of the graphical diagram 200 or nodes 301 of the dataflow graph 300 may correspond to variables of a control program and may therefore assume values ​​1 or 0.

[0109] FIG. 8 shows a further flow chart of a method 100 for generating a control program for controlling an automation system according to a further embodiment.

[0110] The embodiment of the method 100 according to the application shown in Figure 8 is based on the embodiment of Figure 7 and includes all the method steps shown therein. Unless these are changed in the following embodiments, new detailed descriptions will be omitted.

[0111] In the illustrated embodiment, the diagram generation step 101 includes receiving a graphical programming request in a receiving step 107 according to a graphical programming language, Ladder Diagram LD. The graphical programming request describes a user's program operation and may include adding and / or deleting and / or rearranging elements 201 and / or connecting lines 203 of the graphical diagram 200. Rearranging here describes rearranging the connections between the elements 201 of the graphical diagram 200.

[0112] According to the graphical programming process, the desired graphical diagram 200 of the control program to be programmed can thus be created by a user in a corresponding graphical editor, in accordance with graphical programming tools known in the prior art for the graphical programming language Ladder Diagram LD, for example by adding and / or deleting and / or rearranging elements 201 and / or connecting lines 203.

[0113] In the illustrated embodiment, the graph generation step 103 includes a programming step 109. In the programming step 109, the corresponding dataflow graph 300 is modified by adding and / or deleting and / or rearranging nodes 301 and / or edges 303 of the dataflow graph 300 according to the programming requests made. Reconfiguring nodes 301 in this context describes the redesign of the connection of at least one node 301 with a further node 301 in the dataflow graph 300. Thus, the reconfigured dataflow graph comprises at least one edge 303 between two nodes 301 that were not connected in the original dataflow graph 300 and / or is reduced by at least one edge 303 representing a connection between two nodes 301 in the original dataflow graph 300.

[0114] Each executed programming request that removes, adds, or rearranges corresponding elements 201 and / or connectors 203 in the graphical programming tool makes a corresponding modification to the dataflow graph 300 representing the respective graphical diagram 200. Thus, when an element 201 or connector 203 is removed from the graphical diagram 200 by the graphical programming tool, a corresponding removal of the node 301 or edge 303 representing the element 201 or connector 203 in the dataflow graph 300 is performed. As elements are added or placed, the dataflow graph 300 is adjusted accordingly.

[0115] Thus, dataflow graph 300 may be created or modified concurrently with a graphical programming process within a graphical programming tool, whereby each graphical diagram 200 is created or modified as an additional representation of graphical diagram 200, e.g., at a lower level of the graphical programming tool. In this context, modifications performed in graphical diagram 200 by the graphical programming process are only minimally constrained by the rules underlying dataflow graph 300, and thus modifications can be made to graphical diagram 200 with few restrictions, as long as they follow the rules defined for the programming language ladder diagram LD. The only significant limitation imposed by the dataflow graph representation is the cycle-freedom of the graph, which must always be guaranteed.

[0116] Therefore, the representation of the graphical diagram 200 by the data flow graph 300 is much less limited than the hierarchical structures known in the prior art, and as a result has a high degree of flexibility, as shown by the examples of Figures 2 to 5.

[0117] In the illustrated embodiment, the diagram generation step 101 further includes a graph programming step 111. In the graph programming step 111, elements 201 and / or connecting lines 203 of the graph 200 are added and / or deleted and / or rearranged within the graph 200 according to graph programming requirements based on modifications to the dataflow graph 300.

[0118] Thus, in the graphical programming process, graphical programming requirements are first created within a graphical programming tool by making desired modifications. Based on these graphical programming requirements, modifications are made to the dataflow graph 300, which serves as a representation of the respective graphical diagram 200, if the graphical programming requirements fit the structural requirements of the dataflow graph 300. The desired modifications that can be performed according to the structural requirements of the dataflow graph 300 are then performed within the graphical diagram 200, resulting in the desired modifications based on the targeted graphical programming requirements of the resulting graphical diagram 200.

[0119] As described above, the representation of the graphical diagram 200 by the corresponding dataflow graph 300 imposes fewer restrictions on the generation of the graphical diagram 200. Therefore, the graphical diagram 200 can be generated by the method 100 according to the present application and the dataflow graph 300 according to the present application, as a representation of the graphical diagram 200, without being realized according to the current state of the art and hierarchical structuring prevailing therein. Furthermore, the simple structure of the dataflow graph 300 allows any kind of modification to be performed within an existing graphical diagram 200 without the need to substantially alter the graphical diagram 200 for this purpose. Furthermore, the representation by the dataflow graph can simplify the associated graphical diagram 200. For example, if a change to the graphical diagram 200 results in elements that do not allow continuous current flow between the left and right voltage rails L and R, these elements can be deleted so that the graphical diagram 200 and the dataflow graph do not contain extra elements or nodes, for example, because these elements are only connected to additional elements via either inputs or outputs when converted to a dataflow graph. On the other hand, if an element is removed from graphical diagram 200 as a result of a change to graphical diagram 200, any unnecessary edges 303 that have no direct connection to nodes 301 in dataflow graph 300 are also automatically removed in dataflow graph 300. This, in turn, simplifies the corresponding graphical diagram 200 by removing all connection lines that do not represent direct connections between elements 201.

[0120] FIG. 9 shows another flowchart of a method 100 for generating a control program for controlling an automation system according to a further embodiment.

[0121] The embodiment of the method 100 in Figure 9 is based on the embodiment of Figure 8 and includes all the method steps described therein, and unless they are changed in the following embodiments, new detailed descriptions will be omitted.

[0122] In the illustrated embodiment, the diagram generation step 101 further comprises a reading step 113, in which a control program programmed in a graphical programming language, ladder diagram LD, is read in. The control program may in this context be represented, for example, by a textual representation of the graphical diagram 200 or the data flow graph 300 shown in FIG.

[0123] The graph generation step 103 further includes a second graph generation step 115. In the second graph generation step 115, based on the information from the control program read in the reading step 113, a corresponding data flow graph 300 is generated.

[0124] The diagram generation step 101 further includes a display step 117. In the display step 117, based on the data flow graph 300 generated in the second graph generation step 115, a corresponding graphical diagram 200 is generated.

[0125] Therefore, by reading a corresponding existing control program, a corresponding data flow graph 300 can be generated based on the information in the read control program, and a corresponding graphical diagram 200 can be generated based on the information in the generated data flow graph 300 and displayed in a corresponding graphical programming tool.

[0126] FIG. 10 shows a further flow chart of a method 100 for generating a control program for controlling an automation system according to a further embodiment.

[0127] The embodiment shown in Figure 10 is based on the embodiment of Figure 9 and includes all the method steps shown therein. Unless these are changed in the following embodiments, new detailed descriptions will be omitted.

[0128] In the illustrated embodiment, the graphical programming step 111 and the display step 117 comprise a number of method steps 119-125 with the help of which the generation of the corresponding graphical diagram 200 based on the data flow graph 300 generated in the graph generation step 103 is described.

[0129] In sorting step 123, the nodes 301 of the generated dataflow graph 300 and the corresponding elements 201 of each graphical diagram 200 are first sorted topologically, including depth determination. By topologically sorting the nodes 301 of the dataflow graph 300 and the corresponding elements 201 of the graphical diagram 200, an order is determined for both the nodes 301 and the elements 201, which determines their assignment to columns of array 400. Similarly, the elements 201 of the graphical diagram 200 are ordered according to their distance from the left voltage rail L.

[0130] Subsequently, in a first arrangement step 119 , the nodes 301 of the data flow graph 300 are converted into elements 201 of the graphical diagram 200 and the elements 201 are arranged in a two-dimensional array 400 .

[0131] In a second arrangement step 121, the directed edges 303 of the data flow graph 300 are converted into corresponding connecting lines 203 between the elements 201 of the graphical diagram 200 and arranged in a two-dimensional array 400 between the respective elements 201. In this case, the connecting lines 203 each include only horizontal components 205 and vertical components 207. In this case, the two-dimensional array 400 may be embodied as a matrix array having a plurality of plot units 401, with each element 201 arranged in a separate plot unit 401 and the connecting lines 203 arranged at least partially along the separating lines 403 between the plot units 401.

[0132] The placement of elements 201 or connecting lines 203 of graphical diagram 200 in two-dimensional array 400 in this regard may be performed according to the example shown in graphical representation D of Figure 6. Connecting line 203 may include the shown horizontal input component 209 and start component 217, first and second vertical components 211, 215, and horizontal center component 213. According to the embodiment shown in Figure 6, each component of connecting line 203 may be placed on each of the vertical and horizontal separator lines 403 of two-dimensional array 400, such that each horizontal center component 213 is placed on an exclusive horizontal separator line 403.

[0133] In the optimization step 125, the arrangement 400 of elements 201 and / or the connecting lines 203 of the graphical diagram 200 may be optimized using a suitable optimization algorithm. To this end, the length of the connecting lines 203 and / or the distance between the elements 201 may be minimized. Alternatively or additionally, the intersection of multiple connecting lines 203 may be avoided. In particular, optimization may be performed according to the example shown for the graphical representation E of FIG. 6 , where interconnecting elements 201 arranged at a certain height in the two-dimensional arrangement 400 are embodied by straight horizontal components 205. Here, in particular, the start and end points of the connecting lines 203 are arranged at a certain height. Neither elements 201 nor other edges 203 are located between the start and end points of the connecting lines 203. Furthermore, the length of the connecting lines 203 can be shortened by reducing unnecessary horizontal and vertical components. By optimizing the arrangement 400 of the elements 201 or the connecting lines 203, a clear representation of the graphical diagram 200 can be achieved.

[0134] For example, the optimization algorithm may include a prior art algorithm for solving a color problem.

[0135] In the illustrated embodiment, method 100 further includes a storing step 127. In storing step 127, dataflow graph 300 may be stored in a text representation and / or an executable version of the control program may be stored in a corresponding executable file. The text representation of dataflow graph 300 may, in this case, be stored in a corresponding text file in accordance with the text representation performed with respect to FIG. 1.

[0136] FIG. 11 shows a schematic diagram of a programming tool 500 according to one embodiment.

[0137] In the illustrated embodiment, the programming tool 500 includes a graphical editor unit 501 and a conversion unit 503. The graphical programming tool 500 is operable on a data processing unit 505, which may be, for example, a desktop computer, a laptop, or a cloud server.

[0138] The graphical editor unit 501 enables a user to generate a graphical diagram 200 according to a corresponding graphical programming request that meets the requirements and rules of the programming language Ladder Diagram LD. The conversion unit 503 is further configured to convert the graphical programming request or the corresponding graphical diagram 200 into an associated representation in the form of a data flow graph 300 according to the method 100 of the application. Furthermore, the conversion unit 503 is configured to transfer the information content of the correspondingly created data flow graph 300 or graph to the editor unit 501 so that a corresponding graph representation or graphical diagram can be created by the editor unit 501. Furthermore, the conversion unit 503 may be configured to generate a corresponding executable version of the control program based on the generated data flow graph 300. Furthermore, the conversion unit 503 is configured to store the generated data flow graph 300 in a textual representation.

[0139] The present invention has been described with reference to illustrative examples. It is understood that modifications can be made and equivalents can be substituted to adapt these disclosures to different materials and situations while maintaining the scope of the invention. Therefore, the invention is not limited to the particular examples disclosed, but rather includes all examples that fall within the scope of the claims. [Brief explanation of the drawings]

[0140] The present application will now be described in more detail with reference to the accompanying drawings, in which: [Figure 1]Schematic representation of graphical diagrams using programming languages ​​Ladder Diagram LD and Data Flow Graph; [Figure 2] Further schematic diagrams of the programming language Ladder Diagram LD and further graphical diagrams with Data Flow Graphs; [Figure 3] Further schematic diagrams of the programming language Ladder Diagram LD and further graphical diagrams with Data Flow Graphs; [Figure 4] Further schematic diagrams of the programming language Ladder Diagram LD and further graphical diagrams with Data Flow Graphs; [Figure 5] Further schematic representation of the programming language Ladder Diagram LD and further graphical diagrams with separate Data Flow Graphs; [Figure 6] Schematic illustration of a method for generating a control program for controlling an automation system according to an embodiment; [Figure 7] 1 is a flowchart of a method for generating a control program for controlling an automation system according to an embodiment; [Figure 8] 10 is a further flowchart of a method for generating a control program for controlling an automation system according to a further embodiment; [Figure 9] 10 is a further flowchart of a method for generating a control program for controlling an automation system according to a further embodiment; [Figure 10] 2 is another flowchart of a method for generating a control program for controlling an automation system according to another embodiment; [Figure 11] 1 is a schematic diagram of a programming tool according to one embodiment. [Explanation of symbols]

[0141] 100 ways 101 Diagram Generation Steps 103 Graph Generation Steps 105 Program Generation Steps 107 Receiving Step 109 Programming Steps 111 Graphical Programming Steps 113 Loading Steps 115 Second graph generation step 117 Display Steps 119 First Placement Step 121 Second Placement Step 123 Sorting Steps 125 optimization steps 127 Memory Step 200 Graphical Diagrams 201 elements 203 Connecting Line 205 horizontal component 207 Vertical component 209 Horizontal Start Component 211 First vertical component 213 horizontal center component 215 Second vertical component 217 Horizontal Input Component 300 Data Flow Graph 301 Node 303 Edge 305 Starting Node 307 End Node 308 First Node 309 Second Node 310 Third Node 311 Fourth Node 312 The Fifth Node 313 First Edge 314 Second Edge 315 The Third Edge 316 The Fourth Edge 317 The Fifth Edge 315 The Sixth Edge 316 The Seventh Edge 317 The Eighth Edge 400 Two-dimensional array 401 plot units 403 Separation line 500 Programming Tools 501 Graphic Editor Unit 503 Conversion Unit 505 Data Processing Unit SEQ1 First sequence SEQ2 Second sequence SEQ3 Third sequence ALT1 First option ALT2 Second option ALT3 Third option L Left voltage rail R Right voltage rail E1 First contact point E2 Second contact point E3 The third contact point A1 First coil A2 Second coil A3 Third coil FB1 First Function Block Instance FB2 Second Function Block Instance CALC function block a First input b second input c Third input x First Output y second output

Claims

1. A method (100) for generating a control program for controlling an automation system, comprising: In a diagram generation step (101), a graphical diagram (200) of the control program is generated in accordance with the ladder diagram KOP, a graphical programming language for programmable logic controllers, using a graphical editor unit (501) of a programming tool (500); In a graph generation step (103), a data flow graph (300) is generated as a textual representation of the graphical diagram (200) using a conversion unit (503) of the programming tool (500), wherein elements (201) of the graphical diagram (200) are represented as nodes (301) of the data flow graph, and connecting lines (203) between elements (201) of the graphical diagram (200) are represented as edges (303) of the data flow graph (300); The method (100) includes, in a program generation step (105), using a conversion unit (503) of the programming tool (500) to generate a version of the control program executable by a programmable logic controller based on the data flow graph (300), the executable version being a binary version of the control program.

2. The diagram generation step (101) comprises: In a receiving step (107), a graphical programming request is received in said graphical programming language, Ladder Diagram KOP, said graphical programming request comprising adding and / or deleting and / or rearranging elements (201) and / or connecting lines (203) of said graphical diagram (200); The graph generation step (103) comprises: In a programming step (109), the step includes modifying the data flow graph (300) by adding and / or deleting and / or rearranging nodes (301) and / or edges (303) of the data flow graph (300) in accordance with the graphical programming request; The diagram generation step (101) comprises:

2. The method (100) of claim 1, comprising, in a graphical programming step (111), adding and / or deleting and / or rearranging elements (201) and / or connecting lines (203) in the graphical diagram (200) based on the modifications to the data flow graph (300) and in accordance with the graphical programming requirements.

3. The diagram generation step (101) comprises: In the reading step (113), a step of reading a control program programmed in the ladder diagram LD, which is the graphical programming language, is included; The graph generation step (103) comprises: In the second graph generation step (115), a data flow graph (300) is generated based on the information of the loaded control program, including: The diagram generation step (101) comprises:

3. The method (100) of claim 1 or 2, wherein a displaying step (117) generates the graphical diagram (200) based on the information in the data flow graph (300).

4. The graphical programming step (111) and / or the displaying step (117) may: In a first arrangement step (119), the nodes (301) of the data flow graph (300) are transformed into elements (201) of the graphical diagram (200) and the elements (201) are arranged in a graphical two-dimensional array (400); and 4. A method (100) according to claim 3 when dependent on claim 2, comprising, in a second arranging step (121), converting the edges (303) of the data flow graph (300) into connection lines (203) between elements (201) of the graphical diagram (200) and arranging the connection lines (203) between the elements (201) of the graphical diagram (200), each connection line (203) comprising exclusively horizontal and / or vertical components (205) and connecting exclusively two elements (201).

5. 5. The method of claim 4, wherein the graphical two-dimensional array is embodied as a matrix array having a plurality of adjacent planar plot units, the planar plot units being arranged in a plurality of rows and columns in the matrix array, each element being located in a plot unit, and the connecting lines being located at least partially along separating lines between the plot units.

6. 5. The method of claim 4, wherein the dataflow graph is implemented as an acyclic graph and includes a start node and an end node.

7. The graphical programming step (111) and / or the displaying step (117) may: The sorting step (123) includes a step of topologically sorting the nodes (301) of the data flow graph (300) and the corresponding elements (201) of the graphical diagram (200), wherein an order of the nodes (301) of the data flow graph (300) and the corresponding elements (201) of the graphical diagram (200) is determined in the topological sorting step, the order corresponding to the distance of each node from the starting node (305); and The method (100) of claim 6, further comprising the step of: arranging, in said first arranging step (119), said elements (201) of said graphical diagram (200) according to said order of topological sorting.

8. The graphical programming step (111) and / or the display step (117) may include: In an optimization step (125), it comprises optimizing the arrangement of said elements (201) and / or said connecting lines (203) of said graphical diagram (200) using an optimization algorithm, 4. A method (100) according to claim 3 when dependent on claim 2, wherein the optimization step (125) comprises minimizing the length of the connecting lines (203) and / or minimizing the distance between elements (201) and / or avoiding crossings of multiple connecting lines (203), and wherein the optimization algorithm is configured to solve a color problem.

9. 2. The method of claim 1, wherein edges of the dataflow graph are embodied as directed edges, and the direction of an edge between two nodes of the dataflow graph represents the flow of current between the elements of the graphical diagram represented by the nodes.

10. 2. The method of claim 1, wherein the elements of the graphical diagram comprise voltage rails, contacts, coils, function block instances, ladder diagrams, and / or function blocks defined by the graphical programming language.

11. 2. The method (100) of claim 1, further comprising, in a storing step (127), storing the data flow graph (300) in a textual representation and / or storing an executable version of the control program in an executable file.

12. A programming tool (500) for generating a control program for controlling an automation system, the programming tool (500) comprising a graphical editor unit (501) and a conversion unit (503), and configured to perform the method (100) of claim 1.

13. A method (100) for controlling an automation system by executing a control program, comprising: The control program is generated by a method (100) for generating a control program for controlling an automation system according to claim 1.

Citation Information

Patent Citations

  • Sequence program input device

    JP1980135908A

  • Programmable controller

    JP1986143809A

  • Method and device for determining arithmetic operation order for ladder diagram input part

    JP1991085604A

  • Programmable controller system and debug method for programmable controller

    JP2008204023A

  • Sequence control program converter, sequence control program conversion method, sequence control program conversion program and computer-readable recording medium

    JP2013206438A