Showing posts with label mqtt. Show all posts
Showing posts with label mqtt. Show all posts

November 6, 2020

Агент данных OPC UA

Настроим агент данных на трансляцию данных из OPC UA сервера. Одновременно оставим без изменения трансляцию из ADS переменных. Пусть ADS работает параллельно с OPC UA. Активируйте конфигурацию каждый раз, когда изменяете что-либо в схеме агента. Он перезапустится с новой схемой автоматически.

ПКМ по пустому месту → Add Gate (OpcUaDevice). В окне `Properties` ввести в поле`Url` адрес своего OPC UA сервера: opc.tcp://192.168.1.100:4840. Добавьте канал подписчика: Add Channel (Subscriber), стрелка вниз 🡇.

Теперь открываем окно `Target Browser`, закладка `OpcUa`, добавляем OPC UA сервер контроллера, выбираем необходимые объекты-переменные и тащим их на "подписчика".

Возможно понадобится донастроить переменные подписчика. В моем случае Агент добавил мусор в имя переменной ns=4;s=MAIN.nCounter. Исправляется в окне `Properties`, поле `URN` и превращается в MAIN.nCounter. Ниже в примере исправлена только одна переменная-символ:

>>> {"Timestamp":"2020-11-06T11:48:08.151","GroupName":"_MQTT Broker_28","MAIN.nCounter":-1946,"ns=4;s=MAIN.rCounter":784486.0}
>>> {"Timestamp":"2020-11-06T11:48:09.150","GroupName":"_MQTT Broker_28","MAIN.nCounter":-1846,"ns=4;s=MAIN.rCounter":784586.0}
>>> {"Timestamp":"2020-11-06T11:48:10.150","GroupName":"_MQTT Broker_28","MAIN.nCounter":-1746,"ns=4;s=MAIN.rCounter":784686.0}

November 3, 2020

Начало работы с агентом данных

Агент позволяет передавать переменные программы и другие данные из одного места в другое. Например, есть группа контроллеров CX8090. На отдельном ПК устанавливается TC3 IoT Data Agent. Он настраивается на проброс данных через интернет на сервер-брокер MQTT. Из брокера данные забираются в базу данных. Позже аналитики анализируют, а сервисный отдел мониторит и бдит. Версия TwinCAT, разрядность и тип процессора, древность контроллеров — все это не важно. Переменные из контроллера можно передавать куда угодно, в обе стороны.

Изображение: Beckhoff Automation

Современные протоколы типа MQTT–AMQTT–RabbitMQ не требуют входящего подключения. Агент и контроллеры могут находится за NAT, файерволом или другой сетевой инфраструктурой. IP-адрес может быть серым и динамическим, но подключение к брокеру всегда исходящее. Поэтому переменные контроллера легко отдавать и легко забирать. В обе стороны.


Лицензии

Для ПК, на котором установливается Агент, необходимы минимум две лицензии: TC1000 | TC3 ADS и TF6720 | TC3 IoT Data Agent. Доступна пробная лицензия на 7 дней.

Лицензирование основано на группах порталов. Порталы объединяются в пакеты (Gate packs). Порталом называют одно подключение. Например, подключение к устройству через ADS или OPC UA. Лицензия TF6720 обеспечивает работу с четырьмя порталами. Большее количество порталов можно получить после покупки дополнительных лицензий (TF6721-TF6724). Количество порталов складываются: TF6720 + TF6721 = 8 порталов.


Принципы работы

Open local, Save local работают со схемой в локальной конфигурации Агента C:\TwinCAT\3.1\Boot\TcIotDataAgentConfig.xml. Эта схема будет использована при старте Агента на этом локальном ПК. Во время работы рядом будет лежать лог TcIotDataAgent.log. По нему можно проводить диагностику работы Агента.

Open file, Save file импорт/экспорт схемы из отдельного файла.

С помощью кнопки "активировать конфигурацию", можно активировать схему на удаленном контроллере. На кнопке изображена традиционная горка кубиков (Save to selected target and activate).

