March 11, 2015

Открытые разработки под TwinCAT

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


C/C++


Драйвер ядра Линукс для доступа к вводу/выводу блока питания Beckhoff CX-1100 контроллера Beckhoff CX-1000 embedded PC. Позволяет получить доступ к шине K-Bus и IP-Bus.

Реализация ADS-протокола.

Реализация ADS-протокола для Linux-систем.

Euro Trucker Simulator 2 телеметрия для использования совместно с Beckhoff ПЛК. C++ надстройка для использования ETS2 telemetry SDK. В текущей реализации, отправляет линейное ускорение кабины (X, Y и Z), а также ее максимальные и минимальные значения через функции Automation Device Specification (ADS). Также включает в себя проект для TwinCAT 2 (давно не обновлялся).


Java


Библиотека для доступа к ПЛК Бекхофф через ADS.


Python


Реализация Beckhoff ADS для Python.

Клиент на python реализующий Beckhoff Twincat AMS/ADS протокол.

Python прослойка для TwinCAT ADS.


Coffee Script


Беспроводное управление освещением, подробнее: http://houm.io


GOlang


Beckhoff ADS клиент для языка программирования Go (golang).


ST


Реализация протокола SMTP для контроллеров Beckhoff.


JavaScript


NodeJS реализация протокола Twincat ADS.

TAME - это JavaScript библиотека для простого доступа к TwinCAT ADS WebService.


C#


Реализация протокола Twincat ADS для WinRT.

Реализация протокола Twincat ADS для .NET.

nikvoronin/adsremote
Высокоуровневый интерфейс для ADS API. Значительно упрощает работу с переменными ПЛК-задачи, шиной контроллера и т. п.

March 10, 2015

Физические интерфейсы и модули расширения

Официально поддерживаемые промышленные и не очень шины (нужно понимать, что иногда протокол и физический интерфейс сваливают в одну кучу):

EtherCAT, Ethernet, Lightbus, PROFIBUS, PROFINET, EtherNet/IP, CANopen, DeviceNet, Interbus, SERCOS, ControlNet, CC-Link, USB, Modbus RTU, Modbus TCP, RS232/RS485, AS-Interface, IO-Link, DALI, EIB/KNX, LON, DMX, MP-Bus, SMI, M-Bus, PTP/IEEE 1588, BACnet/IP.


По слухам:
  • 1-wire (эмуляция через RS232).
  • Все, что совместимо с RS232/485 и Ethernet.


Модули расширения EtherCAT


  • ES/KS модули (EtherCAT terminals) имеют съемную панель для коммутации проводов. Считается, что это удобнее для монтажа. В остальном ничем не отличаются от EL/KL.
  • XFC — модули с высоким быстродействием (от 1 мкс), поддержкой отпечатка времени (timestamp), поддержка интегрирования дополнительных шагов дискретизации для повышения точности (oversampling).
  • TwinSAFE — модули желтого цвета для обеспечения безопасности.


Дискретные входа — EL1xxx
  • 5/12/24/48В DC.
  • XFC, 24В — EL12xx.
  • TwinSAFE, 24В — EL19xx.
  • 120В AC/DC, 230В AC — EL17xx.
  • Счетчики (до 100кГц, 32 бита) — EL15xx.

Дискретные выхода — EL2xxx, EM2xxx
  • 5/12/24В DC.
  • 30В AC/DC, тристабильные (до 230В AC) — EL27xx.
  • XFC, 24В DC — EL22xx.
  • TwinSAFE, 24В DC — EL29xx.
  • Релейные (до 230В AC) — EL26xx.
  • ШИМ (24В, 1А), частотные (до 4МГц), контроля тока — EL25xx.

Аналоговые входа — EL3xxx, EM3xxx
  • ±75мВ (24 бита), ±200мВ — EL36xx.
  • 0..10В
  • 0..30В, 12 бит
  • ±10В
  • 0..20мА
  • 4..20мА
  • ±10мА
  • Термопары, мВ
  • Терморезисторы (RTD)
  • Потенциометры
  • Мосты
  • Измерения параметров трехфазной сети
  • Цифровой мультиметр: ток, напряжение (18 бит)
  • Сенсора ускорения (IEPE)
  • Измерения сопротивления
  • Измерения мощности
  • Измерение давления — EM37xx.

Аналоговые выхода — EL4xxx
  • 0..10В
  • ±10В
  • 0..20мА
  • 4..20мА
  • ±10мА

