SCADA SAMUTAGSCADA SAMUTAGРуководство пользователя Открыть Studio
РуководствоВвод-вывод

Ввод-вывод

Настройка соединений, карты переменных и диагностика качества.

Карта I/O-сервера и тэг проекта

I/O означает ввод-вывод (Input/Output). I/O-сервер описывает соединение с устройством и карту доступных переменных. Тэг шаблона описывает технологический смысл и ссылается на переменную карты. Такое разделение позволяет изменить адрес контроллера, не переделывая все экраны.

Доступные протоколы зависят от состава установленной сборки. Настройки отсутствующего протокола сохраняются при импорте проекта и открываются с предупреждением. Для опроса устройства установите сборку с поддержкой нужного протокола. Наличие драйвера и разрешение лицензии проверяются отдельно.

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

Локальная проверка «Старт» в Studio и опрос автономного Runtime — разные процессы. Изменение карты в Studio не заменяет карту уже работающего узла. Некоторые команды редактирования недоступны при запущенной локальной проверке: сначала нажмите «Стоп». Импорт CODESYS и чтение карты OPC UA могут изменять проект без остановки действующей проверки; новая карта используется после её перезапуска и последующей загрузки проекта на Runtime.

Карта Modbus: имена переменных, описания, типы, адреса и ссылки Runtime
Карта учебного I/O-сервера PLC_PumpStation. Для каждой переменной указаны описание, область данных, тип и адрес. Значение REAL занимает два последовательных регистра; ссылка Runtime формируется из имени I/O-сервера и имени переменной. Нажмите на изображение, чтобы открыть его в полном размере.

Создание I/O-сервера и выбор типа

  1. В проекте откройте вкладку «I/O серверы». Нажмите «+» над деревом или «Добавить I/O-сервер» внизу.
  2. Задайте уникальное название, например PLC1, и описание. Название используется в ссылках тэгов, поэтому задайте его по принятой системе обозначений оборудования.
  3. В поле «Тип сервера» выберите протокол по таблице ниже и создайте сервер. У существующего соединения тип не меняется: для другого протокола создайте новое.
  4. На вкладке «Настройка» заполните поля соединения. При первичной наладке чтения включите «Запретить запись» и нажмите «Сохранить» справа от «Старт».
  5. Заполните вкладку «Карта», проверьте обмен, свяжите переменные с тэгами проекта и назначьте I/O-сервер узлу Runtime. У Modbus Gate карта создаётся в дочерних устройствах.
Тип сервераКогда выбиратьИнструкция
Modbus TCPУстройство принимает обычные запросы Modbus TCP по сети.Настройка TCP
Modbus RTUУстройство подключено к последовательному порту компьютера.Настройка RTU
Modbus OVER TCPПреобразователь передаёт RTU-кадры через TCP без преобразования в Modbus TCP.Настройка OVER TCP
Modbus GateНесколько RTU-устройств доступны через общий шлюз Modbus TCP.Настройка шлюза
Modbus RTU (устройство шлюза)Дочернее устройство внутри созданного Modbus Gate.Настройка устройства
Siemens S7 TCPАдресный доступ к неоптимизированным DB S7-1200/1500.Настройка S7
МЭК-60870-5-104Телемеханика по TCP: общий опрос, спонтанные данные и команды.Настройка МЭК-104
Меркурий 200 / 230 / 234Чтение мощности и накопленной энергии; для 230/234 — фазные электрические величины.Настройка Меркурий
СимуляторПроверка проекта без оборудования: генераторы значений и имитация потери связи.Настройка Симулятор
BACnet/IPЧтение объектов автоматизации зданий и приоритетная запись.Настройка BACnet/IP
M-BusЧтение приборов учёта через M-Bus-мастер или прозрачный TCP-шлюз.Настройка M-Bus
HTTP/JSONПолучение JSON из HTTP API и отправка отдельных команд.Настройка HTTP/JSON
DLMS/COSEMЧтение счётчиков по OBIS через TCP Wrapper или HDLC.Настройка DLMS/COSEM
SNMPЧтение параметров сетевого оборудования по OID и запись SET.Настройка SNMP
MQTTПодписки на топики брокера и публикация сообщений.Настройка MQTT
Логика СПСетьСПТ/СПГ с протоколом СПСеть: последовательный порт, прозрачный или адресуемый TCP-шлюз; карта по каналам и номерам параметров.Настройка СПСеть
Omron FINSЧтение и запись областей памяти Omron по TCP или UDP.Настройка FINS
OPC UAЧтение значений внешнего сервера OPC UA по NodeId.Настройка OPC UA

На снимках используются учебные адреса 192.0.2.x. Замените их адресами оборудования. Вкладка «Сервер Modbus» или «Сервер OPC UA» в узле Runtime решает другую задачу — публикует значения SAMUTAG для внешних клиентов.

От устройства до тэга проекта
  1. I/O-серверПротокол, адрес устройства и параметры опроса
  2. КартаПеременная, адрес и тип данных
  3. Тэг проектаПривязка к переменной карты
  4. RuntimeОпрос, качество и использование значения

Карта Modbus: добавление переменной

Выберите транспорт, соответствующий устройству: TCP, RTU либо вариант шлюза. Для TCP задайте адрес и порт, для RTU — последовательный порт и параметры линии. Укажите идентификатор устройства, период опроса и таймаут запроса.

ОбластьНазначение
CoilДискретные значения, допускающие запись при разрешении устройства и проекта.
Discrete InputДискретные входы для чтения.
Holding RegisterРегистры, используемые для чтения и разрешённой записи.
Input RegisterРегистры входных данных для чтения.

В карте используется адрес PDU с нуля, без префикса области 4xxxx. Проверьте начало адресации в документации устройства и пересчитайте номер регистра при необходимости. До массового импорта прочитайте регистр, ожидаемое значение которого известно, и сравните результат с показанием контроллера.

Для многорегистровых значений важны порядок байтов и слов. В новых настройках для REAL используется CDAB при порядке байтов AB; конкретный контроллер может требовать другое сочетание. Проверьте порядок байтов и слов по известному вещественному значению контроллера.

BYTE занимает выбранный старший или младший байт 16-битного регистра. UDINT представляет беззнаковое 32-битное значение и занимает два регистра.

  1. Откройте вкладку «Карта» и нажмите «+ Добавить переменную».
  2. В «Название переменной» введите, например, Pressure; в «Комментарий» — «Давление после насосов».
  3. В «Область данных» выберите область по документации устройства. Для примера используйте Holding Register.
  4. В «Тип данных» выберите «Real (Float32)», в «Адрес» укажите 100. Переменная займёт регистры 100 и 101. Вводится адрес PDU с нуля, без префикса 40001 или 30001.
  5. Для BOOL внутри регистра выберите тип Bool и заполните «Бит регистра (0–15, только BOOL)». Для Coil и Discrete Input номер бита регистра не задаётся.
  6. Нажмите «Сохранить». В карте проверьте имя, описание, тип, адресный диапазон и ссылку PLC1.Pressure.
Поля области данных, типа, адреса и бита регистра в карте Modbus
Нижняя часть редактора переменной Pressure: REAL в Holding Register с начальным адресом 100. Поле бита недоступно, потому что выбран числовой тип. Нажмите на изображение, чтобы открыть его в полном размере.

Для большого списка используйте импорт CODESYS, импорт EasyBuilder или Excel. Для подготовки Excel сначала нажмите «Экспорт Excel», заполните полученную таблицу и откройте «Импорт Excel». Перед подтверждением проверьте предлагаемые изменения. Поиск по имени, адресу и комментарию находится в раскрывающемся блоке «Фильтр»; там же выбираются область и тип данных.

Modbus TCP: пошаговая настройка

  1. Создайте I/O-сервер типа Modbus TCP, например PLC1.
  2. В блоке «Подключение Modbus TCP» задайте «IP-адрес узла» и «Порт». Порт 502 распространён, но должен соответствовать настройке контроллера.
  3. Укажите «ID устройства» по документации устройства. Значение 255, предлагаемое формой, не является универсальным адресом любого контроллера.
  4. Задайте «Период опроса, мс», например 1000 для обновления раз в секунду. В блоке «Формирование запросов» задайте паузу и допустимый размер блоков. Если устройство запрещает читать промежутки между объявленными адресами, выберите «Только непрерывные данные».
  5. В блоке «Данные и параллельный обмен» проверьте «Порядок байтов в регистре» и «Порядок слов LONG / REAL». Начальные AB и CDAB должны быть подтверждены контрольным значением. «Одновременные подключения» сначала оставьте равным 1.
  6. Настройте таймаут, устаревание и число неудачных чтений. Нажмите «Сохранить».
  7. Добавьте контрольную переменную в карту и выполните проверку обмена. После успешной проверки настройте остальные переменные и привязки.