В окне `Topology` создаем схему передачи данных. Нужно запомнить два простых принципа: создаем правой кнопкой мыши (ПКМ), а затем соединяем элементы с помощью Ctrl + тащим и бросаем. Например:

  • ПКМ по пустому месту → Add Gate (ADS) → получился круг — это ADS-портал, ведущий к переменным контроллера.
  • Затем, ПКМ → Add Gate (MQTT) → появилось облако — это брокер MQTT, источник данных.
  • ПКМ ADS портал → Add Channel (Subscriber) → создается подписчик (subscriber) в виде прямоугольника. Стрелка вниз 🡇 указывает направление подключения.
  • ПКМ Подписчик → Add Symbol → добавляется новая переменная (symbol) для чтения из контроллера. Можно сделать проще: открыть окно `Target Browser`, перетащить и бросить переменную на "подписчика".
Схему можно создавать и редактировать через другие окна программы. Исследуйте их. Выберите удобный способ работы с программой.

Аналогично поступаем с порталом MQTT Broker, где вместо `Add Gate` доступен `Add Channel`. Брокер работает не с переменными, а с каналами. Через них идут потоки переменных.

Дальше тащим прямоугольник подписчика ADS: Ctrl + левая клавиша мыши (ЛКМ). Бросаем его на прямоугольник канала MQTT. Между элементами появляются связи.

Настройки всех элементов собраны в окне `Properties`.


Пример программы

Необходимо проработать четыре момента:

  • ПЛК программу как источник данных. Подойдет любая версия TwinCAT. Я брал как вторую, так и третью версию TwinCAT. Меняется номер порта ADS 801 → 851, но принципы создания схемы остается прежним.
  • Создать схему передачи данных для Агента.
  • Выбрать MQTT брокер данных.
  • Создать клиента для брокера MQTT. Я напишу простую программу на C#. Она будет читать данные из брокера. Здесь можно воспользоваться готовыми клиентами MQTT и запустить их на смартфоне.


ПЛК программа примитивная:

PROGRAM MAIN
VAR
    iCount: INT;
    rCount: REAL;
END_VAR

iCount := iCount + 1;
rCount := rCount + 0.1;


Схема Агента

Пора выбрать бесплатного брокера на тестирование. Мне понравился HiveMQ. Кроме него проверил Mosquitto. Он работал, но значительно медленнее.

Пришло время создать схему:


Разбивка по каналам позволяет устанавливать единые сетевые настройки для нескольких переменных сразу. Можно создать один единственный канал и транслировать в нем сразу несколько переменных. Чтобы было интереснее, я разбил трансляцию от брокера на два канала (см. картинку выше, правая часть):

  • Ads_Mqtt_11_19 — транслирует переменную MAIN.rCount;
  • Ads_Mqtt_11_17 — передает целое число из переменной MAIN.iCount.

Внутри канала данные брокера можно раскидать по темам (Topic). Это настраивается в окне `Properties`. Например, пусть `rCount` как бы передается из жилой комнаты GOT/TWINCAT/ROOM, а переменная `iCount` приходит из офиса GOT/TWINCAT/OFFICE. В клиенте брокера я смогу выбрать или одну конкретную, интересующую меня тему, или сразу несколько тем. Темы фильтруются с помощью спец. символов `*`, `?` или `#`. Например, я хочу в одном канале получать данные ROOM+OFFICE: GOT/TWINCAT/#.


Клиент брокера

Для C# я использовал библиотеку MQTTnet. Она легко устанавливается из NuGet. Раскомментируйте строку и подставьте название своего топика-комнаты в константу `MQTT_TOPIC`.

 

Результат работы клиента:


Одновременно я установил на телефон бесплатный клиент `MQTT Dash` и он также смог отображать данные с ПЛК. Трансляция идет через интернет, можно сходить на обед и одним глазом посматривать как контроллер продолжает работать:

June 5, 2017

2017. Стратегия развития

