-> Hier kostenlos registrieren
Hallo Miteinander!
Ich versuche bei der Bibliothek WagoAppAppLED die Methode ".SetSequence" zu verwenden, leider verstehe ich nicht,
wie "POINTER TO ARRAY[0..0] OF typLedSequenceStep" funktionieren soll.
Die Arrays Dimensionen runterzusetzen auf 0..0 und die eckigen Klammern zu entfernen bringt nichts.
Kann mir jemand erklären wie ich eine Sequenz korrekt aufbauen kann?
Ich versuche bei der Bibliothek WagoAppAppLED die Methode ".SetSequence" zu verwenden, leider verstehe ich nicht,
wie "POINTER TO ARRAY[0..0] OF typLedSequenceStep" funktionieren soll.
Die Arrays Dimensionen runterzusetzen auf 0..0 und die eckigen Klammern zu entfernen bringt nichts.
Kann mir jemand erklären wie ich eine Sequenz korrekt aufbauen kann?
Code:
{attribute 'qualified_only'}
VAR_GLOBAL
/// WIP Mode (Total Duration: 2.55S)
tSeqWIP: ARRAY[0..7] OF typLedSequenceStep
:=[ (eColor1 := eLedColor.Green, tDuration := T#00.25S),
(eColor1 := eLedColor.Off, tDuration := T#00.10S),
(eColor1 := eLedColor.Green, tDuration := T#00.25S),
(eColor1 := eLedColor.Off, tDuration := T#00.10S),
(eColor1 := eLedColor.Green, tDuration := T#00.25S),
(eColor1 := eLedColor.Off, tDuration := T#00.10S),
(eColor1 := eLedColor.Yellow, tDuration := T#00.75S),
(eColor1 := eLedColor.Off, tDuration := T#00.75S)
];
/// Manual Operation (Total Duration: 2.00S)
tSeqManual: ARRAY[0..1] OF typLedSequenceStep
:=[ (eColor1 := eLedColor.Yellow, tDuration := T#01.5S),
(eColor1 := eLedColor.Off, tDuration := T#00.5S)
];
/// Revision (Total Duration: 2.05S)
tSeqRevision: ARRAY[0..6] OF typLedSequenceStep
:=[ (eColor1 := eLedColor.Yellow, tDuration := T#01.00S),
(eColor1 := eLedColor.Red, tDuration := T#00.25S),
(eColor1 := eLedColor.Off, tDuration := T#00.10S),
(eColor1 := eLedColor.Red, tDuration := T#00.25S),
(eColor1 := eLedColor.Off, tDuration := T#00.10S),
(eColor1 := eLedColor.Red, tDuration := T#00.25S),
(eColor1 := eLedColor.Off, tDuration := T#00.10S)
];
/// Standby (Total Duration: 60S)
tSeqStandby: ARRAY[0..1] OF typLedSequenceStep
:=[ (eColor1 := eLedColor.Yellow, tDuration := T#00.05S),
(eColor1 := eLedColor.Off, tDuration := T#59.95S)
];
/// Generic Fault (Total Duration: 1.00S)
tSeqErr: ARRAY[0..1] OF typLedSequenceStep
:=[ (eColor1 := eLedColor.Red, tDuration := T#00.50S),
(eColor1 := eLedColor.Off, tDuration := T#00.50S)
];
END_VAR
Code:
PROGRAM UserLED
VAR
OpenInit: BOOL; // Channel Initialization
AppLED: ARRAY[1..7] OF FbAppLED; // LED function
END_VAR
(*============================== User LED ===============================*)
// (TRUE) bei der IF Abfrage ist nur ein Platzhalter.
(* Initialization *)
IF NOT OpenInit THEN
AppLED[1](
xOpen := TRUE,
eID := eLEDID.AppLED_1,
xError => ,
xIsOpen => ,
xIsIdle => ,
eMode => ,
xBusy => ,
oStatus =>
);
END_IF
(* Criteria *)
IF (TRUE)
THEN // Fault
AppLED[1].SetSequence(
pSequence := seqUserLED.tSeqErr,
udiSequenceSize := 2
);
ELSIF (TRUE)
THEN // Revision
AppLED[1].SetSequence(
pSequence := seqUserLED.tSeqRevision,
udiSequenceSize := 7
);
ELSIF (TRUE)
THEN // Manual
AppLED[1].SetSequence(
pSequence := seqUserLED.tSeqManual,
udiSequenceSize := 2
);
ELSIF (TRUE)
THEN // Operation
AppLED[1].SetStatic(eLedColor.Green);
ELSE // Other status
AppLED[1].SetSequence(
pSequence := seqUserLED.tSeqStandby,
udiSequenceSize := 2
);
END_IF