触发条件功能使用指南
概述
触发条件功能允许您配置自动化的数据采集触发规则。当监视的变量满足指定条件时,系统会自动执行预设的动作(如启动录波、记录数据等)。
支持平台:
- ✅ 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 条件触发工作原理
条件触发采用边沿触发机制,仅在条件从假变真(上升沿)时触发录制,条件持续为真不会重复触发。
触发流程:
- 启动Recorder后,触发配置自动下发到Slave端
- Slave端在每个采样周期评估触发条件
- 当条件从假变真时(上升沿),自动触发录制
- 录制完成后数据自动上传到Master端
- Master端自动保存录制数据
- 录制周期结束后,恢复等待下一次触发
重要规则:
- 条件持续为真时不会重复触发,只有新的上升沿才会触发
- 录制过程中(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. 主从协同配置
-
先在Master端配置并测试
- 使用Master端触发功能验证条件逻辑
- 确认表达式计算正确 -
再下发到Slave端
- 下发触发配置
- 验证配置是否正确 -
启用触发监测
- 启用触发功能
- 观察触发状态 -
调试技巧
- 使用手动触发测试通信链路
- 查看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+