【发布时间】:2019-06-10 20:09:18
【问题描述】:
我正在寻找“AppTimeStamp”信息,以便验证服务人员未更新/更改代码。
Detect code changes on Beckhoff PLC using C# 在这个位置我已经找到了我的部分信息,但由于“新用户”的限制,我无法添加评论
【问题讨论】:
标签: plc
我正在寻找“AppTimeStamp”信息,以便验证服务人员未更新/更改代码。
Detect code changes on Beckhoff PLC using C# 在这个位置我已经找到了我的部分信息,但由于“新用户”的限制,我无法添加评论
【问题讨论】:
标签: plc
您可以在 _AppInfo 实例中找到 AppTimestamp。 因此,只需在程序中调用 _AppInfo.AppTimestamp 即可知道上次应用程序启动的时间。 确保您还使用 OnlineChangeCnt 计数器检查自上次下载以来在线更改的数量,您也可以在 _AppInfo 实例中找到该计数器。
【讨论】:
保存此值的可能性有很多。 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 校验值。更新启动项目时它总是会改变。
【讨论】: