[go: up one dir, main page]

DE102020102862B4 - Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality - Google Patents

Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality

Info

Publication number
DE102020102862B4
DE102020102862B4 DE102020102862.8A DE102020102862A DE102020102862B4 DE 102020102862 B4 DE102020102862 B4 DE 102020102862B4 DE 102020102862 A DE102020102862 A DE 102020102862A DE 102020102862 B4 DE102020102862 B4 DE 102020102862B4
Authority
DE
Germany
Prior art keywords
graphical program
program instructions
computer
program instruction
functionality
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102020102862.8A
Other languages
German (de)
Other versions
DE102020102862A1 (en
Inventor
Thomas Ruschival
Martin Thierauf
Dominic Kraus
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Festo SE and Co KG
Original Assignee
Festo SE and Co KG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Festo SE and Co KG filed Critical Festo SE and Co KG
Priority to DE102020102862.8A priority Critical patent/DE102020102862B4/en
Publication of DE102020102862A1 publication Critical patent/DE102020102862A1/en
Application granted granted Critical
Publication of DE102020102862B4 publication Critical patent/DE102020102862B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13144GUI graphical user interface, icon, function bloc editor, OI operator interface

Landscapes

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

Abstract

Computerimplementiertes Verfahren (1) zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen (C) für eine in einer Automatisierungsanlage (100) innerhalb einer spezifischen industriellen Domäne verwendete speicherprogrammierbare Steuerung (20), umfassend die Schritte:
- Erfassen (S1) von wenigstens einer ersten grafischen Programmanweisung (A) für wenigstens eine speicherprogrammierbare Steuerung (20) der Automatisierungsanlage (100);
- Auswerten (S2) der erfassten wenigstens einen ersten grafischen Programmanweisung (A) durch mindestens ein in einer Speichereinheit gespeichertes maschinelles Lernverfahren, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung (A) diejenigen zweiten grafischen Programmanweisungen (C) als auf Funktionalität verifizierte zweite grafische Programmanweisungen (C) zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung (A) entspricht und/oder diese ergänzt, wobei das Auswerten (S2) eine Filterung von erfassten ersten grafischen Programmanweisungen (A) anhand von vorkonfigurierten Filterkriterien umfasst, indem Verwendungsmuster analysiert werden.
Computer-implemented method (1) for providing functionality-verified second graphical program instructions (C) for a programmable logic controller (20) used in an automation system (100) within a specific industrial domain, comprising the steps:
- detecting (S1) at least one first graphical program instruction (A) for at least one programmable logic controller (20) of the automation system (100);
- Evaluating (S2) the detected at least one first graphical program instruction (A) by at least one machine learning method stored in a memory unit in order to determine, for the detected at least one first graphical program instruction (A), those second graphical program instructions (C) as functionality-verified second graphical program instructions (C) whose functionality corresponds to that of the detected at least one first graphical program instruction (A) and/or supplements it, wherein the evaluation (S2) comprises filtering detected first graphical program instructions (A) based on preconfigured filter criteria by analyzing usage patterns.

Description

Die Erfindung betrifft ein computerimplementiertes Verfahren zum Bereitstellen von auf Funktionalität verifizierten grafischen Programmanweisungen für eine speicherprogrammierbare Steuerung, die innerhalb einer spezifischen industriellen Domäne in einer Automatisierungsanlage verwendet wird. Ferner betrifft die Erfindung eine entsprechende Vorrichtung.The invention relates to a computer-implemented method for providing functionality-verified graphical program instructions for a programmable logic controller used within a specific industrial domain in an automation system. Furthermore, the invention relates to a corresponding device.

Für das Erstellen von Programmanweisungen für eine speicherprogrammierbare Steuerung (SPS) zur Steuerung von spezifischen industriellen Domänen, werden von SPS-Herstellern über eine integrierte Entwicklungsumgebung (IDE - Integrated Development Environment) verschiedene Werkzeuge und Programmbibliotheken mit vorgefertigten Programmanweisungen zur Verfügung gestellt. Über diese Werkzeuge und Programmbibliotheken kann ein Programmierer Programmanweisungen zur Ansteuerung der entsprechenden industriellen Domäne programmieren. Die programmierten Programmanweisungen werden durch einen in der integrierten Entwicklungsumgebung integrierten Compiler in einen nativen Maschinencode für den Download auf die speicherprogrammierbare Steuerung übersetzt. Zudem können dem Nutzer durch die integrierte Entwicklungsumgebung weitere Funktionen bereitgestellt werden, die ein Programmieren, Überwachen und/oder Debuggen von Programmanweisungen ermöglichen.To create program instructions for a programmable logic controller (PLC) to control specific industrial domains, PLC manufacturers provide various tools and libraries with pre-written program instructions via an integrated development environment (IDE). Using these tools and libraries, a programmer can program instructions to control the corresponding industrial domain. The programmed program instructions are translated into native machine code by a compiler integrated into the integrated development environment for download to the programmable logic controller. Furthermore, the integrated development environment can provide the user with additional functions that enable programming, monitoring, and/or debugging of program instructions.

Bei im Stand der Technik bekannten integrierten Entwicklungsumgebungen kann beispielsweise ein Programmierer dahingehend während der Programmierung unterstützt werden, dass auf eine begonnene Eingabe an Programmanweisungen, Vorschläge für eine Vervollständigung der eingegebenen Programmanweisungen dargestellt werden. Eine sogenannte Autovervollständigung von Programmanweisungen wird beispielsweise in der integrierten Entwicklungsumgebung „Microsoft Visual Studio“ von Microsoft™ mittels der Funktionalität „IntelliSense“ oder in der integrierten Entwicklungsumgebung „Eclipse“ bereitgestellt. Hierfür werden die aktuellen Programmanweisungen und ggf. in dem Programmierprojekt eingebundene Programmbibliotheken syntaktisch analysiert. Dies erfolgt insbesondere während der Eingabe der Programmanweisungen. Einem Programmierer können automatisch und/oder auf das Betätigen einer Tastenkombination eine Liste an Vorschlägen dargestellt werden, um welche die eingegebene Programmanweisung zu vervollständigen ist, bzw. wie angedacht ist, dass die Programmanweisung vervollständigt werden könnte.In integrated development environments known in the state of the art, for example, a programmer can be supported during programming by being presented with suggestions for completing the entered program instructions as soon as they have started entering program instructions. So-called auto-completion of program instructions is provided, for example, in the integrated development environment "Microsoft Visual Studio" from Microsoft™ using the "IntelliSense" functionality or in the integrated development environment "Eclipse". For this purpose, the current program instructions and any program libraries integrated in the programming project are syntactically analyzed. This occurs in particular while the program instructions are being entered. A programmer can be presented with a list of suggestions automatically and/or upon pressing a key combination as to how the entered program instruction should be completed or how the program instruction could be completed.

In 2 ist ein Programmierbeispiel und eine Autovervollständigung durch die integrierte Entwicklungsumgebung „Eclipse“ dargestellt. In dem Programmierbeispiel der 2 hat ein Programmierer eine Variable „text“ vom Typ „Text“ deklariert. Für die Variablen des Typs „Text“ stehen beispielsweise über eine eingebundene Bibliothek verschiedene Funktionen zur Verfügung, welche aufgerufen werden können. Der Programmierer kann sich automatisch, oder wie beispielsweise in dem Beispiel der 2 dargestellt, über das Betätigen der Leertaste eine Autovervollständigung anzeigen lassen. Dem Programmierer werden Vorschläge mit einer entsprechenden Angabe der Wahrscheinlichkeit in Prozent angezeigt, die angibt, wie häufig diese vorgeschlagene Ergänzung in diesem Programmierprojekt schon eingesetzt worden ist. Somit wird die Wahrscheinlichkeit angenommen, mit der der Programmierer einen Methodenaufruf nutzen möchte.In 2 A programming example and an auto-completion function using the integrated development environment “Eclipse” is shown. In the programming example of the 2 A programmer has declared a variable "text" of type "Text". For variables of type "Text", various functions are available, for example, via an integrated library, which can be called. The programmer can call it automatically, or as in the example of the 2 As shown, auto-completion can be displayed by pressing the spacebar. The programmer is presented with suggestions along with a corresponding percentage probability, indicating how frequently this suggested addition has already been used in this programming project. This estimates the probability with which the programmer would like to use a method call.

In den im Stand im Stand der Technik bekannten Verfahren zur Autovervollständigung, sind die bereitgestellten Vorschläge teilweise syntaktisch nicht korrekt. Weiterhin kann eine semantische Korrektheit nicht überprüft werden, im Gegenteil werden vielmehr zusammenhanglose Ergänzungen dargestellt. Dieses Problem ergibt sich gerade bei den oben genannten integrierten Entwicklungsumgebungen. Insbesondere wird durch die Autovervollständigung der bekannten integrierten Entwicklungsumgebungen ein Aufruf von zu Klassen zugehörigen privaten Methoden außerhalb der Klasse zugelassen. Nach den Programmierrichtlinien ist dies aber nicht zulässig. Zudem ist diese Autovervollständigung seriell ausgestaltet und bietet nur eine textbasierte Ergänzung.In the auto-completion methods known in the state of the art, some of the suggestions provided are syntactically incorrect. Furthermore, semantic correctness cannot be verified; on the contrary, incoherent additions are presented. This problem arises particularly in the integrated development environments mentioned above. In particular, the auto-completion of the known integrated development environments allows calling private methods belonging to classes outside of the class. However, this is not permitted according to the programming guidelines. Furthermore, this auto-completion is designed serially and only offers text-based additions.

Weiter zeigt die US 2015/0205289 A1 eine Einrichtung zur automatischen Modellierung des Schneidprozesses für ein Wasserstrahlschneidsystem auf Basis von empirischen Daten zur Vorhersage von Aspekten der Wirkung des Wasserstrahls auf das Werkstück.The US 2015/0205289 A1 a device for automatically modeling the cutting process for a waterjet cutting system based on empirical data to predict aspects of the effect of the waterjet on the workpiece.

Im Stand der Technik ist es auch bekannt, crowd-basierte Suchsysteme zu verwenden. So zeigt die US 2018/0129724 A1 ein solches System. Beispielhafte Ausführungsformen beziehen sich auf eine Benutzerschnittstelle zum Empfang und zur Anzeige von Datenobjekten zur Erleichterung von menschengestützten Suchanfragen insbesondere im Internet.In the state of the art, it is also known to use crowd-based search systems. US 2018/0129724 A1 Such a system. Exemplary embodiments relate to a user interface for receiving and displaying data objects to facilitate human-assisted searches, particularly on the Internet.

Die DE 10 2017 009 807 A1 betrifft eine Vorrichtung, um Programme auf unterschiedliche numerische Steuervorrichtungen einer Werkzeugmaschine zu verteilen.The DE 10 2017 009 807 A1 relates to a device for distributing programs to different numerical control devices of a machine tool.

In Entwicklungsumgebungen für speicherprogrammierbare Steuerungen, beispielsweise CodeSys erfolgt die Programmierung für die Prozess- und Fabrikautomatisierung in Funktionsblöcken (FUP - Funktionsplan) oder in dem Signalflussplan (CFC - Continuous Function Chart), welche in der Norm IEC61131 definiert sind. Mit dem Signalflussplan als eine grafische Programmiersprache können Funktionsblöcke (grafische Programmanweisungen) miteinander verschaltet werden, anstatt eine Abfolge von textuellen Befehlen in einer Kommandozeile einzugeben, wie das bei klassischen Programmiersprachen (z.B. Java, C) der Fall ist. Als Vorbild hierfür können Schaltpläne aus der Hardwareentwicklung angesehen werden. Diese Darstellung eines Programms für eine speicherprogrammierbare Steuerung unterstützt die Entwicklung von Steuerungssoftware, insbesondere für Entwickler deren technischer Hintergrund im Bereich der Elektrotechnik zu finden ist. Diesbezüglich kann der Signalflussplan als eine Erweiterung der Funktionsbaustein-Sprache betrachtet werden, in der keine strikte zeilenweise Abarbeitung von links oben nach rechts unten erzwungen wird (serielle Abarbeitung), sondern bei der die Funktionsblöcke frei positionierbar sind (parallele Abarbeitung, sowie Programmierung), so dass der Programmierer somit mehr Möglichkeiten zur Verknüpfung von Ein- und Ausgängen hat. Die Reihenfolge der Abarbeitung der programmierten Bausteine, bzw. des Programmes wird durch eine Nummerierung, beispielsweise in einem Operationsbaustein (OB) festgelegt, welcher in einem Programm durch die speicherprogrammierbare Steuerung zuerst abgearbeitet wird. Die Unterstützung für eine Autovervollständigung beschränkt sich hierbei auf fest programmierte Konfigurations- und Inbetriebnahme Assistenten, die in einer Folge von Eingabemasken bestimmte Parameter abfragen und daraus ein Projekt oder eine Programmstruktur generieren, die dann von einem Programmierer ausgefüllt werden muss.In development environments for programmable logic controllers, such as CodeSys, programming for the Pro Process and factory automation in function blocks (FBD - function block diagram) or in the signal flow chart (CFC - Continuous Function Chart), which are defined in the IEC61131 standard. With the signal flow chart as a graphical programming language, function blocks (graphical program instructions) can be interconnected instead of entering a sequence of textual commands in a command line, as is the case with classic programming languages (e.g. Java, C). Circuit diagrams from hardware development can be seen as a model for this. This representation of a program for a programmable logic controller supports the development of control software, especially for developers whose technical background is in the field of electrical engineering. In this respect, the signal flow chart can be viewed as an extension of the function block language in which strict line-by-line processing from top left to bottom right is not enforced (serial processing), but in which the function blocks can be freely positioned (parallel processing and programming), giving the programmer more options for linking inputs and outputs. The order in which the programmed blocks, or program, are processed is determined by numbering, for example in an operation block (OB), which is processed first in a program by the programmable logic controller. Support for auto-completion is limited to hard-coded configuration and commissioning wizards that query certain parameters in a sequence of input masks and use these to generate a project or program structure that must then be completed by a programmer.

Es besteht daher ein Bedarf an einem Mechanismus zum Bereitstellen von auf Funktionalität verifizierten grafischen Programmanweisungen für eine speicherprogrammierbare Steuerung. Ausgehend vom aufgezeigten Stand der Technik und dem sich daraus ergebenden Bedarf, hat sich die vorliegenden Erfindung zur Aufgabe gestellt, eine Lösung zu schaffen, die die im Stand der Technik bekannten Nachteile zu mindestens teilweise überwindet.There is therefore a need for a mechanism for providing graphical program instructions verified for functionality for a programmable logic controller. Based on the prior art described and the resulting need, the present invention aims to provide a solution that at least partially overcomes the disadvantages known in the prior art.

Diese Aufgabe wird durch die nebengeordneten beiliegenden Patentansprüche gelöst, insbesondere durch ein computerimplementiertes Verfahren und durch eine Vorrichtung.This object is achieved by the accompanying independent patent claims, in particular by a computer-implemented method and by a device.

Gemäß einem ersten Aspekt betrifft die Erfindung ein computerimplementiertes Verfahren gemäß Anspruch 1. Das Verfahren kann zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen für eine in einer Automatisierungsanlage innerhalb einer spezifischen industriellen Domäne verwendete speicherprogrammierbare Steuerung dienen. Das computerimplementierte Verfahren umfasst folgende Verfahrensschritte:

  • - Erfassen von wenigstens einer ersten grafischen Programmanweisung für wenigstens eine speicherprogrammierbare Steuerung der Automatisierungsanlage; und
  • - Auswerten der erfassten wenigstens einen ersten grafischen Programmanweisung durch mindestens ein in einer Speichereinheit gespeichertes maschinelles Lernverfahren, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung diejenige(n) zweite(n) grafische(n) Programmanweisung(en) als auf Funktionalität verifiziert zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung entspricht und/oder diese ergänzt. Es können auch mehrere zweite graphische Programmanweisungen bestimmt werden.
According to a first aspect, the invention relates to a computer-implemented method according to claim 1. The method can be used to provide functionality-verified second graphical program instructions for a programmable logic controller used in an automation system within a specific industrial domain. The computer-implemented method comprises the following method steps:
  • - detecting at least one first graphical program instruction for at least one programmable logic controller of the automation system; and
  • - Evaluating the detected at least one first graphical program instruction using at least one machine learning method stored in a memory unit to determine, for the detected at least one first graphical program instruction, those second graphical program instruction(s) whose functionality corresponds to and/or complements that of the detected at least one first graphical program instruction as verified for functionality. Multiple second graphical program instructions can also be determined.

Damit erfolgt ein Bereitstellen einer zweiten grafischen Programmanweisung für eine speicherprogrammierbare Steuerung einer Automatisierungsanlage innerhalb einer spezifischen industriellen Domäne. Insbesondere kann durch ein Bereitstellen einer zweiten grafischen Programmanweisung mit als korrekt verifizierten Vorschlägen die Fehlerrate während der Programmierung und ein entsprechendes Debugging der Programmanweisungen zum Auffinden eines Fehlers reduziert werden. Damit entsteht der Vorteil, dass der Programmierer bereits während der Programmierung der Programmanweisungen auf Fehler bzw. auf ein Abweichen von einem Standard oder von Referenz-Programmanweisungen, die bereits in anderen Projekten für die spezifische industrielle Domäne erfolgreich verwendet wurden oder werden, hingewiesen wird und, wenn notwendig, seine „bisherigen“ ersten Programmanweisungen anpassen kann.This provides a second graphical program instruction for a programmable logic controller of an automation system within a specific industrial domain. In particular, providing a second graphical program instruction with suggestions verified as correct can reduce the error rate during programming and facilitate the corresponding debugging of the program instructions to locate an error. This has the advantage that the programmer is alerted to errors or deviations from a standard or reference program instructions that have already been or are being successfully used in other projects for the specific industrial domain while programming the program instructions, and can, if necessary, adapt their "previous" first program instructions.

Darüber hinaus ergibt sich der Vorteil, dass die bestimmten und dem einem Programmierer bereitgestellten zweiten auf Funktionalität verifizierten grafischen Programmanweisungen, basierend auf den fortlaufenden Erfahrungen durch das maschinelle Lernverfahren laufzeitoptimiert sind. Ferner können die einzelnen Verbesserungen für die Laufzeit zu jeder vorgeschlagenen zweiten grafischen Programmanweisung auf einer Benutzeroberfläche einer integrierten Entwicklungsumgebung dargestellt werden, so dass ein Programmierer den entsprechenden Nutzen für sein Programm und für den Einsatz auf der speicherprogrammierbaren Steuerung direkt optimal erkennen kann. Die integrierte Entwicklungsumgebung kann als eine Anwendungssoftware auf einem elektronischen Gerät, beispielsweise einem Computer oder einem Handheld ausgeführt werden.Furthermore, there is the advantage that the specific second graphical program instructions, verified for functionality and provided to a programmer, are runtime-optimized based on the ongoing experience gained through the machine learning process. Furthermore, the individual runtime improvements for each proposed second graphical program instruction can be displayed on a user interface of an integrated development environment, so that a programmer can directly and optimally recognize the corresponding benefit for their program and for use on the programmable logic controller. The integrated development environment can be implemented as application software on an electronic device, in which for example a computer or a handheld device.

In vorteilhafter Weise werden durch die vorliegende Erfindung zweite grafische Programmanweisungen vorgeschlagen, welche in einem funktionellen Zusammenhang zu der ersten erfassten grafischen Programmanweisungen stehen. Diesbezüglich erhält der Programmierer Vorschläge in Form der zweiten grafischen Programmanweisung, die die Funktion der ersten erfassten grafischen Programmanweisung ergänzen bzw. weiter fortführen, so dass der Programmierer während des Programmierens derart unterstützt wird, dass ein funktional optimiertes Programm für eine spezifisch industrielle Domäne zum Laden auf eine speicherprogrammierbare Steuerung bereitgestellt wird. Das System schlägt dazu insbesondere die wahrscheinlichsten zweiten Funktionsblöcke vor, basierend aus dem Wissen vorher analysierter Projekte. Das kann auch eine Erweiterung der Funktionalität der ersten Anweisung umfassen. Es wird somit eine semantische automatische Unterstützung bei der Prorammerzeugung angeboten. Im exakten Sinn kann eine semantische Korrektheit nicht garantiert werden, da der Algorithmus nicht „weiß“, was der Programmierer gerade beabsichtigt.Advantageously, the present invention proposes second graphical program instructions that are functionally related to the first detected graphical program instructions. In this regard, the programmer receives suggestions in the form of the second graphical program instruction that supplement or continue the function of the first detected graphical program instruction, so that the programmer is supported during programming in such a way that a functionally optimized program for a specific industrial domain is provided for loading onto a programmable logic controller. For this purpose, the system particularly proposes the most probable second function blocks based on knowledge of previously analyzed projects. This can also include an extension of the functionality of the first instruction. Thus, automatic semantic support is offered during program generation. In the exact sense, semantic correctness cannot be guaranteed because the algorithm does not "know" what the programmer intends.

Bei den grafischen Programmanweisungen kann es sich um einen Funktionsblock handeln. Die Funktionsblöcke können beliebig zu einem Programmanweisungsblock angeordnet werden. Unter einem Programmanweisungsblock ist eine Anordnung von einer Vielzahl an Funktionsblöcken zu verstehen. Insbesondere können Programmanweisungsblöcke eine Vielzahl an Funktionsblöcken umfassen, die zueinander parallel angeordnet sind und entsprechend parallel abgearbeitet werden können. Ein Softwareprojekt kann eine Menge an Programmanweisungsblöcken umfassen. Ein Funktionsblock kann aus einer bestehen Bibliothek entnommen oder manuell generiert werden. Die Aufgabe von einem Funktionsblock ist die Kapselung der Daten und der Algorithmen. Der Algorithmus definiert, wie die Daten, beispielsweise die Eingangsdaten zu den Ausgangsdaten, verarbeitet werden. Ein Funktionsblock umfasst somit wenigstens einen Eingang und wenigstens einen Ausgang. Das Ergebnis an dem Ausgang ergibt sich aus dem auf den Eingang geschalteten Eingangswert und über den in dem Funktionsblock definierten Algorithmus. Ein Funktionsblock kann einmal definiert und in einer Bibliothek gespeichert werden, um für weitere Programmieranwendungen verwendet werden zu können. Die grafischen Programmanweisungen können auch eine Vielzahl an Funktionsblöcken bzw. eine Anordnung einer Vielzahl an Funktionsblöcken beschreiben. Die Anordnung an Funktionsblöcke kann beispielsweise über Verbindungen zwischen den Eingängen und Ausgängen der Funktionsblöcke definiert werden. Über die Anordnung der Funktionsblöcke ergibt sich eine zusammenhängende Funktion. Die Eingänge sind derart ausgebildet, dass beispielsweise ein Bit-Signal, ein Byte-Signal, ein Wort-Signal, oder ein Zeichenketten-Signal empfangen werden kann. Die beispielhafte Aufzählung stellt hierbei keine Einschränkung dar. Die Eingänge können für weitere Signale ausgebildet sein. Die Ausgänge können - in vergleichbarer Weise zu den Eingängen - Signale bereitstellen.The graphical program instructions can be a function block. The function blocks can be arranged arbitrarily to form a program instruction block. A program instruction block is understood to be an arrangement of a plurality of function blocks. In particular, program instruction blocks can comprise a plurality of function blocks that are arranged parallel to one another and can therefore be processed in parallel. A software project can comprise a number of program instruction blocks. A function block can be taken from an existing library or generated manually. The task of a function block is to encapsulate the data and the algorithms. The algorithm defines how the data, for example, the input data to the output data, is processed. A function block thus comprises at least one input and at least one output. The result at the output is determined from the input value connected to the input and via the algorithm defined in the function block. A function block can be defined once and saved in a library for use in subsequent programming applications. The graphical program instructions can also describe a plurality of function blocks or an arrangement of a plurality of function blocks. The arrangement of function blocks can be defined, for example, via connections between the inputs and outputs of the function blocks. The arrangement of the function blocks results in a coherent function. The inputs are configured such that, for example, a bit signal, a byte signal, a word signal, or a character string signal can be received. This list of examples does not represent a limitation. The inputs can be configured for additional signals. The outputs can provide signals in a similar way to the inputs.

Für weitere Details für die Programmanweisungen wird auf die Norm IEC 61131 verwiesen, die die Syntax und Semantik von Programmiersprachen für speicherprogrammierbare Steuerungen definiert.For further details on the program instructions, please refer to the IEC 61131 standard, which defines the syntax and semantics of programming languages for programmable logic controllers.

Die Anordnung der einzelnen Funktionsblöcke kann in einer Kaskadenform und/oder parallel erfolgen. Durch diese Verbindungen kann eine komplexe Funktion zur Steuerung bzw. Ansteuerung der speicherprogrammierbaren Steuerung in einer spezifischen industriellen Domäne bereitgestellt werden. In vorteilhafter Weise können durch die vorliegende Erfindung, die einzelnen Verbindungen zu den jeweiligen parallelen Funktionsblöcken und/oder zu den folgenden Funktionsblöcken in der Kaskade entsprechend der Funktion eines vorherigen Funktionsblockes vorgeschlagen werden. Zudem kann ausgehend von der Funktion eines Funktionsblockes ein in der Kaskade darauffolgender Funktionsblock mit ergänzender Funktionalität vorgeschlagen werden.The individual function blocks can be arranged in a cascade and/or in parallel. These connections can provide a complex function for controlling or activating the programmable logic controller in a specific industrial domain. Advantageously, the present invention allows the individual connections to the respective parallel function blocks and/or to the subsequent function blocks in the cascade to be proposed according to the function of a previous function block. Furthermore, based on the function of one function block, a subsequent function block in the cascade with additional functionality can be proposed.

„Ergänzend“ meint in diesem Zusammenhang: Funktionsbausteine ergänzen sich durch ihre spezifische Verknüpfung zu Programmstrukturen, die eine höherwertige komplexere Aufgabe bearbeiten. Die Ergänzung ist vorzugsweise domänenspezifisch. Die Erfindung kann insbesondere solche Ergänzungen vorschlagen, die in vorherigen Projekten häufig erzeugt worden sind. Vorteilhafterweise können diese Ergänzungen dem Kunden somit erfindungsgemäß auch ohne kostenverursachende Zugriffe auf eine Bibliothek zur Verfügung gestellt werden."Supplementary" in this context means: Function modules complement each other through their specific linkage to program structures that process a higher-level, more complex task. The addition is preferably domain-specific. The invention can, in particular, propose additions that have been frequently generated in previous projects. Advantageously, these additions can thus be made available to the customer without costly access to a library.

Eine Funktion eines Funktionsblockes wird durch den in dem Funktionsblock definierten Algorithmus vorgegeben. Die Funktion kann eine logische Verknüpfung, insbesondere eine einzelne Bitverknüpfungsoperation der Eingänge zum Erzeugen eines Ausgangssignals am Ausgang umfassen, beispielsweise eine UND-Verknüpfung, bei der beide Eingangssignale einen logischen Wert „1“ aufweisen müssen, um am Ausgang einen logischen Ausgangswert „1“ zu erzeugen. Weitere Funktionen umfassen ODER-Verknüpfungen, EXKLSUSIV-ODER Verknüpfungen, Speicherfunktionen, Flankenoperationen, Vergleichsoperationen, Umwandlungs- und Zähloperationen, Lade- und Transferfunktionen, Aufruf und Verarbeitung von Datenbausteinen und Sprungfunktionen. Weiteren Funktionen sind mathematische Funktionen für Festpunktzahlen und/oder mathematische Funktionen für Gleitpunktzahlen.A function of a function block is specified by the algorithm defined in the function block. The function can comprise a logical operation, in particular a single bit operation of the inputs to generate an output signal at the output, for example an AND operation, where both input signals must have a logical value of "1" in order to generate a logical output value of "1" at the output. Other functions include OR operations, EXCLUSIVE-OR operations, memory functions, edge operations, comparison operations, conversion and counting operations, load and transfer functions, calling and processing of Data blocks and jump functions. Other functions include mathematical functions for fixed-point numbers and/or mathematical functions for floating-point numbers.

Die einzelnen Funktionsblöcke werden als grafische Symbole in der integrierten Entwicklungsumgebung dargestellt und die Eingänge und Ausgänge können über grafische Verbindungen, die über Bearbeitungswerkzeuge angewählt werden, mit weiteren Funktionsblöcken verbunden werden. Die Anordnung der verbunden Funktionsblöcke wird mit einem integrierten Compiler in einen nativen Maschinencode für den Download auf die speicherprogrammierbare Steuerung übersetzt.The individual function blocks are represented as graphical symbols in the integrated development environment, and the inputs and outputs can be connected to other function blocks via graphical connections selected using editing tools. The arrangement of the connected function blocks is translated into native machine code using an integrated compiler for download to the programmable logic controller.

Eine Automatisierungsanlage kann für unterschiedliche industrielle Domänen verwendet werden, so zum Beispiel in einer Automotive-Domäne oder in einer Messtechnik- oder Biolabor-Domäne. Eine industrielle Domäne ist entsprechend der Verwendung und/oder des Bedarfs ausgebildet und/oder angepasst. Jede Domäne kann entsprechende Unterschiede in den verwendeten und anzusteuernden technischen Komponenten aufweisen. Diesbezüglich unterscheiden sich auch die in den jeweiligen Domänen verwendeten Programmanweisungen und/oder Anordnungen an Programmanweisungen bzw. die sich ergebene Funktionalität zur Ansteuerung einer speicherprogrammierbaren Steuerung. Für jede industrielle Domäne wird ein spezifisches Lernverfahren bereitgestellt. Das jeweilige Lernverfahren umfasst die in der jeweiligen Domäne verwendeten Programmanweisungen und die sich daraus ergebende Funktionalität.An automation system can be used for different industrial domains, for example, in an automotive domain or in a measurement technology or biolaboratory domain. An industrial domain is designed and/or adapted according to its use and/or requirements. Each domain can have corresponding differences in the technical components used and to be controlled. In this regard, the program instructions and/or arrangements of program instructions used in the respective domains, or the resulting functionality for controlling a programmable logic controller, also differ. A specific learning method is provided for each industrial domain. The respective learning method comprises the program instructions used in the respective domain and the resulting functionality.

Eine Automatisierungsanlage stellt eine Anlage dar, in der komplexe und/oder einfache Maschinen und/oder technische Komponenten und Anlagen ohne den menschlichen Eingriff automatisch, nach vorgegebenen Anweisungen Tätigkeiten, wie beispielsweise Transport, Herstellung und/oder Messaufgaben, durchführen. Dafür erfolgt eine Signalerfassung über Messaufnehmer und eine Ansteuerung von Aktuatoren. Eine industrielle Domäne kann z.B. eine Erzeugnis-produzierende Domäne sein.An automation system is a system in which complex and/or simple machines and/or technical components and systems perform activities such as transportation, manufacturing, and/or measurement tasks automatically and according to predefined instructions, without human intervention. For this purpose, signals are acquired via sensors and actuators are controlled. An industrial domain can, for example, be a product-producing domain.

Gemäß einer bevorzugten Ausführungsform der Erfindung umfasst das computerimplementierte Verfahren den Schritt des automatischen Erfassens der jeweiligen spezifischen industriellen Domäne basierend auf der erfassten wenigstens einen ersten Programmanweisung. Damit kann in vorteilhafter Weise die Domäne und die in der Domäne verwendeten Programme und Funktionalitäten eingeschränkt werden, was ein effizienteres und korrektes Bereitstellen von verifizierten zweiten grafischen Programmanweisungen für die erfasste spezifische Domäne ermöglicht. Zudem können grafische Programmanweisungen bereitgestellt werden, welche in ihrer Funktionalität für die spezifische Domäne konzipiert sind.According to a preferred embodiment of the invention, the computer-implemented method comprises the step of automatically detecting the respective specific industrial domain based on the detected at least one first program instruction. This advantageously allows for restricting the domain and the programs and functionalities used in the domain, enabling a more efficient and correct provision of verified second graphical program instructions for the detected specific domain. Furthermore, graphical program instructions can be provided whose functionality is designed for the specific domain.

Gemäß einer bevorzugten Ausführungsform der Erfindung wird die jeweilige spezifische Domäne mittels einer über eine Benutzerschnittstelle (manuell) eingegebenen Domänenangabe erfasst. Die Benutzerschnittstelle zum Empfang der spezifischen Domäne kann eine Tastatur, Computermaus, Mikrofon oder ein Touch-Display eines Handheld, beispielsweise ein Smartphone oder Tablet, umfassen. In vorteilhafter Weise können durch die Eingabe der spezifischen Domäne, die in der Domäne verwendeten Programme und Funktionalitäten eingeschränkt werden, was ein effizienteres und korrektes Bereitstellen von verifizierten zweiten grafischen Programmanweisungen für die erfasste spezifische Domäne ermöglicht. Zudem können grafische Programmanweisungen bereitgestellt werden, welche in ihrer Funktionalität für die spezifische Domäne konzipiert sind. Dabei kann durch die Eingabe der spezifischen Domäne eine Falscherkennung und/oder Fehlinterpretation in Bezug auf die spezifische Domäne vermieden oder zumindest eingeschränkt werden.According to a preferred embodiment of the invention, the respective specific domain is detected by means of a domain specification entered (manually) via a user interface. The user interface for receiving the specific domain can comprise a keyboard, computer mouse, microphone, or a touch display of a handheld device, for example a smartphone or tablet. By entering the specific domain, the programs and functionalities used in the domain can advantageously be restricted, which enables a more efficient and correct provision of verified second graphical program instructions for the detected specific domain. In addition, graphical program instructions can be provided whose functionality is designed for the specific domain. By entering the specific domain, false recognition and/or misinterpretation with regard to the specific domain can be avoided or at least limited.

Das maschinelle Lernfahren ist derart ausgebildet, dass neues Wissen aus bereits gesammelten Erfahrungen generiert werden kann. Dabei lernt das maschinelle Lernverfahren aus den bereits gesammelten Erfahrungen, um diese nach Beendigung einer Lernphase zu verallgemeinern. Hierzu wird durch Algorithmen des maschinellen Lernverfahrens ein Modell, beispielsweise ein statistisches Modell aufgebaut, welches auf den gesammelten Erfahrungen zur Verschaltung von Programmanweisungen beruht. Somit werden Muster und Gesetzmäßigkeiten in den Daten erkannt und können zum Berechnen der Vorschläge für die jeweils funktional passenden zweiten Programmanweisungen verwendet werden.Machine learning is designed to generate new knowledge from previously acquired experience. The machine learning process learns from the previously acquired experience in order to generalize it after a learning phase has ended. To this end, machine learning algorithms build a model, for example, a statistical model, based on the accumulated experience regarding the interconnection of program instructions. This allows patterns and regularities in the data to be recognized and used to calculate suggestions for the functionally appropriate second program instructions.

Gemäß einer Ausführungsform der Erfindung wird das maschinelle Lernverfahren über eine Korrelation wenigstens eines Gerätebaumes mit grafischen Programmanweisungen der Menge von des Programmanweisungsblöcken trainiert.According to one embodiment of the invention, the machine learning method is trained via a correlation of at least one device tree with graphical program instructions of the set of program instruction blocks.

Ein Programm kann in diesem Kontext als Graph mit Knoten und Kanten angesehen werden. Die Anweisungen werden in einer Sequenz zu Funktionsbausteinen zusammengesetzt, die Funktionsbausteine miteinander verbindet. Anweisungen und Funktionsbausteine sind durch die Knoten im Graph repräsentiert, die Verbindungen zwischen den Anweisungen sind durch die Kanten repräsentiert. Eine Kanten-„Klasse“ beinhaltet die Information welcher Port (Eingang/ Ausgang/ Parameter) von Baustein A mit welchem Port von Baustein B verbunden ist. Beispielsweise stellt „PLCOpen“ eine offene Plattform im Bereich der industriellen Steuerungstechnik und der Steuerungsprogrammierung bereit und bietet einen offenen Standard zum Austausch von SPS-Programmen. Dabei ist PLCOpenXML eine Darstellungsform dieses Graphen in XML. Ein Algorithmus liest diese Beschreibung (z.B. in PLCOpenXML oder in einem anderen, proprietären Format) ein und „zählt” letztendlich, wie häufig eine bestimmte Kanten-Klasse zwischen Baustein A und Baustein B auftritt. Diese Verbindungshäufigkeit kann auch auf einer Sequenz mehrerer Blöcke ausgeweitet werden. ,A ist über Kante k mit B verbunden'. Es werden alle Programme analysiert, wie häufig ein Ausgang des Konstrukts AB zusätzlich mit Baustein C verbunden ist. Aus dieser Analyse über alle Programme ergibt sich eine Wahrscheinlichkeit für jede Kantenklasse. Aus dieser Analyse kann ein Modell erzeugt werden, das dem Kunden bereitgestellt und von ihm verwendet und ausgeführt werden kann. Bei der Modellausführung werden diese Wahrscheinlichkeiten für die algorithmische bzw. computer-implementierte Berechnung von Vorschlägen verwendet. Diese Ausführungsform der Erfindung hat den technischen Vorteil, dass die Berechnung der Vorschläge auf einer computertechnisch einfachen, rein statistischen Problemlösung basiert. Es muss in diesem Fall kein neuronales Netz antrainiert werden. In einer Weiterbildung kann zusätzlich noch eine Gewichtung berechnet und berücksichtigt werden. Dies repräsentiert eine Häufigkeit jeweils einer Verbindung über alle analysierten Projekte. Die Gewichtung ist somit domänenspezifisch, aber projektübergreifend.In this context, a program can be viewed as a graph with nodes and edges. The instructions are assembled into a sequence of function blocks that connect the function blocks. Instructions and function blocks are represented by the nodes in the graph, and the connections between the instructions are represented by edges. An edge "class" contains the information about which port (input/output/parameter) of block A is connected to which port of block B. For example, "PLCOpen" provides an open platform in the field of industrial control technology and control programming and offers an open standard for the exchange of PLC programs. PLCOpenXML is a representation of this graph in XML. An algorithm reads this description (e.g. in PLCOpenXML or in another proprietary format) and ultimately "counts" how often a certain edge class occurs between block A and block B. This connection frequency can also be extended to a sequence of multiple blocks. "A is connected to B via edge k." All programs are analyzed to determine how often an output of construct AB is additionally connected to block C. This analysis across all programs results in a probability for each edge class. From this analysis, a model can be generated that can be provided to the customer, who can use and execute it. When the model is executed, these probabilities are used for the algorithmic or computer-implemented calculation of suggestions. This embodiment of the invention has the technical advantage that the calculation of the suggestions is based on a computationally simple, purely statistical problem-solving approach. In this case, no neural network needs to be trained. In a further development, a weighting can also be calculated and taken into account. This represents the frequency of a connection across all analyzed projects. The weighting is thus domain-specific, but cross-project.

Der Gerätebaum repräsentiert Feldgeräte der Automatisierungsanlage und deren funktionale Ansteuerung/Verschaltung. Das Programm einer Automatisierungsanlage kann innerhalb einer spezifischen industriellen Domäne kann außer dem eigentlichen Programmcode die entsprechende Feldbuskonfiguration, die Baumstruktur der in der Automatisierungsanlage verwendeten technischen Komponenten und/oder die Parameter für die technischen Komponenten aufweisen. In vorteilhafter Weise lassen sich somit die für die Domäne spezifischen Programmteile, die verwendeten Automatisierungshierarchien und die Konfiguration der technischen Komponenten identifizieren. Die technischen Komponenten umfassen alle Geräte die zur Erfassung von Signalen oder als Aktuatoren für den automatischen Ablauf in der Automatisierungsanlage vorgesehen sind. Durch das maschinelle Lernverfahren können Muster in der Verwendung der technischen Komponenten mit Bezug auf die Strukturen in den Programmanweisungen und den Parametern identifiziert und analysiert werden. Beispielsweise können die Gerätebäume analysiert und mit Funktionen, die sich aus den Programmanweisungen ergeben, korreliert werden. Somit können automatisch Vorschläge zur Feldbus- und Komponentenkonfiguration, Verknüpfungen zwischen der Programmlogik, sowie den technischen Komponenten und den vorgefertigten Bibliotheksblöcken bereitgestellt werden.The device tree represents the field devices of the automation system and their functional control/interconnection. Within a specific industrial domain, the program of an automation system can contain, in addition to the actual program code, the corresponding fieldbus configuration, the tree structure of the technical components used in the automation system, and/or the parameters for the technical components. This advantageously allows the domain-specific program sections, the automation hierarchies used, and the configuration of the technical components to be identified. The technical components include all devices intended for signal acquisition or as actuators for the automatic process in the automation system. Using machine learning, patterns in the use of the technical components can be identified and analyzed with reference to the structures in the program instructions and the parameters. For example, the device trees can be analyzed and correlated with functions resulting from the program instructions. This allows for automatic suggestions for fieldbus and component configuration, links between the program logic, the technical components, and the predefined library blocks.

Gemäß einer Ausführungsform der Erfindung umfasst die Speichereinheit einen Server oder einen Serververbund, z.B. ausgebildet als eine Cloud. Der Server kann als ein Computer, Personal-Computer oder als eine Arbeitsstation in einem Computernetzwerk ausgebildet sein und eine Verarbeitungseinheit (Prozessor oder Prozessoren), einen Systemspeicher und einen Systembus beinhalten, der verschiedene Systemkomponenten einschließlich des Systemspeichers mit der Verarbeitungseinheit koppelt. Der Systembus kann eine von mehreren Arten von Busstrukturen sein, einschließlich eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses und eines lokalen Busses unter Verwendung einer beliebigen Vielzahl von Busarchitekturen. Der Systemspeicher kann einen Nur-LeseSpeicher (ROM) und/oder einen Direktzugriffsspeicher (RAM) beinhalten. Ein grundlegendes Ein-/Ausgabesystem (BIOS), das grundlegende Routinen enthält, die helfen, Informationen zwischen Elementen innerhalb des Computers (Server) zu übertragen, z.B. beim Start, kann im ROM gespeichert werden. Der Systembus kann eine von mehreren Arten von Busstrukturen sein, einschließlich eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses und eines lokalen Busses unter Verwendung einer beliebigen Vielzahl von Busarchitekturen. Der Computer kann auch ein Festplattenlaufwerk zum Lesen von und Schreiben auf eine Festplatte. Das Festplattenlaufwerkkann über eine Festplattenschnittstelle mit dem Systembus gekoppelt werden. Die Laufwerke und die zugehörigen Speichermedien bieten eine nichtflüchtige Speicherung von maschinenlesbaren Anweisungen, Datenstrukturen, Programmmodulen und anderen Daten für den Computer. Insbesondere kann durch die nichtflüchtige Speicherung das maschinelle Lernverfahren abrufbar und verwendbar gespeichert werden.According to one embodiment of the invention, the storage unit comprises a server or a server cluster, e.g., configured as a cloud. The server may be configured as a computer, personal computer, or as a workstation in a computer network and may include a processing unit (processor or processors), a system memory, and a system bus that couples various system components, including the system memory, to the processing unit. The system bus may be one of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus, using any of a variety of bus architectures. The system memory may include read-only memory (ROM) and/or random access memory (RAM). A basic input/output system (BIOS), containing basic routines that help transfer information between elements within the computer (server), e.g., during startup, may be stored in ROM. The system bus may be one of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus, using any of a variety of bus architectures. The computer may also include a hard disk drive for reading from and writing to a hard disk. The hard disk drive may be coupled to the system bus via a hard disk interface. The drives and associated storage media provide non-volatile storage of machine-readable instructions, data structures, program modules, and other data for the computer. In particular, non-volatile storage allows the machine learning method to be stored in a retrievable and usable manner.

Der Serververbund kann eine Vielzahl an Computern umfassen, die über ein Kommunikationsnetzwerk betrieben werden. Der entfernte Computer kann ein anderer Personal-Computer, ein Server, ein Router, ein Netzwerk-PC, eine Peer-Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten sein. Das Kommunikationsnetzwerk kann ein Local Area Network (LAN) und ein Wide Area Network (WAN), ein Intranet und das Internet umfassen. Das maschinelle Lernverfahren kann über den Serververbund, ausgebildet als eine Cloud, bereitgestellt werden. Somit können beispielsweise Anwender der Automatisierungsanlage von extern (außerhalb der Infrastruktur des Herstellers der Automatisierungsanlage) über beispielsweise das Internet auf ein vom Hersteller bereitgestelltes maschinelles Lernverfahren zugreifen und dieses für die Entwicklung, Ergänzung und/oder Optimierung von eigenen grafischen Programmanweisungen verwenden. Neu und/oder weiterentwickelte grafische Programmanweisungen der Anwender können ebenso über die Cloud bereitgestellt werden.The server network can comprise a plurality of computers operated via a communications network. The remote computer can be another personal computer, a server, a router, a network PC, a peer device, or another shared network node. The communications network can comprise a Local Area Network (LAN), a Wide Area Network (WAN), an Intranet, and the Internet. The machine learning method can be provided via the server network, configured as a cloud. Thus, for example, users of the automation system can access a Access the machine learning process provided by the manufacturer and use it to develop, supplement, and/or optimize your own graphical programming instructions. New and/or further developed graphical programming instructions from users can also be provided via the cloud.

Gemäß einer Ausführungsform der Erfindung kann das maschinelle Lernverfahren ein trainiertes neuronales Netzwerk umfassen. Das trainierte neuronale Netzwerk wird über eine Menge von Programmanweisungsblöcken mit bereits vorliegenden grafischen Programmanweisungen für unterschiedliche Anwendungen der Automatisierungsanlage innerhalb der spezifischen industriellen Domäne angelernt. Ein neuronales Netzwerk ist ein Netz bestehend aus künstlichen Neuronen, welche untereinander vernetzt sind. Die Architektur und Topologie des neuronalen Netzwerkes hängen von der vorgesehen Aufgabe ab. Über die Vernetzung werden Nachrichten zwischen den jeweiligen Knoten ausgetauscht. Die Verbindungen weisen nummerische Gewichtungen auf, welche basierend auf Erfahrungen angepasst werden können und somit das neuronale Netzwerk anpassbar an die Eingaben und fähig zum Lernen machen. Das neuronale Netzwerk kann über das Entwickeln von neuen Verbindungen zwischen den Neuronen, das Löschen von bereits existierenden Verbindungen zwischen den Neuronen, eine Änderung der Gewichtung von Neuron zu Neuron, durch ein Hinzufügen bzw. Löschen von Neuronen und eventuell ein Anpassen der Schwellwerte der Neuronen angelernt werden. Das neuronale Netzwerk wird über eine Menge von Programmanweisungsblöcken mit bereits vorliegenden grafischen Programmanweisungen trainiert. Über das maschinelle Lernverfahren werden häufig wiederkehrende Muster in den Programmanweisungsblöcken identifiziert. Es können weiterhin die Strukturen der Programmanweisungen und damit verbundene Parameter identifiziert werden. Zudem können für Elemente aus verwendeten Herstellerbibliotheken die Einstellparameter, wie beispielsweise Alarmschwellen, Regelparameter, etc. analysiert und angelernt werden. Das maschinelle Lernverfahren kann für verschiedene Automatisierungsprojekte aus unterschiedlichen spezifischen industriellen Domänen, beispielsweise in der Cloud, trainiert werden. In vorteilhafter Weise können somit entsprechend auf erste grafische Programmanweisungen funktionell korrespondierende und auf Korrektheit geprüfte zweite grafische Programmanweisungen bereitgestellt werden. In vorteilhafter Weise kann damit eine semantische Verifikation der Programmanweisungen im Kontext der jeweiligen industriellen Domäne erfolgen und nicht lediglich eine syntaktische.According to one embodiment of the invention, the machine learning method can comprise a trained neural network. The trained neural network is trained using a set of program instruction blocks with existing graphical program instructions for different applications of the automation system within the specific industrial domain. A neural network is a network consisting of interconnected artificial neurons. The architecture and topology of the neural network depend on the intended task. Messages are exchanged between the respective nodes via the network. The connections have numerical weights that can be adjusted based on experience, thus making the neural network adaptable to the inputs and capable of learning. The neural network can be trained by developing new connections between the neurons, deleting existing connections between the neurons, changing the weighting from neuron to neuron, adding or deleting neurons, and possibly adjusting the threshold values of the neurons. The neural network is trained using a set of program instruction blocks with existing graphical program instructions. The machine learning process identifies frequently recurring patterns in the program instruction blocks. Furthermore, the structures of the program instructions and associated parameters can be identified. Furthermore, the setting parameters for elements from used manufacturer libraries, such as alarm thresholds, control parameters, etc., can be analyzed and learned. The machine learning process can be trained for various automation projects from different specific industrial domains, for example, in the cloud. This advantageously allows for the provision of second graphical program instructions that functionally correspond to the first graphical program instructions and have been checked for correctness. This advantageously allows for a semantic verification of the program instructions in the context of the respective industrial domain, rather than merely a syntactical verification.

Gemäß einer Ausführungsform der Erfindung ist das maschinelle Lernverfahren als ein Entscheidungsbaum ausgebildet und umfasst einen solchen. Der Entscheidungsbaum stellt einen geordneten und/oder einen gerichteten Baum dar, über den grafisch hierarchisch aufeinanderfolgende Entscheidungen bereitgestellt werden können. Über den Entscheidungsbaum kann automatisch eine Klassifizierung der Daten oder Regeln hergeleitet werden. Über eine integrierten Programmierumgebung können vorhandene Softwareprojekte mit grafischen Programmanweisungen in eine XML-Beschreibung (Extensible Markup Language) exportiert werden. Die XML-Beschreibung umfasst eine Beschreibung der verschiedenen Funktionsblöcke mit ihren Ein- und Ausgängen und eine Verschaltungsbeschreibung, in welcher die einzelnen Verbindungen zwischen den Funktionsblöcken beschrieben sind. Die XML-Beschreibung kann beispielsweise über einen spezifischen Parser analysiert werden, um einen Entscheidungsbaum aufzubauen. Durch den Parser kann analysiert werden, welche Verbindung zwischen welchen Funktionsblöcken vorliegen und entsprechende Wertigkeiten für die jeweiligen Verbindungen, die sogenannten Kanten des Entscheidungsbaums, vergeben. Über die Wertigkeit der Kanten kann ein strukturierter Entscheidungsbaum angelegt werden. In vorteilhafter Weise kann somit ausgehend von der Analyse des Entscheidungsbaums und insbesondere von der Wertigkeit der Kanten aus gespeicherten Dateien bereits bestehender Softwareprojekte verwendete grafische Programmanweisungen und deren Implementierung bzw. Anordnung erkannt und zur Verwendung für die aktuelle Steuerungsausgabe vorgeschlagen werden.According to one embodiment of the invention, the machine learning method is designed as and comprises a decision tree. The decision tree represents an ordered and/or directed tree, via which decisions can be provided in a graphically hierarchical manner. A classification of the data or rules can be automatically derived from the decision tree. Using an integrated programming environment, existing software projects can be exported with graphical program instructions into an XML (Extensible Markup Language) description. The XML description includes a description of the various function blocks with their inputs and outputs and a wiring description in which the individual connections between the function blocks are described. The XML description can be analyzed, for example, using a specific parser to construct a decision tree. The parser can analyze which connections exist between which function blocks and assign corresponding values to the respective connections, the so-called edges of the decision tree. A structured decision tree can be created based on the value of the edges. In an advantageous manner, based on the analysis of the decision tree and in particular on the value of the edges from saved files of already existing software projects, used graphical program instructions and their implementation or arrangement can be recognized and suggested for use for the current control output.

Erfindungsgemäß umfasst das Auswerten eine Filterung der erfassten wenigstens einen ersten grafischen Programmanweisung anhand von vorkonfigurierten Filterkriterien, welche das Analysieren von Verwendungsmustern beinhalten. Hierbei werden die grafischen Programmanweisungen in bereits bestehenden Softwareprojekten auf ihren Einsatz und die damit verbundene Verwendung analysiert. Insbesondere werden spezifische Muster gesucht, in denen sich eine wiederholende Verwendung einer grafischen Programmanweisung mit Bezug auf eine weitere grafische Programmanweisung ergibt. Dies umfasst gleiche Verbindungen zwischen den Eingängen und Ausgängen der jeweiligen grafischen Programmanweisungen. In vorteilhafter Weise kann somit eine bereits verwendete und funktionierende Anordnung von grafischen Programmanweisungen identifiziert und effizient bereitgestellt werden.According to the invention, the evaluation comprises filtering the detected at least one first graphical program instruction based on preconfigured filter criteria, which include the analysis of usage patterns. In this process, the graphical program instructions are analyzed in existing software projects for their deployment and the associated use. In particular, specific patterns are sought in which a repeated use of a graphical program instruction with reference to another graphical program instruction occurs. This includes identical connections between the inputs and outputs of the respective graphical program instructions. Thus, an already used and functioning arrangement of graphical program instructions can be advantageously identified and efficiently provided.

Erfindungsgemäß erfolgt die Filterung anhand von vorkonfigurierten Filterkriterien. In weiteren Ausführungsformen wird dies ermöglicht, indem funktionale Muster analysiert werden. Hierbei werden die grafischen Programmanweisungen in bereits bestehenden Softwareprojekten auf den funktionalen Zusammenhang analysiert. Insbesondere wird analysiert, welche Funktion die jeweiligen grafische Programmanweisungen ausführen und welche Funktion sich in Kombination ergeben kann. Die einzelne Programmanweisung kann dann zum Ersetzen der Anordnung von Programmanweisungen vorgeschlagen werden, um z.B. ein lauffähiges Programm effizienter und schneller ausführbar zu gestalten. Vorzugsweise werden automatisch „Paare“ von Programmanweisungen gefunden, die funktional „verschaltbar“ sind (Erweiterungen) oder einander entsprechen (alternativer Ersatz).According to the invention, filtering is carried out based on preconfigured filter criteria. In further embodiments, this is made possible by Functional patterns are analyzed. This involves analyzing the graphical program instructions in existing software projects for their functional relationships. In particular, the analysis focuses on the function performed by each graphical program instruction and the resulting function when combined. The individual program instruction can then be suggested for replacing the sequence of program instructions, for example, to make an executable program more efficient and faster to execute. Preferably, pairs of program instructions are automatically found that are functionally interlinkable (extensions) or correspond to each other (alternative replacements).

Gemäß einer Ausführungsform der Erfindung erfolgt die Filterung von Programmanweisungen anhand von vorkonfigurierten Filterkriterien, indem grafische Programmanweisungsstrukturen analysiert werden. Hierbei werden die grafischen Programmanweisungen in bereits bestehenden Softwareprojekten auf den strukturellen Zusammenhang analysiert. Insbesondere wird analysiert, in welcher Art, Reihenfolge und/oder Anzahl bestimmte grafische Programmanweisungen miteinander in Zusammenhang stehen. Hierbei werden insbesondere die Verbindungen zwischen den Eingängen und den Ausgängen der grafischen Programmanweisungen analysiert, womit festgestellt werden kann, welche grafische Programmanweisung einer anderen Programmanweisung folgt.According to one embodiment of the invention, program instructions are filtered based on preconfigured filter criteria by analyzing graphical program instruction structures. In this process, the graphical program instructions in existing software projects are analyzed for their structural relationships. In particular, the type, order, and/or number of relationships between certain graphical program instructions are analyzed. In particular, the connections between the inputs and outputs of the graphical program instructions are analyzed, which makes it possible to determine which graphical program instruction follows another program instruction.

Gemäß einer Ausführungsform der Erfindung erfolgt die Filterung von Programmanweisungen anhand von vorkonfigurierten Filterkriterien, indem Programmanweisungsparameter analysiert werden. Hierbei werden die grafischen Programmanweisungen in bereits bestehenden Softwareprojekten auf bestimmte Programmanweisungsparameter analysiert. Es können verschiedene Programmanweisungsparameter, welche in spezifischen grafischen Programmanweisungen verwendet werden, identifiziert werden. Diese Programmanweisungsparameter bieten die Möglichkeit einer Referenz, indem aus ihnen geschlussfolgert werden kann, wo entsprechende grafischen Programmanweisungen eingesetzt werden und eventuell in welcher Kombination und mit welchen weiteren grafischen Programmanweisungen diese eingesetzt werden.According to one embodiment of the invention, program instructions are filtered based on preconfigured filter criteria by analyzing program instruction parameters. In this process, the graphical program instructions in existing software projects are analyzed for specific program instruction parameters. Various program instruction parameters used in specific graphical program instructions can be identified. These program instruction parameters offer the possibility of a reference, as they can be used to determine where corresponding graphical program instructions are used and, possibly, in which combination and with which other graphical program instructions they are used.

In einer weiteren Ausführungsform kann eine Referenz in den grafischen Programmanweisungen hinterlegt werden, welche einen Pfad zu weiteren grafischen Programmanweisungen umfasst, die dem gleichen Filterkriterium entsprechen. Somit kann eine Verlinkung zwischen den einzelnen grafischen Programmanweisungen erreicht werden, die ein effizienteres maschinelles Anlernen und Bereitstellen von zweiten grafischen Programmanweisungen ermöglicht.In a further embodiment, a reference can be stored in the graphical program instructions, which includes a path to further graphical program instructions that meet the same filter criteria. This allows for a link between the individual graphical program instructions, which enables more efficient machine learning and provision of second graphical program instructions.

Gemäß einer Ausführungsform der Erfindung erfolgt die Filterung von Programmanweisungen anhand von vorkonfigurierten Filterkriterien, indem Programmregeln analysiert werden. Unter den Programmregeln sind Regeln für den Aufbau von grafischen Programmanweisungen, insbesondere von Anordnungen mit einer Vielzahl an grafischen Programmanweisungen, zu verstehen. In vorteilhafter Weise stellen die Programmregeln eine Basis zum Erstellen von grafischen Programmanweisungen bereit, die ein Programmierer benötigt. Hierdurch kann die einzelne Programmanweisung strukturiert und einfach lesbar ausgeführt werden. Zudem werden kritische Konstrukte und Kombinationen an grafischen Programmanweisungen unterbunden, wodurch der native Maschinencode ineffizient und auf der speicherprogrammierbaren Steuerung zu langsam ausführbar werden würde und/oder zu viel Speicherplatz bedürfte. Zudem können die Programmregeln aktualisiert werden, wodurch neue Kombinationen an Programmanweisungen ermöglicht werden können.According to one embodiment of the invention, program instructions are filtered based on preconfigured filter criteria by analyzing program rules. Program rules are understood to be rules for the structure of graphical program instructions, in particular arrangements with a large number of graphical program instructions. The program rules advantageously provide a basis for creating graphical program instructions required by a programmer. This allows individual program instructions to be executed in a structured and easily readable manner. Furthermore, critical constructs and combinations of graphical program instructions are prevented, which would render the native machine code inefficient and too slow to execute on the programmable logic controller and/or require too much memory. Furthermore, the program rules can be updated, enabling new combinations of program instructions.

Gemäß einer Ausführungsform der Erfindung erfolgt das Auswerten dynamisch während der Laufzeit. In vorteilhafter Weise kann das computerimplementierte Verfahren gemäß der vorliegenden Erfindung beispielsweise durch ein Plug-In in eine bestehende integrierte Entwicklungsumgebung zum Entwickeln von grafischen Programmanweisungen installiert werden, wodurch die integrierte Entwicklungsumgebung automatisch im Hintergrund die aktuellen grafischen Programmanweisungen analysiert wird. Diese Analyse kann zyklisch erfolgen oder durch eine erfasste neue Eingabe einer grafischen Programmanweisung gestartet werden. Hierfür kann ein Watchdog eingesetzt werden, der die Eingabemittel zur Eingabe von grafischen Programmanweisungen überwacht. In einer alternativen Ausführung kann die Vorrichtung gemäß der vorliegenden Erfindung in dem Computer integriert sein, der die integrierte Entwicklungsumgebung ausführt. Die integrierte Entwicklungsumgebung stellt hierbei eine Programmanwendung dar, die auf einem elektronischen Gerät mit einer Benutzerschnittstelle zur Interaktion ausgeführt wird. Die Benutzerschnittstelle ist für den Empfang von Programmiereingaben und zur Darstellung von Informationen ausgestaltet. Gemäß einer Ausführungsform der Erfindung erfolgt das Auswerten durch ein Empfangen eines Interaktionssignals. In vorteilhafter Weise erfolgt die Auswertung der erfassten wenigstens einen ersten grafischen Programmanweisung erst dann, wenn ein Interaktionssignal durch einen Programmierer über die integrierte Entwicklungsumgebung oder durch ein nachgelagertes System/Programm bereitgestellt wurde.According to one embodiment of the invention, the evaluation takes place dynamically during runtime. Advantageously, the computer-implemented method according to the present invention can be installed, for example, as a plug-in into an existing integrated development environment for developing graphical program instructions, whereby the integrated development environment automatically analyzes the current graphical program instructions in the background. This analysis can take place cyclically or be initiated by a detected new input of a graphical program instruction. A watchdog can be used for this purpose, which monitors the input means for entering graphical program instructions. In an alternative embodiment, the device according to the present invention can be integrated into the computer that executes the integrated development environment. The integrated development environment represents a program application that is executed on an electronic device with a user interface for interaction. The user interface is designed to receive programming inputs and to display information. According to one embodiment of the invention, the evaluation takes place by receiving an interaction signal. Advantageously, the evaluation of the detected at least one first graphical program instruction only takes place when an interaction signal has been provided by a programmer via the integrated development environment or by a downstream system/program.

Der Vorteil der Erfindung liegt darin, dass implizites Wissen aus vorherigen Projekten (wieder) verwendet werden kann, ohne dass dieses Wissen manuell extrahiert, aufbereitet und in Unternehmens- oder domänenspezifischen Bibliotheken implementiert werden muss. Oft übernehmen Programmierer Programmstrukturen per „Copy-and-Paste“ aus alten Projekten. Dies ist ein sehr fehleranfällige Art der Wiederverwendung, da häufig zu viel oder zu wenig kopiert wird. Gemäß der hier vorgeschlagenen Lösung, werden lediglich Vorschläge gemacht, aus denen der Programmierer dann auswählen kann und das Programm wird daraufhin neu erstellt.The advantage of the invention lies in the fact that implicit knowledge from previous projects can be (re)used without having to manually extract, process, and implement this knowledge in company- or domain-specific libraries. Programmers often adopt program structures from old projects using "copy and paste." This is a highly error-prone form of reuse, as too much or too little is often copied. According to the solution proposed here, only suggestions are made from which the programmer can then choose, and the program is then rebuilt.

Gemäß einer Ausführungsform der Erfindung werden die bestimmten verifizierten zweiten Programmanweisungen in einer integrierten Entwicklungsumgebung ausgegeben. In vorteilhafter Weise werden die funktionell verifizierten zweiten Programmanweisungen in der integrierten Entwicklungsumgebung direkt dargestellt, so dass ein Programmierer instruiert wird, welche grafische Programmanweisung verwendet werden soll, bzw. welche grafische Programmanweisung zu einer Anordnung mit einer Vielzahl an grafischen Programmanweisungen zugeordnet werden kann. Durch die Ausgabe kann ein entsprechendes Programm für die speicherprogrammierbare Steuerung einer Automatisierungsanlage effizient und fehlerfrei erstellt werden.According to one embodiment of the invention, the determined verified second program instructions are output in an integrated development environment. Advantageously, the functionally verified second program instructions are displayed directly in the integrated development environment, so that a programmer is instructed as to which graphical program instruction should be used or which graphical program instruction can be assigned to an arrangement with a plurality of graphical program instructions. This output allows a corresponding program for the programmable logic controller of an automation system to be created efficiently and error-free.

Gemäß einer Ausführungsform der Erfindung wird zumindest eine der erfassten ersten grafischen Programmanweisungen automatisch durch zumindest eine der bestimmten auf Funktionalität verifizierten zweiten grafischen Programmanweisungen in einem in der integrierten Entwicklungsumgebung dargestellten Signalflussplan oder Funktionsplan zum Erstellen von Programmanweisung und/oder eines Programmanweisungsblockes ersetzt. In vorteilhafter Weise können somit die erfassten ersten grafischen Programmanweisungen um effiziente und fehlerfreie Programmanweisungen ersetzt werden, wodurch ein fehlerfreies Kompilieren erfolgen und eine zeitlich intensive Fehlersuche mit einem Debugger bei Fehlern vermieden werden kann.According to one embodiment of the invention, at least one of the detected first graphical program instructions is automatically replaced by at least one of the specific second graphical program instructions, verified for functionality, in a signal flow chart or function plan displayed in the integrated development environment for creating program instructions and/or a program instruction block. Advantageously, the detected first graphical program instructions can thus be replaced with efficient and error-free program instructions, enabling error-free compilation and avoiding time-consuming troubleshooting with a debugger in the event of errors.

Gemäß einer alternativen Ausführungsform der Erfindung wird zumindest eine der erfassten ersten grafischen Programmanweisungen nach Erfassen eines Bestätigungssignals durch zumindest einer der bestimmten auf Funktionalität verifizierten zweiten grafischen Programmanweisungen in einem in der integrierten Entwicklungsumgebung dargestellten Signalflussplan und/oder Funktionsplan zum Erstellen von Programmanweisung und/oder eines Programmanweisungsblockes erweitert. Ferner kann die Funktionalität der ersten grafischen Programmanweisung vorausschauend um die auf Funktionalität verifizierte zweite Programmanweisung erweitert werden, wodurch der Programmierer bei dem Erstellen des Programms für die Automatisierungsanlage unterstützt wird.According to an alternative embodiment of the invention, after detecting a confirmation signal, at least one of the detected first graphical program instructions is expanded by at least one of the specific second graphical program instructions verified for functionality in a signal flow diagram and/or function plan displayed in the integrated development environment to create a program instruction and/or a program instruction block. Furthermore, the functionality of the first graphical program instruction can be proactively expanded by the second program instruction verified for functionality, thereby assisting the programmer in creating the program for the automation system.

Gemäß einem zweiten Aspekt betrifft die Erfindung eine Vorrichtung gemäß Anspruch 13. In einer Ausführungsform kann die Vorrichtung zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen für eine in einer Automatisierungsanlage innerhalb einer spezifischen Domäne verwendete speicherprogrammierbare Steuerung dienen. Die Vorrichtung umfasst:

  • - eine Erfassungseinheit, die zum Erfassen von wenigstens einer ersten grafischen Programmanweisung für wenigstens eine speicherprogrammierbare Steuerung der Automatisierungsanlage ausgebildet ist;
  • - eine Auswerteeinheit mit mindestens einem in einer Speichereinheit der Auswerteeinheit gespeicherten maschinellen Lernverfahren, das ausgebildet ist, um die erfasste wenigstens eine erste grafische Programmanweisung auszuwerten, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung diejenigen zweiten grafischen Programmanweisungen als auf Funktionalität verifizierte zweite grafische Programmanweisungen zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung entspricht und/oder diese ergänzt.
According to a second aspect, the invention relates to a device according to claim 13. In one embodiment, the device can be used to provide functionality-verified second graphical program instructions for a programmable logic controller used in an automation system within a specific domain. The device comprises:
  • - a detection unit designed to detect at least one first graphical program instruction for at least one programmable logic controller of the automation system;
  • - an evaluation unit with at least one machine learning method stored in a memory unit of the evaluation unit, which is designed to evaluate the detected at least one first graphical program instruction in order to determine, for the detected at least one first graphical program instruction, those second graphical program instructions as functionality-verified second graphical program instructions whose functionality corresponds to that of the detected at least one first graphical program instruction and/or supplements it.

Die vorstehend beschriebenen, erfindungsgemäßen Ausführungsformen des computerimplementierten Verfahrens können auch als Computerprogramm ausgebildet sein, wobei ein Computer zur Durchführung des oben beschriebenen, erfindungsgemäßen Verfahrens veranlasst wird, wenn das Computerprogramm auf dem Computer bzw. auf einem Prozessor des Computers ausgeführt wird. Das Computerprogramm kann per Download bereitgestellt oder in einer Speichereinheit der Vorrichtung mit darin enthaltenem computerlesbarem Programmcode gespeichert werden, um die Vorrichtung zur Ausführung von Anweisungen gemäß dem oben genannten computerimplementierten Verfahren zu veranlassen. Dabei kann das Computerprogramm auch auf einem maschinenlesbaren Speichermedium gespeichert sein. Eine alternative Aufgabenlösung sieht ein Speichermedium vor, das zur Speicherung des vorstehend beschriebenen, computerimplementierten Verfahrens bestimmt ist und von einem Computer oder Prozessor lesbar ist.The above-described embodiments of the computer-implemented method according to the invention can also be embodied as a computer program, wherein a computer is caused to carry out the above-described method according to the invention when the computer program is executed on the computer or on a processor of the computer. The computer program can be provided via download or stored in a memory unit of the device with computer-readable program code contained therein in order to cause the device to execute instructions according to the above-described computer-implemented method. The computer program can also be stored on a machine-readable storage medium. An alternative solution to the problem provides a storage medium that is intended for storing the above-described computer-implemented method and is readable by a computer or processor.

Alternativ kann die Erfindung auch als Computerprogrammprodukt ausgebildet sein. Die Realisierung der Erfindung durch ein Computerprogrammprodukt hat den Vorteil, dass bereits vorhandene elektronische Geräte, beispielsweise Computer, portable Geräte die ein Ausführen der integrierten Entwicklungsumgebung zum Programmieren von grafischen Programmanweisungen für speicherprogrammierbare Steuerungen erlauben, leicht durch Software-Updates verwendet werden können, um wie von der Erfindung vorgeschlagen, von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen für eine in einer Automatisierungsanlage innerhalb einer spezifischen industriellen Domäne verwendete speicherprogrammierbare Steuerung bereitzustellen.Alternatively, the invention can also be implemented as a computer program product. The realization of the invention by means of a computer program product has the advantage that existing electronic devices, for example computers, portable devices that allow execution of the integrated development environment for the program mation of graphical program instructions for programmable logic controllers, can be easily used by software updates to provide, as proposed by the invention, second graphical program instructions verified for functionality for a programmable logic controller used in an automation system within a specific industrial domain.

Es liegt im Rahmen der Erfindung, dass nicht alle Schritte des Verfahrens zwangsläufig auf ein und demselben Bauteil oder derselben Computerinstanz ausgeführt werden müssen, sondern sie können auch auf unterschiedlichen Computerinstanzen ausgeführt werden. Auch kann die Abfolge der Verfahrensschritte gegebenenfalls variiert werden.It is within the scope of the invention that not all steps of the method necessarily have to be performed on one and the same component or the same computer instance; they can also be performed on different computer instances. The sequence of the method steps can also be varied if necessary.

Darüber hinaus ist es möglich, dass ein einzelner Abschnitt des vorstehend beschriebenen computerimplementierten Verfahrens in einer verkaufsfähigen Einheit und die restlichen Komponenten in einer anderen verkaufsfähigen Einheit - sozusagen als verteiltes System - ausgeführt werden können. So ist es insbesondere möglich, den Verfahrensschritt des Erfassens in einem ersten Modul und das Auswerten der erfassten wenigstens einen ersten grafischen Programmanweisung in einem zweiten Modul auszuführen.Furthermore, it is possible for a single section of the computer-implemented method described above to be executed in one saleable unit and the remaining components in another saleable unit—as a distributed system, so to speak. In particular, it is possible to execute the method step of capturing in a first module and the evaluation of the captured at least one first graphical program instruction in a second module.

Ein weiterer Aspekt der vorliegenden Erfindung umfasst die Verwendung eines Verfahrens nach einem der Verfahrensansprüche der Erfindung in einer integrierten Entwicklungsumgebung zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen für eine speicherprogrammierbare Steuerung.A further aspect of the present invention comprises the use of a method according to one of the method claims of the invention in an integrated development environment for providing second graphical program instructions verified for functionality for a programmable logic controller.

Die obigen Ausgestaltungen und Weiterbildungen lassen sich, sofern sinnvoll, beliebig miteinander kombinieren. Weitere mögliche Ausgestaltungen, Weiterbildungen und Implementierungen der Erfindung umfassen auch nicht explizit genannte Kombinationen von zuvor oder im Folgenden bezüglich der Ausführungsbeispiele beschriebenen Merkmalen der Erfindung. Insbesondere wird dabei der Fachmann auch Einzelaspekte als Verbesserung oder Ergänzungen zu der jeweiligen Grundform der vorliegenden Erfindung hinzufügen.The above embodiments and further developments can be combined with one another as desired, where appropriate. Further possible embodiments, further developments, and implementations of the invention also include combinations of features of the invention not explicitly mentioned above or described below with regard to the exemplary embodiments. In particular, the person skilled in the art will also add individual aspects as improvements or additions to the respective basic form of the present invention.

In der folgenden detaillierten Figurenbeschreibung werden nicht einschränkend zu verstehende Ausführungsbeispiele mit deren Merkmalen und weiteren Vorteilen anhand der Zeichnung besprochen.In the following detailed description of the figures, non-limiting embodiments with their features and further advantages are discussed with reference to the drawing.

Kurze Beschreibung der FigurenShort description of the characters

  • 1 zeigt eine schematische Ansicht gemäß einer bevorzugten Ausführungsform der erfindungsgemäßen Vorrichtung, 1 shows a schematic view according to a preferred embodiment of the device according to the invention,
  • 2 zeigt eine schematische Darstellung einer im Stand der Technik bekannten textuellen Autovollverständigung von Programmcode, 2 shows a schematic representation of a textual autocomplete communication of program code known in the state of the art,
  • 3 zeigt ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens, und 3 shows a flow chart according to a preferred embodiment of the method according to the invention, and
  • 4 zeigt eine schematische Darstellung des Programmierworkflows gemäß einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens. 4 shows a schematic representation of the programming workflow according to a preferred embodiment of the method according to the invention.

Detaillierte Beschreibung der ErfindungDetailed description of the invention

In 1 ist eine schematische Ansicht gemäß einer bevorzugten Ausführungsform der erfindungsgemäßen Vorrichtung 10 dargestellt. In der 1 bezeichnet Bezugszeichen 10 die erfindungsgemäße Vorrichtung zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C für eine in einer Automatisierungsanlage 100 innerhalb einer spezifischen Domäne verwendete speicherprogrammierbare Steuerung 20. Die Vorrichtung 10 umfasst eine Erfassungseinheit 11. Die Erfassungseinheit 11 ist ausgebildet, wenigstens eine erste grafische Programmanweisung A für wenigstens eine speicherprogrammierbare Steuerung 20 der Automatisierungsanlage 100 der spezifischen Domäne zu erfassen. Die erste grafische Programmanweisung A ist in der 1 als ein Funktionsblock mit einem ersten Eingang ai1 und einem zweiten Eingang ai2 und einem Ausgang ao1 abgebildet. Der Funktionsblock definiert oder realisiert einen Algorithmus auf dessen Basis die Signale an dem ersten Eingang ai1 und dem zweiten Eingang ai2 zu einem Ergebnis verarbeitet werden, welches über den Ausgang ao1 bereitgestellt wird. Die erste grafische Programmanweisung A kann über eine Tastatur, Mikrofon, Touch-Screen oder Maus aus einer Programmanweisungsbibliothek ausgewählt und in der integrierten Programmierumgebung dargestellt werden oder in der integrierten Programmierumgebung erstellt werden. Die integrierte Programmierumgebung ist ein ausführbares Anwendungsprogramm, das auf einem elektronischen Gerät, beispielsweise einem Computer oder einem Handheld ausgeführt werden kann. Das elektronische Gerät kann über eine Kommunikationsverbindung, beispielsweise über eine RS232-, RS458-, USB-, und/oder Ethernet-Schnittstelle mit der speicherprogrammierbaren Steuerung 20 der Automatisierungsanlage 100 einer spezifischen industriellen Domäne verbunden werden.In 1 is a schematic view according to a preferred embodiment of the device 10 according to the invention. In the 1 Reference numeral 10 denotes the device according to the invention for providing second graphical program instructions C, verified for functionality, for a programmable logic controller 20 used in an automation system 100 within a specific domain. The device 10 comprises a detection unit 11. The detection unit 11 is designed to detect at least one first graphical program instruction A for at least one programmable logic controller 20 of the automation system 100 of the specific domain. The first graphical program instruction A is in the 1 depicted as a function block with a first input a i1 and a second input a i2 and an output a o1 . The function block defines or implements an algorithm on the basis of which the signals at the first input a i1 and the second input a i2 are processed to produce a result that is provided via the output a o1 . The first graphical program instruction A can be selected from a program instruction library using a keyboard, microphone, touch screen, or mouse and displayed in the integrated programming environment or created in the integrated programming environment. The integrated programming environment is an executable application program that can be run on an electronic device, such as a computer or a handheld device. The electronic device can be connected to the programmable logic controller 20 of the automation system 100 of a specific industrial domain via a communication connection, such as an RS232, RS458, USB, and/or Ethernet interface.

Die speicherprogrammierbare Steuerung 20 wird hierbei zur Steuerung oder Regelung der Automatisierungsanlage 100 eingesetzt. Die speicherprogrammierbare Steuerung wird auf digitaler Basis programmiert und empfängt dafür über eine Kommunikationsverbindung, beispielsweise über eine RS232-, RS458-, USB-, und/oder Ethernet-Schnittstelle einen nativen Maschinencode, der in den Speicher der speicherprogrammierbaren Steuerung 20 geladen wird und durch den Prozessor (Prozessoren) in Steuersignale zum Ansteuern der Automatisierungsanlage 100 umgesetzt wird. Hierfür kann die speicherprogrammierbare Steuerung 20 mit dem elektronischen Gerät, das die integrierte Entwicklungsumgebung beinhaltet und/oder ausführt, verbunden werden.The programmable logic controller 20 is used to control or regulate the automation system 100. The programmable logic controller is programmed digitally and receives native machine code via a communication connection, for example, via an RS232, RS458, USB, and/or Ethernet interface. This native machine code is loaded into the memory of the programmable logic controller 20 and converted by the processor(s) into control signals for controlling the automation system 100. For this purpose, the programmable logic controller 20 can be connected to the electronic device that contains and/or executes the integrated development environment.

Die Automatisierungsanlage 100 kann eine Vielzahl an speicherprogrammierbaren Steuerungen 20 und eine Vielzahl an technischen Komponenten umfassen. Die Automatisierungsanlage 100 kann als eine Steuerungszone ausgebildet sein oder eine Vielzahl an Steuerungszonen umfassen. Dabei kann jeweils eine der Vielzahl an speicherprogrammierbarer Steuerungen 20 Steuersignale zum Ansteuern einer jeweiligen Zone der Automatisierungsanlage 100 bereitstellen. Die speicherprogrammierbare Steuerung 20 kann als ein Einzelgerät (Baugruppe), als eine PC-Einsteckkarte in einem Personal-Computer, der mit der Automatisierungsanlage 100 verbunden ist und/oder als eine Softwareemulation (Soft-SPS) realisiert werden.The automation system 100 can comprise a plurality of programmable logic controllers 20 and a plurality of technical components. The automation system 100 can be configured as a single control zone or comprise a plurality of control zones. Each of the plurality of programmable logic controllers 20 can provide control signals for controlling a respective zone of the automation system 100. The programmable logic controller 20 can be implemented as a standalone device (module), as a PC plug-in card in a personal computer connected to the automation system 100, and/or as a software emulation (soft PLC).

Die Vorrichtung 10 umfasst zudem eine Auswerteeinheit 12 mit mindestens einem in einer Speichereinheit 13 der Auswerteeinheit 12 gespeicherten maschinellen Lernverfahren. Das maschinelle Lernverfahren ist dazu ausgebildet, die erfasste wenigstens eine erste grafische Programmanweisung A auszuwerten, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung A diejenigen zweiten grafischen Programmanweisungen C zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung A entspricht und/oder die erfasste wenigstens eine erste grafische Programmanweisung A ergänzt.The device 10 also comprises an evaluation unit 12 with at least one machine learning method stored in a memory unit 13 of the evaluation unit 12. The machine learning method is designed to evaluate the detected at least one first graphical program instruction A in order to determine, for the detected at least one first graphical program instruction A, those second graphical program instructions C whose functionality corresponds to that of the detected at least one first graphical program instruction A and/or supplements the detected at least one first graphical program instruction A.

In der 1 umfasst die auf Funktionalität verifizierte zweite grafische Programmanweisung C einen ersten Eingang ai1, einen zweiten Eingang ai2 und einen dritten Eingang bi2, sowie einen ersten Ausgang ao1 und einen zweiten Ausgang bo1. Die in 1 dargestellte auf Funktionalität verifizierte zweite grafische Programmanweisung C entspricht der ersten grafischen Programmanweisung A, die um eine Funktion, ersichtlich durch den zusätzlichen Ein- und Ausgang, ergänzt wurde.In the 1 the second graphical program instruction C verified for functionality comprises a first input a i1 , a second input a i2 and a third input b i2 , as well as a first output a o1 and a second output b o1 . 1 The second graphical program instruction C shown, verified for functionality, corresponds to the first graphical program instruction A, which has been supplemented by a function, evident from the additional input and output.

Die Vorrichtung 10 kann über einen Kommunikationsverbindung mit dem elektronischen Gerät verbunden sein und die auf Funktionalität verifizierte zweite grafische Programmanweisungen C für eine in einer Automatisierungsanlage 100 innerhalb einer spezifischen Domäne verwendete speicherprogrammierbare Steuerung 20 bereitstellen. In einer alternativen Ausführungsform kann die Vorrichtung 10 in dem elektronischen Gerät als Hardware implementiert sein oder als Software implementiert auf einem Prozessor des elektronischen Gerätes ausgeführt werden.The device 10 can be connected to the electronic device via a communication link and can provide the functionality-verified second graphical program instructions C to a programmable logic controller 20 used in an automation system 100 within a specific domain. In an alternative embodiment, the device 10 can be implemented as hardware in the electronic device or implemented as software and executed on a processor of the electronic device.

Die erste grafische Programmanweisung A wird in der integrierten Entwicklungsumgebung erfasst. Die integrierte Programmierumgebung wertet auf Anfrage oder laufend automatisch im Hintergrund die erfasste erste grafische Programmanweisung A aus. In einer alternativen Ausführungsform werden die ersten grafischen Programmanweisungen A über einen Interaktionstrigger, beispielsweise über ein Eingabegerät des elektronischen Gerätes ausgewertet. Die Auswertung erfolgt durch mindestens ein in einer Speichereinheit gespeichertes maschinelles Lernverfahren. Das maschinelle Lernverfahren kann mit vortrainierten Mustern kann in der integrierten Entwicklungsumgebung implementiert sein. Zusätzlich oder alternativ kann das maschinelle Lernverfahren mit vortrainierten Mustern trainiert sein, die online abrufbar auf einem Server oder in einem Serververbund hinterlegt sind. Entsprechend des Zugriffs auf den Serververbund kann dieser auch als eine Cloud ausgebildet sein. Das maschinelle Lernverfahren kann in einer Datenbank abgelegt sein.The first graphical program instruction A is recorded in the integrated development environment. The integrated programming environment evaluates the recorded first graphical program instruction A upon request or continuously and automatically in the background. In an alternative embodiment, the first graphical program instructions A are evaluated via an interaction trigger, for example via an input device of the electronic device. The evaluation is performed by at least one machine learning method stored in a memory unit. The machine learning method can be implemented in the integrated development environment using pre-trained patterns. Additionally or alternatively, the machine learning method can be trained using pre-trained patterns that are stored online on a server or in a server network. Depending on the access to the server network, this can also be implemented as a cloud. The machine learning method can be stored in a database.

Das maschinelle Lernverfahren analysiert bestehende Automatisierungsprojekte. Das Automatisierungsprojekt umfasst lauffähige Programmanweisungen bzw. lauffähige Steuerungsanweisungen zum Ansteuern der Automatisierungsanlage 100 über die speicherprogrammierbare Steuerung 20. Die bestehenden Automatisierungsprojekte werden auf häufig wiederkehrende Muster analysiert. Die wiederkehrenden Muster umfassen Verwendungsmuster und/oder funktionale Muster und/oder Programmanweisungsstrukturen und/oder Programmanweisungsparameter und/oder Programmregeln. Für die Analyse können in der integrierten Entwicklungsumgebung entsprechende Softwareprojekte, welche für das Bestimmen derjenigen auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C berücksichtigt werden sollten, manuell über beispielsweise die Angabe des Speicherorts der Softwareprojekte angewählt werden. Das maschinelle Lernverfahren kann über Softwareprojekte des Herstellers der Automatisierungsanlage 100 angelernt werden und/oder über die Softwareprojekte des Anwenders der Automatisierungsanlage 100 angelernt oder ergänzt werden. Das Anlernen kann über die integrierte Entwicklungsumgebung ausgelöst werden. Das maschinelle Lernverfahren kann lokal auf dem elektronischen Gerät mit der integrierten Entwicklungsumgebung angelernt werden oder auf einem Serververbund in der Cloud. Dies hat den Vorteil, dass eine Vielzahl an Softwareprojekten der Anwender für das Anlernen berücksichtigt werden können, wodurch eine größere Anzahl an effizienten und fehlerminimierten zweiten Programmanweisungen C bestimmt und bereitgestellt werden können.The machine learning method analyzes existing automation projects. The automation project includes executable program instructions or executable control instructions for controlling the automation system 100 via the programmable logic controller 20. The existing automation projects are analyzed for frequently recurring patterns. The recurring patterns include usage patterns and/or functional patterns and/or program instruction structures and/or program instruction parameters and/or program rules. For the analysis, corresponding software projects, which should be considered for determining the second graphical program instructions C verified for functionality, can be manually selected in the integrated development environment, for example, by specifying the storage location of the software projects. The machine learning method can be trained using software projects of the manufacturer of the automation system 100 and/or trained or supplemented using the software projects of the user of the automation system 100. The training This can be initiated via the integrated development environment. The machine learning process can be trained locally on the electronic device using the integrated development environment or on a server network in the cloud. This has the advantage that a large number of user software projects can be considered for training, allowing a larger number of efficient and error-minimized second program instructions (C) to be determined and provided.

Ein Softwareprojekt einer Automatisierungsanlage 100 umfasst zusätzlich zu den grafischen Programmanweisungen noch Feldbuskonfigurationen, Bäume als graphische Repräsentation der verwendeten technischen Komponenten und deren Verschaltung, Parameter für die technischen Komponenten. Damit lassen sich domänenspezifische Programmteile, Automatisierungshierarchien und Gerätekonfigurationen identifizieren. Im Ergebnis werden nicht nur syntaktisch und semantisch korrekte Vorschläge während der Programmierung bestimmt, sondern Vorschläge zur Feldbus- und Komponentenkonfiguration, Verknüpfungen zwischen Programmlogik und den technischen Komponenten, sowie vorgefertigte Bibliotheksblöcke bestimmt.In addition to graphical program instructions, a software project for an automation system 100 also includes fieldbus configurations, trees as a graphical representation of the technical components used and their interconnections, and parameters for the technical components. This allows domain-specific program sections, automation hierarchies, and device configurations to be identified. As a result, not only syntactically and semantically correct suggestions are determined during programming, but also suggestions for fieldbus and component configuration, links between program logic and the technical components, and predefined library blocks.

In einer Ausführungsform ist das maschinelle Lernverfahren als ein Entscheidungsbaum ausgebildet. Hierfür können die grafischen Programmanweisungen der Softwareprojekte einer oder einer Vielzahl an Automatisierungsanlagen in eine XML-Beschreibung exportiert werden. Die XML-Beschreibung stellt dabei ein offenes Format dar, welches durch unterschiedliche integrierte Entwicklungsumgebungen eingelesen werden und somit gut portiert werden kann. Die XML-Beschreibungen können entsprechend geparst werden, um eine statistische Häufung an Kanten und/oder Knoten im Graph basiert auf Wahrscheinlichkeiten, aufzubauen. Der Entscheidungsbaum umfasst mehrere Knoten mit Kanten zwischen den Knoten, welche eine Wertigkeit mit einer Wahrscheinlichkeit haben, welcher Knoten als nächstes folgt. Entsprechend nehmen die Optionen, die zur Auswahl stehen, im fortlaufenden Entscheidungsbaum ab, so dass mit einer hohen Wahrscheinlichkeit der letzte Knoten die auf Funktionalität verifizierte zweite grafische Programmanweisung C beinhaltet, welche für die erfasste grafische Programmanweisung A in vorherigen Softwareprojekten verwendet wurde.In one embodiment, the machine learning method is designed as a decision tree. For this purpose, the graphical program instructions of the software projects of one or more automation systems can be exported into an XML description. The XML description represents an open format that can be read by various integrated development environments and is therefore easily ported. The XML descriptions can be parsed accordingly to establish a statistical accumulation of edges and/or nodes in the graph based on probabilities. The decision tree comprises several nodes with edges between the nodes that have a value with a probability of which node follows next. Accordingly, the options available for selection decrease in the ongoing decision tree, so that with a high probability the last node contains the second graphical program instruction C, verified for functionality, which was used for the recorded graphical program instruction A in previous software projects.

In einer Ausführungsform kann für die erste grafische Programmanweisung A über den Entscheidungsbaum eine zweite grafische Programmanweisung B bestimmt werden, die die erste grafische Programmanweisung A vollständig ersetzt. Dies kann insbesondere der Fall sein, wenn die erste Programmanweisung A mehrere Funktionsblöcke umfasst und ein Funktionsblock bestimmt wurde, der die Funktion der mehreren Funktionsblöcke erfüllt. Dies hat den Vorteil, dass die Programmstruktur und somit die Struktur der grafischen Programmanweisungen übersichtlicher wird und die Fehlerrate während der Programmierung abnimmt. Zudem kann der Funktionsblock einfacher verwaltet und gewartet werden. Weiterhin vorteilhaft ist, dass die Funktion innerhalb eines Funktionsblocks realisiert ist, was zu verkürzten Laufzeiten zur Berechnung eines Ergebnisses des einen Funktionsblocks führt.In one embodiment, a second graphical program instruction B can be determined for the first graphical program instruction A via the decision tree, which completely replaces the first graphical program instruction A. This can be the case in particular if the first program instruction A comprises several function blocks and a function block has been determined that fulfills the function of the several function blocks. This has the advantage that the program structure and thus the structure of the graphical program instructions becomes clearer and the error rate during programming decreases. In addition, the function block can be managed and maintained more easily. Another advantage is that the function is implemented within a function block, which leads to shortened runtimes for calculating a result of the one function block.

In einer weiteren Ausführungsform umfasst das maschinelle Lernverfahren ein trainiertes neuronales Netzwerk, dass eine Menge von Programmanweisungsblöcken mit bereits vorliegenden grafischen Programmanweisungen für unterschiedliche Anwendungen der Automatisierungsanlage innerhalb der spezifischen industriellen Domäne umfasst. Das neuronale Netzwerk ist als ein Deep Neural Network ausgebildet und weist ein Convolutional Neural Network und/oder ein Deep Feed Forward Network auf.In a further embodiment, the machine learning method comprises a trained neural network that includes a set of program instruction blocks with pre-existing graphical program instructions for different applications of the automation system within the specific industrial domain. The neural network is designed as a deep neural network and comprises a convolutional neural network and/or a deep feedforward network.

Während der Analysephase kann das maschinelle Lernverfahren über Softwareprojekte des Herstellers der Automatisierungsanlage angelernt werden und als ein Basis-Training über die integrierte Entwicklungsumgebung bereitgestellt werden. Zudem kann das maschinelle Lernverfahren über Softwareprojekte des Betreibers der Automatisierungsanlage 100 angelernt oder ergänzt werden. Hierfür kann der Betreibers der Automatisierungsanlage die bereits angelernte integrierte Entwicklungsumgebung einsetzen und seine im Einsatz befindlichen Softwareprojekte analysieren. Dabei kann der Betreiber das Ergebnis des Anlernens des maschinellen Lernverfahrens über die Cloud anderen Betreibern zur Verfügung stellen, ohne den Programmcode seiner Automatisierungsprojekte bekannt zu machen. Es können somit Unternehmens- und Domänenspezifische (HVAC - Heating, Ventilation, Air-Conditioning; Prozessautomatisierung, sowie Handhabung) - Erfolgsmodelle und Muster angelernt werden. Das maschinelle Lernverfahren findet Muster bezüglich der Verwendung von Geräten, Programmcodestrukturen und Parameter. Es werden beispielsweise Gerätebäume analysiert und mit Funktionen in grafischen Programmanweisungen korreliert. Für Elemente aus Herstellerbibliotheken werden Einstellparameter, wie beispielsweise Alarmschwellen und Regelparameter, ausgewertet.During the analysis phase, the machine learning process can be trained using software projects from the automation system manufacturer and provided as basic training via the integrated development environment. Furthermore, the machine learning process can be trained or supplemented using software projects from the operator of the automation system. For this purpose, the operator of the automation system can use the already trained integrated development environment and analyze their existing software projects. The operator can make the results of training the machine learning process available to other operators via the cloud without disclosing the program code of their automation projects. This allows company- and domain-specific (HVAC - Heating, Ventilation, Air Conditioning; Process Automation; and Handling) success models and patterns to be trained. The machine learning process finds patterns regarding the use of devices, program code structures, and parameters. For example, device trees are analyzed and correlated with functions in graphical program instructions. Setting parameters, such as alarm thresholds and control parameters, are evaluated for elements from manufacturer libraries.

In einer Ausführungsform werden die bestimmten auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C in einer integrierten Entwicklungsumgebung ausgegeben. Die auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C werden im entsprechenden Kontext durch ein Triggersignal ausgegeben. Die auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C können im CFC/FUP entsprechende Verbindungen zwischen den Eingängen ai1, ai2, bi1 und Ausgängen ao1, bo1 einzelner und/oder mehrerer Programmanweisungen A, C (Funktionsblöcke) umfassen. In einer weiteren Ausführungsform können die bestimmten auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C Programmanweisungsparameter der Funktionsblöcke umfassen. In einer weiteren empfohlenen Ausführungsform können die bestimmten auf Funktionalität verifizierten zweiten grafischen Programmanweisungen C empfohlene Entwicklungs- und Umrechnungseinheiten umfassen, von/in beispielsweise unterschiedlichen Masssystem, wie ein metrisches System, ein Imperial System etc mit den entsprechenden Umrechnungskonstanten.In one embodiment, the determined second graphical program instructions C verified for functionality are output in an integrated development environment. The second graphical program instructions C verified for functionality are stored in the corresponding Context is output by a trigger signal. The second graphical program instructions C verified for functionality can comprise corresponding connections in the CFC/FUP between the inputs a i1 , a i2 , b i1 and outputs a o1 , b o1 of individual and/or multiple program instructions A, C (function blocks). In a further embodiment, the specific second graphical program instructions C verified for functionality can comprise program instruction parameters of the function blocks. In a further recommended embodiment, the specific second graphical program instructions C verified for functionality can comprise recommended development and conversion units, from/to, for example, different measurement systems, such as a metric system, an imperial system, etc., with the corresponding conversion constants.

In einer weiteren Ausführungsform können für die im Gerätebaum definierten Feldgeräte der Automatisierungsanlage 100 Vorschläge für Gateways, weitere häufig genutzte technische Komponenten, Geräteparameter entsprechend einem ausgewählten Feldbus, der Modulkonfiguration der speicherprogrammierbaren Steuerung 20 und/oder der Automatisierungssoftware gemacht werden. In einer Ausführungsform kann die auf Funktionalität verifizierte, zweite grafische Programmanweisungen C bestimmt werden, die Funktionsblöcke zur Interaktion mit den technischen Komponenten im Gerätebaum umfassen.In a further embodiment, suggestions for gateways, other frequently used technical components, device parameters according to a selected fieldbus, the module configuration of the programmable logic controller 20, and/or the automation software can be made for the field devices of the automation system 100 defined in the device tree. In one embodiment, the second graphical program instructions C, verified for functionality, can be determined, which include function blocks for interacting with the technical components in the device tree.

In vorteilhafter Weise können die auf Funktionalität verifizierten, zweiten grafischen Programmanweisungen C als Anwendungshinweise, die dem Softwareprojekt entsprechen, angezeigt und zur Optimierung des Softwareprojektes verwendet und bereitgestellt werden. Insbesondere können Vorschläge ermittelt werden, wie bestimmte Strukturen und/oder Substrukturen in den Programmanweisungen des Softwareprojektes erweitert und/oder ersetzt (verbessert) werden können. Ferner kann die Vollständigkeit der vom Programmierer gewählten Parameter verifiziert werden. Zudem wird sichergestellt, dass die gewählten Parameter nicht den (gespeicherten) Vorgaben einer Best-Practice widersprechen.Advantageously, the second graphical program instructions C, verified for functionality, can be displayed as application notes corresponding to the software project and used and provided to optimize the software project. In particular, suggestions can be determined as to how certain structures and/or substructures in the program instructions of the software project can be expanded and/or replaced (improved). Furthermore, the completeness of the parameters selected by the programmer can be verified. Furthermore, it is ensured that the selected parameters do not contradict the (stored) specifications of a best practice.

In 3 ist ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens dargestellt. Das computerimplementierte Verfahren umfasst bei der dargestellten Ausführungsform mehrere Schritte. In einem ersten Schritt S1 wird wenigstens eine erste grafische Programmanweisung A für wenigstens eine speicherprogrammierbare Steuerung 20 der Automatisierungsanlage 100 (vgl. 1) der spezifischen industriellen Domäne erfasst. In einem zweiten Schritt S2 wird die erfasste wenigstens eine erste grafische Programmanweisung A durch mindestens ein in einer Speichereinheit gespeichertes maschinelles Lernverfahren ausgewertet, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung A diejenigen zweiten grafischen Programmanweisungen C für die speicherprogrammierbare Steuerung 20 der Automatisierungsanlage 100 innerhalb der spezifischen industriellen Domäne zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung A entspricht und/oder die erfasste wenigstens eine erste grafische Programmanweisung A ergänzt.In 3 A flowchart according to a preferred embodiment of the method according to the invention is shown. The computer-implemented method comprises several steps in the illustrated embodiment. In a first step S1, at least one first graphical program instruction A is generated for at least one programmable logic controller 20 of the automation system 100 (cf. 1 ) of the specific industrial domain. In a second step S2, the detected at least one first graphical program instruction A is evaluated by at least one machine learning method stored in a memory unit in order to determine, for the detected at least one first graphical program instruction A, those second graphical program instructions C for the programmable logic controller 20 of the automation system 100 within the specific industrial domain whose functionality corresponds to that of the detected at least one first graphical program instruction A and/or supplements the detected at least one first graphical program instruction A.

Durch die vorliegende Erfindung wird die gesamte software-technische Steuerung (im Folgenden auch: „Softwareprojekt“ genannt) der Automatisierungsanlage 100 mit den technischen Komponenten, deren Parametern und Programmen analysiert und ausgewertet. Diesbezüglich können während der Entwicklung der Software für eine Automatisierungsanlage 100 funktionelle und strukturelle Fehler in den bislang ausgewählten grafischen Programmanweisungen ermittelt und behoben werden, wodurch die Programmanweisungen ggf. effizienter und/oder fehlerfrei ausgeführt werden. Ferner erfolgt eine Korrelation zwischen den technischen Komponenten der Automatisierungsanlage und den grafischen Programmanweisungen für die speicherprogrammierbare Steuerung 20, womit für die Automatisierungsanlage 100 und deren technische Komponenten besonders angepasste und programmierte grafische Programmanweisungen verwendet werden. Weiterhin vorteilhaft ist, dass eine Unterstützung für das Erstellen von grafischen Programmanweisungen mit speziellen Funktionen für die industrielle Domäne erfolgt. Weiterhin können Domänen- und Betreiberübergreifende Best-Practice-Dateien erzeugt werden. Zusätzlich ist von Vorteil, dass Wissen über Parameter, die erst während der Inbetriebnahme bereitgestellt oder angepasst werden, in der Entwurfsphase eines nächsten Softwareprojektes wiederverwendet werden können.The present invention analyzes and evaluates the entire software-technical control system (hereinafter also referred to as the "software project") of the automation system 100, including the technical components, their parameters, and programs. In this regard, during the development of the software for an automation system 100, functional and structural errors in the previously selected graphical program instructions can be identified and corrected, which may result in the program instructions being executed more efficiently and/or error-free. Furthermore, a correlation is established between the technical components of the automation system and the graphical program instructions for the programmable logic controller 20, whereby specially adapted and programmed graphical program instructions are used for the automation system 100 and its technical components. Another advantage is that support is provided for creating graphical program instructions with special functions for the industrial domain. Furthermore, cross-domain and cross-operator best-practice files can be generated. Another advantage is that knowledge about parameters that are only provided or adjusted during commissioning can be reused in the design phase of a next software project.

Die integrierte Entwicklungsumgebung ist üblicherweise lokal on-site implementiert, um die Automatisierungsanlage 100 anzusteuern und einzurichten. Das maschinelle Lernverfahren muss nicht zwangsläufig auf derselben Recheneinheit implementiert sein und kann z.B. auf einem Server vorgehalten werden, auf den alle Betreiber von Automatisierungsanlagen Zugang haben. Diese zuletzt genannte Ausführungsform hat den Vorteil, dass ein Modell auch Betreiber-übergreifend angelernt werden kann. Somit kann das gelernte Wissen zwar in der Gruppe der Betreiber - sozusagen indirekt - verwendet werden, ohne dass ein Betreiber allerdings explizit seine Daten bzw. sein Know-How direkt oder unmittelbar an andere Betreiber zur Verfügung stellen muss. Das gelernte Wissen fließt somit in das Modell ein und kann zukünftig für das Bestimmen von funktional passenden zweiten Programmanweisungen verwendet werden und zwar direkt für denselben oder auch indirekt für fremde Betreiber („fremd“ meint hier, diejenigen Betreiber, deren Daten noch nicht verwendet worden sind, um das Modell anzulernen mit entsprechenden funktional passende Programmanweisungen).The integrated development environment is typically implemented locally on-site to control and configure the automation system 100. The machine learning method does not necessarily have to be implemented on the same processing unit and can, for example, be hosted on a server to which all operators of automation systems have access. This latter embodiment has the advantage that a model can also be trained across operators. Thus, the learned knowledge can be used within the group of operators - indirectly, so to speak - without an operator having to explicitly make their data or know-how available directly or immediately to other operators. The learned knowledge thus flows into the model and can be used in the future to determine functionally suitable second program instructions, either directly for the same operator or indirectly for external operators (“external” here means those operators whose data have not yet been used to train the model with corresponding functionally suitable program instructions).

In einer bevorzugten Ausführungsform kann eine verteilte Datenbank mit einem entsprechenden Datenbankmanagementsystem vorgehalten werden, in der das anwenderspezifische und domänen-spezifische Wissen jeweils für den Betreiber vorgehalten wird. Das verteilte Datenhaltungssystem kann dazu aus mehreren physisch voneinander getrennten Datenbanken bestehen, die unabhängig arbeiten und wie ein einziges logisches System erscheinen. Die einzelnen logischen Systeme sind über Netze miteinander verbunden. Die Steuerung aller Systemkomponenten erfolgt zentral von einem Distributed Database Management System (DDBMS). Das DDBMS-System sorgt für die Datenintegration und verwaltet die Daten der verteilten Lokalitäten zentral so, als ob es sich um Daten von einer einzelnen Lokalität handelt. Es synchronisiert die Daten auf der verteilten Datenbank periodisch, sorgt für das Updaten und Löschen von neuen Daten und das Löschen nicht mehr benötigter Daten. Somit ist gewährleistet, dass jeweils ein Betreiber nur Zugriff auf „seine“ Daten und nicht auf die der anderen Betreiber hat. Dennoch kann der Betreiber das maschinelle Lernverfahren für seine Anlagensteuerung nutzen, das auch mit „fremden“ Daten (Daten anderer Betreiber) trainiert und/oder angelernt worden ist, um die zweiten grafischen Programmanweisungen zu berechnen oder auszugeben.In a preferred embodiment, a distributed database can be maintained with a corresponding database management system, in which the user-specific and domain-specific knowledge is stored for the operator. The distributed data storage system can consist of several physically separate databases that operate independently and appear as a single logical system. The individual logical systems are connected to each other via networks. All system components are controlled centrally by a Distributed Database Management System (DDBMS). The DDBMS system ensures data integration and centrally manages the data from the distributed locations as if it were data from a single location. It periodically synchronizes the data on the distributed database, updates and deletes new data, and deletes data that is no longer required. This ensures that each operator only has access to "his" data and not to that of other operators. Nevertheless, the operator can use the machine learning process for his plant control, which has also been trained and/or taught with “external” data (data from other operators) to calculate or output the second graphical program instructions.

Das Verfahren zum Bereitstellen von funktionalitätsgeprüften Programmanweisungen kann zwei Stufen oder Phasen umfassen:

  1. 1. eine Anlern- oder Trainingsphase, in der das Modell gelernt wird bzw. in der maschinelle Lernverfahren angelernt wird.
  2. 2. Eine Ausführungsphase, in der das angelernte oder trainierte Modell angewendet und ausgeführt wird, z.B. in einer integrierten Entwicklungsumgebung zur Steuerung einer bestimmten Automatisierungsanlage.
The process for providing functionality-tested program instructions may include two stages or phases:
  1. 1. a learning or training phase in which the model is learned or in which machine learning methods are taught.
  2. 2. An execution phase in which the learned or trained model is applied and executed, e.g. in an integrated development environment for controlling a specific automation system.

In 4 ist eine schematische Darstellung des Programmierworkflow gemäß einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens dargestellt. In 4 bezeichnet Bezugszeichen A die erste grafische Programmanweisung. Bezugszeichen C bezeichnet die auf Funktionalität verifizierte, zweite grafische Programmanweisung. Die erste grafische Programmanweisung A wurde durch einen Programmierer eingegeben und in der integrierten Entwicklungsumgebung durch die vorliegende Erfindung erfasst. Für die Eingänge ai1 und ai2 der ersten grafischen Programmanweisung A kann der Programmierer einen Wert vorgeben. In einer Ausführungsform der vorliegenden Erfindung kann auf Anfrage oder automatisch im Hintergrund die erste grafische Programmanweisung A analysiert werden. Für den zweiten Eingang ai2 der ersten grafischen Programmanweisung A wurde über das maschinelle Lernverfahren bestimmt, dass beispielsweise mit „53%“ Wahrscheinlichkeit ein Parameterwert von „2047“ an dem zweiten Eingang ai2 der ersten grafischen Programmanweisung A angelegt werden sollte. Mit einer Wahrscheinlichkeit von „17%“ sollte ein Parameterwert von 1023 angelegt werden.In 4 A schematic representation of the programming workflow according to a preferred embodiment of the method according to the invention is shown. In 4 Reference symbol A denotes the first graphical program instruction. Reference symbol C denotes the second graphical program instruction verified for functionality. The first graphical program instruction A was entered by a programmer and recorded in the integrated development environment by the present invention. The programmer can specify a value for the inputs a i1 and a i2 of the first graphical program instruction A. In one embodiment of the present invention, the first graphical program instruction A can be analyzed on request or automatically in the background. For the second input a i2 of the first graphical program instruction A, it was determined via the machine learning method that, for example, with a probability of "53%" a parameter value of "2047" should be applied to the second input a i2 of the first graphical program instruction A. With a probability of "17%" a parameter value of 1023 should be applied.

In einer weiteren Ausführungsform kann der Programmierer in der integrierten Entwicklungsumgebung eine dritte grafische Programmanweisung B zu der ersten grafischen Programmanweisung A hinzufügen. Die Vorrichtung gemäß der vorliegenden Erfindung erkennt beispielsweise einen funktionellen oder strukturellen Zusammenhang zwischen der ersten Programmanweisung A und der dritten grafischen Programmanweisung B. Die integrierte Entwicklungsumgebung kann auf Anfrage, beispielsweise über eine Tastenkombination vorschlagen, den Ausgang ao1 der ersten grafischen Programmanweisung A mit dem ersten Eingang bi1 der dritten grafischen Programmanweisung B zu verbinden. Der Programmierer kann die Verknüpfungen der ersten grafischen Programmanweisung A und der dritten grafischen Programmanweisung B bestätigen oder ablehnen. Dies ist in der 4 durch das Bezugszeichen „?“ dargestellt.In a further embodiment, the programmer in the integrated development environment can add a third graphical program instruction B to the first graphical program instruction A. The device according to the present invention detects, for example, a functional or structural connection between the first program instruction A and the third graphical program instruction B. The integrated development environment can, upon request, for example via a key combination, suggest connecting the output a o1 of the first graphical program instruction A to the first input b i1 of the third graphical program instruction B. The programmer can confirm or reject the links between the first graphical program instruction A and the third graphical program instruction B. This is described in the 4 represented by the reference symbol “?”

In einer weiteren Ausführungsform wird die Kombination aus der ersten grafischen Programmanweisung A und der dritten grafischen Programmanweisung B durch die integrierte Entwicklungsumgebung auf Anfrage oder laufend automatisch analysiert. Über das maschinelle Lernverfahren wird bestimmt, dass eine auf Funktionalität verifizierte zweite grafische Programmanweisung C umfassend einen Funktionsblock, die Funktion der Kombination aus erster grafischer Programmanweisung A und der dritten grafischen Programmanweisungen C ausführen kann. Der Programmierer kann das Ersetzen der Anordnung bestehend aus der ersten grafischen Programmanweisung A und der dritten grafischen Programmanweisung B bestätigen oder ablehnen.In a further embodiment, the combination of the first graphical program instruction A and the third graphical program instruction B is analyzed automatically by the integrated development environment on demand or continuously. The machine learning method determines that a functionality-verified second graphical program instruction C comprising a function block can perform the function of the combination of the first graphical program instruction A and the third graphical program instruction C. The programmer can confirm or reject the replacement of the arrangement consisting of the first graphical program instruction A and the third graphical program instruction B.

BEZUGSZEICHENREFERENCE SYMBOL

11
VerfahrenProceedings
1010
Vorrichtungdevice
1111
ErfassungseinheitRegistration unit
1212
AuswerteeinheitEvaluation unit
1313
Speichereinheitstorage unit
2020
Speicherprogrammierbare SteuerungProgrammable logic controller
100100
Automatisierungsanlageautomation system
AA
erste grafische Programmanweisungfirst graphical program instruction
BB
dritte grafische Programmanweisungthird graphical program instruction
CC
zweite grafische Programmanweisungsecond graphical program instruction
S1, S2S1, S2
VerfahrensschritteProcedural steps

Claims (15)

Computerimplementiertes Verfahren (1) zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen (C) für eine in einer Automatisierungsanlage (100) innerhalb einer spezifischen industriellen Domäne verwendete speicherprogrammierbare Steuerung (20), umfassend die Schritte: - Erfassen (S1) von wenigstens einer ersten grafischen Programmanweisung (A) für wenigstens eine speicherprogrammierbare Steuerung (20) der Automatisierungsanlage (100); - Auswerten (S2) der erfassten wenigstens einen ersten grafischen Programmanweisung (A) durch mindestens ein in einer Speichereinheit gespeichertes maschinelles Lernverfahren, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung (A) diejenigen zweiten grafischen Programmanweisungen (C) als auf Funktionalität verifizierte zweite grafische Programmanweisungen (C) zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung (A) entspricht und/oder diese ergänzt, wobei das Auswerten (S2) eine Filterung von erfassten ersten grafischen Programmanweisungen (A) anhand von vorkonfigurierten Filterkriterien umfasst, indem Verwendungsmuster analysiert werden.Computer-implemented method (1) for providing functionality-verified second graphical program instructions (C) for a programmable logic controller (20) used in an automation system (100) within a specific industrial domain, comprising the steps of: - detecting (S1) at least one first graphical program instruction (A) for at least one programmable logic controller (20) of the automation system (100); - Evaluating (S2) the detected at least one first graphical program instruction (A) by at least one machine learning method stored in a memory unit in order to determine, for the detected at least one first graphical program instruction (A), those second graphical program instructions (C) as functionality-verified second graphical program instructions (C) whose functionality corresponds to that of the detected at least one first graphical program instruction (A) and/or supplements it, wherein the evaluation (S2) comprises filtering detected first graphical program instructions (A) based on preconfigured filter criteria by analyzing usage patterns. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Verfahren den Schritt umfasst: - Automatisches Erfassen der jeweiligen spezifischen industriellen Domäne basierend auf der erfassten wenigstens einen ersten Programmanweisung und/oder auf Basis über einer Benutzerschnittstelle eingegebenen Domänenangabe.Computer-implemented method according to Claim 1 , the method comprising the step of: - automatically detecting the respective specific industrial domain based on the detected at least one first program instruction and/or on the basis of domain information entered via a user interface. Computerimplementierte Verfahren nach einem der vorherigen Ansprüche, wobei das maschinelle Lernverfahren ein trainiertes neuronales Netzwerk umfasst, das über eine Menge von Programmanweisungsblöcken mit bereits vorliegenden grafischen Programmanweisungen für unterschiedliche Anwendungen der Automatisierungsanlage (100) innerhalb der spezifischen industriellen Domäne angelernt ist.Computer-implemented methods according to one of the preceding claims, wherein the machine learning method comprises a trained neural network which is trained over a set of program instruction blocks with already existing graphical program instructions for different applications of the automation system (100) within the specific industrial domain. Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche, wobei das maschinelle Lernverfahren über eine Korrelation wenigstens eines Gerätebaumes mit grafischen Programmanweisungen der Menge von Programmanweisungsblöcken trainiert wird, wobei der Gerätebaum Feldgeräte der Automatisierungsanlage (100) umfasst.Computer-implemented method according to one of the preceding claims, wherein the machine learning method is trained via a correlation of at least one device tree with graphical program instructions of the set of program instruction blocks, wherein the device tree comprises field devices of the automation system (100). Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche, wobei die Speichereinheit einen Server oder einen Serververbund als eine Cloud ausgebildet umfasst.Computer-implemented method according to one of the preceding claims, wherein the storage unit comprises a server or a server network designed as a cloud. Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche 3 bis 5, wobei das trainierte künstliche neuronale Netzwerk als ein Deep Neural Network ausgebildet ist und ein Convolutional Neural Network und/oder ein Deep Feed Forward Network aufweist.Computer-implemented method according to one of the preceding Claims 3 until 5 , wherein the trained artificial neural network is designed as a deep neural network and comprises a convolutional neural network and/or a deep feed forward network. Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche, wobei das maschinelle Lernverfahren ein Entscheidungsbaumverfahren umfasst.Computer-implemented method according to one of the preceding claims, wherein the machine learning method comprises a decision tree method. Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche, wobei das Auswerten (S2) erfolgt, indem funktionale Muster und/oder Programmanweisungsstrukturen und/oder Programmanweisungsparameter und/oder Programmregeln analysiert werden.Computer-implemented method according to one of the preceding claims, wherein the evaluation (S2) is carried out by analyzing functional patterns and/or program instruction structures and/or program instruction parameters and/or program rules. Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche, wobei das Auswerten (S2) dynamisch während der Laufzeit erfolgt und/oder durch ein Empfangen eines Interaktionssignals getriggert wird.Computer-implemented method according to one of the preceding claims, wherein the evaluation (S2) takes place dynamically during runtime and/or is triggered by receiving an interaction signal. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die bestimmten auf Funktionalität verifizierten zweiten Programmanweisungen (C) in einer integrierten Entwicklungsumgebung ausgegeben werden.Computer-implemented method according to one of the preceding claims, wherein the determined second program instructions (C) verified for functionality are output in an integrated development environment. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei zumindest eine der erfassten ersten grafischen Programmanweisungen (A) automatisch oder nach Erfassen eines Bestätigungssignals durch zumindest eine der bestimmten auf Funktionalität verifizierten zweiten grafischen Programmanweisungen (C) ersetzt oder ergänzt wird.Computer-implemented method according to one of the preceding claims, wherein at least one of the detected first graphical program instructions (A) is replaced or supplemented automatically or after detection of a confirmation signal by at least one of the specific second graphical program instructions (C) verified for functionality. Computerimplementiertes Verfahren nach einem der vorherigen Ansprüche, wobei die zumindest eine der erfassten ersten grafischen Programmanweisungen in einem in der integrierten Entwicklungsumgebung dargestellten Signalflussplan und/oder Funktionsplan zum Erstellen von Programmanweisung und/oder eines Programmanweisungsblockes ersetzt oder ergänzt wird.Computer-implemented method according to one of the preceding claims, wherein the at least at least one of the first graphical program instructions recorded is replaced or supplemented in a signal flow chart and/or function plan displayed in the integrated development environment for creating a program instruction and/or a program instruction block. Vorrichtung (10) zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen für eine in einer Automatisierungsanlage (100) innerhalb einer spezifischen industriellen Domäne verwendete speicherprogrammierbare Steuerung (20), wobei die Vorrichtung (10) umfasst: - eine Erfassungseinheit (11), die zum Erfassen von wenigstens einer ersten grafischen Programmanweisung (A) für wenigstens eine speicherprogrammierbare Steuerung (20) der Automatisierungsanlage (100) ausgebildet ist; - eine Auswerteeinheit (12) mit mindestens einem in einer Speichereinheit (13) der Auswerteeinheit (12) gespeicherten maschinellen Lernfahrens, das ausgebildet ist, um die erfasste wenigstens eine erste grafische Programmanweisung (A) auszuwerten, um zu der erfassten wenigstens einen ersten grafischen Programmanweisung (A) diejenigen zweiten grafischen Programmanweisungen (C) als auf Funktionalität verifizierte zweite grafische Programmanweisungen (C) zu bestimmen, deren Funktionalität derjenigen der erfassten wenigstens einen ersten grafischen Programmanweisung (A) entspricht und/oder diese ergänzt, wobei das Auswerten (S2) eine Filterung von erfassten ersten grafischen Programmanweisungen (A) anhand von vorkonfigurierten Filterkriterien umfasst, indem Verwendungsmuster analysiert werden..Apparatus (10) for providing functionality-verified second graphical program instructions for a programmable logic controller (20) used in an automation system (100) within a specific industrial domain, the apparatus (10) comprising: - an acquisition unit (11) configured to acquire at least one first graphical program instruction (A) for at least one programmable logic controller (20) of the automation system (100); - an evaluation unit (12) with at least one machine learning method stored in a memory unit (13) of the evaluation unit (12), which is designed to evaluate the detected at least one first graphical program instruction (A) in order to determine, for the detected at least one first graphical program instruction (A), those second graphical program instructions (C) as functionality-verified second graphical program instructions (C) whose functionality corresponds to that of the detected at least one first graphical program instruction (A) and/or supplements it, wherein the evaluation (S2) comprises filtering detected first graphical program instructions (A) based on preconfigured filter criteria by analyzing usage patterns. Computerprogramm mit Programmcode für das Ausführen eines Verfahrens (1) nach einem der vorherigen Verfahrensansprüche, wenn das Computerprogramm auf einem elektronischen Gerät ausgeführt wird.Computer program with program code for carrying out a method (1) according to one of the preceding method claims, when the computer program is executed on an electronic device. Verwendung eines Verfahrens (1) nach einem der vorherigen Verfahrensansprüche in einer integrierten Entwicklungsumgebung zum Bereitstellen von auf Funktionalität verifizierten zweiten grafischen Programmanweisungen (C) für eine speicherprogrammierbare Steuerung (20).Use of a method (1) according to one of the preceding method claims in an integrated development environment for providing second graphical program instructions (C) verified for functionality for a programmable logic controller (20).
DE102020102862.8A 2020-02-05 2020-02-05 Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality Active DE102020102862B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102020102862.8A DE102020102862B4 (en) 2020-02-05 2020-02-05 Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020102862.8A DE102020102862B4 (en) 2020-02-05 2020-02-05 Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality

Publications (2)

Publication Number Publication Date
DE102020102862A1 DE102020102862A1 (en) 2021-08-05
DE102020102862B4 true DE102020102862B4 (en) 2025-08-07

Family

ID=76853498

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020102862.8A Active DE102020102862B4 (en) 2020-02-05 2020-02-05 Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality

Country Status (1)

Country Link
DE (1) DE102020102862B4 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102023125802A1 (en) * 2023-09-22 2025-03-27 Beckhoff Automation Gmbh Method for generating a control program for an automation system and development environment
DE102023126332A1 (en) 2023-09-27 2025-03-27 Beckhoff Automation Gmbh Method for generating a control program for an automation system and development environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150205289A1 (en) * 2014-01-22 2015-07-23 Omax Corporation Generating optimized tool paths and machine commands for beam cutting tools
DE102017009807A1 (en) * 2016-10-28 2018-05-03 Fanuc Corporation Information processing apparatus
US20180129724A1 (en) * 2016-11-08 2018-05-10 Ebay Inc. Crowd assisted query system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150205289A1 (en) * 2014-01-22 2015-07-23 Omax Corporation Generating optimized tool paths and machine commands for beam cutting tools
DE102017009807A1 (en) * 2016-10-28 2018-05-03 Fanuc Corporation Information processing apparatus
US20180129724A1 (en) * 2016-11-08 2018-05-10 Ebay Inc. Crowd assisted query system

Also Published As

Publication number Publication date
DE102020102862A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
EP0852759B1 (en) Drafting method for industrial and building systems and computer-controlled planning system for use in said method
WO2003071455A2 (en) Engineering method and system for industrial automation systems
EP3446185B1 (en) Method and apparatus for designing a production process for producing a product composed of several part products
EP2330469B1 (en) Method and development environment for generating an executable total control program
DE102005055133A1 (en) System for machine-aided design of technical devices
DE102020102862B4 (en) Computer-implemented method, device, computer program and use of the method for providing graphical program instructions verified for functionality
WO2021104608A1 (en) Method for producing an engineering proposal for a device or plant
EP2414903A1 (en) Device and method for creating a process model
EP1137972B1 (en) Automation system for solving a technical-process task and corresponding method
DE102010033861A1 (en) On a formal analysis based development of requirements specifications
EP3617912A1 (en) Method and device for the computer-assisted generation of a component of a technical system
WO2014154281A1 (en) Object-based configuration of a process and/or production installation
WO2025219164A1 (en) Method for generating a control program for a programmable logic controller, and automation system
DE68905848T2 (en) STORAGE PROGRAMMABLE CONTROL WITH STRUCTURED PROGRAMMING LANGUAGE.
EP3712720B1 (en) Method and device for controlling a technical system using an adaptive simplex architecture
DE10041111A1 (en) Reworking computer program acquired in programming language involves computer searching program for predefined rule damage, computing potential correction, altering program
CN117182910A (en) Intelligent assembly robot assembly control method and control system
EP3812860B1 (en) Production control system
EP3907574A1 (en) Method for generating an explanation for a decision of a manufacturing control system
EP4083719A1 (en) Generation of a computer-aided simulation model for an automation system
DE102016121788A1 (en) Configuration of an automation system
EP2930624A1 (en) Method and device for generating and processing test cases
EP4293443A1 (en) Method for the integration of function blocks with artificial intelligence
DE102024202541A1 (en) Apparatus and method for distributed execution of a control program for a control device
EP3961517A1 (en) Method and system for creating an industrial solution with artificial intelligence

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division