轴运动所需要的功能块如下:
(文本多来源于倍福技官方文档)。
1.MC_Power(轴使能)
输入变量:
MCPower(Enable:=xEnable,
Enable_Positive:= FBI_MCPower.Enable,
Enable_Negative:= FBI_MCPower.Enable,
Override:=rOverride,
Axis:= Axis1,);
2.MC_Reset(轴复位)

MCReset(Execute:=xReset,
Axis:=Axis1,
Done=>,
Error=>,
ErrorID=>);
3.MC_Stop(轴停止)

在 Execute 上升沿,无论 NC 轴在执行何种动作,立即以减速度为 Deceleration 停止。
FBI_MCStop(Execute:xStop,Axis := Axis1 );
4.MC_Halt(轴暂停)

Halt(Axis:=axisIn,Execute:=xPause);
5.MC_Jog(JOG运动)
输入变量:
MODE 的类型为枚举“E_JogMode”,可选的类型有:
MCJog(JogForward:=xExcuteJogFor,
JogBackwards:=xExcuteJogBack,
Velocity :=rJogSpeedTemp,
mode:=MC_JOGMODE_CONTINOUS ,
Acceleration :=stAxisDataHMI.rAccSet ,
Deceleration :=stAxisDataHMI.rDecSet ,
Jerk :=10000 ,
Axis := Axis1,);
6.MC_MoveAbsolute(绝对位置定位)

输入变量:

输出变量:
说明:
MCMoveAbsolut(Execute := trigAbs.Q,
Position := rAbsTargetPos,
Velocity := rAbsTargetSpeed,
Acceleration :=stAxisDataHMI.rAccSet,
Deceleration :=stAxisDataHMI.rDecSet,
Jerk :=10000,
Axis := Axis1,
Done =>,
CommandAborted =>,
Error =>,
ErrorID =>);
7.MC_MoveRelative(相对位置定位)

输入变量:
输出变量:
MCMoveRelative( Execute :=trigRel.Q ,
Distance := rRelPos,
Velocity := rRelSpeed,
Acceleration :=stAxisDataHMI.rAccSet ,
Deceleration :=stAxisDataHMI.rDecSet ,
Jerk :=10000 ,
Axis := Axis1,
Done =>,
CommandAborted => ,
Error => ,
ErrorId => );
8.MC_MoveVelocity(匀速运动)
输入变量:
输出变量:
说明:
MCMoveVelocity(Axis:=Axis1 ,
Execute:=xStartVelSign,
Velocity:=rVelSpeed ,
Acceleration:=stAxisDataHMI.rAccSet,
Deceleration:=stAxisDataHMI.rDecSet,
Jerk:=10000,
Direction:=MC_Positive_Direction ,
BufferMode:= ,
Options:= ,
InVelocity=>xInVel ,
Busy=> ,
Active=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
9.MC_Home(寻参/回原点)
输入变量:
HomingMode 的类型是枚举“MC_HomingMode”参数,有以下几个选项:
输出变量:
MoveHome(Axis:=axisIn,bCalibrationCam:=HomeSwitch );
10.MC_SetAcceptBlockedDriveSingal(限位报警允许回退功能)

11.MC_MoveAdditive(运动叠加)

12.MC_ReadStatus(轴状态读取)


包括轴(使能,运动中,定位完成 ,停止中)这些状态的说明。
AxisStatus(Axis:=Axis1 ,Enable:=TRUE ,Status=>Mystatus );
13.轴变量的使用
Axis.readstatus():读轴的状态,结果存放在Axis.status(类型ST_AxisStatus)中,其实就是相当于上面的MC_ReadStatus.Staus。
Axis.NcToPlc.StateDWord中的数其实就是ST_AxisStatus中定义的轴的各种状态。
Axis1.NcToPlc.ActPos:伺服轴的实际位置
Axis1.NcToPlc.ActVelo:伺服轴的实际速度
Axis1.NcToPlc.ActTorque:伺服轴的实际力矩
14.Mc_ReadParameterSet
Mc_ReadParameterSet:Mc_ReadParameterSet;
ST_AxisParameterSet:ST_AxisParameterSet;
Mc_ReadParameterSet(
Parameter:= ST_AxisParameterSet,
Axis:= Axis,
Execute:= TRUE);
其中,ST_AxisParameterSet中的参数如下:
主要有:fEncScaleFactorNumerator:电子齿轮分子(导程)
fEncScaleFactorDenominator:电子齿轮分母(编码器位数)
fEncOffset:编码器原点偏移
bEncEnableSoftEndMinControl:启用软负极限
bEncEnableSoftEndMaxControl:启用软正极限
fEncSoftEndMin:软负极限
fEncSoftEndMax:软正极限
bDriveIsInverse:轴方向反转
bEncIsInverse:编码器方向反转
当然,上述这些参数也可以使用ADSREAD指令。
15.MC_WriteParameter
MC_WriteParameter:MC_WriteParameter;
ST_AxisParameterSet:ST_AxisParameterSet;
fEncScaleFactorNumerator :=100;
MC_WriteParameter(Axis:=Axis , Execute:=TRUE,
ParameterNumber:=MC_AxisParameter.AxisEncoderScalingNumerator,
Value:=fEncScaleFactorNumerator );
上述是写将电子齿轮分子写入轴中。如果其他的,也要用这种方式写。
注意,MC_AxisParameter是系统库里边的,和上边的ST_AxisParameterSet不一样。
作用和ADSWRITE差不多。