Showing posts with label HMI. Show all posts
Showing posts with label HMI. Show all posts

October 9, 2019

TF1810. TwinCAT 3 PLC HMI Web

У Бекхоффа есть несколько видов визуализаций в которых иногда можно запутаться. Сейчас меня интересует веб-визуализация TF1810 устанавливаемая на ПЛК. Работает и запускается этот вид визуализаций непосредственно на ПЛК. Просмотр и управление тех. процессом производится оператором через браузер с удаленного компьютера.

Работает всё это через JavaScript и HTML5. На контроллере обычно уже установлен, настроен и работает IIS (Microsoft Internet Information Services). При подключении, клиенту отправляются данные только отображаемых на экране элементов. Данные отправляются (т. е. обновляются) циклически независимо от того изменились они или нет. Сам микро-веб сайт разворачивается на ПЛК в каталоге /TwinCAT/3.1/Boot/Plc/Port_851/Visu. Номер порта (Port_851) может быть другим, соответственно путь также немного изменится.

Клиент подключается и рабоатет через браузер: http://plc-name-or-ip-address/Tc3PlcHmiWeb/Port_851/Visu/webvisu.htm. Веб страница в браузере содержат два канваса (Canvas) на которых рисуется вся графика визуализации. Один канвас рисует фон (на случай статичного фона), другой канвас рисует активные элементы. Для отображения графики элементов используется векторный SVG.

В результате всё это работает достаточно быстро, даже при наличии нескольких клиентов. ПЛК нагружается только в рамках прокачки данных по сети через ADS. Графика и прочие визуальные контролы рисуется и нагружают только браузер клиента, никак не влияя на производительность ПЛК.


Visu Profile в 3.1.4024


Начиная с версии 3.1.4024 что-то кардинально поменялось в кухне проектов TwinCAT и теперь необходимо согласовывать версии визуализаций.
  1. Сначала запустить XAE без проекта.
  2. Выбрать необходимую версию TwinCAT.
  3. Загрузить проект над которым вы работаете.
  4. Выбрать в проекте Visu Profile "постарее".

Одновременно работать с разными версиями TwinCAT можно с помощью TwinCAT Remote Manager.

November 3, 2016

Системный диалог даты-времени в Windows CE

Как быстро сделать ввод системной даты/времени при создании визуализации TwinCAT 2 под Windows CE? Нужно воспользоваться системным диалогом из панели управления — открыть  проводник explorer.exe, а дальше оператор сам найдет, исправит, настроит, испортит. Чтобы избежать такого поведения можно открывать только панель даты/времени.

1. Из меню Start запускаем notepadce.
2. Аккуратно вводим одну строчку, внимательно следя за пробелами и другими символами:

35#"ctlpnl.exe" \Windows\cplmain.cpl,13

35# — это количество символов в строке. Между ..ctlpnl.exe" и \Windows\... стоит пробел.

3. Файл сохраняем как datetime.lnk во флэш памяти контроллера (имя файла произвольное, если-что). Сохранить можно где-нибудь в \Hard Disk\datetime.lnk

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

Input → Execute program: "\Hard Disk\datetime.lnk"

Теперь при нажатии на элемент можно отображать только системную панель настройки даты/времени:



Можно открывать и другие апплеты панели управления:


