CODESYS Control for Linux SL: Retains
对于通用 Linux SL 产品,有不同的可能性来支持保持/持久变量或信息/变量的保持性存储。
典型的保持:
1) 将 Retains 存储在文件中
2) Store Retains在特殊内存中(例如SRAM / NVRAM ...)
- 将Retains存储在共享内存中
除此之外,还可以使用 CODESYS 的其他功能来更好地满足您的需求,因为它们提供了我们强烈推荐的更高级别的持久性:
-
配方管理 https://help.codesys.com/webapp/_cds_using_recipes;product=codesys;version=3.5.17.0
-
持久性管理器 https://help.codesys.com/webapp/f_application_composer_persistence_manager;product=core_Application_Composer;version=3.5.17.0
-
将 Retains 存储在文件中
运行时需要适当关闭以停止应用程序,然后将保留变量存储在文件中,或者您也可以通过 IEC 库“ CmpApp ”→ “ AppStoreRetainsInFile ”在 IEC 应用程序内部手动触发存储

优点: * 易于配置(默认) * 无需特殊内存/硬件 * 单一数据一致性:好的(如果正确完成/正常关闭)或如果在您的 IEC 应用程序中手动触发则完美
缺点: * 处理时间可能很长 * 不可能有“逻辑”一致性,除非您自己触发“存储”:参见“ CmpApp ”→ AppStoreRetainsInFile() 库函数!
配置:
没什么可做的,因为这是默认设置!
- Store Retains在特殊内存中
您可以通过 cfg 文件 (CODESYSControl.cfg) 配置运行时,以便它直接使用给定的内存(例如物理映射)。
优点: * 易于配置 * 处理时间快 IEC代码直接访问专用内存中的保留变量 * 单一数据一致性(对于小于或等于体系结构大小(例如 32 位)的标准数据类型)可以 * 存储不需要进一步的“胶水代码”
缺点:
- 单一数据一致性(对于大于体系结构大小(例如 32 位)的数据):无法保证
- 需要特殊内存/硬件(内核驱动程序等)
- 不可能有“逻辑”一致性
配置:
[CmpApp]
RetainType.Application=InSRAM
[CmpRetain]
Retain.SRAM.Size=0x....
Retain.SRAM.AddressMapped= -> in case you have a mapped address or:
Retain.SRAM.Address= -> in case you have a physical address
- 将Retains存储在共享内存中
您可以通过 cfg 文件 (CODESYSControl.cfg) 配置运行时,以便它使用共享内存。然后您可以轻松适应您拥有的任何“真实”保留存储。
另请参阅以下帮助页面:
https://help.codesys.com/webapp/_rtslext_retains_in_shared_memory;product=CODESYS_Control_SL_Extension_Package;version=4.4.0.0
优点: * 易于配置 * 处理时间快 * 不需要特殊的内存/硬件,但有可能
缺点: * 单一数据一致性:无法保证 * 需要一些“胶水代码”才能将共享内存中的保留内容放入您拥有的任何实际保留存储中。
配置:
[CmpApp]
RetainType.Application=InSHM
[CmpRetain]
Retain.SHM.Size=0x....
Retain.SHM.Name= -> Filename of the shared memory to use