Позиционирования — EL5xxx
  • SSI
  • SinCos 1Vpp
  • EnDat 2.2
  • инкрементального энкодера: дифф. RS485; 24В, 32 бита

И еще немного других интерфейсов. Линейка постоянно пополняется и все целиком перечислить сложно:
  • Передача данных — EL6xxx.
  • TwinSAFE логика — ELx9xx.
  • Управление движением (модули на дин-рейку) — EL7xxx
  • Высокоточные измерения — ELMxxxx.
  • Для взрыво- пожаро- опасных зон (помещения Zone 2) — ELXxxx.



Обновлено: 13 мая 2017 г.

March 5, 2015

2015. С чего начать?



Начать знакомство можно с:

Скачать TwinCAT можно по ссылке:
http://beckhoff.com/english.asp?download/tc2-download.htm

При запросе на регистрацию, выберите "Download as a guest" и заполните предложенную форму. Проверьте адрес электронной почты, на него придет ссылка для скачивание TwinCAT. 

Среда конфигурирования и разработки - пожизненно бесплатная. Контроллерное ядро работает 30 дней в полнофункциональном режиме.

Для создания контроллера из компьютера, а также конфигурирования и программирования нужна версия "TwinCAT 2.11 R3". Только для конфигурирования и программирования, можно использовать "TwinCAT 2.11 x64 Engineering". Engineering-версия идет без ПЛК-ядра, зато работает во всех версиях Windows.

Дополнительные ссылки на русскоязычные статьи:

И наиболее полное, четырехсот страничное описание работы с TwinCAT 2, с примерами, программами, пошаговыми руководствами и картинками, но на английском языке: TwinCAT 2 Manual v3.0.1
Это руководство предназначено для тех, кто интересуется технологией TwinCAT: электриков, инженеров, исследователей, программистов; материал покрывает все уровни подготовки специалистов.

Это руководство стало результатом работы инженеров компании "Beckhoff Automation". Мы постоянно пересматриваем и правим информацию для достижения максимально возможной точности и корректности изложения. Ничто не идеально, но мы стараемся приблизиться к этому. Если что, пишите автору.

Проблемы с CHM

Справочная система постепенно переползает на использование PDF-файлов (в параллель с онлайн-системой), но до сих пор остаются доступными chm-файлы, с которыми есть одна очень неприятная проблема - после скачивание и открытия файла, пользователь получает пустой документ: ничего нет, разделы есть, содержимого - нет.

Что советует официальная справка:
  1. Скачать chm-файл. Например, на "Рабочий стол".
  2. Кликнуть файл справки правой кнопкой мыши и выбрать пункт "Свойства".

  3. Нажать кнопку "Разблокировать", затем "ОК"


Теперь chm-файл будет открываться нормально.

February 20, 2015

Роутеры AMS и роутеры ADS

ADS (Automation Device Specification) – протокол взаимодействия устройств между собой, не зависит от оборудования и не зависит от шины по которой устройства общаются.

AMS (Automation Message Specification) – содержимое и структура сообщений ADS.

Каждое устройство или программный сервис ADS имеет свой уникальный номер или номер порта (AdsPortNr). Часть номеров заранее занята стандартными и системными сервисами.

Общение между ADS-устройствами может происходить поверх любой сети, а в разных сетях – разная адресация и, вообще, все разное. Кто-то должен перебрасывать мостик между «тем и другим»; в TwinCAT этим занимается AMS Message Router (AMS-роутер, ADS-роутер или просто роутер). Для примера, возьмем ситуацию, когда контроллер извне общается через Ethernet, а внутри через EtherCAT.

Каждый контроллер шины имеет собственный ADS-роутер. В данном случае, он будет транслировать IP-адреса и пакеты Ethernet в AmsNetId-адреса и пакеты EtherCAT. Например, на EtherCAT-шине AmsNetId-адрес устройства = 5.2.100.109.1.1, это же устройство на шине Ethernet может иметь адрес = 192.168.1.100.

Часто, для удобства, начальные части адресов делают одинаковыми: 192.168.1.100.1.1 и 192.168.1.100, но совпадать они не обязаны и часто совпадают из-за того, что конфигуратор автоматически сформировал AmsNetId-адрес из IP-адреса: взял IP-адрес и приписал к нему «.1.1».
ADS и AMS - это разные вещи: один – это архитектура устройств, другой – структура сообщений. Соответственно, ADS-роутер занимается передачей пакетов и трансляцией адресов между устройствами и сервисами. Термин AMS-роутер чаще употребляется в значении трансляции адресов.
  • AMS-адреса никак не связаны с IPv6.
  • AmsNetId – это на самом деле адрес AMS-роутера, а не устройства.
  • Устройства (как и сервисы) адресуются по номеру порта: 801, 501, и т. п.



