【问题标题】:Detect code changes on Beckhoff PLC using C#使用 C# 检测 Beckhoff PLC 上的代码更改
【发布时间】:2019-01-29 14:26:31
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: plc twincat twincat-ads-.net


    【解决方案1】:

    TwinCAT 3 包含PlcAppSystemInfo 的数据类型,其中包含PLC 项目以及系统的一些信息。见this link。数据可以从全局变量_AppInfo中找到

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

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

    【讨论】:

    • 谢谢,这看起来很有希望 :)
    • 很高兴听到!顺便说一句,KeepOutputsOnBP 是一个很大的变量。当它设置为 TRUE 时,您可以使用断点停止程序,所有输出将保持其状态。通常所有输出都将设置为 0,因此电机等将关闭。
    【解决方案2】:

    我首先想到的是 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

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

    【讨论】:

    • 谢谢,这可能对我有用。如果我这样做,我会将答案标记为已接受:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2018-04-08
    • 2020-04-10
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多