我正在寻找“ AppTimeStamp”信息,因此可用于验证服务人员是否未更新/更改代码。
Detect code changes on Beckhoff PLC using C# 在此位置,我已经找到了部分信息,但是由于“新用户”的限制,我无法添加评论
答案 0 :(得分:0)
您可以在_AppInfo实例中找到AppTimestamp。 因此,只需在程序中调用_AppInfo.AppTimestamp即可知道上次应用程序启动的时间。 确保您还使用OnlineChangeCnt计数器检查自上次下载以来的联机更改数,您也可以在_AppInfo实例中找到该计数器。
答案 1 :(得分:0)
保存此值的可能性有很多。 TwinCAT将数据保存到C:\ TwinCAT \ 3.1 \ Boot文件夹中,here说明了不同的文件。
例如,ProjectName
可以从配置数据(CurrentConfig.xml
),文件末尾(TcBootProject / ProjectInfo / ProjectName)中找到。同一文件包含一个日期(<TcBootProject CreateTime="2019-06-10T13:14:17">
),但这似乎是创建的启动项目的构建时间。
我在任何文件中都找不到AppTimestamp
的日期,但是也许TwinCAT使用了这些文件夹中文件的创建时间?或者,它隐藏在二进制文件中的某个位置。
在不更新引导项目的情况下更新软件时,文件Port_851_act.tizip
被更新。因此,您可以检查其时间戳。当您也更新启动项目时,Port_851_boot.tizip
和其他文件也会被更新。
因此,基本上,要检查代码是否由某人更新,请检查Boot目录下文件的修改日期。我想只有.bootdata文件应该更新,因为它们包含已保存的持久性数据。当然,您可以使用3rd party程序轻松更改日期。因此,一种解决方案是比较Port_851.crc
文件的内容,因为它包含代码的CRC校验值。当启动项目更新时,它将始终更改。