April 28, 2016

Иконка TwinCAT

Простой вопрос: как убрать из системного лотка (system traybar) иконку TwinCAT? Чтобы и видно не было, и оператор-наладчик лишний раз не залезал куда не следует, и чтобы TwinCAT продолжал работать.

TwinCAT что второй, что третий — системы модульные: внизу лежат драйверы ядра операционной системы, чуть выше — роутер и "еще какие-то подсистемы" работающие как служба Windows — TwinCAT System Service (TCATSysSrv.exe). Замыкают цепочку инструменты — System Manager, PLC Control, Visual Studio и ряд других, незаметных для разработчика вспомогательных средств, таких, как переключатель версий TcSwitchRuntime или менеджер локального роутера TcAmsRemoteMgr в третьем твинкате.

Нас будет интересовать x:\TwinCAT\TcSysUI.exe — маленькая утилита, стартующая вместе с Windows и выводящая иконку в системный лоток. Именно ее и нужно убрать из автозагрузки.
Для TwinCAT 3: x:\TwinCAT\3.1\System\TcSysUI.exe 


Windows XP/7


В более не поддерживаемой операционной системе как и в более популярной 7-ке можно воспользоваться встроенной утилитой msconfig:




Windows 8/8.1/10


Для Windows 8..10 достаточно запустить Диспетчер задач (Ctrl + Shift + Escape) и в закладке Автозагрузка отключить ненужное "User interface program for TwinCAT System Service":



Туда и обратно


Если функционал "иконки" вдруг-внезапно-снова востребован, мы можем или однократно запустить TcSysUI.exe, или вернуть ссылку на этот файл в автозагрузку.

Кроме этого, во втором Твинкате мы можем добраться до пункта меню Properties "иконки", который предоставляет нам доступ к различным локальным настройкам TwinCAT-сервера: локальный AMS-роутер, автозагрузка модулей, версия, и т. п. Этот функционал обеспечивает утилита x:\TwinCAT\TCATSysCtrl.exe. Именно она запускается при выборе пункта меню Properties.

April 26, 2016

Администратор из группы Администраторы

У нас распространены операционные системы с интерфейсом на русском языке, потому что мы живем в России. И все бы ничего, когда б не... русский язык.

Первая проблема после установки твинката на ПК — это файервол. Его настраивают кардинально и целиком, т. е. просто отключают. Контроллер после этого сканируется и появляется в сети, но попытка добавить роутинг обламывается сообщением:
Add route to remote system failed.
ADS Error 1796 (0x704): 'ADS ERROR: reading/writing no permitted'
Объяснение простое — у пользователя на стороне контроллера не хватает прав для добавления записи в роутер контроллера. На самом же деле... впрочем, пойдем по простому пути.

На ПК, который скоро станет контроллером, открываем Панель управления → Администрирование → Управление компьютером → Локальные пользователи и группы.

В подразделе Пользователи находим Администратор и переименовываем его в Administrator. В подразделе Группы находим Администраторы и переименовываем их в Administrators.

Наслаждайтесь.

April 25, 2016

Источники новостей о TwinCAT

PC-Control
Электронный журнал. Выходит раз в квартал на английском и немецком языках. Есть архив журналов.

Beckhoff Social Media
Ссылки на соц. сети и прочие каналы: Facebook, Google+, LinkedIn, Twitter, Vimeo, XING, YouTube. Также RSS-канал с новостями и подписка на новостную рассылку по электропочте на немецком языке.

Новостные брошюры и каталоги в PDF.
http://download.beckhoff.com/download/document/catalog/

EtherCAT Technology Group
Много завязано на EtherCAT-шине, поэтому не помешает следить и за новостями от группы по разработке.

Этот блог. Подписка сверху, справа: электропочта, твиттер, rss-канал.

April 21, 2016

Нюансы многозадачности TwinCAT 3

TwinCAT 3 совсем двинулся на рельсы виртуализации, благодаря чему, разработчики получили очередную головоломку с многозадачностью. Если быть точнее, то все закручено вокруг TcCOM-модулей, но мы попробуем быть ближе к терминологии TwinCAT 2, которая значительно проще и понятнее.


Задачи


