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.