01.11.2013 Aufrufe

Bibliothekserstellung in CODESYS: Tipps für die effektive ...

Bibliothekserstellung in CODESYS: Tipps für die effektive ...

Bibliothekserstellung in CODESYS: Tipps für die effektive ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!