Step 7 Sprungbefehle bei Simulation

Stutz

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich hab einen Baustein geschrieben (Schrittverwaltung) und wollte diesen in der Simulation testen. Leider funktioniert es nicht, entweder es ist ein Simatic Bug oder ich seh den Wald vor lauter Bäumen nicht.

attachment.php


Vielleicht kann mir ja jemand helfen.:confused:
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    101,5 KB · Aufrufe: 92
Für was die Zwischenvariable?das VKE ist auch 1 ohne diese.Was willst du überhaupt machen?Hast du hundert Schritte?
In der Klammer mal den Wert reinschreiben mit dem du die 99 vergleichst.

Wenn der in Loop steht.
U(
l loop
l 99
>I
)
SPB //hier ist doch das VKE schon definiert
exid
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was funktioniert denn da nicht?

Der Sprung wird ausgeführt werden wenn weiter oben ein Wert > 99 an #loop zugewiesen wird.
Das wirst Du aber wohl nur sehen können, wenn das "Beobachten" genau die Werte des 100. Schleifendurchlaufs anzeigt.

Im Übrigen könntest Du den Code auch umformulieren zu
Code:
      U     #temp_jump
      SPBN  new

exid: SET

Harald
 
Hallo zusammen,

vielen Dank für die Antworten.

Zuerst mal zur Funktion des Bausteins: Ich will eine Funktion für eine Schrittkette schreiben, diese heißt "NEXT_STEP". Diese Funktion rufe ich auf wenn wenn ein Schritt beendet ist, dann soll der nächste Schritt starten. Die Schritte werden im Schrittketten FB definiert als Array[0..99]. Wenn die Funktion "NEXT_STEP" aufgerufen wird greift dieser FC auf das DI-Register und löscht den Schritt und aktiviert den nächsten Schritt. Das funktioniert nicht, weil in dem besagten Loop soll der nächste Schritt akitviert werden.(Leider!!!)
Die ganze Schrittkette ist erst mal ein Versuch (deshalb läuft es auch in der Simulation).

Aber es geht ja um den Sprungbefehl, der SPB dürfte doch nur springen, wenn das VKE 1 ist.

Ich versteh es nicht.

Vielen Dank im voraus für Antworten.
 
Wieso so kompliziert? Du kannst einen Sprungverteiler machen.oder klassisch mit Setze und rücksetze.
Wenn du natürlich nur ein Eingang nimmst und keine Unterscheidung hast setzt er dir den aktuellen Schritt, setzt ih nzuück und setzt gleich den nächsten.U.S.W.

man kann die Schrittkette auf den Kopf stellen.letzter Schritt zuerst u.s.w.den er erststen Schritt verreigeln mit :

U Schritt 1
U Bedingung
R Schritt 1
S Schritt2


Un Schritt 1//hier wird verreiglet das er in den ersten Schritt nicht mehr reinkommt./Am Schluss wieder rücksetzen
u Bedingung
S Schritt 1


Wenn du jetzt natürlich immer das gleiche Signal hast rennt er die Schrittkette durch.
Abhilfe wie gesagt Schrittkette auf den Kopf stellen.
Also letzter Schritt zuerst, dann vorletzter....

Aber ich würde das so eh nicht machen.Wenn du ernsthaft große Schrittketten programieren musst nimm Graph 7.
Es gib ja noch viel mehr wie der eigentliche Ablauf.Du musst verschiedene Betriebsarten auswerten,Warte und Maxzeiten.verbindung zum HMI u.s.w

Das zu Fuss nachprogrammieren macht keinen Sinn.Ich bin jetzt zwar keine Graph 7 Profi.Aber letztendlich ist das das Mittel erster Wahl.
Du brauchst ja auch Alternativverzweigungen u.s.w.Rein Praktisch bringt dir so ein baustein nix.

meine persönliche Meinung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wieso so kompliziert?

Aber ich würde das so eh nicht machen.Wenn du ernsthaft große Schrittketten programieren musst nimm Graph 7.
Es gib ja noch viel mehr wie der eigentliche Ablauf.Du musst verschiedene Betriebsarten auswerten,Warte und Maxzeiten.verbindung zum HMI u.s.w

