函数库 ⇘ “SM3_Basic”中包含许多与驱动器有关的高水平的功能块而这些不是通过标准的设置/表示位置实例实现的,而是通过命令或者修改驱动器设置的方式对驱动器进行 ⇘ “AXIS_REF_SM3”读取/写入参数。在使用以下功能块时,以下几种情况可能被使用:
驱动器参数修改 (比如比例因子,旋转电机的位置周期等) 在运行系统中会强迫驱动器进行重新初始化。调用功能块 ⇘ “SMC3_ReinitDrive”中输入执行 的上升沿处理将会重新设置驱动器的参数 wCommuncationState 并会复述整个的驱动器重启过程。
如果 通讯接口中断到一个较低的总线水平,重新初始化也是必须的。如果一个错误被 SMC_DI_GENERAL_COMMUNICATION_ERROR ( ⇘ “SMC_ERROR”)提供,以下错误处理方式是必须的。
1. |
|
||||
2. | 重启驱动器/轴通过
⇘
“SMC3_ReinitDrive”
|
AXIS_REF 参数 bRegulatorOn 以及 bDriveStart 控制上电状态以及驱动器抱闸;所有这些可以通过功能块 MC_Power进行控制。
如果要激活上电状态参数 bRegulatorOn 必须被设置;通过 bRegulatorRealState 驱动器会反馈当前处理的状态。如果驱动器设备支持,在运动过程中复位 bRegulatorOn 将会立即暂缓力矩输出。
变量 bDriveStart 定义驱动器是否允许进行运动;通过 bDriveStartRealState 这个参数的当前状态将会显示。
如果驱动器支持,参数 bDriveStart 在运动期间的停止将会使驱动器根据设定的参数减速;伺候驱动器将保持此位置直到 bRegulatorOn 重新被置位。当选项 QuickStop被激活的情况下轴将保持在“停止”模式下。如果轴被一个功能块命令移动,那么这个功能的输出状态将会是 "CommandAborted"。如果使用功能块 'MC_Stop' 一个错误将会产生并且轴被设置为 "errorstop"状态。
如果驱动器支持,变量 eBrakeControl 可以通过功能块 SMC3_BrakeControl进行控制。 允许有三种模式(SMC3_BrakeSetState: SMC_BRAKE_AUTO, SMC_BRAKE_OPEN, SMC_BRAKE_CLOSE)。
变量 bBrakeClosedRealState 反应当前抱闸状态。
从 SoftMotion 查看控制点以及机械制动的状态,既不依赖于驱动器的状态,也不影响正在运行的运动。
功能块 SMC_SetControllerMode 允许用户在不同的控制模式之间进行选择。AXIS_REF中的变量 byControllerMode 以及 byRealControllerMode 分别表示当前控制器的状态。可选的变量如下:
在写入变量 byControllerMode之后,当前的状态将会被检查,知道它等于所期望的控制模式。
SoftMotion提供了两种回零方式:一种是驱动器回零,另一种是控制器回零。
后者是通过调用功能块 SMC_Homing实现的。 因此,参考信号必须是控制器IO映射的一部分。在回零模式下驱动器会保持在位置控制模式。通常情况下,这种方式不像驱动器控制回零那样精确,因为位置定位(当触到限位开关 )是根据当前从驱动器读取的位置决定的;因此它的定位精度是有限的并受通信时间影响的。
与驱动器回零方式相比,基准开关连接到驱动器本身,可以迅速的读取这个位置,因此具有很高的精确性。在驱动器控制回零方式中,驱动器被设置为不同的控制模式,他不是按照控制器设置的参数,而是按照控制器内部参数定义的。在驱动器回零完成之后,驱动器控制模式将会立即恢复原有的控制模式。
功能块 MC_Home 通过设置 fReference 和 bStartReference启动驱动器控制的回零方式。与此同时 AXIS_REF (wState) 的状态被设置为 “homing”。只要驱动器是在回零操作过程中(意味着不会影响控制器的指令设置),驱动器将会设置参数 bStartReferenceRealState 为TRUE。 如果驱动器回零操作完成,那么变量 bStartReference 以及 bStartReferenceRealState将会被设置为 FALSE。
SoftMotion提供两种可能的方式对当前的驱动器位置进行锁闭:更精确的方式是通过连接将信号结构写入驱动器以锁闭驱动器当前位置;第二种可能是通过控制器输入读取当前的位置。第一种方式更精确(更少延迟的信号传送),但是需要驱动器支持此功能。此外,在一般的驱动器中只支持第二种方式,然而在驱动器内部信号的捕获是一个标准形式。
功能块 MC_TouchProbe 设计的锁定将通过数据结构 aCaptDesc (是 AXIS_REF 参数的一部分)与驱动器进行数据交互;这个数据结构中包含所有在捕获位置,启动位置以及停止位置有效的锁定信息。
当前设备或者编码器的位置按照DWORD格式传送到控制器。通过设定旋转类型定义比例以及模态范围, 周期 P 等同于一个增量。 P 表示在一圈中的增加量。这意味着位置值 X, X+1*P, X+2*P 等,与本地物理值相同。注意:对于大数 n,位置 X+n*P 可能达到 DWORD 限制。这发生在位置 0x1 00 00 00 00 。在这种情况下先前的位置被去掉轴的位置从0开始。这种情况可能会发生在 P 不是 0x1 00 00 00 00 的除数情况下。这样,位置 X 不能在抱闸前后正确描述本地物理位置。
数值示例
轴从位置0x0开始,在每次物理 0°。相当于一个周期的 360°。 比例的选择相当于 3600000 = 0x36EE80 增量。经过 1193 转,轴位于 0xFFFD7280=1193*3600000。如果再次运转将会达到 0x100346100 ,然而,因为断裂前 1 导致位置 0x346100 被切断。如果现在轴回到位置0x0,但是将会是物理上的 16,7296° 。这意味着位置0x0相当于位置 0° 或者 16.7296° 或者其他值,这依据于有多少断发生。
这意味着不能保证一个旋转轴再次启动之后仍保持相同位置(位于非除数周期的变速箱条件下 0x1 00 00 00 00 )。反向值在这种情况下断裂,看起来类似当前值从0位置开始经过一个反向运动之后到达。
当经过一个长时间的时间周期或者控制器重启之后发生一个未知的值,一个持续保持的值将会纠正错误。 |