基于模块化的系统通讯架构方案(15.8.11)

上周与阳同学聊天,了解一种基于模块化的系统通讯架构方案.其主要特点为模块化程度高.配置程度适中.


概述
系统分为一个上位机,一个中位机和多个下位机.上位机负责应用逻辑,中位机负责衔接调度,下位机负责硬件控制.
总述,IVD从模块角度看,模块种类较为固定,主要包含光路,液路,加液模块,孵育模块等.

底层模块化设计原则
关于自下而上的设计思路,所谓高楼平地起,地基是系统的核心,在整个仪器中,底层硬件作为整个系统控制的基础(硬件是基础的基础,但应当和系统控制部分分离),先由需求确定模块方案,之后提取模块的共同点,之后确定模块化的方案.
在设计通用板卡时,根据功能不同可以划分成不同的通用板卡,而不是同一种,比如加液和电机控制的模块,和单独电机控制的模块应当却分.

底层模块化设计方案
模块化意味着模块具有一定的独立功能,仅对外提供接口,同软件开发中的模块.因此模块应当包括初始化操作及检查,内部故障识别与报警,向上提供调用接口.
1 初始化操作及检查
初始化操作及检查的两种触发方式:
 - 第一次上电时
 - 通过接口下发执行初始化操作及检查,
建议第二种方案,第一种方案发现故障后无法立刻通知上位系统,因此可以设计一个硬件标识,返回一个初始化命令前不接受任何其他命令的错误.初始化动作方面应当包括电机的复位或特殊位置运动,光耦检查,子板卡通讯检查.以备上上方调用.
2 内部故障识别与报警
如果把模块内的参数传递到外部,由外部分析模块内的故障,这与软件中的耦合极为相似.出现故障需要跨模块进行排查.高耦合意味着低维护性.因此模块内的故障应当由模块内进行识别,甚至包括保护动作(如撞针后复位).
3 向上提供调用接口.
模块首先需要有一个标识.使中位机能够转发指令,而作为接口的指令可以是单元动作,更好的是宏动作.
  - 单元动作即为电机,电磁阀控制直接控制动作.
  - 宏动作即为一个组合动作.如果采用宏动作方式最好可以支持配置功能.
动作执行后应当包括执行成功或失败的回复.包含模块内部标识的错误信息.

中位机设计
中位机作为系统的中转及调度尤为重要,中位机包括系统周期控制,调度算法,
1. 系统周期控制
常规的仪器都有周期概念.系统将任务拆分至周期中,逐周期执行.因此每个系统周都包含一个周期列表,按照周期列表顺序执行.
周期列表中的周期单元包含该周期需要执行的所有模块标识,动作标识及参数,中位机在周期时刻通过底层模块接口下发任务.
2. 调度算法(YHLO,SH,UNION)
调度算法是指申请新任务后,将新任务依照"不冲突原则"插入现有的周期列表中.向上提供接口,在上位机接收到用户的测试申请后,直接将任务下发,由中位机进行排序,维护周期列表.
调度算法也可以在上位机执行,但需要增加每个周期的通讯控制.
 * 不冲突原则即为同一个周期内允许执行的动作范围.如超过范围则应当推迟到下一个周期在此检查.
 * 关于急诊,如果调度算法支持插入,则支持急诊(SH).否则不支持(UNION).

模块故障报警机制
报警机制应当包括故障级别划分,故障识别,故障报警,故障自处理.故障系统处理.
1. 故障级别
故障级别作为外部接口的一部分,用于向上传达故障程度.故障程度一般可以划分为(Ci300),
 - 停止级,发生严重故障,该模块无法继续执行.如撞针,电机运动卡阻等.
 - 暂停级,发生可接受的意外,如移液过程发现试剂不足.
 - 提示级,识别可能故障前提示,如耗材不足,温度超出范围等.
2. 故障识别
根据模块设计需求,识别各种机械,硬件等故障.这部分通常除硬件及程序外,还需要硬件支持.
3. 故障报警
上报报警信息,硬件模块标识.
4. 故障自处理
即为在发生故障后,模块自身需要执行的动作.
- 在Ci300中,由于采用了配置方案,故障的处理程序采用可配置方式预下载.
5. 故障系统处理
向上传达故障信息后,上方将根据系统设计流程执行故障的系统处理流程.如加试剂失败后,该位置的容器将被丢弃.

 
 
 
当前的系统中加样及两种试剂分为三个模块,孵育盘为一个模块,抓手为一个模块,理杯为一个模块.而所有板卡为同一板卡.
 
关于创新思维,经验非常重要,但固化的经验只能说是抄袭,不会创新和变化,长久的说,这意味着低下的竞争力.淘汰只是时间问题.
posted @ 2017-08-25 13:34  sunlyk  阅读(535)  评论(0编辑  收藏  举报