TIA Wie strukturiert ihr eure Symoblik?

Paul

Level-2
Beiträge
929
Reaktionspunkte
239
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Ich habe ja schon einige HMI-Panels (notgedrungen) mit TIA machen müssen.
Nun bin ich dabei (für eine kleine Vorrichtung) auch die PLC mit TIA zu machen.

Ich habe in Classic natürlich die Symbolik benutzt und halbwegs systematisch aufgebaut,
aber sie hat keinen sooo hohen Stellenwert bei mir.
Soll heißen: Ich schreibe lieber E 0.0 oder DB110.DBX2.0 als "E_15S2" oder "TP DATEN" Tasten.Modul_1.START"

Bei TIA denke ich im Moment, dass ich mir fast mehr Gedanken um den Aufbau der Symbolik machen muss als um die eigentliche Programmierung.

Das fängt schon bei den Namen der FBs an.
Bsp. "Zuführung" ist die erste Station der Maschine, wird aber in der Übersicht als letztes angezeigt wegen "Z" am Anfang des Namens.


Einfach mal einen Merker "FRG Station 2" zu nennen endet in einem total unübersichtlichem Durcheinander.

Wie baut Ihr eure Symbolik auf dass ihr SCHNELL alles findet was Ihr braucht?
"mFRG Station 2" weil Merker?
"bFRG Station 2" weil BOOL?
"Station 2 FRG" weil Station 2?

Bitte um Beispiele und Anregungen.
 
Also beim ersten Problem mit den Bausteinnamen bin ich bei dir, meine Lösung derzeit Nummer 3-4 Stellig als Prefix.

Bei der sonstigen Symbolik versteh ich gerade nicht worin sich TIA hier unterscheiden sollte.
Dieses Problem ist so Alt wie die SPS-Programmierung ansich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da in den Schaltplänen immer eine bezeichnung für die Hardwareadressen vergeben werden, macht es auf jeden Fall Sinn interne Merker oder Datenbits davon abzuleiten sofern möglich.
Ob Bit oder Word würde ich nicht mit reinnehmen.Unnötige Information.Das E_15S2 ist also meiner Meinung nach richtig.Da diese Bezeichnung bei den Betriebsmitteln,im HMI und in der SPS sich wiederfinden sollten.
Meine Meinung ist das man gerade hier durch eigene Namenserfindungen viel Verwirrung stiften kann.Zudem kann man immer Symbolik und Adresse gleichzeitig anzeigen.

15S2 ist ja auch gleichzeitig oft der Seitenverweis im Schaltplan.
 
Bei TIA denke ich im Moment, dass ich mir fast mehr Gedanken um den Aufbau der Symbolik machen muss als um die eigentliche Programmierung.

Die Zeit sparst du dir dann aber bei der Programmierung. Eine gut strukturierte Symbolik. Bzw die Symbolik ist noch nichtmal so relevant aber ne saubere Struktur bringt viel.

Nehmen wir mal an du hast ein Objekt vom Typ Klappe. Dann ist das für mich ein UDT welcher diesen Typ abildet.
Also
Code:
TYPE "LS_ABL_KLP"
VERSION : 0.1




  STRUCT 	
   Steuerungsart : INT ;	//0 = Automatik 1 = Manuell
   Bedienart : INT ;	//0 = BLE 1 = BSA 11 = Lokal 21 = Revision 254 = ungültig
   reserve : INT ;	
   Status : INT ;	//0 = undef 1 = geschlossen 2 = offen 3 = in bewegung
   Befehl : INT ;	//bei Steuerungsart Manuell
   reserve_10 : INT ;	
   reserve_12 : INT ;	
   WinkelIst : INT ;	//Istwert Winkel
   WinkelZw : INT ;	//Winkeln für Zwischenstellung Sollwert
   Laufzeit : INT ;	//Zeit für Laufzeitüberwachung
   SaStoerung : BOOL ;	
   SaWarnung : BOOL ;	
   LWL_RingUnterbr : BOOL ;	
  END_STRUCT ;	
END_TYPE

Das Objekt Wasserspeicher besteht nun aus mehreren Klappen, Pumpen, Ventilen etc jeweils definiert durch die entsprechenden UDTs.

ob man jetzt zum Symbolnamen noch ein b/i/w etc. vorgibt ist eher sekundär hilft aber gleich die wörter auszublenden wenn man ein bit anhängen will.

