ЧПУ (CNC) система Beckhoff состоит из нескольких уровней (разделение условное, для удобства объяснения):
- CNC-ядро – драйвер операционной системы.
- HLI-интерфейс (High Level Interface).
- ПЛК-программа уровня runtime TwinCAT (IEC 61131-3). ПЛК –Программируемый Логический Контроллер.
- HMI-программа уровня пользователя (C#.NET), которую, можно называть терминалом оператора. HMI – Human Machine Interface.
(1) Код CNC-ядра закрыт от модификации пользователем, но может конфигурироваться с помощью TwinCAT System Manager.
(2) Существует HLI-интерфейс для обмена информацией с runtime-уровнем (уровнем ПЛК-программ). Он построен на основе разделяемой области оперативной памяти. Подробнее можно прочитать в «
Beckhoff Information System», раздел «
TwinCAT CNC HLI Interface».
(3) ПЛК-программа реального времени, уровня runtime TwinCAT. Программа подставляется вместе с CNC-системой в виде исходного кода на языке ST (IEC 61131-3). Она использует HLI-интерфейс и предоставляет разработчику возможность вносить свои изменения в алгоритм работы ЧПУ-системы; реализует часто используемые функции; поддерживает связь HMI←→HLI←→CNC-ядро. Эта же ПЛК-программа осуществляет связь и обмен данными внешнего мира с контроллером ЧПУ.
(4) Программа разработанная на C#.NET (с применением WinForms или WPF), предоставляющая интерфейс оператора. Исходный код программы закрыт, но она позволяет разработчику изменять свой внешний вид с помощью настроек самой программы. Поддерживается многоязычие: английский, русский, немецкий, китайский, любой другой необходимый язык. Кодировка Unicode позволяет использовать практически любой естественный язык. Можно изменять расположение экранных кнопок, изображений, шрифтов и пр. Изначально, вместе с программой, поставляются несколько надстроек позволяющих обмениваться данными с ПЛК-программой (с третьим уровнем). Надстройки конфигурируются там же.
Если необходимо, разработчик может сам разработать надстройку, которая представляет собой сборку (assembly) на любом из языков .NET (C#.NET, VB.NET, ...). Все формы WinForms из надстройки могут впоследствии использоваться в терминале оператора.
Каждая надстройка должна поддерживать паттерн внедрения зависимости (
Dependency Injection Pattern). Надстройка может взаимодействовать с HMI-терминалом, через предоставляемые паттерном интерфейсы: передавать/получать данные от пользователя, видоизменять внешний вид терминала и прочее. В свою очередь HMI-терминал предоставляет API ADS-сервера, с помощью которого надстройка получает доступ ко всем переменным ПЛК-программы уровня runtime TwinCAT (в моем рассказе – это уровень номер три).
API ADS-сервера, это некая прослойка между миром синхронного реального времени и асинхронным прикладным уровнем. Представляет собой набор библиотек для различных языков программирования. Она бесплатна, без исходного кода, отлично задокументирована в справочной системе, с готовыми примерами использования, поставляется вместе с TwinCAT. Поддерживаются: C/C++, Delphi, C++ Builder, .NET(C#, VB.NET, …), OCX, Java, WebServices, WCF, возможно что-то еще. Используется не только в ЧПУ, но и в проектах произвольного назначения.
ADS.API позволяет получить доступ из прикладных программ пользователя к логическим переменным ПЛК-программы реального времени, а также к адресному пространству контроллера, шине и пр.
Сам по себе ADS – открытый протокол передачи данных, описанный в справочной системе. Существует несколько
сторонних реализаций библиотек для доступа по ADS-протоколу.
Имеется ли возможность не только переконфигурировать терминал, но и осуществлять взаимодействие с ядром системы?
- Конфигурирование внешнего вида терминала.
- Добавление надстроек терминала для изменения его функционала.
- Конфигурирование ядра через настройки.
- Взаимодействие с ядром через HLI-интерфейс и ПЛК-программу реального времени.
Каким образом производится интеграция разработанной надстройки для терминала, с помощью специального ПО?
Разработанная надстройка – это сборка (assembly) .NET, которая выглядит как файл (обычно с расширением .dll). Файл копируется в каталог программы-терминала. В настройках терминала оператор регистрирует имя нового файла, местоположение и какие его «формы» будут использоваться. Для создания надстройки, разработчик может использовать любое ПО, предназначенное для разработки .NET приложений.
А можно ли создать независимое приложение, которое будет выступать в качестве другого терминала, и взаимодействовать с ядром системы и PLC?
Да, можно разработать свое собственное приложение в качестве другого терминала.
Правильно ли я понял, что через программу TwinCAT System Manager производится стандартное конфигурирование ядра, а именно: каналов, осей, входов/выходов системы? Имеется ли возможность именно интеграции в ядро какого-либо решения, разработанного на определенном языке программирования, в соответствии с определенными требованиями?
Ядро закрыто от модификации. Могут модифицироваться ПЛК-программа и программа-терминал. Можно разработать стороннее решение, которое будет интегрировано в штатный терминал системы.
А имеются ли возможности доступа интегрированным в терминал проектам не только к ПЛК программе, но и к основным функциям работы ядра: считывание информации о текущей позиции режущего инструмента, информации об управляющей программе? И есть ли у них возможности влиять на технологический процесс: осуществлять запуск/стоп программы, корректировать подачу, скорость, и т. п.? Если да, то это производится также через API функции шины ADS?
ПЛК-программа является неотъемлемой частью ЧПУ-системы. Не имеет смысла рассматривать ЧПУ-систему без этого слоя, так как это уже будет не ЧПУ-система фирмы Beckhoff, а что-то другое.
Терминал общается с ПЛК-программой через ADS-сервер. ADS-сервер предоставляет доступ к внутреннему адресному и логическому пространству контроллера (в том числе и к данным/переменным ПЛК-программы). ПЛК-программа общается с ядром через разделяемую область памяти. Если хочется выкинуть «лишний» слой, то они, как ни странно, все на своих местах:
- Ядро (CNC Server) – обеспечивает необходимый для ЧПУ функционал.
- ПЛК-программа (PLC Server + IO Server) – обеспечивает управляющий программный слой в подсистеме реального времени, а также необходимые абстракции и функции для связи с внешним миром. На этом же уровне – обработка данных шины контроллера.
- Терминал (HMI) – человеко-машинный интерфейс.
Что касается функционала и влияния на технологический процесс: ПЛК-программа может производить все перечисленные действия.
Как производится передача данных между терминалом и ядром системы TX1270?
Через разделяемую область оперативной памяти. В основном, для этого задействован DMA-контроллер, который разгружает центральный процессор ПЛК, избавляя его от рутины переброса больших объемов данных.
В своих системах ЧПУ Beckhoff заявляет открытую модульную архитектуру? Является ли это важным фактором для системы в настоящее время?
Да, так как большинство решений на рынке разработаны под конкретные задачи. Открытая модульная архитектура позволяет интеграторам как разрабатывать свои собственные решение «с нуля», так и вносить изменения в готовые решения на всех уровнях.