chaylak - 3 days ago

hi everyone,
i am trying use MC_ReadActualPosition module in ST but i cant do it,( if i use CFC yes i read it)
my axis is SoftMotion General Axis Pool->VirtAxisZ [Device: SoftMotion General Axis Pool]
codesys V3.5 SP20
program:
PROGRAM PLC_PRG
VAR

VirtAxisZ : AXIS_REF_VIRTUAL_SM3;


fbPowerZ  : MC_Power;

fbReadPos : MC_ReadActualPosition;

bEnable   : BOOL := TRUE;       
lrActPos  : LREAL;

bValid    : BOOL;                 
bError    : BOOL;                 
fbResetZ  : MC_Reset;
xZ_Valid : BOOL;
xZ_Busy  : BOOL;

xGlobalPower      : BOOL; 
xGlobalReset      : BOOL; 
xBtnTeachingMode  : BOOL;  
lrGrvZ_OffsetTorque : LREAL := 0.5;  
lrPulseMmZ : LREAL;

rPosFromBlock : LREAL;



xZ_IsPowered      : BOOL;
xZ_PowerError : BOOL;
iZ_PowerErrorID : LREAL;
rZ_ActualPos      : LREAL;
lrTargetTorque    : LREAL;
sZ_ErrorString    : STRING;



//********** jog
fbJogZ          : MC_Jog;
xJogForward     : BOOL;  
xJogBackward    : BOOL; 
rZ_ActVelocity  : REAL;

END_VAR

fbResetZ(
Axis:= VirtAxisZ,
Execute:= xGlobalReset);

fbPowerZ(
Axis:= VirtAxisZ,
Enable:= xGlobalPower,
bRegulatorOn:= xGlobalPower,

bDriveStart:=xGlobalPower ,
Status=> xZ_IsPowered,
Busy=> xZ_Busy,
Error=> xZ_PowerError,
ErrorID=> iZ_PowerErrorID
);

IF xGlobalPower THEN

fbJogZ(
    Axis:= VirtAxisZ,
    JogForward:= xJogForward,
    JogBackward:= xJogBackward,
    Velocity:= 100,
    Acceleration:= 100,
    Deceleration:= 100,
    Jerk:= 1000);

END_IF
fbReadPos(
Axis := VirtAxisZ,
Enable := TRUE,
Valid => bValid,
Position => lrActPos,
Error => bError
);

IF VirtAxisZ.bError THEN
sZ_ErrorString := 'Z Ex err';
ELSIF NOT xZ_IsPowered THEN
sZ_ErrorString := 'Z Ex (Power Off)';
ELSE
sZ_ErrorString := 'Z Ex Ready';
END_IF

IF xBtnTeachingMode THEN
lrTargetTorque := lrGrvZ_OffsetTorque;
ELSE
lrTargetTorque := 0;
END_IF

VAR_INPUT
CFC_Motion: INT;
END_VAR