我有一个Beckhoff PLC,该PLC运行的是使用TwinCat3开发的软件。有没有办法使用C#应用程序检索正在运行的软件? TwinCAT.Ads库似乎没有提供这种功能。
该计划是为了能够将在线存储与本地存储的备份进行比较,以检测服务技术人员进行的任何计划外代码更改。
例如,我可以从PLC检索哈希码并从本地备份生成哈希值,看看它们是否匹配。
也许有更好的方法来检测这种变化吗?
我是Beckhoff PLC / TwinCat3的新手,因此非常感谢您提供有关此问题的所有信息。
编辑: 我应该补充一点,C#应用程序将自动检查计划外的代码更改,并且仅对其进行标记,以便工程师可以批准或拒绝更改。
答案 0 :(得分:3)
TwinCAT 3包含数据类型PlcAppSystemInfo
,其中包含有关PLC项目以及系统的某些信息。参见this link。可以从全局变量_AppInfo
AppTimestamp
是上次更改应用程序软件的时间DT(DATE_AND_TIME
。从Beckhoff文档中,我会感觉到它将在每次重新启动后重新设置(“ PLC应用程序启动时的时间”),但是当我测试时,重新启动和关闭电源时它保持不变。当我更新PLC应用程序时,日期随着在线更改和下载而更改。
据我所知,您可以读取应用程序上次更新的日期和时间,并比较它是否更改。您没有说是否已经知道如何使用c#读取变量,我想您知道如何使用ReadAny
,所以只需读取值fom变量_AppInfo.AppTimeStamp
。
答案 1 :(得分: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
这样您就可以对本地项目进行比较(您也可以通过自动化界面打开它)。