4. MOTIX参数体系与存储结构

在MOTIX电机控制方案中,参数并不是散落在代码里的常量,而是一套有分类、有分区、有版本约束的“数据体系”。理解这套体系,是后续标定、量产烧录和售后维护的基础。本节围绕参数分类、参数表结构、默认值、用户区与工厂区、参数版本与兼容性管理五个方面展开。

4.1 参数分类:四类参数各司其职

MOTIX的参数通常按“谁定义、谁修改、何时生效”划分为四类:

  • 电机参数:描述被控电机本体的物理特性,如定子电阻 Rs、交直轴电感 Ld/Lq、反电动势常数 Ke、极对数 PolePairs、转动惯量 J。这类参数由电机决定,标定前必须准确录入,否则电流环和速度环的增益再准也无意义。
  • 控制参数:决定控制算法行为的量,如电流环 Kp/Ki、速度环 Kp/Ki、PWM 载波频率、死区时间、弱磁阈值、启动斜坡时间。它们与电机参数共同决定动态响应。
  • 保护参数:用于故障检测与限值,如过流阈值、过压/欠压阈值、过温阈值、堵转判定时间、失速转速门限。保护参数通常有“警告”和“故障”两级。
  • 系统参数:与具体电机无关、与整机运行环境相关的配置,如通信节点 ID、CAN 波特率、传感器类型(霍尔/编码器/无感)、控制模式、参数版本号。

分类的意义在于:电机参数和控制参数属于“标定对象”,保护参数属于“安全边界”,系统参数属于“运行环境”。标定时应遵循“先系统、再电机、后控制、最后保护”的顺序,避免因环境配置错误导致标定结果不可用。

4.2 参数表结构与默认值

MOTIX的参数表通常以结构体数组或参数描述表的形式组织。每个参数条目至少包含:参数 ID、名称、数据类型、单位、最小值、最大值、默认值、当前值、所属分区、访问权限。下面是一个教学示例(非实测数据):

typedef struct {
    uint16_t id;          // 参数ID,如 0x0101
    const char *name;     // "Rs"
    uint8_t  type;        // FLOAT / UINT16 / INT16
    float    unit_scale;  // 单位换算系数
    float    min_val;     // 最小值
    float    max_val;     // 最大值
    float    default_val; // 默认值
    float    current_val; // 当前值
    uint8_t  zone;        // FACTORY / USER
    uint8_t  access;      // RO / RW
} MotixParam_t;

默认值的作用是“可运行的下限”。出厂时,参数表被写入一组保守默认值,保证电机在未标定状态下也能低速、小电流试运行,而不会立即触发过流或失速。例如,电流环 Kp 默认值可能偏小,速度环默认值可能偏慢,保护阈值可能偏保守。标定的本质,就是在默认值基础上,根据实际电机和负载逐步逼近更优值。

4.3 用户区与工厂区

MOTIX通常把非易失存储划分为两个逻辑区:

  • 工厂区(Factory Zone):存放电机参数、出厂标定结果、保护阈值、系统配置。该区在产线烧录后一般只读,或需要特定解锁序列才能写入。工厂区是“设备身份”的一部分,售后不应随意修改。
  • 用户区(User Zone):存放用户可调的控制参数、运行模式、通信地址等。用户区允许通过上位机或通信接口反复写入,掉电保存。

这种分区的工程价值在于:当用户误改参数导致异常时,可以只恢复用户区默认值,而不影响工厂区的电机标定数据。反之,如果工厂区被破坏,则必须重新执行电机参数辨识和标定流程。

MOTIX 参数体系与存储分区 参数分类 电机参数 Rs/Ld/Lq/Ke 控制参数 Kp/Ki/载波 保护参数 过流/过压/过温 系统参数 节点ID/模式 参数表条目结构 ID 名称 类型/单位 min/max 默认值 当前值 分区 访问权限 0x0101 Rs FLOAT/Ω 0.01~5.0 0.50 0.48 FACTORY RO 0x0201 Kp_i FLOAT/- 0~10 非易失存储分区 工厂区 Factory 电机参数/标定值/保护阈值 用户区 User 控制参数/模式/通信地址 参数版本与兼容性管理 版本号 Vx.y.z 主版本.次版本.修订 不兼容变更 参数ID/单位/范围改变 兼容变更 新增参数/默认值调整 校验 CRC/签名 升级策略:主版本不兼容需重新标定;次版本兼容可保留用户区;修订版仅修复默认值 上电流程:读取版本号 → 校验CRC → 判断兼容性 → 加载工厂区 → 叠加用户区 → 运行

4.4 参数版本与兼容性管理

参数表不是一成不变的。随着固件迭代,参数可能新增、删除、改变单位或调整取值范围。因此,MOTIX参数体系必须引入版本管理。通常做法是:在参数区头部存放一个版本号(如 V2.3.1)和一段 CRC 校验值。上电时,固件先读取版本号,与自身支持的版本范围比对,再决定是否加载。

版本号建议采用“主版本.次版本.修订号”三段式:

  • 主版本:参数 ID、单位、物理含义发生不兼容变化时递增。例如 Rs 从 mΩ 改为 Ω,或参数 ID 重新编排。此时旧参数表不能直接用于新固件,必须重新标定。
  • 次版本:新增参数或删除不影响安全运行的参数时递增。旧用户区数据可以保留,新参数取默认值。
  • 修订号:仅修正默认值、注释或描述,不改变结构和含义。可直接沿用旧数据。

实际工程中,建议在参数表结构体中增加 version 和 crc32 字段,并在写入用户区时同步更新。上位机在连接设备后,应先读取版本号,再决定是否允许“一键恢复默认值”或“导入旧参数文件”。如果版本不匹配,应给出明确提示,而不是静默写入。

标定前先确认参数版本与固件版本匹配;跨主版本升级后,工厂区电机参数必须重新辨识,用户区控制参数建议重新整定。
不要用旧版本的用户区参数文件直接覆盖新固件设备。参数 ID 偏移或单位变化可能导致保护阈值被错误放大,从而失去保护作用。

总结来看,MOTIX参数体系的核心逻辑是:分类决定“改什么”,参数表结构决定“怎么存”,默认值决定“起步点”,用户区与工厂区决定“谁能改”,版本与兼容性决定“能不能沿用”。把这五件事理清,后续的标定操作才有稳定的数据基础。