倍福NC运动(★)

轴运动所需要的功能块如下:

(文本多来源于倍福技官方文档)。

1.MC_Power(轴使能)

输入变量:

Enable:使能信号
Enable 信号为持续生效,必须保持为 True ,直到 NC 轴正常停止。如果 NC 轴在动作过
程中,使能信号变为 False NC 立即触发 Error 报警。
Enable_Positive : BOOL; 允许正转
Enable_Negative : BOOL; 允许反转
Override: LREAL;指速度输出比例。 是 0-100.0 的实数
Override 可以在 Enable 保持为 True 期间动态修改,实际输出速度会随之成比例变化。
成功使能后输出变量 Status True。
特别注意: 在做轴控的FB时,AXIS一定要是输入输出
MCPower(Enable:=xEnable,
	Enable_Positive:= FBI_MCPower.Enable,
	Enable_Negative:= FBI_MCPower.Enable,
    Override:=rOverride,
    Axis:= Axis1,);

2.MC_Reset(轴复位)

该功能块由输入变量 Excute 的上升沿触发。完成后输出变量 Done 置位。
MC_Reset 是一个优先级最高的功能块,如果 NC 轴正在运动中,触发了 MC_Reset
Execute 信号,所有动作都会立即退出。
MCReset(Execute:=xReset,
				Axis:=Axis1,
				Done=>,
				Error=>,
				ErrorID=>);

3.MC_Stop(轴停止)

 Execute 上升沿,无论 NC 轴在执行何种动作,立即以减速度为 Deceleration 停止。

如果 Deceleration 0 或没有赋值,则直接使用 TwinCAT System Manager Dynamic 页面
设置的加减速特性。
FBI_MCStop(Execute:xStop,Axis := Axis1 );

4.MC_Halt(轴暂停)

MC_Halt 是一个“运动指令”,虽然它的目的是让轴停止,可以称之为暂停。所以它有
Buffer Mode 这个选项。
相比于 MC_Stop ,它允许未停稳之前再次启动
Halt(Axis:=axisIn,Execute:=xPause);

5.MC_Jog(JOG运动)

输入变量:

JogForward BOOL ;正向点动
JogBackward BOOL ;反向点动
MODE:点动模式(一般选择MC_JOGMODE_CONTINOUS)
Posistion :点动位置
Velocity :点动速度

MODE 的类型为枚举“E_JogMode”,可选的类型有:

MC_JOGMODE_STANDARD_SLOW,
MC_JOGMODE_STANDARD_FAST,
MC_JOGMODE_CONTINOUS,
MC_JOGMODE_INCHING,
MC_JOGMODE_INCHING_MODULO
MC_JOGMODE_STANDARD_SLOW MC_JOGMODE_STANDARD_FAST 分别为标
准慢速点动和标准快速点动。 JogForward 或者 JogBackward 为持续作用,功能块中 Position
Velocity 输入无效。
MC_JOGMODE_CONTINOUS 连续点动, JogForward 或者 JogBackward 为持续作用,
Veloctiy 为点动速度, Position 参数无效。
MC_JOGMODE_INCHING 渐进点动。 JogForward 或者 JogBackward 上升沿触发。使
用功能块引用时给定的速度、加速度等参数。点动的距离在 System Manager 中设置:
MC_JOGMODE_INCHING_MODULO :渐进点动。 JogForward 或者 JogBackward 上升
沿触发。使用功能块引用时给定的速度、加速度等参数。点动的距离在 System Manager
设置。
    MCJog(JogForward:=xExcuteJogFor,
			  JogBackwards:=xExcuteJogBack,
              Velocity :=rJogSpeedTemp,
              mode:=MC_JOGMODE_CONTINOUS ,
			  Acceleration :=stAxisDataHMI.rAccSet ,
			  Deceleration :=stAxisDataHMI.rDecSet ,
			  Jerk :=10000 ,
			  Axis := Axis1,);	

6.MC_MoveAbsolute(绝对位置定位)

输入变量:

Execute BOOL
Velocity LREAL
Position LREAL
Execute 上升沿,启动 NC 轴以 Velocity 速度,运动至 Position 给定的绝对位置。
Axis : NCTOPLC_AXLESTRUCT;
Acceleration Deceleration Jerk
指加速度、减速度和抖动,可以填写,也可以不填。如果不填,功能块将使用 System
Mananger 中该轴的 Dynamic 页面所设置的参数来加减速。
BufferMode:默认的是Aborting模式,各个模式从位置1到3时的加速过程如下图所示:

输出变量:

Done NC 轴达到目标位置,则该标记置位。
CommandAborted NC 轴退出标记。如果 NC 轴还没有达到目标位置,就因停止指令、
故障或者复位指令导致中断,则该标记置位。