PC Connection – 35#"ctlpnl.exe" \Windows\cplmain.cpl,0
Dialing – 35#"ctlpnl.exe" \Windows\cplmain.cpl,1
Keyboard – 35#"ctlpnl.exe" \Windows\cplmain.cpl,2
Password – 35#"ctlpnl.exe" \Windows\cplmain.cpl,3
Owner – 35#"ctlpnl.exe" \Windows\cplmain.cpl,4
Power – 35#"ctlpnl.exe" \Windows\cplmain.cpl,5
System – 35#"ctlpnl.exe" \Windows\cplmain.cpl,6
Display – 35#"ctlpnl.exe" \Windows\cplmain.cpl,7
Mouse – 35#"ctlpnl.exe" \Windows\cplmain.cpl,8
Stylus – 35#"ctlpnl.exe" \Windows\cplmain.cpl,9
Volume & Sounds – 35#"ctlpnl.exe" \Windows\cplmain.cpl,10
Input Panel – 35#"ctlpnl.exe" \Windows\cplmain.cpl,11
Remove Programs –  35#"ctlpnl.exe" \Windows\cplmain.cpl,12
Date/Time – 35#"ctlpnl.exe" \Windows\cplmain.cpl,13
Certificates – 35#"ctlpnl.exe" \Windows\cplmain.cpl,14
Accessibility – 35#"ctlpnl.exe" \Windows\cplmain.cpl,15


Для открытия CX Configuration или полностью Beckhoff CX Configuration Tool, нужно запустить другой апплет:

35#"ctlpnl.exe" \Windows\CxConfigCpl.cpl


Для юных исследователей доступен каталог \Windows, который может содержать (и содержит) другие апплеты панели управления в виде файлов с расширением .cpl

October 4, 2016

Как добавить точку в ломаную линию?

В преддверии новой визуализации на html5 и css3 поковыряем нюансы старой-доброй визуализации под TwinCAT 2.

Начнем с простого — надписью может быть любой элемент, достаточно отключить у него бордюр: Colors → No frame color.

Кнопкой может быть любой элемент, но элемент Button (кнопка) ведет себя как кнопка и не требует дополнительных телодвижений от разработчиков. Правда она не так удобна в плане изменения своего внешнего вида, зато всегда ведет себя как кнопка, а не как ХЗ-что.

Поле Variables → Invisible — это в прямом смысле "невидимость". TRUE → элемент невидим, FALSE → элемент отображается, то есть его видно.

Значение параметров фигуры (цвет, размер и пр.) могут задаваться в нескольких местах одновременно и тогда одни значения начинают перекрывать другие. Можно задать величину параметра как статическое значение (например, цвет в поле Colors). Это значение перекроется значением, заданным в виде переменной  из раздела ColorVariables. Переменную, в свою очередь, может перекрыть программная структура из раздела Programmability. При отладке программы, значения переменных введенные через Watch-n-Recipe перекрывают вообще все.

Можно добавить новую точку в ломаную линию или многоугольник: удерживая клавишу Ctrl, тянем левой кнопкой мыши за уже существующую точку и вытягиваем из нее новую точку. Ctrl + Shift + клик — удаляет уже существующую точку.

Последнюю точку в фигуре нужно ставить правой кнопкой мыши.

Motion absolute:
  • Углы задаются в градусах.
  • Масштабирование, оно же Scale: 1000 = 100% размера фигуры. Масштабирование касается всей фигуры в целом, в том числе и расстояния до центра фигуры.
  • Y-offset, X-offset — сдвинуть всю фигуру влево-вправо / вверх-вниз.
  • Angle — поворот относительно центра (кружок с перекрестием), но(!): Shape (прямоугольники и эллипсы) вращаются так, что верх фигуры остается всегда вверху. Polygon (многоугольники, контуры, кривые) вращаются так, что все точки совершают вращение относительно центра фигуры. Если вам нужен квадрат вращающийся относительно своего центра — нарисуйте его из ломаной поли-линии.

Можно добавить один экран визуализации на другой экран в виде элемента меньшего размера. Размер такого элемента определяется типом масштабирование пропорций:
  • Anisotropic — произвольные пропорции и размер.
  • Isotropic — фиксированные пропорции, но произвольный размер.
  • Fixed — фиксированные пропорции и размер.
  • Fixed and scrollable — как и Fixed, но можно прокручивать (не работает в Windows CE, см. раздел про ограничения).

