Step 7 Logikfehler bei Schleife

Steve_O

Level-2
Beiträge
42
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Leute, danke für eure Zeit

Daten vorab:
CPU - 315F-2 DP
SW - Step 7 V5.5 + SP4
Windows 7

Nun zum Problem:

Ich habe einen Merker angelegt der aufschreit sobald eine Druckdifferenz Messung nicht passt.
Soweit so gut, es gibt jetzt einen FC Baustein mit vordefinierten Sprüngen ich habe jetzt meine Meldung überall rein getan wo sie hin soll nur beim letzt Sprung weiß ich nicht wie ich es lösen soll das er keinen Loop macht sondern ruhend bleibt bis der druck wieder zu hoch ist.

Sprich : Druck zu hoch in Step 1,2,3,4
= sprung
Wasser schiebt aus, druck lässt nach
=sprung
normale wasserzirkulation
=
und ab da hängts bei mir...

Ich wäre dankbar für ideen.

LG Steve
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nur beim letzt Sprung weiß ich nicht wie ich es lösen soll das er keinen Loop macht
Vielleicht einfach ins letzte Netzwerk springen und dort keinen Sprung machen?

Ansonsten ist das nun etwas schwierig zu sehen, wegen fehlendem Programm und so.



Und zu guter letzt:
Lass die Sprünge sein, macht nur Probleme, Dein Programm braucht das so nicht wenn ich mir die Bezeichnungen ansehe.

Nimm lieber eine Abfage:
NW1:
U Bedingung1 dann TuDies // z.B. Druck inkrementell um 1 erhöhen
NW2:
U Bedingung2 dann TuDies // z.B. Druck inkrementell um 1 verringern

Alternative: Regler nutzen

Die SPS arbeitet zyklisch, sie zurückspringen zu lassen erhöht die Zykluszeit und machts unübersichtlicher, schlimmstenfalls, wie Du bereits weißt, gibts eine Endlosschleife und die CPU geht in Stop.
 
Die Forderung nach einem realen Programm wurde ja schon gestellt - so ist das alles nur Glaskugel schauen.
Allerdings hört sich für mich das Ganze eher nach einer Schrittkette an als nach irgendetwas mit Loop und Sprüngen ...
 
Vielleicht einfach ins letzte Netzwerk springen und dort keinen Sprung machen?

Ansonsten ist das nun etwas schwierig zu sehen, wegen fehlendem Programm und so.



Und zu guter letzt:
Lass die Sprünge sein, macht nur Probleme, Dein Programm braucht das so nicht wenn ich mir die Bezeichnungen ansehe.

Nimm lieber eine Abfage:
NW1:
U Bedingung1 dann TuDies // z.B. Druck inkrementell um 1 erhöhen
NW2:
U Bedingung2 dann TuDies // z.B. Druck inkrementell um 1 verringern

Alternative: Regler nutzen

Die SPS arbeitet zyklisch, sie zurückspringen zu lassen erhöht die Zykluszeit und machts unübersichtlicher, schlimmstenfalls, wie Du bereits weißt, gibts eine Endlosschleife und die CPU geht in Stop.
Da es sich um ein bestehendes Programm handelt kann und darf ich das nicht komplett überarbeiten. Meine Anweisung war es ins bestehende Programm zu implementieren. Bis dato funktionierte es auch einwandfrei. Ich sende euch in kürze sobald ich am Rechner bin Bilder des Projektes zu.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Forderung nach einem realen Programm wurde ja schon gestellt - so ist das alles nur Glaskugel schauen.
Allerdings hört sich für mich das Ganze eher nach einer Schrittkette an als nach irgendetwas mit Loop und Sprüngen ...
Um genau zu sein ist es gewissermaßen eine Ablaufsteuerung. Eine mischung aus Schrittkette und Sprüngen wenn man so will...
 
"M900.0" ist der von mir angelegte Merker. Er wird in 4 Nw benutzt als bedingung für einen Sprung zum NW 42 wo der druck abgebaut wird und von dort aus zu NW 22. Wasserzirkulation. Wo er enden sollte wenn der Druck wieder passt
SS1.png
 

