Modbus-устройства

Материал из TekonWiki
Перейти к: навигация, поиск


Введение

Modbus - это коммуникационный протокол широко применяемый в промышленности. Он определяет правила пересылки данных при взаимодействии устройств.

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

Есть несколько модификаций данного протокола:

  • Modbus RTU
  • Modbus TCP
  • Modbus ASCII (в настоящее время не поддерживается в АСУД-248)

Само слово "Modbus" - ничего не говорит об интерфейсе между устройствами.

Протокол Modbus может работать поверх интерфейсов RS-485/RS-232, компьютерной сети и других.

Следовательно, если известно, что устройство поддерживает протокол Modbus следует уточнить, какие физические интерфейсы есть у устройства и поддерживаются ли они в АСУД-248.

С точки зрения доступа к данным устройство Modbus представляет собой таблицу, примерно следующего вида

Адрес регистра Атрибуты Параметр Значение
1 R/W, Целое число Уставка температуры 15
2 R, Целое число * 10 Температура наружного воздуха -156
301 R, Дробное число Частота сети 49,8

где,

  • Адрес регистра - уникальный идентификатор параметра, по которому осуществляется запрос значения параметра
  • Атрибуты - атрибуты параметра
    • R - параметр можно читать
    • W - параметр можно записывать
    • Целое число - параметр представляет собой целое число
    • Целое число * 10 - параметр следует разделить на 10 перед отображением в SCADA
    • Дробное число - параметр представляет собой дробное число
  • Параметр - описание параметра
  • Значение - текущее значение параметра
Внимание!
Таблица должна быть отражена в технического документации конкретного устройства. 
Таблица не универсальна для разного типа Modbus-устройств.
Без наличия таблицы настроить устройство не получится.

Для некоторых типов Modbus-устройств, например: свободно программируемых контроллеров, таблица может зависеть от проекта, зашитого в контроллер. Т.е. может быть сформирована в штатном ПО только после создания проекта (см. например PIXEL).

Modbus и АСУД-248

АСУД-248 позволяет реализовать взаимодействие с устройствами по протоколу Modbus.

Modbus-устройства могут быть подключены к концентраторам:

  • КЦС-IPM / КУН-IPM
  • КЦС-М (есть ограничения в типе поддерживаемых устройств, подробнее см. далее)
  • напрямую по компьютерной сети.

КЦС-IPM / КУН-IP

Тракт передачи данных:

Устройство Modbus -- RS-232/485 --  КЦС-IPM / КУН-IP -- Компьютерная сеть -- АРМ-диспетчера
Поддерживаются спецификации Modbus-RTU, Modbus TCP
Чтение данных одиночное, групповое
Запись данных одиночная
Число подключаемых устройств до 255* на каждом интерфейсе

* - подробнее см. спецификацию подключаемого устройства и интерфейса подключения.

Внимание:

  • Требуется наличие USB-ключа защиты АСУД.SCADA. Опрос Modbus-устройств осуществляется программой KCSLogger. В ключе защиты ПО АСУД.SCADA должно быть прописано число драйверов EXT-модуля, соответствующее общему числу подключаемых приборов.
  • Следует придерживаться следующего правила при адресации Modbus-устройств: устройства, подключаемые к одному IP-концентратору должны иметь уникальные адреса (RS-идентификаторы).
  • С помощью утилиты KCS_DEMO.EXE существует возможность в тестовом режиме проверить связь с Modbus-устройством (наличие USB-ключа при этом не требуется). При первом подключении устройства к АСУД-248 настоятельно рекомендуется воспользоваться данной утилитой.
  • Начиная с версии 1.5-61 в программу ASUDBase также встроена функция тестового опроса Modbus-устройства (подробнее см. далее).

Прямое подключение по компьютерной сети

Тракт передачи данных:

Устройство Modbus с Ethernet -- Компьютерная сеть -- АРМ-диспетчера

Остальное аналогично случая подключения к КЦС-IPM / КУН-IP

КЦС-М

Наличие  драйверов EXT-модуля при подключении Modbus-устройства через КЦС-М - не требуется.

Тракт передачи данных:

Устройство Modbus -- RS-485 --  КЦС-М -- TL-линия -- Пульт-ПК или КИО
Поддерживаются спецификации Modbus-RTU
Чтение данных одиночное, групповое
Запись данных не поддерживается
Интерфейс подключения только RS-485
Режим работы интерфейса только 8-N-1
Скорость интерфейса 9600, 19200 или 38400
Число подключаемых устройств 1

В случае если параметры интерфейса подключаемого устройства отличаются от указанных следует перенастроить устройство.

Внимание! Важно!
Конфигурация Modbus-устройства должна быть прошита непосредственно на КЦС-М

В связи с необходимостью прошивки КЦС-М крайне рекомендуется предварительно выполнить тестовое чтение данных Modbus-устройства подключившись в нему напрямую через преобразователь RS-485/RS-232 (USB). Это значительно облегчит вам последующую настройку, а в случае проблем - понять причину неисправности.

Тестовое чтение вы можете выполнить:

  • Непосредственно в программе ASUDBase в процессе настройки регистров Modbus-устройства (подробнее см. далее)
  • С помощью программы KCS DEMO.EXE.

Вам следует:

  • проверить правильность чтения Адресов всех регистров
  • проверить корректное отображение значений полученных с устройства
    • корректность параметра настройки Modbus - Тип данных
    • корректность параметра настройки Modbus - Формат
Исправление неточностей настройки после прошивки КЦС-М будет крайне затруднительно!!!
Любые Адресов и Типа регистров в ASUDBase приведут к необходимости перепрошивки КЦС-М.

Программное обеспечение используемое при подключении Modbus-устройств в КЦС-М:

  • АСУД.SCADA версии 2.3.9 и выше
  • или ASUDBase версии 1.5-71, утилита OPC Server\tools-server\kcsmprog.exe версии 1.2

Последовательность настройки Modbus-устройства при подключении к КЦС-М

  • Выполнить тестовое чтение данных с помощью программы ASUDBase или KCS DEMO.EXE
  • Выполнить регистрацию КЦС-М и Modbus-устройства в программе ASUDBase, как описано в статье ниже
    • Учесть, что Номер концентратора КЦС-М может быть трехзначный (102, 215 и т.п. при подключении к Пульту) или пятизначный (ID_KIO * 10000 + Номер, при подключении КЦС-М к КИО)
    • При регистрации концентратора КЦС-М НЕ ставьте галочку IP-соединение
    • Тип Modbus-устройства - Modbus RTU
    • В адресном пространстве Modbus использовать только числовые типы данных (нельзя использовать побитовую разбивку, т.е. применять настройку Блок/Бит)
  • Сохранить файл конфигурации, нажав на кнопку КЦС-М в окне настройки Modbus
    • В папке OPC Server \ Settings появится файл Номер_КЦС-М.mbs (например: 803.mbs, 10315.mbs и т.п.)
    • Свой файл конфигурации должен быть создан для каждого КЦС-М
  • Выполнить прошивку КЦС-М c помощью программы KCSMPROG.EXE
  • Подключить КЦС-М к устройству
  • Настроить КЦС-М в ОPC-сервере, выбрав в качестве подключенного устройства MODBUS RTU.
Kcsm modbus.JPG

Пример MBS-файла конфигурации

1 012C 1 8 # BIT 1 1 500
2 0258 1 8 # BIT 1 1 501
3 000A 1 16 # WORD 1 1 501
3 0018 1 16 # SHORT 2 1 502
3 0030 2 16 # FLOAT 1 1 503
3 0032 2 16 # FLOAT 4 1 503
4 00C8 1 16 # WORD 1 1 504

При внесении изменений в окне настройки адресного пространства Modbus-устройства и создания нового файла, КЦС-М подлежит перепрошивке только при изменении любых данных в строке до символа #.

Замечание 
Драйвер КЦС-М читает данные типа Float, Integer 2-мя запросами по 1 регистру

Концентратор КЦС-М в процессе своей работы постоянно опрашивает Modbus-устройство и передают полученные данные в TL-линию связи. Период обновления данных при чтении 7 регистров с устройства - примерно 60 секунд.

Настройка ПО АСУД.SCADA