Пунктирные, штрихпунктирные и прочие тире-тире-точки можно получить, задав ColorVariables → Frame flag отличный от нуля. Тип линии меняется только во время работы визуализации и не меняется во время разработки:
  • 0 сплошная ____
  • 1 пунктир - - - -
  • 2 точки ......
  • 3 тире-точка -.-.-
  • 4 тире-точка-точка -..-..-
  • 8 невидимая, но ее толщина учитывается

Input → Execute Program — это целый отдельный мир программирования. Здесь можно создавать макросы (Macro). Например, при нажатии кнопки Сохранить на экране задания параметров, сменяется текущая визуализация (Input → Zoom to viz.). Можно сделать так, что одновременно со сменой визуализации будет задаваться значение какой-либо переменной (как глобальной, так и локальной в подпрограмме). Таким образом можно отследить, что пользователь уходит с экрана настроек и необходимо сохранить persisitent-переменные, если он нажал ОК, и не сохранять, если он ушел по кнопке Отмена.

Programmability → Object name, если установить галку и ввести имя переменной, то после перекомпиляции проекта появляется новая глобальная переменная-структура типа VisualObjectType. Объявление этой переменной не видно в проекте, но она как суслик все-равно есть и доступна для Intellisense по F2.


Все эти вопросы неплохо рассмотрены в справочной системе, но на английском языке (или немецком) и все равно всплывают раз-за-разом:

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 контролы, да и другие элементы тоже, смешивать и перемещать туда-сюда нельзя. Вполне возможно, хотя и маловероятно, в будущем появится конвертер первого во второй, но не обратно.

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

February 29, 2016

Установка и запуск TwinCAT PLC HMI

Запуск визуализации TwinCAT PLC HMI для настольных операционных систем (Windows XP, Windows 7 Standard, 8, 10) может вызвать кратковременную непроходимость мозга.

TwinCAT 2: TS1800 | TwinCAT PLC HMI. Скачиваем и устанавливаем.
TwinCAT 3: TF1800 | TC3 PLC HMI. Уже идет в комплекте вместе с XAE, то есть не потребует скачивания и установки.

После включения в CE|Compact опции визуализации (через CX Configuration), среда визуализации начнет запускаться автоматически. В настольных ОС визуализация автоматически запускаться не будет. Ее автостарт необходимо настроить вручную. Это можно сделать двумя способами, но в любом случае понадобится собрать проект и "залить" его в контроллер как загрузочный (boot-project). Иначе среде визуализации нечего будет визуализировать, а нам трудно понять — получилось у нас автозапустить или еще нет.


Автозапуск


TwinCAT 2
Создаем ярлык для приложения среды визуализации  x:\TwinCAT\Plc\TCatPlcCtrlHmi.exe. В параметрах ярлыка указываем путь к .pro-файлу проекта, а затем переносим этот ярлык в меню Start → Programms → TwinCAT → Startup.

TwinCAT 3
Ссылку (ярлык) на среду визуализации x:\TwinCAT\3.1\Components\Plc\Tc3PlcHmi\Tc3PlcHmi.exe нужно добавить/переместить/поместить в каталог x:\TwinCAT\3.1\Target\StartUp. После перезагрузки, контроллер автоматически стартует загрузочный проект и оболочку визуализации.


NT_StartProcess


Стартовать среду визуализации можно из ПЛК-рантайма с помощью функции запуска обычных приложений операционной системы, то есть ничто не мешает взять и просто так запустить Ворд или Эксель. Функция находится в библиотеке TcUtilities.Lib.

В примере ниже не забудьте все x:\ заменить на свою букву диска, обычно это C:\

NT_StartProcess (
  NETID    :=, 
  PATHSTR  :=
    'x:\TwinCAT\Plc\TCatPlcCtrlHmi.exe x:\TwinCAT\Plc\ProjectName.pro /userlevel 1 /Password 1234 /Visu Overview',
  DIRNAME  :=
    'x:\TwinCAT\Plc\', 
  COMNDLINE:=, 
  START    := TRUE, 
  TMOUT    := T#2S, 
  BUSY     =>, 
  ERR      =>, 
  ERRID    =>);