Настройка роутера




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

Диалог задает Static Route. Записи такого типа существуют вечно. Точнее, до тех пор, пока пользователь ее не удалит. Вечность записи обеспечивает системный реестр операционной системы:
HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\Remote\
Ключи можно удалять и добавлять через редактор реестра: роутер продолжит работать с новой конфигурацией, перезапускать его не требуется. Кстати, Slow Connection задает очень долгое ожидание подключения устройства и никак не влияет на скорость обмена с устройством. Если галку снять, таймаут будет равен двум секундам.

Если заглянуть под капот устройств c Windows CE 5/6/7, то мы увидим похожую картину. Разве что ветка реестра… хм, она будет той же самой.

В TwinCAT System Manager можно обнаружить еще несколько разновидностей роутинга: Temporary, Current и Project:
  • Current – фикция и обман, всего лишь вкладка, отображающая на выбранном устройстве все активные на данный момент записи роутера.
  • Project – запись роутера которая пропишется при активации конфигурации. Ее очень удобно хранить вместе с конфигурацией проекта (например, когда нужно «залить» 1500 контроллеров для «кинематического дождя»).
  • Temporary – я долго искал, где она хранится, пока не обнаружил ее в памяти Windows-службы TwinCAT System Service. Соответственно, эти записи роутера живут до первого перезапуска сервиса или же перезапуска операционной системы (или контроллера).
  • …и конечно же Static – его также можно создать здесь.

Если из системного лотка создаются записи для локальной системы, то с помощью System Manager можно создавать записи роутера для удаленной системы и записи между удаленными системами.

Стоит учесть, что не все устройства содержат полноценные роутеры – некоторые формируют AmsNetId на основе IP-адреса (например, так делали графические панели Вейнтек) или каким-либо другим способом. Тем не менее, перед работой с протоколом ADS нужно каким-либо способом создать записи в роутерах: как с «этой стороны», так и с «той стороны».

February 16, 2015

Многозадачность системы реального времени


Система TwinCAT позволяет создать до четырех подсистем реального времени (Run-Time System). Они будут работать параллельно, если доступно четыре ядра процессора, или как-то делить процессорное время, если ядер меньше.

В каждом рантайме можно организовать параллельную работу четерех задач (Task), т. е. всего получается 16 параллельных задач, которые могут взаимодействовать друг с другом внутри своего рантайма. Фактически задачи работают последовательно, но внутри задачи будет казаться, что все работает параллельно. Как таковые задачи нужны для удобства задания времени цикла программы; это спорно, но похоже на правду.

Визуализация, кстати, автоматически добавляет две задаче: одна - для вывода интерфейса (рисования графики, там время цикла совсем большое), другая - для пользовательского ввода (побыстрее, но медленнее технологического цикла).



  • Переменные, имена программ, ФБ и пр. POU "принадлежат" рантайму, а не задачам (см. у них номер порта отличается от номера порта задач и совпадает с номером порта рантайма).
  • ADS.API библиотеки подключаются к рантайму (опять-таки, см. номер порта), т. к. именно образ рантайма публикуется ADS-сервером.
  • В System Manager'e переменные из разных задач отображаются в первой задаче: просто так сделано.



  • Задачи - это по сути список вызова программ или глобальных экземпляров ФБ (Program Call, см. PLC Control → Resources → Task configuration).
  • Задачи одного рантайма могут иметь разное время циклов. Это влияет на время цикла программы, назначенной задаче. Например, вызов одной и той же программы из разных задач, заставит работать программу со временем цикла вызывающей задачи.
  • При вызове одной и той же программы из разных задач, программа по прежнему существует в единственном экземпляре, с единым набором локальных переменных и состояний.
  • Порядок обработки задач в рамках рантайма задается приоритетом задачи: 0 - первая, ..., 3 - последняя.
  • В рамках одного рантайма программы могут вызывать друг-друга, передавать данные через IN/OUT и глобальные переменные/константы.
  • Если задаче назначено несколько программ, они вызываются в порядке их следования и делят между собой время цикла задачи.
  • Точки останова прерывают все задачи рантайма разом, т. е. действуют на весь рантайм сразу.