Настройка программного обеспечения АСУД.SCADA заключается в:

  • регистрации Modbus-устройства в программе ASUDBase;
  • настройке OPC-сервера: устройство Контейнер оборудования + Прибор учета;
  • настройка карты АСУД.SCADA - примитивы
    • дискретный датчик - сигналы аварии (неисправностей);
    • цифровой индикатор - данные температуры, давления;
    • текстовое поле - информация о режимах работы оборудования, возможность записи значений в Modbus устройство.

Регистрация Modbus-устройств в программе ASUDBase

Настройка регистров Modbus-устройства осуществляется с помощью программы ASUDBase (версии 1.5-14 и выше).

Откройте окно Настройка\Регистрация и введите данные подключения Modbus-устройства

Регистрация устройства Modbus

Рисунок - Регистрация устройства Modbus

  • Номер концентратора указать 901...999, 1901...1999, 2901...2999, ...

Или номер будет проставлен автоматически после установки флажка "IP-соединение". Номер должен быть уникальным для каждого добавляемого устройства (фактически этот номер используется лишь для идентификации Modbus-устройства в базе данных).

  • Прибор - выбрать тип устройства: Modbus RTU или Modbus TCP, в зависимости от протокола реализуемого устройством.
  • Modbus из выпадающего списка выбрать тип подключаемого устройства (если устройство еще не было добавлено - оставить поле пустым).

Также следует указать

  • Мастер устройство (КЦС-IPm, КУН-IPm, прямое IP),
  • IP-адреса
  • Порт
    • 5000 - если устройство подключается через КЦС-IPm, КУН-IPm.
    • 502 (как правило) - если устройство подключается напрямую по IP-сети.
  • Параметры RS-интерфейса, к которому подключено устройство (тип, номер, скорость, четность и т.п.). Для устройств, подключаемых напрямую по IP-сети оставить без изменений.
  • RS-идентификатор - номер (идентификатор) устройства в RS-сети, указанный в настройках устройства.
  • Интервал опроса - период опроса устройства в минутах (0 - опрашивать максимально быстро).
  • Читать архив - установить все флажки - резервный параметр, в настоящее время не используется.

Нажать кнопку "Добавить". Слева появится запись о регистрации устройства.

Устройство добавляется с одной системой "Отопление" (по умолчанию) - это (наименование) не имеет существенного значение.

Далее следует по необходимости добавить новый тип Modbus устройства.

Регистрация нового типа Modbus-устройства

Нажать на кнопку "+" справа от поля Modbus. В открывшемся окне следует указать в левом нижнем углу общие параметры устройства.

Общие настройки устройства Modbus

Настройки устройства - следует указать, исходя из описания в документации на устройство

  • Название прибора - название устройства (любое название)
  • Базовый регистр - как правило = 0 (реже 1)
  • Читать группу элементов - можно ли читать более 1 регистра за один запрос (0 - можно читать сколько угодно, >0 - максимальное число регистров на чтение в одном запросе)
  • Разрешить при чтении пропуски в группе - можно ли читать несколько регистров за один запрос, если они расположены не подряд.

Если вы затрудняетесь с определением данных параметров, укажите:

  • Базовый регистр = 0
  • Читать группу = 1
  • Пропуски = запрещены.

Вы можете поэкспериментировать с данными настройками с помощью утилиты kcs_demo

Если у вас есть *.mbs файлы импорта настроек Modbus-устройства, загруженные с сайта www.tekon.ru вы можете добавить их с помощью кнопки "Импорт".

Далее следует закрыть окно. При этом происходит создание (инициализация) устройства в БД.

Выбрать название вновь созданного устройства в выпадающем списке поля Modbus и нажать кнопку Изменить.

Привязка устройства Modbus к концентратору

После этого следует нажать кнопку "..." справа от поля Modbus и повторно перейти к настройке Modbus-устройства.

Настройка  устройства Modbus

Серым подсвечены колонки относящиеся к настройкам Modbus-протокола, остальные колонки относятся к настройкам АСУД.

Автозаполнение (новой строки таблицы) - при установке флага некоторые поля при добавлении новой записи заполняются на основе предыдущих введенных значений.

Экспорт - экспортировать данные настройки в файл для последующего использования на другом объекте.

Импорт - импортировать данные настройки из файла. Кнопка активна только при добавлении нового Modbus-устройства (была нажата кнопка "+").


