Bibliothekserstellung in CODESYS: Tipps für die effektive ...
Bibliothekserstellung in CODESYS: Tipps für die effektive ...
Bibliothekserstellung in CODESYS: Tipps für die effektive ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Bibliothekserstellung</strong> <strong>in</strong> <strong>CODESYS</strong>:<br />
<strong>Tipps</strong> <strong>für</strong> <strong>die</strong> <strong>effektive</strong> Vorgehensweise<br />
<strong>CODESYS</strong> Users‘ Conference 2013, Ralph Holz<br />
<strong>CODESYS</strong> ® a 3S-Smart Software Solutions GmbH trademark<br />
<strong>Bibliothekserstellung</strong><br />
Agenda<br />
1<br />
2<br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
• Grundlagen<br />
• Wichtige Eigenschaften<br />
Wie erzeugt man Bibliotheken?<br />
3<br />
Zehn Regeln zur <strong>Bibliothekserstellung</strong><br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
Grundlagen<br />
• E<strong>in</strong>e Bibliothek ist e<strong>in</strong>e Sammlung wiederverwertbarer Elemente<br />
wie :<br />
• POUs, z. B. Funktionen der Funktionsblöcke<br />
• DUTs wie Strukturen, Unions oder Enumerationen<br />
• Globale Variablen, Konstanten und Parameterlisten<br />
• Methoden und Eigenschaften von Schnittstellen<br />
• Textlisten, Bildersammlungen, Visualisierungen<br />
• Externe Dateien (z.B. Dokumentation)<br />
• Kurvenscheibentabellen<br />
© 3S-Smart Software Solutions GmbH<br />
Grundlagen<br />
<strong>Bibliothekserstellung</strong><br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
• E<strong>in</strong>e Bibliothek verwendet den Bibliotheksmanager, um andere zu<br />
referenzieren und somit ihren Inhalt wiederzuverwenden.<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
Wichtige Eigenschaften<br />
• Der Date<strong>in</strong>ame<br />
• Allgeme<strong>in</strong>e Bibliotheken: .library<br />
• Interface-Bibliotheken: _Itfs.library<br />
• Conta<strong>in</strong>er-Bibliotheken: _Cntr.library<br />
© 3S-Smart Software Solutions GmbH<br />
<strong>Bibliothekserstellung</strong><br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
Wichtige Eigenschaften<br />
• Der Date<strong>in</strong>ame<br />
• Erforderliche Metadaten wie Firma, Titel und Version<br />
System<br />
ProgramData<br />
CoDeSys<br />
Managed Libraries<br />
System<br />
CmpIecVarAccess<br />
3.5.1.0<br />
CmpIecVarAccess.library<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
Wichtige Eigenschaften<br />
• Der Date<strong>in</strong>ame<br />
• Erforderliche Metadaten wie Firma, Titel und Version<br />
• Optionale, aber empfohlene Eigenschaften wie:<br />
• Bibliothekskategorien<br />
• Namensraum der<br />
Bibliothek<br />
• Name des Autors<br />
• Beschreibung des<br />
Bibliotheks<strong>in</strong>halts<br />
Diese Option benötigt viel<br />
Speicher und WSTRING<br />
Unterstützung.<br />
Bitte nicht verwenden!<br />
© 3S-Smart Software Solutions GmbH<br />
<strong>Bibliothekserstellung</strong><br />
<strong>CODESYS</strong> Bibliotheken kurz und bündig<br />
Wichtige Eigenschaften<br />
• E<strong>in</strong>ige zusätzliche Eigenschaften, <strong>die</strong> <strong>die</strong> Verwendung der<br />
Bibliothek def<strong>in</strong>ieren<br />
• LanguageModelAttribute (Text) := 'qualified-access-only'<br />
• IsInterfaceLibrary (Bool) := True | False<br />
• IsConta<strong>in</strong>erLibrary (Bool) := True | False<br />
• Placeholder (Text)<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Templates<br />
© 3S-Smart Software Solutions GmbH<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Bibliothekstypen<br />
• Allgeme<strong>in</strong>e Bibliothek<br />
Standard-Typ e<strong>in</strong>er Bibliothek. Ke<strong>in</strong>e spezielle Vorgehensweise<br />
notwendig.<br />
• Conta<strong>in</strong>er-Bibliothek<br />
Ermöglicht <strong>die</strong> e<strong>in</strong>fache Verwendung von zusammengehörenden<br />
Bibliotheksgruppen<br />
Veröffentlicht alle ihre auf oberster Ebene referenzierten Bibliotheken<br />
Enthält selbst ke<strong>in</strong>e Implementierung<br />
• Interface-Bibliothek<br />
Def<strong>in</strong>iert <strong>die</strong> Interfaces (Schnittstellen) zwischen<br />
Softwarekomponenten<br />
Kann nur Elemente enthalten, <strong>die</strong> ke<strong>in</strong>en Code erzeugen (Konstanten,<br />
Strukturen, Interfaces, …)<br />
Kann erweitert werden – muss aber kompatibel bleiben<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Wie referenziert man andere Bibliotheken<br />
• Allgeme<strong>in</strong>e Bibliothek<br />
Werden immer mit Platzhalter referenziert<br />
• Conta<strong>in</strong>er-Bibliothek<br />
Werden direkt mit e<strong>in</strong>er festen Version referenziert<br />
• Interface-Bibliothek<br />
Werden immer als neueste Bibliothek mit * referenziert<br />
© 3S-Smart Software Solutions GmbH<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Bibliotheksstruktur<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Was ist e<strong>in</strong> Namensraum?<br />
• E<strong>in</strong>e weltweit e<strong>in</strong>deutige Folge late<strong>in</strong>ischer Zeichen<br />
• So kurz wie möglich!<br />
• z.B. „LAT“ <strong>für</strong> e<strong>in</strong>e Bibliothek, <strong>die</strong> „Lists and Trees“ behandelt<br />
• Registrierung der Platzhalter erfolgt unter: libregistry@codesys.com<br />
• Jedes Setup von <strong>CODESYS</strong> enthält <strong>die</strong> aktuelle Version von „Prefix.pdf“.<br />
In <strong>die</strong>sem Dokument stehen <strong>die</strong> aktuell registrierten Namensräume.<br />
© 3S-Smart Software Solutions GmbH<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Was ist e<strong>in</strong> Namensraum?<br />
• Identifiziert e<strong>in</strong>e Bibliothek auf weltweit e<strong>in</strong>deutige Weise<br />
• Jede Bibliothek sollte mit folgender Eigenschaft markiert se<strong>in</strong>:<br />
LanguageModelAttribute (Text) := 'qualified-access-only‘<br />
Mit <strong>die</strong>sem E<strong>in</strong>trag kann auf <strong>die</strong> Symbole der Bibliothek nur noch<br />
qualifiziert zugegriffen werden.<br />
Somit ist es auch möglich, ohne Probleme <strong>in</strong> verschiedenen<br />
Bibliotheken gleiche Symbole zu verwenden.<br />
– CL2.Send(); SIO.Send();<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Bibliothekskategorien<br />
• Applikation<br />
Für <strong>die</strong> direkte Verwendung durch den Anwender. E<strong>in</strong>fache<br />
Verwendung, z. B. zur Verwaltung der verwendeten Ressourcen. Ihre<br />
Schnittstellen s<strong>in</strong>d <strong>in</strong> CFC gut verwendbar.<br />
• Intern<br />
Werden <strong>in</strong> e<strong>in</strong>em <strong>CODESYS</strong>-Projekt durch <strong>CODESYS</strong>-Plug<strong>in</strong>s<br />
e<strong>in</strong>gefügt. Nicht von Hand e<strong>in</strong>fügen oder löschen.<br />
• System<br />
Direkte Abhängigkeit zum <strong>CODESYS</strong> Laufzeitsystem. Nicht direkt <strong>in</strong><br />
e<strong>in</strong>em <strong>CODESYS</strong> Projekt verwenden, sondern <strong>in</strong> Bibliotheken, um<br />
dem Anwender e<strong>in</strong>e schöne Schnittstelle zu bieten.<br />
© 3S-Smart Software Solutions GmbH<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Bibliothekskategorien<br />
• Jedes Setup von <strong>CODESYS</strong> enthält <strong>die</strong> aktuelle Version der Datei<br />
„LibraryCategoryBase.libcat.xml “<br />
• Mit Hilfe <strong>die</strong>ser Datei ist es möglich, eigene Unterkategorien zu<br />
erzeugen.<br />
<br />
2225F435-D4BE-40a7-9B1C-C753ED183FF0<br />
1.0.0.0<br />
<br />
<br />
E98088BB-59F5-4096-8784-4443932920DF<br />
<br />
Composer<br />
<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Platzhalter<br />
• Der Standard, um andere Bibliotheken zu referenzieren: „Platzhalter-<br />
Referenzen“<br />
• Zur Gewährleistung konsistenter Beziehungen zwischen<br />
unterschiedlichen Bibliotheken<br />
• Erzeugen e<strong>in</strong>e <strong>in</strong>direkte Beziehung zwischen Bibliotheken.<br />
• Um <strong>die</strong> Referenz e<strong>in</strong>er „Unter“-Bibliothek zu verändern, muss nur <strong>die</strong><br />
Platzhalter-Def<strong>in</strong>ition verändert werden.<br />
© 3S-Smart Software Solutions GmbH<br />
Platzhalter<br />
• <strong>CODESYS</strong> kennt drei Orte zur Platzhalterdef<strong>in</strong>ition.<br />
• Die Gerätebeschreibung<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
<br />
…<br />
<br />
3S CANopenDevice, 3.5.1.0<br />
(3S - Smart Software Solutions GmbH)<br />
<br />
…<br />
<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
Platzhalter<br />
• <strong>CODESYS</strong> kennt drei Orte zur Platzhalterdef<strong>in</strong>ition.<br />
• Gerätebeschreibung<br />
• Bibliotheksprofil<br />
• <strong>CODESYS</strong> Projekt<br />
<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
Namenskonventionen<br />
• Die Bibliotheks-Guidel<strong>in</strong>es schlagen e<strong>in</strong>e Art der ungarischen<br />
Notation vor.<br />
• Bei <strong>die</strong>ser Notation bezeichnet der<br />
Name anhand e<strong>in</strong>es Präfix den<br />
Variablen-Typ.<br />
• E<strong>in</strong>ige Beispiele:<br />
• Die Hilfe enthält hierzu das<br />
Kapitel:<br />
© 3S-Smart Software Solutions GmbH<br />
E<strong>in</strong>fache <strong>in</strong>telligente Interfaces<br />
• Zwei Arten von Interfaces<br />
• Externe Interfaces – <strong>in</strong> der endgültigen Applikation<br />
• Interne Interfaces – alle anderen<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Vorschlag <strong>für</strong> externe Interfaces:<br />
• Verwenden Sie reduzierte, vere<strong>in</strong>fachte Parameter-Typen, damit sich<br />
der Anwender um se<strong>in</strong>e Applikation kümmern kann und sich nicht mit<br />
gefährlichen und schwierigen Datentypen wie Po<strong>in</strong>tern und Adressen<br />
(ADR) ause<strong>in</strong>ander setzen muss.<br />
• Interfaces sollten <strong>für</strong> <strong>die</strong> Verwendung <strong>in</strong> CFC optimiert se<strong>in</strong>.<br />
Optimalerweise ist der 1. E<strong>in</strong>gang und der 1. Ausgang e<strong>in</strong> boolescher,<br />
somit kann e<strong>in</strong> Bauste<strong>in</strong> auch problemlos <strong>in</strong> Kontaktplan verwendet<br />
werden<br />
• Verwenden Sie das allgeme<strong>in</strong>e Verhaltensmodell aus unseren<br />
Bibliothekstemplates.<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
Benutzerfreundliches Fehlerhandl<strong>in</strong>g<br />
• E<strong>in</strong>e Bibliothek sollte nur Fehlercodes zurückgeben, <strong>die</strong> <strong>in</strong> der<br />
Bibliothek dokumentiert s<strong>in</strong>d (Konstanten oder Enumerationen).<br />
• Es ist bequem, aber absolut nicht empfohlen, Fehlercodes aus<br />
untergelagerten Bibliotheken unbehandelt weiterzugeben.<br />
• Fremde Fehlercodes sollten auf eigene Fehler „gemapped“ werden<br />
© 3S-Smart Software Solutions GmbH<br />
Veröffentlichen bzw. Weitergabe von Bibliotheken<br />
<strong>Bibliothekserstellung</strong><br />
Wie erzeugt man Bibliotheken?<br />
• Der Quellcode e<strong>in</strong>er Bibliothek sollte nie ungeschützt<br />
weitergegeben werden.<br />
• Bibliotheken sollten nur als *.compiled.library veröffentlicht werden.<br />
• Zusätzlich sollte <strong>in</strong> Bibliotheken e<strong>in</strong> Benutzermanagement<br />
e<strong>in</strong>geführt werden.<br />
• Bitte <strong>die</strong> Sichtbarkeit nicht e<strong>in</strong>schränken <strong>für</strong> <strong>die</strong> Objekte<br />
• Projekt<strong>in</strong>formation<br />
• Bibliotheksverwalter<br />
© 3S-Smart Software Solutions GmbH
<strong>Bibliothekserstellung</strong><br />
Zehn Regeln zur <strong>Bibliothekserstellung</strong><br />
• E<strong>in</strong>en “schönen” Date<strong>in</strong>amen wählen (erforderlich).<br />
• E<strong>in</strong>en e<strong>in</strong>deutigen Namensraum registrieren (erforderlich).<br />
• Die Projekt<strong>in</strong>formation ausfüllen (erforderlich).<br />
• Andere Bibliotheken korrekt referenzieren (erforderlich).<br />
• E<strong>in</strong>fache <strong>in</strong>telligente Interfaces entwerfen (erforderlich).<br />
• E<strong>in</strong> benutzerfreundliches Fehlerhandl<strong>in</strong>g implementieren<br />
(erforderlich).<br />
• Auf richtige Art veröffentlichen (erforderlich).<br />
• Templates zur Erstellung nutzen(optional).<br />
• E<strong>in</strong>e bekannte Projektstruktur verwenden (optional).<br />
• E<strong>in</strong>e klare Namenskonvention verwenden (optional).<br />
© 3S-Smart Software Solutions GmbH