You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
2.9 KiB

10 months ago
  1. 最简单的方式
  2. 1.错误
  3. 2.绑定的动作
  4. clearError,根据错误列表中的错误,对设备进行恢复。也可以当错误大于两个的时候,直接报严重错误。
  5. 机械臂:
  6. .....
  7. .准备(条件:当某个试管已经开始处理的)
  8. .....
  9. .锁定
  10. .取样+混合+滴定
  11. .取样+混合+滴定
  12. .取样+混合+滴定
  13. .释放
  14. .复位
  15. .....
  16. .....
  17. actions = 条件检查
  18. Errors = doActions();
  19. -->执行动作(并行)
  20. -->执行动作(并行)
  21. -->执行动作(并行)
  22. -->执行动作(并行)
  23. clearErrors();
  24. waitForAllActionIsDone()
  25. .....
  26. 同一时刻只做一件事儿
  27. 设备动作:
  28. 入料
  29. 暂停
  30. 停止
  31. 继续
  32. 出料
  33. 入料
  34. 入料扫描
  35. -预处理样本
  36. -处理样本
  37. -入料扫描
  38. -移动并预处理样本-A
  39. -Tip头准备
  40. -取样本并处理样本
  41. -取处理好的样本滴定
  42. -反应板准备
  43. -反应板推出
  44. -反应板扫描
  45. -移动并预处理样本-B
  46. -出料
  47. 出错:
  48. 错误处理:
  49. 假设:
  50. 1. 系统状态自动切换到暂停状态。如果是fatal则自动切换到stop状态。
  51. 2. 用户按下继续后,设备可以继续工作,同时先根据错误类型,执行相应的动作。
  52. 3. 如果是fatal错误,用户需要关机,并依次移走所有耗材。
  53. 4.
  54. while(true){
  55. stop
  56. pause
  57. }
  58. 动作:
  59. 入料并扫描
  60. 条件:
  61. 没有错误,设备运行工作中,试管架状态为IDLE,入料光电被触发
  62. 副作用:
  63. 修改耗材状态
  64. 动作:
  65. 出料
  66. 条件:
  67. 没有错误,设备运行中,试管架状态为FINISHED
  68. 副作用:
  69. 修改试管架状态为IDLE
  70. -----------------------------------------------------------------------------------
  71. 动作:
  72. 试管预处理A
  73. 条件:
  74. 没有错误,设备运行中,试管架状态为PROCESS,试管预处理状态为CHECK_REASOUR_FINISHED,或者处理中,待处理试管不为0
  75. 副作用:
  76. 修改试管处理状态为PRE-PROCESS-A
  77. 动作:
  78. 耗材资源检查,孵育盘有空余位置。
  79. 条件:
  80. 没有错误,设备运行中,试管架状态为PROCESS,试管预处理状态为IDLE,待处理试管不为0
  81. 副作用:
  82. 动作:
  83. 样本后处理
  84. 条件
  85. PRE_PROCESS_A FINISHED,孵育盘有空余位置。
  86. RECORSE:
  87. 副作用:
  88. 修改PRE_PROCESS_A --> SAMPLE_POST_PROCESS
  89. cnt++;
  90. 设置孵育盘状态
  91. 基本原则:
  92. 每个动作都有一定的触发条件和硬件资源,当条件满足时且申请到硬件资源时执行动作。
  93. -----------------------------------------------------------------------------------
  94. 核心点?
  95. 特殊点:
  96. 一个状态触发多个任务:
  97. 状态:
  98. 1.SOMTHING_PROCESSING [处理中]
  99. 2.SOMTHING_FINISHED [处理完成]