TIA TIA 1200 Sprungbefehlen der Programmsteuerung

Roland15

Level-2
Beiträge
104
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich versuche gerade verzweifelt, mit den Sprungbefehlen der Programmsteuerung eine übersichtliche Programmierung von einem FU hinzubekommen.
NW 6 & / dürfte doch nicht aktiv sein, wenn die Befehle in NW 4 & 5 nicht angesteuert werden.
Wie in der Hilfe von Tia dargestellt.
Wenn der Operand "TagIn_1"den Signalzustand "1" liefert, wird die Anweisung ausgeführt.
Was mache ich falsch?
Hat evtl. jemand ein Beispiel, um die Sache leichter zu verstehen.
VG
 

Anhänge

  • Programmsteuerung.JPG
    Programmsteuerung.JPG
    42,1 KB · Aufrufe: 61
  • Vorl. Tia.JPG
    Vorl. Tia.JPG
    37,9 KB · Aufrufe: 59
Beide Sprünge sind nciht aktiv, also wird kein Sprung gemacht, also wird einfach das nächste Netzwerk genutzt. Vollkommen richtig.
Wenn Du nicht willst das die Sprungmarken genutzt werden dann musst Du nach beiden Marken einen Sprung hinter die Netzwerke machen die nicht bearbeitet werden dürfen.
e.G. Nach Netzwerk 6 muss ein Sprung in Netzwerk 8 geschehen damit 7 nicht bearbeitet wird.

mit den Sprungbefehlen der Programmsteuerung eine übersichtliche Programmierung
Sprünge sind nie übersichtlich. Arbeite lieber so das leicht erkennbar ist was jetzt abgearbeitet wird und was nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde gar nicht erst mit Sprüngen anfangen, das war schon zu Basic-Zeiten schlechter Programmierstil.
In deinem, oben gezeigten Fall, kannst du einfach die jeweilige Anweisung statt mit dem Sprung mit dem Befehl zum Setzen und Rücksenten als UN verknüpfen.

Also kurz in AWL, das kannst du leicht in FUP umsetzen:

Code:
U Spindel_Start
U Spindel_Einschaltbedingung
S Data_Valid

U Spindel_Stop
U Spindel_Einschaltbedingung
R Data_Valid

Allerdings scheint mir das Ergebnis des Codes fragwürdig, denn wenn deine Spindeleinschaltbedingung nicht True ist, kannst du die Spindel hier nicht stoppen. Macht das Sinn so, ich kenne ja den weiteren Code nicht.

PS: Bist du mit dem Funktionsprinzip einer SPS vertraut? In klassischem Sinn verknüpft man Anweisungen. Man kann dafür sorgen das eine Anweisung nicht ausgeführt wird, indem man sie mit einer Bedingung verknüpft, die erfüllt sein muß. Dazu muß man also nicht um Anweisungen herumspringen.
 
Ich würde gar nicht erst mit Sprüngen anfangen, das war schon zu Basic-Zeiten schlechter Programmierstil.
In deinem, oben gezeigten Fall, kannst du einfach die jeweilige Anweisung statt mit dem Sprung mit dem Befehl zum Setzen und Rücksenten als UN verknüpfen.

Also kurz in AWL, das kannst du leicht in FUP umsetzen:

Code:
U Spindel_Start
U Spindel_Einschaltbedingung
S Data_Valid

U Spindel_Stop
U Spindel_Einschaltbedingung
R Data_Valid

Allerdings schein mit das Ergebnis des Codes fragwürdig, denn wenn deine Spindeleinschaltbedingung nicht True ist, kannst du die Spindel hier nicht stoppen. Macht das Sinn so, ich kenne ja den weiteren Code nicht.

PS: Bist du mit dem Funtionsprinzip einer SPS vertraut? In klassischem Sinn verknüpft man Anweisungen. Man kann dafür sorgen das eine Anweisung nicht ausgeführt wird, indem man sie mit einer Bedingung verknüpft, die erfüllt sein muß. Dazu muß man also nicht um Anweisungen herumspringen.
Hallo,

Danke für die Infos,
ich hatte es schon tagelang versucht, mit FUP und HEX code an den FU, aber habe es nicht hinbekommen.
Deshalb würde ich es gerne mit Schrittketten versuchen, Graph geht leider nicht bei der TIA 1212.

