Mit der Symbolkonfiguration können Sie Symbolbeschreibungen für Projektvariablen erstellen. Sie fügen dazu mit Befehl „Projekt Objekt hinzufügen“ ein Objekt Symbolkonfiguration im Gerätebaum ein und geben dabei bestimmte Voreinstellungen mit. Siehe unten: Dialog „Symbolkonfiguration hinzufügen“.
Den Symbolkonfigurationseditor öffnen Sie dann durch einen Doppelklick auf das Objekt „Symbolkonfiguration“.
Dialog 'Symbolkonfiguration hinzufügen'
Funktion: Der Dialog dient dem Definieren von Voreinstellungen für ein Objekt „Symbolkonfiguration“.
Aufruf: Menü „Projekt Objekt hinzufügen Symbolkonfiguration“, Kontextmenü des Objekts Applikation.
„Kommentare in XML einschließen“ |
Exportiert die den Variablen zugewiesenen Kommentare mit in die Symboldatei. |
„OPC UA-Funktionalitäten unterstützen“ |
Hinweis: Verfügbarkeit und Bearbeitbarkeit dieser Option sind geräteabhängig.
|
Sehen Sie ausführlichere Informationen und Beispiele zu den Layout-Optionen im nachfolgenden Abschnitt "Symbolkonfigurationseditor". |
|
„Kompatibilitätslayout“ |
Diese Einstellung dient der Kompatibilität im Fall von alten Projekten. Das für den Client erzeugte Datenlayout wird soweit als möglich dem intern vom Compiler erzeugten Layout angeglichen. |
„Optimiertes Layout“ |
Empfohlen für neue Projekte. Berechnet das Ausgangslayout in der optimierten Form entkoppelt vom internen Compilerlayout. Hinterlässt keine Lücken für nicht veröffentlichte Elemente und hält die Anforderungen an die Speicherausrichtung der Datentypen strikt ein. Erfordert mindestens Compilerversion 3.5.7.0. |
Symbolkonfigurationseditor
Der Editor enthält eine Tabelle mit den bereits ausgewählten Variablen und eine Menüleiste für die Bearbeitung.
|
Über diese Schaltfläche können Sie folgende Kategorien von Variablen für die Aufnahme in den Konfigurationseditor ein- und ausschalten:
|
|
Übersetzen des Projekts. Voraussetzung für eine aktuelle Bereitstellung der Variablen im Konfigurationseditor. |
|
|
„Download“ |
Wenn Sie ein Gerät verwenden, das eine eigene Applikationsdatei für die Symbolkonfiguration
unterstützt, gibt es in der Symbolleiste zusätzlich diese Schaltfläche. Wenn Sie die
Symbolkonfiguration im Onlinebetrieb geändert haben, können Sie damit sofort die neue
|
„Tools“ |
„XSD-Schema-Datei speichern“: Dieser Befehl öffnet den Standarddialog zum Speichern einer Datei im Dateisystem. Sie können damit das XSD-Schema der Symboldatei beispielsweise zur Verwendung in externen Programmen bereitstellen. |
„Zugriffsrechte“ |
Sie können das Zugriffsrecht für ein Symbol durch einen Mausklick auf das Symbol in der Spalte „Zugriffsrechte“ verändern. Icons für Zugriffsrechte (in aufsteigender Reihenfolge)
Hinweis: Falls die Steuerung eine Benutzerverwaltung hat, können Sie mit Hilfe von Symbolgruppen ein client-spezifisches Zugriffsrecht auf dieselben Symbole definieren. |
„Maximal“ |
Zugriffsrecht, das Sie für dieses Symbol maximal vergeben können. |
„Attribut“ |
Wenn das Zugriffsrecht per Attribut zugewiesen wurde, wird hier ist ein entsprechendes Icon angezeigt. |
„Typ“ |
Ab CODESYS V3.5 SP6 werden auch Alias-Datentypen angezeigt. Beispiel: |
„Member-Variablen“ |
Sie können Variablen eines strukturierten Datentyps ebenfalls durch Aktivieren in
der Spalte „Symbole“ zur Symbolkonfiguration hinzufügen. Dies bewirkt zunächst, dass CODESYS für alle "Member"-Variablen Symbole exportiert. Über die Schaltfläche |
„Auswahlliste“ |
Bereits definierte Symbolgruppen |
|
Öffnet den Dialog „Hinzufügen einer neuen Symbolgruppe“ zur Eingabe eines Namens für diese Gruppe |
|
Öffnet den Dialog „Hinzufügen einer Kopie der ausgewählten Symbolgruppe“. Für die in der Auswahlliste gewählte Gruppe wird eine Kopie angelegt. Sie können
den Standardnamen ( |
|
Öffnet den Dialog „Umbenennen der ausgewählten Symbolgruppe“ zur Eingabe eines anderen Namens für die in der Auswahlliste gewählte Gruppe |
|
Öffnet eine Dialogbox mit der Nachfrage, ob die in der Auswahlliste gewählte Symbolgruppe gelöscht werden soll |
„Symbolrgruppenrechte konfigurieren“ |
Öffnet die Registerkarte „Symbolrechte“ des Geräteeditors. Im eingeloggten Zustand können Sie dort der in der Auswahlliste gewählten Symbolgruppe pro Benutzergruppe (Client) unterschiedliche Zugriffsrechte zuweisen. |
Siehe auch
Dialog 'Kommentare und Attribute'
„Erweiterte OPC UA-Informationen aktivieren“ |
Hinweis: Verfügbarkeit und Bearbeitbarkeit dieser Option sind geräteabhängig.
Bei aktivierter OPC UA-Einstellung werden Attribute gemäß folgender Regel mit in die Symboltabellen aufgenommen:
|
„Kommentare einbinden“ |
Voraussetzung: „Erweiterte OPC UA-Informationen aktivieren“ ist aktiviert.
|
„Attribute einbinden“ |
|
„Auch Kommentare und Attribute für Type-Nodes einbinden“ |
Voraussetzung: „Kommentare einbinden“ ist aktiviert.
|
„Namensraum-Node-Flags einbinden“ |
|
„Kommentare einbinden“ |
Für Compilerversions V3.5.5.x bis V3.5.8.0 beinhaltet dies die Einstellung „Doku-Kommentare bevorzugen“. |
„Attribute einbinden“ |
|
„Auch Kommentare und Attribute für Type-Nodes einbinden“ |
Voraussetzung: „Kommentare einbinden“ ist aktiviert.
|
Voraussetzung: „Kommentare einbinden“ ist aktiviert |
|
„Doku-Kommentare einbinden“ „Normale Kommentare “ „Immer beide Typen von Kommentaren einbinden“ „Doku-Kommentare bevorzugen, ansonsten normale Kommentare“ „Normale Kommentare bevorzugen, ansonsten Doku-Kommentare“ |
Die Optionen legen fest, welche Kommentare in die Symbolkonfiguration gespeichert werden. |
Voraussetzung: „Attribute einbinden“ ist aktiviert |
|
„Alle Attribute einbinden“ „Attribute einbinden, die starten mit“ „Attribute mit regulären Ausdrücken filtern“ |
Legt fest, welche Attribute in die Symbolkonfiguration gespeichert werden. |
„Einfache Namen auswählen“ |
Besteht hauptsächlich aufgrund der Rückwärtskompatibilität zu älteren Versionen, um das alte Verhalten nachzubilden. |
Einstellung: Synchronisierung mit IEC-Tasks konfigurieren
Für den synchronen konsistenten Zugriff wird im Laufzeitsystem bei der Bearbeitung einer Lese- oder Schreibanfrage vom symbolischen Client zunächst gewartet, bis ein Zeitpunkt gefunden wird, in dem keine IEC-Task ausgeführt wird. Sobald diese Lücke gefunden wird, wird der Neuanlauf der IEC-Tasks solange verhindert, bis alle Werte der Variablenliste kopiert wurden. Danach werden die IEC-Tasks wieder wie üblich geplant. Durch den synchronisierten konsistenten Zugriff kann es dadurch zu einem verzögerten Start von IEC-Tasks kommen, was sich als erhöhter Jitter zeigt. Da im Laufzeitsystem alle Applikationen von einem gemeinsamen Scheduler verwaltet werden, betrifft diese potentielle Verschlechterung des Echtzeitverhaltens alle Applikationen auf dem Gerät. Es sind also alle Applikationen des Geräts betroffen, unabhängig davon, ob diese eine Symbolkonfiguration enthalten oder ob diese aus einem oder mehreren CODESYS-Projekten auf die Steuerung geladen wurden. Daher lässt das Laufzeitsystem den synchronisierten konsistenten Zugriff nur zu, wenn dies alle Applikationen erlauben, die zum Zugriffszeitpunkt in der Steuerung geladen sind.
Die Einstellung finden Sie im Editor der Symbolkonfiguration im Menü „Einstellungen“. Außerdem finden Sie die Einstellung auch im Kontextmenü der Steuerung, wenn Sie den Befehl „Eigenschaften “ und dann in dem sich öffnenden Dialog die Registerkarte „Optionen“ wählen.
Bei Applikationen ohne Symbolkonfiguration finden Sie die Einstellung nur im Eigenschaftendialog.




HINWEIS

Nach Ändern der Einstellung müssen alle Applikationen auf dem Gerät per Download/Online-Change neu geladen werden und alle Bootapplikationen aktualisiert werden.
In welchen Fällen wird ein synchronisierter konsistenter Zugriff benötigt?
In der Regel besteht bei visualisierten Werten kein Bedarf für konsistente Werte, da es bei sich ändernden Werten meist nicht relevant ist, aus welchem IEC-Task-Zyklus diese stammen. Bei sich selten ändernden Werten sowieso nicht. Auch beim Schreiben bestehen meist keine harten Konsistenzanforderungen, da sich die Maschine, beispielsweise beim Schreiben von Rezepturen, typischerweise in einer Art von Standby-Modus befinden muss, in dem kein direkter Zugriff auf die als Rezeptur geschriebenen Werte erfolgt.
Dagegen werden insbesondere für Datenbankanbindungen zur Speicherung von Produktionsdaten
konsistente Werte benötigt. Bei getakteten Maschinen müssen diese Werte aber synchron
zum Produktionstakt (also pro hergestelltem Produkt ein Wertesatz) und nicht konsistent
in Bezug auf eine oder mehrere IEC-Tasks sein. Die Konsistenz in Bezug auf den Maschinentakt
muss aber bereits durch die IEC-Applikation gewährleistet sein. Hierfür werden typischerweise
die während eines Produktionstakts anfallenden Werte in einer globalen Variablenliste
gesammelt. Am Ende des Takts wird mit einer weiteren Variablen (BOOL
oder Zähler) dem symbolischen Client mitgeteilt, dass der Maschinentakt beendet und
somit die Werte gültig sind. Nun hat der Client die Chance die zum Produktionstakt
gehörenden Werte zur archivieren. Je nach Notwendigkeit kann das erfolgreiche Lesen
auch in der Gegenrichtung mittels einer freigegebenen Variablen angezeigt werden,
so dass gegebenenfalls die Produktion angehalten werden kann, wenn die Produktionsdaten
nicht archiviert werden konnten. Für diesen Anwendungsfall ist der synchronisierte
konsistente Zugriff nicht notwendig und hilfreich, da die Synchronisierung ja auf
Applikationsebene zu erfolgen hat.
Im Gegensatz dazu liegt der typische Einsatz des synchronisierten konsistenten Zugriffs durch symbolische Clients vor allem in der Prozessindustrie mit kontinuierlich laufenden Anlagen ohne Produktionstaktung, wenn beispielsweise zyklisch in einem festen Zeitraster von 60 s Prozesswerte konsistent geschrieben werden. Dies kann entweder über die Synchronisierung auf Applikationsebene analog zu den getakteten Maschinen (siehe oben), oder über die Synchronisierung des synchronisierten konsistenten symbolischen Zugriffs erfolgen. Letzteres hat den Vorteil, dass keine Logik im IEC-Programm implementiert werden muss und der Zugriff allein durch den Client gesteuert wird.




VORSICHT

Aufgrund des erhöhten Jitters ist das synchronisierte konsistente Monitoring nicht für Motion oder echtzeitkritische Anwendungen geeignet. Aus diesen Gründen sollte der synchronisierte konsistente Zugriff nur freigegeben und verwendet werden, wenn dies unbedingt erforderlich ist.
Wenn ein Client den durch diese Einstellung freigegebenen synchronen konsistenten Zugriff verwendet, hat dies auch Auswirkungen auf den Client. Zum einen kann hier je nach Scheduler des Laufzeitsystems die Antwortzeit auf Lese-/Schreibzugriffe mehr jittern, da gegebenenfalls noch auf eine Ausführungslücke der IEC-Tasks gewartet werden muss. Weiterhin können Lese- oder/und Schreibzugriffe scheitern, wenn IEC-Tasks sehr lange laufen (im Bereich von mehreren 100 ms) oder die CPU-Auslastung durch eine oder mehrere IEC-Tasks über einen längeren Zeitraum (im Bereich von mehreren 100 ms) bei nahezu 100% liegt. Die Verfügbarkeit der Werte hängt damit also auch von der Auslastung der Steuerung durch die IEC-Applikation ab.
Darüber hinaus kann der Client die Auswirkungen auf sich selbst und auf das Laufzeitsystem minimieren, wenn er bei der Definition der zu lesenden/schreibenden Variablenlisten Folgendes beachtet:
-
Nur auf diejenigen Variablen synchronisiert konsistent zugreifen, die unbedingt konsistent benötigt werden
-
Getrennte Variablenlisten für Variablen, die konsistent sein müssen und für Variablen, die inkonsistent sein dürfen
-
Variablenlisten mit sehr vielen konsistenten Variablen in mehrere kleinere Listen aufteilen
-
Leseintervalle für zyklisches Lesen von Werten so groß möglich wählen.
Unterstützung bei der aktuellen Konfiguration und mögliche Korrekturmaßnahmen
Rot markierte Einträge in der Symboltabelle zeigen Variablen an, die für den Export in die Symboldatei konfiguriert sind, aber gerade in der Applikation nicht gültig sind. Ursache kann beispielsweise sein, dass die Deklaration im Baustein entfernt wurde.
Ab Version 3.5.8.0 erhalten Sie einen Warnhinweis im Editor, wenn Variablen, für die Symbole konfiguriert sind, im IEC-Code nicht verwendet oder im Falle von E/A-Variablen nicht gemappt werden. Der Compiler weist außerdem auf Variablen hin, die in der Symbolkonfiguration aus veralteten Bibliotheksversionen referenziert werden.




HINWEIS

Variablen von Objekten, die im Programmcode nicht verwendet werden, werden standardmäßig nicht kompiliert und sind somit nicht in der Symbolkonfiguration verfügbar.
Aber: Variablen von nicht-kompilierten Objekten werden von CODESYS dennoch in der Symbolkonfiguration bereitgestellt, wenn eine der folgenden Bedingungen erfüllt ist:
-
Die Bausteineigenschaft „Immer binden“ ist aktiviert.
-
Das Pragmaattribut
{attribute 'linkalways'}
wird verwendet.
Beispiele zu den Datenlayouttypen
Beispiele zu den Layouttypen
Im Folgenden sehen Sie Beispiele aus einer IEC-Applikation, bei denen es durch nicht veröffentlichte Symbole, durch interne "unsichtbare" Pointer, oder durch eine "pack mode"-Definition über die Gerätebeschreibung zu Lücken im clientseitigen Speicherlayout kommen kann. Mit der Einstellung „Optimiertes Layout“ werden die Lücken vermieden, die Symboldatei enthält also je nach ausgewählter Layout-Einstellung unterschiedliche Angaben für Größe und Offset von Speicherstellen.
Beispiel: Große Struktur
// Beispiel einer großen Struktur, von der nicht alle Members veröffentlicht werden : // Example of a big structure, where not all members get published : STRUCT {attribute 'symbol':='readwrite'} PublicNumber : INT; {attribute 'symbol':='none'} InternalData : ARRAY[0..100] OF BYTE; {attribute 'symbol':='readwrite'} SecondNumber : INT; {attribute 'symbol':='none'} MoreData : ARRAY[0..100] OF BYTE; END_STRUCT END_TYPE
Resultierende Einträge in der Symboldatei, beachten Sie "size" und "byteoffset":
Symboldatei, Große Struktur, Option Kompatibilitätslayout
<TypeUserDef name="T_GrosseStruktur" size="208" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="104" vartype="VAR" /> </TypeUserDef>
Symboldatei, Große Struktur, Option Optimiertes Layout
<TypeUserDef name="T_GrosseStruktur" size="4" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="2" vartype="VAR" /> </TypeUserDef>
Beispiel: Struktur mit ungeraden Adressen
// Die folgenden Mechanismen können zu Komponenten mit nicht korrekter Speicherausrichtung führen: // The following mechanisms can cause misalignment: // - {attribute 'relative_offset':='…'} an einem Member / at a member // - {attribute 'pack_mode':='…'} in einer Strukturdeklaration / at a structure declaration // - target setting 'memory-layout\pack-mode' in der Gerätebeschreibung / in the device description {attribute 'pack_mode':='1'} TYPE UngeradeAdressen : STRUCT {attribute 'relative_offset':='3'} {attribute 'symbol':='readwrite'} PublicNumber : INT; {attribute 'symbol':='readwrite'} PublicValue : LREAL; END_STRUCT END_TYPE
Resultierende Einträge in der Symboldatei, beachten Sie "size" und "byteoffset":
Symboldatei, Struktur mit ungeraden Adressen, Option Kompatibilitätslayout
<TypeUserDef name="T_UngeradeAdressen" size="13" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="3" vartype="VAR" /> <UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="5" vartype="VAR" /> </TypeUserDef>
Symboldatei, Struktur mit ungeraden Adressen, Option Optimiertes Layout
<TypeUserDef name="T_UngeradeAdressen" size="16" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="8" vartype="VAR" /> </TypeUserDef>
Beispiel Funktionsbaustein
// Each POU contains some implicit variables, which do not get published. Depending on the data type these might cause memory gaps of different sizes. FUNCTION_BLOCK Baustein IMPLEMENTS SomeInterface VAR_INPUT in : INT; END_VAR VAR_OUTPUT out : INT; END_VAR VAR END_VAR
Jeder Baustein enthält interne Variablen, die nicht veröffentlicht werden. Wenn es
sich dabei um Datentypen wie beispielsweise __XWORD
handelt, entstehen dadurch im clientseitigen Datenlayout unterschiedlich große Speicherlücken,
je nachdem, ob auf einem 64-Bit- oder 32-Bit-System gearbeitet wird.
Resultierende Einträge in der Symboldatei für 64 Bit und 32 Bit beachten Sie "size" und "byteoffset":
Symboldatei, Funktionsbaustein, Option Kompatibilitätslayout, 64 Bit
<TypeUserDef name="T_Baustein" size="24" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="16" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="18" vartype="VAR_OUTPUT" /> </TypeUserDef>
Symboldatei, Funktionsbaustein, Option Optimiertes Layout, 64 Bit
<TypeUserDef name="T_Baustein" size="4" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" /> </TypeUserDef>
Symboldatei, Funktionsbaustein, Option Kompatibilitätslayout, 32 Bit
<TypeUserDef name="T_Baustein" size="12" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="8" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="10" vartype="VAR_OUTPUT" /> </TypeUserDef>
Symboldatei, Funktionsbaustein, Option Optimiertes Layout, 32 Bit
<TypeUserDef name="T_Baustein" size="4" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" /> </TypeUserDef>
Siehe auch