SYSTEM → Tasks или просто задачи — содержат несколько описаний задач с произвольными именами. Это не сами задачи, а описания того, как необходимо крутить в цикле подпрограммы проекта: с каким временем цикла и приоритетом, настроить циклы сторожевого таймера (watchdog) и номер порта, на каком ядре процессора выполнять (это уже в разделе Real-Time). Можно сказать, что задачи — это шаблоны для создания циклических процессов TwinCAT, но на самом деле это просто наборы параметров для создания задачи — повторяй такую-то подпрограмму с временем цикла таким-то. Описание задачи одно, но задач из него можно создать множество.

Здесь же можно создать самостоятельную задачу, достаточно выбрать TwinCAT Task With Image. У такой задачи уже будет собственный мапинг и она сможет самостоятельно транслировать данные с шины. Во втором твинкате это называлось Additional Tasks.

Запуская задачу, TwinCAT собирает из проекта модуль, загружает его в память, выделяет ему то или иное количество ресурсов, а затем начинает циклически вызывать его подпрограммы. Модуль всегда один, несмотря на количество задач, вызывающих его подпрограммы.
Минутка тавтологии: параметры относящиеся к выполнению задач находятся в задачах (Tasks), а настройки подпрограмм проекта находятся в ПЛК-проекте (PLC, см. ниже).


Программы


PLC (TwinCAT PLC Server) может содержать несколько проектов. Каждый проект владеет своим собственным контекстом окружения — описанием, адресным пространством и другими штуками из мира виртуализации.

Каждый проект — это отдельный модуль (или рантайм) со своим Id: 1...; портом ADS: 851, ...; уникальным идентификатором GUID: {xxxxxx}, и пр. Проект может содержать ряд программных блоков (POU), среди которых обязательно встретятся (под)программы, именно они и будут отрабатывать алгоритмы проекта. Традиционно, главная подпрограмма называется MAIN.

Чтобы TwinCAT знал — как именно и что именно необходимо сделать с программой, необходимо создать в проекте ссылку на задачу — Referenced Task. К ссылке мы прикрепляем вызов главной подпрограммы. Позже, при запуске программы, TwinCAT соберет из проекта модуль, загрузит его в память, а затем создаст одну или несколько задач, которые будут циклически выполнять закрепленные за ними подпрограммы проекта.
В одну ссылку можно добавить несколько вызовов подпрограмм, тогда они будут выполняться последовательно, пытаясь успеть отработать за время цикла задачи к которой они прикреплены.
Проект (рантайм) обеспечивает единое адресное пространство, также говорят — выполняется в рамках единого контекста. Можно спокойно использовать переменные одной подпрограммы из другой подпрограммы, лишь бы они все находились в одном проекте/рантайме. Можно циклически вызывать подпрограммы одного проекта из разных задач, а разные задачи можно крутить на разных ядрах процессора/процессоров, да еще и с разным временем цикла, и вся эта карусель будет плавно и равномерно вращаться вокруг ядра TwinCAT.

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


В итоге, система многозадачности получилась очень гибкая, но излишне и чересчур. Зато, в MatLab'е можно нарисовать модуль для TwinCAT, а на C++ написать модули реального времени. На МЭК'овских же языках (ST, LD, FBD, CFC,...) эти модули собираются и загружаются автоматически и незаметно для разработчика.

April 19, 2016

Удаленная настройка на примере CX9010

Вы здесь, а контроллер где-то-там в далекой Австралии, Бразилии, Владивостоке, Гонолуле, Д..., Е...

Так вот, "где-то-там" установлен прочный наладочный ноутбук с выходом во всемирную мировую сеть интернет. Ноутбук подключен зеленым кабелем к контроллеру Бекхофф. На ноутбук необходимо установить полноценный инженерный TwinCAT, т. к. через System Manager оператор-наладчик будет иногда подкручивать параметры сервоусилителей.

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


Легенда


& какое либо локальное действие вне ПК разработчика.
@ локальный ПК разработчика
> действия на удаленном компьютере через RDP, TeamViewer, Google Chrome какая-то другая программа удаленного доступа к рабочему столу удаленного компьютера.
$ работа в System Manager на удаленном компьютере.
# CERHost на уделенном компьютере через удаленный доступ (удаленный доступ через удаленный доступ [that's not enough {we need to go deeper}]).


Offline компиляция


