扭矩限制和扭矩前馈控制
的扭矩限制 CODESYS SoftMotion 防止在协调运动期间超过驱动器的扭矩或力的指定限制。除了驱动器的速度、加速度和加加速度的现有限制外,还遵守这些扭矩和力的限制。对此的要求是应用运动学的动态模型,以功能块的形式实现 ISMDynamics
接口来自 SM3_Dynamics
图书馆。基本上,一个 AxesStateToTorque
需要方法,它计算轴的给定状态(对于它们的位置、速度和加速度)所需的扭矩。
除了扭矩限制之外,动态模型还允许计算扭矩前馈控制的设定扭矩。您可以在本章中找到一个应用示例 动态机器人模型.
用例
在许多运动学,尤其是串行运动学中,存在多个关节或所有关节的耦合。一个简单的例子是在关节中带有驱动器的双摆,如下所示:
用例 1 |
用例 2 |
第一个关节中的驱动器执行 90° 旋转;第二个关节不应移动(用例 1)。假设一个被动的第二关节,很容易想象双摆的第二肢会因为惯性而向左转动。为了防止这种旋转,第二个关节中的驱动器必须向右产生扭矩。因此,第一个驱动器的运动需要来自第二个驱动器的反作用。
存在相反方向的耦合,例如,在第一个驱动器应以恒定速度移动而第二个驱动器缩回双摆的第二个臂的情况下(用例 2)。这减少了双摆相对于第一个关节的惯性矩阵。要获得角动量(惯性矩阵与角速度的乘积),需要增加第一个关节的角速度。为了保持角速度恒定,需要通过改变第一个驱动器与其旋转方向相反的扭矩来减小角动量。因此,第二个驱动器的运动需要来自第一个驱动器的反应。
没有动态模型,只能将设定位置、设定速度和设定加速度发送到驱动器。在第一种情况下,无论第一个关节是否移动,都会为第二个驱动器定义一个恒定的设定位置。第二个驱动器中的控制单元需要能够处理这样一个事实,即对于相同的设定值,在一种情况下必须产生扭矩,而在另一种情况下则不能。第二种情况下的行为类似。这里,无论第二个关节是否移动,都将相同的恒定设定速度指定给第一个驱动器。在这里,驱动器中的控制单元也需要处理这样一个事实,即必须为相同的设定值生成不同的扭矩。
使用动态模型,可以计算设定扭矩并将其发送到驱动器。在那里它们可以用作控制单元的前馈维度。结果,控制单元接收允许改进控制质量的附加信息。
扭矩限制允许更精确地遵守驱动器的限制。在许多情况下,决定性的不是驱动器速度或加速度的限制,而是转矩的限制。当比较以下运动时,扭矩限制的优点从如上所述的双摆的示例变得清楚:第一驱动器的运动与第二臂缩回和第一驱动器的运动与第二臂伸出。在缩回状态下,关于第一关节的惯性矩阵小于在伸展状态下的惯性矩阵。因此,对于相同的运动(驱动器的相同速度和加速度曲线),伸出状态比缩回状态需要更大的扭矩。如果没有动态模型,则需要设置速度和加速度限制,以便在两种状态下都遵守扭矩限制。这会导致第一驱动器在缩回状态下以比遵守驱动器的扭矩限制所需的速度或加速度更低的速度或加速度移动。使用动态模型,可以配置扭矩限制,在规划运动时将其考虑在内,从而在两种状态下都得到充分利用。
一个稍微复杂的例子是上面描述的第一种情况,其中第一个驱动器正在移动,第二个驱动器应该保持其位置。为了保持其位置,第二个驱动器中所需的扭矩取决于第一个驱动器的运动。如果第一个驱动器加速过快,则原则上可能会违反第二个驱动器的扭矩限制。如果没有动态模型,这只能通过相应地配置第一个驱动器的加速度限制来防止。使用动态模型,可以在规划运动时考虑第二个驱动器的配置扭矩限制,并且可以限制第一个驱动器的加速度。
在更复杂的运动或运动学的情况下,这里描述的耦合效应会与更多的耦合效应结合在一起。动态模型允许将这些联轴器考虑在内,从而产生更好的设定值规格并更好地遵守驱动器的限制。
动态模型的配置
一个功能块形式的现有动态模型,它实现了 ISMDynamics
接口可以通过以下方式分配给轴组 SMC_GroupSetDynamics
功能块。除了动态模型外,功能块还必须用于在机器坐标系中以矢量形式配置重力加速度的方向和大小。
考虑负载
可以通过 SMC_GroupSetLoad
功能块并在运行时更改。这 ExecutionMode
功能块的输入可用于定义负载变化何时生效(例如,立即生效或仅在当前运动完成后生效)。
重要
继续 MC_GroupContinue
:继续时,存储在继续数据中的每个运动都会保持最初命令的负载。继续后命令的任何运动使用最后设定的负载。
变速箱的考虑
设定扭矩是为齿轮箱输出计算的,不会自动转换为驱动器。这 SMC_SetAdditionalConversionFactors
功能块可用于为每个轴的扭矩配置额外的转换系数。变速箱也可以这样考虑。
单位
力和扭矩及其限制基本上在应用中以牛顿 (N) 或牛顿米 (Nm) 为单位指定。在将设定力或设定扭矩发送到驱动器之前,可以进行重新缩放。为此,CiA 402 标准要求,例如,将设定扭矩以额定扭矩的千分之一(以 mNm 为单位)发送到驱动器。
长度单位在 SoftMotion 中是用户特定的。由于力和扭矩被定义为固定单位(N 或 Nm),因此必须配置从用户特定长度单位到米的转换系数(除非使用米作为长度单位)。这可以通过 SMC_GroupSetUnits
功能块。
移动坐标系中的扭矩限制
如果轴组在移动坐标系中移动,那么只有当轴组可以精确地跟随移动坐标系时,才能遵守扭矩限制。如果这是不可能的,并且偏差的公差通过以下方式配置 SMC_GroupSetPathTolerance
,那么在尝试补偿偏差时可能会超出扭矩限制。如果由于偏差超出公差而发生错误,则轴组停止。在此停止期间,也可能超过扭矩限制。在每种情况下都会计算设定的扭矩并将其发送到驱动器。
出现错误时的扭矩限制
如果在规划期间检测到错误(例如,命令的运动将超出工作区域),则轴组将停止在先前命令的路径上。这样做时,扭矩限制得到遵守。如果无法在路径上停止(例如,因为驱动器报告错误),则也无法遵守扭矩限制。
使用单轴运动和协调运动时的区别
基本上,为属于具有动态模型的轴组的所有轴计算设定扭矩。这既适用于静止状态,也适用于通过单轴运动(例如, MC_MoveAbsolute
) 或通过协调运动遍历整个轴组(例如, MC_MoveDirectAbsolute
).
扭矩限制仅对协调运动有效。这样做的原因是,如上所述,轴的必要扭矩取决于轴组中一些或所有其他轴的位置和运动。因此,只有当轴组的所有轴都可以作为协调运动移动时,才有可能限制扭矩。
一个例外是 SMC_GroupJog
功能块。该功能块不支持扭矩限制。建议使用 SMC_GroupJog2
反而。