Obwohl True aber läuft nicht

der_NooB

Level-2
Beiträge
254
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr Lieben,

ich hänge immer noch am Anlaufprogramm, leider.

Ich habe eine Schrittkette für jede Baugruppe erstellt, aber obwohl das Startsignal gekommen ist, läuft es nicht...

Könnt ihr mir helfen?
9.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du mußt im ersten IF entweder Dein mStart zurücksetzen oder - falls es ein Befehl von außen ist - auf Flanke prüfen.
Sonst bleibst Du momentan dauerhaft in Schritt 00 hängen, weil durch die ersten Zeilen immer wieder der Schrittmerker auf 0 gesetzt wird.
 
Code:
IF GVL.xWahlschalter_Automatik AND
    // Tagesbunker
    NOT GVL.DI_xKO_TB_P1_ERROR AND
    
    // Mühle ERRORs
      NOT GVL.DI_xP1_Mue_ERROR AND
    
    // Sieb5 ERRORs Motoren/Voll
    NOT GVL.xP1_Sieb5_ERROR AND
    NOT GVL.xSieb5_Voll_Stoermeldung AND
    
    // Sieb4 ERRORs Motoren/Voll
    NOT GVL.xP1_Sieb4_ERROR AND
    NOT GVL.xSieb4_Voll_Stoermeldung AND
    
    // Sieb3 ERRORs Motoren/Voll
    NOT GVL.xP1_Sieb3_ERROR AND
      NOT GVL.xSieb3_Voll_Stoermeldung AND 
    
    // Sieb2 ERRORs Motoren/Voll
    NOT GVL.xP1_Sieb2_ERROR AND
    NOT GVL.xSieb2_Voll_Stoermeldung AND
    
    // Sieb1 ERRORs Motoren/Voll
    NOT GVL.xP1_Sieb1_ERROR AND
    NOT GVL.xSieb1_Voll_Stoermeldung AND
    
    // Bedingungen
        NOT mNot_aus AND
        NOT GVL.fbTon_Laufzeit_Ueberwaschung.Q AND
        mStart
          THEN
        
     Anlaufprogramm();
      END_IF

ich habe hier mein Anlaufprogramm bedingt aufgerufen.

Code:
CASE iSchrittnummer_Sieb1 OF
    
00: // M3 und MV werden gleich gestartet

IF mStart THEN
M3_Sieb1 := TRUE;
MV_Sieb1 := TRUE;
END_IF

IF  fbTonM2Sieb1_EVG.Q THEN
    iSchrittnummer_Sieb1 := 10;
END_IF

10: // M2 wird gestartet nach den abgelaufenenzeit

M2_Sieb1 := TRUE;

IF fbTonM1Sieb1_EVG.Q THEN
    iSchrittnummer_Sieb1 := 20;
END_IF

20: // M1 wird gestartet und so bei wird Sieb1 fertig melden

M1_Sieb1 := TRUE;

IF M1_Sieb1 THEN
    xSieb1_Fertig:= TRUE;
    iSchrittnummer_Sieb1:= 30;
    ELSE
        xSieb1_Fertig := FALSE;
END_IF


END_CASE

      (******************************************************************)
    

CASE iSchrittnummer_Sieb1 OF
    
00: // M3 und MV werden gleich gestartet
IF mStart THEN
M3_Sieb2 := TRUE;
MV_Sieb2 := TRUE;
END_IF

IF  fbTonM2Sieb2_EVG.Q THEN
    iSchrittnummer_Sieb2 := 10;
END_IF

10: // M2 wird gestartet nach den abgelaufenenzeit

M2_Sieb2 := TRUE;

IF fbTonM1Sieb2_EVG.Q THEN
    iSchrittnummer_Sieb2 := 20;
END_IF

20: // M1 wird gestartet und so bei wird Sieb1 fertig melden

M1_Sieb2 := TRUE;

IF M1_Sieb2 THEN
    xSieb2_Fertig:= TRUE;
    iSchrittnummer_Sieb2:= 30;
    ELSE
        xSieb2_Fertig := FALSE;