VG
 
Du kannst Schrittketten auch sehr einfach in anderen Programmiersprachen umsetzen.

Beispiel SCL: Du legst dir eine Integer-Variable als Schrittzähler an. In einer CASE-Anweisung programmierst du dann, was je nach aktivem Schritt getan werden soll.

Beispiel FUP: Ich hab in der Ausbildung noch Schrittketten mit RS-Flipflops gebaut. Im Prinzip hast du für jeden möglichen Schritt ein RS-Flipflop. Gesetzt wird das Flipflop, wenn der vorherige Schritt aktiv ist und die Weiterschaltbedingung erfüllt ist. Rückgesetzt wird ein Flipflop, wenn in den nächsten Schritt geschaltet wurde, oder andere externe Abschaltkriterien.
Edit: Was ein bisschen kontraintuitiv ist, ist, dass du die Schrittkette von hinten nach vorn programmieren solltest. Also im ersten Netzwerk ist das Flipflop für den letzten Schritt, dann der vorletzte, etc. Dadurch bleibt ein Schritt mindestens einen Zyklus lang aktiv, selbst wenn bei Betreten des Schritts die nächste Weiterschaltbedingung bereits erfüllt ist. Wichtiger aber noch, du hast dann nicht den Zustand, dass für einen Zyklus zwei aufeinanderfolgende Schritte gleichzeitig aktiv sind.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst Schrittketten auch sehr einfach in anderen Programmiersprachen umsetzen.

Beispiel SCL: Du legst dir eine Integer-Variable als Schrittzähler an. In einer CASE-Anweisung programmierst du dann, was je nach aktivem Schritt getan werden soll.

Beispiel FUP: Ich hab in der Ausbildung noch Schrittketten mit RS-Flipflops gebaut. Im Prinzip hast du für jeden möglichen Schritt ein RS-Flipflop. Gesetzt wird das Flipflop, wenn der vorherige Schritt aktiv ist und die Weiterschaltbedingung erfüllt ist. Rückgesetzt wird ein Flipflop, wenn in den nächsten Schritt geschaltet wurde, oder andere externe Abschaltkriterien.
Edit: Was ein bisschen kontraintuitiv ist, ist, dass du die Schrittkette von hinten nach vorn programmieren solltest. Also im ersten Netzwerk ist das Flipflop für den letzten Schritt, dann der vorletzte, etc. Dadurch bleibt ein Schritt mindestens einen Zyklus lang aktiv, selbst wenn bei Betreten des Schritts die nächste Weiterschaltbedingung bereits erfüllt ist. Wichtiger aber noch, du hast dann nicht den Zustand, dass für einen Zyklus zwei aufeinanderfolgende Schritte gleichzeitig aktiv sind.
Hallo Januar,

Danke für den Tipp,
leider komme ich mit SCL und AWL absolut nicht zurecht, da ich extrem wenig damit zu tun habe.
Der Schrittablauf ist nicht immer die gleiche Reihenfolge, dazu benötige ich die Zwischenschritte.
Ein kleines Vorlageprojekt würde mir extrem helfen.

VG
 
Hier mal ein Beispiel, wie ein SCL Schrittkette aussehen kann als Vorlage. Das ist noch ausbaufähig und wenn man es zum Standard macht, must du es Instanzierfähig verpacken. Ich verwende es noch wesentlich erweitert mit Standard Visu Bildbausteinen mit Diagnose und Debug-Funktionen.

Wenn du es Verpackst, könntest du es natürlich auch in einem Fup Netzwerk nutzen.

Thomas
 

Anhänge

Hier mal ein Beispiel, wie ein SCL Schrittkette aussehen kann als Vorlage. Das ist noch ausbaufähig und wenn man es zum Standard macht, must du es Instanzierfähig verpacken. Ich verwende es noch wesentlich erweitert mit Standard Visu Bildbausteinen mit Diagnose und Debug-Funktionen.

Wenn du es Verpackst, könntest du es natürlich auch in einem Fup Netzwerk nutzen.

Thomas

wie schon erwähnt scl, ist absolut nichts für mich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe es mit dem Sprung von NW 5 ins NW 8, jetzt wird kein Netzwerk im Baustein mehr bearbeitet.
NW4 sollte eigentlich, wenn der Eingang TP-IMP_Spindel Start =1 bearbeitet werden, und ins NW 6 springen?
Ich verstehe das absolut nicht?