Карта Modbus-регистров. Настройки протокола

Основные настройки

Modbus-настройки (см. описание на подключаемое Modbus-устройство).

Все значение устройства доступные на чтение / запись хранятся в 4-х таблицах:

Таблица Функция чтения
Регистры флагов (Coils) 0х1
Дискретные входы (Discrete Inputs) 0х2
Регистры хранения (Holding Registers) 0х3
Регистры ввода (Input Registers) 0х4

Каждый регистр - это ячейка размером в 2-байта. Каждый регистр - имеет уникальный адрес.

В зависимости от типа Modbus-устройва адресное пространство таблиц может быть объединено, т.е. адресом 0 в таблице HoldReg, аналогичен (полностью соответствует) адресу 0 в таблице InpReg.

Если вы затрудняетесь с тем, какой тип регистра указывать - используйте HoldReg.

Регистр - тип регистра, выпадающее меню

 - Coils   — однобитовый тип, доступен на чтение и запись (R/W).
 - DiscInp — однобитовый тип, доступен только на чтение (R).
 - HoldReg — 16-битовый тип, доступен на чтение и запись (R/W).
 - InpReg  — 16-битовый тип, доступен только на чтение (R).
Внимание! 
Если вы планируете выполнять запись значения в регистр на устройстве, 
вы должны выставить значение поля AW в 1 (подробнее далее).

Адрес - адрес регистра (в десятичной системе счисления)

Тип данных - тип данных хранящихся в регистре (и их размер), исходя из документации, выпадающее меню

  - BIT     (1 регистр)   значения: 0 или 1
  - WORD    (1 регистр)   значения: 0 ... 65535
  - FLOAT   (2 регистра)  значения: 1.5 x 10^-45 .. 3.4 x 10^38
  - DWORD   (2 регистра)  значения: 0..4294967295	
  - INTEGER (2 регистра)  значения: -2147483648..2147483647	
  - CHAR    (1 регистр)   значения: -128..127
  - SHORT   (1 регистр)   значения: -32 768 ... 32 767
  - DOUBLE  (4 регистра)  значения: 5.0 x 10^-324 .. 1.7 x 10^308
  - BIT4    (2 регистра)  значения: 0 или 1
  - STRING  (указывается) значения: строка данных 
  - INT64   (4 регистра)  значения: -2^63 ... 2^63-1	

Блок/Бит

  • для типа данных BIT указывается анализируемый бит (от 1 до 16) в слове. Бит 1 - младший, 16 - старший.
  • для типа STRING - размер блока данных в байтах (обычно размер строки в документации на устройство указывается кратным двум байтам).
  • для других типов - не используется.

Формат - формат представления числа в регистре. Определяет порядок перестановки полу-байт в регистрах.

Обычное значение поля Формат:

  • Для типов данных в 1 регистр - 1
  • Для типов данных в 2 (4) регистра - 4.
  • Для типов в 4 регистра существуют дополнительные значения формата с 10 до 14, которые соответствуют значениям формата от 1 до 4, но дополнительно меняют местами левые-правые 2-регистра.

Некоторые устройства могут использовать другие форматы. Если при чтение регистра, вы получаете ошибочные значения, попробуйте поменять Формат.

Рассмотрим пример влияния значения поля Формат на вычисленный результат (см. программу KCS DEMO).

Предположим мы считываем целочисленное значение типа INTEGER, которое хранится в 2-х регистрах по начальному адресу, например: 2054. Пусть нам известно, что значение = 0х12345678 (значение в 16-ричной кодировке).

Запрос данных (в шестнадцатиричной  кодировке): 
>> 01 03 08 06 00 02 26 6A 

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

Ответ устройства 
            3б 2б 1б 0б      
<< 01 03 04 12 34 56 78 81 07 

где:

  • 0х12 0х34 - первый регистр ( адрес 2054); байты 3, 2
  • 0х56 0х76 - второй регистр ( адрес 2055); байты 1, 0


Полученные данные
последовательность байт
Формат Правило перестановки Результат
12 34 56 78 1 1_0_3_2 0x56781234
12 34 56 78 2 0_1_2_3 0x78563412
12 34 56 78 3 2_3_0_1 0x34127856
12 34 56 78 4 3_2_1_0 0x12345678