END_IF

END_CASE

      (******************************************************************)


CASE iSchrittnummer_Sieb3 OF
    
00: // M3 und MV werden gleich gestartet
IF mStart THEN
M3_Sieb3 := TRUE;
MV_Sieb3 := TRUE;
END_IF

IF  fbTonM2Sieb3_EVG.Q THEN
    iSchrittnummer_Sieb3 := 10;
END_IF

10: // M2 wird gestartet nach den abgelaufenenzeit

M2_Sieb3 := TRUE;

IF fbTonM1Sieb3_EVG.Q THEN
    iSchrittnummer_Sieb3 := 20;
END_IF

20: // M1 wird gestartet und so bei wird Sieb1 fertig melden

M1_Sieb3 := TRUE;

IF M1_Sieb3 THEN
    xSieb3_Fertig:= TRUE;
    iSchrittnummer_Sieb3:= 30;
    ELSE
        xSieb3_Fertig := FALSE;
END_IF

END_CASE

      (******************************************************************)
    

CASE iSchrittnummer_Sieb1 OF
    
00: // M3 und MV werden gleich gestartet
IF mStart THEN
M3_Sieb4 := TRUE;
MV_Sieb4 := TRUE;
END_IF

IF  fbTonM2Sieb4_EVG.Q THEN
    iSchrittnummer_Sieb4 := 10;
END_IF

10: // M2 wird gestartet nach den abgelaufenenzeit

M2_Sieb4 := TRUE;

IF fbTonM1Sieb4_EVG.Q THEN
    iSchrittnummer_Sieb4 := 20;
END_IF

20: // M1 wird gestartet und so bei wird Sieb1 fertig melden

M1_Sieb4 := TRUE;

IF M1_Sieb4 THEN
    xSieb4_Fertig:= TRUE;
    iSchrittnummer_Sieb4:= 30;
    ELSE
        xSieb4_Fertig := FALSE;
END_IF

END_CASE

mein Anlaufprogramm.
trotzdem wird nicht gestartet
 
kann es sein weil ich meine Ausgänge von verschiedenen PRG/VAR einen Wert zuweise ?
 

Anhänge

  • 10.png
    10.png
    183,8 KB · Aufrufe: 18
  • 11.png
    11.png
    173,2 KB · Aufrufe: 17
Du solltest vielleicht doch noch mal lesen was im Beitrag #2 und #3 in diesem Thread geschrieben worden ist - dann klappt es auf jeden Fall schon mla besser ...
Das habe ich geändert.

Aber das Problem ist, dass ich die Aktion irgendwie nicht bedingt aufrufen kann. Deswegen habe ich jetzt mein Programm umgestellt.

Jetzt geht es, aber das Problem habe ich jetzt mit meinen DOs, die reagieren nicht mehr.

Könnte es daran liegen, dass einige Variablen FALSE und andere TRUE sein müssen?

Wie löse ich das?

danke dir
 

Anhänge

  • 10.png
    10.png
    183,8 KB · Aufrufe: 5
  • 11.png
    11.png
    173,2 KB · Aufrufe: 5
Ich weiß jetzt nicht wie du das mit dem "bedingt aufrufen" nun wieder gemacht hast - Tatsache ist aber, dass wenn sich in etwas "bedingtem aber gerade nicht aktiven" etwas ändert dann bewirkt das nichts.
Was hast du denn jetzt wie geändert das es "läuft" ?

Nachsatz : denk immer dran - ich / wir sitzen nicht an dienm Rechner und sehen was du siehst (oder auch nicht siehst)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß jetzt nicht wie du das mit dem "bedingt aufrufen" nun wieder gemacht hast - Tatsache ist aber, dass wenn sich in etwas "bedingtem aber gerade nicht aktiven" etwas ändert dann bewirkt das nichts.
Ich verstehe ehrlich gesagt nicht, warum es nicht funktioniert. Ich habe es mehrmals ausprobiert und musste es am Ende umstellen.
Was hast du denn jetzt wie geändert das es "läuft" ?
ich habe meinem Anlaufprogramm einfach aufgerufen und in dem Aktion habe ich meine Bedingungen gemacht.
12.png
Nachsatz : denk immer dran - ich / wir sitzen nicht an dienm Rechner und sehen was du siehst (oder auch nicht siehst)
Stimmt :)