@ открываем в PLC Control файл проекта project.pro.
@ Online → Create Bootproject (Offline).
@ В каталоге с проектом появится файл TCPLC_P_1.wbp, который будет необходим в дальнейшем.
@ Подключаемся к удаленному ПК. В том числе это может быть и ПЛК Бекхофф.


Набор инструментов


> На удаленном ПК создаем временную папку типа d:\temp\beckhoff.
> Переписываем туда инструменты разработчика (в тимвивере можно простым перетаскиванием файлов, что — удобно).
    - Tc211x64Engineering_R3_2.11.2254.exe — текущая версия TwinCAT. В данном проекте предполагаем, что востребован TwinCAT 2. Если удаленный компьютер является ПЛК Бекхофф с предустановленным Твинкатом, то можно пропустить.
    - Cx9ImageUpdate — необходим для обновления прошивки ПЛК серии CX90x0. Если прошивка не будет обновляться, то пропускаем.
    - project.tsm — файл конфигурации ранее считанный с рабочего контроллера или локально подготовленные вручную самоуверенным разработчиком.
    - CERHOST_204.exe — удаленный доступ к ПЛК Бекхофф на базе Windows CE|Compact.
    - TCPLC_P_1.wbp — скомпилированный ранее загрузочный образ ПЛК-программы.
> Устанавливаем TwinCAT.
> Перезагружаем удаленный компьютер.
& Звонок удаленному специалисту, если необходимо переинициализировать связь на удаленном компьютере.
@ Переподключаемся к удаленному ПК.
> Проверяем значок TwinCAT в системном лотке (трейбаре) — должен быть синий (режим конфигурации). Если значок — красный, то TwinCAT не установился: проблемы с мат. платой компьютера или версией биоса, или что-то еще. Для продолжения проблему необходимо как-то решить.
> Проверяем IP-адрес ПК, по необходимости выставляем Локальное подкл. = получить IP-адрес автоматически. Ждем идентификации и автоматического адреса типа: 169.254.***.***.


Настройка ПЛК


$ Запускаем System Manager, делаем Broadcast Search контроллера.
$ Добавляем запись в AMS-роутер.
$ System Configuration → CX Settings → выставляем фиксированный IP-адрес ПЛК:
    AmsNetId = 192.168.5.30.1.1
    IP = 192.168.5.30 / 255.255.255.0
    Gateway = 0.0.0.0
$ Apply → вводим логин/пароль: Administrator / 1 → Reboot Target System → OK.
> Возвращаемся к IP-адресу ПК → выставляем адрес локального подключения = 192.168.5.55.
$ Запускаем System Manager, делаем Broadcast Search контроллера.
$ Добавляем запись в AMS-роутер. Можно добавить и вручную, но так проще и автоматизированней.
$ Открываем project.tsm. Если необходим ручной запуск System Manager, то он лежит в: С\TwinCAT\Io\TCatSysManager.
$ Активируем конфигурацию. Соглашаемся на рестарт ПЛК в рабочем режиме.
$ После рестарта ПЛК, он должен "позеленеть" — перейти в рабочий режим. Если не перешел, а остался в режиме конфигурации (синяя иконка) — есть вероятность нестыковки конфигурации (монтажники перепутали последовательность модулей расширения) или нужно перепрошивать контроллер.


Спускаемся глубже


> Запускаем CERHost → File → Connect: 192.168.5.30.
# Start → Settings → Сontrol panel → CX configuration → FTP: +Server Active, +Allow anonimous, +Allow anonimous upload, Default directory = \Temp
Каталог \Temp удобен тем, что располагается в памяти ПЛК и при следующей загрузке контроллера он автоматически очистится. Это подразумевает, что у ПЛК есть достаточно оперативной памяти для копирования и хранения в нем файлов.
# Apply → Yes на "Reset now?". ПЛК перезагрузится.

> CERHost → File disconnect. Оставить CERHost открытым.
> Открыть проводник Windows → в адресной строке ввести ftp://192.168.5.30.
? Перепрошивка ПЛК, если требуется, производится здесь.
> Откроется папка с содержимым каталога \Temp ПЛК. Туда можно перетащить ранее подготовленный файл d:\temp\beckhof\TCPLC_P_1.wbp.
> CERHost → File → Connect: 192.168.5.30.

