本博客最初发布于cimetrix.com。
协议层的目的
协议层对数据进行封装,并在工厂主机与设备GEM接口之间实现可靠传输。
协议层定义
协议层实现了用于在工厂主机与设备GEM接口之间通过有线传输消息的传输技术和数据打包算法。
SEMI E5标准(即SEMI设备通信标准2消息内容,SECS-II)定义了作为数据使用的SECS消息,并规定了将这些消息封装到二进制缓冲区以供传输的方式。
SEMI E37和E37.1标准(高速SECS消息服务,HSMS)定义了一种通过TCP/IP连接交换SECS消息的协议。这是SECS/GEM中最常用的传输技术。

HSMS协议栈
SEMI E4标准(即SEMI设备通信标准1消息传输,SECS-I)定义了通过RS-232交换SECS消息的机制。该标准通常用于老旧设备或设备内部某些硬件(如EFEM控制器)。
本文档的其余部分将重点探讨通过HSMS传输的SECS消息。
协议层优势
GEM中的协议层负责维护连接并检测连接中断,以便任一方采取相应措施,例如启动缓冲处理。
协议层定义了握手机制,以确保在需要时消息能够送达。
协议层连接在工厂主机与设备之间采用点对点方式。该连接为专属连接,不具备广播功能。这使得网络负载更易于预测。
数据密度
SECS/GEM以低开销、高密度的特性传输数据。这意味着在给定数据集的情况下,其占用的网络带宽更少。
为便于说明,我们来看一份典型的事件报告示例,并将SECS/GEM消息与某种程度上等效的XML和JSON消息进行比较。
以典型的GEM接口为例,其ID采用无符号4字节整数,事件报告包含8字节浮点数和4字节整数。下表展示了该消息的示例,采用符合E5规范的SECS/GEM格式,并提供等效的JSON和XML格式。

二进制SECS/GEM消息在传输过程中占用58字节,JSON约206字节,XML为175字节。JSON和XML的具体字节数会因键/元素名称而略有变化,上述数据仅为众多可能表示形式中的一种。

下图展示了示例消息的数据密度对比。实际数据大小为:2个4字节整数 + 2个8字节浮点数 + 1个4字节事件ID + 1个4字节报告ID = 32字节实际数据。开销通过从消息总字节数中减去实际数据大小计算得出。

对于示例消息,下图显示了SECS数据的密度百分比。数据密度百分比的计算公式为:(实际数据) / 开销 * 100。

现在,如果我们将示例消息改为包含100个8字节浮点数,数据密度百分比图表将变为下图所示。请注意,JSON和XML的密度基本相同,但SECS/GEM的数据密度已提升至78%。

SECS/GEM编码的开销极小。每条消息的开销包含10字节的消息头描述,外加1至4字节的消息主体长度标记。对于SECS消息中的任何4字节整数或浮点数,实际传输6字节:4字节整数值+1字节类型标记+1字节数据长度标记。 同理,对于任何8字节整数或浮点数,将发送10字节。字符串值的长度为字符数加2至4字节。当列表(如上文示例中的L)出现在SECS消息中时,将为消息增加2至4字节。
在SECS/GEM中,数组的效率极高。数组的开销包括类型占用1字节,数组长度占用1至4字节,以及数据本身占用的原始空间。例如:一个包含10个4字节整数的数组仅需42字节,数据密度高达95%!
在 JSON 示例中,4 字节整数需要 16 字节 + 表示该整数所需的字符数,因此总计 17 至 28 字节。浮点数具有相同的开销,但表示数值可能需要更多字符。
在XML中,开销取决于XML元素名称的长度。以上例中的元素名称为例,对于任何4字节整数,传输过程中所需字节数为9字节加上表示该整数所需的字符数,因此总计为10至21字节。浮点数则完全取决于用于表示其值的字符串格式。
综上所述,从传输数据的单项字节大小来看,SECS/GEM协议具有极高的数据密度。以4字节整数为例:SECS/GEM传输时需6字节,JSON格式需17至28字节,XML格式需10至21字节。随着参数数量的增加,这种开销差异将变得尤为显著。 300mm半导体设备预计每秒需向主机传输每个工艺模块1000个参数。对于双模块设备,仅数据传输量就产生以下字节数:SECS/GEM协议12K字节,JSON格式34K-56K字节,XML格式20K-42K字节。 上述数据仅统计参数值相关部分,未计入消息其余内容。若将数据拆分为大量消息传输(每条消息仅含少量参数值),网络负载将进一步恶化。在所有情况下,采用更少的大容量消息传输始终更优。
XML和JSON也可能因传输协议的不同而增加开销。例如,XML通常通过HTTP使用SOAP进行传输,这会为每条消息增加两层额外开销并导致更多字节在网络中传输。SECS/GEM所示的字节数即是在TCP/IP之上实际传输的数据量。
无数据翻译
在SECS/GEM中,数值数据以无转换形式传输。数字采用其原始格式传输。例如:8字节浮点数将以8字节表示形式传输,不进行任何转换、截断或舍入操作。
任何协议(如JSON或XML)都必须将这些8字节浮点数转换为文本表示形式。 编码与解码过程消耗计算资源,且传输过程中占用显著更多的字节。IEEE754标准要求使用17位十进制数字才能精确表示8字节浮点数字符串。若加入符号位、小数点、指数及指数符号的字符,则需21个字符。这已超过SECS/GEM协议传输数据量的两倍。
电路保障
HSMS定义了一种名为链路测试的电路保障机制。协议层设有定时器,当未检测到活动消息交换时该定时器将启动。每次定时器超时后,系统会交换协议消息以确保连接仍处于开放状态。
安全
HSMS未定义任何安全机制。连接方无需验证,连接时不要求凭证或证书。数据未采用常规加密算法进行加密;但通过数据封装过程实现混淆处理,通常不可被人类直接读取。
通常认为安全并非问题所在,因为工厂网络与外部世界处于隔离状态。
结论
采用HSMS的SECS/GEM协议层为工厂主机与设备之间交换精确数据提供了高效途径。