Als bezeichnung der einzelnen Objekte nehme ich entweder eine erweiterte BMK oder gleich klartext
Raum10.Pressluft1.Ventil250.BF_Betriebsart

dank der intelligenten symbolauswahl von TIA geht das eintippen recht schnell und intuitiv verglichen mit der Absolutadresseneingabe wo man immer nebendran noch die Datenpunktliste durchforstet hat.
Ausserdem kann man ObjektFBs/FCs dann immer gleich den Objektudt an IN/OUT übergeben statt einzeldatenpunkte. Verkleinert die Schnittstelle der Bausteine erheblich und erspart einem einen haufen Tiparbeit.

Bei mir sieht der Aufruf eines Bausteins dann in etwa so aus:
Code:
      CALL  #Klp01
       LS_PAR             :="LRU_N_KLP"._DBW_0_0
       AumaIN             :="Nord_RU_KLP_LST->AS".Abl.Klp001
       WD                 :="AS Röhre Nord"._DBX_1012_5
       Global_BF_Bedienart:="AS Röhre Nord"._DBW_22_0
       Gesamt_Oeffnung    :=#Gesamt_Oeffnung_Z1
       Venti_An           :=#VentiZone1
       Venti_Klein        :=
       AumaOut            :="Nord_RU_KLP_AS->LST".Abl.Klp001
       Tuere              :="LRU_N_KLP"._DBX_442_0
       Klp_Fahr           :="Brandarrays".Klp[1]
       Zonen_Oeffnung     :=#Zonen_Oeffnung_Z1
       Tuere_Bedienart    :="LRU_N_KLP"._DBW_440_0

Du siehst ich hab auch da noch Absolutadressen in den Symbolen drin. Ist schwierig da ganz von wegzukommen. Aber durch die UDTs die ich da dran habe ist die Schnittstelle nur 12 Anschlüsse breit. Statt 250 Anschlüsse die an Datenpunkten eigentlich dran wären. Das macht hier bei 100 Klappen durchaus eine erhebliche Arbeitserleichterung und man erkennt einen Tipfehler leichter wenn an Klappe 1 das Symbol "Nord_RU_KLP_AS->LST".Abl.Klp001 angehängt werden muss statt P#DB110.dbx3120.0 Byte 80

mfG René
 
Hallo Vollmi,

prinzipiell stimmt deine Vorgehensweise.In der Verfahrenstechnik gibt es dafür Nummern.Diese Nummern sind eindeutig, das heisst im programm sollte der Bezug auf das R&I(Fliessbild) genommen werden.Man braucht dann auch nicht irgendwelche kryptische Kürzel sondern schreibt K35(für Klappe).Wo die sitzt zeigt sich im R&I.

das hat sich bewährt.Die Bezeichnung sollte dann überall mitdurchgezogen werden.Im Feld,im Schaltplan,im HMI und in der Steuerung.
Da ganze geht aber auch für andere Anlagen.Das Nummernsystem mag anderst sein.Das prinzip ist das selbe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Adressen und Bausteine symbolisch zu benennen macht deshalb sinn, damit man selber bzw andere wissen was die Adresse bedeutet bzw. Was im Baustein enthalten ist (Strukturierte Programmierung) Was nützt einem die absolutadresse wenn man nicht weiß was das ist. Es macht z.B. auch sinn als bemerkung die KKS hinzuschreiben. Das erspart einem viel zeit immer nachzugucken welche Adresse was ist.
Ich Programmiere überwiegend Symbolisch bzw. Verwende keine Merker (nutze Lokale und Globale DB Adressen).

Gesendet von meinem D6603 mit Tapatalk
 
prinzipiell stimmt deine Vorgehensweise.In der Verfahrenstechnik gibt es dafür Nummern.Diese Nummern sind eindeutig, das heisst im programm sollte der Bezug auf das R&I(Fliessbild) genommen werden.Man braucht dann auch nicht irgendwelche kryptische Kürzel sondern schreibt K35(für Klappe).Wo die sitzt zeigt sich im R&I.

Es spielt überhaupt keine Rolle wie das Symbol genannt wird solange die Leute verstehen was damit gemeint ist. Die Absolutadresse macht einfach keinen Sinn weil sich damit kein Bezug zum Objekt herstellen lässt.

