您是否曾遇到过这样的情况:您正在使用的应用程序突然退出,重新启动后您发现所有工作都丢失了?(如果没有,那么总有一天您会遇到!)本博客讨论了 Cimetrix CimControlFramework TM如何处理这种情况。
什么是持久性以及为什么要使用它?
问题:
在执行任何应用程序期间,始终存在执行终止的风险:过早关闭应用程序、计算机断电或程序故障。通常,程序在内存中保存的数据代表了应用程序在此之前的基本数据和状态。当执行意外停止时,在此之前积累的所有信息都有可能丢失且无法恢复,因为内存中的内容本质上不是持久的。程序终止后,存储在内存中的任何数据都将消失。
解决方案:
一种典型的解决方案是在创建或更改重要数据时立即将数据写入磁盘。通常将这些数据保存在一个或多个文件中以实现完整的持久存储机制。这有效地使每个数据项“持久化”,这样即使程序终止,重要信息也不会丢失。然后,应用程序可以在重新启动时读取持久文件并将每个数据项恢复到其上次保存的值,从而从意外终止中恢复。
CCF 中的持久性:
以下部分解释了 CCF 中持久性的两个示例。NVS
(非易失性存储)
当工具监控器应用程序或 GEM 主机更改持久变量的值时,新值将存储在 CCF 的 NVS 设施中的相应文件中。当工具监控器重新启动时,将在设备应用程序初始化期间读取 NVS 文件中的值并将其应用于受影响的变量。
物料追踪
CCF 产品包括材料(基板)的数据持久性,因此如果设备应用程序终止,则有关材料及其最后已知移动的持久信息将被加载并在 GUI 上可视化。
材料跟踪包提供一项特定服务,用于存储设备内材料的当前状态。启用后,每次材料移动都将记录到磁盘上的“材料图”文件中。
还提供了维护 GUI 屏幕,以便用户可以识别不再存在或与上次保存位置不同的材料。提供了将材料移出设备的功能,以促进恢复过程。
作业数据持久化
现在让我们讨论如何实现作业数据持久性功能。作业数据是一组值,用于告诉设备如何移动和处理每个物料。作业有两种类型:控制作业和处理作业。
- 处理作业:将物料清单与配方关联起来。
- 控制作业:流程作业的集合。还包含物料目的地信息。
在 CCF 中实现作业数据持久性:
1. 需要坚持什么
Cimetrix CIM300 产品(与 CCF 一起安装)管理 ProcessJobs 和 ControlJobs 的 SEMI E39 对象的生命周期。CCF 在运行时创建与作业相关的数据,并将这些数据存储在 ControlJobData 和 ProcessJobData 类中。此外,对象属性和状态也应保留并在以后恢复。CCF 和 CIM300 都保留实例化的 ControlJobs 和 ProcessJobs 的列表。
要序列化/反序列化的 CCF 对象
CIM300 对象和序列化/反序列化的 API
2. 创建持久性包
CCF 包含一个材料跟踪包,该包已开发用于提供材料和位置的持久性。让我们定义一个类似的代码包,其中包含一个类 (AllJobs),该类将包含要写入磁盘的序列化字符串。
2.a 何时将所有作业数据写入磁盘:
- 在 SerializedJobsChanged 事件上(如果未处理则添加)
- 在启动后立即尝试加载,以便首次强制写入持久文件。
- 在来自 CIM300 的任何 CIM40 回调上
- 在来自 CIM300 的任何 CIM94 回调上
- 在 SchProcessJob 实例化时
下图说明了持久化数据的写入方式。
2.b 何时从磁盘读取ALLJobs数据:
- 在 StartFactoryAutomation() 之后但在启动 EquipmentControlSystem() 之前,工具管理器启动一次。
下图说明了如何读取和应用持久数据。
结论
数据持久性是任何应用程序的一个关键方面,可防止在意外终止时丢失重要信息。通过立即将数据写入持久文件中的磁盘,应用程序可以从这些情况中恢复并将数据恢复到最后保存的值。对于 Cimetrix CCF 软件,持久性是通过 NVS 和材料跟踪实现的,确保变量和材料移动被存储,并且即使在设备应用程序终止后也可以可视化。要了解有关 CCF 如何处理数据持久性和其他功能的更多信息,我们鼓励您单击下面的按钮与专家联系并与他们交谈。