本博客最初发布于cimetrix.com。
消息缓冲的目的
即便是最强大的计算机网络也会遭遇通信故障。无论原因如何,一次小规模中断都可能导致大量关键任务数据丢失。GEM通过提供消息缓冲功能来缓解这种数据损失。
缓冲定义
“缓冲存储是一种功能,设备可在通信中断期间将发往主机的消息排入队列,并在通信恢复后传递这些消息。” SEMI E30-0717 7.12.
缓冲优势
自动化工厂以数据为驱动。通过提取和分析数据来制定决策,这些决策影响着工程和管理团队的应对措施,从而确保产品良率高、废品率低。
数据缺失可能导致判断失误甚至凭空猜测。缓冲系统作为一种备份机制,能确保数据完整保存并可恢复,从而降低重要数据丢失的风险。
GEM能力要求
缓冲输出并非GEM的强制要求;但若要实现此附加功能,必须确保其正确性。以下是实现符合规范的缓冲输出接口的若干要求。
该设备必须通过设备常量“EnableSpooling”为宿主提供启用和禁用缓冲打印的功能。该设备常量由设备发布,宿主可选择所需状态。
当实现缓冲区功能时,必须确保其对所有相关主消息均能正常工作,并可通过S2、F43/F44事务访问。此要求不适用于流一消息,若此类消息尝试"设置缓冲区",则必须予以拒绝。
非易失性存储器
该设备负责分配足够的非易失性存储空间,用于存储所有已排队处理的消息,这些消息至少经过设备一个处理周期。非易失性存储器还将存放所有与排队相关的状态变量。采用非易失性存储器存储这些数据,可确保在断电情况下数据仍能持续保存。
断电
设备断电前已缓冲的所有消息均可获取,因其已持久化存储于非易失性存储器中。若断电时缓冲功能处于活动状态,所有缓冲上下文均将从NVS恢复。这包括已缓冲的数据以及存储于NVS中的所有缓冲相关状态变量。
主机对缓冲区实现的责任
消息缓冲需要主机参与才能在通信中断后成功恢复。理想做法是将缓冲功能保持在禁用状态,直至主机被编程为能够正确处理该状态机中可能出现的全部情况。禁用缓冲功能优于管理不当的缓冲操作。
一旦通信恢复,主机必须管理请求已缓存的消息。主机还可在必要时选择从设备中清除这些文件。
结论
尽管缓冲并非GEM的基本要求,但若实施该功能,必须确保其正确运行。当启用缓冲功能时,主机与设备软件均有责任确保符合GEM规范。GEM缓冲机制能有效防止重要数据的潜在丢失,并为设备与主机软件提供易于遵循的统一标准。