Настройки PLC1: IP, порт, ID устройства и период Modbus TCP
Сетевые параметры Modbus TCP находятся справа, общие свойства и запрет записи — слева. Кнопки «Старт» и «Сохранить» расположены над рабочей областью. Нажмите на изображение, чтобы открыть его в полном размере.

Modbus RTU: последовательный порт

  1. Создайте I/O-сервер типа Modbus RTU, например Meter1.
  2. В «COM-порт / устройство» укажите порт компьютера, который будет выполнять опрос: например /dev/ttyUSB0 в Linux или COM3 в Windows. Учётная запись службы должна иметь доступ к этому порту.
  3. Задайте «Скорость, бит/с», «Чётность» и «Стоп-биты» точно по настройкам устройства. Используются восемь бит данных. На иллюстрации заданы 19200 бит/с, Even и один стоп-бит.
  4. В «ID устройства» задайте адрес от 1 до 247. Устройства одной линии должны иметь разные адреса; широковещательный адрес 0 для опроса не используется.
  5. Настройте период, паузу между запросами, размеры блоков, формат данных и контроль связи. Опрос последовательный; увеличивать число TCP-соединений для этого типа не требуется.
  6. Нажмите «Сохранить», заполните карту Modbus и проверьте обмен. Если адаптер подключён только к компьютеру Runtime, локальная проверка Studio с другого компьютера его не использует: проверьте значения после загрузки проекта на Runtime.
Порт, скорость, чётность, стоп-биты и адрес устройства Modbus RTU
Meter1 настроен на /dev/ttyUSB0, 19200 бит/с, Even, один стоп-бит и адрес 1. Для реального устройства значения берутся из его настроек. Нажмите на изображение, чтобы открыть его в полном размере.

Modbus OVER TCP: прозрачный преобразователь

  1. Убедитесь, что преобразователь работает в режиме передачи RTU-кадров через TCP. Если он преобразует запросы Modbus TCP в RTU, используйте Modbus Gate или Modbus TCP согласно его документации.
  2. Создайте сервер типа Modbus OVER TCP, например SerialBridge1.
  3. В «IP-адрес узла» и «Порт» укажите сетевые параметры преобразователя. Его TCP-порт может отличаться от 502.
  4. В «ID устройства» укажите адрес RTU-устройства 1–247 за преобразователем. Скорость, чётность и стоп-биты последовательной линии задаются на самом преобразователе.
  5. Задайте период и паузу между запросами с учётом скорости линии. Настройте формат данных и контроль связи; используется один последовательный канал.
  6. Сохраните настройки, заполните карту Modbus и проверьте контрольное значение. Затем назначьте сервер узлу Runtime и загрузите проект.
IP и порт прозрачного преобразователя Modbus OVER TCP
SerialBridge1 соединяется с сетевым преобразователем, а поле ID адресует RTU-устройство за ним. Параметры RS-485 в этой форме не задаются. Нажмите на изображение, чтобы открыть его в полном размере.

Modbus Gate: создание общего шлюза

  1. Создайте сервер типа Modbus Gate, например Gateway1. Он описывает общий канал к шлюзу Modbus TCP — RTU.
  2. В блоке подключения задайте «IP-адрес узла» и «Порт» шлюза. Последовательную линию и маршрутизацию адресов настройте на самом шлюзе.
  3. Задайте «Пауза между запросами, мс». Через общий канал запросы устройств выполняются последовательно.
  4. В блоке «Пропуск неотвечающих устройств» проверьте «Неудачных попыток до пропуска» и «Пропуск устройства, мс». Например, после трёх неудач устройство временно пропускается на 30000 мс, чтобы его отсутствие не задерживало остальные.
  5. Нажмите «Сохранить». Создайте дочерние устройства командой «Добавить устройство RTU» в контекстном меню шлюза.
  6. В составе I/O узла Runtime назначьте сам шлюз. Его устройства будут включены вместе с ним.
Настройка общего сетевого шлюза Modbus Gate
Gateway1 содержит параметры общего соединения. Вкладки «Карта» у шлюза нет: переменные принадлежат его дочерним устройствам. Нажмите на изображение, чтобы открыть его в полном размере.

Устройство RTU внутри Modbus Gate

  1. В дереве I/O нажмите правой кнопкой на Gateway1 и выберите «Добавить устройство RTU».
  2. Задайте уникальное имя, например GateMeter1, и описание. Устройство появится внутри ветви шлюза; тип «Modbus RTU (устройство шлюза)» назначается при создании.
  3. В настройках проверьте подпись «Шлюз: Gateway1». Укажите «ID устройства» 1–247, соответствующий прибору на линии. Для следующего прибора используйте его собственный адрес.
  4. Задайте период опроса, размеры блоков, формат данных и контроль качества именно этого прибора. IP и порт используются от родительского шлюза.
  5. Нажмите «Сохранить» и заполните вкладку «Карта» этого устройства. Например, его переменная Pressure будет доступна тэгу проекта по ссылке GateMeter1.Pressure.
  6. Повторите шаги для остальных приборов. Проверьте каждый адрес и затем загрузите обновлённый проект на Runtime с назначенным шлюзом.
Дочернее устройство GateMeter1, родитель Gateway1 и адрес RTU
Устройство использует общее соединение Gateway1, но имеет собственное имя, адрес, карту и настройки качества. Нажмите на изображение, чтобы открыть его в полном размере.

Период, таймаут и число попыток

  1. В настройках Modbus прокрутите форму до блока «Контроль связи и восстановление».
  2. В «Таймаут запроса, мс» задайте допустимое ожидание одного ответа. Например, 2000 мс.
  3. В «Неудачных чтений до плохого качества» укажите число последовательных неудач; начальное значение — 3.
  4. Для «Устаревание значения, мс» можно оставить 0: предел определяется автоматически как максимум трёх периодов опроса и двух таймаутов запроса. При ручном значении учитывайте полный цикл чтения устройства.
  5. Настройте начальную и максимальную задержки переподключения и множитель. Например, 500 мс, 30000 мс и 2 дают увеличивающуюся паузу до заданного предела.
  6. Сохраните настройки и проверьте поведение при временном отключении и восстановлении связи в согласованных условиях испытания.
Таймаут запроса, автоматическое устаревание, три неудачных чтения и задержки восстановления
Поля контроля связи Modbus. Таймаут запроса, срок устаревания и порог неудачных чтений задаются отдельно. Нажмите на изображение, чтобы открыть его в полном размере.

Период опроса определяет, как часто сервер планирует чтение. Таймаут ограничивает ожидание ответа на конкретный запрос. При периоде 5 секунд и таймауте 2 секунды очередное чтение планируется через 5 секунд, а ожидание ответа на каждый запрос ограничено 2 секундами.

Срок устаревания — отдельная настройка. Он должен соответствовать заданному периоду обновления и допустимой технологической задержке. Слишком короткий срок вызывает ложные переходы качества, слишком длинный маскирует потерю данных.

Настройка числа неудачных попыток чтения определяет, когда подтверждать потерю связи; по умолчанию используется три попытки. При закрытии соединения чтение может быть повторено в том же цикле. Запись автоматически не повторяется: повторная отправка может привести к повторному выполнению команды оборудованием.

Увеличение числа соединений не всегда ускоряет опрос. Устройство должно поддерживать параллельные подключения, а карта — содержать достаточно независимых блоков. Начните с одного канала и сравните время опроса после изменения настройки.

Когда выполняется запись

Runtime отправляет запись при изменении значения со стороны скрипта или оператора. Если значение не изменилось, следующий цикл Runtime не вызывает его повторную запись. Успешный ответ записи сам по себе не переводит качество в uncertain; ошибки протокола и отсутствие связи отражаются отдельно.

Для битовой записи в Holding Register используется маска и значение регистра, прочитанное перед сканом. FC22 не используется, дополнительное чтение перед каждой записью не выполняется. Это важно при совместном управлении: если другой клиент меняет соседние биты, необходимо согласовать владельца регистра.

Слайдер «Запретить запись» блокирует запись на уровне I/O-сервера. По умолчанию он отключён. На этапе проверки чтения включите запрет. Перед проверкой команд записи отключите его.

Как проходит ручная команда оператора
  1. Действие на АРМВвод уставки или нажатие кнопки.
  2. Проверка доступаДоступ к кадру, право записи тэга и пароль, если требуется.
  3. RuntimeИзменение значения тэга и обработка его I/O-привязки.
  4. I/O-сервер → ПЛКПередача изменения, если запись разрешена настройками сервера.

Импорт адресованных переменных CODESYS

В карте Modbus откройте «Импорт из CODESYS» и вставьте объявления переменных. Импортируются переменные поддерживаемых типов с явным адресом; имя, тип и комментарий переносятся в строки карты. Сначала выполните проверку, изучите сообщения, затем подтвердите импорт.

VAR_GLOBAL
  Pressure AT %MB200 : REAL; (* Давление после насосов *)
  ValveOpen AT %MX3.1 : BOOL; (* Задвижка открыта *)
  Temperatures AT %MB676 : ARRAY [-2..2] OF REAL;
