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 и перезагрузите компьютер.