已优化 PLC 快照逻辑,解决结批后重新开批等待“快照过期”的问题。
修改文件:
- [PlcSignalSnapshot.cs]
- [PLCController.cs]
- [PlcCondition.cs]
主要原因是:
SnapshotChanged只有信号值发生变化时才触发。结批后重新开批时,如果 PLC 信号值没有变化,旧快照会过期,但等待器收不到新事件,只能继续等待或提示快照过期。
本次优化:
- 新增
SnapshotPublished事件。 - PLC 每次完整轮询后都发布新快照,即使信号值没有变化。
PlcConditionWaiter改为监听SnapshotPublished。- 等待器最多每个轮询周期重新检查一次,不再等待 5 秒日志周期。
- 将快照有效期判断统一封装到
PlcSignalSnapshot.IsExpired()和GetAge()。 - PLC 断线或轮询失败时仍然标记快照无效,避免使用旧信号误动作。
重新开批后的流程变为:
结批 -> 旧快照可能过期 重新开批 -> 等待 PLC 下一次完整轮询 -> 发布新快照 -> 等待器立即重新判断 -> 不再因为信号值未变化而持续提示快照过期已编译验证:
0 个错误 309 个原有警告