Дополнительные параметры:
  • /openfromplc — при старте, визуализация выводит окно диалога и предлагает выбрать рантайм контроллера. После выбора, забирает с рантайма исходный код программы, компилирует его и запускает. Если исходный код не был выгружен разработчиком в контроллер — будет "ой".
  • /nofullscreenmode — запускать визуализацию в окне, а не во весь экран.
  • /noaltf4 — не реагировать на Alt+F4.
  • /userlevel — уровень пользователя по умолчанию для встроенной функции безопасности.
  • /password — пароль пользователя  для встроенной функции безопасности.
  • /visu — название окна визуализации которое отобразится первым. По умолчанию, это по прежнему TC_VISU.

Для TwinCAT 3 можно запустить оболочку визуализации с помощью такого же функционального блока из библиотеки Tc2_Utilities (System):

NT_StartProcess ( 
  NETID    :=, 
  PATHSTR  := 'x:\TwinCAT\3.1\Components\Plc\Tc3PlcHmi\Tc3PlcHmi.exe', 
  DIRNAME  := 'x:\TwinCAT\3.1\Components\Plc\Tc3PlcHmi\', 
  COMNDLINE:=, 
  START    := TRUE, 
  TMOUT    := T#2S, 
  BUSY     =>, 
  ERR      =>, 
  ERRID    =>);

После этого начинается самое интересное: настройки оболочки визуализации хранятся в файле Tc3PlcHmi.ini который лежит рядом к исполняемым файлом оболочки Tc3PlcHmi.exe. В случае с TwinCAT 3 оболочку визуализации можно запустить не только на том же контроллере/компьютере, где работает рантайм TwinCAT, но и на любом другом, лишь бы была связь и добавлены все необходимые записи в ADS-роутер.
UPD (18 сент. 2020): Начиная с версии TwinCAT 3.1.4022.0 файл настроек Tc3PlcHmi.ini должен находится в каталоге C:\TwinCAT\3.1\Boot\Plc. Спасибо Андрею П. за уточнение.
Можно запустить несколько оболочек на различных машинах объединенных сетью. Визуализация будет полноценно работать и отображать единую картинку на всех точках запуска. При этом сохраняется возможность отладки ПЛК-программы, что было невозможно в TwinCAT 2 при запуске визуализации в настольных операционках. Подробнее в справочной системе TF1800 TC3 PLC HMI.


Runtime already in use!


Ошибка относится к TwinCAT 2 и это именно тот случай, почему не удобно использовать PLC HMI визуализацию в настольных операционках.

Похоже, что в TwinCAT 2 среда визуализации изготовлена из среды разработки PLC Control путем выкидывания лишних элементов интерфейса. При этом визуализация подключается к рантайму через интерфейс отладки программы (debug runtime), блокируя любые другие попытки подключения. Занято! Вы не можете отлаживать свою программу, потому что запущена визуализация! Идите к черту, говорит нам визуализация: "Я одна, а вас много".

Чтобы получить отладку ПЛК-программы, придется разбить ее на две части: загружать технологический цикл в один рантайм, а визуализацию в другой. Иначе неминуема ошибка: Runtime already in use!

Именно в этом гигантское преимущество TwinCAT 3 PLC HMI. Ну, и еще таблицы с произвольными данными, новые тренды, выпадающие списки и куча других приятных плюшек.


Обновлено: 18 сентября 2020 г.

December 8, 2015

Новый HMI для TwinCAT 3

С выходом новой системы человеко-машинного интерфейса (HMI), открытые системы Бекхофф изменяют подход к средствам разработки, программирования и дизайна интерфейсов промышленных систем. В отличии от проприетарных (закрытых) инженерных и коммуникационных систем, новый TwinCAT HMI позволяет использовать такие инструменты как Visual Studio® и HTML5 для разработки, а также защищенные протоколы HTTPS и WebSockets Secure (WSS) для передачи данных. При этом отсутствует зависимость от операционной системы, т. к. клиент взаимодействует с системой через браузер.