END_VAR

Для этого импорта M-адреса трактуются через Holding Register. %MB200 для REAL начинается с Modbus-регистра 100 и занимает регистры 100 и 101. %MX3.1 означает бит 9 слова с индексом 1: первый индекс обозначает байт, а не регистр.

Массив разворачивается в последовательность переменных. Отрицательный индекс обозначается n, положительный — p, например Temperatures_n2 и Temperatures_p2; адрес сдвигается на размер типа, комментарий дополняется индексом. Проверьте итоговые строки в предпросмотре, включая крайние индексы массива и адреса упакованных типов.

«Обновить существующие» позволяет изменить адреса уже известных имён. Если обновление отключено, проверьте сообщения о совпадении имён. Для структур без явных адресов строки карты автоматически не создаются.

Импорт объявлений CODESYS
  1. Исходный текстСкопируйте объявления переменных с адресами AT.
  2. ПроверкаПроверьте типы, адреса и комментарии в предварительном результате.
  3. ИмпортПримените выбранный режим обновления существующих переменных.
  4. Загрузка на RuntimeСохранённая карта применяется на узле после загрузки проекта.

Импорт карты EasyBuilder

Кнопка импорта EasyBuilder находится в карте I/O-сервера. Она предназначена для экспортированного списка переменных устройств, а не для переноса графического проекта панели.

  1. Выберите файл экспорта и явно укажите начало адресации: с нуля или с единицы.
  2. Определите, использовать ли серверы с совпадающими именами либо создавать новые с индексом.
  3. Для существующих серверов выберите политику обновления тэгов. Перед заменой просмотрите совпадения.
  4. Проверьте типы, области данных и порядок слов на нескольких контрольных переменных.
  5. Примените импорт и затем загрузите изменённый проект на Runtime.

После импорта проверьте сетевые настройки выбранных устройств.

Массовый импорт EasyBuilder
  1. Файл экспортаВыберите файл карты устройств.
  2. АдресацияУкажите начало адресов: с нуля или с единицы.
  3. Серверы и переменныеВыберите использование существующих серверов или создание новых; проверьте замену переменных.
  4. Проверка результатаСверьте устройства, адреса и типы до загрузки проекта на узел.

OPC UA: чтение с внешнего сервера

  1. Создайте I/O-сервер типа OPC UA, например UaServer1.
  2. В «Endpoint URL» введите адрес, предоставленный администратором UA-сервера, например opc.tcp://192.0.2.25:4840. При наличии пути в адресе укажите его полностью.
  3. Установите «Период чтения, мс» и «Узлов в запросе Read». Начните с допустимого сервером размера запроса; при ограничениях сервера уменьшите его.
  4. Задайте «Таймаут запроса, мс», «Устаревание значения, мс» и начальную/максимальную паузу переподключения. Для OPC UA срок устаревания задаётся явно; значение 0 для автоматического режима Modbus здесь не применяется.
  5. Раскройте блок «Безопасность и аутентификация». Выберите согласованный режим «Безопасность (Basic256Sha256)»: None, Sign или SignAndEncrypt. Для защищённого соединения задайте Application URI клиента и пути к сертификату клиента, его закрытому ключу и доверенному сертификату сервера. Настройте доверие к сертификату клиента на UA-сервере.
  6. Если требуется парольный вход, выберите SignAndEncrypt, заполните «Пользователь (пусто — Anonymous)» и «Переменная окружения с паролем на узле». Значение этой переменной должно быть задано в окружении службы. Для анонимного входа пользователь не задаётся; сервер должен разрешать такой вход.
  7. Нажмите «Сохранить». Заполните карту вручную, чтением с UA-сервера или импортом Excel.
  8. Выполните проверку, свяжите переменные с тэгами в режиме «Только чтение», назначьте I/O-сервер Runtime и загрузите проект.
Поля Endpoint URL, периода, размера запроса, таймаута и устаревания OPC UA
Настройка соединения UaServer1. Параметры безопасности находятся ниже в отдельном раскрывающемся блоке. Нажмите на изображение, чтобы открыть его в полном размере.

Клиент OPC UA поддерживает чтение значений. Запись и вызов методов не поддерживаются.

Подготовьте сертификаты, ключи и переменную окружения с паролем на обоих компьютерах: Studio использует их при локальной проверке, Runtime — при рабочем опросе. Перед добавлением сертификата сервера в доверенные проверьте его у администратора UA-сервера.

В карте задаются имя, описание и NodeId, например ns=2;s=Temperature. Индекс пространства имён (ns) определяется сервером OPC UA. Если сервер изменил список пространств имён NamespaceArray, проверьте сохранённые NodeId.

Результат чтения карты применяется целиком после завершения обхода. При ошибке существующая карта сохраняется.

Для импорта и экспорта Excel используются колонки «Название переменной», «Описание» и «NodeId».

OPC UA: заполнение и чтение карты

  1. Перейдите на вкладку «Карта». Для одной известной переменной нажмите «Добавить переменную» и заполните «Имя переменной», «Описание» и «NodeId», например ns=2;s=Pressure. Сохраните строку.
  2. Для обнаружения переменных нажмите «Считать карту». В поле «Начальный NodeId» оставьте i=85 для Objects либо укажите NodeId нужной папки. Выбор папки сокращает объём чтения.
  3. Включите «Обновить существующие переменные», только если нужно обновление уже найденных записей. Существующая карта целиком не удаляется.
  4. Нажмите «Считать» и дождитесь завершения. Чтение использует сохранённые настройки, а подключение выполняется со стороны Studio: ей должны быть доступны сеть, сертификаты и переменная окружения с паролем.
  5. Проверьте имена, описания и NodeId полученных строк. Обход добавляет читаемые скалярные переменные; методы, массивы и ссылки на другие UA-серверы пропускаются.
  6. При необходимости нажмите «Экспорт Excel», отредактируйте таблицу и используйте «Импорт Excel». Проверьте имена и NodeId перед подтверждением обновления.
  7. После изменения карты перезапустите локальную проверку и загрузите проект на Runtime. Подготовьте сертификаты и окружение также на компьютере Runtime — файлы локальной Studio не появляются там автоматически.
Карта OPC UA: переменные Pressure и Running, NodeId, чтение карты и Excel
В карте UA переменная связывается с NodeId, а тип получаемого значения определяется сервером. Кнопки чтения, импорта и экспорта находятся над таблицей. Нажмите на изображение, чтобы открыть его в полном размере.
Диалог Считать карту OPC UA с начальным NodeId и переключателем обновления
Диалог позволяет ограничить чтение поддеревом и выбрать обновление существующих переменных. Кнопка «Считать» запускает обход сервера. Нажмите на изображение, чтобы открыть его в полном размере.

Проверка обмена и привязка к тэгу

  1. Сохраните подключение и карту. Если оборудование доступно компьютеру Studio, нажмите «▶ Старт» над вкладками I/O-сервера. Это запускает локальную проверку; проект на удалённом Runtime не изменяется.
  2. Откройте «Карта» и сравните контрольное значение с устройством. В карте OPC UA дополнительно выводятся качество и время получения. Если значения недоступны, проверьте сообщение, адрес, протокол, права доступа и формат данных.
  3. Завершите локальную проверку кнопкой «Стоп». Для редактирования полей, заблокированных при работе проверки, остановка обязательна.
  4. Откройте тэг шаблона, экземпляра или модели. В настройках ввода-вывода включите «Включить ввод-вывод» и выберите «Режим обмена». Для измерения, а также для OPC UA, используйте «Только чтение».
  5. В «Общая ссылка ввода-вывода» укажите существующую переменную карты, например PLC1.Pressure или UaServer1.Pressure. Если для чтения и записи нужны разные адреса, включите соответствующий переключатель и заполните отдельные ссылки. Для булевого сигнала при необходимости включите «Инверсия».
  6. При необходимости включите «Авария по плохому качеству I/O», задайте её приоритет и настройте масштабирование. Сохраните тэг.
  7. Назначьте I/O-сервер и модель с этим тэгом одному узлу Runtime. Сохраните узел и загрузите проект.
  8. В «Просмотр сервера» добавьте тэг в область «Значения» кнопкой «…». Сравните значение, качество и текст ошибки. После проверки Runtime обновите АРМ, если изменились его привязки.

Для команд записи необходимо разрешение устройства, подходящая область Modbus или переменная Siemens S7 с разрешённой записью, режим записи тэга и отключённый запрет записи I/O-сервера. Проверьте команды в режиме наладки.

Проверка значений и журнал обмена

Сравните значение в карте, значение тэга Runtime и значение на АРМ. При расхождении проверьте адрес, тип, масштабирование, инверсию и версию проекта, работающую на узле. Убедитесь, что динамический скрипт не заменил I/O-ссылку после запуска.

В просмотре значений узла проверьте качество и текст ошибки. «Неизвестная ссылка I/O» означает, что в текущей карте не найдена переменная по указанной ссылке; это не то же самое, что недоступный контроллер.

В журнале сервера можно выбрать конкретный I/O-сервер. Режим debug для Modbus показывает запросы и ответы и помогает проверить адресацию. Используйте подробный журнал на время диагностики: большой поток сообщений расходует место и затрудняет поиск остальных событий.

Siemens S7-1200/1500: подготовка контроллера

Siemens S7 TCP обеспечивает чтение и запись данных CPU через её Ethernet/PROFINET-интерфейс. Используется адресный обмен S7 по ISO-on-TCP, порт 102. Карта содержит адреса обычных блоков данных DB. Символьный доступ к оптимизированным DB и обмен PROFINET IO этим драйвером не выполняются.

  1. В TIA Portal откройте проект контроллера. Проверьте IP-адрес CPU и доступность её интерфейса с компьютера, на котором работает сервер приложений SAMUTAG.
  2. В свойствах CPU откройте Protection & Security → Connection mechanisms. Разрешите Permit access with PUT/GET communication from remote partner. На версиях CPU с управлением пользователями и ролями предварительно назначьте необходимые разрешения доступа согласно руководству этой CPU: расположение и доступность переключателя зависят от версии прошивки и TIA Portal.
  3. Создайте DB обмена или выберите существующий стандартный DB. В свойствах блока, на вкладке Attributes, отключите Optimized block access. Изменение этой настройки может изменить смещения переменных: после компиляции используйте новые адреса из TIA Portal.
  4. Добавьте переменные обмена. Запишите номер DB, тип каждой переменной и её смещение. Для BOOL также укажите номер бита.
  5. Скомпилируйте программу и аппаратную конфигурацию, затем загрузите изменения в CPU. Перед загрузкой проверьте предлагаемые TIA Portal действия: они могут потребовать остановки CPU или переинициализации данных.
  6. Разрешите сетевой доступ от Runtime к TCP-порту 102 CPU. Для кнопки «Старт» в Studio соединение устанавливается с компьютера Studio; после загрузки проекта — с узла Runtime.

PUT/GET предоставляет доступ по адресам памяти без защиты современного шифрованного HMI-сеанса. Используйте его в доверенной технологической сети и ограничьте сетевой доступ к контроллеру.

Siemens S7 TCP: настройка I/O-сервера

  1. На вкладке «I/O серверы» добавьте сервер. Задайте имя, например PLC_Boiler, и выберите тип «Siemens S7 TCP (S7-1200/1500)».
  2. Откройте настройки подключения и заполните поля по таблице ниже.
  3. Если команды записи не нужны, включите «Запретить запись». Этот переключатель блокирует все выходные команды данного I/O-сервера.
  4. Нажмите «Сохранить» в верхней панели и перейдите на вкладку «Карта».
Настройки Siemens S7 TCP: адрес CPU, порт, rack, slot, период опроса, таймаут и попытки чтения
Настройки I/O-сервера Siemens S7 TCP. Кнопки «Старт» и «Сохранить» находятся в верхней панели; запрет записи задаётся отдельно от параметров соединения. Нажмите на изображение, чтобы открыть его в полном размере.
ПолеНазначение
IP-адрес или имя контроллераАдрес Ethernet-интерфейса CPU.
Порт TCPОбычно 102. Меняйте только при использовании явно настроенного перенаправления.
Rack / SlotПараметры адресации CPU в S7-соединении. Начальные значения — 0 / 1; проверьте их по конфигурации своего контроллера.
Период опроса, мсПауза между завершением одного цикла чтения и началом следующего. Сетевой опрос выполняется независимо от скана Runtime.
Таймаут запроса, мсМаксимальное время ожидания одного сетевого ответа.
Попыток чтения до ошибки связиЧисло попыток восстановить чтение в текущем цикле. По умолчанию 3. После исчерпания попыток выставляется ошибка связи. Запись автоматически не повторяется.
Срок устаревания данных, мсВозраст последнего успешного чтения, после которого значение получает плохое качество. Должен быть не меньше периода опроса плюс таймаут, умноженный на число попыток.
Максимум байт в запросе чтенияОграничение размера объединённого чтения соседних переменных одного DB. Дополнительно учитывается размер PDU, согласованный с CPU.

Siemens S7 TCP: карта переменных и проверка обмена

Нажмите «Добавить переменную». Заполните имя, описание, адрес и тип. Для выходной команды включите «Разрешить запись»; по умолчанию переменная доступна только для чтения. Имена переменных должны быть уникальны внутри I/O-сервера.

Пример адресаТипЗанимаемая память
DB10.DBX0.1BOOLБит 1 байта 0. Номер бита от 0 до 7.
DB10.DBB1BYTE, SINTОдин байт со смещения 1.
DB10.DBW2WORD, UINT, INTДва байта со смещения 2.
DB10.DBD4DWORD, UDINT, DINT, REALЧетыре байта со смещения 4.
DB10.DBB8LREALВосемь байт со смещения 8. Начальный байт задаётся адресом DBB.
Карта Siemens S7 TCP с переменными Start и Temperature, адресами DB, типами и разрешением записи
Пример карты: команда BOOL и измерение REAL. Значения и качество появляются после запуска локальной проверки. Фильтр ищет по имени, описанию и адресу. Нажмите на изображение, чтобы открыть его в полном размере.

Тип определяет интерпретацию содержимого памяти. Например, одинаковый адрес DBD может содержать REAL или DINT: выберите тот тип, который задан в программе ПЛК. Массивы представляются отдельными строками карты с рассчитанными смещениями; строки STRING и структуры в этом варианте драйвера не поддерживаются.

  1. Добавьте входную переменную Temperature типа REAL с адресом DB10.DBD4, если именно этот адрес используется в вашем DB.
  2. Нажмите «Старт». В карте проверьте значение, качество, время получения и состояние соединения. При ошибке наведите указатель на значение: подсказка содержит причину.
  3. Остановите локальную проверку перед изменением карты или настроек.
  4. В настройках I/O тэга шаблона укажите ссылку PLC_Boiler.Temperature. Выберите нужное направление обмена. Для записи должны разрешать запись и тэг, и переменная карты, и I/O-сервер.
  5. Назначьте I/O-сервер узлу Runtime и загрузите проект на узел. Проверьте значения и качество в диагностике узла.

Runtime получает последние считанные значения из памяти. Драйвер отправляет только изменённые выходы; запись BOOL выполняется битовой командой S7, без чтения и перезаписи соседних битов. Подтверждение записи означает принятие команды CPU, а фактическое состояние контролируется последующим чтением.

Siemens S7 TCP: диагностика ошибок

СообщениеЧто проверить
Таймаут или отказ соединенияIP, доступность TCP 102, сетевые правила, питание CPU и доступное количество S7-соединений.
CPU отклонила COTP-соединениеRack, Slot, параметры защиты и ресурсы соединений CPU.
Доступ запрещён, S7 0x03Разрешение PUT/GET, права доступа CPU и разрешённые операции с DB.
Адрес за границами DB, S7 0x05Байтовое смещение, размер переменной и фактическую длину загруженного DB.
DB отсутствует или недоступен, S7 0x0AНомер DB, загрузку блока в CPU и отключение оптимизированного доступа.
Значение устарелоВремя последнего успешного чтения, длительность полного опроса карты и установленный срок устаревания.
Запись запрещена настройками I/O-сервераПереключатель «Запретить запись». Для отдельной переменной также проверьте «Разрешить запись».
Ошибка записи после обрыва соединенияПроверьте фактическое состояние ПЛК перед повторной командой: CPU могла принять запись до обрыва ответа.

В журнале узла выберите источник нужного I/O-сервера. Журнал содержит установление и потерю связи, имя и адрес переменной при ошибке чтения или записи. В режиме debug дополнительно выводятся переданные и принятые кадры S7 в шестнадцатеричном виде.

Omron FINS: подготовка контроллера

Драйвер читает и записывает адресуемую память контроллеров Omron через FINS/TCP или FINS/UDP. Используется адресация областей CS/CJ/CP. Поддержка транспорта и доступные области зависят от модели CPU и установленного Ethernet-модуля; проверьте их в руководстве контроллера.

  1. Задайте IP-адрес Ethernet-интерфейса контроллера и включите нужный транспорт FINS. Стандартный порт — 9600.
  2. Для TCP разрешите подключение от компьютера Runtime. При значении SA1 = 0 драйвер запросит адрес клиента у контроллера; DA1 = 0 использует адрес сервера, полученный при подключении.
  3. Для UDP задайте разные номера узлов FINS компьютеру Runtime и контроллеру (1–254). Проверьте таблицу преобразования FINS/IP или автоматическое преобразование адресов в Ethernet-модуле. Обратный маршрут должен вести к компьютеру, выполняющему опрос.
  4. При прямом подключении к CPU оставьте номера сетей SNA/DNA и номер модуля DA2 равными 0. Для маршрутизируемой сети используйте настройки из проекта ПЛК.
  5. Определите адреса переменных и типы данных. Например, значение REAL по адресу D100 занимает слова D100 и D101; следующее значение REAL можно разместить с D102.
  6. Загрузите настройки в контроллер. При локальной проверке обмен идёт с компьютера Studio, после загрузки проекта — с узла Runtime. Для UDP каждому компьютеру нужен собственный свободный адрес FINS.

Omron FINS: настройки сервера

  1. На вкладке «I/O серверы» создайте сервер, например PLC_Omron, и выберите Omron FINS (TCP/UDP).
  2. Укажите IP-адрес, транспорт и порт. Заполните адреса FINS согласно конфигурации контроллера.
  3. Выберите порядок слов. По умолчанию младшее 16-битное слово передаётся первым. Внутри слова старший байт идёт первым. Порядок слов применяется к DWORD, UDINT, DINT, REAL и LREAL.
  4. Сохраните настройки, заполните карту и нажмите «Старт» для локальной проверки значений.
ПолеНазначение
Период опросаПауза до следующего цикла чтения после завершения предыдущего.
Таймаут запросаПредельное время ожидания ответа на команду.
Попыток чтения до ошибки связиКоличество попыток при сетевом сбое; по умолчанию 3. После исчерпания попыток устанавливается ошибка связи.
Срок устаревания данныхВремя, после которого последнее прочитанное значение перестаёт считаться актуальным.
Максимум байт в запросе чтенияОграничение объединения соседних адресов одной области. Чётное число от 8 до 1000; по умолчанию 400.
Запретить записьБлокирует выходные команды всего I/O-сервера.
Настройки Omron FINS с выбором TCP или UDP и адресами узлов
Настройки Omron FINS. Кнопки запуска и сохранения доступны в верхней панели. Нажмите на изображение, чтобы открыть его в полном размере.

Omron FINS: карта переменных

В карте задайте имя, описание, адрес, тип и разрешение записи. Для привязки тэга используйте ссылку PLC_Omron.ИмяПеременной. Фильтр ищет по имени, описанию и адресу.

ТипПример адресаРазмер
BOOLD100.0, CIO10.03, W20.15, H0.1, A100.2Один бит; номер после точки от 0 до 15
WORD, UINT, INTD100, CIO10, W20, H0, A100Одно 16-битное слово
DWORD, UDINT, DINT, REALD102Два последовательных слова
LREALD104Четыре последовательных слова

D — память данных, CIO — область входов/выходов, W — рабочая область, H — удерживаемая область, A — вспомогательная область. Доступность конкретных адресов и запись в них определяются контроллером. Строки, EM-банки, таймеры и счётчики этим драйвером не адресуются.

Запись должна быть разрешена и в карте, и в настройках ввода-вывода тэга. Изменённое значение передаётся отдельной командой. BOOL записывается непосредственно в указанный бит, без перезаписи соседних битов. При потере подтверждения команда записи автоматически не повторяется.

Карта Omron FINS: адреса D2 и D0.1, типы REAL и BOOL
Карта переменных Omron FINS. После запуска рядом со значением отображаются качество и ошибка обмена. Нажмите на изображение, чтобы открыть его в полном размере.

Omron FINS: диагностика

Состояние связи отображается над картой; качество и ошибка конкретной переменной — в её строке. Журнал использует источник I/O.ИмяСервера. В режиме Debug записываются отправленные и полученные пакеты. После восстановления связи появляется запись об успешном подключении.

СообщениеЧто проверить
Нет ответа или соединение отклоненоIP-адрес, порт, выбранный TCP/UDP, настройки Ethernet-модуля и доступность сети.
Ошибка согласования FINS/TCPРазрешён ли TCP, свободен ли адрес SA1 и не исчерпан ли лимит подключений контроллера.
Нет ответа по UDPУзлы SA1/DA1, соответствие FINS/IP и обратный маршрут к Studio или Runtime.
0x1103, 0x1104Область памяти, адрес и число занимаемых слов. Уменьшите блок чтения при ограничении контроллера.
0x2101, 0x2102, 0x2201Разрешение записи, защиту памяти и допустимость команды в текущем режиме CPU.
Значение устарелоВремя последнего успешного чтения, длительность цикла и срок устаревания.
Число прочитано, но имеет неверную величинуТип, начальный адрес и порядок 16-битных слов.

Описание команд и кодов памяти: Omron W342, Communications Commands Reference Manual.

МЭК-60870-5-104: подключение станции телемеханики

SAMUTAG работает как управляющая станция (клиент). Сервер устройства передаёт состояния, измерения и показания счётчиков по TCP. После открытия соединения клиент разрешает передачу данных командой STARTDT, выполняет общий опрос и принимает спонтанные сообщения.

  1. Создайте I/O-сервер типа МЭК-60870-5-104. Укажите имя, по которому к его переменным будут обращаться тэги проекта.
  2. Введите IP-адрес устройства и порт. Стандартный порт — 2404. Адрес инициатора OA по умолчанию равен 0; при необходимости укажите значение, принятое на устройстве.
  3. Проверьте таймаут запросов, число неудачных попыток до ошибки связи и паузу между переподключениями. По умолчанию ошибка связи устанавливается после трёх неудачных попыток.
  4. Задайте период общего опроса. Значение 0 оставляет только опрос при подключении. Между общими опросами продолжается приём спонтанных данных.
  5. Откройте вкладку Карта, добавьте переменные и нажмите Старт для локальной проверки. Для работы на сервере приложений загрузите обновлённый проект на узел.
Настройки клиента МЭК-104: соединение, таймеры, окна и общий опрос
Настройки клиента МЭК-60870-5-104 в Studio. Нажмите на изображение, чтобы открыть его в полном размере.
ПараметрНазначение
t1, t2, t3Ожидание подтверждения, задержка отправки подтверждения и период проверки соединения. t2 должен быть меньше t1.
k и wРазмеры окон отправленных и принятых кадров. w не должен превышать k.
Часовой пояс устройстваСмещение времени CP56Time2a относительно UTC в минутах. Для устройства с московским местным временем укажите 180, для UTC — 0. Короткая метка времени без даты не преобразуется в полную дату.
Срок устаревания0 отключает проверку возраста значения. Это значение по умолчанию для спонтанного обмена: отсутствие изменений само по себе не означает потерю связи. При включении задайте срок больше периода общего опроса с учётом времени его выполнения.

МЭК-104: карта данных и команды

Адрес записывается как CA:IOA: общий адрес станции и адрес информационного объекта. Например, 1:100. CA находится в диапазоне 1–65534, IOA — 0–16777215. Тип должен соответствовать данным, которые передаёт устройство.

Тип картыЗначение
SingleОднопозиционное состояние BOOL.
DoubleДвухпозиционное состояние: 1 — выключено, 2 — включено. Промежуточное и неопределённое состояния имеют плохое качество.
StepПоложение ступенчатого регулятора.
Bitstring32-битовая строка, представленная целым числом.
NormalizedНормализованное измерение от −1 включительно до 1 исключительно.
ScaledМасштабированное 16-битное целое.
Floating32-битное вещественное число.
CounterИнтегральное показание счётчика.

Для управления включите Разрешить запись и выберите тип команды. Он задаётся отдельно от типа принимаемых данных. Команда может использовать другой CA:IOA; если адрес команды оставлен пустым, используется адрес переменной. Поддерживаются Single, Double, Regulating, Normalized, Scaled, Floating и Bitstring. Для Double и Regulating передаются значения 1 или 2.

Выбор перед выполнением (SBO) включает последовательность «выбрать — получить подтверждение — выполнить». Для Bitstring выбор не предусмотрен. Ожидать завершение команды включает проверку ACTTERM после положительного ACTCON. Включайте её, если устройство передаёт подтверждение завершения.

Запись выполняется только для изменённого значения, если она разрешена настройками I/O-сервера, карты и тэга. При отказе устройства или потере подтверждения команда автоматически не повторяется.

Карта МЭК-104 с адресом CA:IOA и типом Single
Переменная карты МЭК-104 и команды редактирования. Нажмите на изображение, чтобы открыть его в полном размере.

Диагностика обмена МЭК

В карте отображаются значение, качество и время получения. Подробная ошибка доступна в диагностике переменной и журнале I/O-сервера. В режиме Debug журнал содержит подробные сведения о запросах и ответах устройства.

СообщениеДействия
Соединение отклонено или истёк таймаутПроверьте адрес, порт, доступность сети и разрешение клиентских подключений на устройстве.
Нет завершения общего опросаПроверьте CA, поддержку общего опроса и таймаут. Станция должна завершить опрос сообщением ACTTERM.
Команда отклонена / нет подтвержденияПроверьте адрес команды, тип, Direct/SBO, права управления и блокировки устройства.
Неверный тип данныхСопоставьте тип карты с типом данных устройства.
Плохое качествоПроверьте исходный флаг качества устройства, ошибку чтения, возраст данных и результат последней команды.