Т.е. для регистров устройства данного типа корректное значение формата - 4.

Предположим мы считываем целочисленное типа WORD, которое хранится в 1-м регистре по адресу, например: 2. Пусть мы значение что значение - 0х08.

Запрос данных (в шестнадцатиричной  кодировке): 
>> 01 03 00 02 00 01 25 CA 

Ответ устройства
            1б 0б 
<< 01 03 02 00 08 B9 82
Полученные данные
последовательность байт
Формат Правило перестановки Результат
00 08 1 1_0 0x0008
00 08 2 0_1 0x0800

Т.е. для регистров устройства данного типа корректное значение формата - 1.

Дополнительные настройки

Modbus-настройки дополнительные (в большинстве случаев можно оставить значение по умолчанию) - отображаются при снятом флажке "Скрыть дополнительные поля"

Множитель - множитель значения считанного из регистра.

Учитывается для всех типов кроме BIT, BIT4, STRING

После чтения регистра:  
   Значение в SCADA   = значение регистра * множитель 
Перед записью регистра: 
   Значение регистра  = Значение SCADA / множитель

Минимальное значение Множителя 0,0001.

Внимание! При указании в качестве Множителя значений 2, 3, 4, 5, 6, 7, 8, 9 - реальное значение множителя определяется по формуле

Множитель = 1 / (2 ^ Указанный_множитель)

Адрес W - адрес записи. Следует указать, если запись необходимо произвести в регистр по адресу отличному от адреса чтения.

Параметры ** - набор параметров, указываемых в случае, если перед записью регистра, следует выполнить запись значения в другой или в этот же регистр. Множитель при этом не используется. После записи первого значения выполняется пауза в 1000 мс. перед записью основного значения.

  • **Адрес - адрес регистра.
  • ** Тип данных - тип данных регистра.
  • **Формат - формат представления числа в регистре.
  • ** Значение - значение для записи.
 Это может быть полезно, если, например: перед изменением параметра следует указать, пароль (как в контроллерах ОВЕН ТРМ-133М при изменении текущего состояния). Или если, например: необходимо выполнить запись фронтом, т.е. перед записью 1 следует записать 0, после этого записать 1.

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

AW - разрешена ли запись регистра (1 -да, 0 - нет). Актуально только для регистров типа Coils / HoldReg.

MinWV, MaxWV - интервал допустимых значений для записи (если MinWV=MaxWV=0 - проверка значений не выполняется).

Карта Modbus-регистров. Настройки Scada

Scada-настройки (для отображения в АСУД.SCADA)

  • Вирт.КДД-RS - выполнить ли трансляцию данных прочитанного регистра устройства в дискретный сигнал OPC-сервера Текоn, путем привязки к каналу концентратора Виртуальный КДД-RS. Что позволит впоследствии в АСУД.SCADA использовать примитивы типа "Дискретный датчик" с данным сигналом. При этом предполагается что значение регистра может быть только 0 или 1.
 Значение 0 - не транслировать данные в виртуальный  КДД-RS.
 Значение 1 - транслировать данные в виртуальный КДД-RS.

Номер виртуального КДД-RS и номер канала концентратора при этом указываются ниже (под таблицей).

Внимание! Начиная с версии SCADA 2.3.1 update 3 функционал виртуального КДД-RS может быть реализован с помощью Переменных. При настройке следует всегда указывать Значение 0. 
  • Параметр - данное поле заполняется автоматически сквозной нумерацией > 500. Изменять данное значение самостоятельно не следует.
  • Сокращение - сокращенное название параметра (до 10 символов) - отображается в окне Шаг 2 программы ASUDBase при просмотре полученных значений.
  • Название - полное название параметра (до 40 символов)
Внимание! 
Номер параметра в каждой строке (каждом регистре) должен быть >500 и уникальным. 
Проследите за этим фактом. 

Регистрация устройства Modbus

Рисунок - Пример настроенной карты Modbus

Внимание! Замечание относительно сохранения посуточного архива устройства
В редких случаях может подключаться учетное Modbus-устройство, например: электросчетчик 
При этом можно реализовать аккумулирование первого прочитанного значения в сутках для 
параметров передаваемых НИ (нарастающим итогом), например: показаний расхода электроэнергии. 
При этом номера параметров следует указывать не просто > 500, а с учетом кодов параметров
в БД original.gdb (см. программу ASUDBase меню Настройка / Коды параметров)
Например, следует указывать код 1071 для параметра A+ (кВт*ч) - Активная прямая 
Также в программе KCSLogger следует установить флажок "Записывать первые мгновенные ..."
в окне Настройки.

Тестовый опрос Modbus-устройства

В программе ASUDBase, начиная с версии 1.5-61, можно выполнить тестовый опрос Modbus-устройства. Это значительно ускоряет процесс добавления в конфигурацию новых типов устройств.

Фактически данный функционал повторяет то, что ранее можно было сделать в утилите KCS DEMO.EXE.

Внимание! Программа ASUDBase должна запускаться из папки ..\OPC Server

В окне настройки Modbus-устройства следует нажать кнопку

  • Прочитать один - для чтения выбранного регистра (предварительно следует выполнить клик на ячейке Адреса регистра)
  • Прочитать все - для обновления значений всех регистров
Modbus test read.JPG

Если установить флажок Показать лог, то после опроса устройства откроется окно протокола обмена данными с устройством. Лог также отобразится в случае неудачного обмена.

Вы можете менять значения конфигурации устройства (Базовый регистр, чтение группы и т.п.), параметры выбранного регистра, добавлять новые регистры и проверять корректность обмена данными с устройством.

Настройка ОРС-сервера

Перед отображением данных в SCADA следует выполнить настройку OPC-сервера Tekon.

Быстрая настройка

Может быть применена, только если в конфигурации ОРС-сервера ранее не использовался Контейнер оборудования.

После настройки всех Modbus-устройств следует сформировать конфигурационный файл OPC-сервера. Для этого в ASUDBase следует выбрать меню Настройка \ SCADA \ Конфигурация Modbus.

Созданный файл DBase \ wac.conf следует скопировать в папку Tekon \ OPC Server \ settings. Затем запустить конфигуратор OPC-сервера и проверить добавление устройств.

Обычная настройка

Внимание!
Для возможности настройки устройств в ОРС-сервере, следует:
* либо В ASUDBase выбрать меню Настройка \ SCADA \ Обновить параметры Modbus-устройств. 
* либо выполнить один опрос Modbus-устройств программой KCSLogger. 

Для отображения данных регистров со значением поля [Вирт.КДД-RS] = 0 и со значением параметра >= 500 следует добавить устройство DA Tekon \ Контейнер оборудование \ Прибор учета

Далее выполнить двойной клик на приборе учета, в открывшемся окне слева выбрать требуемое устройство для отображения данных, а справа установить флажки у параметров, которые необходимо в дальнейшем отображать в АСУД.SCADA (обычно все параметры)

Настройка отображения данных устройства Modbus

Рисунок - Настройка отображения данных устройства Modbus

Запись вида ModbusRTU (Отопление 0:192.168.1.100:4) имеет следующий смысл

  • ModbusRTU - тип устройства
  • Отопление - тип системы устройства
  • 0 - идентификатор системы устройства
  • 192.168.1.100 - IP-адрес устройства
  • 4 - RS-идентификатор устройства.
Внимание! 
В связи с чем следует иметь ввиду, что если в базе данных на одном КЦС-IPM 
зарегистрированы два однотипных устройства с одинаковыми RS-идентификаторами 
хоть и физически подключенные на разные интерфейсы, они могут быть ошибочно 
отображены  в окне представленном выше одной записью. 

Для каждого Modbus-устройства следует добавить свой DA Tekon \ Контейнер оборудования \ Прибор учета.

Устаревшее описание. В настоящее время использовать не следует 
Для привязки дискретных сигналов (регистры со значением поля [Вирт.КДД-RS] = 1) 
следует добавить устройство DA Tekon \ Контейнер оборудование \ КДД-RS (Виртуальный КДД-RS)
Далее настроить обычным образов соответствующие дискретные входы КДД-RS с указанием 
названия сигнала, задержки, инверсии и т.п.

Далее закрыть конфигуратор OPC-сервера.

Запустить опрос Modbus-устройств (программу KCSLogger)

Объединение устройств в группы

