触发条件功能使用指南

概述

触发条件功能允许您配置自动化的数据采集触发规则。当监视的变量满足指定条件时,系统会自动执行预设的动作(如启动录波、记录数据等)。

支持平台
- ✅ EmeyeStudio (Master端)
- ✅ XCP Slave (嵌入式设备端)


核心特性

  • 灵活的阈值设置:支持固定值和表达式(含参数引用)
  • 多种比较操作符:大于、小于、等于、范围等8种操作符
  • 硬件参数集成:可直接引用硬件配置中的参数
  • 条件组合:支持多个条件的"与"/"或"逻辑组合
  • 主从协同:Master端配置,Slave端实时触发执行

界面操作指南

1. 打开触发条件配置

路径:工程资源树 → Triggers → 右键 → "新建触发条件"

Project/
└─ Triggers/
   └─ [右键] → 新建触发条件

2. 配置触发条件

2.1 基本设置

配置项 说明 示例
名称 触发条件的标识名称 "过流保护触发"
监视变量 要监视的ELF变量名 g_motorCurrent_U
操作符 比较操作符 > (大于)
阈值类型 固定值或表达式 表达式
阈值 触发阈值 ${MotorConfig.电机核心参数.额定电流} * 1.2

2.2 操作符说明

操作符 符号 说明 适用场景 Master Slave
大于 > 变量值 > 阈值 过流保护、超速保护
小于 < 变量值 < 阈值 欠压保护、低速报警
等于 == 变量值 = 阈值 状态匹配、故障码检测
不等于 != 变量值 ≠ 阈值 异常状态检测
大于等于 >= 变量值 ≥ 阈值 边界条件检测
小于等于 <= 变量值 ≤ 阈值 边界条件检测
在范围内 in_range 下限 ≤ 变量 ≤ 上限 正常工作区间检测
在范围外 out_of_range 变量 < 下限 或 变量 > 上限 异常区间检测

注意:Slave端支持所有8种操作符(V1.0.0.0+版本)

3. 使用参数引用

3.1 什么是参数引用

参数引用允许您在触发条件中直接使用硬件配置中的参数值,格式为:

${配置名称.组件名称.参数名称}

3.2 配置示例

场景:电机过流保护,当电流超过额定电流的1.2倍时触发

监视变量: g_motorCurrent_U
操作符: >
阈值表达式: ${MotorConfig.电机核心参数.额定电流} * 1.2

解析过程
1. 系统从硬件配置中读取"额定电流"值(如 280A)
2. 计算实际阈值:280 * 1.2 = 336A
3. 当 g_motorCurrent_U > 336 时触发

3.3 支持的表达式语法

语法 说明 示例 Master Slave
${Config.Component.Parameter} 引用硬件参数 ${MotorConfig.电机核心参数.额定电流} ⚠️ 需预配置
+ - * / 基本运算 ${Motor.额定电流} * 1.2
^ 幂运算 ${Motor.额定转速} ^ 2
sqrt() 开方 sqrt(${Motor.额定功率})
sin() cos() 三角函数 sin(${Motor.电角度})

Slave端表达式支持
- ✅ 基础四则运算 (+, -, *, /)
- ✅ 变量引用
- ✅ 常量值
- ❌ 复杂数学函数(sin, cos, sqrt等)

4. 条件组合(高级)

4.1 创建条件组

当需要多个条件同时满足时才触发,可使用条件组:

触发组: "电机异常检测"
逻辑操作: 与 (And)
├─ 条件1: g_motorCurrent_U > ${Motor.额定电流} * 1.2
└─ 条件2: g_motorSpeed > ${Motor.额定转速} * 1.1

4.2 逻辑操作符

  • 与 (And):所有条件都满足时才触发
  • 或 (Or):任一条件满足时就触发

Slave端支持
- ✅ 条件组逻辑(AND/OR)
- ✅ 最多8个条件
- ✅ 最多4个条件组


5. 编辑触发条件

5.1 编辑已有触发条件

路径:工程资源树 → Triggers → 触发条件 → 右键 → "编辑"

操作步骤
1. 在工程资源树中找到要编辑的触发条件
2. 右键点击触发条件节点
3. 选择"编辑"菜单项
4. 在弹出的对话框中修改配置
5. 点击"确定"保存修改

可编辑内容
- 触发条件名称
- 监视变量
- 操作符
- 阈值类型(固定值/表达式)
- 阈值数值或表达式
- 范围上下限(范围操作符时)

5.2 删除触发条件

路径:工程资源树 → Triggers → 触发条件 → 右键 → "删除"

注意:删除触发条件后,相关的Recorder配置中的触发引用也会被清除。


6. Recorder触发配置

