December 30, 2015

Универсальная летающая пила

Кроме базовых возможностей управления движением (без интерполяций), TwinCAT NC PTP позволяет осуществлять более сложные виды управления движением. Одним из таких видов движения является «универсальная летающая пила» (Flying Saw).

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

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

Минимальные требования:
  • ПЛК Бекхофф уровня TC40 и выше. Например: CX9020, P205NC, CX5020, CX2020.
  • TwinCAT 2 (NC PTP или NC I) или TwinCAT 3 (TC3 PLC/NC PTP 10, NC I).
  • Библиотека «NC Flying Saw». Заказные номера TS5055 (TwinCAT 2) или TF5055 (TwinCAT 3).

В какой-то момент библиотека была переписана и названа "Универсальной летающей пилой" (Universal Flying Saw), т. к. теперь обеспечивала поддержку разных видов пил (обычная летающая пила, диагональная летающая пила и др.).


Обычная летающая пила


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

Передаточное отношение между пилой и конвейером рассчитывается как обычная пропорция Vs / Vm. Если они равны, то получим передаточное отношение Vs / Vm = 1.



Диагональная летающая пила


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

В данном случае передаточное отношение рассчитывается чуть сложнее, т. к. диагональная скорость пилы складывается из скоростей движения по горизонтали и вертикали: Vs / [ cos(α) * Vm ].



Библиотека TcMC2_FlyingSaw.lib


  • Оси могут быть реальными, виртуальными (симуляция) или какими-либо другими внешними источниками актуальных данных.
  • Оси синхронизируются из любого состояния осей (стоп, движение вперед, назад, и т. п.).
  • Простая синхронизация по скорости.
  • Точная синхронизация по положению.
  • Скорость синхронизации может быть задана с учетом передаточного отношения.
  • Дополнительные опции позволяют задать реакцию на случай внезапного реверса движения конвейера.


В отличие от обычного электронного редуктора, доступного в NC PTP, сцепление и последующая синхронизация могут выполняться «на ходу»: когда скорости осей не равны нулю. Такая функция не доступна в электронном редукторе NC PTP.

Весь функционал библиотеки сосредоточен в двух функциональных блоках: MC_GearInVelo и MC_GearInPos. Первый просто синхронизирует оси по скорости. Второй синхронизирует оси ориентируясь на заданную позицию, т. е. только по достижении заданной позиции, оси будут синхронизированы. После этого, функциональный блок можно сбросить. Дальнейшее поддержание синхронности производится автоматически подсистемами NC и сервоусилителем.

Основной орган управления пилой – это позиция. Управляя позицией синхронизации, можно регулировать длину отреза материала (CUTTINGLENGTH).


December 29, 2015

Структурные типы данных AX5000

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

Для работы с такими параметрами нужно сделать чуть больше телодвижений, чем при работе с простыми типами данных: перед записью структурных параметров, нужно "завернуть" их в структуру-контейнер.
Этот контейнер – обычный массив байт, оформленный определенным образом, со строгим соблюдением порядка полей в структуре. 
В самом начале контейнера содержится два поля: размер структуры (WORD, 2 байта) и максимальный размер структуры (WORD, 2 байта). Затем, в заданном порядке, идут данные конкретного параметра. Размеры задаются в байтах без учета длины самих полей размера.
В документации указана общая длина параметра в битах с учетом длины полей размера, тогда как сами поля размера должны содержать длину в байтах без учета длины самих полей размера. Еще проще – общая длина в байтах минус 4 байта.
Посмотрим на примерах. Возьмем параметр P-0-0251 – это параметр конфигурации сканера позиции.
  1. Берем из конца таблицы значение общей длины: "Data length: 96". Это общее значение длины в битах.
  2. Делим на 8, чтобы получить значение общей длины в байтах = 96 бит / 8 = 12 байт.
  3. Вычитаем длину поля длины (WORD, 2 байта) и длину поля максимальной длины (WORD, 2 байта) = 12 - 2 - 2 = 8 байт. Получили значение поля максимальной длины. Если мы записываем все поля структуры, то это же значение подойдет и для поля длины.

Еще один пример – параметр вывода текста на дисплей сервоусилителя P-0-0313.
Data length: 416 бит / 8 - 4 байта = 48 байт.

Для задания таких параметров удобно создавать собственные структуры вида:

