unterschiedliche Fehler als Blinkcode

ThorPrez

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin dabei meine eigene Haussteuerung zu programmieren.
Bis jetzt läuft alles sehr gut.
Allerdings würde ich gerne die unterschiedlichen Fehlerzustände unserer Abwasserpumpe als Blinkcode darstellen, so wie man es von den Beckhoff Buskopplern kennt ... z.B. 1xlang, 3xkurz, ...

Achja, am besten wäre in ST.

Wäre für Tipps dankbar.


Gruß Thorsten
 
Ich würde die Blinksequenz (als Zeiten) in Arrays Speichern und diese dann dementsprechend umladen. Die Sequenz würde ich dann mit einem Baustein auswerten und Anzeigen.

Die Umsetzung könnte wie folgt aussehen.

Blinkanzeige Auswertung:
Code:
FUNCTION_BLOCK BlinkSeq
VAR_INPUT
  Sequence  : ARRAY[1..10] OF TIME; (* Anzeige Sequenz *)
  DownTime  : TIME;                 (* Pausenzeit konstant *)
  Start     : BOOL;                 (* Startsignal *)
END_VAR
VAR_OUTPUT
  Signal    : BOOL;                 (* Ausgangssignal *)
END_VAR
VAR
  iCount    : INT := 1;             (* Zählervariable *)
  OnTime    : TON;                  (* Einschaltzeit *)
  OffTime   : TOF;                  (* Ausschaltzeit *)
  StartFlag : R_TRIG;               (* Flankenerkennung *)
END_VAR

StartFlag(CLK:=Start); (* Flanken erkennung damit man auch immer vorne beginnt mit der Anzeige *)

IF StartFlag.Q OR
   iCount > 10 OR
   iCount <= 0 OR
   Sequence[iCount] = t#0ms
THEN
  iCount := 1;  (* Rücksetzen der Sequenz *)
END_IF;

OnTime(IN:=NOT OffTime.Q, PT:=Sequence[iCount]); (* Einschaltzeit *)
OffTime(IN:=OnTime.Q, PT:=DownTime); (* Ausschaltzeit *)

IF OnTime.Q AND OffTime.Q THEN
  iCount := iCount + 1;  (* Index hoch zählen *)
END_IF;

Signal := (NOT OnTime.Q) AND (NOT OffTime.Q) AND Start; (* Ausgangssignalbilden *)
und hier der Aufruf:
Code:
PROGRAM PLC_PRG
VAR
    myTest     : BlinkSeq;
    mySequence : ARRAY[1..10] OF TIME := t#3s, t#500ms, t#500ms, t#500ms;
    myStart    : BOOL;
    mySignal   : BOOL;
END_VAR

myTest(Sequence:=mySequence , DownTime:= t#1s, Start:=myStart , Signal=> mySignal);
Bei diesem Baustein kann die Sequenz bis zu 10 Signale umfassen wenn weniger Zweiten eingetragen wurden, werden auch nur diese angezeigt und direkt wiederholt.
 

Anhänge

  • Blink.PNG
    Blink.PNG
    33,5 KB · Aufrufe: 39
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte eine ähnliche Idee schonmal für eine Anlage die nur eine Fehlerleuchte hatte.

Da bietet sich irgendwann Morsecode an, oder man kauft endlich mal ein Panel ;)

Für den Heimbereich sollte es reichen, man sollte die codes nur gut unterscheiden können.

MfG

Marcel
 
Ich werde zwei Lampen verwenden (Ablaufstörung & Pumpenstörung).
Man brauch also dann nur je drei Blinkcodes.
ist also relativ überschaubar.

Und wenn es zu einer Störung kommt wird sowieso mein Telefon klingeln und mir meine Frau mitteilen, dass da was blinkt.
Werde dann online gehen müssen, um nachzuschauen, was nicht stimmt.
 
Zurück
Oben