Automatisierungssystem mit frameworkbasierter Steuerung Automation system with framework-based control
[0001 ] Die vorliegende Erfindung betrifft ein Automatisierungssystem mit einer Anzahl von zu steuernden Objekten, wobei das Automatisierungssystem eine frameworkbasierte Steuerung zur Steuerung von Grundfunktionen mindestens eines Objekts der An- zahl von Objekten mittels objektspezifischer Funktionseinheiten umfasst, wobei die Steuerung objektunabhängig ausgeführt ist und standardisierte Schnittstellen zur kommunikationstechnischen Einbindung der objektspezifischen Funktionseinheiten mittels vorkonfigurierter Funktionsaufrufe umfasst.[0001] The present invention relates to an automation system with a number of objects to be controlled, wherein the automation system comprises a framework-based control for controlling basic functions of at least one object of the number of objects by means of object-specific functional units, wherein the control is object-independent and standardized interfaces for the communication technology integration of the object-specific functional units by means of preconfigured function calls.
[0002 ] Aufgrund einer ständig steigenden Komplexität und zunehmend divergie- render Modellvarianten von automatisierten Anlagen bzw. Automatisierungssystemen nehmen Kosten für deren Wartung, Weiterentwicklung und Verwaltung stetig zu. Ebenso steigen die Kosten und der Zeitbedarf für eine Erstellung immer größerer und komplexerer[0002] Due to a constantly increasing complexity and increasingly divergent model variants of automated systems or automation systems, costs for their maintenance, further development and administration are steadily increasing. Likewise, the cost and time required to build ever larger and more complex
Steuerungsprogramme sowie die hierzu notwendige Ausbildung von Programmierern undControl programs and the necessary training of programmers and
Instandhaltern. Gleichzeitig besteht ein Wunsch der Kunden nach kürzeren Lieferzeiten bei gleichzeitig höherer Funktionalität und größerer Flexibilität der Produkte.Maintainers. At the same time there is a desire of the customers for shorter delivery times with higher functionality and greater flexibility of the products.
[0003 ] Eine Verringerung des hieraus entstehenden Zeit- und Kostendrucks erfordert eine Vereinfachung und Beschleunigung des Entwicklungsprozesses. Hierzu bieten die gängigen Entwicklungs- und Programmierwerkzeuge der Automatisierungstechnik jedoch keine ausreichende Unterstützung, um einen gesamten Entwicklungszyklus eines Au- tomatisierungssystems von der ersten Planung bis zur Inbetriebnahme und Abnahme durch den Kunden durchgängig zu unterstützen und zu optimieren.A reduction of the resulting time and cost pressure requires a simplification and acceleration of the development process. However, the current development and programming tools of automation technology do not provide sufficient support for consistently supporting and optimizing an entire development cycle of an automation system from initial planning to commissioning and acceptance by the customer.
[0004 ] Im Bereich der Automatisierungstechnik besteht daher ein Bestreben, Analyse-, Design-, Dokumentations- und Codierungswerkzeuge bis hin zu Codegeneratoren und automatischen Testsystemen aus dem eigentlich fernen Bereich der Programmier- hochsprachen der allgemeinen Softwareentwicklung für den Automatisierungsbereich zu nutzen, die im Bereich der allgemeinen Softwareentwicklung bereits erfolgreich zu Optimierungen beigetragen haben. Hierbei haben sich insbesondere objektorientierte Programmiersprachen und Werkzeuge als vorteilhaft erwiesen. Diese sind jedoch im Bereich der Automatisierungstechnik praktisch unbekannt, da es hier keine vergleichbaren Pendants gibt und die Werkzeuge der allgemeinen Softwareentwicklung in der Regel nicht identisch übernommen werden können.
[0005] Dies liegt darin begründet, dass im Bereich der Automatisierungstechnik bisher hauptsächlich sogenannte speicherprogrammierbare Steuerungen (SPS) eingesetzt werden, deren Programmiersprachen keine den Programmierhochsprachen der allgemeinen Softwareentwicklung vergleichbare objektorientierte Sprachkonzepte bzw. entspre- chende Werkzeuge umfassen. Teilweise gibt es bereits Bestrebungen, objektorientierte Sprachmerkmale (Sprachfeatures) und Werkzeuge auch in den Programmiersprachen der SPS, wie z.B. IEC 61131 ST, aufzunehmen. Erste Bemühungen diese Technologie im Automatisierungsbereich einzusetzen, werden bspw. mit dem Software-Entwicklungssystem „CodeSys 3.0" des Unternehmen 3S Smart Software Solutions GmbH unternommen, das sich momentan jedoch noch in der Entwicklungs- und Erprobungsphase befindet.In the field of automation technology, therefore, there is an effort to analyze, design, documentation and coding tools to code generators and automatic test systems from the actually distant area of programming high-level languages of general software development for the automation sector to use in the field the general software development have already successfully contributed to optimizations. In particular, object-oriented programming languages and tools have proven to be advantageous. However, these are virtually unknown in the field of automation technology, since there are no comparable counterparts here and the tools of general software development generally can not be adopted identically. This is due to the fact that in the field of automation technology so far mainly so-called programmable logic controllers (PLCs) are used whose programming languages do not include the programming languages of general software development comparable object-oriented language concepts or corresponding tools. In some cases, there are already efforts to include object-oriented language features (voice features) and tools in the programming languages of the PLC, such as IEC 61131 ST. Initial efforts to use this technology in the field of automation, for example, are made with the software development system "CodeSys 3.0" of the company 3S Smart Software Solutions GmbH, which is currently still in the development and testing phase.
[0006] In der Automatisierungstechnik werden in der Regel gesamte Produktlinien mit entsprechenden Steuerungen ausgestattet. Hierbei umfassen die Produktlinien meist mehrere (1 bis ca. 10) verschiedene Aggregate bzw. Maschinen, die miteinander über Transportmodule verbunden sind, so dass ein Produkt die einzelnen Maschinen nacheinander durchlaufen kann. Jede einzelne dieser Maschinen hat eine spezifische Aufgabe zu erfüllen, wie bspw. Reinigen, Füllen, bzw. Verpacken eines entsprechenden Produkts. Trotz dieser unterschiedlichen Aufgaben der einzelnen Maschinen und damit auch unterschiedlichen Anforderungen an eine jeweilige Steuerung der Maschinen und somit unterschiedlichen Steuerungen innerhalb einer entsprechenden Produktlinie besteht ein Ansatz darin, für die Automatisierung derartiger Produktlinien einen großen Anteil von wiederverwendbaren Komponenten zu generieren und bereitzustellen, um einen eventuell erforderlichen Entwicklungs- und Änderungsaufwand der entsprechenden Produktlinien zu minimieren. Dies kann neben einer Verwendung gleicher mechanischer und elektronischer Bauteile in den Maschinen und einer Modularisierung der Maschinen zur Verwendung gleichartiger Module in verschiedenen Maschinen insbesondere auch eine Modularisierung der jeweiligen Steuerung umfassen. Hierzu soll eine entsprechend objektorientiert strukturierte Steuerung beitragen.In automation technology, as a rule, entire product lines are equipped with appropriate controls. In this case, the product lines usually comprise several (1 to about 10) different units or machines, which are connected to one another via transport modules, so that a product can pass through the individual machines in succession. Each of these machines has a specific task to perform, such as cleaning, filling, or packaging a corresponding product. Despite these different tasks of the individual machines and thus also different demands on a respective control of the machines and thus different controls within a corresponding product line, one approach is to generate and provide a large proportion of reusable components for the automation of such product lines to one eventually minimize the development and modification costs of the corresponding product lines. In addition to using the same mechanical and electronic components in the machines and modularizing the machines to use similar modules in different machines, this can include, in particular, modularization of the respective controller. For this purpose, a corresponding object-oriented structured control should contribute.
[ 0007] Es ist somit ein Ziel, Vorteile der objektorientierten Programmiersprachen in der Automatisierungstechnik nutzbar zu machen und verfügbare objektorientierte Werk- zeuge (sogenannte OO-Tools) und entsprechende Mechanismen für die Automatisierungstechnik zu übernehmen. Es besteht daher die Absicht, Steuerungen für die Automatisierungstechnik objektorientiert zu konzipieren, obwohl die verwendeten Programmiersprachen diesen Ansatz nicht explizit unterstützen.
[0008] Des weiteren weist die Programmierung von Maschinen im Bereich der Automatisierungssysteme den Nachteil auf, dass selbst einfache Programmfunktionen oft erst dann getestet werden können, wenn die eigentliche, zu programmierende Maschine (weitestgehend) fertig gestellt ist. Um dies zu umgehen, werden üblicherweise Testumge- bungen erstellt, in denen Teile der Programme isoliert getestet werden können. Diese Tests beziehen sich jedoch größtenteils auf einzelne Baugruppen, so dass das Zusammenwirken mehrerer Baugruppen bis hin zu komplexen Funktionen oder gar einer vollständigen Maschine bisher kaum möglich ist. Zwar gibt es auch spezialisierte Programme, doch setzten diese SpezialWissen des Benutzers voraus, benötigen eine hinreichend ge- nau Beschreibung der Maschine und ihres Verhaltens und müssen darüber hinaus über geeignete Kommunikationsmittel (üblicherweise entweder direkte Simulationen der Ein- und Ausgaben (lO's) oder proprietäre Protokolle) mit der Steuerung verbunden werden. Dies ist sehr aufwändig und wird bisher lediglich in Einzelfällen für einzelne Spezialma- schinen oder zu Demonstrationszwecken durchgeführt. Jedoch ist diese Vorgehensweise für eine effiziente Inbetriebnahme oder Software-Änderungen, insbesondere für den Einzelmaschinenbau im Bereich der Automatisierungssysteme nicht praktikabel.It is thus an object to make use of advantages of object-oriented programming languages in automation technology and to take over available object-oriented tools (so-called OO tools) and corresponding mechanisms for automation technology. It is therefore the intention to design controls for automation technology object-oriented, although the programming languages used do not explicitly support this approach. Furthermore, the programming of machines in the field of automation systems has the disadvantage that even simple program functions can often only be tested when the actual machine to be programmed (as far as possible) is completed. To avoid this, test environments are usually created in which parts of the programs can be tested in isolation. However, these tests largely refer to individual assemblies, so that the interaction of several assemblies up to complex functions or even a complete machine is hardly possible so far. Although there are also specialized programs, these require the user's special knowledge, require a sufficiently detailed description of the machine and its behavior, and must also have suitable means of communication (usually either direct simulations of inputs and outputs (lO's) or proprietary protocols ) are connected to the controller. This is very time-consuming and is so far only carried out in individual cases for individual special machines or for demonstration purposes. However, this procedure is not practical for efficient commissioning or software changes, especially for single machine construction in the field of automation systems.
[0009] Es ist somit außerdem ein Ziel, eine einfache Simulations- und Testfunktion für Einzelmaschinen und Automatisierungssysteme bzw. deren Komponenten bereitzustellen.It is therefore also an object to provide a simple simulation and test function for individual machines and automation systems or their components.
Zusammenfassung der ErfindungSummary of the invention
[ 0010 ] Hierzu wird erfindungsgemäß ein Automatisierungssystem mit einer Anzahl von zu steuernden Objekten bereitgestellt, wobei das Automatisierungssystem eine frameworkbasierte Steuerung zur Steuerung von Grundfunktionen mindestens eines Ob- jekts der Anzahl von Objekten mittels objektspezifischer Funktionseinheiten umfasst. Die Steuerung ist objektunabhängig ausgeführt und umfasst außerdem standardisierte Schnittstellen zur kommunikationstechnischen Einbindung der objektspezifischen Funktionseinheiten mittels vorkonfigurierter Funktionsaufrufe. Jede Funktionseinheit ist mindestens einem der Objekte zugeordnet und mittels objektspezifischer Steuerfunktionen zum Ansteu- ern der jeweiligen Grundfunktion des jeweils zugeordneten Objekts konfiguriert. Des weiteren ist jedes Objekt aus der Anzahl von Objekten mittels der zugeordneten objektspezifischen Funktionseinheiten in der Steuerung abgebildet bzw. virtualisiert und die Objekte der Anzahl von Objekten sind mindestens während eines Betriebszustandes des Automatisie-
rungssystems ausschließlich von der frameworkbasierten Steuerung mittels der objektspezifischen Funktionseinheiten ansprechbar und steuerbar. Außerdem umfasst jede der Funktionseinheiten ein in der jeweiligen Funktionseinheit integriertes Simulationsmodul mit mindestens einer Simulationsfunktion und ist wahlweise zum Ausführen der objektspezifi- sehen Steuerfunktion oder zum Ausführen der mindestens einen Simulationsfunktion konfiguriert.[0010] For this purpose, an automation system with a number of objects to be controlled is provided according to the invention, wherein the automation system comprises a framework-based control for controlling basic functions of at least one object of the number of objects by means of object-specific functional units. The control is object-independent and also includes standardized interfaces for communication-technical integration of the object-specific functional units by means of preconfigured function calls. Each functional unit is assigned to at least one of the objects and configured by means of object-specific control functions for controlling the respective basic function of the respectively assigned object. Furthermore, each object from the number of objects is mapped or virtualized in the controller by means of the assigned object-specific functional units, and the objects of the number of objects are at least during an operating state of the automation system. system can only be addressed and controlled by the framework-based control by means of the object-specific functional units. In addition, each of the functional units comprises a simulation module integrated in the respective functional unit with at least one simulation function and is optionally configured to execute the object-specific control function or to execute the at least one simulation function.
[0011 ] Es wird somit ein Automatisierungssystem mit mit einer Anzahl von zu steuernden Objekten beschrieben. Dieses System kann bspw. eine Produktionslinie mit unterschiedlichen Objekten sein, wie beispielsweise Maschinen, Plattformen oder anderen Hardware-Komponenten, die jeweils mindestens eine Grundfunktion ausführen können. Unter Grundfunktionen sind in diesem Zusammenhang einfache Funktionsschritte eines Objekts, wie bspw. ein Öffnen und Schließen von Ventilen oder ein An- oder Abschalten eines Motors, zu verstehen. Des weiteren basiert die Steuerung für das Automatisierungssystem auf einem sog. „Framework". Dieses Framework stellt eine Rahmenstruktur bereit, die objektunabhängig ausgeführt ist. Dies bedeutet, dass diese objektunabhängige Rahmenstruktur universell ausgeführt und somit für unterschiedliche Objekte eingesetzt werden kann, um jeweils die Grundfunktionen der entsprechenden Objekte (mittelbar) anzusteuern. Zur direkten Ansteuerung der Objekte bzw. deren Grundfunktionen kommen objektspezifische Funktionseinheiten zum Einsatz, die über vorkonfigurierte Funktionsaufrufe bereitgestellt und eingebunden werden, wobei die objektspezifischen Funktionseinheiten extern vorkonfiguriert hinterlegt und speziell für das jeweilige Objekt konzipiert sind. Hierzu umfassen die Funktionseinheiten die objektspezifischen Steuerfunktionen, die ein Ansteuern der jeweiligen Grundfunktion des jeweiligen Objekts ermöglichen und daher individuell an das Objekt und die jeweilige Grundfunktion angepasst sein müssen. Die Funktionsein- heiten sind somit mindestens einem speziellen Objekt zugeordnet, für das sie konfiguriert wurden. Werden mehrere übereinstimmende Objekte in dem Automatisierungssystem verwendet, so kann die entsprechende Funktionseinheit natürlich mehrmals für jedes dieser Objekte eingesetzt werden.Thus, an automation system with a number of objects to be controlled is described. This system may, for example, be a production line with different objects, such as machines, platforms or other hardware components, each capable of performing at least one basic function. Basic functions in this context are simple functional steps of an object, such as, for example, an opening and closing of valves or an activation or deactivation of an engine. Furthermore, the control system for the automation system is based on a so-called "framework." This framework provides a frame structure that is object-independent, meaning that this object-independent frame structure can be executed universally and thus used for different objects, in each case the basic functions To directly control the objects or their basic functions, object-specific functional units are used that are provided and integrated via preconfigured function calls, the object-specific functional units being stored externally preconfigured and designed specifically for the respective object the functional units the object-specific control functions, which enable a control of the respective basic function of the respective object and therefore individually adapted to the object and the respective basic function have to be. The functional units are thus assigned to at least one specific object for which they have been configured. Of course, if several matching objects are used in the automation system, the corresponding functional unit can be used several times for each of these objects.
[0012 ] Die beschriebene Trennung der objektunabhängigen Steuerung von den objektspezifischen Funktionseinheiten bedeutet also, dass die jeweiligen objektspezifischen Funktionseinheiten nicht im eigentlichen Framework-Quelltext der Steuerung hinterlegt sind. Diese weist lediglich an vordefinierten Stellen entsprechende Funktionsaufrufe als Schnittstellen auf, denen dann die objektspezifischen Funktionseinheiten zuzuordnen sind bzw. zugeordnet werden. Somit muss die Steuerung die Funktionseinheiten selbst nicht kennen. Je nach anzusteuerndem Objekt bzw. anzusteuernden Objekten sind die ob-
jektspezifischen Funktionseinheiten entsprechend austauschbar. Die objektspezifischen Funktionseinheiten geben insbesondere vor, wann bspw. welche Grundfunktion welche Aufgabe für welche Zeitdauer ausführen soll. Sie stellen damit eine speziell für das jeweilige Objekt konzipierte Steuerungsfunktion bereit, die die durch die Rahmenstruktur gesteu- erten Grundfunktionen entsprechend koordinieren.The described separation of the object-independent control of the object-specific functional units thus means that the respective object-specific functional units are not stored in the actual framework source code of the controller. This has only at predefined places corresponding function calls as interfaces, which are then assigned to the object-specific functional units or are assigned. Thus, the controller does not need to know the functional units themselves. Depending on the object to be controlled or the objects to be controlled, the objec- ject-specific functional units accordingly interchangeable. The object-specific functional units specify, in particular, when, for example, which basic function should perform which task for which time period. They thus provide a control function specially designed for the respective object, which coordinate the basic functions controlled by the frame structure accordingly.
[0013 ] Mittels der objektspezifischen Funktionseinheiten und der definierten Schnittstellen wird jedes anzusteuernde Objekt des Automatisierungssystems in deren Steuerung abgebildet und virtualisiert. Dies bedeutet, dass alle zu steuernden Hardware- Komponenten bzw. Objekte zumindest im Umfang der zu steuernden Grundfunktionen vollständig in der Steuerung berücksichtigt sind und über diese ansprechbar und steuerbar sind. Es gibt also keine zu steuernde Hardware-Komponente bzw. kein zu steuerndes Objekt auf die bzw. auf das von außerhalb der Steuerung zugegriffen werden soll. Die gesamte Kontrolle über die zu steuernden Objekte liegt also bei der Steuerung, so dass zumindest während eines Betriebs des Automatisierungssystems die Objekte ausschließlich von der frameworkbasierten Steuerung mittels der Funktionseinheiten ansprechbar und steuerbar sind. Dies ist insbesondere für den nachfolgend diskutierten Aspekt der Simulation von Bedeutung. Auch für einen Wechsel von Objekten des Automatisierungssystems ist dieser Aspekt relevant, da aufgrund des Aufbaus lediglich die Funktionseinheiten der geänderten Objekte individuell angepasst werden müssen, jedoch die frameworkbasierte Steuerung unverändert bleiben kann. Dieser Aspekt wird nachfolgend noch detaillierter dargelegt.By means of the object-specific functional units and the defined interfaces, each object of the automation system to be controlled is imaged and virtualized in its control. This means that all the hardware components or objects to be controlled are fully taken into account in the control, at least to the extent of the basic functions to be controlled, and can be addressed and controlled by them. There is thus no hardware component to be controlled or no object to be controlled which is to be accessed from outside the controller. The entire control over the objects to be controlled is therefore in the control, so that at least during operation of the automation system, the objects are accessible and controllable only by the framework-based control means of the functional units. This is particularly important for the aspect of the simulation discussed below. This aspect is also relevant for a change of objects of the automation system, since due to the structure, only the functional units of the changed objects must be individually adapted, but the framework-based control can remain unchanged. This aspect will be explained in more detail below.
[0014 ] Darüber hinaus umfasst jede Funktionseinheit ein Simulationsmodul mit mindestens einer Simulationsfunktion und ist wahlweise zum Ausführen der objektspezifischen Steuerfunktion oder zum Ausführen der mindestens einen Simulationsfunktion konfiguriert. Dies bedeutet, dass jede Funktionseinheit eine Simulationseigenschaft aufweist und eine Auswahl getroffen werden kann, ob die in der Funktionseinheit integrierte Steuerfunktion oder die Simulationsfunktion ausgeführt werden soll. Die Simulationsfunktion kann derart gestaltet sein, dass in einem Simulationsbetrieb die Funktionseinheit bzw. das Simulationsmodul Befehle zur Ansteuerung des zugeordneten Objekts abfängt, verarbeitet und Signale bereitstellt, die in einem Normalbetrieb von dem zu steuernden Objekt bereitge- stellt werden. Dem Simulationsmodul kommt also die Aufgabe zu, den übergeordneten Instanzen der Steuerung das Vorhandensein des realen Objekts zu simulieren, so dass diese übergeordneten Instanzen vermeintlich über die Steuerung mit dem simulierten Objekt kommunizieren, ohne zu bemerken, dass dieses angesprochene Objekt nicht real existiert oder nicht tatsächlich angesprochen sondern lediglich simuliert wird. Dadurch ist es mög- lieh, jedes beliebige Objekt des Automatisierungssystems zu simulieren, ohne eine Simula-
tionsfunktion in der frameworkbasierten Steuerung selbst vorzusehen. Selbstverständlich können auch mehrere Objekte gleichzeitig simuliert werden, so dass es auch möglich ist, bei Bedarf die gesamte Automatisierungsanlage zu simulieren.In addition, each functional unit comprises a simulation module with at least one simulation function and is optionally configured to execute the object-specific control function or to execute the at least one simulation function. This means that each functional unit has a simulation property and a selection can be made as to whether the control function or the simulation function integrated in the functional unit is to be executed. The simulation function can be configured in such a way that in a simulation operation the functional unit or the simulation module intercepts and processes commands for controlling the assigned object and provides signals which are provided in a normal operation by the object to be controlled. The simulation module thus has the task of simulating the existence of the real object to the superordinate instances of the control, so that these higher-level instances supposedly communicate with the simulated object via the control, without noticing that this addressed object does not actually exist or does not actually exist addressed but only simulated. This makes it possible to simulate any object of the automation system without a simulation. tion function in the framework-based control itself. Of course, several objects can be simulated simultaneously, so that it is also possible to simulate the entire automation system if necessary.
[0015 ] Entsprechend einer Ausführungsform des Automatisierungssystems wird in der Funktionseinheit definiert, ob das Ausführen der objektspezifischen Steuerfunktion oder das Ausführen der mindestens einen Simulationsfunktion ausgewählt wird. Dies bedeutet, dass nicht die frameworkbasierte Steuerung vorgibt, ob eine Simulation des zugeordneten Objekts ablaufen oder das Objekt tatsächlich angesprochen und gesteuert werden soll, sondern die entsprechende Funktionseinheit dies selbst entscheidet. Die Simula- tion kann somit ohne Kenntnis der Steuerung durchgeführt werden. Als Kriterien für diese Auswahl können bspw. externe Ereignisse oder entsprechender Parametrierungen vorgesehen sein. Alternativ ist es aber ebenso möglich, eine entrsprechende Auswahl über die frameworkbasierte Steuerung vorzugeben. Des weiteren können selbstverständlich mehrere Simulationsfunktionen in dem jeweiligen Simulationsmodul vorgesehen sein, die je nach Bedarf für unterschiedliche Simulationsszenarien ausgewählt oder auch miteinander kombiniert werden können. Auch können bspw. mehrere Simulationsfunktionen in einer Bibliothek zusammengefasst und in dem jeweiligen Simulationsmodul hinterlegt werden. Der Aspekt der Simulation wird nachfolgend noch im Detail und in allgemeinerer Form diskutiert.According to an embodiment of the automation system is defined in the functional unit, whether the execution of the object-specific control function or the execution of the at least one simulation function is selected. This means that it is not the framework-based control that determines whether a simulation of the assigned object should take place or the object should actually be addressed and controlled, but the corresponding functional unit decides this itself. The simulation can thus be carried out without knowledge of the control. As criteria for this selection, for example, external events or corresponding parameterizations can be provided. Alternatively, it is also possible to specify an appropriate selection via the framework-based control. Furthermore, of course, several simulation functions can be provided in the respective simulation module, which can be selected as needed for different simulation scenarios or combined with each other. Also, for example, several simulation functions can be combined in a library and stored in the respective simulation module. The aspect of the simulation is discussed below in more detail and in more general terms.
[0016] Gemäß einer Ausführungsform erfolgt die Einbindung der objektspezifischen Funktionseinheiten bei einem Start des Automatisierungssystems, d.h. zur Startzeit des Systems. Hierbei werden die Funktionseinheiten anhand von Konfigurationsparametern in die Steuerung eingelesen oder in deren Quelltext eingefügt und anschließend die Steuerung gestartet.According to one embodiment, the integration of the object-specific functional units occurs at a start of the automation system, i. at the start time of the system. Here, the functional units are read into the controller based on configuration parameters or inserted into their source code and then started the controller.
[0017] Wie voranstehend dargestellt, umfasst die frameworkbasierte Steuerung vorkonfigurierte Funktionsaufrufe, die als Eintrittspunkte bzw. als Schnittstellen zur kommunikationstechnischen Einbindung der objektspezifischen Funktionseinheiten fungieren. Die entsprechenden Positionen der Funktionsaufrufe müssen daher bei der Erstellung der Steuerung identifiziert und ausgebildet bzw. spezifiziert und vorkonfiguriert werden. An- schließend erfolgt eine Implementierung bspw. eines Standardalgorithmus in die Steuerung, wie bspw. eine Implementierung des sogenannten OMAC-Models (Open Modular Architecture Control), der für alle Maschinen identisch ist. Somit kann eine einfache Übertragbarkeit auf andersartige Objekte realisiert werden.
[0018] Da die frameworkbasierte Steuerung unabhängig von dem tatsächlichen Objekt ist, kann bei einer Änderung, Erweiterung oder Fehlerbeseitigung der reine frameworkbasierte Steuerungsanteil jederzeit für eine beliebige Anzahl unterschiedlicher Maschinen einer Produktionslinie getrennt von objektspezifischen Funktionseinheiten für alle Objekte bspw. im Rahmen eines "Updates" bzw. einer Aktualisierung modifiziert werden. Es besteht hierbei keine Gefahr Änderungen in den externen objektspezifischen Funktionseinheiten oder funktionsspezifischen Modulen vorzunehmen, da diese außerhalb der frameworkbasierten Steuerung angeordnet sind.As described above, the framework-based control comprises preconfigured function calls, which function as entry points or as interfaces for the communication-technical integration of the object-specific functional units. The corresponding positions of the function calls must therefore be identified and designed or specified and preconfigured when the controller is created. Subsequently, an implementation, for example, of a standard algorithm into the controller takes place, such as, for example, an implementation of the so-called OMAC model (Open Modular Architecture Control), which is identical for all machines. Thus, a simple transferability to different types of objects can be realized. Since the framework-based control is independent of the actual object, in a change, extension or error correction, the pure framework-based control component at any time for any number of different machines of a production line separated from object-specific functional units for all objects, for example. As part of an "update" or an update. There is no danger of making changes in the external object-specific functional units or function-specific modules, since these are arranged outside the framework-based control.
[0019 ] Eine Implementierung der frameworkbasierten Steuerung folgt hierzu dem voranstehend beschriebenen Ansatz der objektorientierten Programmierung, nach dem Komponenten des Automatisierungssystems zu (virtuellen) Objekten zusammenge- fasst werden können. Wie ebenfalls voranstehend beschrieben, hat sich die objektorientierte Programmierung (OOP) bereits in den Programmierhochsprachen der allgemeinen Softwareentwicklung, wie C++ und Java, als vorteilhaft erwiesen, da mit ihrer Hilfe komple- xe Problemstellungen übersichtlich strukturiert und fehlerarm beherrscht werden können. Diese Vorteile ergeben sich unter anderem aus der daraus begründeten Art und Weise des Herangehens an Aufgabenstellungen, deren Strukturierung und einem entsprechenden anschließenden Entwicklungsprozess. Somit ist die objektorientierte Programmierung nicht einfach nur die Verwendung einer anderen - mithin objektorientierten - Programmierspra- che, sondern eine konsequente Umsetzung einer besonders strukturierten Arbeitsweise. Daher kann eine objektorientierte Vorgehensweise auch bei bislang mangelnder Unterstützung im Automatisierungsbereich durch Anwendung einer geeigneten objektorientierten Arbeitsweise mit Hilfe derzeit vorhandener Werkzeuge erzielt werden. • An implementation of the framework-based control for this purpose follows the above-described approach of object-oriented programming, according to which components of the automation system can be combined into (virtual) objects. As also described above, object-oriented programming (OOP) has already proven to be advantageous in the general programming languages of general software development, such as C ++ and Java, because with their help complex problems can be clearly structured and mastered with little error. These advantages result, among other things, from the way in which they are based on approaching tasks, their structuring and a corresponding subsequent development process. Thus, object-oriented programming is not just the use of a different (hence object-oriented) programming language, but a consistent implementation of a particularly structured way of working. Therefore, an object-oriented approach can be achieved even with hitherto lack of support in the field of automation by applying a suitable object-oriented operation using currently available tools. •
[0020] In bisherigen konventionellen, nicht objektorientierten Programmierspra- chen des Automatisierungsbereichs wird üblicherweise zwischen einem eigentlichen Programm (Anweisungsteil) und (statischen) Daten unterschieden. Eine Ablauflogik wird durch eine kontrollierte Folge von Aufrufen zuvor passend definierter Funktionen gesteuert. Eine Entscheidung, mit welchem Objekt (bspw. mit welchem Motor) zu welchem Zeitpunkt welche Grundfunktion ausgeführt werden soll, wird durch eine Übergabe einer entsprechen- den Datenstruktur an eine jeweilig dafür eigens definierte Funktion getroffen.In previous conventional, non-object-oriented programming languages of the automation area, a distinction is usually made between an actual program (instruction section) and (static) data. Flow logic is controlled by a controlled sequence of calls to previously appropriately defined functions. A decision with which object (for example, with which motor) at which point in time which basic function is to be executed is made by transferring a corresponding data structure to a function specifically defined for this purpose.
[0021] Dies führt in der Regel dazu, dass eine entsprechende Ablauflogik und zu verwendende Datenstrukturen getrennt voneinander behandelt, modelliert und dokumentiert werden. Ein Maschinenmodell findet sich daher teilweise in einer Ablauflogik, die des-
sen dynamischen Teil darstellt, und teilweise in den Datenstrukturen, die dessen statischen Teil darstellen, wieder.As a rule, this leads to the fact that a corresponding flow logic and data structures to be used are handled, modeled and documented separately from one another. A machine model is therefore partly found in a flow logic, which represents the dynamic part and partly in the data structures that constitute its static part.
[0022 ] Bei einer objektorientierten Implementierung der Steuerung des Automatisierungssystems wird diese "künstliche" Trennung von Ablauflogik und Daten bzw. Daten- Strukturen, d.h. von Dynamik und Statik zunächst dadurch vermieden, dass beide formal d.h. virtuell, zu einer Einheit zusammengeschlossen werden. Diese Einheit bildet ein sogenanntes „Objekt". Dies bewirkt jedoch in der Regel eine reine Umsortierung und abschnittsweise Vervielfältigung eines entsprechenden Quelltexts der Steuerung. Um dies zu verhindern, können Objekte zu neuen Objekten zusammengeschlossen werden. Die ob- jektorientierte Implementierung, meist realisiert als eine objektorientierte Programmierung, erlaubt es somit, dass Objekte andere Objekte enthalten und Beziehungen zueinander aufbauen können. Beispielsweise kann ein als Objekt deklarierter Antrieb mehrere Motoren, die ebenfalls jeweilige Objekte darstellen, umfassen. Auf diese Weise lassen sich Baugruppen, Maschinenteile oder Funktionseinheiten zu komplexeren virtuellen Einheiten zusammenfassen. Beispielsweise ist es möglich, diese Einheiten im Rahmen eines Strukturplans als baumartige Struktur graphisch darzustellen. Eine objektorientierte Implementierung der Steuerung kann dementsprechend äquivalent ausgeführt werden, so dass die so entstehende Steuerungsstruktur die reale Maschinenstruktur widerspiegelt.In an object-oriented implementation of the control of the automation system, this "artificial" separation of flow logic and data or data structures, i. of dynamics and statics initially avoided by both formally. virtually, be united into a single entity. This unit forms a so-called "object." However, this usually causes a mere resorting and partial copying of a corresponding source text of the controller.To prevent this, objects can be combined to form new objects.The object-oriented implementation, usually realized as one Object-oriented programming, therefore, allows objects to contain other objects and build relationships with one another, for example, a drive declared as an object can contain multiple engines that also represent objects, allowing assemblies, machine parts, or functional units to become more complex virtual devices For example, it is possible to graphically represent these units as a tree-like structure in the context of a structure plan, so that an object-oriented implementation of the control can be carried out in an equivalent manner, so that the resulting structure structure reflects the real machine structure.
[0023 ] Dies bietet den Vorteil einer einfacheren Dokumentation, da zu der phy- sisch vorliegenden Hardware der Maschinenstruktur eine entsprechende Steuerungsstruktur und Implementierung besteht, so dass eine Generierung einer objektorientierten Steuerung vereinfacht wird. Eine Anwendung abstrakter Klassen, Schnittstellen (Interfaces), Polymorphie und dynamische Bindungen, wie sie aus der allgemeinen objektorientierten Programmierung bekannt sind, sind bisher für Programmierungen im Automatisierungsbereich nicht möglich. Jedoch kann in der Automatisierungstechnik auf derartige Möglichkeiten, wie z.B. eine dynamische Speicherverwaltung, virtuelle Methoden oder abstrakte Klassen, verzichtet bzw. können diese teilweise durch eine automatische Quelltextgenerierung ersetzt werden, da sich eine Steuerung in der Regel auf konkrete und bekannte Objekte mit konkreten Adressen und Funktionen bezieht, so dass eine dynamische Anpassung im Allge- meinen nicht notwendig ist.This offers the advantage of simpler documentation, since there is a corresponding control structure and implementation for the physical hardware of the machine structure, so that generation of an object-oriented control is simplified. An application of abstract classes, interfaces, polymorphism and dynamic bindings, as they are known from the general object-oriented programming, are so far not possible for programming in the field of automation. However, in automation technology such possibilities as e.g. A dynamic memory management, virtual methods or abstract classes, omitted or can be partially replaced by an automatic source code generation, since a control usually refers to concrete and known objects with specific addresses and functions, so that a dynamic adaptation in general mine is not necessary.
[0024 ] In der allgemeinen Softwareentwicklung kommen bei einer objektorientierten Programmierung seit einiger Zeit sogenannte Patterns bzw. Muster zum Einsatz, die häufig auftretende Entwurfsprobleme und dazu universell verwendbare generische Lösungsschemata beschreiben. Während sogenannte „Architektur-Pattems" sich auf die Ar-
chitektur von Softwaresystemen beziehen, abstrahieren sogenannte „Design-Patterns" (Entwurfsmuster) weniger stark und beziehen sich eher auf eine Softwarecodierung.In general software development, object-oriented programming has for some time been using so-called patterns or patterns which describe frequently occurring design problems and universally applicable generic solution schemes. While so-called "architecture pattems" are based on the architecture of software systems, so-called "design patterns" are less abstract and relate more to software coding.
[0025] Eine entsprechende Verwendung und ein entsprechender Umgang mit diesen Patterns im Automatisierungsbereich ermöglicht im Vergleich zu bisherigen Steue- rungen eine deutliche Verbesserung einer Kommunikationsstruktur und somit mehr Präzision, schnelleres Verständnis und weniger Fehlerquellen. Patterns erlauben grundsätzlich Programme und Systeme mit gleichartiger Struktur. Dies bedeutet, dass eine Einarbeitung in vorhandene Systeme erleichtert wird, da Softwaredesign und Strukturen gemäß den Patterns quasi vereinheitlicht werden können, wenn bei Verwendung unterschiedlicher Ent- Wicklungsumgebungen und Programmiersprachen auf eine möglichst einheitliche Implementierung geachtet wird und sprachspezifische Sonderlösungen zur Gewährleistung einer Übertragbarkeit vermieden werden.A corresponding use and a corresponding handling of these patterns in the automation area makes it possible to significantly improve a communication structure and thus more precision, faster understanding and fewer sources of error compared to previous controllers. Patterns basically allow programs and systems with similar structure. This means that familiarization with existing systems is facilitated since software design and structures can be virtually standardized according to the patterns if, when using different development environments and programming languages, the implementation is as uniform as possible and language-specific special solutions to ensure portability are avoided.
[0026 ] Eine Abgrenzung zwischen einer Anwendung von Patterns und einer gewöhnlichen Umsetzung von bisher bekannten Standardisierungen besteht darin, dass Pat- terns mehr Freiraum für Interpretationen und der Art einer Implementierung von Funktionen lassen. Vielmehr stellen sie eine mögliche Vorstufe zur Standardisierung dar oder helfen bei der Strukturierung und Implementierung ähnlicher Aufgabenstellungen. Neben einer Steuerung von Maschinenkomponenten, können des weiteren auch spezielle Patterns für Fehlerbehandlungen, sog. MMI Anbindungen, d.h. standardisierte Schnittstellen zur Bedie- nung einer Anlage über entsprechende Visualisierungssysteme, zu Zwecken einer Para- metrisierung oder einer Not-Aus Behandlung vorgesehen werden.[0026] A distinction between an application of patterns and a common implementation of previously known standardizations is that paterns leave more room for interpretation and the way in which functions are implemented. Rather, they represent a possible precursor to standardization or help to structure and implement similar tasks. In addition to a control of machine components, special patterns for error handling, so-called MMI connections, i. standardized interfaces for operating a system via corresponding visualization systems, for purposes of parameterization or emergency stop treatment.
[0027] In Figur 1 ist ein beispielhaftes sogenanntes „DAP Pattern" als Beispiel für ein Architekturmuster für ein Automatisierungssystem dargestellt, das durch eine Komponentenhierarchie mit drei Schichten gebildet wird. Die entsprechende Steuerung ist so- mit aus einer Anzahl von Komponenten aufgebaut, wobei die jeweiligen Komponenten grundsätzlich in andere Steuerungen bzw. Programme übertragbar sind. Im Gegensatz dazu werden gemäß dem Stand der Technik in der Regel Programmteile in sogenannten „Bibliotheken" zur Wiederverwendung hinterlegt. Diese Bibliotheken umfassen in der Regel eine große Anzahl von Funktionen zur Behandlung eines bestimmten Themas, wie bspw. Grafik-, Mathematik-, Kommunikations- oder Bewegungsaspekte. Jedoch sind derartige1 shows an exemplary so-called "DAP pattern" as an example of an architectural pattern for an automation system that is formed by a hierarchy of components with three layers, the corresponding controller thus being made up of a number of components As a rule, program parts are stored in so-called "libraries" for reuse in accordance with the prior art. These libraries typically include a large number of functions to handle a particular topic, such as graphics, math, communication, or motion aspects. However, such are
Bibliotheken in der Regel nicht deterministisch und kontextunabhängig aufgebaut. Dies bedeutet, dass die Bibliotheken eine Sammlung von verschiedenen Programmteilen umfassen, die jedoch nicht zwangsläufig explizit auf den vorliegenden Anwendungsfall zugeschnitten sind. Des weiteren müssen diese Bibliotheken „erlernt" und im entsprechenden
Programmcode eingebunden werden. Hierdurch wird der Programmcode der Steuerung vergrößert und damit zunehmend komplexer. Auch muss damit die Steuerung geändert werden, wenn Änderungen an der Bibliothek vorzunehmen sind. Eine unabhängig voneinander vorzunehmende Bearbeitung ist somit nicht möglich. Bibliotheken werden also für beliebige Kontexte entworfen, wodurch sie selbstverständlich variabler und unspezifischer gestaltet sein müssen.Libraries generally non-deterministic and context-independent. This means that the libraries comprise a collection of different parts of the program, which are not necessarily explicitly tailored to the specific application. Furthermore, these libraries must be "learned" and the corresponding Program code be included. As a result, the program code of the controller is increased and thus increasingly complex. It also needs to change the control when making changes to the library. An independent processing to be performed is therefore not possible. So libraries are designed for any context, which of course makes them more variable and non-specific.
[0028 ] Im Gegensatz dazu ermöglicht der Automatisierungsbereich ein gezieltes Bilden von Komponenten bspw. in einer Produktlinie und gibt somit einen spezifischen Kontext vor, der sich in der Regel nur wenig ändert. Bei einer Produktlinie aus dem Auto- matisierungsbereich liegt ein spezieller Fokus auf den Produkten, die auf der Produktlinie entstehen bzw. zu generieren sind. Hierbei können die Komponenten per Definition nicht mehr vollkommen unabhängig voneinander betrachtet werden, sondern stets im Rahmen der gesamten Produktlinie, da ein gewisses Zusammenspiel direkter oder indirekter Art zwischen den Komponenten besteht und demnach zu berücksichtigen ist. Die Komponen- ten der Produktlinie lassen sich nach dem zugrundeliegenden Ansatz des in Figur 1 dargestellten Architekturpatterns in drei Kategorien einteilen:In contrast, the automation area allows targeted forming of components, for example, in a product line and thus provides a specific context, which usually changes only slightly. In the case of a product line from the automation area, there is a special focus on the products that are created or are to be generated on the product line. By definition, the components can no longer be viewed completely independently of each other, but always within the scope of the entire product line, since there is a certain interplay of direct or indirect nature between the components and must therefore be taken into account. The components of the product line can be divided into three categories according to the underlying approach of the architectural pattern shown in FIG. 1:
1. Plattform-Komponenten1. platform components
2. Anlagen-Komponenten2. Plant components
3. Domänen-Komponenten3. Domain Components
Plattform-Komponenten erbringen sogenannte Basisdienste innerhalb jeder Anwendung der Produktlinie und abstrahieren die zugrundeliegende Hardware. Sie stellen die allgemeinsten Komponenten dar und sind mit sogenannten „Device"-Treibern mit standardisierten Schnittstellen vergleichbar. Die Art der jeweils in der Produktlinie zum Einsatz kommenden Plattform-Komponenten hängt von dem Anwendungsfeld der Produktlinie ab. Ty- pische Beispiele für die Dienste der Plattform-Komponenten sind die Kommunikation mitPlatform components provide so-called basic services within each application of the product line and abstract the underlying hardware. They represent the most common components and are comparable to so-called "device" drivers with standardized interfaces.The type of platform components used in each product line depends on the application area of the product line: typical examples of the platform's services Components are communicating with
Hardware-Komponenten, wie beispielsweise Motoren, Pumpen oder Ventilen. Eine Plattform-Komponente (Device-Treiber) kapselt bspw. für den Anwendungsfall des Motors die hardwarespezifischen Eigenschaften des Motors ab und liefert über ein idealisiertes Interface den Zugriff auf dessen Grundfunktionen wie bspw. eine Start- und Stopfunktion. Zugriff auf die Plattform-Komponenten haben hierbei ausschließlich die sogenannten Anlagen-Komponenten, die auf einer nächsthöheren Hierarchiestufe angeordnet sind.
[0029] Diese Anlagen-Komponenten enthalten die prinzipielle Ablauflogik für beispielsweise eine Produktlinie als Komposition einer Anzahl von Plattform-Komponenten und ggf. weiteren Anlagen-Komponenten. Sie werden daher auch als „Controller" bezeichnet. Ein Wechsel einer zugrunde liegenden Plattform oder ein Austausch einzelner Bauteile erfordert daher ausschließlich Änderungen an den Plattform-Komponenten, da die darauf aufbauenden Anlagen-Komponenten über standardisierte Schnittstellen mit den jeweiligen Plattform-Komponenten kommunizieren. Die Anlagen-Komponenten sind daher allgemein und ohne spezifischen Bezug zu den auf der Produktlinie hergestellten Produkten. Die Anlagen-Komponenten selbst werden durch übergeordnete Domänen-Komponenten zur Steuerung des gesamten Anlagenverhaltens bzw. der Produktlinie kontrolliert.Hardware components, such as motors, pumps or valves. A platform component (device driver), for example, encapsulates the hardware-specific properties of the motor for the application of the motor and, via an idealized interface, provides access to its basic functions, such as a start and stop function. Access to the platform components here has only the so-called plant components, which are arranged at a next higher hierarchical level. These plant components contain the basic flow logic for example, a product line as a composition of a number of platform components and possibly other equipment components. They are therefore also referred to as "controllers." A change of an underlying platform or an exchange of individual components therefore requires only changes to the platform components, since the plant components based on them communicate via standardized interfaces with the respective platform components System components are therefore generic and have no specific reference to the products manufactured on the product line.The system components themselves are controlled by higher-level domain components for controlling the entire system behavior or product line.
[0030 ] Die Domänen-Komponenten enthalten somit eine entsprechende Anwendungslogik für komplexere Anwendungsfälle bis hin zu einer eigentlichen Maschinenlogik. Sie benutzen bzw. steuern ausschließlich die vorangenannten Anlagen-Komponenten oder andere Domänen-Komponenten zur Steuerung des gesamten spezifischen Anlageverhal- tens. Sie stellen somit ebenfalls Steuerungs-Komponenten dar, die, wie die Anlagen- Komponenten, untergeordnete Komponenten steuern. Jede der drei genannten Komponenten kann daher mit einer objektorientiert programmierten frameworkbasierten Steuerung ausgestattet werden, wobei beispielsweise die Objekte jeweils aus den untergeordneten Komponenten bestehen und sich daher gegenüber den Objekten anderer Komponen- ten unterscheiden. Die Steuerung selbst muss hierbei nicht verändert werden. Lediglich die objektspezifischen Funktionseinheiten werden an die jeweiligen Objekte angepasst.The domain components thus contain a corresponding application logic for more complex applications up to an actual machine logic. You only use or control the aforementioned system components or other domain components to control the entire specific system behavior. They also represent control components that, like the plant components, control subordinate components. Each of the three components mentioned can therefore be equipped with an object-oriented programmed framework-based control, whereby, for example, the objects each consist of the subordinate components and therefore differ from the objects of other components. The control itself does not have to be changed. Only the object-specific functional units are adapted to the respective objects.
[0031] Für eine klare Strukturierung und zur Ermöglichung einer Wiederver- wendbarkeit, Austauschbarkeit und Wartbarkeit sollten sich die Funktionsaufrufe zur Steuerung der untergeordneten Komponenten jeweils immer auf die entsprechend untergeordne- te Hierarchiestufe beziehen, jedoch nicht mehrere Hierarchiestufen überspringen, so dass eine klare Gruppierung der untergeordneten Komponenten zu Objekten ermöglicht wird. Gemäß diesen Vorgaben finden in einem nach dem in Figur 1 beschriebenen DAP Pattern strukturierten Modell Kommunikationsbeziehungen nur in vertikaler Richtung statt. Bereits in diesem Modell wird eine baumartige Strukturierung des Modells sichtbar. Diese Struktu- rierung orientiert sich nahe an der entsprechenden Hardwarestruktur, so dass zwischenFor a clear structuring and to enable a reusability, interchangeability and maintainability, the function calls for controlling the subordinate components should always refer to the correspondingly subordinate hierarchy level, but should not skip over several hierarchy levels, so that a clear grouping of the child components to objects. According to these specifications, in a model structured according to the DAP pattern described in FIG. 1, communication relationships take place only in the vertical direction. Already in this model, a tree-like structuring of the model becomes visible. This structuring is oriented close to the corresponding hardware structure, so that between
Hard- und Software eine Analogie besteht, die ein einfaches und leichtes Verständnis des jeweiligen Softwaremodells ermöglicht. Dieser Aufbau wird insbesondere durch eine voranstehend dargestellte objektorientierte Vorgehensweise zur Programmierung ermöglicht. Analog zu der Beziehung der einzelnen Hardware-Komponenten werden somit Funktionen von Objekten durch übergeordnete Objekte gesteuert.
[0032 ] Der voranstehend bereits beschriebene Aspekt der Simulation wird nachfolgend ergänzend in allgemeiner Form diskutiert. Demnach können Objekte mittels des Simulationsmoduls simuliert und Signale oder Befehle der Steuerung zur Steuerung von Grundfunktionen mindestens eines Objekts des Automatisierungssystems von dem jeweili- gen Simulationsmodul empfangen werden. Beispielsweise kann hierbei die Hierarchieebene der von den Plattform-Komponenten angesteuerten Hardware durch das Simulationsmodul, bspw. in Form einer entsprechend ausgerüsteten Recheneinheit oder aber in Form eines entsprechenden Quelltextes bzw. Programm(teil)s ersetzt werden, so dass die jeweiligen Plattform-Komponenten mit dem Simulationsmodul kommunizieren können. Alle übergeordneten Komponenten oberhalb der Plattform-Komponenten werden von diesem Austausch nicht beeinflusst und verrichten daher ihren normalen Betrieb. Selbstverständlich kann ebenso eine höhere Hierarchieschicht ersetzt und entsprechend simuliert werden.Hardware and software is an analogy that allows a simple and easy understanding of the respective software model. This structure is made possible in particular by an object-oriented procedure for programming as described above. Analogous to the relationship of the individual hardware components, functions of objects are thus controlled by higher-level objects. The above-described aspect of the simulation is discussed below in addition to general form. Accordingly, objects can be simulated by means of the simulation module and signals or commands of the controller for controlling basic functions of at least one object of the automation system can be received by the respective simulation module. For example, the hierarchy level of the hardware controlled by the platform components can be replaced by the simulation module, for example in the form of a correspondingly equipped arithmetic unit or else in the form of a corresponding source code or program (part), so that the respective platform components can communicate with the simulation module. All parent components above the platform components will not be affected by this replacement and will therefore resume normal operation. Of course, a higher hierarchical layer can also be replaced and simulated accordingly.
[0033 ] Dieser Aspekt der Simulation geht also davon aus, dass jedes physikalische Gerät einer Maschine (voranstehend als Objekt bezeichnet), das durch Software „er- reichbar" und somit entweder aktiviert und/oder abgefragt (oder beides) werden kann, bei Bedarf direkt in dieser Software simuliert werden kann. Jedes physikalische Element der Hardware erhält also ein unmittelbares Äquivalent in der Software, das voranstehend bspw. als Funktionseinheit bezeichnet wurde. Somit wird bspw. jede Lichtschranke durch einen Programmabschnitt bzw. Quelltextabschnitt „DEV_Lichtschranke", jeder Tempera- turgeber durch ein „DEV_Temperature", jeder Motor durch ein „DEV_Motor" usw. abgebildet. Softwaretechnologisch muss ein Element bzw. Objekt, das mehrfach in der Maschine bzw. dem Automatisierungssystem verbaut wurde, natürlich nur einmal als Funktionseinheit programmiert und anschließend entsprechend häufig instanziiert werden. Diese Programmierung entspricht der Bildung einer Klasse, wie sie ebenfalls voranstehend bereits eingeführt wurde. Die Instanziierung beliebig vieler Elemente dieser Klasse entspricht somit der Vereinbarung von Variablen dieser Klasse.This aspect of the simulation thus assumes that every physical device of a machine (referred to above as an object) that can be "accessed" by software and thus either activated and / or interrogated (or both), if necessary Each physical element of the hardware thus receives an immediate equivalent in the software, which was referred to above as a functional unit, for example, so that each light barrier is protected by a program section or "DEV_Lichtschranke" text section. by a "DEV_Temperature", each engine by a "DEV_Motor", etc. mapped. In terms of software technology, an element or object which has been installed several times in the machine or the automation system must, of course, only be programmed once as a functional unit and then be instantiated accordingly frequently. This programming corresponds to the formation of a class, as has already been introduced above. The instantiation of any number of elements of this class thus corresponds to the agreement of variables of this class.
[ 0034 ] Die Klassen, die ein physikalisches Element repräsentieren, beginnen in der nachfolgenden Beschreibung mit dem Präfix „DEV_". Sie bilden sowohl eine Abstraktionsschicht der Hardware (Device-Treiber) als auch die Simulationselemente. Anschaulich ist dies in Figur 4 dargestellt. Sinnvollerweise kann ein solches „DEV"-Element in mehrereThe classes that represent a physical element begin with the prefix "DEV_" in the following description: They form both an abstraction layer of the hardware (device driver) and the simulation elements, which is illustrated in FIG can such a "DEV" element in several
Dateien aufgeteilt sein, sodass z.B. der Simulations-Teil als Simulationsmodul leicht von der eigentlichen Steuerungssoftware der Funktionseinheit getrennt werden kann. Wann immer also die Steuerung mit einem Hardware-Element kommuniziert, wird nicht ein Ein- oder Ausgang der Hardware, bspw. durch Setzen oder Rücksetzen eines Bits o.a., benutzt, sondern es wird das für diese Hardware vorgesehene Device durch Aufruf der für das
Hardware-Element sinnvollen Methode verwendet. Es wird also die entsprechende Steuerfunktion der Funktionseinheit eingesetzt. Ein zugrundeliegender Quelltext bzw. Programmabschnitt kann bspw. derart aufgebaut sein:Be divided files so that, for example, the simulation part as a simulation module can be easily separated from the actual control software of the functional unit. Whenever the controller communicates with a hardware element, an input or output of the hardware is not used, for example, by setting or resetting a bit, but it is the device provided for this hardware by calling the for the Hardware element used meaningful method. Thus, the corresponding control function of the functional unit is used. An underlying source code or program section can, for example, be constructed in such a way:
Lichtschrankel : DEV_Lichtschranke;Photocell: DEV_Lichtschranke;
MotoM : DEV_MOTOR;MotoM: DEV_MOTOR;
Beginbegin
If Lichtschrankel. isθn() then beginIf light cabinet. isθn () then begin
MotoM .SetSpeed (...); MotoM .Start(...); End; End;MotoM .SetSpeed (...); MotoM .Start (...); End; End;
[0035] Auf diese Weise findet an keiner Stelle des eigentlichen Quelltexts bzw. Sourcecodes ein direkter Bezug zu den tatsächlich verbauten Elementen bzw. Objekten statt. Jede physikalische Verbindung zwischen Hard- und Software ist in der Plattform- Schicht, d.h. in den Funktionseinheiten, versteckt. Da alle sog. „Devices" von einer abstrak- ten Basisklasse „DEV_Generic" erben bzw. von dieser abgeleitet sind, haben alle „Devices" sowohl einen Namen zur Identifikation, eine physikalische IO-Adressen als auch ein sog. „Flag" bzw. einen Schalter zum Ein- und Ausschalten der Simulation. Ist also keine reale Maschine (d.h. kein Objekt) vorhanden, oder wird aus anderen Gründen eine Simulation gewünscht, so können die Devices bei entsprechender Konfiguration selbst entschei- den, wie sie sich verhalten werden. Im beispielhaften Fall einer Lichtschranke könnte sich dies wie folgt darstellen:In this way, no direct reference to the actually installed elements or objects takes place at any point in the actual source code or source code. Any physical connection between hardware and software is in the platform layer, i. in the functional units, hidden. Since all so-called "devices" inherit from or derive from an abstract base class "DEV_Generic", all "devices" have both a name for identification, a physical IO address, and a so-called "flag". a switch for switching the simulation on and off. Thus, if no real machine (i.e., no object) is present, or if a simulation is desired for other reasons, the devices, with appropriate configuration, can decide for themselves how to behave. In the exemplary case of a light barrier, this could be as follows:
DEV_LichtschrankeDEV_Lichtschranke
Methode isON()Method isON ()
If not Simulation then beginIf not Simulation then begin
Return lO Adress; /* return tatsächlichen Wert der Lichtschranke */ Else I* Simulation aktiv */Return IO address; / * return actual value of the photocell * / Else I * simulation active * /
Return TRUE; /* simuliere ständig eingeschaltete Lichtschranke */
End_if;Return TRUE; / * Simulate constantly on photocell * / end_if;
[0036] In diesem Fall wird also bei einer Simulation permanent der Wert „TRUE" gesetzt, der einer dauerhaft aktiven Lichtschranke entspricht. Dieser Simulationsteil kann in der Realität natürlich beliebig aufwändig und im Laufe der Weiterentwicklung von Maschinen immer weiter entwickelt und perfektioniert werden.In this case, therefore, the value "TRUE", which corresponds to a permanently active light barrier, is permanently set in a simulation.Of course, this simulation part can be developed and perfected in real time as desired and in the course of further development of machines.
[0037] Eine Abspaltung des Simulationsanteils (nachfolgend als Teil 2 bezeichnet) als Simulationsfunktion des Simulationsmoduls von der Steuerfunktion (Teil 1) der Funktionseinheit bietet den Vorteil, dass der Simulationsanteil bei Bedarf, wie bspw. bei einer Auslieferung der Maschine an den Kunden, abgespalten werden kann. So kann sich eine Trennung in zwei Teile bspw. wie folgt darstellen:A splitting off of the simulation component (referred to below as part 2) as a simulation function of the simulation module from the control function (part 1) of the functional unit has the advantage that the simulation component, if necessary, such as when splitting the machine to the customer, split off can be. Thus, a separation into two parts, for example, can be as follows:
TeiM : Methode isON()TeiM: Method isON ()
If not Simulation then beginIf not Simulation then begin
Return IO_Adress; /* return tatsächlichen Wert der Lichtschranke */ Else /* Simulation aktiv */ #ifdef WithSimulationReturn IO_Address; / * return actual value of the photocell * / Else / * Simulation active * / #ifdef WithSimulation
CALL Simulation (); #endifCALL Simulation (); #endif
End_if;end_if;
Teil 2: SimulationO /* Simulation aktiv */Part 2: SimulationO / * Simulation active * /
Return TRUE; /* simuliere ständig eingeschaltete Lichtschranke */ End_if;Return TRUE; / * simulate a light barrier that is always on * / End_if;
[0038 ] In diesem Fall kann allerdings das Simulationsmodul als Teil 2 nicht ein- fach entfallen, da ansonsten ein Compiler beim Compilieren eine Fehlermeldung auswerfen würde, da nun ein entsprechend vorgesehener Aufruf der Simulationsfunktion „CALL SimulationO" nicht mehr gültig wäre. Der Aufruf „CALL Simulation()" in Teil 1 könnte daher bspw. durch einen sog. Compiler-Switch als Schalter der Form „#ifdef WithSimulation" di-
sabled bzw. ausgeschaltet werden. Ein Setzen dieses Schalters eliminiert damit die Simulation aus der Software.In this case, however, the simulation module as part 2 can not simply be omitted, since otherwise a compiler would issue an error message during compilation, since a correspondingly provided call of the simulation function "CALL SimulationO" would no longer be valid. CALL Simulation () "in Part 1 could therefore be used, for example, by a so-called compiler switch as a switch of the form"#ifdef WithSimulation ". sabled or switched off. Setting this switch eliminates the simulation from the software.
[0039] Des weiteren können, wie voranstehend bereits beschrieben, mehrere Simulationsfunktionen in einer Bibliothek zusammengefasst werden. Darüber hinaus kön- nen verschiedene Bibliotheken auch unterschiedliche Simulations-Szenarien umfassen oder Simulations-Szenarien durch externe Ereignisse oder Parametrierungen gesteuert werden. Dieser Aspekt ist insbesondere für ein kontinuierliches Testen bei der Weiterentwicklung der gesamten Steuerung bzw. der Software vorteilhaft, da hierbei beliebige Kombinationen, Teilsystembildungen und Abläufe insbesondere von Fehlerzuständen möglich sind, die beliebig oft und in beliebiger Reihenfolge wiederholt werden können. Dadurch ist mit Hilfe einer kontinuierlichen Weiterentwicklung der Simulations- bzw. Test-„Cases" bzw. -Szenarien auch langfristig eine vollständige Abdeckung aller relevanten Test-Funktionen möglich. Tests können jederzeit reproduziert und über lange Zeiträume automatisch ausgeführt und ausgewertet werden.Furthermore, as already described above, several simulation functions can be combined in one library. In addition, different libraries can also include different simulation scenarios or simulation scenarios can be controlled by external events or parameterizations. This aspect is particularly advantageous for a continuous testing in the further development of the entire control or the software, since any combinations, subsystem formations and processes, in particular of fault conditions, are possible, which can be repeated as often and in any order. As a result, continuous development of the simulation or test "cases" or scenarios enables full coverage of all relevant test functions in the long term, allowing tests to be reproduced at any time and automatically executed and evaluated over long periods of time.
[ 0040 ] Ein weiterer Vorteil ergibt sich aus der Tatsache, dass diese Art des Tes- tens zu Beginn bzw. in einem ersten Schritt auch keine vollständige Maschinenbeschreibung voraussetzt, da diese aus sich selbst heraus mit der Instanziierung der Objekte aus den Klassen entsteht. Die in den oberen Schichten angesiedelten Elemente „wissen" nichts von der tatsächlichen Hardware und verhalten sich gemäß ihrer vorgesehenen Aufgaben völlig normal. Darüber hinaus bringt eine Änderung der Maschine auch eine direkte Änderung der Simulation mit sich, sofern es sich um Änderungen an den Objekten des Automatisierungssystems, wie bspw. der Aktorik, Sensorik oder Transportelementen („Motion") etc., handelt.A further advantage results from the fact that this type of test at the beginning or in a first step also does not require a complete machine description, since this results in itself from the instantiation of the objects from the classes. The elements located in the upper layers do not "know" about the actual hardware and behave normally according to their intended tasks, but also a change of the machine results in a direct change of the simulation, as far as changes to the objects of the simulation are concerned Automation system, such as, for example, the actuators, sensors or transport elements ("Motion"), etc., acts.
[0041 ] Gemäß einer anderen Ausführungsform sind die Schnittstellen des Weiteren zur kommunikationstechnischen Einbindung von funktionsspezifischen Modulen für das jeweilige Objekt vorgesehen.According to another embodiment, the interfaces are further provided for the communication technology integration of function-specific modules for the respective object.
[ 0042 ] Neben den objektspezifischen Funktionseinheiten können somit auf gleiche Art und Weise zusätzliche Module von der frameworkbasierten Steuerung ausgeführt werden. Die Module können beispielsweise neue Funktionalitäten für die Steuerung bereitstellen, die z.B. individuelle Wünsche von Kunden berücksichtigen und integrieren können. So kann ein Kunde z.B. eigene Programme ausführen lassen ohne in den Framework- Quelltext der Steuerung eingreifen zu müssen, um beispielsweise Zählerstände abzufra-
gen, Benachrichtigungen bei Fehlerzuständen auszulösen oder um kundeneigene Steuerungen zu programmieren usw.. Somit kann auf diese Weise kein Fehler in die Steuerung eingebaut werden, der ggf. z.B. zu unerwünschtem Verhalten des entsprechenden Objekts führt.In addition to the object-specific functional units, additional modules can thus be executed by the framework-based control in the same way. The modules can, for example, provide new functionalities for the controller, which, for example, can consider and integrate individual wishes of customers. For example, a customer can have their own programs executed without having to intervene in the framework source code of the controller, for example, to collect meter readings. to trigger notifications of error conditions or to program customer-specific controls, etc. Thus, no error can be built into the controller in this way, which possibly leads, for example, to undesired behavior of the corresponding object.
[0043 ] Außerdem kann das mindestens eine Objekt mindestens eine automatisierte Maschine umfassen. Hierbei kann ein sog. „Objekt" der Steuerung eine oder mehrere Maschinen zu einer virtuellen Einheit vereinen. Letztlich kann so die komplette Produktionslinie als ein einziges Objekt zusammengefaßt werden, das aus Objekten bzw. einzelnen Maschinen gebildet wird, die wiederum aus weiteren Objekten aggregiert werden, die sich beispielsweise aus Plattform-Komponenten und deren Teilen zusammensetzen können.In addition, the at least one object may comprise at least one automated machine. In this case, a so-called "object" of the controller can combine one or more machines into a virtual unit, so that the complete production line can be grouped together as a single object, which is formed from objects or individual machines, which in turn are aggregated from other objects which can be composed of platform components and their parts, for example.
[0044 ] Entsprechend einer anderen Ausführungsform umfasst das Automatisierungssystem mindestens eine Produktlinie mit einer Anzahl von Objekten, die als automatisierte Maschinen ausgeführt sind.According to another embodiment, the automation system comprises at least one product line with a number of objects that are designed as automated machines.
[ 0045] Ferner kann die frameworkbasierte Steuerung eine Struktur aufweisen, die eine Struktur der automatisierten Maschinen des Automatisierungssystems widerspiegelt. Hierbei kann, wie voranstehend bereits beschrieben, jede Maschine oder Teile der jeweiligen Maschine als einzelnes Objekt bzw. als einzelne Objekte in der Steuerung identifiziert sein, so dass eine Struktur des Automatisierungssystems mit der Struktur der Steu- erung übereinstimmt.Further, the framework-based controller may have a structure that reflects a structure of the automated machines of the automation system. Here, as already described above, each machine or parts of the respective machine can be identified as a single object or as individual objects in the controller, so that a structure of the automation system coincides with the structure of the controller.
[0046] Des Weiteren kann ein Zugriff auf die Steuerung geschützt sein. Dies kann bspw. mittels eines Kennworts bzw. Passworts oder anderer geeigneter zugriffsbeschränkender Maßnahmen erfolgen, wodurch die frameworkbasierte Steuerung vor einer unerwünschten Manipulation geschützt wird. Jedoch bleiben maschinenspezifische EIe- mente, wie die objektspezifischen Funktionseinheiten oder die funktionsspezifischen Module, hiervon unberührt und können verändert bzw. angepasst werden.Furthermore, access to the controller can be protected. This can be done, for example, by means of a password or other suitable access-limiting measures, whereby the framework-based control is protected against unwanted manipulation. However, machine-specific elements, such as the object-specific functional units or the function-specific modules, remain unaffected and can be changed or adapted.
[ 0047 ] Entsprechend einer weiteren Ausführungsform ist ein Quelltext bzw. Quellcode der frameworkbasierte Steuerung automatisch generierbar.According to another embodiment, a source code or source code of the framework-based control is automatically generated.
[0048 ] Außerdem wird ein Verfahren zum Test eines Automatisierungssystems mit einer frameworkbasierten Steuerung gemäß der voranstehenden Beschreibung bereitgestellt, wobei das Automatisierungssystem eine frameworkbasierte Steuerung zur Steue-
rung von Grundfunktionen mindestens eines Objekts der Anzahl von Objekten mittels objektspezifischer Funktionseinheiten umfasst. Die Steuerung ist objektunabhängig ausgeführt und umfasst standardisierte Schnittstellen zur kommunikationstechnischen Einbindung der objektspezifischen Funktionseinheiten mittels vorkonfigurierter Funktionsaufrufe. Das Verfahren umfasst außerdem einen ersten Auswahlschritt zum wahlweisen Ausführen einer objektspezifischen Steuerfunktion oder Ausführen der mindestens einen Simulationsfunktion durch die Funktionseinheit.In addition, a method for testing an automation system with a framework-based control as described above is provided, wherein the automation system has a framework-based control for controlling tion of basic functions of at least one object of the number of objects by means of object-specific functional units. The control is object-independent and includes standardized interfaces for communication-technical integration of the object-specific functional units by means of preconfigured function calls. The method also includes a first selecting step for selectively performing an object-specific control function or executing the at least one simulation function by the functional unit.
[0049] Gemäß einer Ausführungsform wird der erste Auswahlschritt von der Funktionseinheit durchgeführt.According to one embodiment, the first selection step is performed by the functional unit.
[0050 ] Des weiteren wird ein Verfahren zur frameworkbasierten Steuerung einesFurthermore, a method for the framework-based control of a
Automatisierungssystems zum Steuern von Grundfunktionen mindestens eines Objekts des Automatisierungssystems mittels einer frameworkbasierten Steuerung, wobei die Steuerung objektunabhängig ausgeführt ist, mit den folgenden Schritten bereitgestellt:Automation system for controlling basic functions of at least one object of the automation system by means of a framework-based control, wherein the control is executed object-independent, provided with the following steps:
- Einlesen von objektspezifischen Funktionseinheiten durch die Steuerung zu einer Startzeit des Automatisierungssystems mittels Funktionsaufrufen über standardisierte- Reading of object-specific functional units by the controller to a start time of the automation system by means of function calls via standardized
Schnittstellen zur kommunikationstechnischen Einbindung der objektspezifischen Funktionseinheiten,Interfaces for the communication technology integration of the object-specific functional units,
- Auswählen mindestens einer in den Funktionseinheiten umfassten objektspezifischen Steuerfunktion oder mindestens einer in Simulationsmodulen der Funktions- einheiten integrierten Simulationsfunktion,Selecting at least one object-specific control function comprised in the functional units or at least one simulation function integrated in simulation modules of the functional units,
- Ausführen der mindestens einen gewählten Funktion.- Execute the at least one selected function.
[0051 ] Die vorliegende Beschreibung deckt auch ein Computerprogramm mit Programmcode ab, das alle Schritte des Verfahrens zur frameworkbasierten Steuerung eines Automatisierungssystems durchführt, wenn das Computerprogramm auf einem Computer oder einer entsprechenden Recheneinheit ausgeführt wird.The present description also covers a computer program with program code that performs all the steps of the method for the framework-based control of an automation system when the computer program is executed on a computer or a corresponding computing unit.
[0052 ] Des Weiteren deckt die vorliegende Beschreibung ein Computerprogrammprodukt mit Programmcodemitteln ab, die auf einem computerlesbaren Datenträger gespeichert sind, um alle Schritte eines Verfahrens zur frameworkbasierten Steuerung eines Automatisierungssystems durchzuführen, wenn das Computerprogramm auf einem Computer oder einer entsprechenden Recheneinheit ausgeführt wird.
[0053 ] Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und den beiliegenden Zeichnungen.Furthermore, the present description covers a computer program product having program code means stored on a computer-readable medium for performing all the steps of a method for framework-based control of an automation system when the computer program is executed on a computer or a corresponding computing unit. Further advantages and embodiments of the invention will become apparent from the description and the accompanying drawings.
[0054 ] Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, son- dem auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.It is understood that the features mentioned above and those yet to be explained below can be used not only in the particular combination indicated, but also in other combinations or in isolation, without departing from the scope of the present invention.
[0055] Die Erfindung ist anhand eines Ausführungsbeispieles in der Zeichnung schematisch dargestellt und wird im folgenden unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.The invention is illustrated schematically with reference to an embodiment in the drawing and will be described in detail below with reference to the drawings.
Kurzbeschreibung der ZeichnungenBrief description of the drawings
Figur 1 zeigt ein mögliches Architekturpattern bzw. -muster mit drei Hierarchie- Schichten in schematischer Darstellung,FIG. 1 shows a possible architectural pattern with three hierarchical layers in a schematic representation,
Figur 2 zeigt einen Aufbau einer Ausführungsform einer frameworkbasierten Steuerung in schematischer Darstellung,FIG. 2 shows a schematic structure of an embodiment of a framework-based control,
Figur 3 zeigt einen Ausschnitt einer Ausführungsform einer frameworkbasiertenFIG. 3 shows a section of an embodiment of a framework-based one
Steuerung als Auszug eines zugrundeliegenden Quellcodes.Control as an extract of an underlying source code.
Figur 4 zeigt einen weiteren Aufbau der frameworkbasierten Steuerung in schematischer Darstellung.Figure 4 shows a further structure of the framework-based control in a schematic representation.
Ausführliche BeschreibungDetailed description
[0056] Figur 1 zeigt ein Architekturpattern bzw. -muster am Beispiel eines sogenannten „DAP Pattern", das einer frameworkbasierten Steuerung zugrunde liegen kann und das aus einer Komponentenhierarchie besteht, die drei Komponentenschichten 12,13,14 und eine untergeordnete Hardwareschicht 11 umfasst. In der Praxis können durchaus auch deutlich mehr als drei Komponentenschichten verwendet werden, um weitere Abstraktionen zu ermöglichen. Die Hardwareschicht 11 besteht aus einem Motor 11a und einer Lichtschranke 11 b, die jeweils von einer sogenannten Plattform-Komponente 12a
bzw. 12b gesteuert werden, die in der Schicht der Plattform-Komponenten 12 angeordnet sind. Diese wiederum werden von einer Anlagen-Komponente 13a gesteuert, die in der Anlagenschicht 13 angeordnet ist. Übergeordnet befindet sich die sogenannte Domain- Komponente 14a, die die Anlagen-Komponente 13a steuert und ihrerseits in der Domain- Schicht 14 angeordnet ist. Wie aus der schematischen Darstellung ersichtlich ist, wird die jeweilige Komponente einer bestimmten Schicht der dargestellten Hierarchie jeweils nur von der direkt darüber angeordneten Komponente gesteuert. Eine übergreifende Steuerung über mehrere Hierarchieschichten ist nicht vorgesehen, da hierdurch der beabsichtigte modulare Aufbau der Komponentenhierarchie gestört werden würde. Diese Einschrän- kung bezieht sich explizit nur auf eine übergreifende Steuerung, die zwischengeordnete Komponenten übergehen würde. Selbstverständlich kann durchaus eine Plattform- Komponente auch direkt von einer Domänen-Komponente angesteuert werden, ohne die vorgesehene modulare Struktur zu behindern.FIG. 1 shows an architectural pattern or pattern using the example of a so-called "DAP pattern", which may be based on a framework-based control and which consists of a component hierarchy comprising three component layers 12, 13, 14 and a subordinate hardware layer 11. In practice, clearly more than three component layers can also be used to enable further abstractions The hardware layer 11 consists of a motor 11a and a light barrier 11b, each of which is formed by a so-called platform component 12a or 12 b, which are arranged in the layer of the platform components 12. These in turn are controlled by a plant component 13a, which is arranged in the plant layer 13. Higher up is the so-called domain component 14a, which controls the system component 13a and which in turn is arranged in the domain layer 14. As can be seen from the schematic illustration, the respective component of a particular layer of the illustrated hierarchy is controlled only by the component directly above it. An overall control over several hierarchical layers is not provided, since this would disturb the intended modular structure of the component hierarchy. This restriction explicitly refers only to an overall controller that would bypass intermediate components. Of course, quite a platform component can also be controlled directly by a domain component without hindering the intended modular structure.
[0057 ] Figur 2 zeigt ein Beispiel für eine frameworkbasierte Steuerung 21 für ein Automatisierungssystem 20. Diese frameworkbasierte Steuerung 21 basiert auf einer sogenannten „State-Maschine" 22, die von einem Standardalgorithmus gebildet wird, die bzw. der für verschiedenartige Maschinen identisch ausgebildet sein kann und Grundfunktionen 23 eines Objekts bzw. einer Maschine steuert. Diese Grundfunktionen können bspw. das definierte Verfahren an eine bestimmte Position ("Setze Position"), das Ansteuern oder Überwachen einer Lichtschranke ("Lichtschr. xy") oder das Steuern eines Antriebs ("Antrieb an", "Antrieb aus") umfassen und lassen sich um beliebige weitere Funktionen ("Fkt n") erweitern. Dieses Status-Modell kann bspw. dem sog. „OMAC"- (bzw. Weihenstephan-) Standard entsprechen.FIG. 2 shows an example of a framework-based controller 21 for an automation system 20. This framework-based controller 21 is based on a so-called "state machine" 22, which is formed by a standard algorithm that is designed identically for various machines can and controls basic functions 23 of an object or a machine, for example, the defined method to a specific position ("set position"), the activation or monitoring of a light barrier ("light curtain xy") or the control of a drive ( "Drive on", "Drive off") and can be extended by any other functions ("Fkt n") This status model can, for example, comply with the so-called "OMAC" (or Weihenstephan) standard.
[0058 ] Der OMAC-Standard (Open Modular Architecture Controls) beschreibt mögliche Zustände einer Maschine sowie mögliche Zustandsübergänge und Aktionen zusammen mit ihren jeweiligen Vor- und Nachbedingungen. Auf diese Weise kann mit Hilfe der frameworkbasierten Steuerung eine Standardimplementierung für die zugrundeliegende State-Maschine realisiert und bereitgestellt werden, die für alle Maschinen einer Produktlinie bzw. Anlage identisch ist und eine objektunabhängige Anlagenschicht definiert. Von dieser Implementierung sind maschinenspezifische Funktionen bzw. objektspezifischeThe OMAC standard (Open Modular Architecture Controls) describes possible states of a machine as well as possible state transitions and actions together with their respective pre- and post-conditions. In this way, a standard implementation for the underlying state machine can be realized and provided with the help of the framework-based control, which is identical for all machines of a product line or plant and defines an object-independent plant layer. From this implementation are machine-specific functions or object-specific
Funktionseinheiten 25 in einer objektspezifischen Plattformschicht zu trennen. Diese werden über standardisierte Schnittstellen 26 mittels vorkonfigurierter Funktionsaufrufe kommunikationstechnisch eingebunden und erlauben eine Integration von kundenspezifischen Implementierungen, wie bspw. kundeneigene Anwendungen ("APL"), oder Funktionen zur Fehlerbehebung ("ERP"). Dabei verhält sich bspw. eine Etikettiermaschine bei einem
Übergang von einem Zustand "starting" zu einem Zustand "execute" aufgrund der ablaufenden Funktionen anders als eine Packmaschine. Auch kann der "execute" Zustand selbst bei den jeweiligen Maschinen unterschiedlich ausgeführt sein. Daher ist die Implementierung der State-Maschine von der Implementierung der objektspezifischen Funktionseinhei- ten der jeweiligen Maschine zu trennen. Dasselbe gilt für funktionsspezifische Module 27 und Erweiterungen sowie für entsprechende Schnittstellen zur Hardware (Devices). Im Gegensatz zu einer Softwareprogrammierung mit einer objektorientierten Programmiersprache werden diese Funktionalitäten nicht durch Verwendung von abstrakten Klassen und Interfaces umgesetzt, sondern werden im Bereich der Automatisierungstechnik identifiziert und separat implementiert, wie in der nachfolgenden Figur 3 dargestellt.To separate functional units 25 in an object-specific platform layer. These are integrated via standardized interfaces 26 by means of preconfigured function calls and enable integration of customer-specific implementations, such as, for example, customer-specific applications ("APL") or troubleshooting functions ("ERP"). In this case, for example, a labeling machine behaves at a Transition from a "starting" state to an "execute" state due to the expiring functions other than a packing machine. Also, the "execute" state may be different even with the respective machines. Therefore, the implementation of the state machine is to be separated from the implementation of the object-specific functional units of the respective machine. The same applies to function-specific modules 27 and extensions as well as corresponding interfaces to the hardware (devices). In contrast to software programming with an object-oriented programming language, these functionalities are not implemented by using abstract classes and interfaces, but are identified in the field of automation technology and implemented separately, as shown in the following FIG.
[0059] Figur 3 zeigt einen Ausschnitt eines Quellcodes einer Ausführungsform einer frameworkbasierten Steuerung ("SW-Framework Code") für ein Automatisierungssystem, das einen Zustandswechsel von einem Zustand "idle" ("stillstehend") zu einem Zustand "starting" ("starten") darstellt. Hierbei sind an definierten Stellen der frameworkbasier- ten Steuerung Funktionsaufrufe ("CaII before_Change()" und CaII after_Change()") eingefügt. Diese erlauben eine Trennung der Steuerung von verschiedenen funktions-, objekt- bzw. plattformspezifischen Funktionen ("Function before_Change()" und "Function af- ter_Change()"), die in den extern angeordneten objektspezifischen Funktionseinheiten bzw. funktionsspezifischen Modulen ("Maschinen-spez. Code") hinterlegt sind. Auf diese Weise wird das Einbringen von zusätzlichem Quelltext bzw. Quellcode für diese Funktionen in die frameworkbasierte Steuerung vermieden. Um Fehlermeldungen eines Compilers an diesen Schnittstellen zu vermeiden, müssen die Funktionsaufrufe deklariert werden. Diese Deklaration findet außerhalb des Framework-Quellcodes statt. Bei einer konsequenten Einhaltung dieser Vorgehensweise können somit die funktions-, objekt- bzw. plattformspezifi- sehen Funktionen grundsätzlich in externen Paketen bzw. Dateien ausgelagert werden.FIG. 3 shows a section of a source code of an embodiment of a framework-based control ("SW framework code") for an automation system which starts a state change from a state "idle" to a state "starting" "). Function calls ("CaII before_Change ()" and "CaII after_Change ()") are inserted at defined points of the framework-based control, which allow the control to be separated from various function, object, or platform-specific functions ("Function before_Change () "and" Function af ter_Change () "), which are stored in the externally arranged object-specific functional units or function-specific modules (" machine-specific code "), thus introducing additional source code or source code for these functions In order to avoid error messages from a compiler at these interfaces, the function calls must be declared.This declaration takes place outside of the framework source code.Thus, if this procedure is adhered to consistently, the functional, object or platform-specific basically see functions in external packages or files be stored.
[0060] Eine Realisierung der frameworkbasierten Steuerung kann somit unabhängig von einer Erstellung der objektspezifischen Funktionseinheiten bzw. der funktionsspezifischen Module erfolgen. Nach einer objektunabhängigen Fertigstellung der frameworkbasierten Steuerung kann dann eine Einbindung der maschinenspezifischen Funktio- nalitäten mittels der objektspezifischen Funktionseinheiten über jeweils an vorab identifizierten Stellen vorzusehenden Funktionsaufrufe erfolgen. Die frameworkbasierte Steuerung selbst bleibt hierbei unberührt. Dies gilt natürlich auch für eine Implementierung von Schnittstellen zu externen Systemen, wie bspw. MMI, ERP, oder eine Fehlerbehandlung sowie Hardwareschnittstellen. So kann ein Kunde z.B. eigene Programme ausführen las- sen, ohne in den Framework-Quellcode der Steuerung eingreifen zu müssen, um bei-
spielsweise Zählerstände abzufragen, Benachrichtigungen bei Fehlerzuständen auszulösen oder um kundeneigene Steuerungen zu programmieren usw. Somit können auf diese Weise Fehlerquellen in der Steuerung minimiert werden, die ggf. z.B. zu unerwünschtem Verhalten des entsprechenden Objekts führen. Innerhalb der frameworkbasierten Steue- rung hat jede Schicht der Hierarchiestruktur, wie sie in Figur 1 dargestellt ist, eigene Funktionsaufrufe. Diese sind von Funktionsaufrufen anderer Schichten unabhängig und sind in Figur 2 schematisch dargestellt. Hierbei müssen grundsätzlich nicht alle Funktionsaufrufe tatsächlich mit einer objektspezifischen Funktionseinheit in Verbindung treten können, es ist ebenso möglich, diese als sogenannte "leere" Funktionsaufrufe auszuführen, die ohne Funktion sind bzw. zu einem späteren Zeitpunkt mit einer objektspezifischen Funktionseinheit oder einem funktionsspezifischen Modul verknüpft werden können.An implementation of the framework-based control can thus be carried out independently of a creation of the object-specific functional units or the function-specific modules. After object-independent completion of the framework-based control, integration of the machine-specific functionalities by means of the object-specific functional units can then take place via function calls to be provided in each case at previously identified points. The framework-based control itself remains untouched. Of course, this also applies to an implementation of interfaces to external systems, such as MMI, ERP, or error handling, as well as hardware interfaces. For example, a customer can have their own programs executed without having to intervene in the framework source code of the controller in order to For example, to query counter readings, trigger notifications in error conditions or to program customer-specific controls, etc. Thus, in this way sources of error in the control can be minimized, possibly leading to undesirable behavior of the corresponding object. Within the framework-based control, each layer of the hierarchy structure, as shown in FIG. 1, has its own function calls. These are independent of function calls of other layers and are shown schematically in FIG. In principle, not all function calls must actually be able to communicate with an object-specific functional unit; it is also possible to execute these as so-called "empty" function calls which have no function or are linked to an object-specific functional unit or a function-specific module at a later time can.
[0061] Figur 4 zeigt einen weiteren Aufbau einer Steuerung für ein Automatisierungssystem in schematischer Darstellung. Hierin bildet eine frameworkbasierte Steuerung (43) als objektunabhängiger Teil eine objektunabhängige Anlagenschicht (41). In der dar- gestellten Ausführungsform werden physikalische Elemente bzw. Objekte (nicht dargestellt) des zugrundeliegenden Automatisierungssystems, nämlich eine Lichtschranke, ein Motor und ein Temperaturgeber jeweils durch ein Äquivalent in einer sog. PlattformebeneFigure 4 shows a further structure of a controller for an automation system in a schematic representation. Herein, a framework-based control (43) as an object-independent part forms an object-independent plant layer (41). In the illustrated embodiment, physical elements or objects (not shown) of the underlying automation system, namely a light barrier, a motor and a temperature sensor are each represented by an equivalent in a so-called platform level
(42) in Form einer Funktionseinheit (44, 45, 46, 47, 48) abgebildet bzw. virtualisiert und zur Identifizierung beispielhaft mit dem Prävix „DEV" als Kurzform für „Device" gekennzeichnet.(42) in the form of a functional unit (44, 45, 46, 47, 48) imaged or virtualized and identified for identification by way of example with the previx "DEV" as a short form for "Device".
[ 0062] Jede Funktionseinheit (44, 45, 46, 47, 48) weist jeweils eine Anzahl vonEach functional unit (44, 45, 46, 47, 48) each has a number of
Steuerfunktionen (44a, 45a, 46a) zur Ansteuerung der realen Objekte (nicht dargestellt) auf. Des weiteren können die Funktionseinheiten (44, 45, 46, 47, 48) jeweils ein Simulationsmodul (45b) aufweisen, das zur besseren Übersicht lediglich in der Funktionseinheit (45) dargestellt ist, grundsätzlich aber in allen Funktionseinheiten (44, 45, 46, 47, 48) vor- gesehen werden kann. Somit bildet die Plattformebene (42) mittels der FunktionseinheitenControl functions (44a, 45a, 46a) for driving the real objects (not shown). Furthermore, the functional units (44, 45, 46, 47, 48) may each have a simulation module (45b), which is shown only in the functional unit (45) for a better overview, but in principle in all functional units (44, 45, 46, 47, 48) can be provided. Thus, the platform level (42) is formed by means of the functional units
(44, 45, 46, 47, 48) sowohl eine Abstraktionsschicht der Hardware (Device-Treiber) als auch die Simulationselemente. Die Funktionseinheiten (44, 45, 46, 47, 48) können mittels standardisierter Schnittstellen in direktem Kontakt mit der frameworkbasierten Steuerung(44, 45, 46, 47, 48) both an abstraction layer of the hardware (device driver) and the simulation elements. The functional units (44, 45, 46, 47, 48) can be in direct contact with the framework-based control by means of standardized interfaces
(43) stehen. Ebenso können Funktionseinheiten (45) aber auch mit anderen Funktionsein- heiten (44, 46, 47, 48) in Kontakt stehen.(43) stand. Likewise, functional units (45) can also be in contact with other functional units (44, 46, 47, 48).
[0063 ] Wann immer also die Steuerung (43) mit einem Hardware-Element kommuniziert will, wird nicht ein Ein- oder Ausgang der Hardware, bspw. durch Setzen oder Rücksetzen eines Bits o.a., benutzt, sondern es wird die für diese Hardware vorgesehene Funktionseinheit (44, 45, 46, 47, 48) durch Aufruf der entsprechenden Steuerfunktion (44a,
45a, 46a) der Funktionseinheit (44, 45, 46, 47, 48) eingesetzt. Ein zugrundeliegender Quelltext kann bspw. derart aufgebaut sein:Whenever the controller (43) wants to communicate with a hardware element, it does not use an input or output of the hardware, for example, by setting or resetting a bit, but it becomes the functional unit provided for this hardware (44, 45, 46, 47, 48) by calling the corresponding control function (44a, 45a, 46a) of the functional unit (44, 45, 46, 47, 48). An underlying source code can, for example, be constructed in such a way:
Lichtschrankel : DEV_Lichtschranke; Motort : DEVJVIOTOR;Photocell: DEV_Lichtschranke; Motort: DEVJVIOTOR;
Beginbegin
If Lichtschrankel. isθn() then beginIf light cabinet. isθn () then begin
Motorϊ.SetSpeed (...);Motorϊ.SetSpeed (...);
Motor1.Start(...); End; End;Motor1.Start (...); End; End;
[0064 ] Dieser Aufbau beitet den Vorteil, dass an keiner Stelle des eigentlichenThis construction has the advantage that at no point in the actual
Quelltext der frameworkbasierten Steuerung (43) ein direkter Bezug zu den tatsächlich verbauten Elementen bzw. Objekten stattfinden muss. Jede physikalische Verbindung zwischen Hard- und Software ist vielmehr in der Plattform-Schicht (42), d.h. in den Funktionseinheiten (44, 45, 46, 47, 48), versteckt.
Source text of the framework-based control (43) must be a direct reference to the actually installed elements or objects. Any physical connection between hardware and software is rather in the platform layer (42), i. in the functional units (44, 45, 46, 47, 48) hidden.