Das Symbol kann auch heissen X230.YT20_42_X84.KM4.BF wenn sich dadurch das Objekt erschliesst.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das finde ich jetzt nicht.K steht für Klappe das ist genormt.V für Ventil u.s.w.
Wenn man große verfahrenstechnische Anlagen mit hunderten Objekten hat hilft das ungemein.Also ich finde so eine Normierung sehr hilfreich, wennn man das Regelwerk kennt.
 
Ich bin kein Freund von Kürzel es sei denn es wird vom Kunden gefordert bzw. Mann kann die bezeichnungen aus den Schaltplänen entnehmen. Ich verwende ausschließlich sinnvolle volltexte.

Gesendet von meinem D6603 mit Tapatalk
 
Es ist einfach so:
So viele Planer/Branchen/Programmierer/Programmierrichtlinien es gibt, so viele Bezeichnungsschemata gibt es auch.
Ist auch vollkommen OK, solange überhaupt ein Schema erkennbar ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.... Was nützt einem die absolutadresse wenn man nicht weiß was das ist. Es macht z.B. auch sinn als bemerkung die KKS hinzuschreiben. Das erspart einem viel zeit immer nachzugucken welche Adresse was ist

Versteht mich nicht falsch. Ich habe natürlich jedem E/A ein Symbol zugeordnet.
Mir geht es beim programmieren nur einfach leichter von der Hand, zu schreiben E 0.0
Nach drücken der Enter Taste erscheint dann das Symbol und ich schaue nochmal ob alles stimmt.
Diese Vorgehensweise ist aber anscheinend nicht mehr Zeitgemäß.

Wenn die rein symbolische Programmierung Vorteile bringen soll, steht und fällt das natürlich
mit dem Aufbau und somit der "Wiederfindbarkeit" der Symbole.
In Classic lasse ich mir meine Tabelle sortiert nach Adressen anzeigen und weiß dann ziemlich genau wo ich suchen muss.

FB 140 --> DB 140 --> Merker von MB 140 ...MB 149 Instanz DB 240
FB 150 --> DB 150 --> Merker von MB 150 ...MB 159 Instanz DB 250
MB 70 .... MB 99 "Quick and dirty" Merker wenn man mal schnell eine Flanke o. Ä. braucht.
usw.
 
@Paul:
In Classic hat man ja auch für vollsymbolische Programmierung nicht unbedingt eine Unterstüzung.
Symbolisch macht dann richtig Sinn, wenn man durch eine Funktion wie VisualStudio-IntelliSense unterstützt wird. Hier bekommt man die Möglichkeiten nach dem ersten Eingeben von Zeichen angeboten - sei es nun NameSpace oder Variablen-Name.
Wenn man den Variablen-Namen jedes Mal wissen muss und ihn vollständig ausschreiben muss dann ist das schon zäh ... vor Allem bei globalen Variablen. Innerhalb eines Bausteins mit den lokalen Variablen ist das dannn schon einfach (weil es i.d.R. nicht so viele gibt).

Gruß
Larry
 
In Classic hat man ja auch für vollsymbolische Programmierung nicht unbedingt eine Unterstüzung.
Symbolisch macht dann richtig Sinn, wenn man durch eine Funktion wie VisualStudio-IntelliSense unterstützt wird. Hier bekommt man die Möglichkeiten nach dem ersten Eingeben von Zeichen angeboten - sei es nun NameSpace oder Variablen-Name.

Und das IntelliSense ist bei TIA recht gelungen, muss ich sagen. Wenn man sich erstmal dran gewöhnt hat geht das Tippen sehr zügig.
Wenn man sich dann bei Der Benennung noch ein paar Gedanken gemacht hat das man den start des Tags praktisch auswendig aus der Funktion ableiten kann, dann kann man fast ohne Datenpunktliste sein Programm machen.


FB 140 --> DB 140 --> Merker von MB 140 ...MB 149 Instanz DB 240
FB 150 --> DB 150 --> Merker von MB 150 ...MB 159 Instanz DB 250
MB 70 .... MB 99 "Quick and dirty" Merker wenn man mal schnell eine Flanke o. Ä. braucht.
usw.

Diese Feste Nummerierung ist halt in TIA mehr oder weniger obsolet geworden. Eine feste DB nummer habe ich nur noch bei Globalen auf die aus der HMI zugegriffen wird. Alles andere ist automatisch.
für "Quick and dirty" gibts keinen Grund mehr, ein Flankenmerker (bzw die Flankeninstanz bei der 1500er) landet einfach im Stat des FBs aktualisierung und download manatscht TIA.

