本博客最初发布于cimetrix.com。
在开发阶段及生产过程中测试GEM设备接口能力具有可量化的效益。GEM标准的部分内容未作明确定义,允许不同设备在实现方式上存在差异。因此,设备制造商应编写设备专属测试方案,这些方案将在设备整个使用周期内持续发挥价值。
处理状态模型
GEM项目中几乎总是会变化的一个要素是设备的加工状态模型。我将使用Cimetrix GEM测试工具EquipmentTest,展示为设备加工状态创建自定义测试的示例。您可通过我们的网站申请EquipmentTest的评估。
E30标准提供了一个示例处理状态图和转换表。
进程状态要求
尽管实现方式可以有所不同而不违反标准,但处理状态部分包含以下要求,必须遵循这些要求才能使接口符合规范:
SEMI E030-00-0520
解释:
处理状态(初始、空闲、设置等)的示例在GEM实现中并非绝对必要。但设备制造商必须明确设备的状态,并参照示例进行记录。
SEMI E030-00-0520
解释:
- 处理状态模型中的每个状态转换都必须有一个收集事件。
- 必须提供以下状态变量:
- 进程状态
- 先前进程状态
- 每次发生状态转换时,必须更新ProcessState和PreviousProcessState状态变量的值。
伪示例自动售货机
尽管自动售货机实现GEM接口的可能性微乎其微,但该系统广为人知,常被学术界用作状态机教学范例。因此,我们也将以假想的GEM兼容自动售货机作为示例。
为保持简单性而作的假设
- 该自动售货机采用非接触式支付方式,交易开始时将预授权5.00美元。
- 自动售货机对其所含物品一无所知,仅知晓它们的位置和价格。
- 所有商品均常备库存。
绘制图表
当您的GEM文档最终定稿时,流程状态图应采用哈雷尔符号法绘制。为便于头脑风暴,我使用了简易的UML图示。
在构建图示时,首先需识别所有可能的GEM状态、转换/采集事件、变量、告警及错误。
| 州 | 变量 | 警报/错误 |
| 初始化中 | 先前和当前进程状态 | 分发误差 |
| 等待付款 | 已选定位置 | 余额不足 |
| 等待_选择 | 可用货币 | 读卡错误 |
| 分发项目 | 计费货币 | |
| 交易完成 |

转换表
请注意,上图中每个状态转换均以红色标注,例如 T1。
每个状态转换都必须记录在转换表中。转换表对于开发有效的测试至关重要。
| # | 当前状态 | 触发器 | 新州 | 行动 | 评论 |
| T1 | 初始化中 | 自动售货机初始化完成 | 等待付款 | 无 | 更新事件和变量 |
| T2 | 等待付款 | 授权失败 | 等待付款 | 无 | 更新事件和变量 |
| T3 | 等待付款 | 授权成功 | 等待_选择 | 无 | 更新事件和变量 |
| T4 | 等待_选择 | 余额不足 | 交易完成 | 无 | 更新事件和变量 |
| T5 | 等待_选择 | 已选定并分发的物品 | 分发项目 | 无 | 更新事件和变量 |
| T6 | 分发项目 | 用户想要更多商品 | 等待_选择 | 无 | 更新事件和变量 |
| T7 | 分发项目 | 用户不想要更多商品 | 交易完成 | 无 | 更新事件和变量 |
| T8 | 交易完成 | 设备为下一笔交易做准备 | 初始化中 | 无 | 更新事件和变量 |