Обнаружение изменений кода в ПЛК Beckhoff с помощью C#

У меня есть ПЛК Beckhoff, на котором работает программное обеспечение, разработанное с помощью TwinCat3. Есть ли способ получить работающее программное обеспечение с помощью приложения С#? Библиотека TwinCAT.Ads, похоже, не предлагает такой функциональности.

План состоит в том, чтобы иметь возможность сравнивать то, что находится в сети, с резервной копией, хранящейся локально, чтобы обнаруживать любые незапланированные изменения кода, сделанные специалистом по обслуживанию.

Мне было бы достаточно, если бы я мог, например, получить хеш-код из ПЛК, сгенерировать хэш из локальной резервной копии и посмотреть, совпадают ли они.

Возможно, есть лучший способ обнаружить такие изменения?

Я новичок в Beckhoff PLC / TwinCat3, поэтому очень ценю всю информацию по этому вопросу.

РЕДАКТИРОВАТЬ: я должен добавить, что приложение С# автоматизирует процесс проверки незапланированных изменений кода и только пометит его, чтобы инженер мог одобрить или отклонить изменения.


person skari    schedule 23.08.2018    source источник


Ответы (2)


TwinCAT 3 содержит тип данных PlcAppSystemInfo, который содержит некоторую информацию о проекте ПЛК, а также о системе. См. эту ссылку. Данные можно получить из глобальной переменной _AppInfo

Изображение _AppInfo

AppTimestamp — это ОУ (DATE_AND_TIME) времени последнего изменения прикладного программного обеспечения. Из документации Beckhoff у меня сложилось впечатление, что он сбрасывался после каждой перезагрузки («Время запуска приложения ПЛК»), но когда я тестировал, он оставался таким же при перезагрузке и выключении питания. Когда я обновил приложение ПЛК, дата изменилась как при онлайн-изменении, так и при загрузке.

Итак, насколько я знаю, вы можете прочитать дату и время последнего обновления приложения и сравнить, изменится ли оно. Вы не сказали, что если вы уже знаете, как использовать С# для чтения переменных, я полагаю, вы знаете, как использовать ReadAny, поэтому просто прочитайте значение переменной _AppInfo.AppTimeStamp.

person Quirzo    schedule 04.09.2018
comment
Спасибо, это выглядит многообещающе :) - person skari; 04.09.2018
comment
Рад слышать! Между прочим, KeepOutputsOnBP — отличная переменная. Когда он установлен в TRUE, вы можете остановить программу с точками останова, и все выходы сохранят свое состояние. Обычно все выходы устанавливаются на 0, поэтому двигатели и т. д. отключаются. - person Quirzo; 09.01.2019

Первое, что приходит на ум, это интерфейс автоматизации TwinCAT. По сути, это API, который позволяет вам получить доступ к определенным частям того, что вы обычно делаете в Visual Studio/TwinCAT. Библиотеки интерфейса автоматизации TwinCAT устанавливаются вместе с вашей установкой TwinCAT, и есть несколько способов получить к ним доступ. Документация и примеры для API в основном написаны на C#/.NET.

См. документацию здесь: http://download.beckhoff.com/download/document/automation/twincat3/AutomationInterface_pdf_EN.pdf

В частности, для вашего случая, я думаю, это было бы интересно: "nofollow noreferrer">https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_automationinterface/2488994571.html&id=155511204171430517

При этом вы можете сравнить локальный проект (который вы также откроете через интерфейс автоматизации).

person Jakob    schedule 23.08.2018
comment
Спасибо, это может быть полезно для меня. Я отмечу ответ как принятый, если пойду на это :) - person skari; 23.08.2018