说明:

在达到目标位置之前,功能块忽略输入变量 Position Excute 的任何变化。
如果此时希望 NC 轴以新的速度运动到新的位置,可以重新调用此功能块。如果要中途
停止,则用功能块 MC_STOP
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(相对位置定位)

输入变量:

Execute BOOL
Velocity LREAL
Distance LREAL
Execute 上升沿,启动 NC 轴以 Velocity 速度,以当前位置为起点,运动 Distance
定的距离。

输出变量:

Done NC 轴达到目标位置,则该标记置位。
CommandAborted NC 轴退出标记。如果 NC 轴还没有达到目标位置,就因停止指令、
故障或者复位指令导致中断,则该标记置位。
其他的和绝对定位一致。
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(匀速运动)

 

输入变量:

Execute BOOL ;上升沿触发,启动 NC 轴以 Velocity 变量值为速度,匀速运动。
Veloctiy LREAL ;速度给定。
Acceleration Deceleration Jerk :指加速度、减速度和抖动,可以填写,也可以不填。
如果不填,功能块将使用 System Mananger 中该轴的 Dynamic 页面所设置的参数来加减速。
Direction :运动方向,可以有 4 个选项:
MC_Positive_Direction :正方向
MC_Shortest_Way :最短路径
MC_Negative_Direction :反方向
MC_Current_Direction : 当前方向

输出变量:

InVeloctiy NC 轴达到目标速度,则该标记置位。
CommandAborted NC 轴退出标记。如果 NC 轴还没有达到目标速度,就因停止指令、
故障或者复位指令导致中断,则该标记置位。

说明:

MC_MoveVelocity 启动之后,如果输入变量 Velocity 发生变化, NC 轴的速度也不会变
化。
为了实现速度的连续变化,可以在此输入 最大速度 ,而通过改变 MC_Power 的输入变
Override 的值,来改变目标速度。
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(寻参/回原点)

 

输入变量:

Execute BOOL ;信号上升沿触发寻参的动作。
Postion LREAL ;为参考点位置,如果设置为 0,即为原点。用DEFAULT_HOME_POSITION就是指参数设置里边的 Reference position for homing值
bCalibrationcam BOOL ;原点接近开关。
Options ST_HomingOptions ;包含了 NC 轴的 Enc 参数中 Homing 方向、速度等元素,
PLC 中填写 Option 优先于 NC 轴中的 Enc 默认设置。

HomingMode 的类型是枚举“MC_HomingMode”参数,有以下几个选项:

MC_DefaultHoming :按照 SystemManager 中的 encoder 参数设置
MC_Direct :轴不动作,直接将当前位置设置为参考点
MC_ForceCalibration :轴不动作,也不设置位置,直接置位已寻参标记
MC_ResetCalibration :轴不动作,也不设置位置,直接清除已寻参标记

输出变量:

Done BOOL ;寻参完成后,此标记置位。
MoveHome(Axis:=axisIn,bCalibrationCam:=HomeSwitch );

10.MC_SetAcceptBlockedDriveSingal(限位报警允许回退功能)

有的伺服驱动器,比如 AX5000 ,碰到正负限位以后,伺服就处于报警状态,不能前进
也不能后退。
TwinCAT NC 轴与 PLC 的接口变量中,控制字里有一个 Bit 专门用于在轴
限位报警后允许回退的功能。如图所示:

 

MC_SetAcceptBlockedDriveSingal 就用于置位这个 Control Bit

11.MC_MoveAdditive(运动叠加)

适用于分段的运动控制,在上一个目标位置指令的基础上触发一个相对定位运动,无论上个 目标位置是否达到。本次定位的目标位置到达后置位 Done 标记。

12.MC_ReadStatus(轴状态读取)

输出变量 Status 的类型都是 ST_AxisStatus。
与之类似功能的是 Axis_Ref 自带的 Action “ReadStatus” ,调用时写为 Axis.ReadStatus()
读取的结果放在 Axis.Staus,所以可以用这个功能块或者用Axis.readstatus(),然后把Axis.status的值读取出来,作用是一样的。还有 Axis.NcToPlc.StateDWord的值也是这个。
PS: 也就是说有三个地方可以读出来轴的状态,一个是Axis[1].status,一个是Axis[1].NcToPlc.StateDWord,还有一个是MC_ReadStatus读取来的结构体
该功能块的引脚Standby,Stopping,Disabled和引脚Status中的Standby,Stopping,Disabled是一样的
结构类型如下所示:
.0:轴准备OK;.1:回到原点;.8:执行指令中

包括轴(使能,运动中,定位完成 ,停止中)这些状态的说明。

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差不多。

  • 15
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值