Ich habe zwei Programme (PRGs), die auf meine DOs zugreifen, aber anscheinend geht das nicht.

Ich habe keine Idee, wie ich das machen soll. Da sollte ein ODER kommen, glaube ich, aber wie mache ich das mit den Programmaufrufen...?
 
Du kannst die Ausgänge deiner Programme/FBs auf Zwischenvariablen schreiben und diese dann "verodert" an EINER Stelle den digitalen Ausgängen zuweisen.
 
Im Grunde hat @cycon dir die Lösung genant - wenn 2 (oder mehr) Bausteine dieselben Variablen beeinflussen dann gilt IMMER das, was der Letzte befohlen hat. Du könntest jetzt bei deinen Bausteinen, wie vorgeschlagen, auf die OUT's Merker schalten un die am Ende verodern und daran dann die Ausgänge schalten., Guter Stil ist das aber nicht - wenn ein Baustein sagt "hüh" und der Andere sagt "Hott" - was soll dann wirklich gelten ?
Ich würde grundsätzlich Ausgänge nur in einem Baustein schalten. Du müßtest hier also ggf. dein Konzept mal überdenken ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Grunde hat @cycon dir die Lösung genant - wenn 2 (oder mehr) Bausteine dieselben Variablen beeinflussen dann gilt IMMER das, was der Letzte befohlen hat. Du könntest jetzt bei deinen Bausteinen, wie vorgeschlagen, auf die OUT's Merker schalten un die am Ende verodern und daran dann die Ausgänge schalten., Guter Stil ist das aber nicht - wenn ein Baustein sagt "hüh" und der Andere sagt "Hott" - was soll dann wirklich gelten ?
dann XOR macht mehr Sinn oder ?
Ich würde grundsätzlich Ausgänge nur in einem Baustein schalten. Du müßtest hier also ggf. dein Konzept mal überdenken ...
anderes weiß ich nicht wie es gehen soll.
ich will einen Anlaufprogramm das beim Starten der Anlage geht, dass wir sicher sind dass alles geleert wurde, und dann das Automatikprogramm darf dann normal funktionieren.
die DO sind in Anlaufprogramm sowie in dem Auto

hast eine Idee wie ich es besser mache ?
 
dann XOR macht mehr Sinn oder ?
Nö ... OR wäre richtig wenn wirklich der Eine oder der Andere einschalten soll - was aber ist wenn Ausschalten das Ziel ist und einer der Bausteine aber noch meint es Einschalten zu wollen ?

die DO sind in Anlaufprogramm sowie in dem Auto
übersetz doch bitte mal Anlaufprogramm ins Deutsche ...

hast eine Idee wie ich es besser mache ?
Dafür müßte ich dein Projekt kennen - ich bin mir aber 100%ig sicher, dass es auch einen Weg gibt das VERNÜNFTIG zu machen ...
 
Nö ... OR wäre richtig wenn wirklich der Eine oder der Andere einschalten soll - was aber ist wenn Ausschalten das Ziel ist und einer der Bausteine aber noch meint es Einschalten zu wollen ?
dann soll das Programm passen 😅
übersetz doch bitte mal Anlaufprogramm ins Deutsche ...
Einmal und dann fertig damit, oder willst du mir etwas anderes sagen?
Dafür müßte ich dein Projekt kennen - ich bin mir aber 100%ig sicher, dass es auch einen Weg gibt das VERNÜNFTIG zu machen ...
Das auf jeden Fall, aber es gibt mehrere Wege nach Rom.
und deswegen habe ich ja hier gefragt
 
... das könnte aber auch Bestandteil deines regulären Ablaufprogramms sein ... ist ja so etwas wie eine Grundstellungsfahrt ...
 
Zurück
Oben