# Start → Run → explorer.exe.
# \TempTCPLC_P_1.wbp → Edit → Copy.
# Перейти в \Hard Disk\TwinCAT\Boot\ → Edit → Paste.
# Start → Suspend.


Эпилог


$ Контроллер должен перезагрузиться и стартовать в рабочем режиме. Затем автоматически загрузить и стартовать ПЛК-программу. Процесс можно отследить в удаленном System Manager.


Описанный способ — не единственный, но проверенный и рабочий.

April 12, 2016

2016. TwinCAT и все о нем


TwinCAT = Total Windows Control and Automation Technology.


Новое в TwinCAT 3


  • Дешевле чем TwinCAT 2.
  • Объектно-ориентированное программирование (ООП) на языках МЭК(IEC) 61131-3.
  • Программирования на С/С++ программ, выполняемых в режиме реального времени.
  • Модули Matlab/Simulink. Интегрируются по принципу клик-клик-готово.
  • UML диаграммы классов и состояний.
  • Поддержка средой выполнения TwinCAT 3 64-х разрядных операционных систем Windows.
  • Использует виртуализацию CPU, поэтому работает быстрее и потребляет меньше ресурсов.
  • Расширенная поддержка многоядерных процессоров: изоляция ядер — можно отдавать 100% ядра в Твинкат.
  • Единая среда разработки и конфигурирования, встраивающаяся в Microsoft Visual Studio.
  • Встроенная разработка целевых визуализаций.
  • Выделенный клиент целевой-визуализации.
  • Командная разработка проектов, благодаря использованию xml-форматов файлов.
  • Новая система лицензирования. Запутанная, но с лицензиями всегда так. Компенсируется автоматической генерацией временных ключей.


Что обещают:
  • Поддержка CPU Redundancy — резервирование мастера EtherCAT-шины.
  • Интеграция с облачными сервисами.
  • Полноценная SCADA.


Более приземленно:
  • Среда разработки стала удобнее, но пока не поддерживается 2015-я студия.
  • ООП больше нужно программистам, а инженерам лучше LD, FBD, CFC… Можно попробовать UML — он красивый.
  • По прежнему основное назначение С++ — писать модули ядра (kernel-mode драйверы) реального времени. Все это завернуто в COM-объекты… Готовые решения лучше стыковать через ADS.API. Энтузиастами разработаны библиотеки для работы с ADS и без TwinCAT в т. ч. и под Mono/Xamarin, а это Linux, Mac, Windows Phone, Android... C#, python, javascript — все работает, но это уже не Бекхофф.
  • TwinCAT 3 модульный, но по прежнему через kernel-драйверы и COM-объекты, т. е.  можно легко запутаться среди слов: модули, компоненты, библиотеки, расширяемость, доустановить.
  • Automation Interface уже был и отлично работал в TwinCAT 2. Добавили тоненькую прослойку, причесали и стало удобнее.
  • К сожалению, стандартные библиотеки стали зашифрованными.
  • В системах контроля версий не учтен Git, который отлично поддерживается Visual Studio. TFS и SVN — это скучно и уже не мейнстрим.
  • Обещанная, будущая SCADA выглядит красиво.

Что-то искали?


Далее поисковые запросы которыми озадачивались специалисты в прошлом году. В подвале блога есть форма для прямого задавания вопросов.

Лицензирование TwinCAT
- ключи для twincat
- beckhoff twincat лицензии
- twincat license

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


Энергонезависимые переменные и файловые фильтры
- twincat retain persistent
- beckhoff fbwf manager

Фильтры записи FBWF и EWF
Что не так с PERSISTENT?
Энергонезависимые переменные


ADS.API
- c# plc readany
- twincat ads c# запись переменных

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


Все о TwinCAT
- twincat
- twincat как работает
- класс производительности twincat
- описание twincat2 c
- структуры в twincat
- twincat программирование
- библиотеки для twincat
- twincat настройка прерывания

Что такое TwinCAT?


Эпилог
- twincat 3 визуализация
- система летающая пила
- ethercat needs sync master

Универсальная летающая пила
Новый HMI для TwinCAT 3


EtherCAT needs sync master


