Showing posts with label вебинар. Show all posts
Showing posts with label вебинар. Show all posts

August 13, 2020

Вебинар. TwinCAT 3 Eventlogger

И опять с просмотра вебинара начнем знакомство с Eventlogger'ом. То есть с чтения конспекта, пропущенного через инженера. Вебинар `TwinCAT 3 Eventlogger: event-based communications from the TwinCAT runtime system` прошел 8 мая 2018 года, но нас это не остановит, так как с возрастом продукт становится только стабильнее и, главное, понятнее. За счет выпущенной документации и конечно же опыта разработчика.
Изображение: Beckhoff Automation

Центральный компонент — EventLogger. Он встроен непосредственно в ядро TwinCAT и для своей работы не требует покупки или активации каких-либо лицензий. Это неотъемлемая часть ядра TwinCAT. Доступ к этому ядру ПЛК-программы осуществляют через библиотеки (например, Tc3_Eventlogger), а библиотеки в свою очередь через интерфейс COM-объектов TcСOM и ADS.
Изображение: Beckhoff Automation

Ряд сообщений можно автоматичеки пробрасывать в журналы Windows. Откройте "Просмотр событий" Windows (или EventLogger) и вы увидите ряд сообщений, таких же что и в TwinCAT. 
Eventlogger поддерживает произвольный набор сообщений, то есть вы можете создавать свои собственные сообщения и события. Вы можете конструировать их, встраивать в свои конфигурации, компилировать и затем использовать в своих системах. Для создания сообщений служит ветка Solution Explorer → SYSTEM → Type System в конфигурации проекта. Закладка справа Event Classes позволяет объединять сообщения в классы по каким-либо удобным для вас критериям. 

События представлены специальным типом данных TwinCAT. События управляются с помощью TwinCAT Type System. Следовательно они едины и одинаковы для всех компонентов проекта, написанных на любом из доступых язков программирования: ST, LD, C++, ... Плюс к этому, конфигурация событий хранится в TMC-файлах, соответственно это XML-файл, который можно легко автогенерировать с помощью произвольных (в том числе и внешних) инструментов.

Для создания  событий используется редактор TMC-файлов. В нем можно задать идентификатор и наименование события, назначить человеко-читаемый текст сообщения и придать тот или иной вес или важность событию, такие как ошибка, сообщение, уведомление, информация и т. п.

Текст сообщений может параметризоваться. Можно добавить прямо в текст метки, которые в коде программы будут заменяться на актуальные значения: "Текущая температура {1} превышает {0}". Кроме этого, можно задать источник события и таким образом впоследствии увидеть, что сообщения одинакового типа отправляются из разных подпрограмм (источников).

В сообщения можно добавлять дополнительную информацию в виде JsonAttribute. TwinCAT имеет встроенную библиотеку для работы с сообщениями JSON (теперь есть библиотека-парсер). Это позволяет к текстовой информации добавить структурированную иерархическую информацию, расширяющую данные. Например, это можно использовать для автоматической обработки логов.


Библиотека Tc3_EventLogger


Позволяет создавать события из программы ПЛК.

Сообщения (messages) просто создаются, а затем отправляются в системный лог. Это не реалтайм система: одно событие в миллисекунду. На самом можно отправлять больше одного за цикл, но это будет зависеть от производительности.

Кроме сообщений можно создавать "Тревоги" (Alarms) которые могут находиться в одном из состояний: тревога установлена (Raise), тревога сброшена (Release) и тревога квитирована (Confirm). Также можно полностью удалить экземпляр объекта тревоги из памяти (Clear), но в логе сообщения сообщение все равно остается и не пропадает. Иллюстрация из справочной системы:
Изображение: Beckhoff Automation

Работа из C++ очень похожа на работу из ST программ. Из C# тоже, но это будет отдельно.


Получение событий


Вы создаете новый класс, расширяя FB_ListenerBase. После этого создаете конфигурацию (.Subscribe) и добавляете в нее класс сообщений (.AddEventClass). Теперь необходимо вызывать каждый цикл объект (экземпляр созданного вами нового класса). В случае прихода сообщения, будут вызваны соответствующие методы класса.

Для C++ аналогично.


Доступ извне


События TwinCAT EventLogger можно просматривать в Visual Studio: View → Other Windows → TwinCAT Logged Events.

Программы написанные на C# могут получить дступ через ADS Proxy. С помощью класса TcEventLogger из сборки ADS. Причем текст сообщения можно получать с учетом интернационализации локали, то есть на разных языках в зависимости от предпочтений разработчика либо настроек системы.


Интернационализация


Если она вам не нужна (а она вам нужна, так как вы читаете блог на русском языке), то можете игнорировать эту возможность и все будет на английском языке (или немецком).

August 6, 2020

Вебинар. EtherCAT терминалы энергоэффективности

Медлен спустимся и обозрим измерительные модули на основе вебинара EtherCAT Terminals for energy management. Ничего что с небольшим опозданием — вебинар все еще доступен в архиве, хотя и прошел в далеком 2018 году.

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

Энергоэффективность


Энергоэффективность — это не только про доставку электричества, но и про:
  • экономия энергии = экономия денежных средств.
  • Доставка энергии = надежность и непрерывность производства.
  • Производительность промышленности = повышение оборота.
  • Управление ресурсами = повышение прибыли.

Чтобы этого достичь, нужно измерить энергию на различных этапах, которые в свою очередь представлены различными типами сред с различными технологическими параметрами: ток, теплоемкость/газ, вода, давление воздуха, температура, мониторинг отказов оборудования.

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

Электроток


Модули объеденены в шесть групп по типу измеряемой среды (см. картинку выше). Затем модули объеденены в три функциональные группы:
  • измерение (power measurement);
  • мониторинг (power monitoring);
  • эксплуатация (maintenance).

Эксплуатация


Это самые простые и дешевые терминалы: EL3423, EL3483. Они не производят измерения, а только сигнализируют о нормальном или ошибочном состоянии линии электропитания (трехфазной в том числе). Также модули выдают отчет о качестве питания, в виде собирательного параметра Power Quality Factor, скомпилированного из нескольких разных измерений.


Мониторинг


EL3443 — более расширенные возможности по сравнению с предыдущей моделью EL3403.
EL3453 — быстрее, чем EL3413 и лучше гальванически развязан (690В, до 60А в течении одной секунды).

Появились новые функции, опять-таки относительно EL3413 / EL3403:
  • данные обновляются чаще, до 10мс (50Гц);
  • обсчитывается больше гармоник (до 63);
  • полностью конфигурируемые PDO;
  • статистика измерения: мин-макс-среднее;
  • детектирование выбросов тока и напряжения;
  • измерение cos(𝜑) — коэффициент мощности (power factor);
  • измерение угла фаз;
  • сообщает об авариях: перекос фаз, утечки токов, и т. п.
  • КЗ: около одной микросекунды для тока и напряжения.


Измерение


Все очень просто: EL37xx + TF3650. Основной акцент на новую (теперь в 2020 г. уже нет) библиотеку TF3650 | TC3 Power Monitoring.


Контроль и мониторинг питания


TF3650 | TC3 Power Monitoring — это ПЛК библиотека для обработки "сырых" данных, полученных от модуля, для одно- и трехфазных систем. Краткое содержание:
  • ФБ для расчета RMS тока, напряжения и мощности.
  • Вывод мгновенных или усредненных, минимальных и максимальных значений измеренных величин.
  • Частоты, спектры, гармноники

August 29, 2018

Вебинар. Интеграция полевых устройств HART через FDT

