Как программировать Siemens HMI: проект в TIA Portal, экраны, теги, тревоги и обмен с PLC
1) Введение
Под “программированием Siemens HMI” обычно понимают не написание кода в классическом смысле, а разработку человеко-машинного интерфейса: экранов, навигации, привязок к тегам PLC, событий, сообщений (alarms), трендов, рецептов, пользователей и прав. Код (скрипты) может использоваться, но в большинстве проектов основной объём работ — это конфигурация и проектирование.
Типовой контур выглядит так:
-
PLC (S7-1200/S7-1500 и др.) исполняет технологическую логику.
-
HMI (панель Basic/Comfort/Unified или WinCC Runtime на ПК) отображает состояние и позволяет оператору вводить команды/уставки.
-
Связь (обычно PROFINET/Ethernet) передаёт значения тегов между PLC и HMI.
2) Линейки Siemens HMI и что меняется для разработчика
Siemens HMI в рамках экосистемы TIA Portal чаще всего встречается в трёх “семействах” устройств/рантаймов:
-
Basic Panels / WinCC Basic
-
Comfort Panels / WinCC Comfort (и WinCC Advanced на ПК)
-
Unified Panels / WinCC Unified (и Unified Runtime на ПК)
Практическая разница для разработчика — в доступных функциях (скрипты, элементы UI, архивирование, интеграции), производительности, подходе к экранным компонентам и сопровождению.
Таблица: ориентиры по отличиям (концептуально)
| Семейство | Где используется | Сильные стороны | Типовые ограничения (в реальных проектах) |
|---|---|---|---|
| Basic | Простые панели и небольшие машины | Быстрый старт, базовая визуализация | Ограниченный набор функций, меньше гибкости |
| Comfort / Advanced | Станки/линии, более “богатые” HMI, ПК-рантайм | Широкий набор функций, зрелые инструменты | Требует дисциплины по структуре проекта, нагрузка от “тяжёлых” экранов |
| Unified | Новые проекты, современные UI-подходы, веб-ориентация | Современная графика, компонентность, расширяемость | Требовательность к версии/совместимости и к проектной дисциплине |
Вывод для практики: планируйте архитектуру HMI исходя из требований (аварии, тренды, рецепты, права, аудит, интеграции), а уже затем выбирайте семейство устройств.
3) Инструменты и структура HMI-проекта в TIA Portal
3.1. TIA Portal как основная среда
В TIA Portal проект HMI обычно ведётся рядом с PLC-проектом. Это важно: связь, теги и структуры данных удобно “тянуть” из PLC, а изменения проще синхронизировать.
3.2. Типовая структура HMI-проекта
Внутри HMI-устройства (панели/рантайма) вы обычно настраиваете:
-
Connections (соединения с PLC)
-
HMI Tags (теги: PLC tags, internal tags, system tags)
-
Screens (экраны, всплывающие окна)
-
Templates (шаблоны/общие области: header/footer)
-
Alarms (сообщения и тревоги)
-
Trends / Archives (тренды, архивы)
-
Recipes (рецептурные данные, если используются)
-
Users / Roles (пользователи, роли, права)
-
Scripts / Events (события, скрипты — по возможностям платформы)
3.3. Минимальная дисциплина проекта
Чтобы проект не деградировал со временем, полезно сразу закрепить:
-
правила именования тегов и экранов;
-
структуру папок (screens, popups, faceplates, alarms, recipes);
-
единый подход к цветам статусов и пиктограммам (даже если без “дизайна”, нужен стандарт);
-
правило: критическая технологическая логика — в PLC, HMI — для интерфейса и валидации.
4) Создание проекта: добавление HMI и связка с PLC
Ниже — базовая последовательность в TIA Portal (названия пунктов могут отличаться по версии, логика остаётся одинаковой).
4.1. Добавление PLC и HMI в проект
-
Откройте TIA Portal → Create new project (или Open project).
-
В дереве проекта выберите Add new device.
-
Добавьте PLC (например, S7-1200/S7-1500):
-
Controllers → выберите модель → Add.
-
-
Добавьте HMI:
-
HMI → выберите панель (Basic/Comfort/Unified) или Runtime → Add.
-
4.2. Настройка сетевого соединения (PROFINET/Ethernet)
-
Перейдите в Devices & networks.
-
Выберите PLC → задайте IP-адрес (в свойствах интерфейса PROFINET).
-
Выберите HMI → задайте IP-адрес в той же подсети.
-
Соедините устройства в сетевом окне (drag-and-drop на одну сеть, если требуется).
-
Проверьте, что интерфейсы находятся в одной логической сети и адреса не конфликтуют.
4.3. Создание HMI Connection к PLC
-
Откройте HMI-устройство → раздел Connections.
-
Нажмите Add (добавить соединение).
-
В поле Partner выберите PLC из проекта.
-
Проверьте тип соединения (обычно S7 connection) и интерфейс.
-
Сохраните настройки.
4.4. Быстрая проверка связи (до разработки экранов)
До того как строить интерфейс, убедитесь, что базовая связность корректна:
-
адреса PLC/HMI в одной подсети;
-
в Online & diagnostics устройство доступно;
-
HMI может обращаться к PLC по созданному connection.
Ошибки на этом этапе дешевле, чем “почему теги не читаются” уже в конце.
5) Теги и адресация: основа обмена HMI ↔ PLC
5.1. Типы тегов в HMI
-
PLC tags — значения, читаемые/записываемые из PLC через connection.
-
HMI internal tags — внутренние переменные HMI (для экранной логики, временных состояний, флагов навигации).
-
System tags — системные переменные HMI (время, статус связи, пользователь, системные флаги и др.).
Практическое правило: всё, что относится к технологии и должно быть консистентно между устройствами, хранится в PLC; всё, что относится к UI-поведению (временная подсветка, локальная логика экрана), может быть internal tag.
5.2. Создание PLC-тегов в HMI
-
В HMI-проекте откройте HMI Tags.
-
Выберите папку (создайте, если нужно) → Add new tag.
-
В колонке Connection выберите связь с PLC.
-
В колонке Address укажите адрес PLC-переменной или выберите её из списка (если доступна интеграция с PLC tags).
-
Установите Data type (BOOL/INT/DINT/REAL/STRING и т.д.).
-
По необходимости задайте:
-
начальное значение (для internal);
-
ограничения (min/max) — чаще в элементах ввода, а не на уровне тега;
-
комментарий (обязательно для сопровождения).
-
5.3. Типы данных и частые ошибки
Наиболее типовые ошибки в HMI-проектах:
-
несоответствие типов (например, PLC REAL, а HMI INT);
-
неправильная адресация (не та область памяти или не та переменная);
-
слишком частый опрос большого количества тегов (особенно на “тяжёлых” экранах);
-
попытка работать со сложными структурами без понятной “витрины” данных.
Практический подход для стабильности:
-
делайте “витринные” DB/структуры для HMI (чётко определённые поля, без лишнего);
-
не используйте “всё подряд” из PLC — экспортируйте только нужное для экранов;
-
группируйте теги логически (screen-based: теги конкретного экрана в одной папке).
5.4. Масштабирование и инженерные единицы
Для аналоговых значений заранее определите:
-
инженерные единицы (bar, °C, rpm);
-
диапазоны;
-
формат отображения (кол-во знаков после запятой);
-
поведение при ошибке датчика (NaN/ошибка канала).
Лучше держать технологическое масштабирование в PLC, а в HMI — только формат и ограничения ввода.
6) Проектирование интерфейса: экраны, шаблоны и навигация
6.1. Рекомендуемая архитектура экранов
Даже для небольшого проекта удобно иметь фиксированный “скелет”:
-
Главный экран (обзор: режим, ключевые параметры, основные кнопки)
-
Технологические экраны (по узлам/агрегатам)
-
Аварии/Сообщения (алармы, квитирование, фильтры)
-
Тренды (ключевые графики)
-
Сервис/Настройки (уставки, калибровки, тесты I/O)
-
Диагностика связи/оборудования (опционально, но полезно на пусконаладке)
6.2. Создание экрана и базовая разметка
-
Откройте Screens → Add new screen.
-
Задайте имя и назначение (например,
SCR_Main,SCR_Alarms). -
Разместите базовые области:
-
верхняя строка статуса (режим, дата/время, пользователь);
-
зона основного контента;
-
нижняя строка навигации (если используется).
-
6.3. Шаблоны (Templates) и общие области
Чтобы не копировать элементы на каждый экран:
-
Создайте Template (или используйте механизм общих областей, если доступен).
-
Разместите в шаблоне:
-
заголовок, дата/время;
-
кнопки навигации;
-
индикаторы связи/режима;
-
кнопки аварий/квитирования (если концепция подразумевает постоянную доступность).
-
-
Применяйте шаблон к экранам.
Практический эффект: изменения меню/статуса делаются в одном месте.
6.4. Навигация
Типовые элементы:
-
кнопка “Домой”
-
кнопки перехода на узлы
-
всплывающие окна (Pop-up) для ввода уставки/подтверждения
-
контекстные меню (если поддерживается)
Рекомендация: навигация должна быть предсказуемой, без “прыжков” и скрытых переходов.
7) Динамика объектов: привязки, ввод, блокировки
7.1. Привязка свойств к тегам
У большинства объектов HMI можно привязать свойства к тегам:
-
видимость (Visible)
-
доступность (Enabled)
-
цвет/состояние
-
текст/подписи
-
значение (Value)
Практический паттерн:
-
состояния оборудования (готов/работа/авария/блокировка) описываются в PLC отдельными флагами;
-
HMI использует эти флаги для индикации и разрешения действий.
7.2. Ввод значений (уставки)
Для полей ввода задавайте:
-
min/max диапазон;
-
шаг (если применимо);
-
формат;
-
подтверждение (особенно для критических параметров);
-
условие доступности (например, только при роли “Наладчик”).
Частая ошибка: разрешить ввод уставок без проверки режима (например, в “Авто” без блокировки). Если PLC защищает уставку — это хорошо, но HMI всё равно должен визуально предотвращать очевидно неправильные действия.
7.3. Подтверждения и межблокировки
Критические команды (старт, стоп, сброс аварий, сервисные тесты) лучше делать с подтверждением:
-
кнопка → Pop-up “Подтвердить действие”
-
запись команды в PLC (импульс/бит)
-
PLC подтверждает исполнение (feedback)
Такой цикл резко снижает риск случайных нажатий и облегчает расследование инцидентов.
8) События и скрипты: где допустима логика на HMI
8.1. Обработчики событий
Типовые события:
-
Press/Release (нажатие/отпускание кнопки)
-
Value changed (изменение тега/поля)
-
Screen open/close (открытие/закрытие экрана)
-
Cyclic action (циклические действия — использовать осторожно)
Через события обычно реализуют:
-
переходы между экранами;
-
подтверждения;
-
запись командных битов;
-
локальные расчёты UI (если необходимо).
8.2. Скрипты (в зависимости от платформы)
В разных средах Siemens HMI скриптинг отличается (например, VBScript встречается в классических HMI-подходах, а в Unified часто применяется JavaScript-ориентация). Важно не “каким языком”, а зачем:
-
форматирование строк и составных сообщений;
-
дополнительная валидация ввода;
-
расчёты UI-уровня (не критические для технологии);
-
сервисные функции, не влияющие на безопасность процесса.
8.3. Практическое правило: что держать в PLC, а что можно оставить на HMI
В PLC:
-
межблокировки и безопасность;
-
алгоритмы управления;
-
защита от неправильных команд;
-
состояния оборудования и разрешения.
В HMI:
-
визуализация и навигация;
-
удобство ввода, подтверждения;
-
форматирование и подсказки;
-
локальные “косметические” вычисления.
Причина: PLC — источник истины и работает детерминированно; HMI может перезагрузиться, потерять связь, зависеть от пользовательского ввода.
9) Сообщения и аварии (Alarms): как сделать их полезными
9.1. Типы тревог
-
Дискретные (битовые): авария/предупреждение по флагу.
-
Аналоговые: выход параметра за пределы (Hi/HiHi/Lo/LoLo), иногда с гистерезисом.
9.2. Настройка аварий: минимальный стандарт качества
Хорошее сообщение должно отвечать на 4 вопроса:
-
Что случилось (событие)
-
Где случилось (узел/агрегат)
-
Почему могло случиться (причина/контекст)
-
Что делать оператору (действие)
Это оформляется текстом, приоритетом и, при необходимости, связанным “экраном помощи”.
9.3. Приоритеты, классы, квитирование
Рекомендуется разделять:
-
аварии, требующие немедленного действия (высокий приоритет);
-
предупреждения;
-
информационные события (режимы, запуск/останов).
Квитирование (acknowledge) должно быть осмысленным:
-
оператор квитирует факт ознакомления;
-
сброс аварии (reset) — отдельное действие, если технологически требуется.
9.4. Журнал событий
Даже на панели полезно иметь:
-
список активных тревог;
-
список архивных (с фильтрами по времени/типу);
-
поиск/фильтрацию по узлу.
10) Тренды, рецепты, архивирование
10.1. Тренды
Типовые ошибки трендов:
-
слишком высокая частота записи “всё подряд”;
-
попытка трендировать сотни параметров;
-
отсутствие ключевых “контрольных” величин.
Практический подход:
-
определить 10–30 ключевых параметров для диагностики;
-
задать разумную частоту (от задачи: быстрые процессы требуют чаще, медленные — реже);
-
хранить достаточно истории для анализа инцидентов.
10.2. Рецепты
Рецепты применяют, когда требуется:
-
набор уставок под “продукт/партию/режим”;
-
быстрое переключение параметров по шаблону.
Риски рецептов:
-
отсутствие контроля прав на загрузку;
-
загрузка в неправильном режиме оборудования;
-
отсутствие подтверждения и протоколирования.
Хорошая практика:
-
загрузка рецепта только при разрешающем состоянии (PLC подтверждает);
-
протоколирование загрузки (кто, когда, какой рецепт).
10.3. Архивирование: что хранить где
Если панель ограничена по ресурсам, целесообразно:
-
хранить критически важные короткие архивы на панели;
-
длительные архивы и отчёты — на сервере/SCADA/историке (если архитектура предусматривает).
11) Пользователи, роли и безопасность
11.1. Матрица ролей
Минимальный набор ролей для производства:
-
Оператор: просмотр, базовые команды
-
Наладчик: уставки, сервисные функции
-
Инженер: расширенные настройки, диагностика
-
Администратор: пользователи, роли, обслуживание HMI
11.2. Ограничение действий по ролям
Контролируйте как минимум:
-
доступ к экрану “Сервис”;
-
возможность менять уставки;
-
возможность квитировать/сбрасывать аварии (по политике);
-
возможность запускать тестовые режимы.
Технически это делается через:
-
права на экраны/объекты;
-
привязку свойства Enabled/Visible к системным тегам пользователя/роли;
-
подтверждения.
11.3. Принцип минимально необходимых прав
Даже если в PLC есть защита, на HMI не стоит показывать лишние кнопки “всем”. В реальных пусках ошибки чаще происходят от непреднамеренных действий.
12) Обмен данными и интеграции
12.1. Базовый обмен HMI ↔ S7
Основа — корректные:
-
connection,
-
адресация тегов,
-
согласование типов,
-
частоты обновления.
12.2. Подключение сторонних устройств (концептуально)
В зависимости от платформы и проекта встречаются:
-
шлюзы протоколов (когда у оборудования не Siemens-протокол);
-
обмен через промежуточные сервисы (сервер, брокер сообщений);
-
интеграция по API (если HMI-среда это поддерживает).
Практический критерий выбора: устойчивость и диагностируемость. Интеграция должна иметь логи, ретраи, понятные таймауты и контроль ошибок.
13) Тестирование, симуляция и отладка
13.1. Что проверять в первую очередь
-
Связь HMI-PLC (онлайн-статусы, чтение/запись ключевых тегов)
-
Навигация: все переходы, pop-up, возвраты
-
Ввод уставок: диапазоны, подтверждения, права
-
Аварии: генерация, приоритеты, квитирование, очистка
-
Тренды: отображение, запись, масштаб осей, сохранение истории
13.2. Типовые проблемы на пусконаладке
-
“Теги не обновляются” — связь/адресация/тип данных/оптимизация опроса
-
“Панель тормозит” — тяжёлые экраны, слишком много динамики, высокая частота опроса
-
“Аварии не появляются” — неверная привязка, класс сообщений, условия формирования, квитирование
-
“Рецепт грузится, но оборудование не реагирует” — PLC не принимает в текущем режиме, нет подтверждения/фидбэка
14) Оптимизация производительности и надёжности
14.1. Частота опроса и количество тегов
Чем больше тегов и чем чаще они обновляются, тем выше нагрузка:
-
на CPU панели/рантайма;
-
на сеть;
-
на PLC (в части коммуникаций).
Практические меры:
-
обновлять часто только то, что действительно требуется в реальном времени;
-
на “сервисных” экранах загружать данные по событию (открыли экран → начали обновлять; закрыли → остановили);
-
избегать циклических скриптов, если можно сделать событие по изменению.
14.2. “Тяжёлые” объекты и динамика
Проблемы создают:
-
большие таблицы с постоянной перерисовкой;
-
множество объектов с динамической видимостью/цветом;
-
сложная графика на каждом экране.
Подход:
-
выносить повторяющиеся элементы в шаблоны/faceplates;
-
минимизировать количество одновременно активных анимаций;
-
не “держать открытым” сложный pop-up, если он не нужен.
14.3. Надёжность: связь и диагностика
На HMI стоит явно показывать:
-
статус связи с PLC;
-
текущий режим (Auto/Manual/Service);
-
активные блокировки, если они влияют на команды.
Это снижает ложные обращения “ничего не работает” и ускоряет диагностику.
15) Плюсы и минусы подхода “логика в HMI vs логика в PLC”
Плюсы
-
Разгрузка PLC от UI-деталей, если часть логики перенести на HMI (валидации, подсказки, форматирование).
-
Быстрая доработка интерфейсных сценариев без изменения технологической программы.
-
Удобные пользовательские функции (подсветка, контекстные окна) проще реализуются на HMI.
Минусы
-
Логика на HMI менее надёжна: зависит от связи, состояния панели, прав, перезагрузок.
-
Риск расхождения поведения: PLC “думает одно”, HMI “показывает другое”, если нет чёткой модели состояний.
-
Сложнее сопровождать, если технологически важные решения разбросаны между PLC и HMI.
-
Больше точек отказа: при смене панели/версии рантайма логика может потребовать адаптации.
16) FAQ
Что выбирать: Comfort или Unified?
Выбор определяется требованиями: сложность UI, необходимость современной компонентности, требования к интеграциям, долгосрочная поддержка, доступность специалистов. Для типовых промышленных интерфейсов Comfort-подход часто закрывает задачу, Unified выбирают, когда нужен современный UI-подход и развитие в рамках новой линейки.
Где правильнее делать валидацию и блокировки?
Валидацию ввода (диапазоны, подтверждения) удобно дублировать на HMI для удобства оператора, но блокировки и безопасность должны быть в PLC, чтобы исключить опасные действия при любых сбоях интерфейса.
Как организовать аварии, чтобы они реально помогали?
Каждой тревоге нужен понятный текст, привязка к узлу, приоритет и рекомендуемое действие оператора. Полезно иметь фильтры и историю, а также разделять “аварию”, “предупреждение” и “инфо-событие”.
Почему экран “тормозит” и с чего начать?
Сначала проверяют: количество обновляемых тегов, частоту опроса, объём динамики, таблицы/списки, циклические события. Часто проблема решается снижением обновления “всего подряд” и разделением данных по экранам.
Как безопасно дать доступ наладчику без риска для процесса?
Через роли и минимально необходимые права: разрешить только нужные экраны и действия, добавить подтверждения для критических команд, фиксировать факт входа/выхода пользователя, а технологические межблокировки держать в PLC.