Счётчики Меркурий 200, 230 и 234

Драйвер предназначен для чтения показаний по протоколу «Меркурий». Один I/O-сервер представляет один счётчик. Для нескольких приборов создайте отдельные серверы с разными сетевыми адресами. Концентратор Меркурий 225 и протокол СПОДЭС не поддерживаются этим драйвером.

  1. Проверьте интерфейс конкретного исполнения счётчика. Используйте совместимый последовательный адаптер или прозрачный TCP-шлюз. Шлюз должен передавать байты без Modbus TCP-заголовков. У исполнений с интерфейсом CAN нужен совместимый преобразователь; обычный USB–RS-485 его не заменяет.
  2. Создайте I/O-сервер с протоколом Меркурий 200 / 230 / 234. Выберите модель и способ подключения. Для TCP укажите адрес и порт шлюза; для последовательного порта — COM-порт в Windows или путь, например /dev/ttyUSB0, в Linux, скорость, чётность и стоповые биты. Учётная запись службы должна иметь доступ к порту.
  3. Укажите сетевой адрес счётчика. У Меркурий 200 он занимает четыре байта и обычно соответствует заводскому номеру. У 230/234 задаётся адрес 1–239; используйте значение из конфигурации прибора.
  4. Для 230/234 выберите кодировку пароля первого уровня: отдельные цифровые байты, ASCII или HEX. Она зависит от исполнения, а не только от номера модели. Если пароль изменён, задайте его в окружении службы Runtime и впишите имя переменной окружения в Studio. Например, при password_env=MERCURY_READER_PASSWORD служба должна получить соответствующую переменную. Значение пароля в проект не записывается. Пустое имя использует заводской пароль первого уровня. В режиме HEX значение должно содержать ровно шесть байтов, например 01 01 01 01 01 01. Для исполнения с ASCII используйте ASCII-кодировку. Прибор должен отвечать в стандартном формате без повтора кода команды.
  5. Сохраните настройки. На вкладке Карта нажмите Автозаполнение либо добавьте нужные измерения вручную. Автозаполнение добавляет отсутствующие параметры, сохраняя существующие строки.
  6. Запустите локальную проверку и проверьте значение, качество и время получения. Привяжите тэги проекта к переменным карты и загрузите проект на Runtime. Для нестандартного пароля настройте переменную окружения также на целевом сервере.
Настройка счётчика Меркурий в Studio
Подключение счётчика, период опроса, число попыток и параметры доступа. Нажмите на изображение, чтобы открыть его в полном размере.
Карта измерений Меркурий
Карта счётчика: измерения, описание и диагностика качества. Нажмите на изображение, чтобы открыть его в полном размере.
МодельДоступные измерения
200Активная энергия по четырём тарифам, кВт·ч; текущая активная мощность, Вт. Команды 27h и 26h.
230 / 234Фазные напряжения и токи; активная, реактивная и полная мощность по фазам и сумме; коэффициент мощности; частота; активная и реактивная энергия обоих направлений по тарифам и сумме. Команды 08h/11h и 05h.

Доступность измерений определяется исполнением прибора. Неподдерживаемое измерение получает плохое качество и пояснение в карте. Показания передаются в единицах, указанных в списке измерений; коэффициенты трансформаторов дополнительно не умножаются. Сверьте масштаб с настройкой учёта конкретного счётчика. Все переменные карты доступны только для чтения. Архивы профиля нагрузки, журналы прибора, изменение тарифов и управление реле в этот набор не входят.

Период опроса по умолчанию составляет 5 секунд, таймаут одного ответа — 2 секунды. Таймаут ответа не является сроком устаревания показания. При сбое чтение повторяется, ошибка связи устанавливается после трёх неудачных попыток. Срок устаревания задаётся отдельно; значение 0 отключает этот контроль. При восстановлении обмена качество восстанавливается автоматически. Запросы к одному порту или TCP-шлюзу сериализуются между процессами одного хоста.

В режиме отладки журнал содержит отправленные запросы и ответы. Пароль открытия канала скрывается. При ошибке CRC проверьте параметры линии и помехи; при отсутствии ответа — интерфейс, адрес и доступность шлюза; при отказе доступа — пароль и его кодировку. Для Меркурий 234 с поддержкой СПОДЭС должен быть выбран именно протокол «Меркурий».

Форматы обмена: описание команд семейства 200 и описание команд 230/234.

Логика СПСеть: приборы СПТ и СПГ

Один I/O-сервер представляет один прибор СПСети. Драйвер читает текущие параметры и отдельные элементы индексных массивов, а также передаёт разрешённые команды записи. Номера каналов и параметров определяются руководством конкретного исполнения прибора.

  1. Проверьте, что прибор настроен на протокол СПСеть. Для прямого подключения используйте последовательный порт дополнительного интерфейса прибора либо одноведущую шину в восьмибитном режиме. При подключении к магистрали с передачей маркера используйте совместимый шлюз: самостоятельная передача маркера и девятибитный режим драйвером не выполняются.
  2. Создайте I/O-сервер и выберите Логика СПСеть. Для последовательного подключения укажите порт, скорость, чётность и стоповые биты, соответствующие прибору. В Linux предоставьте учётной записи службы доступ к порту. Для TCP укажите IP-адрес и порт шлюза.
  3. Выберите способ адресации из таблицы ниже. IP-адрес TCP-шлюза и его адрес в СПСети — разные настройки.
  4. Установите период опроса, таймаут ответа и число неудачных попыток. По умолчанию: 5 секунд, 2 секунды и 3 попытки. Таймаут ответа не ограничивает время между опросами. Срок устаревания задаётся отдельно; значение 0 отключает этот контроль.
  5. Сохраните настройки. На вкладке Карта добавьте переменные: имя, описание, адрес и тип значения. Для одиночного параметра используйте канал:параметр, для элемента массива — канал:массив:индекс. Индекс указывается в системе нумерации прибора, без автоматического сдвига.
  6. Запустите проверку и сопоставьте значения с показаниями прибора. Привяжите тэги проекта к переменным карты и загрузите проект на Runtime.
Настройки СПСети в Studio
Подключение, адресация и интервалы обмена СПСеть. Нажмите на изображение, чтобы открыть его в полном размере.
АдресацияНастройка
Прямая / прозрачный шлюзУкажите адрес прибора и свободный адрес клиента, оба 0–29 и разные. Прозрачный TCP-шлюз передаёт кадры СПСети без дополнительного заголовка.
Через адресуемый шлюз СПСетьУкажите адрес конечного прибора и сетевой адрес шлюза 0–29. В исходящий кадр записывается адрес источника «адрес шлюза + 128»: ответ возвращается через дополнительный интерфейс шлюза. Сам шлюз обслуживает магистраль.
Без адреса — локальный приборЗапрос не содержит адресов источника и назначения. Применяется только к локальному прибору на дополнительном интерфейсе, если такой обмен предусмотрен его руководством; маршрутизация не выполняется.
Карта параметров СПСети
Каждая строка задаёт канал, параметр или элемент массива и тип значения. Нажмите на изображение, чтобы открыть его в полном размере.

Индекс архивного параметра и расписание

Для параметров, например 210, 211 или 215, можно читать отдельный элемент массива. В карте задайте канал и номер параметра, заполните поле Индекс элемента (0, 1, 2…) и выберите Архивный — по расписанию. Адрес 1:210:0 означает только элемент с индексом 0 параметра 210 канала 1. Нумерация передаётся прибору без сдвига. Принадлежность параметра к архивным назначается явно, а не определяется его номером.

  1. В настройках сервера откройте блок Опрос архивных параметров.
  2. Выберите Каждые N минут, например 10, либо В заданную минуту часа, например 1 для запуска в HH:01. Используются местные часы машины Runtime.
  3. Задайте паузу повторных попыток в секундах. Число повторов не ограничено: цикл завершается после успешного чтения всех участвующих архивных строк.
  4. Сохраните настройки и обновите конфигурацию Runtime. При запуске службы первый архивный опрос ожидает ближайший срок: N минут от старта либо следующую указанную минуту часа.

Успешно прочитанные элементы исключаются из текущего цикла. Если следующий срок наступил до завершения повторов, параллельный цикл не создаётся; пропущенные сроки не накапливаются. После завершения используется следующий будущий срок. При перезапуске службы расписание начинается заново, журнал выполненных запросов на диск не записывается.

Текущие параметры опрашиваются отдельно и получают приоритет на общей линии. Архивный цикл освобождает линию после каждого запроса; отдельный запрос может занять время до сетевого таймаута. Неудача архивного параметра не ухудшает качество текущих параметров. Последнее хорошее архивное значение сохраняется при первых неудачных попытках; после заданного порога ошибок его качество становится плохим, чтение продолжает повторяться. Обычный срок устаревания текущих показаний к архивным строкам не применяется.

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

