6 große Lüfter dürfen nicht gleichzeitig ein, wenn Anforderung von der Temperatur kommt, sonst fliegen die Sicherungen

Startfreigabe und AnlaufAktiv ist im Prinzip invertiert, einen davon könnte man demnach eliminieren,
Ist schon angepasst.

Alternativ als Schleife:
Code:
VAR
  StartGeblaese : ARRAY[1..6] OF BOOL; // Startanforderungen
  RunGeblaese   : ARRAY[1..6] OF BOOL; // Gebläse läuft
  Startfreigabe : BOOL := TRUE;
  StartTimer    : TON;
  i             : INT;
END_VAR

// Timer läuft, wenn Startfreigabe blockiert ist
StartTimer(IN := NOT Startfreigabe, PT := T#60s);

// Wenn Startfreigabe da ist, suche das erste Gebläse, das gestartet werden will
IF Startfreigabe THEN
  FOR i := 1 TO 6 DO
    IF StartGeblaese[i] AND NOT RunGeblaese[i] THEN
      RunGeblaese[i] := TRUE;
      Startfreigabe := FALSE;
      EXIT; // Nur ein Gebläse pro 60s erlauben
    END_IF
  END_FOR
END_IF

// Wenn die 60 Sekunden abgelaufen sind, Startfreigabe zurücksetzen
IF StartTimer.Q THEN
  Startfreigabe := TRUE;
END_IF
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist schon angepasst.

Alternativ als Schleife:
Code:
VAR
  StartGeblaese : ARRAY[1..6] OF BOOL; // Startanforderungen
  RunGeblaese   : ARRAY[1..6] OF BOOL; // Gebläse läuft
  Startfreigabe : BOOL := TRUE;
  StartTimer    : TON;
  i             : INT;
END_VAR

// Timer läuft, wenn Startfreigabe blockiert ist
StartTimer(IN := NOT Startfreigabe, PT := T#60s);

// Wenn Startfreigabe da ist, suche das erste Gebläse, das gestartet werden will
IF Startfreigabe THEN
  FOR i := 1 TO 6 DO
    IF StartGeblaese[i] AND NOT RunGeblaese[i] THEN
      RunGeblaese[i] := TRUE;
      Startfreigabe := FALSE;
      EXIT; // Nur ein Gebläse pro 60s erlauben
    END_IF
  END_FOR
END_IF

// Wenn die 60 Sekunden abgelaufen sind, Startfreigabe zurücksetzen
IF StartTimer.Q THEN
  Startfreigabe := TRUE;
END_IF

Hmm, irgendwie fehlt da ein markanter Punkt oder übersehe ich etwas?
RunGeblaese := TRUE;
 
Schon klar, aber wir wollen hier doch keinen fertigen Code ohne Beteiligung des Themenstartes veröffentlichen.
Außerdem war in der Aufgabenstellung nur das EIN-Schalten definiert.
Von AUS-Schalten war nie die Rede. ;)
 
Zurück
Oben