倍福TwinCAT3伺服控制常用功能块的实现可参考如下链接
TwinCAT3 系统功能块的使用(18分钟)https://tr.beckhoff.com.cn/mod/hvp/view.php?id=1979
倍福运动控制库功能介绍
原文可参考:
【MC_Power 激活轴的软件启用。可以为两个行驶方向或仅一个方向启用。在“状态”下,轴的输出操作准备就绪。01】
【MC_Reset 重置NC轴。在许多情况下,这也会导致连接的驱动设备复位。根据总线系统或驱动器类型,在某些情况下,可能需要对驱动器设备进行单独的复位。02】
——————————————————————
MC_MoveAbsolute
【MC_MoveAbsolute 开始定位到绝对目标位置,并监视整个移动路径上的轴移动。一旦到达目标位置,“完成”输出即被设置。否则,输出“CommandAborted”,或者在出现错误的情况下,设置输出“error”。28】
【MC_MoveAbsolute 主要用于线性轴系统。对于模数轴,位置不是模数位置,而是连续绝对坐标系中的绝对位置。】
【如果在轴参数中显式激活此选项,则可以将运动命令应用于耦合的从属轴。运动命令(如MC_MoveAbsolute)会自动导致轴解耦,然后执行该命令。在这种情况下,唯一可用的缓冲模式是“中止”。】
——————————————————————————————————————
MC_MoveVelocity
指令名称:速度运行指令
功能:使轴以预设的速度运行
【MC_MoveVelocity以指定的速度和方向开始连续运动。可以通过停止命令停止移动。32】
【一旦达到恒定速度,就会设置InVelocity输出。一旦达到恒定速度,块功能就完成了,并且不再对运动进行进一步的监控。如果在加速阶段中止命令,则输出“CommandAborted”,或者在发生错误时,设置输出“error”。】
【如果在轴参数中显式激活此选项,则可以将运动命令应用于耦合的从属轴。运动命令(如MC_MoveAbsolute)会自动导致轴解耦,然后执行该命令。在这种情况下,唯一可用的缓冲模式是“中止”。】
【MC_MoveContinuousAbsolute开始定位到绝对目标位置,并监视整个移动路径上的轴移动。在目标位置达到恒定的终点速度,并保持不变。一旦到达目标位置,“InEndVelocity”输出即被设置。否则,输出“CommandAborted”,或者在出现错误的情况下,设置输出“error”。一旦达到目标位置,功能块的功能终止,轴不再受监控。33】
MC_MoveAbsolute
S[MC_MoveAbsolute Position=133 Velocity=1000 Acceleration=500 \
Deceleration=600 Jerk=20000 Direction=2]
【MC_MoveVelocity以指定的速度和方向开始连续运动。可以通过停止命令停止移动。32】【一旦达到恒定速度,就会设置InVelocity输出。一旦达到恒定速度,块功能就完成了,并且不再对运动进行进一步的监控。如果在加速阶段中止命令,则输出“CommandAborted”,或者在发生错误时,设置输出“error”。】
指令输入端:
①Velocity:轴的速度。
②Direction:方向数值
- Direction = 0:旋转方向取决于参数“Velocity”值的符号
- Direction = 1:正方向旋转,忽略参数“Velocity”值的符号
- Direction = 2:负方向旋转,忽略参数“Velocity”值的符号
③Current:
- Current = 0:轴按照参数“Velocity”和“Direction”值运行
- Current = 1:轴忽略参数“Velocity”和“Direction”值,轴以当前速度运行。
④PositionControlled:
- PositionControlled= 0:非位置控制即运行在速度控制模式
- PositionControlled= 1: 位置控制操作即运行在位置控制模式
『注意』 只要执行指令 MC_MoveVelocity 即应用该参数。之后,MC_Power 的设置再次适用。使用 PTO 轴时忽略该参数。
⑤InVelocity :
- InVelocity= 0:输出未达到速度设定值
- InVelocity= 1: 输出已达到速度设定值
『注意』可以设定“Velocity”数值为0.0,触发指令后轴会以组态的减速度停止运行。相当于MC_Halt指令。
倍福NC轴走速度模式
可参考以下文章链接:
TYPE MC_Direction :
(
MC_Undefined_Direction := 0,
MC_Positive_Direction := 1,
MC_Shortest_Way := 2,
MC_Negative_Direction := 3
);
END_TYPE
—————————————————
问题:速度控制,速度模块不能为正,但方向怎么控制?
Velocity:为正值,即只能取绝对值?
即速度可正可反时,那么Direction=0,时取速度的符号,但此时Velocity只能为绝对值,即+
因此,怎么能体现出速度的正负变化?
——————————————————
- Direction = 0:旋转方向取决于参数“Velocity”值的符号
MC_MoveVelocity:以设定速度移动轴 这个指令每次修改了就要停下来在启动这样给他一个上升沿从可以重新读取新的速度值。
变换控制输入正负转向:
IF u>0 THEN
str = MC_Positive_Direction;
ELSE
str = MC_Negative_Direction;
END_IF
或者
IF u>0 THEN
str := 1;
ELSE
str := 3;
END_IF
Direction:= str
move_v(
Axis:= axis,
Execute:= v_do,
Velocity:= ABS(u),
Acceleration:= ,
Deceleration:= ,
Jerk:= ,
Direction:= str,
BufferMode:= ,
Options:= ,
InVelocity=> ,
Busy=> ,
Active=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );