TIA GRAPH - wie macht ihr das ?

Lipperlandstern

Level-3
Beiträge
6.008
Reaktionspunkte
1.727
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen.

Ich bin was TIA betrifft noch relativ neu und beschäftige mich jetzt grade mit Graph. In meinen Anlagen sind immer viele Schrittketten. Das sind seit eh und je Merkerschrittketten und die möchte ich im Zuge der Umstellung auf TIA in Graph schreiben.

Jetzt könnte ich im Graph-FB an den einzelnen Schritten direkt meine Aktoren ansteuern, Werte setzen oder was auch immer. (Kennung und Aktion) Das gefällt mir aber nicht. Ich möchte gerne die Zuweisung an anderer Stelle machen. Dafür gibt es im Graph-DB für jeden Schritt das Bit Schritt3.X

Dieses Bit wird aber im Querverweis nur als lesend angezeigt. Alternativ könnte ich eine Statische Variable anlegen und im entsprechenden Schritt mit N #Schritt_3 programmieren. Diese Variable wird im Querverweis auch als schreibend angezeigt.

Was gibt es noch für Möglichkeiten bzw. wie macht ihr das so ?
 
Ich weise in den Schritten in denen der Aktor sich bewegen soll die Steuervariable zu. Also im Schritt „Zylinder 1 ausfahren“, weise ich der Variable Zylinder1.Vor TRUE zu.
 
Ich lege für jede Schrittkette einen Globalen DB an,
wo Variablen für die Aktoren deklariert werden.
Zb Band1.Vor, Band1.Zurück.
Diese werden dann in der Schrittkette zugewiesen
durch N, aber durch SR wenn Sie über mehrer Schritte
gesteuert werden.
Wenn die Schrittkette ausgeschaltet wird zb bei Not-Halt,
wird in der Nachfolgende Permanenten Anweisung alle
Variablen abgelöscht.
Die Ansteuerung der Aktoren erfolgt dann in einen separaten
Baustein, für den Aktor (Band1).
Vorteil man kann mehrere Schrittketten und Handbetrieb verodern.
 
Ich mach's ähnlich wie Helmut.
Allerdings haben wir einen Aktor-FB zur Ansteuerung von Bewegungen.
Dort sind dann alle Rückmeldungen, Verriegelungen, Freigaben, Handbedienung, Laufzeit-, Paarüberwachung, ... für die entsprechende Bewegung.
Das ist dann auch alles in einem Global-DB pro Station.
In der Aktion steht dann auch "N C #Station1.Klemmung.Ausfahren"
In der Transisition dann eben "U #Station1.Klemmung.Zu"

Ist zwar etwas mehr Arbeit als wenn man über Instanzen zugreifen würde, aber dafür funktionieren auch Querverweise vernünftig.
Zu jeder Kette gibt's dann noch einen Global-DB für Start, Verriegelungen und Sonstiges.

Gruß
Blockmove
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich schließe mich meinen Vorrednern mal an, finde es auch so am saubersten. Variable in der Schrittkette schreiben, diese dann entsprechend an einen Baustein der dann z.B. ein Ventil steuert, am besten gleich noch mit Anbindung an einen Bildbaustein, Verriegelungen, Störungen etc.

Etwas ordentlich zu machen bedeutet eben meist das man etwas Mehraufwand hat. Zu Testzwecken habe ich aber auch schon die .X-Schrittvariablen genutzt. Funktioniert grundsätzlich auch wenn man eben nur mal schnell was testen aber nicht sofort alles ausprogrammieren will. Für mich ist das aber einfach unsauberer Stil oder Faulheit.
 
Moin,

Hilfsvariablen sind natürlich ein probates Mittel.

Die Schritt.X-Variablen nutze ich z.B. in den nachgeschalteten Permanentanweisungen. Das ist m.E. eine saubere Lösung.

VG

MFreiberger
 
Ich nutze auch globale Variablen, die dann an einem Ventilbaustein für die Ansteuerung des Ausgangs sorgen (da sind dann noch Freigaben, Fehlermeldungen etc. drin). Diese Glob-Vat hab ich aber per INOUT an den graph-Baustein übergeben. (Muß man nicht unbedingt machen.)
Die .x nutze ich gar nicht, hab das mal in einem anderen Programm gesehen, schwer finden, rel. unübesichtlich und keine Ahnung, was genau passiert, wenn man Schritte löscht oder ändert.
Meine Graph-Ketten laufen IMMER in Automatik. In jeder Transition steht (Wenn gewünscht) ein AUTO-Step-Bit. In Automatik ist das immer True, im Step-Betrieb wird es mit Flanke True, wenn ich den Step-Button betätige. Dadurch kann man realisieren, dass Schrittketten im Stepbetrieb nur an relevanten Stellen stoppen. Manchmal braucht man ja 3 oder 5 Schritte, um z.b. einen Servo zu verfahren. Da wäre es nicht gut, wenn man 5x steppen müßte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Etwas ordentlich zu machen bedeutet eben meist das man etwas Mehraufwand hat. Zu Testzwecken habe ich aber auch schon die .X-Schrittvariablen genutzt. Funktioniert grundsätzlich auch wenn man eben nur mal schnell was testen aber nicht sofort alles ausprogrammieren will. Für mich ist das aber einfach unsauberer Stil oder Faulheit.

