Added Kaco cyclic data exchange change

- Power will now only be written if the requested power changed
This commit is contained in:
Matthias Heisig
2025-09-10 08:49:21 +02:00
parent 39a206a1df
commit 7c462c9cd4
4 changed files with 214 additions and 197 deletions

View File

@@ -47,6 +47,7 @@ VAR
// Internal power command
_rPowerInternal : REAL := 0;
_rLastPowerInternal : REAL := 0;
// Enum for requested state
_eRequestedState : E_KACO_PCU_REQUESTED_STATE := E_KACO_PCU_REQUESTED_STATE.OFF;
@@ -466,7 +467,7 @@ CASE _iStateCyclicData OF
IF _eRequestedState <> _eLastRequestedState THEN
_iStateCyclicData := 10;
ELSE
_iStateCyclicData := 20;
_iStateCyclicData := 12;
END_IF
END_IF
@@ -500,7 +501,14 @@ CASE _iStateCyclicData OF
_tonPollingTimer(IN := TRUE, PT := _timPollingDelay);
IF _tonPollingTimer.Q THEN
_tonPollingTimer(IN := FALSE);
_iStateCyclicData := 12;
END_IF
12: // Check if powercommand changed
IF _rPowerInternal <> _rLastPowerInternal THEN
_iStateCyclicData := 20;
ELSE
_iStateCyclicData := 21;
END_IF
20: // Write current power command
@@ -526,6 +534,7 @@ CASE _iStateCyclicData OF
_iErrorCountWPC := _iErrorCountWPC + 1;
_iErrorIDWPC := _fbWritePowerCommand.nErrId;
ELSE
_rLastPowerInternal := _rPowerInternal;
_iCurrentErrorCountWPC := 0;
END_IF
END_IF