我有一个Beckhoff PLC,它正在运行一个用TwinCat3开发的软件。有没有办法使用C#应用程序检索正在运行的软件?TwinCAT.Ads库似乎没有提供这样的功能。
该计划将能够将在线内容与本地存储的备份进行比较,以检测服务技术人员所做的任何计划外代码更改。
例如,如果我可以从PLC中检索散列代码,并从本地备份中生成散列,并查看它们是否匹配,这对我来说就足够了。
有没有更好的方法来检测这种变化呢?
我是贝克霍夫PLC / TwinCat3的新手,所以非常感谢所有关于这件事的信息。
编辑:我应该补充说,C#应用程序将自动检查计划外代码更改的过程,并且只对其进行标记,以便工程师可以批准或拒绝更改。
发布于 2018-09-04 12:27:10
PLC3包含PlcAppSystemInfo
数据类型,其中包含有关TwinCAT项目和系统的一些信息。参见this link。数据可以从全局变量_AppInfo
中找到
AppTimestamp
是上次更改应用软件时的DT (DATE_AND_TIME
)。从Beckhoff文档中,我感觉它会在每次重新启动后重置(“PLC应用程序开始时的时间”),但当我测试它时,它在重新启动和关闭电源时保持不变。当我更新PLC应用程序时,日期随在线更改和下载而更改。
因此,据我所知,您可以读取应用程序上次更新的日期和时间,并比较是否发生了更改。你没有说如果你已经知道如何使用c#读取变量,我想你知道如何使用ReadAny
,所以只需读取变量_AppInfo.AppTimeStamp
的值。
发布于 2018-08-23 18:58:02
我首先想到的是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
这样,您就可以对本地项目进行比较(您也可以通过自动化接口打开它)。
https://stackoverflow.com/questions/51981879
复制相似问题