Дополнительно в случае необходимости одновременной записи однотипных значений регистров в несколько устройств, существует возможность объединить Modbus-устройства в группы.

Для определения групп следует отредактировать файл Tekon \ ASUD Scada \ OPC Server \ settings \ modbusgrp.ini

В данном примере ';' - является комментарием

;[1] название группы (уникальное)
;Params=88 99 112  - номера параметров через пробел или пусто если для всех параметров
;Conc= 901 902 903 - номера концентраторов через пробел

Создана группа 1, для концентраторов 901-903. В случае записи, например, значения в регистр 99 концентратора 902, это же значение будет записано в регистры 99 концентраторов 901 и 903.

Настройка визуализации данных в АСУД.SCADA

В АСУД.SCADA для визуализации данных Modbus-устройств можно использовать следующие примитивы:

  • Дискретные датчики - для привязки к тегам Виртуальных КДД-RS
  • Цифровой индикатор - для отображения любых цифровых значений (с возможностью указания граничных значений)
  • Текстовое поле - для отображения любых цифровых значений, а также преобразования цифрового значения в текстовое по заданному правилу с помощью скрипта (см. пример номер 2). Кроме того с помощью данного примитива и скрипта можно выполнить запись значения в регистр Modbus-устройства.

Значение может быть записано в регистр Modbus если:

  • Регистр относится к типу HoldReg или Coils
  • Значение поля AW (Allow Write) = 1
  • Записываемое значение попадает в указанный диапазон значений

Изменение настроек Modbus-устройства

Закрыть программу KCSLogger

Изменение читаемых регистров

В случае необходимости добавить новые регистры, читаемые устройством, следует открыть программу ASUDBase, меню Настройка \ Регистрация.

Выбрать любой концентратор с устройством требуемого типа.

Нажать кнопку "..." и в окне настройки регистров (см. выше) добавить данные регистров.

Внесенные изменения будут применены для всех концентраторов устройств данного типа. Далее следует выполнить опрос устройств программой KCSLogger (если программа была запущена, ее необходимо перезапустить).

После опроса, открыть конфигуратор ОРС-сервера, выбрать устройство в Контейнере оборудования и установить флажки у добавленных параметров. Закрыть конфигуратор.

Открыть АСУД.SCADA и добавить необходимые примитивы на карту.

Изменение настроек подключения

В случае необходимости изменить RS-идентификатор Modbus-устройства (или IP-адрес Мастер-устройства) , следует открыть программу ASUDBase, меню Настройка \ Регистрация.

Выбрать требуемое устройство, ввести новый RS-идентификатор, нажать "Изменить".

Запустить KCSLogger и убедиться, что с устройством проходит обмен данными.

Далее возможны два варианта поведения:

Не вносить изменения в ОРС-сервер и АСУД.SCADA

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

Т.е., например, тэг до изменения был вида ModbusRTU (Отопление 0:192.168.1.100:4), что говорило о том, что RS-идентификатор устройства = 4. Далее мы внесли изменения в ASUDBase, указав RS-идентификатор 41. Провели опрос устройство, видим корректные данные в АСУД.SCADA, но тэг при этом остался таким же ModbusRTU (Отопление 0:192.168.1.100:4) - как будто идентификатор изменен не был.

Т.е. в случае внесения изменений в настройки системы следует всегда помнить, что самая корректная информация о настройке содержится в программе ASUDBase.

Внести изменения в ОРС-сервер и АСУД.SCADA

Запустить конфигуратор ОРС-сервера и выбрать в адресном пространстве требуемый прибор. В окне настроек следует выбрать (слева) любое другое устройство, затем опять то которое было изначально, вновь проставить галочки у параметров, которые следует транслировать в АСУД.SCADA.

В программе АСУД.SCADA перепривязать тэги всех примитивов связанных с устройством. При этом поле тэг изменится на ModbusRTU (Отопление 0:192.168.1.100:41) (см. пример ранее).

Демонстрационный пример

В качестве примера предлагается полностью настроенная рабочая конфигурация АСУД.SCADA с одним Modbus-устройства.

Что входит в демонстрацию:

  • Эмулятор ModbusTCP устройства
  • Настроенная программа ASUDBase с одним Modbus-устройством
  • Настроенный ОРС-сервер с одним Modbus-устройством
  • Настроенная SCADA
    • С отображением текущих значений параметров
    • С возможностью записи новых значений уставок на устройство
    • С отображением режима работы устройства в текстовом виде