6.1 在Recorder中选择触发条件

路径:Recorder窗口 → 配置 → 触发设置

操作步骤
1. 打开Recorder窗口
2. 点击"配置"按钮或选择菜单"配置 → 触发设置"
3. 在触发设置对话框中:
- 触发模式:选择"手动触发"或"自动触发"
- 自动触发时:从下拉列表选择已创建的触发条件
4. 点击"确定"保存配置

界面说明

配置项 说明 选项
触发模式 选择触发方式 手动触发 / 自动触发
触发条件 自动触发时选择条件 显示所有已创建的触发条件
预触发时长 触发前记录的数据时长 0 - 10000 ms
后触发时长 触发后记录的数据时长 100 - 100000 ms

6.2 Recorder触发工作流程

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Recorder配置   │────►│   触发条件选择   │────►│   触发监测启动   │
│  (选择触发条件)  │     │  (从列表中选择)  │     │  (ENABLE_TRIGGER)│
└─────────────────┘     └─────────────────┘     └─────────────────┘
                                                        │
                                                        ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   数据记录完成   │◄────│   Slave端触发    │◄────│   条件满足监测   │
│  (显示波形数据)  │     │  (自动启动记录)  │     │  (实时变量监测)  │
└─────────────────┘     └─────────────────┘     └─────────────────┘

6.3 条件触发工作原理

条件触发采用边沿触发机制,仅在条件从假变真(上升沿)时触发录制,条件持续为真不会重复触发。

触发流程

  1. 启动Recorder后,触发配置自动下发到Slave端
  2. Slave端在每个采样周期评估触发条件
  3. 当条件从假变真时(上升沿),自动触发录制
  4. 录制完成后数据自动上传到Master端
  5. Master端自动保存录制数据
  6. 录制周期结束后,恢复等待下一次触发

重要规则
- 条件持续为真时不会重复触发,只有新的上升沿才会触发
- 录制过程中(POST_TRIGGER/UPLOAD/COMPLETE状态)不评估触发条件
- 录制周期完成后自动恢复评估,无需手动操作
- 即使配置了条件触发,手动触发按钮仍然可用

示例:变量 a_test_int_32 阈值 180

变量值:    100 → 150 → 200 → 250 → 200 → 100 → 200
条件状态:   F     F      T      T      T     F      T
上升沿:     -     -      ↑      -      -     -      ↑
触发动作:   -     -     触发    -      -     -     触发

6.4 触发模式对比

特性 手动触发 自动触发
触发时机 用户点击按钮 条件满足时自动触发
适用场景 调试测试 长期监测、故障捕获
响应速度 依赖用户操作 实时响应(毫秒级)
可重复性 人工控制 可配置重复触发
配置要求 无需配置条件 需预先配置触发条件

6.5 配置示例

场景:电机过流时自动记录波形

Recorder配置:
  触发模式: 自动触发
  触发条件: 过流保护触发
  预触发时长: 100ms
  后触发时长: 1000ms

触发条件配置:
  名称: 过流保护触发
  监视变量: g_motorCurrent_U
  操作符: >
  阈值: 336.0

工作流程
1. 启动Recorder,选择"自动触发"模式
2. 选择"过流保护触发"条件
3. 触发配置自动下发到Slave端
4. Slave端实时监测 g_motorCurrent_U
5. 当电流 > 336A 时,自动启动记录
6. 记录完成后,数据上传到Master端显示


XCP Slave端触发功能

典型应用场景

场景1:过流保护(Master端配置,Slave端执行)

名称: 过流保护触发
监视变量: g_motorCurrent_U
操作符: >
阈值: 336.0
触发模式: 单次触发
触发动作: 
  - Slave端: 启动Recorder记录
  - Master端: 接收触发通知,显示波形

工作流程
1. Master端配置触发条件并下发到Slave
2. Slave端实时监测变量值
3. 当条件满足时,Slave自动触发Recorder
4. Slave通过XCP事件通知Master
5. Master端接收数据并显示波形

场景2:转速达标检测

名称: 转速达标触发
监视变量: g_motorSpeed
操作符: >=
阈值表达式: 2850  # 额定转速的95%
触发动作: 启动标定流程

场景3:温度异常报警(范围触发)

名称: 温度异常检测
监视变量: g_motorTemperature
操作符: out_of_range
范围下限: -20.0
范围上限: 120.0
触发动作: 记录报警日志

场景4:多条件组合(条件组)

名称: 电机过载检测
条件组逻辑: AND
条件组:
  - 条件1: g_motorCurrent_U > 336.0
  - 条件2: g_motorSpeed < 1000.0
触发动作: 故障录波

参数引用速查表

常用电机参数