TYPE ST_SoE_ParameterList :
    STRUCT
        Length    : WORD := 48;
        MaxLength : WORD := 48;

        First  : UDINT;
        Second : INT;
        Third  : WORD;
        (* ... *)
    END_STRUCT
END_TYPE


Тогда вся работа по их записи сводится к заполнению полей структуры, а запись производится точно так же, как и для простых типов данных:

ParamList : ST_SoE_ParameterList;

ParamList.First  :=  1;
ParamList.Second := -2;
ParamList.Third  :=  3;

SoeWrite(...
    pSrcBuf  := ADR(SoeList),
    cbBufLen := SIZEOF(SoeList),
    ...);


Если переменная такого структурного типа используется многократно, можно очищать ее через функции работы с областями памяти:

MEMSET(ADR(ParamList) + 4, 0, SIZEOF(ParamList) - 4);

December 23, 2015

Debian Linux на контроллерах CX9020

Появился официальный набор скриптов и патчей для сборки и установки Debian Linux на компактные контроллеры CX9020.

Набор выложен в открытом доступе на гитхабе и позволяет собрать образ Linux для флэш-диска, с которого впоследствии будет загружаться операционная система контроллера.

Не все контроллеры CX9020 будут работать с подготовленным образом. При заказе контроллера необходимо указать специальный артикул CX9020-0100. Такой контроллер будет загружаться с подготовленной флэшки, а не со встроенного в ПЛК загрузчика.

Scripts to build a Debian based Linux system for the CX9020 Embedded PC


Обновление: для сборки понадобится Linux-среда; без объяснений рекомендуют Ubuntu LTS. Теребить службу тех.поддержки не имеет смысла: в случае возникновения вопросов - создавайте тикеты в репозитории гитхаба.

December 10, 2015

Виртуальные каталоги FTP-сервера

Иногда возникает необходимость получить удаленный доступ к файловой системе контроллера на базе Windows CE, для этого в нее предустановлен FTP-сервер. Такая необходимость вызвана системными ограничениями самой операционной системы.

Управлять и настраивать FTP-сервер легко и просто, главное не забыть его активировать, т. к. изначально он отключен. Все эти манипуляции производятся из CXConfigurator'а панели управления. Настройки интуитивно понятны, за исключением выпадающего меню, позволяющего управлять пользователями и паролями этих самых пользователей.



Рекомендуется сразу же отключить анонимный вход и создать пару-тройку полезных пользователей с паролями. После активации и перезагрузки можно подключаться с помощью программ клиентов FTP: WinSCP, FAR, и пр., а можно, используя стандартный проводник Windows (см. в конце статьи).

Сложного здесь ничего нет, зато есть фича – виртуальные каталоги. Для создания и последующего доступа к ним, мы заглянем чуть глубже – в реестр: Start → Run... → regedit



Те же самые настройки, но теперь в реестре. Для начала разберемся зачем нужны виртуальные каталоги.

По рекомендации выше анонимный доступ был отключен, но мы по прежнему хотим получать доступ в различные каталоги контроллера и делать это как можно более удобно и безопасно. Виртуальные каталоги позволяют скрывать от пользователя, где же на самом деле находятся файлы или просто сократить путь к файлам до одного-двух слов в адресной строке программы клиента FTP.



Добавляем в реестр новую запись и получаем в проводнике виндоус путь покороче:

December 8, 2015

Новый HMI для TwinCAT 3

С выходом новой системы человеко-машинного интерфейса (HMI), открытые системы Бекхофф изменяют подход к средствам разработки, программирования и дизайна интерфейсов промышленных систем. В отличии от проприетарных (закрытых) инженерных и коммуникационных систем, новый TwinCAT HMI позволяет использовать такие инструменты как Visual Studio® и HTML5 для разработки, а также защищенные протоколы HTTPS и WebSockets Secure (WSS) для передачи данных. При этом отсутствует зависимость от операционной системы, т. к. клиент взаимодействует с системой через браузер.

В таком ключе Бекхофф действительно разработал открытое и высокопроизводительное решение для современного мира, связанного коммуникациями и движущегося к Индустрии 4.0.
Предполагаемое время выхода TwinCAT 3 HMI – 3-й квартал 2016 года. 

Преимущества

  • Эффективная и простая разработка за счет интеграции в Microsoft Visual Studio.
  • Не зависит от аппаратной платформы.
  • Ориентирован на веб-технологии: анимация, графика, дизайн (HTML5, JavaScript).
  • Мощная и гибкая архитектура.
  • Расширяемость за счет модулей.
  • Использование языков высокого уровня.
  • Привычный набор графических инструментов и ПО.



