From 266325597a8180eeb865f513214313bf5ce85ece Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:06:01 +0100 Subject: [PATCH 1/2] Create draft PR for #765 From 74b297c74b5e0bf2df903fca8bc60e6e08851a82 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:11:45 +0100 Subject: [PATCH 2/2] AxoCtrlxDriveXsc --- .../src/AxoCtrlxDriveXsc/AxoCtrlxDriveXsc.st | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/components.rexroth.drives/ctrl/src/AxoCtrlxDriveXsc/AxoCtrlxDriveXsc.st b/src/components.rexroth.drives/ctrl/src/AxoCtrlxDriveXsc/AxoCtrlxDriveXsc.st index 644d5e605..edcb5a86d 100644 --- a/src/components.rexroth.drives/ctrl/src/AxoCtrlxDriveXsc/AxoCtrlxDriveXsc.st +++ b/src/components.rexroth.drives/ctrl/src/AxoCtrlxDriveXsc/AxoCtrlxDriveXsc.st @@ -141,6 +141,8 @@ NAMESPACE AXOpen.Components.Rexroth.Drives _infoTimer : AXOpen.Timers.OnDelayTimer; _errorTimer : AXOpen.Timers.OnDelayTimer; + _tmpTimer : AXOpen.Timers.OnDelayTimer; + _lastMessageCodeFromMC : ULINT; END_VAR @@ -1955,6 +1957,7 @@ NAMESPACE AXOpen.Components.Rexroth.Drives DriveStatus.Error.Id := UINT#0; TaskMessenger.Restore(); THIS.CallTimers(FALSE); + _tmpTimer.OnDelay(THIS, FALSE , T#0s); // _AxisReference^.Outputs.DriveControlWord_S_0_0134_0_0.IPOSYNC := FALSE; // _AxisReference^.Outputs.DriveControlWord_S_0_0134_0_0.DriveHalt := FALSE; // _AxisReference^.Outputs.DriveControlWord_S_0_0134_0_0.DriveEnable := FALSE; @@ -2186,8 +2189,27 @@ NAMESPACE AXOpen.Components.Rexroth.Drives END_IF; END_IF; IF _State = UINT#323 THEN - _State := UINT#327; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.AcceptanceOfPositioningCommandValue := FALSE; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.HomingControl := FALSE; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.AbsoluteRelative := FALSE; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.ImmediateChange := FALSE; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.JogPositive := FALSE; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.JogNegative := FALSE; + _AxisReference^.Outputs.SignalControlWord_S_0_0145_0_0.ClearError := FALSE; + _State := UINT#324; END_IF; + IF _State = UINT#324 THEN + _tmpTimer.OnDelay(THIS, _AxisReference^.Inputs.DriveStatusWord_S_0_0135_0_0.InReference AND _AxisReference^.Inputs.SignalStatusWord_S_0_0144_0_0.DriveStandstill , T#100ms); + IF _tmpTimer.output THEN + _State := UINT#325; + END_IF; + END_IF; + IF _State = UINT#325 THEN + _State := UINT#326; + END_IF; + IF _State = UINT#326 THEN + _State := UINT#327; + END_IF; IF _State = UINT#327 THEN Done := TRUE; MC_HomeCycle := ULINT#0;