Не прошло и полугода с момента, когда 10 апреля этого года Бенджамин Брунц и Лауриц Ветцель провели вебинар о подключении устройств HART через FDT. В том числе был небольшой практикум, где в живую показали "как это работает".

Незаметно для нас всё это встроено в TwinCAT. Вы с этим могли встречаться, если были замешаны в перерабатывающей промышленности (Processing Industry, это где одни вещества превращают в другие, а не где рабочие обязаны работать сверх нормы). Как раз в этой промышленности активно используются полевые устройства HART. Небольшую вводную я давал в описании синих, холодных и многобезопасных модулей.

HART — Highway Adressable Remote Transducer. Аналоговый сигнал 4..20мА (рекомендация NAMUR NE43). Широко используется в перерабатывающей промышленности. Позволяет совмещать аналог и цифру, то есть одновременно передавать пропорциональный аналоговый сигнал (амплитуда) и транслировать дискретные цифровые данные (с помощью FSK = Frequency Shift Keying) полнодуплексно и в обе стороны.

DTM — Device Type Manager. Чем-то похож на драйвер устройства. Обеспечивает двусторонний обмен данными между полевыми устройствами (датчиками там всякими) и ПЛК. Он же отвечает за конфигурацию устройства.

FDT — Field Device Tool. Определяет интерфейс и обеспечивает общение между DTM и прикладным уровнем программного обеспечения.

Для работы понадобится TwinCAT 3 build 4022 или новее. Для более старых версий TwinCAT необходимо установить HART-плагин, который можно получить, обратившись в тех. поддержку Бекхофф; ключевые слова: FDT контейнер + Beckhoff ComDTM (PACTware).

Преимущества:
  • Можно использовать существующие кабели рассчитанные на 4..20мА.
  • Двусторонняя, полнодуплексная связь устройств.
  • Возможность простого конфигурирования устройства через DTM.
  • Диагностика устройства и расширенная информация поступающая от устройства (если поддерживает).

Недостатки:
  • Требует дополнительных усилий на изучение.
  • Требуется дополнительное оборудование: соответствующее полевое устройство + модуль расширения (terminal).
  • Низкоскоростная передача: 500-800 миллисекунд на цикл. Правда скорость здесь не особо важна, так как главная цель — это целостность данных и полноценный контроль за целостностью данных.

Бекхофф официально входит в FDT группу, поэтому в прайс Бекхоффа входят EtherCAT терминалы с поддержкой HART: EL3182, ELX3181, ELX4181. Если интересуетесь подробностями HART — почитайте документацию этих модулей, там много интересного. Например, кратко, что из себя представляет модуль EL3182 — это 2-канальный аналоговый вход, 16 бит, ±107%, NAMUR NE43, HART; опционально настраивается через HART-плагин, есть FDT контейнер при использовании Beckhoff ComDTM.


Практическая часть


После сканирования шины и боксов, HART терминалы будут выглядеть как обычные модули расширения (например, как обычные аналоговые входа). Различия проявятся в расширенных настройках — в правой части экрана появятся две новые закладки HART и FDT.


FDT позволяет привязать DTM-драйвер устройства к заданному каналу. HART — настроить настройки. Все выполняется очень просто: сканирование, перетаскивание, выбор параметров из списка. Сложности это не представляет, и хорошо показано на вебинаре (знание английского не требуется).

Циклическая и синхронная передача данных в ПЛК-программу настраивается в закладке HART. Мы можем выбрать активный канал (Active Channel), затем перейти во вкладку отображения измеряемых величин (Measured Values Display) и поставить там галку —  циклически передавать данные (Cyclic Process Data). В конфигурации, рядом с веткой Ch.1 AI Inputs, получим новую длинную ветвь — Ch.1 HART Inputs. Эта ветка содержит данные, получаемые от HART-датчика. Линкуем эти параметры с переменными ПЛК-задачи и циклически получаем свежие данные. В описании терминала EL3182, есть раздел Measured values, где все это описано.

Если есть желание получать данные от случая к случаю, то есть асинхронно и когда захочется — существует сервис ADS: IdxGrp = 0xF302; IdxOffs = код команды. Эта информация также есть в описании модуля расширения, в разделе Acyclic services.


Полный вебинар на английском языке: Integration of HART field devices via FDT.

July 7, 2017

Вебинар. Введение в K-Bus и терминалы серии KL3xxx

Тема анонса была запутанной и заранее было непонятно — о чем же все-таки нам расскажут. В итоге все это вылилось в краткое описание модулей K-bus и почему они больше не нужны. Есть вероятность, что это было краткое введение и когда-нибудь будет более подробное, так как тема интересна хотя бы тем, что еще много живого оборудования из предыдущего поколения.

Вещал Мартин Подрушек (Martin Podrouschek): Beckhoff K-Bus and analog inputs. Introduction of KL3xxx terminals.

В 70-х годах прошлого века (ого!) была принята трехступенчатая система: ПЛК ↔ много-много-модулей-ввода-вывода ↔ сенсоры/актуаторы (исполнительные механизмы). В 95-м году Бекхофф предложил собрать все это в одном устройстве "интеллектуальная система терминалов шины" (intelligent bus terminal system) и в итоге получился Profibus bus coupler BK3000:

Система предусматривает как минимум две линии питания: одна линия питает логику коплера и логику терминалов (модулей расширения), а вторая линия предназначена для питания входов/выходов терминалов. Выхода  в принципе могут потреблять значительный ток или вообще сгореть, но логика питается по другой линии, поэтому она сможет пожаловаться коплеру о неприятностях в силовой части. Если питания не хватает или нужно развязать часть модулей по питанию — можно добавить в линейку специальный модуль подпитки и потенциальной развязки.

Кроме коплера как обычного транслятора пакетов данных (коплеры BKxxxx) были разработаны программируемые коплеры с мозгами — серия BCxxxx.


Внутренности и способности


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

Внутри терминала содержится набор регистров, содержащих настройки модуля и, соответственно, позволяющие менять поведение модуля. Часть регистров хранится в ОЗУ, часть в ПЗУ, а часть в EEPROM. В результате, часть регистров жестко прописаны производителем и не меняются, какие-то можно изменять, а какие-то сбрасываются и восстанавливаются при каждом новом включении. Некоторые вообще защищены паролем.

Система поддерживает максимум 256 дискретных устройств ввода/вывода или 128 аналоговых. Так как после 64 терминалов обязательно необходим модуль подпитки шины, то в итоге максимально возможное число модулей сокращается до 250.

Каждое устройство может поддерживать до четырех каналов ввода/вывода. Каждый канал — это всего-лишь 3 байта данных. Если нужно больше каналов, то придется мультиплексировать, дробить время обработки, сокращая другие каналы. Хорошая новость — все это решается на уровне коплера. Также ограничено суммарное количество регистров на канал — 64 регистра. Если нужно больше, то вводят вторую страницу регистров.

Типичное время цикла коплера 1..2 миллисекунды.

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

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


Доступ к регистрам


Способ первый: через специальную платную программу KS2000 и специальный кабель Serial/USB KS2000-Z2-USB.

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

Способ второй: программный, через ПЛК Бекхофф по шине с помощью функциональных блоков библиотеки Tc2_Coupler.lib.

Способ третий: инженерный в режиме FreeRun или Run доступ к регистрам через TwinCAT System Manager: тыкаем правой кнопкой в коплер в дереве конфигурации и выбираем Register Access...

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


Сравнение и выводы


 K-Bus (1995 год прошлого века)EtherCAT, E-Bus (2003 год настоящего века)
