自定义协议方案 — 液相芯片 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
0x02TIP供应模块TSM
0x03样本针-

三、样本供应模块(SSM,模块号 0x01)

3.1 初始化(指令类型 0x01)

指令码操作命名DLN参数
0x01开机握手IMM_SSM_CAN_01_01_012-
0x02复位IMM_SSM_CAN_01_01_022-
0x03自检IMM_SSM_CAN_01_01_032-

3.2 工作模式(指令类型 0x02)

指令码操作命名DLN参数1
0x01取样本架IMM_SSM_CAN_01_02_013样本位X(1~6)
0x02推样本至取样位IMM_SSM_CAN_01_02_023样本位Y(1~10)
0x03放回样本架IMM_SSM_CAN_01_02_033样本位X(1~6)
0x04样本条码扫描(全扫)---

3.3 设置/单步(指令类型 0x03)

X 电机(拖钩X方向):

指令码操作DLN参数
0x01X电机归零2-
0x02X电机走位4方向 + 步数高位 + 步数低位
0x03X电机走位至样本架位3公共槽(0)/样本位X(1~12)
0x04设置X电机速度3电机速度

Y 电机(拖钩Y方向):

指令码操作DLN参数
0x11Y电机归零2-
0x12Y电机走位4步数高位 + 步数低位
0x13Y电机走位至公共槽样本位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
0x01TIP架运输车取TIP架IMM_TSM_CAN_01_02_012-
0x02TIP架运输车推TIP至取TIP位IMM_TSM_CAN_01_02_023TIP位Y(1~7)
0x03TIP架运输车放回TIP架IMM_TSM_CAN_01_02_032-
0x04TIP架电梯下TIP架IMM_TSM_CAN_01_02_042-
0x05TIP架电梯上TIP架IMM_TSM_CAN_01_02_052-

4.3 单步/设置(指令类型 0x03)

X 电机(TIP架拖钩X方向):

指令码操作DLN参数
0x01X电机归零2-
0x02X电机走位5方向 + 步数高位 + 步数低位
0x03X电机走位至TIP架位3TIP位X(0-3)
0x04设置X电机速度3电机速度

Y 电机(TIP架拖钩Y方向):

指令码操作DLN参数
0x11Y电机归零2-
0x12Y电机走位5方向 + 步数高位 + 步数低位
0x13Y电机走位至公共槽TIP位3TIP位Y(1~6)
0x14设置Y电机速度3电机速度

其他:

指令码操作DLN
0x31设置拖钩电磁铁2

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头21~5
0x02取样21~6
0x03加样21~5
0x04抛TIP头2-
0x05取反应杯-1~5
0x06加杯2-
0x07复位/ADP复位--
0x08X复位--

5.3 调试/单步(指令类型 0x03)

X 电机:

指令码操作DLN参数
0x01X电机归零2-
0x02X电机走位4方向 + 步数高位 + 步数低位
0x04设置X电机速度3电机速度

Z1 电机:

指令码操作DLN参数
0x21Z1电机归零2-
0x22Z1电机走位4方向 + 步数高位 + 步数低位
0x24设置Z1电机速度3电机速度

Z2 电机:

指令码操作DLN参数
0x07Z2电机归零2-
0x08Z2电机走位4步数高位 + 步数低位
0x09设置Z2电机速度3电机速度

ADP(采样泵/注射泵):

指令码操作DLN参数
0x10ADP初始化--
0x11ADP检测TIP头2-
0x12ADP抛TIP头2-
0x13ADP吸样3取液量
0x14ADP吐样3吐液量

5.4 查询(指令类型 0x04)

预留查询指令。

5.5 测试(指令类型 0x05)

预留测试指令。


六、设计要点总结

  1. 分层指令编码:5种指令类型(初始化/工作模式/设置单步/查询/测试)+ 各模块独立指令码,扩展性好
  2. 统一指令语义:各模块同类操作(握手/复位/自检)指令码相同,降低学习成本
  3. 电机控制编码规律:X电机占 0x01-0x0F,Y电机占 0x11-0x1F,Z电机占 0x21-0x2F,电磁铁/外设占 0x31+,编码空间分配整齐
  4. DLN(数据长度):指令帧长度不固定,2~5字节数据,依指令而定
  5. 参数设计:电机走位类指令统一采用「方向 + 步数高位 + 步数低位」三参数模式
  6. 适用项目:从命名 IMM_(Immunoassay,免疫分析)和样本供应/TIP供应/样本针三大模块判断,为化学发光免疫分析仪项目

七、与其他协议的关联