VG
 

Anhänge

  • Ende.JPG
    Ende.JPG
    40,7 KB · Aufrufe: 31
Ist deine CPU noch im Run?

Es sieht so aus, als ob du Sprungmarke und Sprungziel in ihrer Funktion verwechselst. Du springst doch von NW8 immer wieder in NW5, da geht die CPU doch wegen Zykusüberschreitung in Stop, sobald M20.0 true ist.

Ich würde mich mal den Vorrednern anschließen, Sprünge sollten heutzutage nur noch in Ausnahmesituationen nötig sein und wenn man mit dem programmieren anfängt, dann sollte man da definitiv noch die Finger von lassen.
 
Auweia, bei so viel Spagetti wird mir schwindelig...

Wenn Spindel Start true ist, springt die Bearbeitung von NW 4 in NW 6 und arbeitet dann NW 6, NW 7 und auch alles danach ab.

Es gibt eine Möglichkeit, das zu umgehen, aber die möchte ich dir lieber nicht sagen. Es würde noch mehr Sprünge beinhalten und Sprünge sind echt nicht mehr zeitgemäß.

Wie eine Schrittkette in FUP aussehen kann, findest du an diversen Stellen im Weltennetz. Zum Beispiel hier.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du denkst mit den Sprüngen ein wenig zu kompliziert.
Ich habe ein paar Netzwerke erstellt die Dir hoffentlich ein wenig helfen. Ähnlich sieht es in reellen Steuerungen eigentlich immer aus.

Lass es bitte mit Sprungbefehlen sein. Nur wenige mögen das, und diejenigen die damit sehr viel arbeiten wissen in der Regel auch warum sie dies tun. Für einen simplen Start/Stop ist dies so nicht nötig.
In meinem Beispiel gehe ich davon aus das Start immer FALSE ist solange er nicht starten soll und Stop immer TRUE ist solange er laufen darf.

Du schreibst SCL ist nichts für Dich. Freunde Dich dennoch damit an. Es gibt bereits Programmierbeispiele die Du nur in SCL erhälst und abändern musst.
Desweiteren sind sehr viele Rechenoperationen in SCL einfach aufgrund einer Formeleingabe sehr viel einfacher.

In einer SPS ist mit jedem Zyklus immer wieder der gleiche Befehl abzuarbeiten. Ansonsten fällt dieser auf FALSE. Umgangen wird dies mit Setzen/Rücksetzen und bedingten Abfragen.
Einfacher ist es jedoch den Startbefehl zur Aufrechterhaltung wie im ersten Netzwerk dargestellt jedes Mal auszuwerten.
Nur in wenigen Fällen wie Tastersteuerungen weicht man davon ab, wie im Netzwerk 3.
Vorteil einer zyklischen Abarbeitung ist, das wenn etwas unvorhergesehenes passiert die Ausgänge dann auch aus sind, zumindest wenn die Einschaltbedingungen jedes Mal geprüft werden müssen.
Existieren zusätzliche Schritte, dann lohnt es sich diese in eine Merkervariable zu legen die ebenfalls abgefragt wird. Diese kann dann ebenfalls an der HMI gleich mit angezeigt werden. Für eine spätere Fehlerauswertung ist es immer hilfreich jede einzelne Startbedingung mit zu überwachen. Fehlt eine, sollte dies angezeigt werden damit man weiß wo die Anlage steht. Das kommt aber wohl erst etwas später.

1736520458913.png
 
Auweia, bei so viel Spagetti wird mir schwindelig...

Wenn Spindel Start true ist, springt die Bearbeitung von NW 4 in NW 6 und arbeitet dann NW 6, NW 7 und auch alles danach ab.

Es gibt eine Möglichkeit, das zu umgehen, aber die möchte ich dir lieber nicht sagen. Es würde noch mehr Sprünge beinhalten und Sprünge sind echt nicht mehr zeitgemäß.

Wie eine Schrittkette in FUP aussehen kann, findest du an diversen Stellen im Weltennetz. Zum Beispiel hier.
Dank für eure Tipps, ich habe mir das SPS Tutorial von Rene Kaiser angeschaut.
Ich versuche, ob ich damit klarkomme.
VG
 
Zurück
Oben