Показано решение практически полного перечня типовых задач, решаемых при подключении Modbus-устройств к АСУД-248.

Что необходимо:

Поскольку при установке архива будут обновлены конфигурационные файлы, то не следует запускать демонстрацию на рабочей диспетчерской!

Для запуска демонстрации ключ защиты и драйверы EXT - не нужны.

Последовательность действий для запуска демонстрации:

  1. Установить АСУД.SCADA 2.3.6 в папку C:\1Tekon
  2. Закрыть (если запущены) SCADA, ASUDBase, KCSLogger
  3. Запустить конфигуратор ОРС-сервера
  4. Разархивировать архив в папку C:\1Tekon, подтвердив изменение существующих файлов.
  5. Закрыть конфигуратор ОРС-сервера
  6. Открыть конфигуратор ОРС-сервера, должно быть зарегистрировано устройство Контейнер оборудования \ Прибор учета
  7. Снова закрыть конфигуртора ОРС-сервера

Запустить эмулятор Modbus-устройства ...\OPC Server\modbus_demo\mtcpServerEmulator.exe

Выбрать меню Файл\Открыть конфигурацию, указать TestDevice.xml, нажать кнопку Старт, подтвердить "Да".

Modbus demo1.JPG

Демонстрационное устройство - некая установка, которая подключается напрямую к компьютерной сети и по протоколу Modbus TCP, может передавать значения измеряемых параметров и уставок.

Уставка - это параметр, влияющий на логику работы самого устройства.

Смысл параметров устройства:

  • Regim - состояние устройства (только чтение)
    • 0 - "Выключена",
    • 1 - "Включена",
    • 2 - "Режим 2",
    • 3 - "Режим 3"
  • TStart - уставка температуры запуска установки (можно читать и записывать)
  • TStop - уставка температуры остановки установки (можно читать и записывать)
  • Tokr - температура окружающей среды (только чтение), значение параметра хранится умноженным на 10
  • BitStatus - битовая маска ошибок
    • 0 - нет ошибки
    • 1 - ошибка 1
    • 2 - ошибка 2
    • 4 - ошибка 3

Для изменения значения параметра в эмуляторе, следует выбрать строку, выполнить двойной клик и ввести новое значение параметра.

Запустить программу KCSLogger для запуска опроса устройства.

Нажать Статистика, проверить, что тестовое устройство опрашивается корректно

Modbus demo2.JPG

Запустить программу SCADA.

Modbus demo3.JPG

Параметры уставки Т1 и Т2 - могут быть записаны из SCADA на устройство. Остальные параметры только читаются из устройства.

Для записи на устройство выполните в рабочем режиме двойной клик и введите новое значение, пронаблюдайте изменение значение в эмуляторе устройства.

В данном примере используются LUA-cкрипты, файлы:

  • Scada\scripts\custom\etnry.lua
dofile2 ("..\\built-in\\prim_basic.lua")
dofile2 ("modbus.lua")

function main_custom()

end

  • Scada\scripts\custom\modbus.lua
topc_Temp = topc_string_min_max ("Уставка температуры",0,100)

topc_minmax1 = topc_minmaxavg ("1",1,0,1)

function Regim (val,qual)
 local RToStr = 
 { 
 [0] = "Выключено", 
 [1] = "Включено",
 [2] = "Режим 2",
 [3] = "Режим 3" 
 }
 if qual ~= opc.da.tekon.ItemData.QUALITY_GOOD then
		return "---"
 end
 local s = RToStr [val.Integer]
 if s == nil
  then return "Неизвестно: "..val.Integer
  else return s
 end 
end

Объект topc_Temp используется для записи значений уставок на сервер, см. настройки текстовых полей Т1 и Т2.

Объект topc_minmax1 используется для отображения значений Min, Max температуры окружающей среды.

Функция Regim - для отображения состояния установки в текстовом виде.

Для выделения ошибок из битовой маски BitStatus объявлены три Переменные (меню Дополнительно \ Переменные).

Пример работы с эмулятором https://youtu.be/vnbTF4fSsMA