# 合成教学配置；请连同配套输入使用，数值仅用于复现本例。
config_version: 4                   # 声明分析文件采用的字段结构版本；当前填写整数4
dataset:                            # 设置本次分析名称及可选的对象、会话和时间范围
  name: can_asc_example             # 命名本次分析数据集；名称写入结果身份字段
sources:                            # 列出输入来源；每项规定数据位置、格式和时间解释方式
  - name: bus                       # 给本来源取计划内唯一名称；下方signals.source引用这个名称
    dbc_by_channel:                 # 为每个CAN通道指定解码用DBC文件；键是通道编号的字符串
      '1': data/joint.dbc           # 为这个通道指定DBC文件；路径相对当前配置文件，通道键须为字符串
    time:                           # 说明输入时间数值的类型、单位、共同起点和校准偏移
      clock: synthetic_clock        # 命名相对时间的共同起点；来自同步依据，同名不会自动校时
    paths: data/joint.asc           # 选择输入文件、连续分卷列表或目录；相对路径基于本配置，目录按自然序读取
  - name: meter                     # 给本来源取计划内唯一名称；下方signals.source引用这个名称
    source_type: signal_csv         # 选择数据格式；memory内存记录、signal_csv物理量表、can_blf/can_asc/raw_can_csv原始CAN
    path: data/joint-current.csv    # 指定单个输入文件；相对路径从本配置文件所在目录计算
    time_column: time               # 填写CSV时间列的实际表头，大小写和文件一致
    time:                           # 说明输入时间数值的类型、单位、共同起点和校准偏移
      unit: s                       # 声明输入时间数值的单位；根据文件说明填写s/ms/us/ns等受支持单位
      clock: synthetic_clock        # 命名相对时间的共同起点；来自同步依据，同名不会自动校时
signals:                            # 把输入字段定义为有名称、类型、单位和有效期的分析信号
  - name: voltage                   # 给分析信号取名称；后续表达式和计算通过此名称引用它
    source: bus                     # 选择已定义的来源name；填写上方sources中的名称，不是文件路径
    field:                          # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      channel: 1                    # 选择信号所在的CAN通道；从日志通道记录取得
      signal: Voltage               # 填写DBC中的信号名称，大小写须一致
      frame_id: 256                 # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
    dtype: float64                  # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    unit: V                         # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
    valid_for: 10s                  # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
  - name: current                   # 给分析信号取名称；后续表达式和计算通过此名称引用它
    source: meter                   # 选择已定义的来源name；填写上方sources中的名称，不是文件路径
    field: current                  # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
    dtype: float64                  # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    unit: A                         # 声明分析值的单位；按物理含义填写，无量纲用字符串"1"；按已登记的兼容单位换算数值
    valid_for: 2s                   # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
derived:                            # 用已定义信号的表达式生成新信号；先定义再在后续功能中引用
  power:                            # 定义名为power的派生信号，后面的计算通过此名称引用
    expr: voltage * current         # 规定派生值如何由已有信号计算；名称必须先在signals或前面的derived中定义
    unit: W                         # 声明表达式计算结果的单位；依据公式与输入单位取得
calculations:                       # 列出希望获得的统计或积分结果，每项独立选择范围和算法
  - name: energy                    # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: integral             # 选择计算方法；本例将有效数值乘持续时间后累计，例如功率乘秒得到能量
    expr: power                     # 指定参与计算的数值或信号表达式；引用前面已定义的信号
execution:                          # 设置本次分析的并行处理方式
  process_count: 1                  # 本例为CSV、内存或多来源会话，当前仅支持单进程