Ключевая фишка Бекхоффа — это использование обычного ПК в качестве промышленного контроллера. Плюс собственное производство, тестирование, то есть полный конвейер. Давайте для разогрева посмотрим, как они двигались по этому пути.
  • 1982. P1000 — одноплатный контроллер управления движением.
  • 1986. PC Control — первый основанный на ПК контроллер ЧПУ станка.
  • 1988. S1000 — программный ПЛК/NC персональный компьютер (операционная система DOS).
  • 1989. Lightbus — высокоскоростная шина на оптоволокне.
  • 1990. All-in-one — персональный ПК типа "всё-в-одном" на материнской плате.
  • 1995. Bus Terminal — модульная архитектура шины на основе модулей расширения — терминалов.
  • 1996. TwinCAT — программный комплекс под Windows с функцией ПЛК и управлением движением.
  • 1998. IPC Control Panel — панельные компьютеры с графическим дисплеем для удаленной установки и установки по месту.
  • 1999. Fieldbus Box — защищенные IP 67 модули ввода/вывода.
  • 2002. CX1000 — модульные встраиваемые ПК для монтажа на дин-рейку.
  • 2003. EtherCAT — промышленная шина реального времени на базе Ethernet.
  • 2005. TwinSAFE — компактные решения для промышленной безопасности труда.
  • 2005. AX5000 — сервоусилители на базе EtherCAT.
  • 2007. Industrial Motherboards — собственное производство в Германии.
  • 2008. XFC — сверхскоростная технология обработки ввода/вывода (eXtreme Fast Control).
  • 2009. HD Bus Terminals — компактные многоканальные терминалы ввода/вывода (16-каналов, ширина 12 мм).
  • 2010. TwinCAT 3 — продвинутая технология автоматизации.
  • 2011. AM8000 — синхронные сервомоторы с однокабельной технологией (One Cable Technology).
  • 2012. Multi-touch — второе поколение панелей управления и панельных ПК с поддержкой сенсорного мультитач дисплея.
  • 2012. XTS — продвинутая технология транспортировки (eXtended Transport System).
  • 2014. Multicore — многоядерные системы управления и промышленные серверы для ускорения промышленных вычислительных возможностей.
  • 2014. AX8000 — много-осевые сервоусилители.
  • 2014. EtherCAT Plug-in Modules — подключаемые модули или терминалы шины для монтажа на печатные платы.
  • 2015. EtherCAT P — однокабельная технология для автоматизации в целом.
  • 2015. TwinCAT HMI — независимые от платформы пользовательские интерфейсы на основе веб-браузера и HTML5.
  • 2016. EtherCAT ELM — измерительные модули интегрируемые в систему высокоточных измерительных технологий.


2017.


Теперь ближе к нашим дням, а точнее к тому, что будет завтра.

Изображение: Beckhoff Automation
В этом году на выставке Hannover Messe '2017 Бекхофф в первую очередь пропагандировал:
  • Мультитач графические панели с новым красивым дизайном.
  • Многоядерные контроллеры на дин-рейку, такие как CX2072 (до 12 ядер).
  • "Микрокирпичи" C6015, сертифицированные Microsoft для Microsoft Azure.
  • XTS — продвинутая технология транспортировки (eXtended Transport System).
  • Анализ облачных данных в TwinCAT Analytics.
  • IoT, Индустрия 4.0, облачные технологии и другие современные трендовые слова.

Буквально на днях объявили о грядущем вебинаре на тему новой сборки TwinCAT 3.1.4022. Вероятно там будет рассказано что-то еще.


TwinCAT 3.1...


Версии TwinCAT с нечетным номером 4017–4019 — разрабатываются исключительно для внутреннего тестирования в организации. Для интеграторов и независимых разработчиков — только четные. Поэтому ближайшая будет — 4022, но без нововведений. Устранят ошибки и обновят лицензионные политики.
TwinCAT 2 все еще будет обновляться, но без новинок, только устранение багов.
Начиная с TwinCAT 3.1.4022 прекращается поддержка Windows XP и WES2009. Тем более, что Windows 10 Redstone уже полноценно поддерживается начиная с 4020.x, а с середины 2017 года появится поддержка Redstone 2.

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

