动态调度引擎

诊断自动化设备或者实验室自动化设备,一般包含多个硬件模块,而且检测流程比较复杂,为了提高检测的速度,很多应用都采用了并行操作的方式,比如ELISA操作,一块板孵育时候,另外一块板可以进行加样,不过由于检测步骤对时间的严格限制,如果在开发过程中将并行方式和操作步骤固化在应用开发,会导致程序复杂难以维护、后期升级、对设备进行修改或者增加新的检测项目,因此,很多自动化设备公司为了解决这个问题,都有自己的动态调度引擎,比如Hamilton的Dynamic Scheduler,通过这种引擎,可以很方便的对实验设备的资源和任务进行定义和修改,从而快速完成多批次检测的开发,合理的分配资源调度,使检测通量最大化。我们在实验室常见的很多设备都使用了这种动态调度引擎技术,比如酶免系统、血型卡检测系统和生化系统。

北京华瑞开发了动态调度引擎,该引擎实现了同类动态调度引擎全部功能,并增加了以下特色和功能:

  • 使用简单,通过几行代码就可以在应用程序中实验资源和任务的定义,从而使检测实现并行
  • 体积小、运行高效,运行时候仅使用10M左右内存
  • 支持任务优先级,运行中根据优先级优先调度级别高的任务,从而让应用实现急诊样品优先处理
  • 支持任务间关系
  • 支持禁用设备和资源
  • 支持甘特图显示
  • 目前有.Net和Java版本,同时支持通过COM方式被各种语言和脚本使用

引擎使用示例,硬件资源的定义


SchedulerEngine scheduler=new SchedulerEngine();
scheduler.Register("STAR", 1, "blue");
scheduler.Register("Reader", 1, "yellow");
scheduler.Register("iSWAP", 1, "red");
scheduler.Register("Incubator", 8, "green");
scheduler.Register("Washer", 1, "orange");
scheduler.Register("Position", 5, "purple");
					

检测任务的定义

					
public class DirectELISA : Task
{
  public override string Name =>"DirectELISA";
  public override void Run()
  {
    Activity("Coating", 60, new string[]{"STAR", "Position"}, new int[]{1, 1}, "blue", () =>
    {
    });
    Activity("Wait", 1, new string[]{"Position"}, new int[]{1}, "gray", 120, () =>
    {
    });
    Activity("Transport", 5, new string[]{"iSWAP", "Incubator", "Position"}, new int[]{1, 1, 1}, "red", () =>
    {
    });
    Activity("Incubatio", 600, new string[]{"Incubator"}, new int[]{1}, "green", 800, () =>
    {
    });
    Activity("Transport", 5, new string[]{"iSWAP", "Incubator", "Washer"}, new int[]{1, 1, 1}, "red", () =>
    {
    });
    Activity("Wash", 120, new string[]{"Washer"}, new int[]{1}, "orange", () =>
    {
    });
    Activity("Transport", 5, new string[]{"iSWAP", "Washer", "Position"}, new int[]{1, 1, 1}, "red", () =>
    {
    });
  }
}

启动任务


scheduler.Activate(new DirectELISA());
scheduler.Schedule());
scheduler.Run();

这套系统成功应用到长春博迅的全自动血型检测系统,使用了多年。动态调度系统的使用,简化了博迅系统的开发,开发过程中不需要考虑设备调度,而且增加了系统的扩展能力,博迅系统能够处理的检测类型由最初的4种,逐步增加到11种检测和4种质控。同时由于动态调度引擎支持任务优先级和运行时增加减少任务,博迅系统实现的实验中途进样和急诊样品的优先处理,使博迅血型系统工作方式和医院生化酶免设备一样,随时进样随时检测,极大的简化了用户的操作。最终,在北京华瑞动态调度系统和哈美顿工作开发包双重帮助下,使长春博迅血型系统无论在使用便利性、检测速度、检测项目上都超过国内外竞争设备。