Я пытаюсь создать управляющий модуль для купола телескопа. Я буду использовать ПЛК Beckhoff. Я не уверен, как пройти весь процесс. У меня есть знания C ++, но я не уверен в программировании ПЛК с использованием TwinCAT.
Является ли программирование в TwinCAT для ПЛК так же, как и написание любой другой управляющей программы? Кроме того, я должен пойти на модуль конечного автомата? Однако из-за моих скудных знаний в области программирования я не уверен, смогу ли я справиться с программированием конечного автомата.
Что следует учитывать для данного конкретного приложения:
Было бы лучше иметь развернутую развертку: input => logic => output, что характерно, например, для примера. лестничная логика или эквивалентный структурированный текст. На мой взгляд, структурированный текст будет легче редактировать и понимать.
Что касается C ++, вполне возможно эмулировать цикл ПЛК в C ++:
В этом центральном цикле непрерывно выполняются следующие действия:
. читать с датчиков
. выполнять логические операции и вычисления
. запись в исполнительные механизмы (двигатели в этом случае)
Преимущество «настоящего» ПЛК заключается в том, что вы сможете отлаживать в режиме реального времени, наблюдать и изменять все переменные во время активной работы.
Также вполне возможно подражать этому в C ++.
Но для сравнительно простого проекта я бы придерживался существующего ПЛК.
Поэтому структурированный текст или лестничная логика кажутся мне наиболее подходящими.
TwinCAT 3, среди других языков, может быть запрограммирован на C ++ (также TwinSAFE может быть запрограммирован на C ++). Это не стандартный C ++, а ограниченная версия. Кроме того, программирование на C ++ в TwinCAT 3 немного сложнее, и вам нужно сделать несколько дополнительных шагов для интеграции кода C ++ в задачу TwinCAT по сравнению с языками МЭК 61131 (ST, CFC, SFC, IL, LADDER и т. Д.). ,
Например, ST — простой язык, очень похожий на PASCAL, C ++ или C #. Графические языки для программирования ПЛК (такие как CFC / SFC) чрезвычайно рекомендуются и очень и очень мощные. Эти языки помогают вам кодировать очень похожим образом, поскольку машина работает электрически, и если у вас есть некоторые представления об электричестве, вы найдете их довольно простыми и приятными.
Основное различие между программированием ПЛК и обычным программированием заключается в том, как работают ПЛК, как это прекрасно описано по ссылке, размещенной Жаком де Хугом. Каждый цикл или цикл ПЛК состоит из трех этапов:
Сторожевой таймер следит за циклом, чтобы убедиться, что он выполняется во время цикла (обычно 10-20 мс) и что следующий цикл запускается в соответствующем временном интервале. Если развертка не завершена во время развертки, она сбрасывается в начало и может привести к остановке ЦП.
Таким образом, ПЛК работает как непрерывный цикл без конца, а обычное приложение для ПК имеет начало и конец приложения. Кроме того, управление памятью и ориентация FB / объекта в программировании ПЛК значительно отличается от программирования на ПК, и C ++ не очень хорошо подходит для модели ПЛК.
TwinCAT основан на CodeSyS, поэтому он работает очень похоже на Somachine от Schneider или другие ПЛК от Omron, ABB, Allen Bradley и т. Д.
Я думаю, что вместо программирования конечного автомата на C ++ / ST / каким бы то ни было лучшим выбором было бы использование контроллера SFC с резервным копированием некоторого кода CFC / ST. Имейте в виду, что просто с помощью SFC у вас есть конечный автомат, разработанный для вас Бекхоффом, и вам нужно только запрограммировать (в ST или что-то еще), что делать на каждом шаге и как переходить с одного шага на другой.