Verbindung Crash BC100

Felix_15

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

meine BC100 SPS läuft soweit und ich habe angefangen mit Codesys etwas Code zu schreiben, um zu testen.

Mir ist leider aufgefallen, dass bei bestimmtem Code die SPS die Verbindung komplett abbricht und man einen Power Cycle machen muss, um sich erneut zu verbinden.

Wie ist es möglich, dass bei manchem Code die Verbindung abbricht und nicht mehr geht, während bei anderem Code alles funktioniert?

Hier ein Codebeispiel bei dem alles läuft:
Code:
PROGRAM PLC_PRG
VAR
    DO_1 AT %QX0.0 : BOOL;
    DO_2 AT %QX0.1 : BOOL;
    StartTimer : BOOL; //Start Timer Variable
    TimerOut : BOOL; // Variable für Timer Output
    timer : TON; // Timer-Instanz
END_VAR


// Timer initialisieren
timer(IN := TRUE, PT := T#1S);

// Überprüfen, ob der Timer abgelaufen ist
IF timer.Q THEN
    DO_1 := NOT DO_1; // Zustand umschalten
    DO_2 := NOT DO_2; // Zustand umschalten
    timer(IN := FALSE); // Timer zurücksetzen
    timer(IN := TRUE, PT := T#1S); // Timer erneut starten
END_IF


Hier ein Beispiel, bei dem nichts mehr geht und neu gestartet werden muss:
Code:
PROGRAM PLC_PRG
VAR
    DO_1 AT %QX0.0 : BOOL;
    DO_2 AT %QX0.1 : BOOL;
    DO_3 AT %QX0.2 : BOOL;
    StartTimer : BOOL; //Start Timer Variable
    TimerOut : BOOL; // Variable für Timer Output
    timer : TON; // Timer-Instanz
END_VAR

// Timer initialisieren
timer(IN := TRUE, PT := T#1S);

WHILE NOT timer.Q DO
    DO_3 := NOT DO_3; //Zustand umschalten beim Warten
END_WHILE

    DO_1 := NOT DO_1; // Zustand umschalten
    DO_2 := NOT DO_2; // Zustand umschalten
    timer(IN := FALSE); // Timer zurücksetzen

Liegt es an der while-Schleife oder an irgend einem Fehler?

Wahrscheinlich ist schon etwas falsch, aber warum es dann zu einem Absturz und Verbindungsabbruch kommt, kann ich mir nicht erklären.

PS: Gibt es eigentlich eine Möglichkeit die Gerätebenutzeranmeldung zu deaktivieren? Das nervt ziemlich... Immer eingeben BN: admin PW: wago
1728304962463.png

Konfiguration der SPS ist als Bild im Anhang zu finden.

Danke im Voraus!
 

Anhänge

  • Konfig_SPS.PNG
    Konfig_SPS.PNG
    57,6 KB · Aufrufe: 3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

// Timer initialisieren timer(IN := TRUE, PT := T#1S);
Hier startest du den Timer dann geht der Code in die While-Schleife.

WHILE NOT timer.Q DO DO_3 := NOT DO_3; //Zustand umschalten beim Warten END_WHILE
Die While-Schleife blockiert den Zyklus bis timer.Q = TRUE ist. Der Timer kann aber nie TRUE werden da er in jedem Zyklus initialisiert werden muss um seinen internen Status zu bekommen. Folglich hängt der Code in einer Endlosschleife fest.
 
Zurück
Oben