Из картинки выше, видно, что подсистема реального времени, посредством ADS-сервера, организует интерфейс для доступа к данным внутренней шины ПЛК. По прежнему существует возможность подключиться из программы написанной на языке высокого уровня к переменным ПЛК-задачи с помощью ADS.API и таким образом реализовать свою собственную систему визуализации данных.

Нововведение в том, что на этот раз TwinCAT предлагает упразднить задачу разработки собственной системы и воспользоваться уже готовой. Новая система представляет собой два новых слоя. Первый – это веб-сервер визуализации с "алармами" и расширениями (HMI Server Extension). Второй слой – веб-клиент работающий на стороне клиента в обычном веб-браузере. Поведением второго слоя также можно управлять с помощью скриптового языка JavaScript.

Все это уже было раньше, но оно не было настолько тесно интегрировано. Теперь же, после слияния System Manager'а и системы программирования PLC Control, в Visual Studio добавляется универсальная система разработки веб-визуализации.



Простота применения


Содержимое новой HMI строится как набор HTML5-страниц. Готовые шаблоны HTML5-страниц уже встроены в систему для ситуаций когда отсутствует или не требуется дизайнер, что тем не менее не мешает взять дизайнера и разработать свой собственный уникальный дизайн.

HMI такого вида может самостоятельно подстраиваться под ориентацию, пропорции или графическое разрешение экрана. Гибкость организации HMI – как набора модулей и HTML5-страниц, позволяет внедрять одни сложные элементы управления в другие. При этом сохраняется возможность использовать JavaScript для контроля и управления логикой работы клиентской стороны. Не обязательно уметь программировать на JavaScript, достаточно настроить элементы с помощью встроенного графического редактора.

Вывод на стороне клиента осуществляется через браузер, а т. к. браузеры сейчас есть на различных аппаратных платформах – HMI будет одинаково работать как на ARM или Core-i процессорах, так и на специализированных многоядерных платформах. При этом нет необходимости в адаптации или переработке содержимого HMI-страниц.
Логику HMI можно запрограммировать как на стороне клиента с помощью JavaScript, так и на стороне сервера. Такое разделение позволяет также защитить программный код как интеллектуальную собственность.



Организация связи и безопасность


Браузер общается с HMI-сервером напрямую, через защищенные протоколы HTTPS или WebSockets Secure (WSS). HMI-сервер, в свою очередь, общается с контроллером через различные протоколы: OPC UA, ADS (Automation Device Specification). Другие протоколы могут быть реализованы как серверные расширения.

Возможность использовать собственные расширение на стороне сервера позволяет легко использовать модули и  функции как разработанные заново, так и привнесенные из других проектов. Это может быть логика технологического процесса написанная на C++ или .NET, а может быть и расширение, реализующее новый промышленный протокол.



TwinCAT HMI-сервер не ограничивается одной подсистемой реального времени, он может агрегировать данные с нескольких систем, т. е. объединять или просто делится информацией с несколькими клиентами.


December 1, 2015

EtherCAT-синхронизация в сервоусилителях AX5000

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

EtherCAT-телеграммы (ECT) рассылаются EtherCAT-мастером (EtherCAT Master) по всем подключенным EtherCAT-подчиненным устройствам (ESC). ESC – это электронный модуль (микросхема), осуществляющий постоянный синхронный процесс обработки и/или копирования данных (содержащихся в телеграммах) через заданные интервалы времени по прерываниям таймера. Конфигурация ESC описывает, какая информация, и как, будет обработана из телеграммы. В приводных технологиях используются очень малые интервалы времени, поэтому очень важно поддерживать непрерывность и постоянность синхронности данных и подчиненных устройств в целом. Синхронность подчиненных устройств обеспечивается так называемыми "распределенными часами" (Distributed Clocks, подробнее см. документацию по EtherCAT).



EtherCAT-мастер


При включении и последующем старте системы, EtherCAT-мастер читает конфигурационный файл AX5000 и записывает "ΔT0 = 250мкс" и "ΔT1 = длительность NC-цикла" в соответствующие регистры подчиненного. ESC постоянно считывает эти значения из регистров и подает сигналы Sync0 и Sync1. Потеря или изменение содержимого этих регистров во время работы, может привести к проблеме выдачи сигналов Sync0 и Sync1.