February 13, 2015

Основные функции библиотеки TcMC2


Базовые функции движения в NC PTP выполняются с помощью библиотеки TcMC2. Все единицы движения задаются в технических единицах, заданных в конфигурации. Единицы скорости/ускорения/динамики задаются относительно секунд, секунд в квадрате и т. п.
  • MC_Power - включение-выключение силового питания, разрешение движения вперед-назад, коэффициент масштабирования.
  • MC_Reset - сброс ошибок оси.

  • MC_SetPosition - задание текущей позиции, без непосредственного движения.
  • MC_ReadActualPosition - чтение текущей позиции.
  • MC_ReadActualVelocity - считать текущую скорость.

  • MC_MoveVelocity - непрерывное движение с заданной скоростью.
  • MC_MoveAbsolute - движение в заданную абсолютную позицию.
  • MC_MoveRelative - движение в заданную относительную позицию.
  • MC_MoveAdditive - закончить выполнение предыдущей команды, затем, выполнить относительное позиционирование.
  • MC_MoveModulo - модульное позиционирование.
  • MC_MoveContinuousAbsolute - относительное позиционирование с заданной скоростью, а затем непрерывное вращение на заданной скорости.

  • MC_Stop - остановка с блокировкой оси.
  • MC_Halt - приостановка оси до нулевой скорости (без блокировки).

  • MC_GearIn - сцепление мастера и ведомого, электронный редуктор
  • MC_GearOut - отцепление ведомого от мастера.
  • MC_GearInDyn - аналогично MC_GearIn, но позволяет изменять передаточный коэффициент "на ходу", без остановки оси.

  • MC_Jog - функционал ручного, дистанционного пульта управления.
  • MC_Home - поиск исходного положения, поиск нуля, referencing.

  • MC_ExtSetPointGenEnable - включить контурный режим.
  • MC_ExtSetPointGenDisable - выключить контурный режим.
  • MC_ExtSetPointGenFeed - вброс задания для контурного режима.

  • MC_TouchProbe (MC_TouchProbe_V2_00) - высокоточное определение позиции (независимо от времени цикла).
  • MC_AbortTrigger (MC_AbortTrigger_V2_00) - остановка высокоточного определения позиции.

February 12, 2015

Совместимость TwinCAT и будущей Windows 10

Тестирование на совместимость проводилось под виртуальной машиной. В эксперименте принимали участие предварительные версии (Technical Preview) Windows 10:
  • Windows10_TechnicalPreview_x32_RU-RU_9926
  • Windows10_TechnicalPreview_x64_RU-RU_9926
  • TwinCAT 2 (2110-2245)
  • TwinCAT 3 (3.1.4016.11)

Результаты: TwinCAT ведет себя аналогично поведению в Windows XP, 7, 8, 8.1.

Для установки TwinCAT 2 под x32 версию Windows 10 нужно выставить совместимость инсталлятора с Windows 7. В остальном, инженерные версии работают нормально (включая Motion Control). По естественным причинам не удалось запустить TwinCAT 3 контроллер под x64 Windows 10, т. к. виртуализация внутри виртуализации.
Обновление от 05.05.2016: В последнем билде 3.1.4020.0 все прекрасно работает.

February 11, 2015

Цифровое управление движением

NC = Numerical Control - управление осуществляется единообразно, независимо от типа привода (синхронный, асинхронный, линейный, шаговый, пр.).

NC PTP = Point-To-Point - движение точка-точка:

  • Движения непрерывные, позиционные, смешанные. Как правило, без интерполяции.
  • Электронный редуктор.
  • Контурный режим совместимый с остальными режимами.
  • Компенсации движения.
  • Линейный, автоматический переход от одного задания к другому (blending).
  • Кулачковые программы (с таблицами позиций и интерполяциями).
  • Диагональные пилы и ножи.

NC I = Interpolation - движения с интерполяциями, по программе в G-кодах:
  • До трех взаимно-интерполируемых осей.
  • Пять инструментальных осей.
  • G-кода, "как в ЧПУ".
  • Группы осей.
  • Одновременное взаимодействие с функциями NC PTP.
  • Расширяемая, настраиваемая визуализация для Windows Emb XP/7.

NC CNC = Сomputer Numerical Control (ЧПУ) - полноценная система ЧПУ.