# 合成教学配置；请连同配套输入使用，数值仅用于复现本例。
config_version: 4                    # 声明分析文件采用的字段结构版本；当前填写整数4
dataset:                             # 设置本次分析名称及可选的对象、会话和时间范围
  name: timing                       # 命名本次分析数据集；名称写入结果身份字段
sources:                             # 列出输入来源；每项规定数据位置、格式和时间解释方式
  - dbc_by_channel:                  # 为每个CAN通道指定解码用DBC文件；键是通道编号的字符串
      '1': data/timing.dbc           # 为这个通道指定DBC文件；路径相对当前配置文件，通道键须为字符串
    paths: data/timing.asc           # 选择输入文件、连续分卷列表或目录；相对路径基于本配置，目录按自然序读取
signals:                             # 把输入字段定义为有名称、类型、单位和有效期的分析信号
  - name: request                    # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                  # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Request                # 填写DBC中的信号名称，大小写须一致
    dtype: bool                      # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    unit: '1'                        # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
    valid_for: 10s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
    choices:                         # 把输入状态代码转成分析值；每项是[输入代码,结果值]，代码查设备规范
      - [0, false]
      - [1, true]
  - name: response                   # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                  # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Response               # 填写DBC中的信号名称，大小写须一致
    dtype: bool                      # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    unit: '1'                        # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
    valid_for: 10s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
    choices:                         # 把输入状态代码转成分析值；每项是[输入代码,结果值]，代码查设备规范
      - [0, false]
      - [1, true]
  - name: temperature                # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                  # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Temperature            # 填写DBC中的信号名称，大小写须一致
    dtype: float64                   # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    unit: degC                       # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
    valid_for: 10s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
  - name: voltage                    # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                           # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                  # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Voltage                # 填写DBC中的信号名称，大小写须一致
    dtype: float64                   # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    unit: V                          # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
    valid_for: 10s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
rules:                               # 列出识别活动或瞬间变化的规则；每项产生有独立ID的事件
  - name: request_edge               # 为规则取唯一名称；窗口rule和计算scope通过此名选择它的事件
    rule_type: rising_edge           # 选择活动或变化识别算法；本例condition由false变为true时产生瞬时事件
    condition: request               # 填写由已定义信号组成的真假条件；按要检测的业务情况设置
  - name: response_edge              # 为规则取唯一名称；窗口rule和计算scope通过此名选择它的事件
    rule_type: rising_edge           # 选择活动或变化识别算法；本例condition由false变为true时产生瞬时事件
    condition: response              # 填写由已定义信号组成的真假条件；按要检测的业务情况设置
  - name: hot                        # 为规则取唯一名称；窗口rule和计算scope通过此名选择它的事件
    rule_type: condition_duration    # 选择活动或变化识别算法；本例条件连续成立达到minimum_duration后确认活动
    condition: temperature >= 80     # 填写由已定义信号组成的真假条件；按要检测的业务情况设置
    duration_comparison: ">="        # 达到门槛即满足；要求严格超过时填>
    minimum_duration: 1.5s           # 设置条件连续成立多久才确认活动；时长阈值由业务要求决定
  - name: change                     # 为规则取唯一名称；窗口rule和计算scope通过此名选择它的事件
    rule_type: window_delta          # 选择活动或变化识别算法；本例检查向前窗口内的变化幅度、方向及配置的单调性要求
    signal: voltage                  # 选择用于变化量判断的分析信号；填写上方signals中的名称
    window: 4s                       # 设置向前比较变化量的时间窗口长度；依据业务变化尺度填写
    direction: rise                  # 选择变化方向；rise检测上升，fall检测下降，any检测任一方向的幅度
    threshold: 5                     # 设置触发变化的幅度门槛；数值单位与所选信号一致
    emit_initial: true               # 控制初始已为真时是否发出初始事件；true发出，false等待实际变化
sequences:                           # 把请求事件与响应事件按允许等待时间配对
  - name: pair                       # 为请求响应配对取唯一名称；结果通过此名区分配对任务
    start: request_edge              # 选择请求事件规则；填写前面rules的name
    response: response_edge          # 选择响应事件规则；填写前面rules的name
    min_delay: 0s                    # 设置响应的最小允许延迟；依据协议或业务要求填写，包含边界
    max_delay: 3s                    # 设置响应的最大允许延迟；依据协议或业务要求填写，不能小于min_delay
calculations:                        # 列出希望获得的统计或积分结果，每项独立选择范围和算法
  - name: hot_duration               # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: duration              # 选择计算方法；本例累计条件已知为true的秒数
    condition: temperature >= 80     # 限定参与计算的时间或样本；使用已有信号写真假表达式
intervals:                           # 选择时间计算使用实际间隔还是指定周期；不修改原记录时间
  default:                           # 设置未单独覆盖的计算节点采用的时间间隔依据
    mode: dbc                        # 选择actual实际时间差、fixed固定周期或dbc报文周期
    driver: request                  # 选择提供周期和更新计数的信号；填写已有signals名称
execution:                           # 设置本次分析的并行处理方式
  process_count: 4                   # 最多4个文件工作进程；实际并行数不超过输入文件数