Das zu Fuss nachprogrammieren macht keinen Sinn.Ich bin jetzt zwar keine Graph 7 Profi.Aber letztendlich ist das das Mittel erster Wahl.
Du brauchst ja auch Alternativverzweigungen u.s.w.Rein Praktisch bringt dir so ein baustein nix.

meine persönliche Meinung.

Graph 7 ist auch nicht der Weisheit letzter Schluss und schon gar nicht das das Mittel erster Wahl ...
Einmal benötigt man weiteres Paket, Diagnose (nicht auf dem Notebook) ist so etwas von Fuck (aus meiner und Kundenerfahrung) und manche Kunden wollen es gar nicht!

Ich verstehe eigentlich auch nicht, warum man nun dem TE etwas aufdrücken möchte, nachdem er gar nicht fragt! Das ist doch nicht Zielführend.

Er hat eine ganz einfache Frage zu einem Problem gestellt und sucht daraufhin eine Antwort.

Spricht warum das SPB ausgeführt wird, obwohl das VKE 0 ist!

Ich habe leider keinen Sim hier und kann es daher nicht probieren …
 
Ich will ihm nichts aufschwätzen.Aber wenn er es unbedingt zu Fuß programmieren will dann würde ich die Schrittkette nicht in einen
FB packen.Die Gründe habe ich genannt.Man kann da anderer Meinung sein OK.Ich schreibe Schrittketten mit Setz und Rücksetzbedingungen.
Auch das kann jeder anderst machen.

Ich denke es ist legitim bevor man sich in was verrennt zu Überdenken ob der Ansatz richtig ist.Darauf wollte ich hinweisen.
 
@silverfreaky
Nochmal: Du solltest erst dann Antwortbeiträge schreiben, wenn Du die Fragestellung des TE verstanden hast und zielführende Hinweise zur Fragestellung hast.


@Stutz
Dein Problem ist nur ein Beobachtungs-Problem, weil Du eine Schleife beobachtest. Dein Bild zeigt die Werte des ersten von 100 Schleifendurchläufen. Der SPB springt im 100. Durchlauf tatsächlich zu exid. Würde er das nicht tun, dann würde Deine (simulierte) SPS in STOP wegen Zugriffsfehler oder Zykluszeitüberschreitung gehen.

Warum überhaupt machst Du diese Schleife? Wenn Du nur auf den nächsten Schritt weiterschalten willst, dann würde es reichen, nur den aktuellen Schritt zu löschen und den nächsten Schritt zu setzen. Man kann natürlich auch vorsichtshalber immer alle Schritte (oder nur die vorherigen Schritte) löschen - dann darfst Du aber den aktuellen Schritt erst nach der Lösch-Schleife setzen oder mußt nach dem Setzen die Schleife verlassen oder mußt das Rücksetzen des Schritts im nächsten Schleifendurchlauf verhindern.
Auf jeden Fall muß der Code in Deiner Schleife geändert werden. Deine Schleife macht immer folgendes: Alle Schritt"merker" im IDB werden zurückgesetzt und wenn #STEP zufällig 99 ist, dann wird der 100. Schrittmerker gesetzt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank für da Interesse an meinem Problem.

Ich hab gehofft das dass Problem ein Bug in der Simulaiton ist, jetzt hab ich ganze auf einer 315er laufen, leider hab ich das gleiche Problem.

@PN/DP: Das mit dem Beobachten ist nicht richtig. Die "loop" Variable steht ja bei 1, somit sehe ich ja, das nichtmal eine Schleife durchlaufen wurde.


Noch eine "Rechtfertigung" zu meiner Schrittkette:

Ich bin kein Neuling in der SPS Programmierung, ausserdem mache ich immer wieder Abstecher zu Hochsprachenprgrammierung (meist C). Zur "normalen" Maschienensteuerung ist jedoch eine SPS meiner Meinung nach am Zielführensten. Nur den ganze Zugriff auf Variablen gefällt mir nicht (zu viel Fehlerpotential).

Mein Ziel ist eine Schrittkettenstandart mit möglichst wenig direkten Zugriff auf Variablen zu entwickeln.

Anbei hab ich noch ein Bild von der Schrittkette. Die Maschinenkomponenten sind definiert und über eine ID und einer entsprechenden Funktion anzusprechen.