Что же касается сообщения "ethercat needs sync master" — это всего-лишь предупреждение, а не ошибка. Система пытается напомнить разработчику, что канал данных (шина) подключена, но отсутствует потребитель данных из него. Нет потребителя — нет обмена данными. Нет обмена данными — отсутствует синхронизация. Нет синхронизации — система отключает канал данных.

Свяжите (Link to...) хотя бы одну настоящую переменную или создайте фиктивную задачу (Additional Tasks) с хотя бы одной фиктивной переменной. Напоминаю — Free Run не нужен


P.S.: немного прошлогоднего снега — 2015. С чего начать?

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.

March 31, 2016

Каталоги TwinCAT 2

С активным приходом новой версии номер три, пора бы уже разобраться — что и где лежит в каталогах TwinCAT: программы, библиотеки, утилиты — все это с немецкой точностью и аккуратностью разложено по папкам. На первый взгляд, трудно выцепить — где лежит PLC control, а где System Manager, но они там есть.



Две версии одновременно


TwinCAT'ы разных версий могут спокойно сосуществовать бок о бок, но сначала лучше установить TwinCAT 2 и только затем TwinCAT 3. При этом станет доступна утилита TcSwitchRuntime, лежащая в C:\TwinCAT\TcSwitchRuntime\TcSwitchRuntime.exe. Она позволяет переключать версии рантайма "туда-и-обратно".

В то же время системные утилиты TwinCAT 2 могут спокойно работать через роутер TwinCAT  3. Совместимость обеспечивается тем, что все утилиты TwinCAT работают через AMS-роутер и протокол общения зафиксирован в стандарте.

Еще раз: для работы с рантаймами разных версии нужно использовать утилиту TcSwitchRuntime; для конфигурирования и программирования просто используйте утилиты соответствующих версий. Где их искать — позднее и ниже.


Корень TwinCAT 2


Предполагается, что TwinCAT установлен в каталог по умолчанию C:\TwinCAT
  • 3.1 — TwinCAT 3.
  • AdsApi, ADS Api — библиотеки ADS API. В каталоге лежит файл ReadMe.txt в котором подробно расписано какие языки и платформы поддерживаются.
  • IO Api — библиотеки TwinCAT R3IO для прямого доступа к подсистеме ввод/вывода TwinCAT без использования протокола ADS.
  • Boot — загрузочные проекты ПЛК-задач; текущая, активная конфигурация; retain- и persistent-данные.
  • CE — расширения и библиотеки для контроллеров на базе компактных операционных систем Windows Compact|CE.
  • Common32, Common64 — коммуникационные драйверы TwinCAT и системные библиотеки утилит TwinCAT 2.
  • CNC — программы в G-коде для ЧПУ системы.
  • Driver — драйверы TwinCAT 2 уровня ядра операционной системы. Это и есть рантайм TwinCAT 2.
  • EventLogger — все что связано с ведением логов в TwinCAT.
  • Functions — будет в TwinCAT 3.
  • InfoSysInfosystem — локальная копия информационной системы Бекхофф.
  • Io — все, что связано с системной шиной и настройкой ПЛК.
  • Mc — все, что связано с цифровым управлением движения NC, NCI, и т. п.
  • Plc — разработка программ и прикладные библиотеки.
  • Resource — файлы с настройками системы логирования, NCI и пр. дополнительные настройки. В компактных контроллерах CX в этом месте лежат драйверы подсистем ядра TwinCAT.
  • Samples — примеры программ и подобное.
  • Scope — цифровой осциллограф первой версии. Входит в стандартную установку.
  • Scope 2 — цифровой осциллограф второй версии. Покупается и устанавливается отдельно.
  • TcSwitchRuntime — наличие этого каталога указывает на установленный TwinCAT 3. Позволяет переключать текущие, рабочие версии рантайма.
  • Versions — утилита для переключения версий сборок TwinCAT. Например, можно переключиться с версии 2.10 на версию 2.11, и обратно.

Утилиты в корне каталога C:\TwinCAT:
  • TCATSysCtrl.exe — окно главных настроек TwinCAT. Появляется при выборе пункта Properties.
  • TCATSysSrv.exe — AMS-роутер как системный сервис Windows.
  • TcSysUI.exe — утилита которая сидит в системной лотке (traybar, рядом с часами). Позволяет управлять рантаймом и запускать другие утилиты TwinCAT.
  • TcStgEditor.exe — TwinCAT Storage Editor, позволяет просмотреть установленные сервера сервисов TwinCAT (Modbus, EventLogger, и т. п.). Открывает лежащий рядом файл default.tps который по сути zip-архив и считывает оттуда настройки.
  • DefaultConfig.xml — чистая конфигурация "по умолчанию". Дает возможность стартовать ПЛК с "чистого листа".


