SMC_SetControllerMode

这个功能块是 “SM3_Basic”的一部分。如果驱动器支持,这个模块可以用于设置驱动器到另一种控制模式。

预处理:

  • 轴必须支持描述的控制方式。如果要确认这些,参阅SoftMotion驱动器库PDF文档中相关说明。
  • 必要的周期 I/O 数据(例如,对于力矩模式:设置力矩对象)必须被映射。
  • 轴必须不是位于错误,停止或者回零模式,当这个功能块调用的时候。否则将会产生一个错误 (SMC_SCM_AXIS_IN_WRONG_STATE) 。

当激活时的动作:

  • 功能块设置轴的“byControllerMode“ (操作模式命令)参数并等待直到参数“byRealControllerMode“ (操作模式当前值) 反应当前值。
  • 如果这个操作在 1000 周期内没有发生,那么这个功能块将会中断并返回一个错误。
  • 当从一个低优先级的模式转到一个高优先级的操作模式时 (例如力矩 -> 速度,力矩 ->位置,速度 ->位置),这个功能块将计算高水平信号的值。例如当从力矩模式切换到位置模式时,功能块将使用当前轴位置并添加一个预期的位置,在当前位置与设置位置的时间滞后补偿是基于当前的速度以及周期性的偏转(Axis.fSetActTimeLagCycles)。后者的值与系统有很大的关系(控制器硬件,现场总线,驱动器相关)并需要进行调整。

在执行完 SMC_SetControllerMode 功能块并得到 bDone输出之后要做什么?

  • 只要 "byRealControllerMode" 反应 "byControllerMode",功能块设置结束并停止任何动作。这意味着应用程序在这个周期内会立刻进行变量的设置。例如一个力矩控制轴将会转换为位置控制模式。当功能块 SMC_SetControllerMode 启动的时候程序仍然会继续运动。在选择时间里,功能块将会计算设置位置的合适值。但是一旦设置完成,将会没有功能块对设置值进行处理,轴将会立即停止并报错。因此,例如功能块 “MC_Halt”, “MC_MoveVelocity” 或者 “MC_MoveAbsolute”可以被功能块 SMC_ControllerMode 的输出进行触发并接管轴的控制。

循环的周期,这个参数在控制器模式选择的时候非常有用,可以通过映射操作模式对象进行减少(设置以及当前位置) 总线设备的循环对象。

 

类型

初始值

描述

VAR_IN_OUT

     

Axis

AXIS_REF

 

AXIS_REF VAR_INPUT, “AXIS_REF_SM3”

VAR_INPUT

     

bExecute

BOOL

FALSE

当为 TRUE时,功能块被激活。

nControllerMode

SMC_CONTROLLER_MODE

SMC_position

描述控制模式,参阅 “SMC_CONTROLLER_MODE”

VAR_OUTPUT

   

bDone

BOOL

FALSE

TRUE 如果参数可以读取。

bBusy

BOOL

FALSE

TRUE 如果功能块的处理没有完成。

bError

BOOL

FALSE

当功能块发生错误时会产生错误信号。

nErrorID

SMC_ERROR

0

错误ID,参阅 “SMC_ERROR”