Anhänge

  • SS2.png
    SS2.png
    40 KB · Aufrufe: 77
  • SS3.png
    SS3.png
    30,6 KB · Aufrufe: 76
  • SS4.png
    SS4.png
    38,1 KB · Aufrufe: 73
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst einen Merker in NW42 setzen das die Problemlösung aufgerufen wurde.
Dieser Merker muss nach Zeit X zurückgesetzt werden damit er erneut gegensteuern kann.
Solange der Merker aktiv ist darf nicht gesprungen werden:
...
U M900.0
UN Merker_bereits_ausgeführt
...
Zeit zum zurücksetzen hängt von der Anwendung ab.

Stell in Deiner Firma kritische Fragen, z.B. warum darf das nicht richtig programmiert werden? Solche Programme sind weder zeitgemäß noch vernünftig wartbar.
 
Du musst einen Merker in NW42 setzen das die Problemlösung aufgerufen wurde.
Dieser Merker muss nach Zeit X zurückgesetzt werden damit er erneut gegensteuern kann.
Solange der Merker aktiv ist darf nicht gesprungen werden:
...
U M900.0
UN Merker_bereits_ausgeführt
...
Zeit zum zurücksetzen hängt von der Anwendung ab.

Stell in Deiner Firma kritische Fragen, z.B. warum darf das nicht richtig programmiert werden? Solche Programme sind weder zeitgemäß noch vernünftig wartbar.
Ich habe schon antworten bekommen, weil die anlagen dauerhaft laufen und man nicht mal eben probieren kann.

Und ganz ehrlich mit meinem jetzigen know-how wäre das ein Kamikaze Angriff auf mich selbst. Solang es funktioniert und nichts neues kommt soll nur überarbeitet und gewartet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe schon antworten bekommen, weil die anlagen dauerhaft laufen und man nicht mal eben probieren kann.
Dafür gibt es die Simulation. Projekt duplizieren, ändern und simulieren. Da es (im gezeigten) lediglich BOOLs sind ist das nicht schwierig.

Und ganz ehrlich mit meinem jetzigen know-how wäre das ein Kamikaze Angriff auf mich selbst.
Ist es das nicht bereits jetzt schon wenn Du mit Deinem Know-How(das ich nicht kenne) bereits an Grenzen stößt weil alles in AWL extra kompliziert gemacht wird, Du aber dennoch darin Änderungen vornehmen musst? Im Grunde genommen musst Du da dann doch auch probieren.

Wann soll das enden?
Solang es funktioniert und nichts neues kommt
Also nie.
 
Deine Beschreibung ist schwer zu verstehen!
Deine Anhänge haben nicht's mit den von dir beschriebenen Netwerken 4 und 42 zu tun!
Wo liegt genau dein Problem?

Erklärung zum Programm:
Es handelt sich um eine Schrittkette mit dem Sprungleisten-Befehl
in DBB1 steht die Schrittnummer die aktiv ist: 0..49 Bei Nummer größer 49 (die lezte deiner Sprungmarken) wird zur Sprungmarke
ENDE gesprungen. Den SPL Befehl kann man im Detail in der Hilfe nachschlagen!

L 43
CC "Sprung"
dürfte die Schrittkette auf SchrittNr. 43 setzen.

Es wird immer nur der Code des entsprechenden Schrittes abgearbeitet. Der Rest wird nicht bearbeitet!


= Zuweisungen in Schritten sind mit Vorsicht zu genießen. Die Zuweisung bleibt wie ein SET RESET auf dem letzten Wert stehen und wird dann ausserhalb des Schrittes nicht mehr bearbeitet.

Der SPL Befehl ist eine effektive Methode um "Ereignis getriebene" Schrittketten zu erstellen!

Das hier ist aber schon ein Monstrum!
 
Dafür gibt es die Simulation. Projekt duplizieren, ändern und simulieren. Da es (im gezeigten) lediglich BOOLs sind ist das nicht schwierig.


Ist es das nicht bereits jetzt schon wenn Du mit Deinem Know-How(das ich nicht kenne) bereits an Grenzen stößt weil alles in AWL extra kompliziert gemacht wird, Du aber dennoch darin Änderungen vornehmen musst? Im Grunde genommen musst Du da dann doch auch probieren.

Wann soll das enden?

Also nie.
Gelernt nicht zuviel zu hinterfragen vor allem da manch Partei sehr stur ist.

Ich stoße immer wieder an grenzen aber das tolle ist ja durch sie zu wachsen. Jeden Tag ein stückchen besser zu sein oder mehr zu verstehen ist das Ziel. Probieren kann ich in den 1-2 stunden die mir nach Planung gegeben werden...

und bezüglich dem "also nie"
bekanntlich stirbt die Hoffnung zuletzt nicht wahr ? :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine Beschreibung ist schwer zu verstehen!
Deine Anhänge haben nicht's mit den von dir beschriebenen Netwerken 4 und 42 zu tun!
Wo liegt genau dein Problem?

Erklärung zum Programm:
Es handelt sich um eine Schrittkette mit dem Sprungleisten-Befehl
in DBB1 steht die Schrittnummer die aktiv ist: 0..49 Bei Nummer größer 49 (die lezte deiner Sprungmarken) wird zur Sprungmarke
ENDE gesprungen. Den SPL Befehl kann man im Detail in der Hilfe nachschlagen!

L 43
CC "Sprung"
dürfte die Schrittkette auf SchrittNr. 43 setzen.

Es wird immer nur der Code des entsprechenden Schrittes abgearbeitet. Der Rest wird nicht bearbeitet!


= Zuweisungen in Schritten sind mit Vorsicht zu genießen. Die Zuweisung bleibt wie ein SET RESET auf dem letzten Wert stehen und wird dann ausserhalb des Schrittes nicht mehr bearbeitet.

Der SPL Befehl ist eine effektive Methode um "Ereignis getriebene" Schrittketten zu erstellen!

Das hier ist aber schon ein Monstrum!
Die beschriebenen Netzwerke erklären nur was bis zur ausgangsposition meines Problemes passiert.

Mein Problem: Wie löse ich es am besten das mein Merker in Nw22. wasserzirkulation zurückgesetzt wird und die anlage wieder normal laufen kann und der merker erst wieder auslöst sobald wieder überdruck entsteht. Im Nw 42. wird der Überdruck abgebaut, nach dem abbau springt er in die wasserzirkulation und die Anlage läuft wieder normal...

würde das gehen?

U "M900.0"
R "M900.0"

BEA

und ja ist ein Monstrum!
 
Zuletzt bearbeitet:
vernünftigerweise in einem FC der immer aufgerufen wird (da gibt es sicher schon welche)
Hier machst du die Zuweisung auf deinen Merker.

Inm Sprungverteiler fragst du dann nur den Merker ab.
 
Also ich würde das Ganze komplett als Graph-Cet programmieren. Da kann man das Programm schön strukturiert und lesbar gestallten. Die Anweisungen für die Transitionen schreibe ich immer in einem separaten Baustein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Problem: Wie löse ich es am besten das mein Merker in Nw22. wasserzirkulation zurückgesetzt wird und die anlage wieder normal laufen kann und der merker erst wieder auslöst sobald wieder überdruck entsteht. Im Nw 42. wird der Überdruck abgebaut, nach dem abbau springt er in die wasserzirkulation und die Anlage läuft wieder normal...

erstmal glaube ich dass du Netzwerk NW mit Schrittnummer verwechselt. Was du als NW22, Wasserzirkulation bezeichnest ist Schritt 22
sn22

Schritt 42 ist spülen, das hat aber nichts mit Netzwerk 42 zu tun!

Wenn der Merker Bedingungslos zurückgesetzt werden soll dann

U M900.0
R M900.0

oder alternativ

SET
R M900.0

Ich glaube aber nicht, dass das ein Problem so löst!
Das kommt drauf an wo M 900.0 gesetzt wird und welche Funktion er letztendlich genau ausführt.

