TwinCAT 3, помимо других языков, может быть запрограммирован на C++ (также TwinSAFE может быть запрограммирован на C++). Это не стандартный C++, а ограниченная версия. Кроме того, программирование на C++ в TwinCAT 3 немного сложнее, и вам нужно сделать несколько дополнительных шагов для интеграции кода C++ в задачу TwinCAT по сравнению с языками IEC 61131 (ST, CFC, SFC, IL, LADDER и т. д.). .
Например, ST — это простой язык, очень похожий на PASCAL, C++ или C#. Графические языки для программирования ПЛК (такие как CFC/SFC) чрезвычайно рекомендуются и являются очень мощными. Эти языки помогают вам кодировать очень похожим образом, поскольку машина работает электрически, и если у вас есть некоторое представление об электричестве, вы найдете их довольно простыми и приятными.
Основное различие между программированием ПЛК и обычным программированием заключается в том, как работает ПЛК, как это прекрасно описано в ссылке, опубликованной Жаком де Хоге. Каждый цикл или развертка ПЛК состоит из трех шагов:
- Прочитайте весь входной сигнал процесса. В Beckhoff переменные, полученные через промышленную сеть, считываются прозрачно, как если бы они были подключены непосредственно к ПЛК. Эти сигналы остаются неизменными в течение всего цикла.
- Выполнить код пользователя. В TwinCAT 3 этот пользовательский код может быть запрограммирован на любом из языков IEC 61131, C++ и MATLAB/Simulink. И для C++, и для Simulink требуются дополнительные лицензии.
- Активируйте выходные сигналы. Эти сигналы будут оставаться постоянными для всего следующего цикла, не обращая внимания на фактическое значение переменной в этом цикле.
Сторожевой таймер отслеживает развертку, чтобы убедиться, что она выполняется во время развертки (обычно 10–20 мс) и что следующая развертка начинается в соответствующем временном интервале. Если развертка не завершена за время развертки, она сбрасывается на начало и может привести к остановке ЦП.
Таким образом, ПЛК работает как непрерывный цикл без конца, а обычное приложение ПК имеет начало и конец приложения. Кроме того, управление памятью и ориентация функциональных блоков/объектов в программировании ПЛК существенно отличается от программирования ПК, а C++ не слишком хорошо подходит для модели ПЛК.
TwinCAT основан на CodeSyS, поэтому работает аналогично Somachine от Schneider или другим ПЛК от Omron, ABB, Allen Bradley и т. д.
Я думаю, что вместо того, чтобы программировать конечный автомат на C++/ST или любом другом, лучшим выбором было бы использование контроллера SFC, подкрепленного некоторым кодом CFC/ST. Имейте в виду, что просто используя SFC, вы получаете конечный автомат, разработанный для вас Beckhoff, и вам нужно только запрограммировать (на ST или как-то еще), что делать на каждом шаге и как переходить от одного шага к другому.
person
Teodoro López
schedule
23.02.2017