TIA TIA - iec 61131-3 - symbolische Namen

Kieler

Level-2
Beiträge
763
Reaktionspunkte
86
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich bin nun schon nahe 30zig Jahre im Bereich der Automatisierung tätig. Aber man macht natürlich trotzdem immer wieder Fehler.

In einem aktuellem Projekt, betreue ich für einem Kunden, die Leittechnik auf der Basis von iFIX. Jetzt wurde eine größere S7-1500 angebunden. In meiner unendlichen Güte habe ich mich auf eine symbolische Adressierung der Variablen eingelassen. Im Nachhinein hat das meinen Aufwand verzehnfacht. Der Treiber in iFIX war noch nicht ganz rund und im SPS Programm wurde ein unendliche Verschachtelungstiefen (Struktur in Struktur in Struktur) verwendet. Was mich aber richtig in die Verzweiflung getrieben hat, sind die verwendeten symbolischen Namen. Offensichtlich werden diese von TIA akzeptiert, aber nicht bestimmt nicht von allen anderen Systemen. Es wurde wirklich alles verwendet was die deutsche Tastatur so hergibt, wobei die deutschen Umlaute noch das harmloseste sind. Aber er verwendet in seiner seinem symbolischen Namen (Struktur, Baustein, Variablen) Leehzeichen, #, /, - und als Krönung ein Punkt. Ein Punkt ist doch eigentlich das Trennzeichen zwischen Struktur und Variable.

Da stellt sich für mich die Frage ob die IEC 61131-3 oder eine andere Norm nicht Vorgaben für die Symbolik macht. Also nicht so Sachen wie die KKZ (Kraftwerks Kennzeichen System). Eher das man keine Leerzeichen, Umlaute und Sonderzeichen verwenden soll.

Kennt sich jemand aus? Kann mir geholfen werden? Oder verwendet ihr auch alles was TIA zulässt und nur ich bin in der neuen Zeit noch nicht angekommen?
 
Was hast du denn für einen Anbindungstreiber, OPC?

Soweit ich das mitbekommen habe, gab es da selbst beim Simatic-Net OPC-Server mal eine Umstellung bezüglich der Symbole und der erlaubten Zeichen. Vermutlich wurde sich vorher nicht an die Spezifikation gehalten, und dann nach einem Update doch (ähnliches machte Siemens auch bei der Profinet Norm bezüglich Gerätenamen). Das war aber nicht mein eigenes Projekt, darum weiß ich nicht mehr die genaue Beschreibung, es war aber auch das Problem mit "." im Symbolnamen.

Ich programmiere immer noch bei TIA und der 1500 nur ohne Sonderzeichen und Bezeichner nach IEC-61131-3 Spezifikation (keine Ziffern am Anfang usw.), weil es erfahrungsgemäß irgendwo dann doch zu Problemen führt. Leider erlaubt TIA mittlerweile wirklich alles an Symbolen (nicht IEC konform) und es gibt auch keine Voreinstellung dass man das nicht möchte.
 
Da müsstest du die Norm kaufen, die letzte Entwurfsversion (Draft) gab es aber mal im Internet zum Download als pdf. In großen Teilen sollte das noch der aktuelle Stand sein.
2.1.2 Identifiers
An identifier is a string of letters, digits, and underline characters which shall begin with a letter or
underline character.

The case of letters shall not be significant in identifiers, e.g., the identifiers abcd, ABCD, and aBCd
shall be interpreted identically.

Underlines shall be significant in identifiers, e.g., A_BCD and AB_CD shall be interpreted as different
identifiers. Multiple leading or multiple embedded underlines are not allowed; for example, the
character sequences __LIM_SW5 and LIM__SW5 are not valid identifiers. Trailing underlines are
not allowed; for example, the character sequence LIM_SW5_ is not a valid identifier.
At least six characters of uniqueness shall be supported in all systems which support the use of
identifiers, e.g., ABCDE1 shall be interpreted as different from ABCDE2 in all such systems. The
maximum number of characters allowed in an identifier is an implementation-dependent
parameter.

Und dann kann man sich aus der formalen Sprachbeschreibung für "identifier" im Anhang noch die erlaubten Zeichen herauslesen.
letter ::= 'A' | 'B' | <...> | 'Z' | 'a' | 'b' | <...> | 'z'
digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
identifier ::= (letter | ('_' (letter | digit))) {['_'] (letter | digit)}
Das Format dieser Beschreibung ist in einer Metasprache namens BNF (Backus-Naur-Form) verfasst.
Die Beschreibung für "identifier" sagt aus, dass die Produktion "identifier" mit einem Zeichen aus "letter" beginnen muss. "letter" ist oben beschrieben mit Zeichen von a bis z in Groß- oder Kleinschreibung. Der Unterstrich ist in "letter" nicht vorhanden, und darf nur an den Stellen der Produktion für "identifier" eingebaut werden. Daraus lässt sich auch ableiten, dass keine zwei Unterstriche hintereinander erlaubt sind. An diese Spezifikation hat sich Step7 in den Datenbausteinvariablen gehalten.
 