参数路径 说明 典型用途
${MotorConfig.电机核心参数.额定功率} 额定功率 (kW) 功率计算、效率分析
${MotorConfig.电机核心参数.额定电压} 额定电压 (V) 电压异常检测
${MotorConfig.电机核心参数.额定电流} 额定电流 (A) 过流/欠流保护
${MotorConfig.电机核心参数.额定转速} 额定转速 (rpm) 超速/欠速保护
${MotorConfig.电机核心参数.极对数} 极对数 转速计算、Park变换
${MotorConfig.电机核心参数.磁链} 磁链 (Wb) 转矩计算
${MotorConfig.电机核心参数.额定效率} 额定效率 (%) 效率监测

动态参数(实时值)

参数路径 说明 绑定ELF变量
${MotorConfig.电机核心参数.实际转速} 实际转速 g_motorSpeed
${MotorConfig.电机核心参数.实际电流} 实际电流 g_motorCurrent
${MotorConfig.电机核心参数.实际转矩} 实际转矩 g_motorTorque

故障排除

常见问题

Q1: 触发条件不生效

检查项
1. 确认监视变量名正确(区分大小写)
2. 确认变量正在被采集(在Watch/Scope中可见)
3. 检查阈值表达式语法是否正确
4. 确认公式引擎已正确设置
5. Slave端:确认触发配置已正确下发
6. Slave端:确认触发已启用

Q2: 参数引用解析失败

检查项
1. 确认硬件配置已加载
2. 检查参数路径是否正确:${ConfigName.ComponentName.ParameterName}
3. 确认参数名称拼写正确
4. 查看错误日志获取详细信息
5. Slave端:确认变量地址已正确映射

Q3: 阈值计算错误

检查项
1. 确认表达式语法正确(如括号匹配)
2. 检查除零错误(如 ${Param} / 0
3. 确认使用的函数存在(如 sqrt, sin, cos
4. Slave端:确认表达式复杂度在支持范围内

Q4: Slave端触发不工作

检查项
1. 确认XCP连接正常
2. 检查触发配置下发是否成功
3. 验证配置是否正确
4. 确认触发已启用
5. 检查Slave端日志输出

Q5: 条件触发后没有录制数据

检查项
1. 确认Recorder已启动(状态为"录制中")
2. 检查Master端日志是否有 [Recorder] RTP上传完成 信息
3. 确认触发条件阈值设置合理(变量值确实能超过阈值)
4. 检查Slave端日志是否有 [TRIG] TRIGGERED! 信息
5. 如果Slave端不断触发但UI无数据,可能是RTP上传未完成,检查通信连接

Q6: 条件一直满足但只触发了一次

说明:这是正常行为。条件触发采用边沿触发机制,只有条件从假变真时才触发。条件持续为真不会重复触发。如果需要再次触发,需要条件先变为假再变为真。

最佳实践

1. 命名规范

  • 触发条件名称应清晰描述其用途
  • 使用中文或英文,保持一致性
  • 示例:过流保护_1.2倍额定电流Speed_Overrun_Detection

2. 阈值设置

  • 过流保护:建议设置为额定值的 1.1~1.5 倍
  • 超速保护:建议设置为额定值的 1.05~1.2 倍
  • 欠压保护:建议设置为额定值的 0.8~0.9 倍

3. 避免误触发

  • 对于波动较大的信号,可添加延时判断
  • 使用范围操作符(in_range)代替单一阈值
  • 考虑使用条件组增加判断条件

4. 主从协同配置

  1. 先在Master端配置并测试
    - 使用Master端触发功能验证条件逻辑
    - 确认表达式计算正确

  2. 再下发到Slave端
    - 下发触发配置
    - 验证配置是否正确

  3. 启用触发监测
    - 启用触发功能
    - 观察触发状态

  4. 调试技巧
    - 使用手动触发测试通信链路
    - 查看Slave端日志输出
    - 逐步验证每个条件

5. 文档记录

  • 为每个触发条件添加描述说明
  • 记录触发条件的用途和预期行为
  • 保存触发时的典型波形作为参考
  • 记录Slave端配置参数(如预/后触发点数)

相关文档


版本历史

版本 日期 更新内容
V1.3.0 2026-06-10 添加条件触发工作原理、边沿触发说明、故障排除Q5/Q6
V1.2.0 2026-04-14 添加Master端配置下发、条件组UI、工程资源树管理
V1.1.0 2026-03-17 添加XCP Slave端触发功能支持
V1.0.0 2026-03-03 初始版本,Master端触发功能

文档版本:V1.3
最后更新:2026-06-10
适用版本:EmeyeStudio V2.0+ / XCP Slave V1.0.0.0+