Также можно будет условно понижать уровень лицензии: на платформах с более низким уровнем производительности (TC3 performance class) можно использовать лицензии от платформ с более высоким уровнем производительности.


ADS через MQTT


Новый способ отправки пакетов ADS — теперь через MQTT (ADS-over-MQTT). Преимущества:
  • Использует только исходящие подключения.
  • Не требует настройки фаервола, либо использует настройки по умолчанию, что упрощает работу для системных администраторов (или, как обычно, вообще без них).
  • Хорошо чувствует себя находясь за NAT.
  • Можно использовать в недоверенных сетях.
  • При участии шифрованных каналов TLS-PSK.
  • Нет жестко заданного подключения сокет-сокет.
  • Реализован как надстройка для Mosquitto Broker.

В итоге мы получаем полноценную виртуальную AMS-сеть (Virtual AMS Networks), которая умеет делать ADS-роутинг, а это дает такие стандартные возможности, как поиск TwinCAT устройств (в том числе и широковещательный) или обычная передача данных через ADS. Если взять текущие и более старые приложения, использующие протокол ADS, то они ничего не заметят, для них все будет выглядеть по старому. Процесс трансляции данных берет на себя ADS-роутер и скрывает от приложений. Так что данные теперь могут спокойно транслироваться через MQTT, что в новых приложениях, что в старых.


Независимые ПЛК программы


Появится новый вид TwinCAT проектов — независимый ПЛК проект (Standalone PLC). Проекты такого типа создаются и программируется независимо от конфигурации, то есть они могут существовать как отдельный проект в солюшене XAE. Впоследствии можно создавать множество экземпляров данного проекта, просто прикрепляя независимый проект к конфигурации через файл TMC, по аналогии с файлами TPY в TwinCAT 2.


Symbolic Mapping


Можно будет линковать не только пары адрес ↔ адрес, но и имя_переменной ↔ имя_переменной. Имя переменной — это в терминологии TwinCAT "символ" (symbol), что чуть шире, но не принципиально.


Распределенные типы данных


В оригинале — Shared Datatypes. Можно импортировать и экспортировать типы данных туда-сюда между ST и C++, ST и ST, а можно отправить по почте в виде TMC-файла или выложить в TFS (Team Foundation System), или воспользоваться любым другим способом передачи файлов.

TMC-файлы становятся все интереснее, так как все меньше ограничивают нас языком программирования.


Power Monitoring


Новая ПЛК библиотека для анализа сырых данных мониторинга электричества с модулей EL3773 и EL3783:
  • RMS, Peak, среднее значение для тока, напряжения, мощности.
  • Анализ гармоник и частот.
  • 1-фазные и 3-фазные.

Будет доступна в конце 2017 года


Библиотека и дизайнер фильтров


Новая библиотека для разработки фильтров будет интегрироваться в TwinCAT Measurement Project и позволит практически рисовать собственные цифровые фильтры. Предназначается в первую очередь для совместной работы с модулями ELM и TC3 Filter Library.

Кстати, Filter Library будет полностью ООП. Все функциональные блоки будут использовать ряд методов, такие как, например: Call, Configure, Reset (вызвать, настроить, сбросить). Функциональные блоки смогут принимать параметры и коэффициенты, предварительно нарисованные в Filter Designer. Очень похоже на принцип работы с кулачковыми механизмами и таблицами движения NC (Tables, Motion Diagram). Кроме них будут и просто готовые к использование функции со встроенными фильтрами.

Этих библиотек уже не будет в TwinCAT 2!


Многоклеточные


