# 合成教学配置；请连同配套输入使用，数值仅用于复现本例。
config_version: 4                        # 声明分析文件采用的字段结构版本；当前填写整数4
dataset:                                 # 设置本次分析名称及可选的对象、会话和时间范围
  domain:                                # 限定本次分析请求的起止时间；应与来源采用相同时间基准
    end: 3s                              # 设置分析终点；连续时长不包含该端点，按希望分析的范围填写
    start: 0s                            # 设置分析起点，包含该时刻；按希望分析的范围填写
  name: messages                         # 命名本次分析数据集；名称写入结果身份字段
sources:                                 # 列出输入来源；每项规定数据位置、格式和时间解释方式
  - dbc_by_channel:                      # 为每个CAN通道指定解码用DBC文件；键是通道编号的字符串
      '1': data/message-direction.dbc    # 为这个通道指定DBC文件；路径相对当前配置文件，通道键须为字符串
    paths: data/message-direction.asc    # 选择输入文件、连续分卷列表或目录；相对路径基于本配置，目录按自然序读取
signals:                                 # 把输入字段定义为有名称、类型、单位和有效期的分析信号
  - dtype: float64                       # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    field:                               # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                      # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Power                      # 填写DBC中的信号名称，大小写须一致
    name: power                          # 给分析信号取名称；后续表达式和计算通过此名称引用它
    period: 100ms                        # 声明本信号正常更新周期；从设备/采集规范取得，省略valid_for时按其3倍确定有效期
    unit: W                              # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
  - dtype: int64                         # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    field:                               # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                      # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Direction                  # 填写DBC中的信号名称，大小写须一致
    name: direction                      # 给分析信号取名称；后续表达式和计算通过此名称引用它
    period: 100ms                        # 声明本信号正常更新周期；从设备/采集规范取得，省略valid_for时按其3倍确定有效期
    unit: '1'                            # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
message_calculations:                    # 按每条目标CAN报文计算贡献再累计；与按实际时间积分分别配置
  - parameters:                          # 定义逐消息公式使用的固定参数；名称由公式引用，值来自采集/业务规范
      period:                            # 提供名为period的公式参数；在本例表示每条消息计入的时间
        unit: s                          # 声明该公式参数的单位；本例s表示秒
        value: 0.1                       # 填写每条消息代表的时间数值；从消息周期或业务规则取得
    expr: power * period                 # 定义单条目标消息的贡献；使用该报文信号和parameters常量
    name: positive_energy                # 为逐消息累计结果取唯一名称；用于识别对应结果行
    profile: can-text-v1                 # 选择逐消息求值规则；本例使用文本CAN适配层解码的当前报文值；本例来源须采用该路径
    unit: J                              # 声明累计结果的单位；须与表达式量纲相符
    update_message:                      # 指定触发一次求值的目标报文；通道和ID从日志/DBC取得
      frame_id: 256                      # 指定每到一条便求值的报文ID；从DBC取得
    split_by_sign:                       # 按同一报文中的方向信号分组累计；省略时不区分方向
      bucket: positive                   # 选择方向组；positive只接收方向原值大于0，negative只接收小于0
      signal: direction                  # 选择用于判断方向的原信号名；必须已绑定到同一目标报文
      value_policy: raw_decoded-v1       # 选择方向值的处理阶段；raw_decoded-v1使用DBC解码后的原值，不再额外换算
  - parameters:                          # 定义逐消息公式使用的固定参数；名称由公式引用，值来自采集/业务规范
      period:                            # 提供名为period的公式参数；在本例表示每条消息计入的时间
        unit: s                          # 声明该公式参数的单位；本例s表示秒
        value: 0.1                       # 填写每条消息代表的时间数值；从消息周期或业务规则取得
    expr: power * period                 # 定义单条目标消息的贡献；使用该报文信号和parameters常量
    name: negative_energy                # 为逐消息累计结果取唯一名称；用于识别对应结果行
    profile: can-text-v1                 # 选择逐消息求值规则；本例使用文本CAN适配层解码的当前报文值；本例来源须采用该路径
    unit: J                              # 声明累计结果的单位；须与表达式量纲相符
    update_message:                      # 指定触发一次求值的目标报文；通道和ID从日志/DBC取得
      frame_id: 256                      # 指定每到一条便求值的报文ID；从DBC取得
    split_by_sign:                       # 按同一报文中的方向信号分组累计；省略时不区分方向
      bucket: negative                   # 选择方向组；positive只接收方向原值大于0，negative只接收小于0
      signal: direction                  # 选择用于判断方向的原信号名；必须已绑定到同一目标报文
      value_policy: raw_decoded-v1       # 选择方向值的处理阶段；raw_decoded-v1使用DBC解码后的原值，不再额外换算
outputs:                                 # 选择额外导出的数据及格式；默认结果表由运行入口提供
  contributions: full                    # 选择是否导出每次贡献明细；用于检查逐消息求值及跳过原因
execution:                               # 设置本次分析的并行处理方式
  process_count: 4                       # 最多4个文件工作进程；实际并行数不超过输入文件数