Alles andere funktioniert, nur nicht dieser blöde Loop in der Funktion "NEXT_STEP".

attachment.php
 

Anhänge

  • STEPCHAIN.JPG
    STEPCHAIN.JPG
    142 KB · Aufrufe: 51
Ich seh' grade, in Deinem Programm sind ja noch mehr Fehler drin: vor dem +AR1 müßtest Du P#0.1 in den AKKU laden. Doch überlege zunächst mal, was genau Du wirklich machen willst.

Harald
 
Vielen Dank war wirklich ein Fehler.


Was ich gnau machen will:

Eine ähnliche Schrittkette hab ich schon im TIA mit SCL Programmiert und läuft.

Also ich will eine Drag and Drop Schrittkette, unversal für jegliche Maschinen einsetztbar.

Aber mein Prolem ist immer noch der spb obwohl das VKE = 0 ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Woran meinst Du zu sehen, daß Dein SPB trotz VKE=0 ausgeführt wird? :confused:
Die Funktionsweise des SPB ist Dir geläufig bzw. hast Du in der Step7-Hilfe schnell mal nachgelesen? SPB setzt auf jeden Fall VKE und STA auf 1, egal ob der Sprung ausgeführt wird oder nicht. Das Beobachten des Programms zeigt den Status nach Ausführung der Operation.

Falls Du immer noch nicht an die korrekte Ausführung des SPB glaubst: Lade Dein Programm in PLCSIM und steppe Deine Schleife im Einzelschrittbetrieb durch. :cool:

Harald
 
Also ich will eine Drag and Drop Schrittkette, unversal für jegliche Maschinen einsetztbar.
Viel Erfolg bei der Erfindung des Universalprogramms für "jegliche" Maschinen, welches ohne Programmierung auskommt und lediglich per Drag'n Drop angepasst wird! Das haben schon sooo viele vor Dir versucht. ;)

Das konnte ich mir nicht verkneifen ;)

Harald
 
Woran meinst Du zu sehen, daß Dein SPB trotz VKE=0 ausgeführt wird? :confused:
Die Funktionsweise des SPB ist Dir geläufig bzw. hast Du in der Step7-Hilfe schnell mal nachgelesen? SPB setzt auf jeden Fall VKE und STA auf 1, egal ob der Sprung ausgeführt wird oder nicht. Das Beobachten des Programms zeigt den Status nach Ausführung der Operation.

Falls Du immer noch nicht an die korrekte Ausführung des SPB glaubst: Lade Dein Programm in PLCSIM und steppe Deine Schleife im Einzelschrittbetrieb durch. :cool:

Harald

Danke Harald,

du hattest von Anfang an recht es ist ein Fehler im Beobachten. Ich hab mir ja selber den Loop gebaut um vorwärts zu zählen, ich hab jedoch den Sprung zurück an die falsche Stelle geschrieben und somit einen "Schmarn" in den Loop Counter eingetragen.

Aber jetzt sind alle Fehler der STEP-Funktionen sind weg und die Schrittkette läuft (in der Simulation).

Vielleicht sollte ich ein Thema "Schrittkette: Drag and Drop" erstellen, es gibt ja doch recht viele Zweifler.
:p

Schönen Gruß noch
 
SO:

email:sv-330859@versanet.de :ROFLMAO:

Andere Frage.ich versuche mich gerade im Graph 7 einzuarbeiten.Hast du da eine Ahnung?
Mir gehts vorallem um die Betriebsarten und die ganzen Ein und Augänge de Graph 7 Bausteins.
Die SK selber aufzustellen ist mir vom Prinzip klar.
 
SO:

email:sv-330859@versanet.de :ROFLMAO:

Andere Frage.ich versuche mich gerade im Graph 7 einzuarbeiten.Hast du da eine Ahnung?
Mir gehts vorallem um die Betriebsarten und die ganzen Ein und Augänge de Graph 7 Bausteins.
Die SK selber aufzustellen ist mir vom Prinzip klar.
Bis auf den quittiereingang kannst du im Prinzip alle löschen, es sei denn du möchtest die graph fehlerverwaltung oder den ketten reset oder ähnliche Funktion tatsächlich verwenden.

Notwendig ist theoretisch nur die quittierung.
 
Zuletzt bearbeitet:
Zurück
Oben