С середины 2017-го выйдут в серию многоядерные монстры на дин-рейку:
  • 4 ядра — CX2042, процессор Xeon D-1529 @1.3 ГГц, кэш 6Mb LL-Cache, оперативная память 8Гб.
  • 8 ядер — CX2062, процессор Xeon D-1539 @1.6 ГГц, кэш 12Мб, память 16Гб.
  • 12 ядер — CX2072, процессор Xeon D-1559 @1.5 ГГц, кэш 18Мб, память 32Гб.

В каждом будет выделенная графическая подсистема AMD с 2Гб памяти GDDR5. Оперативную память типа DDR4 можно варьировать от 8 до 32Гб. Из интерфейсов подарят: 4xUSB3, 2xEthernet Gbit LAN, 1xDVI-I, один интерфейс опционален, в том числе появится Display Port. Операционная система Windows 10 IoT Enterprise 2016 LTSB 64-разрядная. TwinCAT, конечно же, третий.

Монстры будут совместим с модулями серии CX2000. Ну, и вентилятор с контролем температуры, как в CX2040.


Новые интересные блоги


Стефан Хеннекен (Stefan Henneken) ведущий программист из Германия ведет кулинарный блог, посвященный рецептам на C# и ST в TwinCAT 3: ООП, паттерны, шаблоны программирования и другие современные вещи, но пока еще без функциональщины и других лямбда функций. Языки блога английский и немецкий. Гугл транслейт в помощь.

JoVAn — проектировщик из Португалии ведет блог Um PLC sem WatchDog (ПЛК без цензуры?) со сборной солянкой из руководств, туториалов и видео- уроков под разных производителей и сферы автоматизации.


Ранее в сериале:

May 24, 2016

Облачный коплер EK9160

Теперь в станок можно установить коплер EK9160, который будет автоматически собирать сигналы и регулярно жаловаться в облако на фрезеровщика Федора, когда тот в очередной раз запорет фрезу. В конце же месяца региональный менеджер выведет на "плазму" тренд аналитики и все поймет.

  • Он тупой (я про коплер) и без мастер-контроллера во главе, зато умеет собирать сигналы и отдавать данные сразу в облако. Программированию коплер не поддается.
  • Легко конфигурируется сам и предоставляет доступ к своим модулям на шине через веб-страничку.
  • Существует возможностью сохранять и восстанавливать настройки модуля из локального файла.
  • Поддерживает EL, EP и другие подчиненные модули шины EtherCAT.
  • Отзывчивый и быстрый, со свичом для организации ромашки (сосиски, daisy chain) из роутеров.
  • Есть физическая переключалка для простой настройки IP-адреса.
  • На борту установлена микро-SD карта объемом 2 гигабайта. Сюда коплер складывает данные, когда облако не доступно.
  • Батарейки входят в комплект. Благодаря чему, всегда тикают часы реального времени (RTC). Синхронизация происходит через протокол SNTP. Питание ему все равно необходимо: батарейка подпитывает только часы.
  • К коплеру можно подключить коммуникационные модули (например, CAN и/или PROFIBUS) и построить гетерогенную сеть.
  • Push-технология избавляет от входящих подключений — это позволяет безопасно и удобно интегрировать коплер в существующую сетевую инфраструктуру. Достаточно просто подключить его к локальной сети с выходом в интернет.

Еще раз — этот коплер независим (standalone). Ему не нужны мастера и другие контроллеры. Именно поэтому его очень удобно встраивать в отдельно стоящие станки, исполнительные механизмы и другие объекты.

April 5, 2016

TwinCAT интернет вещей

30 марта продукт-манагер Деймон Томпсон (Daymon Thompson) провел очередной вебинар на тему "'эффективного и стандартизированного доступа к облачным технологиями", и как это вообще будет в TwinCAT. И, если кратко — TwinCAT великолепный инструмент с большими возможности и сумасшедшим набором инструментов для контроля и управления промышленным оборудованием, а теперь там еще и IoT-протоколы будут.

Затем бла-бла-бла и к 12 странице начинается рассказ про сервер предприятия и SCADA-систему, которая:
+ Хорошая безопасность
-- Высокая стоимость.
-- Требует высококвалифицированного персонала.
-- Сложен в обслуживании.
-- Плохо масштабируется.

