Hi,
I'm trying to write a control value to the controller and read it back again. But the values are not the same.
I added this code in LAB_13B (mainloop):
{
ST_Obj *stObj = (ST_Obj *)stHandle;
STPOSMOVE_setVelocityLimit(stObj->posMoveHandle, _IQmpy(_IQ(2), _IQ(ST_SPEED_PU_PER_KRPM)));
STPOSMOVE_setAccelerationLimit(stObj->posMoveHandle, _IQmpy(_IQ(3), _IQ(ST_SPEED_PU_PER_KRPM)));
STPOSMOVE_setDecelerationLimit(stObj->posMoveHandle, _IQmpy(_IQ(4), _IQ(ST_SPEED_PU_PER_KRPM)));
STPOSMOVE_setJerkLimit(stObj->posMoveHandle, _IQ20mpy(_IQ20(5), _IQ20(ST_SPEED_PU_PER_KRPM)));
gMotorVars.MaxVel_krpm = STPOSMOVE_getVelocityMaximum(stObj->posMoveHandle) / _IQ(ST_SPEED_PU_PER_KRPM);
gMotorVars.MaxAccel_krpmps = STPOSMOVE_getAccelerationMaximum(stObj->posMoveHandle) / _IQ(ST_SPEED_PU_PER_KRPM);
gMotorVars.MaxDecel_krpmps = STPOSMOVE_getDecelerationMaximum(stObj->posMoveHandle) / _IQ(ST_SPEED_PU_PER_KRPM);
gMotorVars.MaxJrk_krpmps2 = STPOSMOVE_getJerkMaximum(stObj->posMoveHandle) / _IQ(ST_SPEED_PU_PER_KRPM);
}
// ST_SPEED_PU_PER_KRPM = 0.1333
This is the result in the expression window:
gMotorVars.MaxVel_krpm = 3.576278687e-07
gMotorVars.MaxAccel_krpmps= 4.470348358e-06
gMotorVars.MaxDecel_krpmps=4.470348358e-06
gMotorVars.MaxJrk_krpmps2= 2.765655518e-05
If I change the code to this: (only reading the value)
gMotorVars.MaxVel_krpm = STPOSMOVE_getVelocityMaximum(stObj->posMoveHandle);
gMotorVars.MaxAccel_krpmps = STPOSMOVE_getAccelerationMaximum(stObj->posMoveHandle);
gMotorVars.MaxDecel_krpmps = STPOSMOVE_getDecelerationMaximum(stObj->posMoveHandle);
gMotorVars.MaxJrk_krpmps2 = STPOSMOVE_getJerkMaximum(stObj->posMoveHandle);
gMotorVars.MaxVel_krpm = 0.8000000715
gMotorVars.MaxAccel_krpmps= 10
gMotorVars.MaxDecel_krpmps= 10
gMotorVars.MaxJrk_krpmps2= 62.5
I have no Idea what I problem is.