Идентификация устройства нет производитель и код продукта
Стоимость сложный и дорогой простой и дешевый
Передача данных меньше 10 мегабит быстрая, до 10 гигабит
Синхронизация нет жесткая, распределенные часы с погрешностью меньше 100 наносекунд
Операционный образ данных 4x12 байт теоретически можно до 65 килобайт, практически используется 8 килобайт
Диагностика двух-шаговая непосредственная
Доступ опосредованный через регистры непосредственный CAN-через-ADS (CoE)

Вывод я вам лучше нарисую:

July 4, 2017

Вебинар. Что нового в сборке №4022

Некоторые новинки сборки TwinCAT №4022 я перечислял в стратегиях развития, но это было не точно и на уровне слухов. 27 июня прошел официальный вебинар TwinCAT 3.1 | New features in Build 4022, на котором Йозеф Папенфот (Dr. Josef Papenfort) подробно рассказал о новых и значимых функциях введенных в систему.

Все новые фишки более-менее перечислены на официальном сайте, но это скорее официальный бюллетень, нам же будут интересны некоторые подробности. Для начала, скачиваем с официального сайта Бекхофф новую сборку 3.1.4022.0: TwinCAT 3.1 – eXtended Automation Engineering (XAE). Один год — один новый релиз, но в этом билде только небольшие исправления и обновления.

Доктор официально подтвердил, что начиная со сборки 4020.x начата поддержка Windows 10 Redstone 4020.x. Поддержка Redstone 2 ожидается в середине 2017 года. Печальная же новость, что начиная с билда 4022 заканчивается поддержка всеми любимой Windows XP и WES 2009 (Windows Embedded Standart), то есть 4022 на них работать уже не будет.


Архив проектов


Что было удобно в TwinCAT 2, так это два файла на целый проект: программа в .pro-файле и конфигурация в .tsm. В то же время это было не удобно для систем контроля версий, так как файлы были бинарные — зато почтой отправлять удобно. Чтобы как-то скомпенсировать эти проблемы, был введен новый формат решения (solution, солюшен) — архив .tnzip. Внутри — это обычный архив ZIP, только расширение подлиннее.

Новый формат позволяет сжимать один или несколько проектов TwinCAT 3 в единственный файл архива. И сразу же отправить по почте: для этого есть специальный пункт меню. Впоследствии такой архив можно открыть как обычное решение (solution), то есть вот прямо сразу из архива, ничего не распаковывая.