Чуть позже, что лучшим решением будут облачные сервисы (cloud services), которые:
+ Низкая стоимость.
+ Не требуют высококвалифицированного персонала.
+ Просты в обслуживании.
+ Великолепно масштабируются.
+ Хорошая безопасность.

Приводятся примеры публичных/открытых облачных сервисов:


Издатель-подписчик


Вся система крутится вокруг концепции издатель-подписчик: ПЛК — издатель данных; облако предоставляет сервис подключений, называемый "брокер сообщений" (Message Broker); смартфон выступает в роли подписчика, подключающийся к брокеру. Вся это матрешка работает и в обратную строну: смартфон-издатель → брокер сообщений ← ПЛК-подписчик. Причем, с направлением стрелок я не ошибся. Об этом — чуть позже.

Преимущества такой организации:
  • Устройства не нуждаются в информации друг о друге (тип, скорость, конфигурация, и т. п.). Им не нужно знать где они расположены, когда и кто подключится. Все приложения обособлены и существуют сами по себе. Поддерживается высокая степень независимости.
  • Цимес в отсутствии входящих подключений: только исходящие подключения, не нужно настраивать файервол.
  • Использование стандартизированных протоколов MQTT / AMQP обеспечивает высокую производительность.

К 18-й странице начинается рассказ про приватные облачные сервисы (private cloud), которые размещаются на территории одного производства. Здесь видно явное преимущество перед закрытым, локальным SCADA-сервером: отсутствие входящих подключений снимает вопрос о настройке файервола и других сетевых хозяйств.


Группа продуктов TwinCAT IoT


  • Обеспечивает простое подключений для IoT-коммуникаций.
  • Поддерживает несколько облачных сервисов (Microsoft Azure, Amazon AWS) как публичных/открытых, так и приватных.
  • Применение стандартных протоколов MQTT, AMQP, OPC-UA.
  • Использование Push-технологий (Push Technologies) для носимых (мобильных, wearable) устройств.

TF670x IoT Communication — обмен данными подписчик/издатель через MQTT/AMQP. Предоставляет функциональные блоки:
Mqtt_Publish(topic, value)
value Mqtt_Subscribe(topic)

TF671x IoT Functions — готовые функции для обмена с облачными сервисами Microsoft Azure и Amazon AWS.
FB_AzureIoTHubSend()
FB_AzureIoTHubReceive()

TF672x IoT Data Agent — агент связи, позволяющий легко настраивать передаваемые данные без необходимости в программирования. Между слоем агента и TwinCAT-рантаймом используются такие протоколы как ADS и OPC-UA.

TF6730 IoT Communicator — слой на стороне ПЛК для обмена данными со смартфоном. Заявлены Android и iPhone, про Windows Mobile пока ничего не известно.
FB_AppSendAlarm()
FB_AppSendValue()

TF6735 IoT Communication App — приложение устанавливаемое на смартфоне для связи с TF6730.


Глобальная аналитика


ПЛК постоянно, циклически сохраняет данные локально (logger). Даже при условии отправки данных на централизованный сервер, сначала нужно получить к нему доступ.

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

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


Вопросы-ответы


  • Плохое качество связи, но кажется обещали что MQTT/AMQP сможет работать через SSL/TLS.
  • Применение OPC-UA позволит работать с любыми контроллерами, т. к. протокол независимый, а Бекхофф входит в консорциум.
  • Демонстрация механизма OPC-UA будет в конце апреля 2016 года. Обращаться к локальному представителю.
  • Пока что всё будет сосредоточено на Microsoft Azure и Amazon AWS, и двух протоколах MQTT/AMQP. Затем будет Google Cloud Platform и когда-нибудь что-нибудь еще.
  • Когда?! Второй квартал 2016: где-то в июне — будет IoT MQTT библиотека и возможно что-то еще.


Полный вебинар на английском языке: TwinCAT IoT | Fast and standardised cloud communication.