TIA Warnung vor der Nutzung von "/" in Symbolnamen

NBerger

Level-3
Beiträge
1.704
Reaktionspunkte
525
Zuviel Werbung?
-> Hier kostenlos registrieren
Zum allgemeinen: TIA V17.0.0.4

Ich nutze gerne Konstanten um im Projekt einen Index mit Symbolischer Darstellung anzeigen zu lassen. Nur für die Lesbarkeit.
Ein Beispiel:
Code:
"VM_Ventile".MV["MV_A_Injektor_SF_MB1"].ON
dabei ist "MV_A_Injektor_SF_MB1" die Ventilnummer

Eigendlich kann ja jedes Zeichen in der Symbolik genutzt werden, es kommt aber zu fogendem Problem:

Der Symbolname: "MV_A_Injektor_MS_MB1/2" wird sporadisch (keine Ahnung wann genau) in folgendes vom TIA geändert:

Code:
"VM_Ventile".MV["MV_A_Injektor_MS_MB1/2"].ON
in
Code:
"VM_Ventile".MV["MV_A_Injektor_MS_MB1"/2].ON

Der Integerwert wird halbiert...

Habe einen Moment gebraucht um dahinter zu kommen. Werde das "/" nicht mehr nutzen...
 
Werde das "/" nicht mehr nutzen...
:unsure:
Praktisch wird von allen Sonderzeichen einschließlich Umlauten und Leerzeichen abgeraten und deren Verwendung ist daher insbesondere unter "gestandenen" SPS-Programmierern verpönt.


PS:
@Hesse hat natürlich Recht, dass der Unterstrich die berühmte Ausnahme darstellt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Tip werde ich bei der Vergabe beachten.
Ich versuche aber generell so weing wie möglich Sonderzeichen oder ähnliches zu nutzen, da aus erfahrung viele Programmierumgebungen mit soetwas nicht klar kommen.
Ich beginne bei Konstaten die "Variable" mit "Konst" oder ähnlich damit der Anwender nachher weiß was das ist nund auch nicht einfach anfängt daran zu ändern und ich erwähne das auch noch im Kommentar.

Das das mit den Zeichen schlecht klappt habe ich schon bei den ET Stationsnamen festgestellt da kann man auch nicht alles verwenden.
Ist etwas blöd da ich das BMK nehmen wollte wegen der durchgängigkeit und auffindbarkeit, leider nuss man die Namen das von Hand so anpassen das es lesbar bleibt, was TIA automatisch Ändert wenn es nicht passt geht garnicht.

Schönes Wochenende
 
Der Unterstrich ist zwar ein Sonderzeichen, hat aber eigentlich keine steuerungstechnische Bedeutung.
Deswegen kann er als Teil einer Benamung (z.B. von Variablen) genutzt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ist auch schon öfter aufgefallen, dass TIA das Anführungszeichen in bestimmten Fällen einfach verschiebt. (Glaube, wenn man die Variable aus einem FUP-Netzwerk in ein SCL-Netzwerk herauskopiert.) Hat nicht unbedingt etwas mit dem / als Sonderzeichen zu tun, ist nur in dem Fall besonders doof, da er das nicht mal als Fehler erkennt und man sich beim Debugging den Wolf sucht.
 
zählt der "_" (Unterstrich) nicht auch zu den Sonderzeichen ?
Doch, das tut er.
Aber er hat schon seit ewigen Zeiten die Bedeutung, optisch zu trennen und gleichzeitig optisch zu verbinden. Er ist ein "ein-Bisschen-Leerzeichen".
Programmierer müssen wohl von Anfang an faul gewesen sein, denn sie haben die grösste Taste (nämlich die Leertaste) als wichtiges Trennzeichen auserkoren.
OP-Code Leertaste 1.Operand Leertaste 2. Operand Leertaste ... u.s.w. ...
Damit wurde das Leerzeichen zu einer "radikalen" Trennung zwischen z.B. Operanden.
Für die symbolischen Namen der Operanden wünschte man sich natürlich gelegentlich auch eine optische Trennung zwischen den TeilBegriffen in den OperandenNamen, die aber keinesfalls einen einzigen Operanden in Stücke - sprich in mehrere Operanden - zerhacken durfte.
Für diesen Zweck wurde der Unterstrich ausgeguckt.
Damit kann man einzelne Buchstaben- oder ZiffernGruppen optisch in eine etwas lesbarere Form auseinanderziehen und gleichzeitig ihre unveränderte ZusammenGehörigkeit dokumentieren.
Buchstaben waren in der DatenVerarbeitung damals die GrossBuchstaben.
Als viel später auch die KleinBuchstaben in der DV Einzug hielten, kamen geizige Programmierer auf die alternative und zeichensparende Idee, das CamelCasing zu erfinden, um den gleichen Zweck SpeicherPlatz-schonend zu erfüllen.
Na ja, sooo geizig waren Programmierer nicht alle. Aber man wollte z.B. in Datei- und OrdnerNamen, die z.B. unter CP/M und DOS lange auf ohnehin nur 8 Zeichen beschränkt waren, nicht auch noch eines geschweige denn mehrere dieser 8 Zeichen für Unterstriche verschwenden.

