I'm doing some tests with a CtrlX Core Virtual RM21.11 and a Cartesian robot with KinInterface.
The problem I have is that to read the position of the robot I use the command arKinStatus_gb[Robot1.GroupNo].Data.PositionBaseCoord and I write it in a variable of type ARRAY [0..(MB_KINIF_NOF_POINT - 1)] OF LREAL;
When initializing the Core, downloading the program completely or doing a reset warm, the PLC has a Check Pointer exception (picture 1).
If I comment out the line and restart the PLC, it no longer has any CheckPointer problems (picture 2). After I go back to not commenting the line and do a partial download (only changes) and it works flawlessly, the CheckPointer problem is gone (picture 3).
If you do a Reset Warm again (initialise the application) the CheckPointer exception comes up again.
When I look at the size of the variable array it goes from 0 to 15 just like the arKinStatus_gb[Robot1.GroupNo].Data.PositionBaseCoord command.
Any idea why this happens?
Thanks in advance.
Solved! Go to Solution.
the right side of your assignment is defined as a REFERENCE TO (this is internal a pointer):
PROPERTY ActPosition : REFERENCE TO ARRAY [0..(MB_KINIF_NOF_POINT-1)] OF LREAL
This REFERENCE TO is set during initialization of the kinematic interface and after a finished initialization you will no longer encounter the problem.
This does not happen, when you check the InitDone of the Kinematic interface like it is done in the demo program.
IF NOT TE_KinInterfaceMainProg.InitDone OR TE_KinInterfaceMainProg.Error THEN
RETURN; // do not continue, when Motion is not in RUN or initialization failed.
Hope this helps,
P.S.: sorry for the delayed answer. We had an internal communication failure between STS and DEV 🤔😉