【问题标题】:In which file is the _AppInfo data stored in Beckhoff TwinCAT 3 PLCBeckhoff TwinCAT 3 PLC 中存储的 _AppInfo 数据位于哪个文件中
【发布时间】:2019-06-10 20:09:18
【问题描述】:

我正在寻找“AppTimeStamp”信息,以便验证服务人员未更新/更改代码。

Detect code changes on Beckhoff PLC using C# 在这个位置我已经找到了我的部分信息,但由于“新用户”的限制,我无法添加评论

【问题讨论】:

    标签: plc


    【解决方案1】:

    您可以在 _AppInfo 实例中找到 AppTimestamp。 因此,只需在程序中调用 _AppInfo.AppTimestamp 即可知道上次应用程序启动的时间。 确保您还使用 OnlineChangeCnt 计数器检查自上次下载以来在线更改的数量,您也可以在 _AppInfo 实例中找到该计数器。

    【讨论】:

    • 嗨 Filippo 感谢您的信息,我现在看到我的信息不够清晰。我知道要在 PLC 程序中找到它,但在我看来,它也以某种方式存储在 PLC 本身上。我试图在 PLC 上找到包含此时间戳信息的文件。此信息是在 PLC 启动后读取的,因此需要存储在某个位置。
    【解决方案2】:

    保存此值的可能性有很多。 TwinCAT 将数据保存到 C:\TwinCAT\3.1\Boot 文件夹,不同文件解释here

    例如,可以从配置数据 (CurrentConfig.xml)、文件末尾 (TcBootProject/ProjectInfo/ProjectName) 中找到 ProjectName。同一个文件包含一个日期(<TcBootProject CreateTime="2019-06-10T13:14:17">),但它似乎是创建的引导项目的构建时间。

    我在任何文件中都找不到AppTimestamp 的日期,但也许 TwinCAT 使用了这些文件夹中文件的创建时间?或者它可能隐藏在某个地方的二进制文件中。

    当您更新软件而不更新引导项目时,文件Port_851_act.tizip 会更新。所以你可以检查它的时间戳。当您更新启动项目时,Port_851_boot.tizip 和其他文件也会更新。

    所以基本上,要检查代码是否被某人更新,请检查 Boot 目录下文件的修改日期。我想只有 .bootdata 文件应该更新,因为它们包含保存的持久数据。当然,您可以使用 3rd 方程序轻松更改日期。因此一种解决方案是比较Port_851.crc 文件内容,因为它包含代码的CRC 校验值。更新启动项目时它总是会改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多