Kurzum: Der Unterstrich hat "traditionell" eine ganz bestimmte Funktion/Bedeutung (für die er vielleicht sogar speziell erfunden wurde? ;o) und wir sollten ihn auch weiterhin in dieser Bedeutung verwenden oder zumindest für diesen Zweck respektvoll freihalten.
 
Habe erst wieder ein Programm gesehen, da hat der Programmier statt eines Array[1..2] OF UDT zwei Tags mit dem Namen xxx[1] und xxx[2] verwendet. Auf so eine Idee muss man erst kommen. Siemens setzt das natürlich auch wieder in Anführungszeichen.
 
Für Symbolnamen sollte man sich unbedingt auf die Zeichen A..Z, a..z, 0..9 und Unterstrich _ beschränken. Die Verwendung sprachspezifischer Sonderzeichen wie die deutschen Ä Ö Ü ä ö ü ß ist schon grenzwertig, besonders im internationalen Umgang mit Projekten, wenn die Projekte auch auf PC mit andersprachigem Tastaturlayout bearbeitet werden. Wenn ein dänischer Programmierer z.B. die Zeichen ø æ in Symbolnamen verwendet, dann würde man sich auch aufregen ... Für professionelle Programmierer sollte ein bisschen mitdenken nicht zuviel verlangt sein. Nicht jeden Unfug, den Siemens einführt, muß man auch mitmachen.

Auf keinen Fall sollte man Leerzeichen und Zeichen verwenden, die schon als Operatoren oder in der Syntax verwendet werden. Dann liest sich Code sicherer und die Chance wird geringer, daß die suboptimal programmierten TIA-Editoren Zeichen falsch interpretieren, wo dann gut gemeint vor der Verwendung von diesem oder jenem Sonderzeichen gewarnt wird ...

Harald
 
Für Symbolnamen sollte man sich unbedingt auf die Zeichen A..Z, a..z, 0..9 und Unterstrich _ beschränken. Die Verwendung sprachspezifischer Sonderzeichen wie die deutschen Ä Ö Ü ä ö ü ß ist schon grenzwertig, besonders im internationalen Umgang mit Projekten, wenn die Projekte auch auf PC mit andersprachigem Tastaturlayout bearbeitet werden.
Siemens unterstützt dich bei deiner Anregung, ab TIA V18:
1669108156573.png
 
Wer vor hat, das VersionControlInterface zu nutzen, sollte diese Zeichen (und auch die von Windows reservierte Schlüsselworte wie z.B. Aux, Com1, LPT1...) weder bei der Bausteinbenennung noch bei den "Ordnernamen" verwenden. Da wird nämlich versucht, gleichlautende Ordnernamen bzw. Dateinamen im Windows anzulegen, was dann scheitert.
 
Und bei der Nutzung von OPC könnte es doch auch lustig werden, da dort doch die "Variablen" in einer Art Verzeichnisstruktur mit / oder \ aufgebaut sind, oder?
Bei OPC UA gibt es einen BrowsePath. Dieser wird zwar in Dokumenten in Beispielen gerne mal mit dem "/" als Trennzeichen dargestellt. Technisch (auf der Leitung) wird er aber immer als Array von Strings übertragen, daher tritt das Problem höchstens in Anwendungen auf, die eine Ein-/Ausgabe eines BrowsePaths erlauben und "zu doof" programmiert wurden, oder in auf OPC UA aufsetzenden Spezifikation, bei denen man sich der Problematik nicht bewusst war. Die Spezifikation "PLCopen OPC-UA Client for IEC61131-3" hatte z.B. in der ersten Version hier dieses Problem.

Beim OPC UA Server der Siemens PLCs gibt es dann noch bei der "Standard-SIMATIC-Server-Schnittstelle" das Thema, dass die automatisch generierten Knoten String-NodeIds erhalten, die aus der Hierarchie im TIA Portal heraus mit den dortigen Identifiern erzeugt werden. Die Generierung dieser Strings kommt mit allen Zeichen zurecht, die in TIA Portal in Identifiern erlaubt sind, und auch mit allen erlaubten Längen / Hierarchieebenen.
Der OPC UA Client der Siemens PLCs setzt die "PLCopen OPC-UA Client for IEC61131-3" in der aktuellen Version um und hat somit mit BrowsePaths auch kein Problem.
 
Zurück
Oben