自定义协议方案 — 液相芯片 CAN 总线通信协议设计
来自「一些思考-2019」目录,是项目早期的协议方案设计草稿,定义了化学发光免疫分析仪(液相芯片平台)各下位机模块的 CAN 通信指令集。
一、协议设计原则
| 原则 | 说明 |
|---|
| 相同操作,指令码一致 | 不同模块的同类操作(如初始化、复位、自检)使用相同指令码 |
| 不同操作,指令码不同 | 不同功能操作在各模块中分配不同指令码 |
| 好处 | 只需根据指令码即可知道操作内容,也可以快速定位错误码 |
二、帧格式定义
命令帧结构(按字节 D0~D7):
| 字节 | 字段 | 含义 |
|---|
| D0 | 指令类型 | 大类区分:0x01初始化 / 0x02工作模式 / 0x03设置(单步) / 0x04查询 / 0x05测试 |
| D1 | 指令码 | 具体操作编号 |
| D2 | 参数1 | 依指令不同而定 |
| D3 | 参数2 | 依指令不同而定 |
| D4 | 参数3 | 依指令不同而定 |
| D5 | 参数4 | 依指令不同而定 |
| D6 | 参数5 | 依指令不同而定 |
| D7 | 参数6 | 依指令不同而定 |
指令命名规范: IMM_<模块缩写>_CAN_<版本>_<类型>_<序号>
- 示例:
IMM_SSM_CAN_01_01_01 = IMM 项目 / 样本供应模块(SSM) / CAN总线 / 版本01 / 类型01(初始化) / 序号01
模块号编码:
| 模块号 | 模块名称 | 缩写 |
|---|
| 0x01 | 样本供应模块 | SSM |
| 0x02 | TIP供应模块 | TSM |
| 0x03 | 样本针 | - |
三、样本供应模块(SSM,模块号 0x01)
3.1 初始化(指令类型 0x01)
| 指令码 | 操作 | 命名 | DLN | 参数 |
|---|
| 0x01 | 开机握手 | IMM_SSM_CAN_01_01_01 | 2 | - |
| 0x02 | 复位 | IMM_SSM_CAN_01_01_02 | 2 | - |
| 0x03 | 自检 | IMM_SSM_CAN_01_01_03 | 2 | - |
3.2 工作模式(指令类型 0x02)
| 指令码 | 操作 | 命名 | DLN | 参数1 |
|---|
| 0x01 | 取样本架 | IMM_SSM_CAN_01_02_01 | 3 | 样本位X(1~6) |
| 0x02 | 推样本至取样位 | IMM_SSM_CAN_01_02_02 | 3 | 样本位Y(1~10) |
| 0x03 | 放回样本架 | IMM_SSM_CAN_01_02_03 | 3 | 样本位X(1~6) |
| 0x04 | 样本条码扫描(全扫) | - | - | - |
3.3 设置/单步(指令类型 0x03)
X 电机(拖钩X方向):
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x01 | X电机归零 | 2 | - |
| 0x02 | X电机走位 | 4 | 方向 + 步数高位 + 步数低位 |
| 0x03 | X电机走位至样本架位 | 3 | 公共槽(0)/样本位X(1~12) |
| 0x04 | 设置X电机速度 | 3 | 电机速度 |
Y 电机(拖钩Y方向):
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x11 | Y电机归零 | 2 | - |
| 0x12 | Y电机走位 | 4 | 步数高位 + 步数低位 |
| 0x13 | Y电机走位至公共槽样本位 | 3 | 样本位Y(1~5) |
| 0x14 | 设置Y电机速度 | 3 | 电机速度 |
其他:
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x31 | 设置拖钩电磁铁 | 3 | 开关(1/0) |
| 0x41 | 设置条码扫描枪 | 3 | 开关(1/0) |
3.4 查询(指令类型 0x04)
| 指令码 | 操作 | 命名 |
|---|
| 0x01 | 查询条码扫描信息 | IMM_SSM_CAN_01_04_01 |
| 0x02 | 查询样本车状态 | IMM_SSM_CAN_01_04_02 |
3.5 测试(指令类型 0x05)
预留3条测试指令(0x01/0x02/0x03)。
四、TIP供应模块(TSM,模块号 0x02)
4.1 初始化(指令类型 0x01)
| 指令码 | 操作 | 命名 |
|---|
| 0x01 | 开机握手 | IMM_TSM_CAN_01_01_01 |
| 0x02 | 复位 | IMM_TSM_CAN_01_01_02 |
| 0x03 | 自检 | IMM_TSM_CAN_01_01_03 |
4.2 工作模式(指令类型 0x02)
| 指令码 | 操作 | 命名 | DLN | 参数1 |
|---|
| 0x01 | TIP架运输车取TIP架 | IMM_TSM_CAN_01_02_01 | 2 | - |
| 0x02 | TIP架运输车推TIP至取TIP位 | IMM_TSM_CAN_01_02_02 | 3 | TIP位Y(1~7) |
| 0x03 | TIP架运输车放回TIP架 | IMM_TSM_CAN_01_02_03 | 2 | - |
| 0x04 | TIP架电梯下TIP架 | IMM_TSM_CAN_01_02_04 | 2 | - |
| 0x05 | TIP架电梯上TIP架 | IMM_TSM_CAN_01_02_05 | 2 | - |
4.3 单步/设置(指令类型 0x03)
X 电机(TIP架拖钩X方向):
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x01 | X电机归零 | 2 | - |
| 0x02 | X电机走位 | 5 | 方向 + 步数高位 + 步数低位 |
| 0x03 | X电机走位至TIP架位 | 3 | TIP位X(0-3) |
| 0x04 | 设置X电机速度 | 3 | 电机速度 |
Y 电机(TIP架拖钩Y方向):
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x11 | Y电机归零 | 2 | - |
| 0x12 | Y电机走位 | 5 | 方向 + 步数高位 + 步数低位 |
| 0x13 | Y电机走位至公共槽TIP位 | 3 | TIP位Y(1~6) |
| 0x14 | 设置Y电机速度 | 3 | 电机速度 |
其他:
4.4 查询(指令类型 0x04)
| 指令码 | 操作 | 命名 |
|---|
| 0x01 | 查询TIP车状态 | IMM_TSM_CAN_01_04_01 |
4.5 测试(指令类型 0x05)
预留3条测试指令。
五、样本针模块(模块号 0x03)
5.1 初始化(指令类型 0x01)
| 指令码 | 操作 | DLN |
|---|
| 0x01 | 开机握手 | 2 |
| 0x02 | 复位/ADP复位 | 2 |
| 0x03 | 自检 | 2 |
5.2 工作模式(指令类型 0x02)
| 指令码 | 操作 | DLN | 参数1 |
|---|
| 0x01 | 取TIP头 | 2 | 1~5 |
| 0x02 | 取样 | 2 | 1~6 |
| 0x03 | 加样 | 2 | 1~5 |
| 0x04 | 抛TIP头 | 2 | - |
| 0x05 | 取反应杯 | - | 1~5 |
| 0x06 | 加杯 | 2 | - |
| 0x07 | 复位/ADP复位 | - | - |
| 0x08 | X复位 | - | - |
5.3 调试/单步(指令类型 0x03)
X 电机:
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x01 | X电机归零 | 2 | - |
| 0x02 | X电机走位 | 4 | 方向 + 步数高位 + 步数低位 |
| 0x04 | 设置X电机速度 | 3 | 电机速度 |
Z1 电机:
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x21 | Z1电机归零 | 2 | - |
| 0x22 | Z1电机走位 | 4 | 方向 + 步数高位 + 步数低位 |
| 0x24 | 设置Z1电机速度 | 3 | 电机速度 |
Z2 电机:
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x07 | Z2电机归零 | 2 | - |
| 0x08 | Z2电机走位 | 4 | 步数高位 + 步数低位 |
| 0x09 | 设置Z2电机速度 | 3 | 电机速度 |
ADP(采样泵/注射泵):
| 指令码 | 操作 | DLN | 参数 |
|---|
| 0x10 | ADP初始化 | - | - |
| 0x11 | ADP检测TIP头 | 2 | - |
| 0x12 | ADP抛TIP头 | 2 | - |
| 0x13 | ADP吸样 | 3 | 取液量 |
| 0x14 | ADP吐样 | 3 | 吐液量 |
5.4 查询(指令类型 0x04)
预留查询指令。
5.5 测试(指令类型 0x05)
预留测试指令。
六、设计要点总结
- 分层指令编码:5种指令类型(初始化/工作模式/设置单步/查询/测试)+ 各模块独立指令码,扩展性好
- 统一指令语义:各模块同类操作(握手/复位/自检)指令码相同,降低学习成本
- 电机控制编码规律:X电机占 0x01-0x0F,Y电机占 0x11-0x1F,Z电机占 0x21-0x2F,电磁铁/外设占 0x31+,编码空间分配整齐
- DLN(数据长度):指令帧长度不固定,2~5字节数据,依指令而定
- 参数设计:电机走位类指令统一采用「方向 + 步数高位 + 步数低位」三参数模式
- 适用项目:从命名
IMM_(Immunoassay,免疫分析)和样本供应/TIP供应/样本针三大模块判断,为化学发光免疫分析仪项目
七、与其他协议的关联