1

我有一台 Beckhoff PLC,它运行着使用 TwinCat3 开发的软件。有没有办法使用 C# 应用程序检索正在运行的软件?TwinCAT.Ads 库似乎不提供此类功能。

计划是能够将在线内容与本地存储的备份进行比较,以检测服务技术人员所做的任何计划外代码更改。

如果我可以从 PLC 检索哈希码并从本地备份生成哈希并查看它们是否匹配,这对我来说就足够了。

是否有更好的方法来检测这种变化?

我是 Beckhoff PLC / TwinCat3 的新手,因此非常感谢有关此问题的所有信息。

编辑:我应该补充一点,C# 应用程序将自动执行检查计划外代码更改的过程,并且只标记它,以便工程师可以批准或拒绝更改。

4

2 回答 2

3

TwinCAT 3 包含一个数据类型PlcAppSystemInfo,其中包含 PLC 项目以及系统的一些信息。请参阅此链接。数据可以从全局变量中找到_AppInfo

_AppInfo 的图片

最后一次更改应用软件的时间AppTimestamp是 DT ( )。DATE_AND_TIME从 Beckhoff 文档中,我感觉每次重新启动后它都会重置(“ PLC 应用程序启动时间”),但是当我测试它时,它在重新启动和关闭电源时保持不变。当我更新 PLC 应用程序时,日期随着在线更改和下载而改变。

因此,据我所知,您可以阅读应用程序上次更新的日期和时间,并比较它是否发生了变化。你没有说你是否已经知道如何使用 c# 来读取变量,我想你知道如何使用ReadAny所以只需读取值 fom variable _AppInfo.AppTimeStamp

于 2018-09-04T04:27:09.813 回答
1

我首先想到的是 TwinCAT 自动化接口。它基本上是一个 API,允许您访问您通常在 Visual Studio/TwinCAT 中执行的某些部分。TwinCAT 自动化接口库与您的 TwinCAT 安装一起安装,有多种访问方式。API 的文档和示例大部分位于 C#/.NET 中。

请参阅此处的文档:http: //download.beckhoff.com/download/document/automation/twincat3/AutomationInterface_pdf_EN.pdf

更具体地说,对于您的情况,我认为这会很有趣: https ://infosys.beckhoff.com/english.php?content=../content/1033/tc3_automationinterface/2488994571.html&id=155511204171430517

有了这个,您可以比较本地项目(您也可以通过自动化界面打开)。

于 2018-08-23T10:58:01.590 回答