Типы карты: REAL — действительное число, INT — целое, BOOL — 0 или 1, STRING — текст. Десятичный разделитель в числовом ответе может быть точкой или запятой. Текстовые данные прибора декодируются в CP866. Ошибка отдельного параметра отображается в его качестве и диагностике; остальные параметры продолжают опрашиваться.

Для записи включите Разрешить запись в строке карты, отключите общий запрет записи сервера и настройте направление I/O-тэга. Команда передаётся при изменении значения. Подтверждение проверяется, но потерянная или отклонённая команда автоматически не повторяется. Отказ записи отображается у соответствующей переменной.

При потере связи чтение повторяется; авария связи устанавливается после заданного числа неудачных попыток. Последний успешный снимок сохраняется до достижения этого порога. Опрос работает независимо от цикла Runtime, а обращения к одному порту или шлюзу между worker-процессами одного Runtime выполняются последовательно. Одну физическую линию назначайте одному Runtime-узлу.

В журнале выберите источник соответствующего I/O-сервера. В режиме debug записываются кадры запросов и ответов. При ошибке CRC проверьте режим линии и помехи; при отсутствии ответа — адреса, параметры интерфейса и обратную маршрутизацию; при диагностике параметра — его номер, канал, тип и доступность в данном исполнении прибора.

Драйвер предназначен для СПСети, а не для протокола М4. Автоматическое чтение словаря параметров, выгрузка архивов по времени и журналов прибора в этот набор не входят. Формат обмена описан в спецификации производителя РАЖГ.00276-33.

SNMP: чтение и запись по OID

I/O-сервер SNMP связывает тэги проекта с параметрами сетевого оборудования. Чтение и запись выполняются службой Runtime независимо от Studio. Community и ключи аутентификации и шифрования задаются переменными окружения на машине службы Runtime, а для локальной проверки — на машине Studio. В проекте сохраняются только имена этих переменных.

  1. Включите SNMP-агент на устройстве и предоставьте серверу Runtime доступ к его UDP-порту, обычно 161.
  2. Создайте I/O-сервер SNMP. Укажите адрес устройства, порт и версию: 1, 2c или 3.
  3. Для v1/v2c укажите переменную окружения Community. Пустое поле означает public. Для v3 укажите пользователя, алгоритм аутентификации и переменную окружения ключа. Поддерживаются MD5, SHA-1 и SHA-256. При необходимости включите AES128 и задайте переменную окружения ключа шифрования. Поле контекста обычно оставляют пустым.
  4. Установите период опроса, таймаут и число неудачных попыток до ошибки связи. По умолчанию период — 5 секунд, таймаут — 2 секунды, попыток — 3. Срок устаревания задаётся отдельно; 0 отключает его проверку.
  5. В карте добавьте переменную и числовой OID с индексом экземпляра: например, 1.3.6.1.2.1.1.3.0 для sysUpTime. Тип должен соответствовать определению OID в документации устройства.
  6. Запустите проверку, проверьте значение и качество, затем привяжите тэг проекта к переменной карты и загрузите проект на Runtime.
Настройка SNMPv3 в Studio
Версия SNMP, параметры доступа, аутентификация и шифрование. Нажмите на изображение, чтобы открыть его в полном размере.
Карта OID SNMP
Числовой OID, тип значения и диагностика параметра. Нажмите на изображение, чтобы открыть его в полном размере.

INTEGER — знаковое 32-битное значение; UNSIGNED и COUNTER32 — беззнаковые 32-битные; COUNTER64 — 64-битный счётчик; TIMETICKS — сотые доли секунды, без автоматического перевода в секунды. STRING декодируется как UTF-8, OID и IPADDRESS передаются строкой, BOOL — как 0/1. REAL предназначен для устройств, передающих число строкой OctetString. Счётчики доступны только для чтения.

Для SET включите разрешение записи в строке карты и настройте права на стороне агента. Общий запрет записи I/O-сервера имеет приоритет. Команда передаётся при изменении значения и не повторяется автоматически при потере ответа. Неизвестный OID и отказ доступа отображаются у переменной; отсутствие ответа вызывает повтор чтения и затем ошибку связи. Приём Trap/Inform, загрузка MIB и автоматический обход WALK в эту реализацию не входят.

MQTT: подписки и публикация

I/O-сервер MQTT связывает тэги проекта с сообщениями брокера. Runtime получает значения по подписке и публикует разрешённые команды независимо от Studio. Пароль подключения и пароль ключа клиентского сертификата задаются переменными окружения на машине службы Runtime, а для локальной проверки — на машине Studio. В проекте сохраняются только имена этих переменных.

  1. Создайте I/O-сервер MQTT. Укажите адрес брокера и порт: обычно 1883 без TLS или 8883 с TLS. Выберите MQTT 3.1.1 либо MQTT 5.
  2. При необходимости укажите пользователя и переменную окружения пароля. Включите TLS для защищённого соединения. Пустое поле CA использует доверенные сертификаты операционной системы; для собственного центра сертификации укажите файл CA. Клиентский сертификат и ключ задаются парой. Проверка сертификата и имени сервера выполняется всегда. Файлы сертификатов и ключей должны находиться на машине службы Runtime, а для локальной проверки — на машине Studio.
  3. Настройте Keep Alive, таймаут ответа и переподключение. Срок устаревания относится к времени получения конкретного значения, а не к состоянию TCP-соединения. Для редких сообщений оставьте 0 либо задайте срок, превышающий ожидаемый интервал публикаций.
  4. В карте укажите точный топик подписки, например plant/boiler1/temperature, и тип REAL, INT, BOOL или STRING. Шаблоны + и # не используются: одна строка карты должна однозначно определять значение.
  5. Для простого сообщения выберите Текст. Для JSON выберите JSON и, при необходимости, JSON Pointer: например /sensor/temperature извлекает температуру из вложенного объекта. В пути ~1 означает косую черту, ~0 — тильду. Можно указывать индексы массивов.
  6. Выберите QoS 0, 1 или 2. Для управления разрешите запись и укажите отдельный топик публикации, например plant/boiler1/setpoint. Пустой топик публикации означает использование топика подписки. Retain по умолчанию отключён.
  7. Сохраните карту, запустите проверку и отправьте сообщение с устройства. После получения значения проверьте качество и привяжите тэг проекта.
Настройка MQTT и TLS
Соединение с брокером, TLS и параметры повторного подключения. Нажмите на изображение, чтобы открыть его в полном размере.
Карта топиков MQTT
Переменные, получаемые через MQTT. Нажмите на изображение, чтобы открыть его в полном размере.

Публикация передаёт одно значение: текст либо JSON-скаляр. JSON Pointer применяется только при чтении и не создаёт вложенную структуру команды. QoS 0 подтверждает отправку в соединение, QoS 1/2 — соответствующий обмен с брокером; это не подтверждение исполнения команды оборудованием. При разрыве создаётся новая чистая сессия с уникальным Client ID и заново оформляются подписки. Неподтверждённые команды не сохраняются для повторной отправки после переподключения.

До первого сообщения переменная имеет плохое качество. Сохранённое брокером retained-сообщение принимается как обычное значение; срок устаревания отсчитывается от его получения. Для нескольких строк одного топика можно задать разные JSON Pointer. Допускаются UTF-8 сообщения до 1 МиБ. Ошибка JSON или типа влияет на соответствующую строку карты. В журнале видны ошибки подключения, отказ подписки, публикации и восстановление связи; пароли и ключи не выводятся.

Симулятор: проверка проекта без оборудования

Симулятор формирует значения внутри службы I/O. Его переменные связываются с тэгами тем же способом, что и сигналы реального оборудования. Это позволяет проверить графику, скрипты, аварии и запись истории до подключения контроллера.

  1. Создайте I/O-сервер типа «Симулятор», задайте имя и период опроса.
  2. На вкладке «Карта» добавьте переменную. Укажите уникальный ключ сигнала, тип данных и генератор.
  3. Для числового сигнала задайте минимум, максимум и период. Для постоянного значения укажите число, true/false или строку в кавычках.
  4. Сохраните настройки и нажмите «Старт». В карте появятся значения. Назначьте соответствующие I/O-ссылки тэгам проекта.
ГенераторПоведение
Постоянное значениеСохраняет заданное значение. При разрешённой записи принимает команды Runtime и оператора.
СинусоидаПлавно изменяет числовое значение между минимумом и максимумом.
ПилаЛинейно увеличивает значение и возвращается к минимуму в начале следующего периода.
Случайное значениеФормирует число в заданных пределах. Начальное число генератора позволяет повторять последовательность при новом запуске.
Переключение BOOLВ первую половину периода возвращает FALSE, во вторую — TRUE.

В настройке «Имитация неисправности» можно включить плохое качество или потерю связи. Задайте период и длительность неисправности. Период 0 означает постоянную неисправность. При потере связи действует установленное число неудачных попыток до ошибки связи. После перезапуска службы исходные постоянные значения восстанавливаются из конфигурации.