Boot


  • CurrentConfig.xml — текущая, активная конфигурация TwinCAT.
  • CurrentConfig.tsm — текущая, активная конфигурация TwinCAT в виде бинарного файла. По сути, это zip-архив, внутри которого лежит общая информация SummaryInformation, плюс еще раз конфигурация, но в виде однофайловой базы данных с полями фиксированной длины: TcSysManager\WSM.
  • SystemConfig.xml — в контроллерах на Windows Compact|CE — это текущая конфигурация для дополнительных подсистем TwinCAT, Например, для TcEventLogger.

Ряд файлов с расширением wbp:
  • TCPLC_P_1.wbp — загрузочный образ ПЛК-программы (boot project) для рантайма #1.
  • TCPLC_T_1.wbp — PERSISTENT-данные.
  • TCPLC_R_1.wbp — RETAIN-данные.
  • TCNC.wbp — образ NC-задачи.
Цифра в названии указывает на принадлежность к номеру рантайма. Тильда в расширении файла .wb~ означает либо сохраненную копию предыдущей версии (backup), либо временную версию файла, существующего до первой перезагрузки.


Io


В корне каталога находится TCatSysManager.exe — исполняемый файл TwinCAT System Manager. Остальная часть заполнена составными частями System Manager'а в виде .dll библиотек.

Подкаталоги содержат файлы XML со словарями-описанием различного оборудования. Подкаталог с именем EtherCAT выделяется из общей массы — он хранит описания всех устройств которые могут присутствовать на шине EtherCAT.

Если появляется новое устройство, его описание необходимо поместить именно в каталог EtherCAT. При следующем старте System Manager перекеширует словари (он будет загружаться продолжительное время) и новое устройство начнет автоматически распознаваться.
Заметьте, что для контроллера этот XML-файл со словарем не нужен, а необходим только для System Manager: он должен знать с чем работает и как правильно конфигурировать шину.


Io \ TcDriveManager


Подсистема конфигурирования и управления сервоприводами отделена от остальной системы. В каталоге TcDriveManager расположена надстройка System Manager в виде библиотеки TcDriveManager.dll. Она добавляется автоматически при установке Drive Manager.
  • FirmwarePool — хранит прошивки сервоприводов.
  • MotorPool — описания сервомотором. Сюда подкладывать новые и неизвестные системе моторы.
  • MotorPool → CustomerGenerated — описания моторов созданные вручную.
Если вы часто работаете с сервоприводами Бекхофф, то необходимо следить за обновлениями DriveManager: новые версии все еще выходят.


Plc


Здесь расположен TCatPlcCtrl.exe — среда разработки PLC Control. Каталог Lib содержит прикладные библиотеки разработчика.

Файл TwinCAT PLC Control.ini содержит настройки среды разработки. Отсутствующая по умолчанию, но полезная настройка — это размер экрана визуализации по умолчанию:

[TwinCAT PLC Control]
VisuWidth=800
VisuHeight=600

March 29, 2016

Как найти контроллер и добавить запись в роутер

Чего не хватает в стандартных библиотеках TwinCAT.Ads API, так это поиска родственных душ контроллеров в Ethernet-подсети и удаленной работы с удаленными же таблицами роутеров. В System Manager и XAE эта функция реализована через "секретный" протокол и следовательно закрыт от пытливого ума разработчика. Почему именно так решил сумрачный немецкий гений — не известно, но видимо по причине дополнительной безопасности.

Тем не менее разработчики по всему миру засучили рукава и взялись оголенными руками за акулу-провод (WireShark). В результате, в той или иной степени подробности, они выпотрошили этот тайный протокол, но так и не поделилось друг с другом результатами. А зря — сэкономили бы пару другую часов рабочего времени.