Unwissenheit :) ... bei meinem ersten Projekt mit Graph habe ich das so gemacht. Ich hatte das aus einem Musterprojekt von dem Kunden so übernommen Erst viel später ist mir aufgefallen das das .X nicht querverweisfähig ist. Das ist jetzt erstmal nicht schlimm da in dem Projekt zur Zeit nur 3 Schrittketten drin sind und man die passende relativ schnell findet. Die wird aber das einzige Projekt bleiben wo ich das so gemacht habe.

Ich analysiere grade ein anderes Projekt und da sind teilweise bis zu 30 Aktionen an einen Schritt programmiert. Ähnlich sieht dann die Transistion aus :???:
 
Unwissenheit :) ... bei meinem ersten Projekt mit Graph habe ich das so gemacht. Ich hatte das aus einem Musterprojekt von dem Kunden so übernommen Erst viel später ist mir aufgefallen das das .X nicht querverweisfähig ist. Das ist jetzt erstmal nicht schlimm da in dem Projekt zur Zeit nur 3 Schrittketten drin sind und man die passende relativ schnell findet. Die wird aber das einzige Projekt bleiben wo ich das so gemacht habe.

Ich analysiere grade ein anderes Projekt und da sind teilweise bis zu 30 Aktionen an einen Schritt programmiert. Ähnlich sieht dann die Transistion aus :???:

Das ist auch nicht so schick, dann würde ich Parallelverzweigungen vorziehen, wenn möglich. Da bleibt die Übersicht besser gewahrt. Möglichst immer eine Aktion in einem Schritt oder Parallel verzweigen.
 
.... wäre es da nicht sinniger mit jedem Schritt einen Index oder ein Bit zuzuweisen und das dann hinterher irgendwo zentral zuzuweisen ?
Der Vorteil einer Sammelzuweisung (a la Merker-Schrittkette) ist doch wohl, dass man bei der Zuweisung auch sehen kann (wenn man will) wer die Aktion eigentlich auslösst.
Das geht doch auf diesem Weg komplett verloren ...

(Ich weiß schon warum ich bislang noch nichts mit Graph gemacht habe)
 
.... wäre es da nicht sinniger mit jedem Schritt einen Index oder ein Bit zuzuweisen und das dann hinterher irgendwo zentral zuzuweisen ?
Der Vorteil einer Sammelzuweisung (a la Merker-Schrittkette) ist doch wohl, dass man bei der Zuweisung auch sehen kann (wenn man will) wer die Aktion eigentlich auslösst.
Das geht doch auf diesem Weg komplett verloren ...

Viele Wege führen nach Rom :)
Ich denke es kommt darauf wie man die Signale weiter verarbeitet.
Mit einem Index oder "Schrittmerker" siehst du dafür in der Kette nicht, was sie auslöst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry ... das verstehe ich nicht ... Wie meinst du das ? Deine Transitionen werden dadurch ja nicht berührt ...

Ich meinte die Aktion.
Transisition ist klar.
Wir nutzen mittlerweile ProDiag zur Diagnose und Visualisierung in der Verbindung mit Graph und unseren Aktorbausteinen.
Da ist der Programmierstil auch leicht anders.
 
Guten Morgen,

wir nutzen zwar eigene Bausteine statt Graph, aber unser Vorgehen ist ähnlich dem bereits genannten:

Jede Schrittkette hat einen eigenen Baustein mit einem eigenen, globalen DB, in dem alle Schrittsignale abgelegt sind.
Wir halten die DBs alle gleich, so dass wir da konsistent sind und einfach Schrittketten kopieren und anpassen können.

Aus den Schrittketten kommen dann die Signale zum ausführen der Aktion, diese werden in einem zentralen Baustein als ODER verknüpft und gehen dann von diesem einen Signal in die jeweilige Funktion und steuern dort dann, parallel zu Tastern oder anderen Befehlen, die jeweilige Aktion.

Verriegelungen und Bedingungen programmieren wir in den jeweiligen Funktionen, die Schrittketten sind bei uns eher "dumm" und Schalten einfach nur die Signale weiter wenn die jeweilige Transition / Endbedingung des Schrittes erreicht ist.
Hierdurch sind wir recht flexibel und unabhängig von Graph.
Wobei man erwähnen muss dass wir die HMI Seite somit immer manuell erstellen müssen statt diese durch Graph generieren zu lassen unter TIA.

Gruss,
Michael
 
Zurück
Oben