Я поархивировал немного и выяснил, что в архиве хранятся только проекты TwinCAT. Все посторонние проекты, относительно TwinCAT (например, проект на C#), система игнорирует и в архив не включает. Зато архивы реально сжатые, сравните на картинке ниже размер "до" (Size) и размер "в" (Packe...)


Полезные мелочи


Постепенно улучшается редактор кода: добавлено раздельное масштабирование шрифтов в редакторе кода ST и окне объявления переменных. Для улучшения восприятия, появились специальные атрибуты создающие схлопывающиеся регионы — это кусок кода между специальными метками {region}

{region 'название для региона'}

... кусок кода

{endregion}

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

В CFC-рисовалке блоков появилось автодополнение кода (IntelliSense), а в менеджере библиотек — специальная иконка, подсказывающая когда плейсхолдер куда-то там переместился и теперь указывает на другую версию библиотеки.


Переменные ввода-вывода


Переменные ввода типа AT %I* (location variables) теперь недоступны для изменения из кода: bInputVar := NOT bInputVar — запрещено на уровне компилятора и при сборке проекта приведет к ошибке компиляции. Зато теперь, начиная с билда 4022, эти переменные могут получать начальное значение: bInputVar AT %I* : INT := 123;

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

<результат типа BOOL> := __ISVALIDREF(переменная типа REFERENCE TO <тип данных>);

TRUE — ссылка рабочая, FALSE — ссылка нулевая, подробнее читайте в справочной системе.

Соответственно REFERENCE TO на переменные AT %I* теперь тоже запрещены, так как изменение этих переменных запрещено и такая попытка будет пресекаться ошибкой компиляции.


ADS через MQTT


Поддержка реализована как .dll модуль для Mosquitto Broker. Уже есть как 32-х разрядная так и 64-разрядная версии. Модуль поставляется бесплатно, вместе со стандартным установщиком и лежит в каталоге AdsApi:


Проект-одиночка


Начиная с этого момента ПЛК-программа и конфигурация TwinCAT — могут быть двумя разными, раздельными проектами: один проект будет содержать только программный проект (программу технологического процесса, TwinCAT PLC Project), а второй, будет содержать только конфигурацию системы (TwinCAT XAE Project).

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


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

При таком подходе, изменяя ПЛК-проект в одном месте, мы будем изменять его во всех конфигурациях одновременно. Главной при этом не забыть пересобрать ПЛК-проект: Build → Build Solution (F7), и активировать конфигурацию в TwinCAT-XAE-проекте: Activate Configuration.

Такой принцип чем-то схож с использованием библиотек, но только пишем мы не библиотеку (Empty PLC Project), а обычную программу (Standart PLC Project).



Символьный маппинг


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

Список системных типов данных переехал из закладок SYSTEM напрямую в дерево проекта и получил отдельную ветку с неожиданным названием Type System. Теперь туда с помощью заклинания Add New Item... и такого-то .tmc файла можно добавить распределенные типы данных (Shared Types), которые затем можно оттранслировать через EAP по TCP/IP сетям. Или через системы контроля версий, или вообще по любым каналам. Электронная почта все еще работает.


TwinSAFE


На диаграммах отображается состояние TwinSAFE-группы: в случае ошибки вы увидите толстую красную рамку, и вообще появились другие цвета, отражающие состояние входов/выходов и другие состояния. Плюс мелочи в редактировании схем безопасности: копи-паста функциональных блоков или псевдонимов (Alias Devices), разбивка на подкаталоги для псевдонимов устройств.


Книга жалоб и предложений


В XAE встроили специальный пункт меню для отправки письма сразу в тех. поддержку Бекхофф. При нажатии, появляется готовая форма, которую нужно заполнить. Причем ведет форма себя очень странно, так как доступна только из TwinCAT Measurement Project (это который про рисование графиков) и кликнуть нужно обязательно по ветке проекта Scope XY Project.



Монитор ADS


Бесплатный, но качается и устанавливается отдельно с FTP-сайта Бекхофф: TF6010-ADS-Monitor. После установки будет лежать здесь: C:\TwinCAT\Functions\TF6010-ADS-Monitor\Viewer\TcAmsAdsViewer.exe

С помощью монитора можно смотреть на пакеты ADS, иногда отправляя свои собственные. Аналогичное можно получить из WireShark, только здесь фильтры настраивать не нужно.



Установка


В остальном билд №4022 установился без проблем на Windows 10 Home. Если собираетесь запускать контроллер на локальной машине разработчика (ноутбук на котором программируете), то после установки запустите от имени "Администратора" батник: C:\TwinCAT\3.1\System\win8settick.bat и перезагрузите компьютер.

March 20, 2017

Вебинар. Базы данных в приложениях TwinCAT 3

Данных стало много, данные важны, мы хотим еще больше еще более сложных данных. Желательно собрать их в облаке и анализировать в офисе за чашкой кофе или даже дома.

На прошлой неделе Паскаль Дресселгауз (Pascal Dresselhaus) рассказал и показал сервис, да-да, не сервер, а именно сервис для работы с базами данных: Database Server, Part 1: Database connectivity easily established with TwinCAT. Ссылка на видео вебинара где-то в конце поста.


Функциональная концепция


Все крутится вокруг TwinCAT Database Server | TS6420 (для TwinCAT 2), который представляет из себя сервис TwinCAT. Устанавливается и покупается он отдельно. Затем автоматически встраивается в TwinCAT и "прозрачно" предоставляет всякие удобные средства для работы с базами данных. Впрочем так делают любые другие сервисы TwinCAT, поэтому сам по себе он не сервер, а сервис — удобная прослойка, позволяющая автоматизировать ряд действий с базами данных.

Сервис Database Server | TF6420 для TwinCAT 3 умеет чуть больше. Во первых, он предоставляет объектно-ориентированную (ООП) библиотеку сущностей для доступа к БД, а во вторых, позволяет работать с базами не только из ПЛК-задачи, но и с помощью модулей C++.

Общение с невидимыми сервисами, начинается с конфигуратора: с помощью реактора запросов SQL Query Editor мы готовим запросы, а затем на выходе получаем XML-файл с конфигурацией (настройками) для БД. После этого не составит труда подключиться к базе данных из программы ПЛК-рантайма.

Работать можно тремя разными способами (различной степени сложности):
  • Авто-конфигурация (Configure Mode) — мы используем только конфигуратор, а переменные и данные затем курсируют между контроллером и БД автоматически.
  • ПЛК-эксперт (PLC Expert Mode) — из программы ПЛК используем специальные функциональные блоки, которые читают/записывают данные, но не требуют знания специальных команд БД (без SQL-команд).
  • SQL-эксперт (SQL Expert Mode) — ФБ работающие непосредственно с SQL командами БД.

Существуют несколько различных топологий сети для работы с БД. Не обязательно устанавливать TwinCAT Database Server на каждый ПЛК, можно собирать и компоновать данные различными способами и только затем отправлять в БД. Аналогично и с SQL-сервером — его можно установить как на каждый ПЛК, так и на выделенный сервер, отдельно и в единственном экземпляре.


Конфигуратор


Инструмент интегрируется с Microsoft Visual Studio. Конфигурация интегрируется в решение (solution) как отдельный проект по аналогии с TwinCAT Measurement (цифровой осциллограф). Унификация, интеграция и прочая синергия, проповедуемая отделом маркетинга.

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

Возможна ситуация когда несколько решений (solution) работают с одинаковыми базами (с одинаковыми настройками). Чтобы не плодить одинаковые настройки, в конфигуратор встроена поддержка коллекций настроек (пул настроек, Database Pool), из которых простым перетаскиванием можно быстро вытащить типовую настройку в новый проект.

SQL Query Editor — великолепный инструмент, позволяющий создать или отладить SQL-команды и сильно упростить работу с таблицами БД. Причем этот же инструмент позволяет работать не только с конфигуратором, но и впоследствии работать с записями базы данных в рабочих условиях. Также впоследствии не составит труда отредактировать структуру таблиц, типы полей, имена и другие свойства таблицы.

Нажатием одной кнопки в SQL Query Editor можно оттранслировать SQL-команды в текст ПЛК-программы, а структуру таблицы в структуры переменных ПЛК-задачи.


Авто-конфигурация


Другое название — группы автологирования (AutoLog Groups); они позволяют работать с БД без программирования. Выглядят как группы символов (переменных, symbols) закрепленные за таблицами и автоматически сохраняемые циклически или только при изменении данных.

Добавляется эта штука кликом правой клавишей мыши и выбором пункта меню Add AutoLogGroup. Все устроено действительно просто. Затем мы можем донастроить автологирование:
  • Выбрать тип старта — вручную или автоматически вместе с загрузочным проектом (boot project).
  • Задать время цикла опроса — как часто сбрасывать данные в базу.
  • Как записывать — добавлять, перезаписывать уже существующие (обновлять) или использовать кольцевой буфер по времени или количеству записей.
  • Режим записи — циклический, только при изменении значений.

Затем у нас появляется три ответвления для каждой из подготовленных групп:
  • AdsDevice — источник (и только источник) данных. Можно подключаться по именам символов или по индексу группы-смещение.
  • Symbols — открывает браузер целевой системы и отображает все символы ADS-устройства. По аналогии с осциллографом, где можно выбирать из каких переменных (а правильнее сказать символов) мы будем считывать данные.
  • DBTable — выбираем таблицу в которую будут записаны данные переменных. Нас предупредят, если мы попробуем выбрать неподходящую таблицу. Если же необходимо поступить как-то оригинально, то напротив полей таблицы можно выбрать переменные, подготовленные в пункте Symbols.


Режим автоконфигурации


FB_PLCDBAutoLog
  • RunOnce() — выполнить группу один раз. Например, по событию в контроллере.
  • Start()
  • Stop()
  • Status() — контроль ошибок и состояние обмена данными.


ПЛК-эксперт


Читать и записывать данные переменных вручную, но без применения SQL-команд.

FB_PLCDBWrite
  • Write()
  • WriteBySymbol()
  • WriteStruct()

FB_PLCDBRead
  • Read()


SQL-эксперт


Совсем низкоуровневый подход: отправляем SQL-команды, работаем с транзакциями, выполняем хранимые процедуры (stored procedures) и другие прямые действия с БД.

FB_SQLStoredProcedure
  • Execute()
  • ExecuteDataReturn()
  • Release()

FB_PLCDBCmd
  • Execute()
  • ExecuteDataReturn()

FB_SQLResult
  • Read()
  • Release()

FB_SQLCommand
  • Execute()
  • ExecuteDataReturn()


Поддерживаемые базы данных


В справочной системе есть список с нюансами:
  • Microsoft
    • MS SQL database
    • MS SQL Compact 
    • MS Azure SQL 
    • MS Access 
    • MS Excel 
  • ODBC
    • PostgreSQL
    • DB2
    • InterBase
    • Firebird
  • NET / ODBC — MySQL
  • OCI / ODBC — Oracle 
  • SQLite
  • ASCII-файл
  • XML базы данных

Можно подключить другие сервера БД. Для этого достаточно установить драйвер ODBC и настроить строку подключения.


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


Q: Что дальше?
A: TwinCAT Database Server все еще развивается. Активно разрабатывается интерфейс для C++ модулей реального времени. Работают над поддержкой модных NoSQL баз данных.

Q: Какая необходима версия TwinCAT XAE и Visual Studio?
A: XAE build 3.1.4012, VS 2013/2015. Не поддерживается VS 2010.

Q: Поддержка старых файлов конфигурации.
A: Да, поддерживаются. Старые ФБ также работают. Есть односторонняя преемственность.

Q: Влияет ли AutoLog на нагрузку контроллера и насколько?
A: Зависит от количества символов, контроллера и много еще чего. Попробуйте, но вообще это просто подключению к ADS-порту и обычное чтение данных через ADS.

Q: Контроль ошибок?
A: Да, есть. В том числе и через ФБ.

Q: Как дела с логированием оверсамплинг данных?
A: Поддерживаются не только стандартные типы SQL, но и работа с потоками байт (byte streaming). Уже есть рабочие проекты, но конечно же все будет зависеть от производительности и ресурсов конечных систем.

January 31, 2017

Вебинар. Технологии измерений на базе аналоговых модулей

24 января этого года, Мартин Подрушек (Martin Podrouschek) рассказал про аналоговые модули Бекхофф, а затем обещал в следующем вебинаре рассказать про то, как их конфигурировать и наблюдать на цифровом осциллографе в их естественной среде обитания.

Когда-то давно была подборка физических интерфейсов и модулей расширения, а сейчас мы узнаем некие подробности об аналоговых модулях (как входных, так и выходных). Также можно ознакомиться с флаером Extremely accurate, fast and robust: High-end measurement technology from Beckhoff, где есть более-менее подробное изложение вебинара (правда, на английском языке).


Программная часть


Программная часть, отвечающая за обработку и настройку аналоговых модулей, условно делится на несколько частей:
  • Scope View|Server — цифровой осциллограф клиент/сервер, бесплатный в базовой поставке.
  • Bode Plot — ЛАФЧХ, диаграммы Боде.
  • Analytics — более комплексный анализ данных в совокупности и за большой промежуток времени, со сбором данных в "облаке" и т. п.
  • Configuration — настройка модулей.
  • Filter Designer — настройка цифровых фильтров Баттерворта, Чебышева, НЧ, ВЧ, и т. п. Можно настраивать параметры и рисовать кривые фильтров, затем загружать их в модули.

Ниже и ближе к железу, лежит слой обеспечения реального времени, про который мы должны помнить, что он работает с заданной цикличностью и ни микросекундой больше или меньше. Это важно помнить и знать, особенно, относительно измерительной аналоговой техники, где придется много раз делать преобразования из аналога в цифру и обратно.
Аналоговые величины существуют как бы в двух измерениях — это дискретизация по времени (TwinCAT обеспечивает синхронизацию между устройствами с точностью до ±100нс) и значение измеряемой величины. Важно помнить об этом, так как точность измерения определяется по двум координатам.
Еще ниже (но не всегда) есть дополнительные библиотеки-драйверы, которые обеспечивают работоспособность специализированных модулей. Например, библиотеки Energy Library для модулей измерения параметров электроэнергии (Energy Measurement) — модули серии EL3xxx, KL3xxx или библиотека CM library контроля состояния (Condition Monitoring) — IEPE акселерометры и другие датчики.


Пошаговый выбор модулей


Сейчас в каталоге доступно порядка 100 модулей. Чтобы не потеряться среди них, предлагается пошаговый подход к выбору.

После определения какой функционал требуется от модуля, можно выбрать тип защиты корпуса:
  • IP20 — для установки в шкафах автоматизации. Серии BK, BC, EL, KL, EM, KM, ES, JS, IPC|CX|CP.
  • IP67 — для установки под открытым небом, дождем и снегом. Серии: EP, EPP, EQ, ER, IP.

Дальше интересней, так как Beckhoff по сути не настаивает на обязательном использовании EtherCAT для подключения модулей, а предлагает на выбор различные полевые шины: Profibus, Profinet, Sercos II, много еще чего, ну и EtherCAT конечно же. Для всего этого зоопарка шин существуют соответствующие коплеры (coupler), объединяющие модули в удаленные или локальные группы.

Дальше необходимо определиться с аккуратностью или погрешностью измерения (±%) и пропускной способностью (100Гц..100кГц).

Также важным параметром являются тайминги и частота дискретизации:
  • XFC — модули умеют делать оверсамплинг, что повышает точность, за счет интерполяции дополнительных отсчетов между тиками системы реального времени. Только для шины EtherCAT.
  • DC — поддержка синхронизации распределенных часов.
  • Timestamp — фиксируется ли отпечаток времени события (важно, так как измерение может произойти в произвольный момент длительности цикла).

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


Быстродействие и точность


Не стоит считать высокоточными — модули с высокой разрядностью оцифровки величины (hi resolution). 16 или 24 бит вовсе не означает, что эти модули точнее. Просто не имеет смысл проводить точные измерения, а затем терять эту точность из-за малой разрядности оцифровки. Выбирая модули, учитывайте обе величины — и разрядность, и погрешность измерения.

Во втором квартале 2017 года должна выйти новая серия модулей ELM в железном корпусе и для сверхточных измерений:
  • 24 разряда;
  • до 50 000 отсчетов в секунду;
  • синхронизация с точностью до ±100нс;
  • интегрированная диагностика подключений и работы функционала.

Серия модулей для шины K-bus пока еще существует — это модули KL3xxx. Следует учитывать, что из-за ограничений шины K-bus, эти модули не могут обеспечить высокое быстродействие.

September 28, 2016

Вебинар. Новое поколении TwinCAT HMI

Много клиентов, много серверов, много рантаймов и много всего остального. Основной акцент на слово "много". Сводный обзор по возможностям и полезностям визуализаций в TwinCAT 3 провел Дэймон Томпсон (Daymon Thompson). По окончании на вопросы ответил глобальный продукт-манагер Свен Обершмидт (Sven Oberschmidt). По прежнему хочется "мяса" из инженеров.

Все это уже было, но теперь подводятся какие-то итоги и обещают уже в начале следующего года англоязычную версию.

Основные черты продукта:
  • Основан на технологиях пришедших из интернета: html5, css3, javascript.
  • Клиенты из-под браузеров (в том числе и Edge) и клиенты на мобильных системах Android и iOS, ведь там тоже есть браузеры, только мобильные.
  • Система рассчитана на продолжительный срок жизни: придет и останется с нами надолго.
  • Всё такое масштабируемое, модульное и независимое, векторное и веб-ориентированное. Если кратко и без патетики — должно стать удобнее как в разработке, так и в применении.


TwinCAT HMI Creator


Визуальный редактор: не нужно программировать, просто рисуйте и редактируйте готовые шаблоны.
  • Интеграция с Visual Studio.
  • Интеграция с TwinCAT.
  • Редактор с упором на визуальную разработку.
  • Использование систем контроля версий (tfs, svn, git, ...).
  • Менеджер пакетов.
  • Готовые шаблоны проектов.
  • Темы оформления.
  • Графическая библиотека готовых элементов: SVG, сложные и составные элементы.


TwinCAT HMI Framework


  • Готовые контролы (элементы управления интерфейсом):
    • стандартные;
    • графики, чарты, события/логи/журналы (events);
    • пользовательские (самодельные) контролы.
  • Применение сложных типов данных (структуры, дата/время и пр.).
  • Интернационализация:
    • переключение языков;
    • национальные единицы измерения, меры длины, денежные знаки и т. п.
  • Расширябильность засчет html5 и javascritpt.


TwinCAT HMI Server


Веб-сервер написанный Бекхоффом (фирмой, а не человеком). Обещают, что будет работать на всем, что начинается с CX9020. В том числе и на Windows CE.

  • ADS — что позволяет использовать рантайм как от TwinCAT 3, так и от TwinCAT 2.
  • OPC UA — что позволит использовать вообще все что угодно.
  • Цифровой осциллограф Scope. Пока не понятно куда и как он будет встраиваться, но возможно имеется в виду его серверная часть.
  • Безопасность данных (https, tls и прочий эS).
  • Уровни доступа пользователей (роли пользователей, login | logout).
  • Предварительно подготовленные данные для тестирования и отладки (recipe management).
  • Логирование событий.
  • Сбор данных.
  • Сможет расширяться модулями на C++ / C#.


Разработка


  • Сплошная интеграция с Visual Studio.
  • Живое взаимодействие с визуализацией во время разработки. Будет сразу видно, что и как работает.
  • Графический редактор с набором стандартных и не очень элементов.
  • Предварительно настроенные шаблоны, которые можно доработать. Обещают современный внешний вид с анимацией и прочими свистелками.
  • Контролы пользователя расширяются с помощью javascript. Серверная часть расширяется на C++ / C#. Можно подготовить заранее темы в корпоративном стандарте под брендбук, а затем использовать во всех остальных проектах.

Про архитектуру уже было в Новый HMI для TwinCAT 3 (8 декабря 2015). Про сценарии применения было в Визуализации в TwinCAT 3 (24 марта 2016), но если кратко:

  • Наиболее распространенный сценарий "локальный клиент": визуализация и браузер работают на одном контроллере, а графическая панель подключается через DVI.
  • Много клиентов через интернет (например, мобильные телефоны и планшеты) подключаются к локальному клиенту.
  • Много клиентов подключается к одной машине с сервером TwinCAT HMI, который собирает (агрегирует) данные с нескольких ADS-серверов (умных коплеров или младших моделей CX).
  • Много TwinCAT HMI серверов, которые подключены к одной машине, которая отображает сводные данные со всех других серверов (сервер серверов).

При этом сохраняется мультипротокольность: сервер общается с коплерами по любым протоколам, клиенты подключаются к серверу через http(s) и браузеры.


Лицензирование


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

Стоимость лицензии строится исходя из:
  • уровня платформы на которой будет работать TwinCAT HMI Server;
  • количества клиентов и целевых систем (target runtimes).

Пример


TF2000 HMI Server — рассчитан на 1 клиента (браузер) и  одну целевую систему (netId), то есть в базовой версии один клиент — один таргет.

Можно добавить клиентов или таргетов:
- TF20x0 Clients Pack 1/3/10/25 (пакет клиентов — один, три, десять дополнительных клиентов).
- TF20x0 Targets Pack 1/3/10/25 (пакет таргетов).

Можно добавить расширения визуализации HMI Extension (Scope, OPC UA) — это расширения для добавления протоколов или дополнительных функций.

В итоге будет сформирована лицензия TwinCAT 3 HMI License.


Итого


  • Быстрая разработка, где мало разработки и больше рисования.
  • HTML5, javascript.
  • Клиент не зависит от платформы. 
  • Модные веб-технологии.
  • Гибкая архитектура.
  • Модульность.


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


  • Разница между TwinCAT PLC HMI и TwinCAT HMI? Первый будет только патчиться, новые фичи будут появляться только в TwinCAT HMI.
  • Какие версии Visual Studio? Пока что 2013-2015. Дальше будет видно, а пока этого достаточно.
  • Локальные переменные будут доступны (транслируются) в контекст браузера. Надо смотреть что там имелось в виду.
  • Когда? В этом году (2016) немецкая версия, в начале следующего года для всех остальных, кто говорит на английском.
  • Веб-сессии (sessions) поддерживаются, информация о веб-клиенте доступна.
  • PLC HMI контролы и модные HMI контролы, да и другие элементы тоже, смешивать и перемещать туда-сюда нельзя. Вполне возможно, хотя и маловероятно, в будущем появится конвертер первого во второй, но не обратно.

July 29, 2016

Вебинар. Механизм распределенного времени

5 июля прошел вебинар по механизмам распределенного времени (EtherCAT | Distributed Clocks: Functional principle, application and diagnostics). Это простая в использовании технология и просто гигантская по объему, если копнуть чуть глубже. Как и вайфай — все пользуются, но мало кто знает как это работает внутри. По сути, вебинар пересказывает содержимое справочной системы, раздел Distributed Clocks, где кратко даны выдержки из документации по EtherCAT. Пришлось разбавить краткость дополнительными материалами.


Основы


В каждом устройстве поддерживающем DC, есть те или иные счетчики, ведущие отсчет времени или временных интервалов. Устройств много и у каждого свое время, но все они находятся на одной шине. Мастер шины, в нашем случае — это ПК/ПЛК с TwinCAT, старается циклически и как можно чаще отправлять пакет данных с сигналом о синхронизации.
Не все подчиненные должны, и не все поддерживают часы распределенного времени (DC [ди́-си́], Distributed Clock). Просто не всем оно нужно и наличие его — не делает модуль лучше.

Для начала, кто-то из подчиненных становится эталоном распределенных часов (reference clock). Это просто одно из подчиненных устройств (даже не мастер шины) с достаточно точным и стабильным источником временных отсчетов. Обычно, это первое устройство на шине, поддерживающее DC. Остальные устройства с поддержкой DC синхронизируются с этими часами (включая мастера), то есть они отстраивают свои часы согласно этому эталонному устройству.
Распределенное время — это не какое-то всемирное время или время дня, суток или время прошедшее с момента старта устройства, а просто некий счетчик для DC-часов, позволяющий синхронизировать временные интервалы. 
Плюс-минус 50-100 наносекунд — это обычная точность распределенных часов. Счетчик 64-разрядный, его должно хватить где-то лет на 500. Тикает он, согласно спецификации, с 10 наносекундным интервалом.


Железо


Внутри EthreCAT ASIC-чипа есть специальный блок ESC (EtherCAT Slave Controller) в том числе отвечающий за DC. Запуск системы часов распределенного времени состоит их нескольких фаз, первой из которых является измерение задержки распространения (propagation delays).

Каждый из подчиненных внутри себя имеет входную и выходную отметки времени, по которым можно легко вычислить на сколько задерживается пакет на каждом из подчиненных. Этот процесс контролирует мастер шины, отправляя одну или несколько широковещательных команд BWR (Broadcast Write). Эта команда адресует специальный регистр DC Receive Time Port, расположенный по адресу 0x0900.

После сбора всех временных отметок (time stamps), мастер шины, который отлично знает топологию шины, может рассчитать задержки распространения для каждого сегмента кольца шины. Затем, для каждого подчиненного, который умеет DC, мастер индивидуально записывает в специальный регистр System Time Offset смещение между эталонным временем и локальным отсчетом времени. Размер регистра те самые 8 байт или 64 разряда расположенные по адресу 0x0920. Теперь каждый DC-подчиненный может узнать системное время просто сложив свое локальное время (хранящееся в регистре Local Time) со сдвигом (offset).

Со временем локальные часы могут "уплыть" в большую или меньшую сторону, поэтому мастеру необходимо постоянно корректировать это отклонение (drift). Для этого постоянно отправляются специальные команды ARMW (Auto Increment Read Multiple Write) или FRMW с эталонным временем.
Эта команда всегда отправляется в самой быстрой задаче.
Подчиненное устройство (терминал) получив эту команду, сверяет значение локального времени и ускоряет или замедляет свои локальные часы.


Режимы работы


На вкладке DC → Operation Mode, можно увидеть следующие варианты режимов работы распределенных часов:
  • Oversampling — с оверсамплингом, можно задать частоту отправки SyncUnit и частоту семплера, который для получения дополнительных отсчетов работает быстрее SyncUnit.
  • DC Latch — только с DC, не работает без него.
  • FreeRun / SM-Synchron — синхронизация по фреймам EtherCAT.
  • DC-Synchron / DC-Synchron (input based) — TwinCAT делит устройства на группу ввода и группы вывода (плюс информационная зеленая группа). DC может синхронизироваться или там, или там. Этот вариант позволяет выбрать откуда подчиненное устройство будет брать DC-сигнал.


Тонкая настройка


I/O → devices → EtherCAT шина → EtherCAT - Advanced Settings... → Distributed Clocks

DC ModeAutomatic DC Mode Selection — по умолчанию, установлен и означает автоматический выбор эталонных часов. Обычно, этот выбор правильный.

SettingsContinuous Run-Time Measuring — регулярно пересчитывать карту временных задержек. Применимо в случаях частой замены кабелей связи, либо при использовании групп горячего подключения (кабель может быть другой и он будет другой длины).
→ Sync Windwos Monitoring → Sync Window (мкс) — уровень предупреждения при выходе за пределы.
→  Show DC System Time — это копия системного времени, а не локальное DC-время! Отображается в желтой закладки Input, но(!) отстает на один цикл от точного значения, так как необходимо время на получение и отображение значения. В ПЛК-программе лучше использовать множество  функций из библиотек TcEthercat, которые дадут точное время.

SYNC Shift Time — сдвиг времени, обычно автоматически определяется правильно при старте системы. При условии, что система работает и построена правильно.


Диагностика


Diagnosis — у нас есть два отсчета DC-времени: системное — эталонное и локальное. Они немного отличаются. Даже в жесткой цикличности все-равно есть небольшие отклонения (deviation), которые тем не менее не должны привести к сбою синхронизации. Нужно постоянно подстраиваться. Здесь мы можем посмотреть на срез подстройки: в самом низу, проценты не должны убегать далеко от 50%.

Slave Diagnosis — диагностика подчиненного, появилась в TwinCAT 3. Здесь можно тестировать и смотреть графики, а затем регулировать SYNC Shift Time.


Хозяйке на заметку


  • Wc-Error (working counter) — возможно необходимо поднастроить SyncUnit или подчиненный вообще выпал из рабочего режима (не в том режиме).
  • Теряете фреймы (Lost frames) — проверьте CRC.
  • Возможно, не хватает питания на EtherCAT-шине.
  • Проверьте целостность кабелей и разъемов.
  • Возможно неправильно отрегулированы DC-часы.
  • Для оптоволокна (EK1122, EK1100) — проверьте правильно ли выбраны порты: часто путают входные-выходные.
  • Проверьте DC Diagnosis: deviation должен быть рядом с 50% (51% / 48%).
  • Идем глубже: в онлайн режиме проверьте у подчиненного ESC регистр 0x0910.
  • Также проверить работает ли отсчет SYNC0/1 в регистре 0x0990?
  • Если вдруг и внезапно все показатели равны 4.2 секунды, то возможно у вас модуль с оверсемплингом и вы получили переполнение 32-разрядных регистров.
  • Слишком малое время цикла. Учитывайте, что на пересылку 1400-байтного пакета EtherCAT требуется порядка 125 микросекунд.
  • Большой jitter — включите IO at task begin.
  • Для перезапуска DC — мастер должен побывать в INIT состоянии.
  • Кто эталон? Всегда хороший выбор — это коплер Бекхофф EK1100, так как в нем установлен ASIC-чип Beckhoff, а он очень стабильный и красивый.
  • Большое количество Queued Frames — все очень плохо, систему нужно переконфигурировать или перестроить с начала и совсем.
  • CU2508 поддерживает до 4-х колец с резервированием линий и DC.

July 26, 2016

Вебинар. Оптимизация нагрузки многоядерных систем TwinCAT 3

30 июня Кнут Гётель провел вебинар на тему оптимизации нагрузки многоядерных систем в TwinCAT 3 (TwinCAT 3 | Optimised utilisation of multi-core features). Большая часть нюансов многозадачности в TwinCAT 3 уже рассматривалась, поэтому далее только крошки.


Как обстоят дела в TwinCAT 2:
  • Рантайм может исполнятся только на одном ядре.
  • Рантайм работает только в 32-х разрядных системах.
  • Выбор ядра на котором будет выполняться рантайм производится через реестр (можно считать, что 98% пользователей об этом не знает).

Однако, большинство современных процессоров (в том числе и ARM) уже хотя бы с двумя ядрами (плюс интеловский гипертрединг, дающий в два раза больше). Мегагерцы растут медленнее, чем количество ядер. Интел грезит (или грозит) приблизительно 128-256 ядер на систему уже в ближайшее время. Нужно куда-то бежать и что-то с этим делать.

Как обстоят дела в TwinCAT 3:
  • Отзывчивость (Latency) меньше одной микросекунды (на тестовом Intel Core i5).
  • Настраиваемый уровень предупреждений превышения уровня отзывчивости: если вероятен сильный джиттер (jitter, дрожание, отклонение) — можно задать уровень паники. Будет вылезать мутная табличка, что на этапе наладки скрасит скудность средств отладки производительности.
  • Вроде бы гарантируют не превышение отведенного времени для TwinCAT. Вероятно, в случае, когда TwinCAT нагружен чересчур сильно, он перестанет отнимать время у бедного Windows. И по косвенным результатам, этому уже есть подтверждения.


Нюансы многоядерности


Задачи цифрового управления движением NC SAF и NC SVB должны быть закреплены за одним ядром. Для CNC такого ограничения нет.

Для запуска TwinCAT и Windows на одном и том же ядре в 64-х разрядной системе необходима поддержка процессором VT-x технологии. Во всех остальных случаях (AMD, старые процессоры, виртуальные машины и т. п.), придется запускать TwinCAT на отдельном ядре. Причем для TwinCAT, ядро нужно изолировать от Windows, т. е. уделить TwinCAT 100% процессорного времени.

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


Взаимодействие ПЛК-модулей


Когда ПЛК-задачи запускаются на разных ядрах, у нас все еще остается общая память и ряд других общих ресурсов. Поэтому возможны несколько способов обмена данными: одни быстрее, другие — надежнее.

1. Маппинг данных между операционными образами.
  • Доступно для всех языков.
  • Гарантируется целостность данных.
  • Передача выполняется синхронно с тактами задачи (пульс задачи, task pulse).

2. Указатель на область данных.
  • Не гарантирует целостности данных.
  • Прямой синхронный доступ из программы (данные никуда не копируются, прямой доступ к ним).

3. Вызов методов через интерфейс.
  • Прямой, синхронный доступ.
  • Не гарантируется целостность данных

4. Протокол ADS.
  • Асинхронный и событийный способы доступа.
  • Клиент-сервер.
  • Вертикальное и горизонтальное применение для обмена данными.
  • Доступен обмен между ядрами.
  • Доступен обмен по локальной/глобальной сети (например, через TCP/IP).
  • Целостность данных — гарантируется.

May 24, 2016

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

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

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

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

May 19, 2016

Новые функции TwinSAFE

На международной выставке Hannover Messe 2016 рассказали о новых функциях в TwinSAFE-логике и контроллерах безопасности EL6910 / EJ6910:
  • До 212 TwinSAFE подключений.
  • 512 функциональных блоков.
  • 128 TwinSAFE групп.
  • До 40 пользователей в политике безопасности.
  • Резервные копии/восстановление.
  • Диагностическая история хранится в модуле TwinSAFE-логики.

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

Связь


Модули безопасности могут связываться посредством:
  • Safety-over-EtherCAT — стандартный способ инъекции пакетов безопасности с максимально высоким приоритетом между пакетами EtherCAT.
  • TwinSAFE SC (TwinSAFE Single Channel, одноканальный) — модуль одновременно выступает и как модуль ввода/вывода обычных сигналов, и как модуль ввода/вывода сигналов безопасности.
  • Передача пакетов безопасности через PROFISafe (как мастер, так и подчиненный). При использовании гетерогенных сетей.


PROFISafe (мастер/подчиненный):
  • Работает только на встроенных и системных шинах (backplane | sub-system busses), через драйвер ПК работать не будет.
  • Работает только на шинах PROFIBUS/PROFINET.
  • Требует наличия терминатора-сегмента PROFISafe EL9930.


Функции безопасности


Обновлен ряд ФБ. В частности разрешили использовать таймеры с точностью от 1 миллисекунды до 600 секунд.

ФБ масштабирования целочисленных значений (safeScaling):
  • масштабирование с коэффициентом и со смещением;
  • округление деления;
  • между аналоговым входом и выходом помещен модуль масштабирования;
  • установка флага ошибки при выходе за пределы во время операции масштабирования;
  • сторожевой таймер для контроля за тупиковыми ситуациями на аналоговом входе.

Специализированный блок инкремента с фиксатором (safeSLI) позволяет зафиксировать значение позиции и контролировать дельту фиксированной величины и текущей реальной, с контролем диапазона в плюс/минус.

safeViolationCNT — счетчик ошибок с регулируемым значением инкремента/декремента и пределом счета.
safeEnvelope — контроль спада огибающей сигнала
safeCamMonitor — ФБ для контроля сигналов безопасности прессов.


Редактор логики


  • Разрешили использовать сторонние FSoE устройства (с помощью ESI-файлов)
  • Упрощена работа с контрольными суммами CRC.
  • Упрощена линковка ФБ и TwinSAFE групп.
  • Можно выгружать проект TwinSAFE-логики по частям.
  • Более продвинутое управление правами безопасности пользователей: кто и что может, более детально.
  • Можно активировать/деактивировать TwinSAFE группы: как временно, так и постоянно.
  • Пассивные TwinSAFE группы. В основном предназначаются для аварийной остановки с мобильных панелей.
  • Просмотр диагностической истории, хранящейся прямо в модулях.


Safety PLC


Программный контроллер безопасности программируется как в графическом редактор FBD, так и с возможностью программирования на Safety C (подмножество языка Си). Существует набор правил которые вводят ограничения на синтаксис, взаимодействие данных (строгая типизация, не смешивать типы и т. п.), а также на использование указателей и динамической памяти. Существуют заранее подготовленные шаблоны приложений.
Программный контроллер будет доступен только на оборудовании Бекхофф.

Язык программирования поддерживает следующие типы данных:
  • Булевый.
  • Целочисленные вплоть до 32-разрядных (Int8, Int16, Int32, UInt8, UInt16, UInt32).
  • Безопасные и небезопасные типы данных. Возможно имеется в виду типы с контролем и без контроля выхода за разрядную сетку.
  • Структуры из атомарных типов.

С данными можно проводить следующие операции: сложение, вычитание, умножение, деление, булевы операции, битовые операции, сравнение, приведение типа.

Управляющие структуры:
  • If-Else
  • While
  • For
  • Switch/case

Файлы Safety C организованы по принципу одна TwinSAFE-группа соответствует одному исходному файлу, плюс заголовочный файл.

May 17, 2016

Что нового в TwinCAT 3.1.4020.0

Продолжение темы Новый билд TwinCAT 3.1.4020.0. 10 мая 2016 года Йозеф Папенфот (Josef Papenfort), TwinCAT продукт манагер провел вебинар на тему Что нового в новом билде 3.1.4020.0. Обзорный список изменений на английском языке доступен на сайте Бекхофф — New Features TwinCAT 3.1.


Visual Studio 2015 и Windows 10


Еще раз интеграция с Visual Studio 2015. Версия 2010 больше не поддерживается, TwinCAT идет в комплекте с версией 2013. Рекомендуют обновится. От себя — лучше самостоятельно установить VS 2015 Community. Затем накатить поверх TwinCAT.

Полноценная поддержка операционной системы Windows 10 как инженерной (Engineering), так и исполняемой (Runtime) версиями. Рантайм теперь доступен и на Windows 10 IoT Core (CX51xx).


Remote Manager


Новая штука для третьего TwinCAT, заранее встроенная в VS. Позволяет использовать на одном ПК разработчика несколько версий третьего TwinCAT.
Включить панель инструмента можно через меню VS: View - Toolbars - TwinCAT XAE Remote Manager. В дальнейшем под версиями TwinCAT понимаются различные версии/билды/сборки/модификации третьего TwinCAT: 3, 3.1.4018.16, 3.1.4020.0, и т. п.


Если у вас несколько целевых ПЛК-систем с разными версиями TwinCAT 3, то вы можете выбрать в среде разработки текущую версию локального TwinCAT и, подключившись к целевому ПЛК, собирать 100% совместимые проекты (конфигурация, ПЛК-задачи, ввод/вывод и системы управления движением). Собирать, а затем и загружать, избегая конфиликта версий/билдов и т.п.
Версия TwinCAT на целевом ПЛК не обновляется!

Способы применения направлены, в основном, на полноценную совместимость различных версий:
  • Подключиться к целевой системе и запустить локальную версию/билд аналогичную удаленной.
  • Открывать и работать с проектными решениями разработанными под различные версии/билды.
  • Создавать новые решения "заточенные" под различные версии/билды.

Возможны различные способы переключения: как ручные или автоматические, так и просто появится диалог предупреждения, если что-то будет не той версии. Переключение версий производится после перезапуска VS.

Версию TwinCAT можно зафиксировать в настройках проекта TcVersionFixed = True:



Конфигуратор для EtherCAT Automation Protocol


Скачивается и устанавливается независимо от пакета TwinCAT 3.1 XAE: TE1610 | TC3 EAP Configurator.

Новый конфигуратор для EtherCAT Automation Protocol, другое название — сетевые переменные (Network Variables). Позволяет создать единую конфигурацию сетевых переменных для нескольких проектов и модифицировать эту конфигурации во время работы.



Compare Tool


Утилита для сравнения проектов. Теперь интегрирована в VS, но будет доступна и как самостоятельное приложение.


Лицензирование


Появилась новая версия EL6070 с аналогичным артикулом(!). Модуль приобрел собственную память размером в 1 мегабайт, куда можно положить до 20 файлов лицензий. Ограничение на количество файлов не зависит от размера файлов.

Для работы с модулем необходим рантайм ПЛК с TwinCAT >= 3.1.4018.26, как на ПЛК, так и у разработчика. Версия прошивки модуля (FW Version) = 04.

Появилась USB-флешка C9900-L100, которая полный аналог модуля расширения, в том числе и объемом в 1 мегабайт для хранения файла лицензий (*.tclrs), который будет прислан от сервера лицензий. Доступ к флешке только через TwinCAT, доступ как к обычной ПК-флешке невозможен.


Ограничение доступа в проектах


Доступно шифрование исходного кода: для разных разработчиков доступны разные функции из проекта. Данный функционал по прежнему дорабатывается, текущие ограничения:
  • Первый выпуск не поддерживает ключи для OEM-лицензий.
  • ПЛК на базе Windows CE (Embedded Compact) не поддерживают шифрование  загрузочного проекта; не поддерживаются OEM-лицензии.


Программирование

  • Улучшены редакторы CFC, FBD, LD.
  • Поиск ссылок/использования переменных в проекте (Cross Reference View/List) теперь работает практически в реальном времени.
  • Автоматическая генерация документации для библиотек (Library Manager).
  • Массивы переменной длины.
  • Монитор памяти (Memory View) для упрощения отладки.
  • Можно задать версию компилятора для бинарной совместимости.
  • Настройки программного проекта могут быть импортированы/экспортированы. Это удобно для работы в команде разработчиков.

Появился полноценный рефакторинг (любое изменение отражается на всем проекте):
  • Добавление/удаление переменных.
  • Переименование переменных.
  • Изменять порядок для входных/выходных параметров ФБ.


RETAIN


Данные из различных источников собирается и в конце цикла копируется на NOVRAM устройство. Для этого в NOVRAM устройстве появились некие Retain Handlers которые по идее должны автоматически сохранять переменные отмеченные RETAIN. Аллилуйя! Причем сохранять только изменившиеся данные.

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

Но(!) работает только с новым рантаймом (4020), да и подтвердить работоспособность данной фичи пока не удалось. Через линковку же все работает как и раньше.


С++


Для переменных C++ также разрешили сохранять переменные в NOVRAM.

Модулям С++ TcCOM разрешили вызывать ФБ ПЛК-программ, для этого последний должен расширять (EXTEND) интерфейс TcBaseModuleRegistered и предоставить доступ к открытым методам. Плюс еще ряд телодвижений по регистрации и пр.

Улучшилась поддержка STL: Set, Stack, Wstring и что-то еще о чем рассказывать не стали.


Полный вебинар на английском языке TwinCAT 3.1 | New features in Build 4020