Если вы с трудом понимаете о чем были предыдущие абзацы, а их становится все больше и больше, то вспомните про кнопки Choose Target, Search (Ethernet) и Broadcast Search. Именно про их программную реализацию будут следующие абзацы текста.
Отдельные разрозненные куски протокола поиска контроллеров можно найти в LinkedIn и на GitHub, но окончательная работоспособная реализация появилась только в библиотеках AdsRemote и AdsClient.


Broadcast Search


Широковещательный поиск контроллеров реализован через UDP-протокол. В справочной системе этот факт отражен в виде рекомендации по настройке файервола Windows: для нормальной работы TwinCAT рекомендуется сразу открыть два порта — TCP:48898 и UDP:48899. Второй — как раз отвечает за широковещательную рассылку поисковых пакетов. Соответственно, работает только в локальной подсети.

Все устройства получившие пакет должны откликнуться в соответствующем формате. В библиотеке AdsRemote эта функция реализована в методе BroadcastSearchAsync статического класса Ads.Remote.Router.AmsRouter. Метод к тому же асинхронный (await/async), что удобно для разработки пользовательских интерфейсов.

На входе метод получает два параметра: широковещательный адрес подсети и таймаут времени поиска. Если со вторым параметром ничего сложного нет — для быстрой локальной сети задаем 100 миллисекунд, для более медленной подсети интервал можно увеличивать до десятков секунд; первый же параметр выглядит совершенно непонятным для людей не знакомых с функционированием сетей Ethernet. Поэтому существует очередной костыль — вспомогательный статический класс IPHelper.

IPHelper позволяет получить список IP-адресов локального компьютера, за это отвечает свойство Localhosts, которое возвращает список локальных адресов только для Ethernet и WiFi. Если этого мало — можно воспользоваться методом FilteredLocalhosts который на вход принимает список сетевых интерфейсов.

После выбора требуемого локального адреса можно опять-таки с помощью IPHelper'а вытащить широковещательный адрес. За это чудо отвечает метод GetBroadcastAddress.

Посмотреть как эта машинерия работает в совокупности можно в подпроекте CxFinder.



В итоге, мы все равно получим список контроллеров List<RemotePlcInfo> из которого можем подчерпнуть: имя контроллера, IP-адрес, Ams NetId, версию TwinCAT и версию операционной системы с комментариями. Этого вполне достаточно для добавления записи в локальный и удаленный роутеры.

Если IP-адрес ПЛК известен заранее — мы можем запросить у него аналогичное описание. В этом нам помогает статический, асинхронный метод GetRemotePlcInfoAsync.


Локальная таблица AMS-роутера


Домашнее задание для зависших в начале 2000-х годов — исследовать ветку реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\Remote\

Для ребят помоложе и уже успевших соскочить с 32-разрядных операционок, то же самое, но с приставкой Wow: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT\Remote

Также не помешает ознакомиться со статьей про WOW6432Node и API-функции RegOpenKeyEx / RegEnumKeyEx. На десерт можно освежить память про роутеры AMS и роутеры ADS.


Add Route


Чтобы добавить запись в таблицу AMS-роутера ПЛК необходимо создать экземпляр класса PLC, затем через его поле Router получить непосредственно доступ к таблице AMS-роутера. Добавление записи происходит с помощью метода AddRecordAsync:

public async Task<bool> AddRecordAsync(
    IPAddress localhost,
    IPAddress remoteHost,
    AmsNetId localAmsNetId,
    string localIpName = null,
    string name = null,
    string login = "Administrator",
    string password = "1",
    bool isTemporaryRoute = false,
    int timeout = 10000,
    int adsUdpPort = Request.DEFAULT_UDP_PORT)
  • localIpName может быть как именем локального компьютера, так и IP-адресом.
  • name — это название записи в таблице роутера. По умолчанию, оно берется из Environment.MachineName.
  • login и password — это учетная запись пользователя на контроллере. У пользователя должно быть достаточно прав на работу с записями роутера. Обычно, это администратор.
  • isTemporaryRoute — позволяет создать временный, одноразовый роутинг который чаще всего никому не нужен.

March 24, 2016

Визуализации в TwinCAT 3

