2. SEMI标准体系速览
很多刚接触设备通信的工程师会有一个误解:以为“SEMI标准”是一份统一的通信协议文档,只要照着实现就能对接所有设备。实际上,SEMI标准是一套分层、分工、各管一段的标准族。E4、E5、E30、E37、E10这些编号并不是同一层级的并列关系,而是分别定义了“消息长什么样”“消息怎么传”“设备怎么描述自己”“数据怎么组织”“事件怎么分类”等不同维度的问题。理解它们之间的关系,比记住每个标准的全称更重要。
一、先建立分层视角:谁定义内容,谁定义传输
可以把SEMI通信标准粗略分成三层来看:
- 消息内容层:定义设备与主机之间交换的消息语义,典型代表是SEMI E5(SECS-II)。它规定了消息的Stream/Function编号、数据项结构、数据类型(如L、A、U4、BOOLEAN等),是“说什么”的标准。
- 传输层:定义消息如何在物理链路上可靠传输,典型代表是SEMI E4(SECS-I,基于RS-232串行链路)和SEMI E37(HSMS,基于TCP/IP的高速消息服务)。它们解决“怎么送”的问题。
- 行为与模型层:定义设备如何描述自身能力、状态如何变化、事件如何上报、数据如何采集,典型代表是SEMI E30(GEM)、SEMI E10(设备可靠性/可用性/维护性定义)、SEMI E5中的状态模型等。
这三层不是替代关系,而是叠加关系。一台设备可以同时支持E4+E5+E30,也可以支持E37+E5+E30。E4和E37是二选一的传输通道,E5是它们共同承载的消息内容,E30则是在E5消息之上约定的一套“设备行为规范”。
二、E4与E37:同一件事的两种传输实现
E4(SECS-I)是早期基于RS-232串口的传输标准,典型速率9.6kbps到115.2kbps,采用块传输和握手信号。它的通信边界很明确:点对点、距离短、速率低,适合老式设备或简单场景。E37(HSMS)则是为TCP/IP网络设计的传输标准,支持多会话、长连接、Select/Deselect状态管理,速率和距离不再受串口限制。实际项目中,新设备几乎默认走E37,E4更多出现在旧设备改造或特定串口网关场景中。
需要特别注意的是:E4和E37不是“升级关系”,而是“替代关系”。一台设备通常只实现其中一种作为主传输通道。如果设备同时提供串口和网口,往往也是二选一激活,而不是同时跑两套SECS传输。
三、E5:所有消息的“语法书”
E5定义了SECS-II消息的完整结构。每条消息由Stream和Function组成,例如S1F1是“Are You There”请求,S1F2是应答;S2F33是“Define Report”请求,S2F34是应答。E5还规定了数据项的类型和嵌套方式,比如:
S1F1 W
<L, 2
<A "EQUIP01">
<U4 1000>
>
这段示例表示一条S1F1消息,携带一个长度为2的列表,第一项是设备名,第二项是超时参数。E5不关心这条消息是通过串口还是网口发送的,它只关心消息本身的结构和语义。因此,E5是E4和E37共同的上层内容标准。
四、E30(GEM):设备行为的“操作手册”
E30是SEMI标准体系中最常被提及、也最容易被误解的标准。它并不是一种新的消息格式,而是在E5消息之上,约定了一套设备必须支持的行为集合。GEM规定了:
- 状态模型:设备通信状态(Disabled/Enabled)和运行状态(Init/Idle/Run/Pause等)如何转换;
- 事件与报警:设备如何定义事件、上报事件、触发报警和清除报警;
- 数据采集:主机如何通过S1F3/S1F4读取状态变量,通过S2F33/S2F35定义报告和链接;
- 远程命令:主机如何通过S2F41下发命令,设备如何应答;
- 变量与常量:设备如何暴露状态变量(SV)、数据变量(DV)、设备常量(EC)等。
换句话说,E5让设备“能说话”,E30让设备“按规矩说话”。一台只实现E5但不实现E30的设备,可能能收发消息,但主机无法用标准方式驱动它完成生产流程。
五、E10:设备状态与可靠性的度量语言
E10定义了设备状态的分类和可靠性指标,如设备状态分为工程状态、待机状态、生产状态、计划停机、非计划停机等,并据此计算可用率、利用率、MTBF、MTTR等指标。E10本身不直接定义通信消息,但它与E30的状态模型紧密配合:E30负责把设备状态变化通过事件上报给主机,E10则定义了这些状态在统计和报表层面的含义。在EAP系统中,E10指标通常由主机侧根据E30事件流计算得出,而不是设备直接上报一个“可用率”数值。
六、实际项目中的标准组合与边界判断
在真实设备对接中,常见的标准组合是:E37 + E5 + E30 + E10。E37负责网络传输,E5负责消息解析,E30负责行为驱动,E10负责状态统计口径。如果设备是旧式串口设备,则可能是E4 + E5 + E30,此时E10指标仍可在主机侧计算。
判断一台设备通信边界是否完整,可以按以下顺序检查:
- 物理链路是否通:E37的TCP连接能否建立,或E4的串口参数是否匹配;
- 消息能否解析:E5的Stream/Function是否按预期返回,数据项类型是否正确;
- 行为是否可驱动:E30的S1F1、S1F13、S2F33、S2F35、S2F41等关键消息是否支持;
- 状态是否可统计:E10定义的状态是否通过E30事件完整上报,时间戳是否准确。
总结来看,SEMI标准体系不是一份文档,而是一组分工明确的标准集合。E4/E37管传输,E5管消息,E30管行为,E10管状态度量。理解它们之间的分层关系和通信边界,才能在EAP集成中快速定位问题、合理设计接口,而不是把所有异常都归咎于“协议不兼容”。