触发器
触发器可用于执行操作,例如在到达路径上的定义位置时或在之前或之后的时间偏移时打开工具。以此目的, CODESYS SoftMotion 提供配置运动触发器,然后连续读取剩余时间直至到达位置的功能。
使用触发器时应注意以下事项:
仅当轴组已接近触发点直至可配置预测的时间时,才能检索到达触发点之前的时间。此预测的配置方式以及设置的影响在 配置应用程序以使用触发器 部分。
使用触发器不会改变轨迹。特别是,轨迹不会减慢以符合配置的预测。例如,如果在 0.01 秒后已经到达运动开始时的触发器位置,则即使更高的预测也无法实现提前超过 0.01 秒提供关于到达该点的通知。
有关更多信息,请参阅示例 触发器示例 1:简单示例 和 触发示例2:涂胶过程。
配置应用程序以使用触发器
配置预测持续时间
预测持续时间决定了计划在未来多久完成。这是由 fPlanningForecastDuration
的参数 SMC_TuneCPKernel
功能块。如何设置该参数取决于应用程序的要求。有两个主要矛盾的要求:
最长的预测持续时间
尽可能低的延迟。开始运动时的延迟会增加,因为必须首先建立预测。此额外延迟的大小主要取决于所使用的控制器的性能,并且通常远低于配置的预测。此外,轴组对中止运动和中断做出反应的延迟会因配置的预测而增加。预测不会有任何影响
MC_GroupHalt
和MC_GroupStop
。两个功能块始终立即采取行动,且独立于配置的预测。
这 fPlanningForecastDuration
的参数 SMC_TuneCPKernel
因此,功能块应设置得尽可能高,但尽可能低。如果不需要预测,则该参数可以保留默认值 0。
由于各种原因,实际可用的预测可能与配置的预测不同,例如,如果最后一个运动已接近结束。当前可用的预测可以通过以下方式进行监控: CurrentPlanningForecast
的输出 MC_GroupReadStatus
。
配置每次运动的最大触发次数
交付时, CODESYS SoftMotion 每个动作最多支持 8 个触发器。如果这个数字还不够,那么 MAX_NUM_TRIGGERS_PER_MOVEMENT
参数可以作为库参数进行更改。这是可能的 图书馆经理 以及各自的编辑 库参数。为了使用库参数, CODESYS 建议版本 >= SP19。
命令和评估触发器
有两个功能块可用于命令触发器: SMC_GroupPrepareTrigger 和 SMC_GroupReadTrigger。
触发器被分配给一个动作。每个单独的触发器都必须使用 SMC_GroupPrepareTrigger
功能块。该位置可以指定为相对、绝对或与平面的交点(请参见 SMC_TriggerPositionType)。的调用顺序为 SMC_GroupPrepareTrigger
并且各个运动尤其重要,因为准备好的触发器被分配给同一周期中命令的下一个运动。因此,在每次应用中都需要注意以下几点:
SMC_GroupPrepareTrigger
总是要在移动功能块之前调用。触发器和相应的运动必须始终在同一周期内发出命令。如果在循环中没有开始任何运动,则准备好的触发器将被丢弃,并且
CommandAborted
的输出SMC_GroupPrepareTrigger
功能块已设置。
当触发器被分配给一个动作时,可以使用以下命令检索有关触发器的信息 SMC_GroupReadTrigger
。一旦触发器处于可用的预测持续时间内,状态就会更改为 SMC_TRIGGER_STATUS.Active
并且可以读出到达触发之前的时间。该时间始终指当前周期的开始时间。根据触发器何时被触发(到达位置之前、期间或之后),可以在应用程序中以适当的周期执行所需的操作。
当触发器被分配给运动时,它们不能被中止。相反,它们可以被简单地忽略。
如果一个运动被第二个运动中止 MC_BUFFER_MODE.Aborting
,那么分配给第一个动作的触发器也会消失。
混合运动的触发器
对于运动 混合,触发器被投影到混合路径上。下图定性地示出了从 P1 到 P2 的移动以及后续移动均通过混合进行命令的情况。与第一个运动的混合在 B 点结束,与前一个运动的混合在 A 点开始。蓝色触发器位于 P1 和 B 之间。它被投影到第一个混合运动的后半部分(由蓝线突出显示) 。以同样的方式,位于 A 和 P2 之间的红色触发器被投射到第二个混合运动的前半部分(由红线突出显示)。绿色触发器位于混合区域之外并且不会移动。

当与触发器混合时,有一个关于运动状态和相应触发器的特殊功能。从 P1 移动到 P2 报告的命令功能块 Done
一旦到达A点。但是,与此移动相关的红色触发器保持活动状态,直到到达其投影到的混合元素上的位置。