You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

出现SSE:Invalid operation异常时,如何维持TwinCAT 3运行模式?

解决TwinCAT 3中Tc Kinematic Transformation模块异常导致系统停机的方案

一、提前位置校验,从源头规避异常

在调用运动学转换的正/逆解函数前,先对目标位置做边界校验,避免触发无解异常:

  • 笛卡尔空间校验:依据机器人厂家提供的工作范围参数,检查目标X/Y/Z及对应自由度参数是否在允许区间内,超出则直接返回错误提示,终止当前函数执行。
  • 关节空间校验:逐个验证关节的角度/行程是否在机械限位与软件限位范围内,排除运动学无解的前提条件。
  • ST语言示例:
IF (TargetPos.X < RobotWorkSpace.X_Min) OR (TargetPos.X > RobotWorkSpace.X_Max) THEN
    ErrorCode := ERR_OUT_OF_WORKSPACE;
    ErrorMsg := '目标位置超出机器人工作范围';
    RETURN;
END_IF;

二、用TRY...CATCH拦截SSE异常并维持运行模式

TwinCAT 3.1.4024及以上版本支持ST语言的异常捕获机制,可拦截SSE异常并强制系统保持运行状态:

  • 在运动学转换函数调用块外包裹异常捕获结构,捕获后记录错误信息,重置系统状态为运行模式,再退出当前函数:
TRY
    // 调用运动学逆解函数示例
    Kinematic.InverseTransform(TargetCartPos, CurrentJointPos, OutJointPos);
CATCH
    ErrorCode := GETLASTERROR();
    ErrorMsg := '运动学转换失败:' + GETLASTERRORTEXT();
    // 强制重置系统为运行模式
    ADSWRITE(ADSPORT_SYSTEM, 0, 0, ADSIGRP_SYSTEMSTATE, ADSIOFFS_SYSTEMSTATE, ADSSTATE_RUN);
    // 触发电机抱闸或停止指令,避免失控
    FOR i := 1 TO 4 DO
        Axis[i].Stop(0);
    END_FOR;
    RETURN;
END_TRY;
  • 前提:需在PLC项目属性的编译器设置中勾选「支持异常处理」选项。

三、配置运动学模块的错误输出策略

调整Tc Kinematic Transformation模块的错误处理逻辑,避免触发系统级异常:

  • 打开模块配置界面,将「触发系统异常」选项改为「返回错误代码」;
  • 实时监测模块Instance DB中的错误输出变量(如ErrorFlag、ErrorID),一旦检测到错误,立即终止当前运动任务并返回提示:
Kinematic.InverseTransform(TargetCartPos, CurrentJointPos, OutJointPos);
IF Kinematic.ErrorFlag THEN
    ErrorCode := Kinematic.ErrorID;
    ErrorMsg := '运动学转换模块报错:ID=' + INT_TO_STRING(ErrorCode);
    AxisGroup.Stop(0);
    RETURN;
END_IF;

四、系统层面的防护配置

  • 在TwinCAT System Manager中,进入PLC的「Exception Handling」设置,将「System Service Exception」的处理方式改为「仅记录错误,不切换运行模式」;
  • 启用电机抱闸冗余控制:单独编写逻辑,在检测到任何运动错误时立即触发抱闸,从物理层面避免电机失控。

内容的提问来源于stack exchange,提问作者Vỹ Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:18:35