Третьего марта прошел вебинар на тему новых систем визуализации в третьем Твинкате. Для начала были рассмотрены три типовых сценария работы:
  1. Локальная программа-клиент (Local PLC HMI Client) работает и отображает визуализацию на том же ПЛК, где работает ПЛК-задача. Поток данных ложится в цепочку:
    ПЛК → ADS-сервер → HMI-клиент.
  2. Удаленный клиент (Remote PLC HMI Client) — программа клиент работает и рисует "картинку" на другом компьютере:
    ПЛК → ADS-сервер ~→~ Локальная и сеть или VPN ~→~ ADS-сервер → HMI-клиент.
  3. Удаленный мобильный клиент (Remote PLC HMI Web) с возможностью отображать визуализацию через веб-браузеры (акцент на использование обычных интернет-браузеров):
    ПЛК → ADS-сервер → MS IIS веб-сервер ~→~ Интернет (http/https) ~→~ Веб-браузер.
Обработчик данных ПЛК-задачи VISU_TASK работает совместно с TwinCAT-runtime в режиме ядра операционной системы (kernel mode). HMI-клиент работает в пользовательском кольце (user mode) и через ADS-cервер переправляет в VISU-TASK события мыши, клавиатуры, сенсорного экрана и пр. "телодвижения" пользователя, а от VISU-TASK получает команды на отрисовку/обновление/перерисовку интерфейса визуализации.


Начало работы


Редактор визуализаций встроен в среду разработки и доступен в дереве проекта в разделе ПЛК-задачи. Состоит из трех частей:
  1. Поле рисования (Interface Editor) состоит из трех вкладок:
    - Переменные визуализации. Это самостоятельные переменные принадлежащие задаче визуализации VISU-TASK.
    - Настройки горячих клавиш.
    - Список графических элементов на визуализации.
  2. Стандартные элементы интерфейса визуализации: кнопки, графические элементы, тренды, индикаторы и т. п.
  3. Параметры элементов очень похожие на параметры WinForms.

Visualization Manager — главный компонент проекта, отвечающий за визуализации. Он содержит различные настройки, такие как:
  • Тема или стиль отображения.
  • Язык по умолчанию (интернационализация интерфейса).
  • Управление пользователями для разграничения доступа.

Для активации локального PLC HMI или PLC Web HMI необходимо добавить соответствующие объекты в ветку Vizualization Manager. После этого автоматически создается и добавляется задача визуализации VISU_TASK.


Клиентская часть HMI


Заявлены следующие преимущества HMI-клиента:
  1. Отдельная программа в виде независимого .exe файла.
  2. Клиент работает как независимый процесс операционной системы.
  3. Клиент запускается автоматически (только при ручном добавлении в папку автостарта TwinCAT).
  4. Обмен данными только через ADS. Никакой блокировки отладочного debug-интерфейса.

Преимущества Web-клиента:
  1. Работает на веб-сервере Microsoft IIS, который встроен во все контроллеры Бекхофф.
  2. Построен на HTML5 и JavaScript.
  3. Клиент платформонезависим т. к. работает через браузер.
  4. Идеально подходит для обслуживания объектов и диагностики, в том числе удаленно (со смартфона, например).

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


TwinCAT _PLC_ HMI — это не TwinCAT HMI


Различия между TwinCAT__PLC__HMIa и TwinCAT__HMIb:
  • (a) старая-добрая таргет-визуализация, (b) почти-скада.
  • (a) встраивается в ПЛК-проект, (b) выступает как независимый проект.
  • (a) подключен только к одному ПЛК-проекту. (b) может подключаться к множеству различных рантаймов одновременно.
  • (a) рабоатет состандартным набором элементов, в (b) можно легко добавлять новые элементы.
  • Цифровой осциллограф будет только в (b), для (a) будут доступны простые тренды.


Анонсы и слухи


Ближайший крупный билд TwinCAT 3 —  3.1.4020. В нем обещают:
  • Обновление User Management — работа с пользователями и правами доступа к страницам, контролам и т. п. Пользователи TwinCAT не связаны с пользователями операционной системы. Это отдельная подсистема прав безопасности TwinCAT.
  • Event Table — элемент интерфейса который может показывать сообщения системного журнала TcEventLog.
  • Recipe Management.
  • Trend — появится только в третьем квартале 2016 г.


Следующий вебинар пройдет 30 марта 2016 года по теме TwinCAT Интернет вещей (IoT) — быстрый и стандартизированный доступ в "облако".
Полный вебинар на английском языке TwinCAT 3 | Visualisation – from engineering to target and web