Umschreiben auf etwas anderes, so wie das hier teils vorgeschlagen wird, würde ich nicht machen. Das birgt zu viele Fehlerquellen.

Ich halte den SPL bis heute für eine der besten Methoden "Ereignis getriebene" Schrittketten zu programmieren.
Ich bin mir sicher, dass wenn man genau darüber nachdenkt, das ganze effektiver und einfacher machen könnte. Z.B. meherer sequenziell nacheinander ablaufende Schrittketten, statt alles in eine zu packen.

Aber das steht hier nicht zur Debatte.

Was mir auffällt ist, dass die Schrittkette keinen generellen RESET-Schritt hat.
Dort schreibe ich alle Merker rein, die durch die Schrittkette bearbeitet werden und wieder gelöscht werden müssen.

ich mach das so:
Code:
      L     #SNR                        // Schrittnummer
      SPL   CLR                         // Sprungziel bei SNR>max
      SPA   INIT                        // 0-Schritt, Initialisierung
      SPA   S1                          // Startschritt
      SPA   S2
      SPA   S3
      SPA   S4
//      SPA   S5
//      SPA   S6

CLR:  SET                               // CLR Aktionsmerker die über das Ende der Schrittkette nicht mehr benötigt werden
      R     #START_TIMER
      R     #MSG_RUN
      R     #ioSTART
      R     #CMD_AST
      R     #CMD_GST

      L     1                           // Schrittnummer
      T     #SNR                        // auf Startschritt stellen
      T     #DSP_SNR                    // Schrittnummer Anzeige
      SPA   END

INIT: SET                               // Initalisierung
      R     #ioREADY

// hier die bei INIT zu löschenden Merker eintragen
// z.B. Aktionsmerker die über das Ende der Schrittkette weiterhin benötigt werden
// wird bei verketteten oder mehrstufigen Schrittabläufen benötigt
      CLR   
      SPA   CLR
      SPA   SET                         // wird nur benötigt, damit die Entwicklungsumgebung die Sprungmarke nicht löscht
      
      // NW 2: Schrittweiterschaltung, bzw. Bausteinende
      NEXT: L     #SNR                        // NEXT : Schrittnummer auf nächsten
      +     1                           // Schritt
SET:  T     #SNR                        // Ablauf auf Schritt mit Nr. in Akku 1 setzen

END:  L     #SNR                        // Sprungmarke für Baustein ENDE
      T     #DSP_SNR                    // Schrittnummer Anzeige
      L     1                           // Wenn Ablauf läuft, dann ENO-Ausgang = 1
      >I   
      SAVE 
      CLR   
      BEA
 
Nochmal, wo liegt dein Problem genau?

a) Grundsätzliches Problem bei Verständnis was eine Schrittkette ist und wie diese Funktioniert?
b) Beim Verständnis der Schritttechnik mit SPL Befehl?
c) Wie setzte/rücksetze ich eine Merker in einer Schrittkette dieser Art?
d) Problem beim Verständis deines Maschinenablaufs, deiner Maschine
 
vernünftigerweise in einem FC der immer aufgerufen wird (da gibt es sicher schon welche)
Hier machst du die Zuweisung auf deinen Merker.

Inm Sprungverteiler fragst du dann nur den Merker ab.
Das mache ich auch so ich habe einen FC wo ich die Druckdifferenz etc drinnen habe und bei zu hohem druck setzt er mir den Merker.

Dieser Merker wurde in der schrittkette überall dort eingesetzt wo er auch hin soll ich weiß nur nicht wie ich das problem löse nachdem sich der druck wieder gesenkt hat das ganze in der Wasserzirkulation enden zu lassen. Die Wasserzirkulation ist der letzte schritt für den merker in diesem soll er geresetet werden bis der druck wieder zu hoch ist und die meldung wieder gesetzt werden müsste. So dass das ganze von neu beginnt...


Ich weiß ein wenig umständlich erklärt und das ganze ist auch komisch aufgebaut aber leider steht nichts anderes zu Debatte als es in AWL in dieser Schrittkette zu lösen...
 
Zurück
Oben