From aeb84c2a7a340283c41ce5307d9e81d6e128493b Mon Sep 17 00:00:00 2001 From: "[Luke Nisbet]" <[Luke.nisbet@STFC.ac.uk]> Date: Wed, 4 Mar 2020 09:52:22 +0000 Subject: [PATCH] Ticket READY FOR REVIEW The functionality is esentially thhe same as the lasat commit but it has now been changed to fit into the current framework a little better by making fbWriteParameters only run when called. --- solution/tc_project_app/GlobalTextList.TcGTLO | 5 + solution/tc_project_app/tc_mca_std_lib | 2 +- tash show | 2566 +++++++++++++++++ 3 files changed, 2572 insertions(+), 1 deletion(-) create mode 100644 tash show diff --git a/solution/tc_project_app/GlobalTextList.TcGTLO b/solution/tc_project_app/GlobalTextList.TcGTLO index 3982a2b..08fac26 100644 --- a/solution/tc_project_app/GlobalTextList.TcGTLO +++ b/solution/tc_project_app/GlobalTextList.TcGTLO @@ -305,6 +305,11 @@ "Write" + + "322" + "WriteParameters" + + {062c6d5a-aca0-4f82-8481-8e26e8c8681e} diff --git a/solution/tc_project_app/tc_mca_std_lib b/solution/tc_project_app/tc_mca_std_lib index ce4d55e..cd3be6a 160000 --- a/solution/tc_project_app/tc_mca_std_lib +++ b/solution/tc_project_app/tc_mca_std_lib @@ -1 +1 @@ -Subproject commit ce4d55ec59eeb6d4114ec605b1d57f6fecaa59a3 +Subproject commit cd3be6aabe19ba346c506702eadde42d534ce1b5 diff --git a/tash show b/tash show new file mode 100644 index 0000000..85a62df --- /dev/null +++ b/tash show @@ -0,0 +1,2566 @@ +commit bf64da273b5d33918c3e238409a3e550ec219687 (HEAD -> mbp-100-read-write-axis-parameters, origin/mbp-100-read-write-axis-parameters) +Author: [Luke Nisbet] <[Luke.nisbet@STFC.ac.uk]> +Date: Thu Feb 6 13:38:32 2020 +0000 + + Ticket compleated to original specification + + The code can read and write all possible PLC Open and Beckhoff + axis parameters it uses the MC_ReadParameter and MC_WriteParameter + function block within FB_Axis. Errors are passed out to the error + handling and it is possible to control it all through MainVisu. + +diff --git a/solution.sln b/solution.sln +index 9459e68..4dccbdf 100644 +--- a/solution.sln ++++ b/solution.sln +@@ -1,7 +1,7 @@ +  + Microsoft Visual Studio Solution File, Format Version 12.00 +-# Visual Studio 2013 +-VisualStudioVersion = 12.0.21005.1 ++# TcXaeShell Solution File, Format Version 11.00 ++VisualStudioVersion = 15.0.28010.2050 + MinimumVisualStudioVersion = 10.0.40219.1 + Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "solution", "solution\solution.tsproj", "{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}" + EndProject +@@ -33,22 +33,6 @@ Global + {9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) + {9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) + {9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) +- {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) + {FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) + {FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) + {FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) +@@ -65,8 +49,26 @@ Global + {FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) + {FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) + {FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) ++ {F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection ++ GlobalSection(ExtensibilityGlobals) = postSolution ++ SolutionGuid = {3F42AC3D-5210-4834-8C00-062CE02B7502} ++ EndGlobalSection + EndGlobal +diff --git a/solution/solution.tsproj b/solution/solution.tsproj +index f74cba4..e0f327a 100644 +--- a/solution/solution.tsproj ++++ b/solution/solution.tsproj +@@ -2,746 +2,813 @@ +  +  +  +- NCTOPLC_AXIS_REF_STATE ++ UINTARR2 + 32 ++ UINT ++  ++ 0 ++ 2 ++  ++  ++ [%u, %u] ++ [0] ++ [1] ++  ++  ++ 0x%08x [%u, %u] ++ . ++ [0] ++ [1] ++  ++  ++ 0x%08x (%u) ++ . ++ . ++  ++  ++  ++ NCENCODERSTRUCT_IN2B ++ 320 +  +- Operational +- BIT +- 1 ++ nDataIn1 ++ UINTARR2 ++ 32 + 0 +  +  +- Homed +- BIT +- 1 +- 1 +-  +-  +- NotMoving +- BIT +- 1 +- 2 ++ nDataIn2 ++ UINTARR2 ++ 32 ++ 32 +  +  +- InPositionArea +- BIT +- 1 +- 3 ++ nState1 ++ USINT ++ 8 ++ 64 +  +  +- InTargetPosition +- BIT +- 1 +- 4 ++ nState2 ++ USINT ++ 8 ++ 72 +  +  +- Protected +- BIT +- 1 +- 5 ++ nState3 ++ USINT ++ 8 ++ 80 +  +  +- ErrorPropagationDelayed +- BIT +- 1 +- 6 ++ nState4 ++ USINT ++  ++ 8 ++ 88 +  +  +- HasBeenStopped +- BIT +- 1 +- 7 ++ nDataIn3 ++ UINTARR2 ++ 32 ++ 96 +  +  +- HasJob +- BIT +- 1 +- 8 ++ nDataIn4 ++ UINTARR2 ++ 32 ++ 128 +  +  +- PositiveDirection +- BIT +- 1 +- 9 ++ nDataIn5 ++ UINTARR2 ++ 32 ++ 160 +  +  +- NegativeDirection +- BIT +- 1 +- 10 ++ nDataIn6 ++ UINTARR2 ++ 32 ++ 192 +  +  +- HomingBusy +- BIT +- 1 +- 11 ++ nState5 ++ USINT ++ 8 ++ 224 +  +  +- ConstantVelocity +- BIT +- 1 +- 12 ++ nState6 ++ USINT ++ 8 ++ 232 +  +  +- Compensating +- BIT +- 1 +- 13 ++ nState7 ++ USINT ++ 8 ++ 240 +  +  +- ExtSetPointGenEnabled +- BIT +- 1 +- 14 ++ nState8 ++ USINT ++ 8 ++ 248 +  +  +- PhasingActive +- BIT +- 1 +- 15 ++ nDcInputTime ++ DINT ++ 32 ++ 256 +  +  +- ExternalLatchValid +- BIT +- 1 +- 16 ++ nDataIn7 ++ UINTARR2 ++ 32 ++ 288 +  ++  ++  ++ NCENCODERSTRUCT_IN ++  ++ 96 ++  ++  ++  ++  ++  ++ NCENCODERSTRUCT_OUT2 ++ 320 +  +- NewTargetPos +- BIT +- 1 +- 17 ++ nDataOut1 ++ UINTARR2 ++ 32 ++ 0 +  +  +- ContinuousMotion +- BIT +- 1 +- 19 ++ nDataOut2 ++ UINTARR2 ++ 32 ++ 32 +  +  +- ControlLoopClosed +- BIT +- 1 +- 20 ++ nCtrl1 ++ USINT ++ 8 ++ 64 +  +  +- CamTableQueued +- BIT +- 1 +- 21 ++ nCtrl2 ++ USINT ++ 8 ++ 72 +  +  +- CamDataQueued +- BIT +- 1 +- 22 ++ nCtrl3 ++ USINT ++ 8 ++ 80 +  +  +- CamScalingPending +- BIT +- 1 +- 23 ++ nCtrl4 ++ USINT ++ 8 ++ 88 +  +  +- CmdBuffered +- BIT +- 1 +- 24 ++ nDataOut3 ++ UINTARR2 ++ 32 ++ 96 +  +  +- PTPmode +- BIT +- 1 +- 25 ++ nDataOut4 ++ UINTARR2 ++ 32 ++ 128 +  +  +- SoftLimitMinExceeded +- BIT +- 1 +- 26 ++ nDataOut5 ++ UINTARR2 ++ 32 ++ 160 +  +  +- SoftLimitMaxExceeded +- BIT +- 1 +- 27 ++ nDataOut6 ++ UINTARR2 ++ 32 ++ 192 +  +  +- DriveDeviceError +- BIT +- 1 +- 28 ++ nCtrl5 ++ USINT ++ 8 ++ 224 +  +  +- MotionCommandsLocked +- BIT +- 1 +- 29 ++ nCtrl6 ++ USINT ++ 8 ++ 232 +  +  +- IoDataInvalid +- BIT +- 1 +- 30 ++ nCtrl7 ++ USINT ++ 8 ++ 240 +  +  +- Error +- BIT +- 1 +- 31 ++ nCtrl8 ++ USINT ++ 8 ++ 248 +  +-  +- %08x +-  +-  +- 0x%08x +-  +-  +- 16#%08X +-  ++  ++  ++ NCENCODERSTRUCT_OUT ++  ++ 96 ++  ++  ++  +  +  +- NCTOPLC_AXIS_REF_OPMODE +- 32 ++ NCDRIVESTRUCT_IN2 ++ 320 +  +- OpModePosAreaMonitoring +- BIT +- 1 ++ nDataIn1 ++ UINTARR2 ++ 32 + 0 +  +  +- OpModeTargetPosMonitoring +- BIT +- 1 +- 1 ++ nDataIn2 ++ UINTARR2 ++ 32 ++ 32 +  +  +- OpModeLoop +- BIT +- 1 +- 2 ++ nState1 ++ USINT ++ 8 ++ 64 +  +  +- OpModeMotionMonitoring +- BIT +- 1 +- 3 ++ nState2 ++ USINT ++ 8 ++ 72 +  +  +- OpModePEHTimeMonitoring +- BIT +- 1 +- 4 ++ nState3 ++ USINT ++ 8 ++ 80 +  +  +- OpModeBacklashCompensation +- BIT +- 1 +- 5 ++ nState4 ++ USINT ++  ++ 8 ++ 88 +  +  +- OpModeDelayedErrorReaction +- BIT +- 1 +- 6 ++ nDataIn3 ++ UINTARR2 ++ 32 ++ 96 +  +  +- OpModeModulo +- BIT +- 1 +- 7 ++ nDataIn4 ++ UINTARR2 ++ 32 ++ 128 +  +  +- OpModeSimulationAxis +- BIT +- 1 +- 8 ++ nDataIn5 ++ UINTARR2 ++ 32 ++ 160 +  +  +- OpModePosLagMonitoring +- BIT +- 1 +- 16 ++ nDataIn6 ++ UINTARR2 ++ 32 ++ 192 +  +  +- OpModeVeloLagMonitoring +- BIT +- 1 +- 17 ++ nState5 ++ USINT ++ 8 ++ 224 +  +  +- OpModeSoftLimitMinMonitoring +- BIT +- 1 +- 18 ++ nState6 ++ USINT ++ 8 ++ 232 +  +  +- OpModeSoftLimitMaxMonitoring +- BIT +- 1 +- 19 ++ nState7 ++ USINT ++ 8 ++ 240 +  +  +- OpModePosCorrection +- BIT +- 1 +- 20 ++ nState8 ++ USINT ++ 8 ++ 248 +  +  +- OpModeAllowSlaveCommands +- BIT +- 1 +- 21 ++ nDcOutputTime ++ DINT ++ 32 ++ 256 +  ++  ++  ++ NCDRIVESTRUCT_IN ++  ++ 96 ++  ++  ++  ++  ++  ++ NCDRIVESTRUCT_OUT2 ++ 320 +  +- OpModeAllowExtSetAxisCommands +- BIT +- 1 +- 22 ++ nDataOut1 ++ UINTARR2 ++ 32 ++ 0 +  +  +- ApplicationRequest +- BIT +- 1 +- 23 ++ nDataOut2 ++ UINTARR2 ++ 32 ++ 32 +  +-  +-  +- NCTOPLC_AXIS_REF_STATE2_FLAGS +- 32 +  +- AvoidingCollision +- BIT +- 1 +- 0 ++ nCtrl1 ++ USINT ++ 8 ++ 64 +  +-  +- %08x +-  +-  +- 0x%08x +-  +-  +- 16#%08X +-  +-  +-  +- NCTOPLC_AXIS_REF_STATE2 +- 32 +  +- Value +- DWORD ++ nCtrl2 ++ USINT ++ 8 ++ 72 ++  ++  ++ nCtrl3 ++ USINT ++ 8 ++ 80 ++  ++  ++ nCtrl4 ++ USINT ++ 8 ++ 88 ++  ++  ++ nDataOut3 ++ UINTARR2 + 32 +- 0 ++ 96 +  +  +- Flags +- NCTOPLC_AXIS_REF_STATE2_FLAGS ++ nDataOut4 ++ UINTARR2 + 32 +- 0 ++ 128 +  +-  +- %08x +-  +-  +- 0x%08x +-  +-  +- 16#%08X +-  ++  ++ nDataOut5 ++ UINTARR2 ++ 32 ++ 160 ++  ++  ++ nDataOut6 ++ UINTARR2 ++ 32 ++ 192 ++  ++  ++ nCtrl5 ++ USINT ++ 8 ++ 224 ++  ++  ++ nCtrl6 ++ USINT ++ 8 ++ 232 ++  ++  ++ nCtrl7 ++ USINT ++ 8 ++ 240 ++  ++  ++ nCtrl8 ++ USINT ++ 8 ++ 248 ++  ++  ++  ++ NCDRIVESTRUCT_OUT ++  ++ 96 ++  ++  ++  +  +  +- NCTOPLC_AXIS_REF_CAMCOUPLINGSTATE +- 8 ++ PLCTONC_AXIS_REF_CTRL ++ 32 +  +- CamActivationPending ++ Enable + BIT + 1 + 0 +  +  +- CamDeactivationPending ++ FeedEnablePlus + BIT + 1 + 1 +  +  +- CamActive ++ FeedEnableMinus + BIT + 1 + 2 +  +  +- CamDataQueued ++ HomingSensor + BIT + 1 +- 6 ++ 5 +  +  +- CamScalingPending ++ AcceptBlockedDrive + BIT + 1 +- 7 ++ 8 +  ++  ++ PlcDebugFlag ++ BIT ++ 1 ++ 30 ++  ++  ++ NcDebugFlag ++ BIT ++ 1 ++ 31 ++  ++  ++ %08x ++  ++  ++ 0x%08x ++  ++  ++ 16#%08X ++  +  +  +- UINTARR8 +- 128 +- UINT +-  +- 0 +- 8 +-  +-  +-  +- NCTOPLC_AXIS_REF +- 2048 ++ PLCTONC_AXIS_REF ++ 1024 +  +- StateDWord +- NCTOPLC_AXIS_REF_STATE ++ ControlDWord ++ PLCTONC_AXIS_REF_CTRL + 32 + 0 +  +  +- ErrorCode ++ Override + UDINT + 32 + 32 +  +  +- AxisState ++ AxisModeRequest + UDINT +-  + 32 + 64 +  +  +- AxisModeConfirmation ++ AxisModeDWord + UDINT + 32 + 96 +  +  +- HomingState +- UDINT +-  +- 32 ++ AxisModeLReal ++ LREAL ++ 64 + 128 +  +  +- CoupleState +- UDINT +-  +- 32 +- 160 +-  +-  +- SvbEntries +- UDINT +- 32 ++ PositionCorrection ++ LREAL ++ 64 + 192 +  +  +- SafEntries +- UDINT +- 32 +- 224 +-  +-  +- AxisId +- UDINT +- 32 ++ ExtSetPos ++ LREAL ++ 64 + 256 +  +  +- OpModeDWord +- NCTOPLC_AXIS_REF_OPMODE +- 32 +- 288 +-  +-  +- ActPos ++ ExtSetVelo + LREAL + 64 + 320 +  +  +- ModuloActPos ++ ExtSetAcc + LREAL + 64 + 384 +  +  +- ActiveControlLoopIndex +- UINT +- 16 +- 448 +-  +-  +- ControlLoopIndex +- UINT +- 16 +- 464 +-  +-  +- ModuloActTurns ++ ExtSetDirection + DINT + 32 +- 480 ++ 448 +  +  +- ActVelo ++ ExtControllerOutput + LREAL + 64 + 512 +  +  +- PosDiff ++ GearRatio1 + LREAL + 64 + 576 +  +  +- SetPos ++ GearRatio2 + LREAL + 64 + 640 +  +  +- SetVelo ++ GearRatio3 + LREAL + 64 + 704 +  +  +- SetAcc ++ GearRatio4 + LREAL + 64 + 768 +  +  +- TargetPos +- LREAL +- 64 ++ MapState ++ BOOL ++ 8 + 832 +  +  +- ModuloSetPos +- LREAL +- 64 +- 896 ++ PlcCycleControl ++ BYTE ++ 8 ++ 840 +  +  +- ModuloSetTurns +- DINT +- 32 +- 960 ++ PlcCycleCount ++ BYTE ++ 8 ++ 848 +  ++  ++  ++ NcStructType ++ 1 ++  ++  ++  ++  ++ NCAXLESTRUCT_FROMPLC3 ++  ++  ++  ++  ++ NCTOPLC_AXIS_REF_STATE ++ 32 +  +- CmdNo +- UINT +- 16 +- 992 ++ Operational ++ BIT ++ 1 ++ 0 +  +  +- CmdState +- UINT +- 16 +- 1008 ++ Homed ++ BIT ++ 1 ++ 1 +  +  +- SetJerk +- LREAL +- 64 +- 1024 ++ NotMoving ++ BIT ++ 1 ++ 2 +  +  +- SetTorque +- LREAL +- 64 +- 1088 ++ InPositionArea ++ BIT ++ 1 ++ 3 +  +  +- ActTorque +- LREAL +- 64 +- 1152 ++ InTargetPosition ++ BIT ++ 1 ++ 4 +  +  +- StateDWord2 +- NCTOPLC_AXIS_REF_STATE2 +- 32 +- 1216 ++ Protected ++ BIT ++ 1 ++ 5 +  +  +- StateDWord3 +- DWORD +- 32 +- 1248 ++ ErrorPropagationDelayed ++ BIT ++ 1 ++ 6 +  +  +- TouchProbeState +- DWORD +- 32 +- 1280 ++ HasBeenStopped ++ BIT ++ 1 ++ 7 +  +  +- TouchProbeCounter +- DWORD +- 32 +- 1312 ++ HasJob ++ BIT ++ 1 ++ 8 +  +  +- CamCouplingState +- NCTOPLC_AXIS_REF_CAMCOUPLINGSTATE +-  +- 0 +- 8 +-  +- 64 +- 1344 ++ PositiveDirection ++ BIT ++ 1 ++ 9 +  +  +- CamCouplingTableID +- UINTARR8 +- 128 +- 1408 ++ NegativeDirection ++ BIT ++ 1 ++ 10 +  +  +- ActTorqueDerivative +- LREAL +- 64 +- 1536 ++ HomingBusy ++ BIT ++ 1 ++ 11 +  +  +- SetTorqueDerivative +- LREAL +- 64 +- 1600 ++ ConstantVelocity ++ BIT ++ 1 ++ 12 +  +  +- ActPosWithoutPosCorrection +- LREAL +- 64 +- 1792 ++ Compensating ++ BIT ++ 1 ++ 13 +  +  +- ActAcc +- LREAL +- 64 +- 1856 ++ ExtSetPointGenEnabled ++ BIT ++ 1 ++ 14 +  +  +- DcTimeStamp +- UDINT +- 32 +- 1920 ++ PhasingActive ++ BIT ++ 1 ++ 15 +  +-  +-  +- NcStructType +- 2 +-  +-  +-  +-  +- NCAXLESTRUCT_TOPLC +-  +-  +- NCAXLESTRUCT_TOPLC2 +-  +-  +- NCAXLESTRUCT_TOPLC3 +-  +-  +- NCAXLESTRUCT_TOPLC4 +-  +-  +-  +-  +-  +-  +-  +-  +-  +-  +-  +-  +-  +- PLCTONC_AXIS_REF_CTRL +- 32 +  +- Enable ++ ExternalLatchValid + BIT + 1 +- 0 ++ 16 +  +  +- FeedEnablePlus ++ NewTargetPos + BIT + 1 +- 1 ++ 17 +  +  +- FeedEnableMinus ++ ContinuousMotion + BIT + 1 +- 2 ++ 19 +  +  +- HomingSensor ++ ControlLoopClosed + BIT + 1 +- 5 ++ 20 +  +  +- AcceptBlockedDrive ++ CamTableQueued + BIT + 1 +- 8 ++ 21 +  +  +- PlcDebugFlag ++ CamDataQueued + BIT + 1 +- 30 ++ 22 +  +  +- NcDebugFlag ++ CamScalingPending + BIT + 1 +- 31 ++ 23 +  +-  +- %08x +-  ++  ++ CmdBuffered ++ BIT ++ 1 ++ 24 ++  ++  ++ PTPmode ++ BIT ++ 1 ++ 25 ++  ++  ++ SoftLimitMinExceeded ++ BIT ++ 1 ++ 26 ++  ++  ++ SoftLimitMaxExceeded ++ BIT ++ 1 ++ 27 ++  ++  ++ DriveDeviceError ++ BIT ++ 1 ++ 28 ++  ++  ++ MotionCommandsLocked ++ BIT ++ 1 ++ 29 ++  ++  ++ IoDataInvalid ++ BIT ++ 1 ++ 30 ++  ++  ++ Error ++ BIT ++ 1 ++ 31 ++  ++  ++ %08x ++  +  + 0x%08x +  +@@ -750,130 +817,501 @@ External Setpoint Generation: +  +  +  +- PLCTONC_AXIS_REF +- 1024 ++ NCTOPLC_AXIS_REF_OPMODE ++ 32 +  +- ControlDWord +- PLCTONC_AXIS_REF_CTRL ++ OpModePosAreaMonitoring ++ BIT ++ 1 ++ 0 ++  ++  ++ OpModeTargetPosMonitoring ++ BIT ++ 1 ++ 1 ++  ++  ++ OpModeLoop ++ BIT ++ 1 ++ 2 ++  ++  ++ OpModeMotionMonitoring ++ BIT ++ 1 ++ 3 ++  ++  ++ OpModePEHTimeMonitoring ++ BIT ++ 1 ++ 4 ++  ++  ++ OpModeBacklashCompensation ++ BIT ++ 1 ++ 5 ++  ++  ++ OpModeDelayedErrorReaction ++ BIT ++ 1 ++ 6 ++  ++  ++ OpModeModulo ++ BIT ++ 1 ++ 7 ++  ++  ++ OpModeSimulationAxis ++ BIT ++ 1 ++ 8 ++  ++  ++ OpModePosLagMonitoring ++ BIT ++ 1 ++ 16 ++  ++  ++ OpModeVeloLagMonitoring ++ BIT ++ 1 ++ 17 ++  ++  ++ OpModeSoftLimitMinMonitoring ++ BIT ++ 1 ++ 18 ++  ++  ++ OpModeSoftLimitMaxMonitoring ++ BIT ++ 1 ++ 19 ++  ++  ++ OpModePosCorrection ++ BIT ++ 1 ++ 20 ++  ++  ++ OpModeAllowSlaveCommands ++ BIT ++ 1 ++ 21 ++  ++  ++ OpModeAllowExtSetAxisCommands ++ BIT ++ 1 ++ 22 ++  ++  ++ ApplicationRequest ++ BIT ++ 1 ++ 23 ++  ++  ++  ++ NCTOPLC_AXIS_REF_STATE2_FLAGS ++ 32 ++  ++ AvoidingCollision ++ BIT ++ 1 ++ 0 ++  ++  ++ %08x ++  ++  ++ 0x%08x ++  ++  ++ 16#%08X ++  ++  ++  ++ NCTOPLC_AXIS_REF_STATE2 ++ 32 ++  ++ Value ++ DWORD + 32 + 0 +  +  +- Override ++ Flags ++ NCTOPLC_AXIS_REF_STATE2_FLAGS ++ 32 ++ 0 ++  ++  ++ %08x ++  ++  ++ 0x%08x ++  ++  ++ 16#%08X ++  ++  ++  ++ NCTOPLC_AXIS_REF_CAMCOUPLINGSTATE ++ 8 ++  ++ CamActivationPending ++ BIT ++ 1 ++ 0 ++  ++  ++ CamDeactivationPending ++ BIT ++ 1 ++ 1 ++  ++  ++ CamActive ++ BIT ++ 1 ++ 2 ++  ++  ++ CamDataQueued ++ BIT ++ 1 ++ 6 ++  ++  ++ CamScalingPending ++ BIT ++ 1 ++ 7 ++  ++  ++  ++ UINTARR8 ++ 128 ++ UINT ++  ++ 0 ++ 8 ++  ++  ++  ++ NCTOPLC_AXIS_REF ++ 2048 ++  ++ StateDWord ++ NCTOPLC_AXIS_REF_STATE ++ 32 ++ 0 ++  ++  ++ ErrorCode + UDINT + 32 + 32 +  +  +- AxisModeRequest ++ AxisState + UDINT ++  + 32 + 64 +  +  +- AxisModeDWord +- UDINT +- 32 +- 96 ++ AxisModeConfirmation ++ UDINT ++ 32 ++ 96 ++  ++  ++ HomingState ++ UDINT ++  ++ 32 ++ 128 ++  ++  ++ CoupleState ++ UDINT ++  ++ 32 ++ 160 ++  ++  ++ SvbEntries ++ UDINT ++ 32 ++ 192 ++  ++  ++ SafEntries ++ UDINT ++ 32 ++ 224 ++  ++  ++ AxisId ++ UDINT ++ 32 ++ 256 ++  ++  ++ OpModeDWord ++ NCTOPLC_AXIS_REF_OPMODE ++ 32 ++ 288 ++  ++  ++ ActPos ++ LREAL ++ 64 ++ 320 ++  ++  ++ ModuloActPos ++ LREAL ++ 64 ++ 384 ++  ++  ++ ActiveControlLoopIndex ++ UINT ++ 16 ++ 448 ++  ++  ++ ControlLoopIndex ++ UINT ++ 16 ++ 464 ++  ++  ++ ModuloActTurns ++ DINT ++ 32 ++ 480 ++  ++  ++ ActVelo ++ LREAL ++ 64 ++ 512 ++  ++  ++ PosDiff ++ LREAL ++ 64 ++ 576 +  +  +- AxisModeLReal ++ SetPos + LREAL + 64 +- 128 ++ 640 +  +  +- PositionCorrection ++ SetVelo + LREAL + 64 +- 192 ++ 704 +  +  +- ExtSetPos ++ SetAcc + LREAL + 64 +- 256 ++ 768 +  +  +- ExtSetVelo ++ TargetPos + LREAL + 64 +- 320 ++ 832 +  +  +- ExtSetAcc ++ ModuloSetPos + LREAL + 64 +- 384 ++ 896 +  +  +- ExtSetDirection ++ ModuloSetTurns + DINT + 32 +- 448 ++ 960 +  +  +- ExtControllerOutput ++ CmdNo ++ UINT ++ 16 ++ 992 ++  ++  ++ CmdState ++ UINT ++ 16 ++ 1008 ++  ++  ++ SetJerk + LREAL + 64 +- 512 ++ 1024 +  +  +- GearRatio1 ++ SetTorque + LREAL + 64 +- 576 ++ 1088 +  +  +- GearRatio2 ++ ActTorque + LREAL + 64 +- 640 ++ 1152 +  +  +- GearRatio3 ++ StateDWord2 ++ NCTOPLC_AXIS_REF_STATE2 ++ 32 ++ 1216 ++  ++  ++ StateDWord3 ++ DWORD ++ 32 ++ 1248 ++  ++  ++ TouchProbeState ++ DWORD ++ 32 ++ 1280 ++  ++  ++ TouchProbeCounter ++ DWORD ++ 32 ++ 1312 ++  ++  ++ CamCouplingState ++ NCTOPLC_AXIS_REF_CAMCOUPLINGSTATE ++  ++ 0 ++ 8 ++  ++ 64 ++ 1344 ++  ++  ++ CamCouplingTableID ++ UINTARR8 ++ 128 ++ 1408 ++  ++  ++ ActTorqueDerivative + LREAL + 64 +- 704 ++ 1536 +  +  +- GearRatio4 ++ SetTorqueDerivative + LREAL + 64 +- 768 ++ 1600 +  +  +- MapState +- BOOL +- 8 +- 832 ++ ActPosWithoutPosCorrection ++ LREAL ++ 64 ++ 1792 +  +  +- PlcCycleControl +- BYTE +- 8 +- 840 ++ ActAcc ++ LREAL ++ 64 ++ 1856 +  +  +- PlcCycleCount +- BYTE +- 8 +- 848 ++ DcTimeStamp ++ UDINT ++ 32 ++ 1920 +  +  +  + NcStructType +- 1 ++ 2 +  +  +  +  +- NCAXLESTRUCT_FROMPLC3 ++ NCAXLESTRUCT_TOPLC ++  ++  ++ NCAXLESTRUCT_TOPLC2 ++  ++  ++ NCAXLESTRUCT_TOPLC3 ++  ++  ++ NCAXLESTRUCT_TOPLC4 ++  ++  ++  ++  ++  ++  ++  ++  ++  +  +  +  +  +-  ++  +  +  +  +@@ -889,8 +1327,456 @@ External Setpoint Generation: +  +  +  ++  ++  ++  ++ NC-Task 1 SAF ++  ++ Inputs ++  ++  ++ Outputs ++  ++  ++ Image ++  ++  ++  ++ NC-Task 1 SVB ++  ++  ++ Axis 1 ++  ++  ++  ++  ++  ++  ++  ++  ++ Inputs ++  ++ In ++ NCENCODERSTRUCT_IN2B ++ 1024 ++  ++ nDataIn1 ++  ++  ++ nDataIn2 ++  ++  ++ nState4 ++  ++  ++  ++ nDataIn3 ++  ++  ++ nDataIn4 ++  ++  ++ nDataIn5 ++  ++  ++ nDataIn6 ++  ++  ++ nDataIn7 ++  ++  ++  ++  ++ Outputs ++  ++ Out ++ NCENCODERSTRUCT_OUT2 ++ 2048 ++  ++ nDataOut1 ++  ++  ++ nDataOut2 ++  ++  ++ nDataOut3 ++  ++  ++ nDataOut4 ++  ++  ++ nDataOut5 ++  ++  ++ nDataOut6 ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++ Inputs ++  ++ In ++ NCDRIVESTRUCT_IN2 ++ 1344 ++  ++ nDataIn1 ++  ++  ++ nDataIn2 ++  ++  ++ nState4 ++  ++  ++  ++ nDataIn3 ++  ++  ++ nDataIn4 ++  ++  ++ nDataIn5 ++  ++  ++ nDataIn6 ++  ++  ++  ++  ++ Outputs ++  ++ Out ++ NCDRIVESTRUCT_OUT2 ++ 2368 ++  ++ nDataOut1 ++  ++  ++ nDataOut2 ++  ++  ++ nCtrl2 ++  ++  ++  ++ nCtrl3 ++  ++  ++  ++ nDataOut3 ++  ++  ++ nDataOut4 ++  ++  ++ nDataOut5 ++  ++  ++ nDataOut6 ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++ Inputs ++  ++ FromPlc ++ PLCTONC_AXIS_REF ++  ++  ++  ++ Outputs ++  ++ ToPlc ++ NCTOPLC_AXIS_REF ++  ++ AxisState ++  ++  ++  ++ HomingState ++  ++  ++  ++ CoupleState ++  ++  ++  ++  ++  ++  ++ Axis 2 ++  ++  ++  ++  ++  ++ Inputs ++  ++ In ++ NCENCODERSTRUCT_IN2B ++ 2688 ++  ++ nDataIn1 ++  ++  ++ nDataIn2 ++  ++  ++ nState4 ++  ++  ++  ++ nDataIn3 ++  ++  ++ nDataIn4 ++  ++  ++ nDataIn5 ++  ++  ++ nDataIn6 ++  ++  ++ nDataIn7 ++  ++  ++  ++  ++ Outputs ++  ++ Out ++ NCENCODERSTRUCT_OUT2 ++ 4736 ++  ++ nDataOut1 ++  ++  ++ nDataOut2 ++  ++  ++ nDataOut3 ++  ++  ++ nDataOut4 ++  ++  ++ nDataOut5 ++  ++  ++ nDataOut6 ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++ Inputs ++  ++ In ++ NCDRIVESTRUCT_IN2 ++ 3008 ++  ++ nDataIn1 ++  ++  ++ nDataIn2 ++  ++  ++ nState4 ++  ++  ++  ++ nDataIn3 ++  ++  ++ nDataIn4 ++  ++  ++ nDataIn5 ++  ++  ++ nDataIn6 ++  ++  ++  ++  ++ Outputs ++  ++ Out ++ NCDRIVESTRUCT_OUT2 ++ 5056 ++  ++ nDataOut1 ++  ++  ++ nDataOut2 ++  ++  ++ nCtrl2 ++  ++  ++  ++ nCtrl3 ++  ++  ++  ++ nDataOut3 ++  ++  ++ nDataOut4 ++  ++  ++ nDataOut5 ++  ++  ++ nDataOut6 ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++ Inputs ++  ++ FromPlc ++ PLCTONC_AXIS_REF ++ 1664 ++  ++  ++  ++ Outputs ++  ++ ToPlc ++ NCTOPLC_AXIS_REF ++ 2688 ++  ++ AxisState ++  ++  ++  ++ HomingState ++  ++  ++  ++ CoupleState ++  ++  ++  ++  ++  ++  ++  +  +-  ++  +  + tc_epicscommodule Instance + {08500001-0000-0000-F000-000000000064} +@@ -1054,5 +1940,19 @@ External Setpoint Generation: +  +  +  ++  +  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  +  +diff --git a/solution/tc_project_app/GlobalTextList.TcGTLO b/solution/tc_project_app/GlobalTextList.TcGTLO +index 1818614..3982a2b 100644 +--- a/solution/tc_project_app/GlobalTextList.TcGTLO ++++ b/solution/tc_project_app/GlobalTextList.TcGTLO +@@ -10,16 +10,36 @@ + "%2.2f" +  +  ++  ++ "165" ++ "%2.3f" ++  ++  ++  ++ "543" ++ "%2.4f" ++  ++  +  + "878" + "%d" +  +  ++  ++ "294" ++ "%f" ++  ++  +  + "706" + "%i" +  +  ++  ++ "821" ++ "%s" ++  ++  +  + "940" + "%x" +@@ -105,6 +125,11 @@ + "bResetDone" +  +  ++  ++ "693" ++ "bSet" ++  ++  +  + "944" + "bWarning" +@@ -195,6 +220,16 @@ + "gearOut" +  +  ++  ++ "566" ++ "homeSensorNeg" ++  ++  ++  ++ "677" ++ "homeSensorPos" ++  ++  +  + "711" + "Inactive:" +@@ -240,6 +275,11 @@ + "Overflows:" +  +  ++  ++ "993" ++ "Read" ++  ++  +  + "942" + "reset" +@@ -260,6 +300,11 @@ + "toggle" +  +  ++  ++ "445" ++ "Write" ++  ++  +  +  + {062c6d5a-aca0-4f82-8481-8e26e8c8681e} +diff --git a/solution/tc_project_app/POUs/MAIN.TcPOU b/solution/tc_project_app/POUs/MAIN.TcPOU +index f81cabd..81ced47 100644 +--- a/solution/tc_project_app/POUs/MAIN.TcPOU ++++ b/solution/tc_project_app/POUs/MAIN.TcPOU +@@ -55,7 +55,7 @@ VAR PERSISTENT + bRestoreOnStartup : BOOL; + END_VAR]]> +  +- eSUPS_PowerFailure THEN + (* next cycles of powerfailure *) + (* skip regular code execution for the remaining cycles of the powerfailure/writing of persistent data/quick shutdown ... *) + RETURN; +-END_IF ++END_IF*) +  + RESTORE_POSITIONS(); + PROG(); +diff --git a/solution/tc_project_app/tc_mca_std_lib b/solution/tc_project_app/tc_mca_std_lib +index 852ea37..ce4d55e 160000 +--- a/solution/tc_project_app/tc_mca_std_lib ++++ b/solution/tc_project_app/tc_mca_std_lib +@@ -1 +1 @@ +-Subproject commit 852ea37aa8d1aadfe0f2b84fd462c1f30aadd492 ++Subproject commit ce4d55ec59eeb6d4114ec605b1d57f6fecaa59a3 +diff --git a/solution/tc_project_app/tc_project_app.plcproj b/solution/tc_project_app/tc_project_app.plcproj +index b5d34ae..00b04b1 100644 +--- a/solution/tc_project_app/tc_project_app.plcproj ++++ b/solution/tc_project_app/tc_project_app.plcproj +@@ -29,6 +29,9 @@ +  + Code +  ++  ++ Code ++  +  + Code +  +@@ -352,8 +355,8 @@ +  +  +  +-  +-  ++  ++  + "<ProjectRoot>" +  + {192FAD59-8248-4824-A8DE-9177C94C195A} +@@ -404,15 +407,15 @@ +  +  +  +-  +-  +- System.Boolean +- System.Collections.Hashtable +- System.Int32 +- {54dd0eac-a6d8-46f2-8c27-2f43c7e49861} +- System.String +-  +- ++  ++  ++ System.Boolean ++ System.Collections.Hashtable ++ System.Int32 ++ {54dd0eac-a6d8-46f2-8c27-2f43c7e49861} ++ System.String ++  ++  +  +  +  +\ No newline at end of file