April 15, 2015

Диалог о CNC

ЧПУ (CNC) система Beckhoff состоит из нескольких уровней (разделение условное, для удобства объяснения):
  1. CNC-ядро – драйвер операционной системы.
  2. HLI-интерфейс (High Level Interface).
  3. ПЛК-программа уровня runtime TwinCAT (IEC 61131-3). ПЛК –Программируемый Логический Контроллер.
  4. 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 заявляет открытую модульную архитектуру? Является ли это важным фактором для системы в настоящее время?

Да, так как большинство решений на рынке разработаны под конкретные задачи. Открытая модульная архитектура позволяет интеграторам как разрабатывать свои собственные решение «с нуля», так и вносить изменения в готовые решения на всех уровнях.

No comments

Post a Comment

Note: Only a member of this blog may post a comment.