В таком ключе Бекхофф действительно разработал открытое и высокопроизводительное решение для современного мира, связанного коммуникациями и движущегося к Индустрии 4.0.
Предполагаемое время выхода TwinCAT 3 HMI – 3-й квартал 2016 года. 

Преимущества

  • Эффективная и простая разработка за счет интеграции в Microsoft Visual Studio.
  • Не зависит от аппаратной платформы.
  • Ориентирован на веб-технологии: анимация, графика, дизайн (HTML5, JavaScript).
  • Мощная и гибкая архитектура.
  • Расширяемость за счет модулей.
  • Использование языков высокого уровня.
  • Привычный набор графических инструментов и ПО.



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

Нововведение в том, что на этот раз TwinCAT предлагает упразднить задачу разработки собственной системы и воспользоваться уже готовой. Новая система представляет собой два новых слоя. Первый – это веб-сервер визуализации с "алармами" и расширениями (HMI Server Extension). Второй слой – веб-клиент работающий на стороне клиента в обычном веб-браузере. Поведением второго слоя также можно управлять с помощью скриптового языка JavaScript.

Все это уже было раньше, но оно не было настолько тесно интегрировано. Теперь же, после слияния System Manager'а и системы программирования PLC Control, в Visual Studio добавляется универсальная система разработки веб-визуализации.



Простота применения


Содержимое новой HMI строится как набор HTML5-страниц. Готовые шаблоны HTML5-страниц уже встроены в систему для ситуаций когда отсутствует или не требуется дизайнер, что тем не менее не мешает взять дизайнера и разработать свой собственный уникальный дизайн.

HMI такого вида может самостоятельно подстраиваться под ориентацию, пропорции или графическое разрешение экрана. Гибкость организации HMI – как набора модулей и HTML5-страниц, позволяет внедрять одни сложные элементы управления в другие. При этом сохраняется возможность использовать JavaScript для контроля и управления логикой работы клиентской стороны. Не обязательно уметь программировать на JavaScript, достаточно настроить элементы с помощью встроенного графического редактора.

Вывод на стороне клиента осуществляется через браузер, а т. к. браузеры сейчас есть на различных аппаратных платформах – HMI будет одинаково работать как на ARM или Core-i процессорах, так и на специализированных многоядерных платформах. При этом нет необходимости в адаптации или переработке содержимого HMI-страниц.
Логику HMI можно запрограммировать как на стороне клиента с помощью JavaScript, так и на стороне сервера. Такое разделение позволяет также защитить программный код как интеллектуальную собственность.



Организация связи и безопасность


Браузер общается с HMI-сервером напрямую, через защищенные протоколы HTTPS или WebSockets Secure (WSS). HMI-сервер, в свою очередь, общается с контроллером через различные протоколы: OPC UA, ADS (Automation Device Specification). Другие протоколы могут быть реализованы как серверные расширения.

Возможность использовать собственные расширение на стороне сервера позволяет легко использовать модули и  функции как разработанные заново, так и привнесенные из других проектов. Это может быть логика технологического процесса написанная на C++ или .NET, а может быть и расширение, реализующее новый промышленный протокол.



TwinCAT HMI-сервер не ограничивается одной подсистемой реального времени, он может агрегировать данные с нескольких систем, т. е. объединять или просто делится информацией с несколькими клиентами.


May 25, 2015

ActiveX в HMI

В HMI визуализацию можно добавить компонент ActiveX. Если вы не умеете работать с ActiveX компонентами, не знаете C/C++ и не умеете создавать DLL-файлы, можете забыть про эту возможность и просто написать свое собственное приложение, которое будет "выгребать" данные через ADS.API. В общем, именно так и нужно поступить, так как ActiveX морально устарел.