EtherCAT-подчиненный контроллер (ESC)


ESC-контроллер для синхронизации сервоусилителя AX5000 регулярно, через промежутки времени ΔT0 и ΔT1, отправляет в процессор сервоусилителя два сигнала прерывания – Sync0 и Sync1.

Sync0

Сигнал или прерывание Sync0 генерируется каждые 250мкс. В случае ошибки, соответствующая ось переходит в состояние ожидания (стоп) с рампой "EStop ramp".
  • F414 – если прерывание не проходит, то процессор генерирует код ошибки F414 (см. рисунок ниже, метка F0).
  • F409 – прерывание Sync0 может быть выбрано из трех значений: 62.5мкс, 125мкс, 250мкс. При других значениях интервала генерируются ошибки F409.
  • F410 – возникает, если прерывание Sync0 не активировано (не генерируется) в ESC.
  • F411 – длина импульса прерывания не соответствует стандарту.

Sync1

Прерывание Sync1 рассылается со временем цикла NC-задачи (SAF). Время цикла всегда пропорционально значению частоты прерывания Sync0 и, по умолчанию, равно 1мс.
  • F412 – интервал Sync1 равен времени интервала Sync0, умноженному на целое число, и должно быть идентично значению параметров S-0-0001 и S-0-0002, иначе произойдет ошибка.
  • F414 – если прерывание не проходит, то процессор генерирует код ошибки F414 (см. рисунок ниже, метка F1).
  • F413 – ошибка возникает, если прерывание Sync1 не активировано или не генерируется в ESC.
  • F411 – длина импульса прерывания не соответствует стандарту.




Телеграмма принята (ТЧК)


ESC прочитает телеграмму (ECT), как только она поступит. Допустимый момент поступления находится непосредственно перед Sync1. Момент ТЧК (EOT) немного запаздывает после прерывания Sync1 на время ΔT2. Данные, предназначенные для ESC, затем читаются из телеграммы и записываются в область данных SyncMan-2, после чего, состояние SyncMan-2 устанавливается в значение "SyncMan записан". Контроллер копирует данные из SyncMan-2 в его собственную область памяти только при условии, что в момент Sync1 установлено состояние "SyncMan записан". И, наоборот – данные не копируются, если статус "SyncMan записан" не установлен (см. рисунок выше, метка F2).

Если данные не будут дважды благополучно скопированы – контроллер выдаст ошибку F415, и соответствующая ось перейдет в состояние ожидания (стоп) с рампой "EStop ramp".
Допустимое отклонение наличия телеграммы в требуемый момент времени  равно нулю, т. е. не допустимо! EtherCAT-мастер должен обеспечить своевременное поступление данных в SyncMan-2.

Как пример, можно рассмотреть наличие "дрожания" (jitter), из-за которого отклонение времени прибытия не равно нулю и телеграмма прибыла с опозданием; что может вызвать срыв синхронизации.

Ошибка F415


Распределенные часы: нарушена синхронизация данных.
  1. Таймер контроллера регулярно генерирует прерывания (по умолчанию, базовое время (base time) = 1мсек).
  2. Отдельные задачи обрабатывается диспетчером задач в соответствии с внутренними правилами системы (их нельзя изменить, но можно повлиять на них, см. приоритеты задач).
  3. Если задача может отработать как больше, так и меньше времени, т. е. время ее выполнения сильно зависит от вычислительной нагрузки, то следует поместить процесс обновления данных "I/O Update" перед началом задачи (включить параметр задачи "I/O at task begin"). Это исключит одну из причин некорректной синхронизации.
  4. С помощью процесса "I/O Update" результирующие данные передаются в подсистему TwinCAT-IO и впоследствии будут отправлены в виде телеграммы для подсоединенных устройств. EtherCAT-телеграмма пробежит через все устройства и сбросит и/или подберет данные соответствующих устройств.
  5. Порядок обработки задач зависит от приоритета задачи. Задача с большим приоритетом обрабатывается в первую очередь и раньше других отправляет данные в TwinCAT-IO подсистему (которая занимается обработкой телеграмм). Проблемы обычно появляются, когда отдельные задачи имеют различную длину времени цикла выполнения и в какой то момент могут начать конкурировать за место в телеграмме.
  6. Асинхронные задачи могут вмешаться в произвольный момент времени и разрушить синхронизацию.