Modbus-устройства: различия между версиями
Alex (обсуждение | вклад) Нет описания правки |
Alex (обсуждение | вклад) Нет описания правки |
||
| Строка 426: | Строка 426: | ||
Т.е. для регистров устройства данного типа корректное значение формата - 1. | Т.е. для регистров устройства данного типа корректное значение формата - 1. | ||
| Строка 504: | Строка 505: | ||
Для сохранения изменений, нажать кнопку Сохранить. | Для сохранения изменений, нажать кнопку Сохранить. | ||
Начиная с версии 2.7.14 добавлена поддержка выражений для постобработки считанного из регистра значения, аналогично, как это сделано в [[Text-функция|Тext-функции]] | Начиная с версии 2.7.14 добавлена поддержка выражений для постобработки считанного из регистра значения, аналогично, как это сделано в функционале [[Переменные|Переменных]] или [[Text-функция|Тext-функции]] | ||
Выражение добавляется в конце поля Название после символа #, например: | Выражение добавляется в конце поля Название после символа #, например: | ||
| Строка 518: | Строка 519: | ||
*BITS(X:1:4) = BITS(8:1:4) = 4 | *BITS(X:1:4) = BITS(8:1:4) = 4 | ||
Постобработка разрешена для числовых регистров с AW = 0. | Постобработка '''разрешена '''только для числовых регистров с AW = 0. | ||
Следует отметить, что: | |||
*BITS допускает только полную запись (с указанием Х), | *BITS допускает только полную запись (с указанием Х): BITS(X:1:4), а не BITS(1:4); | ||
*символом разделителем является двоеточие (:), а не точка с запятой (;) | *символом разделителем является двоеточие (:), а не точка с запятой (;); | ||
*при анализе выражения учитывается номер стартового бита в байте (0 или 1), указанный в настройках Modbus-устройства. | *при анализе выражения учитывается номер стартового бита в байте (0 или 1), указанный в настройках Modbus-устройства. | ||
Версия от 07:58, 22 мая 2023
Введение
Настройка Modbus в АСУД.SCADA может быть выполнена двумя способами:
- регистрация устройства непосредственно в Tekon OPC-сервер
- это новый способ доступный с версии АСУД.SCADA 2.6.3
- целесообразно использовать на всех новых объектах где добавляются Modbus-устройства
- при этом варианте не используется БД original.gdb все настройки выполняются непосредственно в ОРС-сервере
- поддерживается практически полный фунционал настройки, аналогичный ASUDBase
- исключение - возможность выполнить запись в регистр по другому адресу (отличному от адреса чтения) доступна пока только при регистрации в ASUDBase
- опрос осуществляется непосредственно OPC-сервером, программа KCSLogger не нужна
- регистрация устройства в программе ASUDBase
- целесообразно использовать, если у вас уже есть Modbus-устройства, зарегистрированные в программе ASUDBase
- опрос осуществляется программой KCSLogger
Данная статья ориентируется на настройку Modbus-устройств непосредственно в OPC-сервере версии 2.7.2 (и выше) и не расматривает возможность настройки устройств в программе ASUDBase
Если, по каким-то причинам вы планируете выполнять настройку устройств в программе ASUDBase, либо в АСУД.SCADA 2.5.х и ранее , а также настройку Modbus c конценратором КЦС-М смотри предыдщую редакцию статьи.
АСУД-248 позволяет реализовать взаимодействие с ЛЮБЫМИ устройствами, поддерживающимипротокол Modbus.
Modbus-устройства могут быть подключены к концентраторам:
- КЦС-IPM / КУН-IPM
- КЦС-М (есть ограничения в типе поддерживаемых устройств, подробнее см. тут)
- напрямую по компьютерной сети.
Тракт передачи данных:
Устройство Modbus -- RS-232/485 -- КЦС-IPM / КУН-IP -- Компьютерная сеть -- АРМ-диспетчера
| Поддерживаются спецификации | Modbus-RTU, Modbus TCP |
| Чтение данных | одиночное, групповое |
| Запись данных | одиночная |
| Число подключаемых устройств | до 255* на каждом интерфейсе |
* - подробнее см. спецификацию подключаемого устройства и интерфейса подключения.
Внимание:
- Требуется наличие USB-ключа защиты АСУД.SCADA.
В ключе защиты ПО АСУД.SCADA должно быть прописано число драйверов EXT-модуля, соответствующее общему числу подключаемых приборов.
Для тестового опроса устройства в конфигураторе ОРС-сервера драйвер не требуется. - Следует придерживаться следующего правила при адресации Modbus-устройств: устройства, подключаемые к одному IP-концентратору должны иметь уникальные адреса (RS-идентификаторы).
Прямое подключение по компьютерной сети
Тракт передачи данных:
Устройство Modbus с Ethernet -- Компьютерная сеть -- АРМ-диспетчера
Остальное аналогично случая подключения к КЦС-IPM / КУН-IP, рассматриваемому далее
Modbus-протокол. Общая информация
Modbus - это коммуникационный протокол широко применяемый в промышленности. Он определяет правила пересылки данных при взаимодействии устройств.
Мы можем реализовать диспетчеризацию и управления практически любого устройства, если оно поддерживает данный протокол.
Есть несколько модификаций данного протокола:
- Modbus RTU
- Modbus TCP
- Modbus ASCII (в настоящее время не поддерживается в АСУД-248)
Само слово "Modbus" - ничего не говорит об интерфейсе между устройствами.
Протокол Modbus может работать поверх интерфейсов RS-485/RS-232, компьютерной сети и других.
С точки зрения доступа к данным устройство Modbus представляет собой таблицу, примерно следующего вида
| Адрес регистра | Атрибуты | Параметр | Значение |
|---|---|---|---|
| 1 | R/W, Целое число | Уставка температуры | 15 |
| 2 | R, Целое число * 10 | Температура наружного воздуха | -156 |
| 301 | R, Дробное число | Частота сети | 49,8 |
где,
- Адрес регистра - уникальный идентификатор параметра, по которому осуществляется запрос значения параметра
Идентификатор находится в диапазоне 0 .. 65536. - Атрибуты - атрибуты параметра
- R - параметр можно читать
- W - параметр можно записывать
- Целое число - параметр представляет собой целое число
- Целое число * 10 - параметр следует разделить на 10 для получения реального значения
- Дробное число - параметр представляет собой дробное число
- Параметр - описание параметра
- Значение - текущее значение параметра
Внимание! Таблица должна быть отражена в технического документации конкретного устройства. Таблица не универсальна для разного типа Modbus-устройств. Без наличия таблицы настроить устройство не получится.
Для некоторых типов Modbus-устройств, например: свободно программируемых контроллеров, таблица может зависеть от проекта, зашитого в контроллер.
Т.е. может быть сформирована в штатном ПО контроллера только после создания файла-проекта (см. например PIXEL).
Все регистры Modbus-устройства доступные на чтение / запись условно хранятся в 4-х таблицах:
| Таблица | Функция чтения | Тип данных | Разрешены Чтение (R) / Запись (W) | Функция записи |
|---|---|---|---|---|
| Регистры флагов (Coils) | 0х1 | 0 или 1 | R / W | 0x5 |
| Дискретные входы (Discrete Inputs) | 0х2 | 0 или 1 | R | - |
| Регистры хранения (Holding Registers) | 0х3 | числовой/строковый | R / W |
0x10 или 0х6 (см. параметр AW далее) |
| Регистры ввода (Input Registers) | 0х4 | числовой/строковый | R | - |
Каждый регистр:
- это ячейка размером в 2-байта.
- имеет уникальный адрес.
В зависимости от типа Modbus-устройва адресное пространство таблиц может быть объединено, т.е. регистр с адресом 0 в таблице HoldReg, аналогичен (полностью соответствует) адресу 0 в таблице InpReg (это можно понять либо из документации, либо при тестовом опросе устройства).
Если вы затрудняетесь с тем, какой тип регистра указывать - используйте HoldReg.
Иногда в документации на устройство можно увидеть, что адреса регистров обозначаются 6-ти значными числами: логическими адресами.
Старшая цифра логического адреса при этом обозначает тип регистра, а остальные цифры - физический адрес регистра.
| Старшая цифра логического адреса | Начальный логический адрес | Тип данных |
|---|---|---|
| 0 | 000001 | Coil |
| 1 | 100001 | DiscInp |
| 3 | 300001 | InpReg |
| 4 | 400001 | HoldReg |
Как правило, при таком указании логических адресов считается что базовый регистр устройства = 1 (т.е. из адреса еще нужно будет вычесть единицу)
Например: логический адрес = 40568
- Тип регистра 4 = HoldReg
- Физический адрес регистра = 568 - 1 = 567
Замечание!
При регистрации устройства единицу все время вычитать не нужно, вы просто указываете в настройках устройства значение базового регистра = 1.
Для определения значения, хранящегося в регистре, необходимо, исходя из документации, корректно указать тип данных.
Поддерживаются следующие типы данных:
| Название | Альтернативное название | Число регистров | Диапазон значений | Комментарий |
|---|---|---|---|---|
| BIT | 1 | 0 или 1 |
Может быть использован для выделения сигнала из битовой маски, которая записана в регистре. | |
| BITInv | 1 | 0 или 1 | Аналогично BIT, но считаное из регистра значение будет проинвертировано | |
| BOOL | Boolean | 1 | 0 или 1 | По-сути, это тип BIT c дополнительной настройкой Блок / Бит = 1 (независимо от настройки пользователя). В отличии от типа BIT предполагает, что в регистре реально возможны только два значения: 0 или 1. |
| BOOLInv | Boolean | 1 | 0 или 1 | Аналогично BOOL, но считанное из регистра значение будет проинвертировано |
| WORD | Unsigned word | 1 | Целые числа 0 .. 65535 |
|
| CHAR |
Signed byte, |
1 | Целые числа -128..127 |
|
| SHORT | Signed word, Small Integer |
1 | Целые числа -32 768 ... 32 767 |
|
| FLOAT | 2 | 1.5x10^-45 ...3.4x10^38 | ||
| DWORD | Unsigned long | 2 |
Целые числа 0..4294967295 |
|
| INTEGER | Signed long | 2 |
Целые числа -2147483648..2147483647 |
|
| BIT4 | 2 | 0 или 1 | ||
| DOUBLE | 4 | 5.0 x 10^-324 .. 1.7 x 10^308 | ||
| STRING |
указывается (запрашиваемое число регистров будет равно половине указанному) |
строка данных | Поддержка в SCADA 2.7.13 и выше | |
| INT64 | Big Integer |
Целые числа -2^63 ... 2^63-1 |
1 регистр = 16 бит 2 регистра = 32 бита 4 регистра = 64 бита
Также важен формат представления числа в регистре. Он определяет порядок перестановки полу-байт в регистрах.
Обычное значение поля Формат:
- Для типов данных в 1 регистр - 1
- Для типов данных в 2 регистра - 4 (или значение 2)
- Для типов в 4 регистра - 14 (или значение 12)
Для данного типа существуют дополнительные значения формата с 11 до 14:- формат с 1 до 4 - дополнительно меняют местами левые-правые 2-регистра
- формат с 11 до 14 - аналог 1 - 4, но не выполняется перестановка.
Если при успешном опросе устройства, вы получаете в регистрах непонятные значения, попробуйте поменять Формат.
Комментарий по полю Формат (при первом чтении данный раздел можно пропустить).
Рассмотрим пример влияния значения поля Формат на вычисленный результат (см. программу KCS DEMO).
Предположим мы считываем целочисленное значение типа INTEGER (целое число, занимающее 2 регистра = 4 байта данных), по начальному адресу, например: 2054 (0x0806). Пусть нам известно, что в этом регистре должно хранится значение = 0х12345678 (значение в 16-ричной кодировке или 305419896 в привычной нам 10-ричной кодировке, преобразование вы можете выполнить в калькуляторе Windows).
Запрос данных (в шестнадцатиричной кодировке): >> 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 байта данных) по адресу, например: 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-устройств в Tekon OPC-сервер
Добавьте Modbus-устройство в конфигурациюOPC-сервера.
Если Modbus-устройство было зарегистрировано в программе ASUDBase, вы можете создать конфигурационный файл сервера, нажав в окне настройки Modbus-устройства в ASUDBase кнопку Экспорт.
Если устройство подключено
- напрямую по компьютерной сети
- Добавьте DA \ Компьютерная сеть \ Modbus TCP
- через КЦС-IPM \ КУН-IPM
- Добавьте DA \ Концентратор КЦС-IPM или КУН-IPM \ Modbus RTU
- через сторонний конвертер интерфейса
- Добавьте DA \ IP-RS преобразователь \ Modbus RTU
Выполните двойной клик на созданном устройстве.
Нажмите Да, если вы создаете новое устройство с новым описанием регистров. Нажмите Нет - если вы создаете устройство, для которого ранее уже создавали таблицу регистров.
Если вы выбрали Да - следует указать в латинице имя устройства, например: pixel
Далее выберите в свойствах созданный ранее конфигурационный файл устройства и нажмите два раза на само устройство, для того, чтобы открыть окно настройки.
На рисунке отображен пример окна настройки устройства, подключенного к концентратору КЦС-IPM, КУН-IPM.
Для каждой ячейки доступна информационная подсказка (хинт).
Строки имеют следующий смысл:
- название столбцов таблицы
- тип протокола устройства [RTU, TCP]
Если вы подлючаете устройство по RS-485, то почти всегда это RTU-протокол. Если по компьютерной сети - TCP. - поля конфигурации устройства
- 0 - базовый регистр, указывает сдвиг регистров при запросе (обычно 0 или 1)
- 1 - количество регистров читаемых в одном запросе, по умолчанию 1.
Большее значение параметра увеличивает скорость опроса устройства.
Но имеет смысл, если запрашиваемые регистры идут подряд.
Если в документации не указано сколько можно читать - попробуйте указать 10 и провести тестовой опрос устройства.
Если ошибок нет - оставляйте указанное значени. Иначе верните значение 1. - 0 - не разрешать пропуски при чтении. Допустимые значения [0,1]
Некоторые устройства позволяют опрашивать несколько регистров, если они расположены неподряд.
Это также увеличивает скорость опроса устройства. - [0, 1] - стартовый бит в байте, по-умолчанию 1.
- следующие строки - это собственно таблица адресов Modbus-регистров из документации на устройство
Для редактирования таблицы следует нажать Редактировать.
При этом по правому клику мышки, доступно меню добавления новых строк.
Описание столбцов настройки:
- Регистр - тип регистра из выпадающего меню
- Адрес - адрес регистра (в десятичной системе счисления)
Вы можете указывать адрес в 16-ричной кодировке, для этого добавьте в начале знак $. Например: $10, $FA и т.п. - Тип данных - тип указанный в документации на устройство
- Блок/Бит
- для типа данных BIT, BITInv указывается анализируемый бит (от 1 до 16) в слове. Бит 1 - младший, 16 - старший.
- для типа данных BIТ4 указывается анализируемый бит (от 1 до 32) в слове. Бит 1 - младший, 32 - старший.
- для типа STRING - размер блока данных в байтах (обычно размер строки в документации на устройство указывается кратным двум байтам).
- для других типов данных - не используется.
- Формат - формат данных (подробнее см. ранее)
- Множитель - множитель данных, по умолчанию 1.
Множитель учитывается для всех типов кроме BIT, BITInv, BOOL, BOOLInv, BIT4, STRING
После чтения регистра: Значение SCADA = значение регистра * множитель
Перед записью регистра: Значение регистра = Значение SCADA / множитель
Минимальное значение Множителя 0,0001.
Внимание!
При указании в качестве Множителя значений 2, 3, 4, 5, 6, 7, 8, 9 - реальное значение множителя определяется по формуле
Множитель = 1 / (2 ^ Указанный_множитель)
- AW - данный параметр разрешает запись значений в регистр, например для изменения уставок устройства или управления устройством из SCADA.
Актуально только для регистров типа Coils / HoldReg.
Возможные значения:
0 - запись в регистр запрещена
1 - запись в регистр разрешена. Для регистров HoldReg будет использоваться функция $10 для записи
6 - для регистров HoldReg будет использоваться функция $06 для записи (для исп. данного значения требуется доп. обновление для версии 2.7.5)
10 - аналог значения 1. Для регистров HoldReg будет использоваться функция $10 для записи (для исп. данного значения требуется доп. обновление для версии 2.7.5) - Тег - имя тега, которое будет отображено в SCADA.
Имя тега должно быть уникально в рамках устройства.
В имени Тега не следует использовать символ точка. - Название - наименование сигнала (неисправности), которое будет отображаться в журнале событий в программе SCADA.
Для сохранения изменений, нажать кнопку Сохранить.
Начиная с версии 2.7.14 добавлена поддержка выражений для постобработки считанного из регистра значения, аналогично, как это сделано в функционале Переменных или Тext-функции
Выражение добавляется в конце поля Название после символа #, например:
При этом программа понимает, что
- Регистр65 - это название, которое будет проброшено в SCADA
- X*10 - это выражение постобработки
В примере выше, реальное значение регистра равно 8, при этом после постобработки получаем:
- X * 10 = 8 * 10 = 80
- BITS(X:1:4) = BITS(8:1:4) = 4
Постобработка разрешена только для числовых регистров с AW = 0.
Следует отметить, что:
- BITS допускает только полную запись (с указанием Х): BITS(X:1:4), а не BITS(1:4);
- символом разделителем является двоеточие (:), а не точка с запятой (;);
- при анализе выражения учитывается номер стартового бита в байте (0 или 1), указанный в настройках Modbus-устройства.
Замечание!
Начиная с версии 2.7.5 в свойствах Modbus-устройства появилась настройка Дополнительный сдвиг адреса - это настройка может быть применена, например: при регистрации контроллеров сплит-систем, когда адреса регистров внутренних блоков системы кондиционирования сдвинуты относительно общей карты на число, соответствующее номеру внутреннего блока.
Т.е. вы регистрируете и настраиваете Modbus-устройство с адресами первого блока. Затем добавляете второе Modbus-устройство, указываете файл настроек первого, но дополнительно указываете настройку сдвиг адресов.
Замечание!
Поле Версия устройства - не используется (всегда отображает ---)
Тестовый опрос устройства
Для выполнения тестового опроса устройства, сохраните настройки и нажмите кнопку Опросить. Будет выполнен опрос устройства с отображением полученных данных в столбце Значение
Кнопка Лог - отобразит лог последнего обмена данными с устройством. Расшировку кодов возможных ошибок см. в описании программы KCS DEMO.EXE
Вы также можете выполнить тестовый опрос одного регистра, нажав правой кнопкой мыши и выбрав меню Опросить.
Тестовая запись значения регистра
Если вы указали для регистра значение AW > 0, вы можете выполнить тествую запись непосредственно в окне настройки.
Для этого в рабочем режиме выберите строку и нажмите правой кнопкой мыши, выбрав меню Записать значение.
Нельзя выполнять запись значений для регистров типа: [mbString, mbDouble, mbINT64, mbBit4]
Особенности представления значений Modbus-регистров
Для настроенных Modbus-регистров ОРС-сервер создает следующие типы сигналов, которые будут доступны в SCADA:
- Дискретный сигнал - если регистр имеет тип BIT (BITInv, BOOL, BOOLInv, BIT4) и AW = 0
- в SCADA вы сможете использовать стандартные примитивы типа Дискретный сигнал или LED, Изображение
- Вы можете использовать инвертирование дискретного сигнала, если в конце названия Тега допишите _INV, например: "А1_INV"
Начиная с версии 2.7.5 вместо _INV - вы можете использовать типы BITInv, BOOLInv.
- Канал управления - если для регистра установлен параметр AW = 1, и название Тега окончивается на _CTRL, например "Svet_CTRL"
- в SCADA вы сможете использовать стандартные примитивы типа Канал управления или Изображение
- при этом подразумевается, что значение регистра может быть только 0 или 1. В противном случае не следует использовать данный тип сигнала
- Числовое значение - для всех остальных случаев
Если регистр имеет тип BIT (BITInv, BOOL, BOOLInv, BIT4), но вы не хотите, чтобы сигнал был представлен в SCADA, как дискретный датчик, вам следует:
- изменить тип с BIT (BITInv, BOOL, BOOLInv) на Word - если регистр может иметь только значения 0,1 (и не представляет собой битовую маску)
- изменить тип с BIT4 на DWord - если регистр может иметь только значения 0,1 (и не представляет собой битовую маску)
- или добавить к имени тега "_$", т.е. например: вместо "Tag1" указать "Tag1_$"
Как регистрировать битовую маску ошибок
Если, исходя из описания устройства, регистр представляет собой битовую маску ошибок, как его регистрировать?
Например:
- 520.01 - авария насоса
- 520.02 - неиспраность датчика температуры
- 520.03 - перепад давления
Запись типа 520.01 - означает, что для получения сигнала "Авария насоса" следует прочитать регистр 520 и проверить факт установки в значении регистра 1-го (младшего бита).
Т.е в значении регистра 520 хранится несколько сигнальных (аварийных) событий. Допустим вы читаете регистр и получаете значение = 5.
Переводим это значение в двоичный код (например, с помощью Калькулятора Windows) и получаем значение 5 (DEC) = 101 (BIN), т.е. в регистре 520 установлены 1 и 3 биты, есть авария насоса и перепад давления.
Исходя из этого, следует определить, нужны ли в SCADA все ошибки по отдельности (отдельными примитивами типа Дискретный датчик) или только сигнал обощенной ошибки с текстовым описанием активных ошибок?
Если все по отдельности - то для каждой ошибки делаете отдельную запись в таблице регистров:
- Адрес - одинаков
- Тип - BIT, если битовая маска лежит в одном Modbus-регистре или BIT4 - если в нескольких
- Блок/Бит - 1, 2, 3, и т.д - тот бит, который отвечает за конкретную ошибку
- Название - Название ошибки
- В SCADA на каждую ошибку будет отображен свой Дискретный примитив
Если достаточно только обобщенной ошибка (т.е. факта того, что есть какая-то ошибка), то региструете только одну запись:
- Адрес - адрес битовой маски
- Тип - WORD или DWORD
- В SCADA используйте (подробнее см. ниже)
- Переменную для отображения Аварийного сигнала обощенной аварии или примитив LED-индикатор
- Текстовое поле + Text-функцию для отображения описания активных ошибок
Настройка SCADA
В АСУД.SCADA для визуализации данных Modbus-устройств можно использовать следующие примитивы:
- Таблица Тегов - быстрая визуализация в табличном виде в одном месте ситуационного плана без визуально-звуковой индикации:
- числовых данных
- состояний работы устройства (преобразование числа в надпись с помощью Text-функций)
- расшифровка кодов ошибок (преобразование числа в надпись с помощью Text-функций)
- Цифровой индикатор, стрелочный индикатор - для отображения любых числовых значений (с возможностью указания граничных значений и визуально-звуковой индикакаций выхода за границы)
- Текстовое поле - для отображения любых числовых значений, а также преобразования числового значения в текстовое по заданному правилу с помощью скрипта или Text-функции. Кроме того с помощью данного примитива и скрипта можно выполнить запись значения в регистр Modbus-устройства.
- Кнопка - для записи значения в регистр.
- Дискретный датчик - визуализация аварийных событий.
- Led-индикатор - для отображения дискретных значений, в том числе выделение бита из маски.
- Прибор учета - если устройство было зарегистрировано в ASUDBase и вам нужна простая визуализация в табличной форме
- Изображение - визуализация аварийный событий
- Набор изображений - визуализация состояния устройства или запись значения в регистр Modbus-устройства.
Замечание! Для того чтобы реализовать возможность записи введенного пользователем значения в Modbus-устройство, необходимо чтобы:
- Регистр относится к типу HoldReg или Coils
- Значение поля AW (Allow Write) было > 0
Рассмотрим пример визуализации значения регистра, представляющего собой битовую маску ошибок, если этот регистр был настроен в ОРС-сервере, как числовое значение (а не набор типов BIT).
Пример 1.
Необходимо визуализировать с помощью Дискретных примитивов состояние регистра "Авария", где значение регистра представляет собой битовую маску кодов аварий
Например, биты:
- 1 - авария насоса
- 2 - неиспраность датчика температуры
- 3 - перепад давления
Создаем несколько переменных (по числу аварийный событий), например:
Var.1:
- Имя - 1
- Журнал событие - Авария насоса
- Журнал адрес - Котельная
- Задержка (с.) - 0
- Тип - ВЫРАЖЕНИЕ
- Выражение - BIT (X;1)
- Добавлям Тег регистра "Авария"
Var.2:
- Имя - 2
- Журнал событие - Неиспраность ДТ
- Журнал адрес - Котельная
- Задержка (с.) - 0
- Тип - ВЫРАЖЕНИЕ
- Выражение - BIT (X;2)
- Добавлям Тег регистра "Авария"
Var.3:
- Имя - 3
- Журнал событие - Перепад давления
- Журнал адрес - Котельная
- Задержка (с.) - 0
- Тип - ВЫРАЖЕНИЕ
- Выражение - BIT (X;3)
- Добавлям Тег регистра "Авария"
Размещаем на ситуационном плане примтивы типа Дискретный датчик, в настройке Тег вручную указываем имена переменных VAR.1, VAR.2, VAR.3.
Пример 2. Необходимо визуализировать с помощью Дискретного датчика обобщенную аварию регистра "Авария" из предыдущего примера.
Иногда нет необходимости выделять каждую Аварию отдельным примитивом Дискретный датчиком, а например достаточно просто показать сигнал Обощенной авариии. В этом случае,
Создаем переменную VAR.Total:
- Имя - Total
- Журнал событие - Авария
- Журнал адрес - Котельная
- Задержка (с.) - 0
- Тип - <> 0
- Добавлям Тег регистра "Авария"
Размещаем на ситуационном плане примтив типа Дискретный датчик, в настройке Тег вручную указываем VAR.Total.
Если значение тега "Авария" будет отлично от 0 (т.е. будет установлен флаг любой из аварий), то примтив Дискретный датчик перейдет в сигнальное состоения.
При этом расшифроку Аварий, удобно реализовать с помощью примитивов Таблица Тегов или Текстовое поле, связав их с тегом "Авария" (не переменной, а тегом!), и создав Text-фукцию (см. пример 3 Функция BITSTR в описании)
# BITSTR() 0=Норма 1=авария насоса 2=неиспраность датчика температуры 3=перепад давления
Демонстрационный пример
Вы можете сами попробовать настроить в SCADA Modbus-устройство воспользовавшись эмулятором в программе KUNIP.EXE
См. пример настройки в описании эмулятора.