Danke Thomas,

das ist schon ziemlich was ich gesucht habe. Zumindest weiß ich jetzt wo ich weiter suchen muss.
Warum ist das TIA völlig egal?
Warum hält man sich als Anwender nicht wenigstens ansatzweise daran?
 
Ich verwende einfach TIA nicht :ROFLMAO: aber in meinen Symbolen nutze ich nur A-Z 0-9 und _ als Leerzeichen. Ob es da wirklich eine Norm drüber gibt weiß ich nicht.

Du bist eben einfach gut. Umlaute kann ich ja vielleicht noch verstehen. Wir sind in Deutschland. Aber wer bitte verwendet Leerzeichen, Raute und Schrägstrich und Punkte ?? Geht es noch?
 
Weil Siemens sich auf den Standpunkt stellt: sie erfüllen die Norm, und alles was darüber hinausgeht sind erlaubte Zusatzelemente.

https://support.industry.siemens.com/cs/de/de/view/50204938

Wenn sie z.B. den Unterstrich überhaupt nicht erlauben würden, dann wäre das nicht normkonform. Letztendlich ist also der Anwender selber dafür verantwortlich, wenn gefordert sich genau an die Spezifikation zu halten. Die man darüber hinaus auch erst einmal kennen muss, da nicht frei verfügbar sondern in Summe für alle Teile so an die 1000 Euro kosten dürfte. Außerdem ist die Spezifikation auch nicht unbedingt für den Anwender zu gebrauchen, sondern eher für jemanden der eine Programmierumgebung IEC-konform aufsetzen möchte.

Aber ich kenne so ungefähr dein Problem, ich habe kürzlich auch eine 1200er an ein WinCC über den symbolischen Kanal anbinden müssen, und der Programmierer hat auch richtig Wildwuchs bei den Bezeichnern betrieben, alles verwendet was der Zeichenvorrat hergibt, mehrfache Leerzeichen, Rechtschreibfehler ohne Ende usw. die man dann alle in seinem System hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So richtig an ich diesen Ansatz von Siemens nicht verstehen. Unter Step7 war man an dieser Stelle doch auch viel strenger. Warum konnte ich unter Step7 keine Symbol "_#+#_" anlegen und TIA nimmt es mit Begeisterung? Wieso hat man sich dann auch nur noch im Ansatz an die IEC gehalten.

Und nur weil die IEC teuer ist, kann nicht bedeuten das ich mich nicht daran halten muss. Die VDE Vorschriften sind auch teuer und schwer zu lesen und ich muss mich trotzdem daran halten.
 
Du bist eben einfach gut. Umlaute kann ich ja vielleicht noch verstehen. Wir sind in Deutschland. Aber wer bitte verwendet Leerzeichen, Raute und Schrägstrich und Punkte ?? Geht es noch?

Umlaute kann ich gar nicht verstehen. Eben weil es sie fast nur in Deutschland gibt. Hast du mal Änderungen machen müssen wenn der PC die Tastatur auf Fremdsprache eingestellt ist ? Und bei deinem Projekt kann ich mit nicht vorstellen das der Lieferant nur nach D liefert
 
Und nur weil die IEC teuer ist, kann nicht bedeuten das ich mich nicht daran halten muss. Die VDE Vorschriften sind auch teuer und schwer zu lesen und ich muss mich trotzdem daran halten.

Der Hintergrund der IEC Norm ist aber ein anderer. Wenn du ein normkonform geschriebenes Programm von einer anderen Programmierumgebung nimmst, dann sollte es unter der anderen ebenfalls normkonformen Programmierumgebung prinzipiell einsetzbar sein. Wenn du also z.B. unter Codesys streng nach IEC programmierst, dann sollte sich der Code auch unter TIA verwenden lassen. Was mit Einschränkungen auch der Fall ist.
Wenn du nun aber unter TIA selber nicht-normkonform programmierst, dann ist das innerhalb des TIA-Universums zwar erlaubt, aber du kannst nicht erwarten deinen Code dann unter einem anderen IEC-System verwenden zu können.

Anders als die VDE ist das keine allgemeingültige Vorschrift. In deinem Fall hättest du also dem Programmierer der 1500 explizit vorgeben müssen, sich bei der Vergabe der Namen von Bezeichnern genau an die IEC 61131-3 zu halten.
 
Zurück
Oben