Merker vermeide ich so gut es geht, da diese vor allem bei Multiuserarbeit gehörig auf den Senkel gehen können.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.....Hier bekommt man die Möglichkeiten nach dem ersten Eingeben von Zeichen angeboten -

Gruß
Larry

Hallo Larry
Genau darum geht es mir.
Damit ich was sinnvolles angeboten bekomme, muss die Symbolik entsprechend aufgebaut sein.

Deshalb auch mein Beispiel ganz am Anfang "mFRG Station 2"
Ich habe schon Programme gesehen, da stand GRUNDSÄTZLICH vor JEDER Variable
das Datenformat: "rEndPos Greifer" r für Real, i Integer, w Word, b Bool......
aber bringt das wirklich was?
Für meinen bisherigen Stil eher nicht, ich sehe auch für TIA nicht wirklich Vorteile.
Deshalb frage ich ja wie Ihr das handhabt.
 
@Paul

Hatte sich nur so angehört das du ohne Symbolik Programmierst.:)
Jeder hat natürlich seine Art und Weise wie er am besten klarkommt bzw. wie er Programmiert. Hier sollen ja nur Anregungen beschrieben und diskutiert werden.

Gesendet von meinem D6603 mit Tapatalk
 
Ich habe schon Programme gesehen, da stand GRUNDSÄTZLICH vor JEDER Variable
das Datenformat: "rEndPos Greifer" r für Real, i Integer, w Word, b Bool......
aber bringt das wirklich was?

Das bringt dir was wenn du viele Anschlusspunkte vom Typ Variant oder Any hast. Denn da kannst du mit dem Formatkennzeichen direkt die auswahl einschränken. Wenn du weisst du willst ein Real anhängen ist es doch schön wenn da keine Bools zur Auswahl angezeigt werden.

Wenn die Anschlusspunkte aber eine Typdefinition haben, dann schränkt TIA von Anfang an automatisch ein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diese Feste Nummerierung ist halt in TIA mehr oder weniger obsolet geworden. Eine feste DB nummer habe ich nur noch bei Globalen auf die aus der HMI zugegriffen wird. Alles andere ist automatisch.
für "Quick and dirty" gibts keinen Grund mehr, ein Flankenmerker (bzw die Flankeninstanz bei der 1500er) landet einfach im Stat des FBs aktualisierung und download manatscht TIA.

Merker vermeide ich so gut es geht, da diese vor allem bei Multiuserarbeit gehörig auf den Senkel gehen können.

mfG René
Solche schweren Geschütze kann (und will) ich bei uns nicht auffahren.
Wir sind ein Mittelständischer Sondermaschinenbauer.
An unseren Anlagen muss auch mal ein frisch ausgelernter Mechatroniker einen Fehler finden.
80% meiner Bausteine kann ich nur einmal, eben für diese Anlage verwenden.

Merker und S5-Zeiten vermeide ich auch nach Möglichkeit, aber jedes mal den Instanz DB neu generieren?
Geht das in TIA Ruck Zuck? Am besten so, dass die aktuellen Zustände erhalten bleiben?
Wäre ja gut wenn das so wäre. Der ERSTE Vorteil den ich bei TIA erkennen könnte.
 
Für verfahrenstechnische Anlagen orientiere ich mich an DIN19227 (okay ist zurückgezogen, jetzt gilt EN624´24 -habe ich aber noch nicht gelesen).
Siehe auch hier:
https://de.wikipedia.org/wiki/R&I-Fließschema#Mess-_und_Regelstellen
Symbole stehen im RI-Fließbild, so zum Beispiel die Druckmessung P0816 oder Ventil V4712.
An das Symbol hänge ich dann geeignete Kürzel, so zB.
_A für Alarmierung, _S für Schalt-/Grenzwert, ggf. auch _MIN oder _MAX, _I für analoge Anzeige, _X für wird geschaltet (z.B. Schützausgang, Schaltventil), _Y wird analog angesteuert (Regelventil, Umrichter,...), Sollwert _W
Binärer Druckschalter PS0814, Binärer Füllstandschalter (z.B. Liquiphant LS4713).

u.s.w.

Gruß Inerax
 
Zurück
Oben