Настройки симулятора: период опроса и имитация неисправности
Настройки генерации и проверки аварий по качеству.
Карта переменных симулятора
Карта сигналов симулятора.

BACnet/IP: объекты и приоритетная запись

Клиент BACnet/IP читает свойства объектов устройства по UDP. Поддерживается адресный опрос; для поиска объектов используется список object-list выбранного устройства. Изменение значений выполняется подтверждаемой командой WriteProperty без автоматического повторения.

  1. На устройстве разрешите BACnet/IP и проверьте его IP-адрес и UDP-порт. Обычно используется порт 47808.
  2. Создайте сервер «BACnet/IP». Укажите адрес устройства и локальный адрес клиента. Значение 0.0.0.0:0 позволяет системе выбрать интерфейс и свободный порт; при ограничениях сети укажите конкретный локальный IPv4 и порт.
  3. Задайте уникальный Device Instance клиента. Не используйте одинаковый Device Instance для одновременно работающих клиентов одной BACnet-сети.
  4. Сохраните настройки. Откройте карту и нажмите «Считать карту». Будут добавлены аналоговые, дискретные и многостатусные объекты.
  5. Для ручного добавления задайте адрес, например analog-input:1/present-value. У массивного свойства укажите индекс; −1 означает свойство целиком.

Проверка status-flags переводит переменную в плохое качество, если устройство сообщает fault или out-of-service. Отсутствующее свойство или ошибка доступа отображаются у конкретной переменной. Потеря ответа обрабатывается как ошибка связи.

Для управления разрешите запись у переменной и выберите приоритет от 1 до 16. Режим «Освободить значение выбранного приоритета» отправляет NULL: дальнейшее значение определяет приоритетная логика устройства. Свойство должно поддерживать такую команду. Подписки COV, маршрутизация MS/TP и регистрация Foreign Device через BBMD в этой версии не настраиваются.

Параметры BACnet/IP в Studio
Адрес устройства, локальный порт и Device Instance клиента.
Карта объектов BACnet/IP
Чтение карты и свойства объектов.

M-Bus: приборы учёта

Драйвер читает переменные записи проводного M-Bus. Для подключения к последовательному порту требуется M-Bus-мастер с соответствующим электрическим интерфейсом. Обычный преобразователь RS-485 его не заменяет. TCP-вариант предназначен для шлюза, который прозрачно передаёт телеграммы M-Bus.

  1. Создайте сервер «M-Bus». Один сервер представляет один прибор с заданным первичным адресом.
  2. Выберите последовательный порт либо прозрачный TCP-шлюз. Для прямого подключения укажите порт и скорость; обмен выполняется в формате 8E1. Для шлюза задайте IP-адрес и TCP-порт.
  3. Укажите первичный адрес прибора от 0 до 250. Устройства на одной линии должны иметь различные адреса.
  4. Сохраните конфигурацию и нажмите «Считать карту». Studio прочитает телеграммы и создаст переменные для доступных записей.
  5. Проверьте описания и типы значений, затем привяжите нужные переменные к тэгам проекта.

Адрес переменной — индекс записи, начиная с 0. При чтении карты сохраняется сигнатура DIF/VIF. Если прибор впоследствии изменит структуру ответа, несовпадение сигнатуры будет показано как ошибка качества вместо выдачи значения другого параметра. После изменения конфигурации прибора считайте карту повторно.

Один опрос получает весь набор записей; запрос для каждого тэга отдельно не отправляется. Многочастный ответ ограничен параметром «Максимум телеграмм в ответе». Проверяются длина, адрес и контрольная сумма. Карта доступна только для чтения. Вторичная адресация, поиск приборов по вторичным адресам и Wireless M-Bus в этой версии не поддерживаются.

Настройки M-Bus через TCP-шлюз
Подключение и первичный адрес прибора.
Карта записей M-Bus
Записи телеграммы M-Bus в карте Studio.

HTTP/JSON: обмен с HTTP API

Сервер HTTP/JSON периодически получает один JSON-документ и распределяет его поля по переменным карты. Можно использовать HTTP или HTTPS, а также авторизацию Basic и Bearer. Пароль и токен задаются переменными окружения службы; в проекте сохраняются только имена этих переменных.

  1. Создайте сервер «HTTP/JSON» и укажите полный URL чтения, например https://device.example/api/status.
  2. Выберите способ авторизации. Для Basic задайте имя пользователя и переменную окружения с паролем; для Bearer — переменную с токеном.
  3. Для HTTPS оставьте проверку сертификата включённой. При использовании внутреннего центра сертификации укажите файл доверенных CA.
  4. Настройте период, таймаут и максимальный размер ответа. Сохраните конфигурацию и нажмите «Считать карту» либо добавьте переменные вручную.
  5. Задайте адрес поля в формате JSON Pointer. Например, для {"sensor":{"temperature":22.5}} используйте /sensor/temperature. Элемент массива задаётся числом: /devices/0/value. Знак $ означает корневое значение.

Символы ~ и / внутри имени поля кодируются как ~0 и ~1. Отсутствующее поле или неподходящий тип дают ошибку качества только соответствующей переменной. Ошибка HTTP, неполный ответ и превышение времени запроса учитываются как неудачный опрос.

Для записи разрешите её у переменной, задайте путь на том же сервере, метод PUT, POST или PATCH и поле JSON команды. Например, путь /api/setpoint и поле /value отправят {"value":25}. Пустое поле команды передаёт отдельное значение. Перенаправления на другие URL и автоматический повтор команды не выполняются. После записи очередной опрос читает фактическое состояние.

URL, авторизация и настройки HTTP/JSON
Подключение HTTP API и проверка HTTPS.
Карта JSON Pointer
Переменные, извлекаемые из одного JSON-документа.

DLMS/COSEM: адреса OBIS и профили

Драйвер использует Logical Name referencing: объект определяется кодом OBIS, классом COSEM и номером атрибута. Доступны TCP Wrapper и последовательный HDLC, без аутентификации или с паролем LLS. HLS, шифрование сообщений, Short Name referencing и начальное согласование IEC 62056-21 Mode E в этой версии не поддерживаются. Прибор должен разрешать выбранный способ доступа.

  1. Уточните у изготовителя счётчика адрес клиента, логический адрес сервера, режим доступа и таблицу OBIS.
  2. Создайте сервер «DLMS/COSEM». Для TCP Wrapper укажите IP-адрес и порт, обычно 4059. Для HDLC задайте последовательный порт, скорость и физический адрес. Прозрачная передача HDLC через TCP не является TCP Wrapper.
  3. Установите адрес клиента и логический адрес сервера. При LLS укажите переменную окружения с паролем. Она должна быть доступна той службе, которая выполняет опрос.
  4. Сохраните настройки и нажмите «Считать карту». Studio запросит список объектов Association LN и добавит объекты Data, Register, Extended Register, Demand Register, Profile Generic и Clock, если они присутствуют.
  5. Проверьте типы переменных по документации счётчика. Для регистра укажите, например, OBIS 1.0.1.8.0.255, класс 3 и атрибут 2.

Настройка «Применять scaler_unit регистра» учитывает десятичный множитель, заданный счётчиком. При отключении возвращается исходное числовое значение. При записи числового регистра выполняется обратное преобразование; непредставимое для выбранного типа значение отклоняется. Единицы измерения и описание тэга задаются в проекте.

Для буфера Profile Generic используйте класс 7, атрибут 2 и тип STRING: набор записей возвращается в формате JSON. Поля «Первая запись профиля» и «Последняя запись профиля» ограничивают диапазон по индексам, начиная с 1. Нулевая первая запись отключает выбор диапазона; нулевая последняя означает чтение до конца. Размер ответа и число блоков ограничиваются настройками сервера.

При разрешении записи необходимо явно выбрать тип COSEM. Счётчик также должен разрешать запись данного атрибута для используемой ассоциации. Команда SET выполняется один раз; при потере ответа автоматического повторения нет.

Настройки адресации и аутентификации DLMS/COSEM
Подключение счётчика по TCP Wrapper.
Карта объектов DLMS/COSEM
Объекты счётчика и их коды OBIS.

Чтение и перенос карт I/O-серверов

Кнопка «Считать карту» запускает фоновое чтение и показывает его состояние в окне. При ошибке существующая карта остаётся без изменений. Переключатель «Обновить существующие переменные» разрешает замену настроек совпадающих имён; без него такие имена пропускаются.

«Экспорт JSON» сохраняет имена, описания, адреса, типы и параметры переменных. «Импорт JSON» переносит их в сервер того же протокола. Настройки подключения и секреты в файл карты не входят. Проверка выполняется для всей карты до применения изменений.

Для чтения карты устройство должно быть доступно компьютеру Studio. После загрузки проекта на Runtime обмен выполняется с компьютера Runtime. Изменённая карта вступает в действие в рабочем Runtime после следующей загрузки проекта.

Руководство SCADA системы SAMUTAG. © Самунов А.С. (2026)