Нюансы вставки ActiveX-компонента:
  • Только пассивный элемент, только отображение.
  • Только настольные операционные системы: Windows XP, 7 и старше.
  • Не работает под Windows CE и другие Сompact версии.
  • Основная цель - вставка компонента отображения HTML-страниц (Microsoft WebBrowser), но можно и другие.



На вкладке Methodcalls сосредоточены настройки вызова различных методов интерфейса ActiveX-компонента:



Webbrowser


Вкладка для компонентов, поддерживающих интерфейс IWebBrowser:
  • Variable for URL - переменная, содержащая строку адреса веб-сайта (URL).
  • Condition for call - старт загрузки html-страницы по переднему фронту TRUE, заданной переменной. Если переменная не задана - компонент будет обновляться каждый цикл ПЛК! Лучше - задать.


Additional Call


Позволяет настроить вызов других методов ActiveX-компонента:
  • Dll for Call - полный путь к DLL-файлу, который в свою очередь будет вызывать какие-то методы компонента.
  • Methodidentification - строка, содержащая название метода, который будет вызываться внутри DLL. Это не само название метода, а подсказка для внутренностей DLL-библиотеки - что необходимо делать (см. пример ниже).
  • Parameter - дополнительные параметры для передачи в DLL-библиотеку.
  • Condition for call - старт вызова по переднему фронту заданной переменной.

DLL-библиотека должна экспортировать функцию ExecuteActiveXCall:

void ExecuteActiveXCall(IUnknown* pUnk, char* pszId, char* pszParam,
char* pszReturnBuffer, int nReturnBufferSize, DWORD* pdwReturnFlag);

  • pszId - строка из переменной Methodidentification.
  • pszParam - строка из переменной Parameter.
  • pUnk - ссылка на интерфейс для работы с методами ActiveX-компонента.
  • pszReturnBuffer, nReturnBufferSize и pdwReturnFlag - не используются.


Пример DLL-библиотеки


Данный пример показывает, как может выглядеть простейшая DLL-библиотека, позволяющая вызывать другие методы ActiveX-компонента. Здесь GoBack и GoForward позволяют переходить на страницу вперед или на страницу назад, при условии, что компонент поддерживает интерфейс IWebBrowser.

Названия IWebBrowser|GoBack и IWebBrowser|GoForward никак не связаны с названиями методов компонента. Разработчик может использовать произвольные, удобные для него названия:

#include "stdafx.h" 
#include <unknwn.h> 
#include <exdisp.h> 
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) 
{
    return TRUE; 
}

extern "C" __declspec (dllexport) void ExecuteActiveXCall(IUnknown* pUnk, char* pszId, char* pszParam, char* pszReturnBuffer, int nReturnBufferSize, DWORD* pdwReturnFlag) 
{ 
    if (strcmp(pszId, "IWebBrowser|GoBack") == 0)
    { 
        IUnknown* pNewUnk; 
        IWebBrowser* pwb; 
        pUnk->QueryInterface(IID_IWebBrowser, (void**) &pNewUnk);
        pwb = (IWebBrowser*) pNewUnk;
        if (pwb) 
        { 
            pwb->GoBack(); 
            pwb->Release(); 
        }
    }
    else
    {
        if (strcmp(pszId, "IWebBrowser|GoForward") == 0)
        { 
            IUnknown* pNewUnk; 
            IWebBrowser* pwb; 
            pUnk->QueryInterface(IID_IWebBrowser, (void**) &pNewUnk);
            pwb = (IWebBrowser*) pNewUnk;
            if (pwb) 
            { 
                pwb->GoForward(); 
                pwb->Release(); 
            } 
        } 
    }
}


Функция добавления ActiveX-компонента - это стандартная функция CoDeSys PLC Control; она может использоваться и в контроллерах других производителей.