Переменные: различия между версиями
Alex (обсуждение | вклад) |
Alex (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
== Введение == | == Введение == | ||
'''Внимание!''' | '''Внимание!''' | ||
Следует обновить SCADA до версии 2.3.8 или обновить модуль Variables | Следует обновить SCADA до версии 2.3.8 или обновить модуль Variables | ||
Начиная с версии 2.2.2 в программе АСУД.SCADA доступен ряд дополнительных функциональных возможностей по анализу состояния группы дискретных сигналов. | Начиная с версии 2.2.2 в программе АСУД.SCADA доступен ряд дополнительных функциональных возможностей по анализу состояния группы дискретных сигналов. | ||
Данный функционал реализуется с помощью механизма "Переменных". | Данный функционал реализуется с помощью механизма "Переменных". | ||
Переменные - это некий аналог Item в понимании OPC-сервера, но реализованный на стороне Scada. | Переменные - это некий аналог Item в понимании OPC-сервера, но реализованный на стороне Scada. | ||
Переменная в общем случае может быть связана с несколькими Item OPC-сервера. Значение Переменной при этом определяется, как функция от состояния связанных Item. | Переменная в общем случае может быть связана с несколькими Item OPC-сервера. Значение Переменной при этом определяется, как функция от состояния связанных Item. | ||
Значение, которые может принимать Переменная: | Значение, которые может принимать Переменная: | ||
* 0 - состояние Норма | |||
* 1 - состояние Активное (Сигнальное) | *0 - состояние Норма | ||
* 3 - подтвержденное сигнальное состояние (желтый восклицательный знак). | *1 - состояние Активное (Сигнальное) | ||
*3 - подтвержденное сигнальное состояние (желтый восклицательный знак). | |||
Изменение состояния Переменной будет отображаться в Журнале событий и в Оперативном журнале. | Изменение состояния Переменной будет отображаться в Журнале событий и в Оперативном журнале. | ||
В Scada можно привязать Переменную через свойство Тэг к примитивам | В Scada можно привязать Переменную через свойство Тэг к примитивам | ||
* Дискретный сигнал (набор примитивов) - это наиболее типовой случай применения. | |||
* LED, Изображение (см. [[Дополнительные_примитивы | дополнительные примитивы]]) | *Дискретный сигнал (набор примитивов) - это наиболее типовой случай применения. | ||
* и т.п. | *LED, Изображение (см. [[Дополнительные_примитивы|дополнительные примитивы]]) | ||
*и т.п. | |||
== Настройка OPC-сервера == | == Настройка OPC-сервера == | ||
| Строка 31: | Строка 33: | ||
Если для отображения состояния переменной используется примитив типа Дискретный датчик, то дополнительной настройки ОРС-сервера не требуется. | Если для отображения состояния переменной используется примитив типа Дискретный датчик, то дополнительной настройки ОРС-сервера не требуется. | ||
В случае использования примитивов типа Изображение (или любого другого примитива, у которого нет сигнального состояния с красным восклицательным знаком) - следует в настройках OPC-сервера для всех связанных с переменной дискретных сигналов настроить режим | В случае использования примитивов типа Изображение (или любого другого примитива, у которого нет сигнального состояния с красным восклицательным знаком) - следует в настройках OPC-сервера для всех связанных с переменной дискретных сигналов настроить режим Уровень безопасности в ''Обычный'' (по умолчанию значение установлено в ''Охрана''). | ||
Уровень безопасности в ''Обычный'' - не требует обязательного подтверждения Диспетчером сигнального состояния примитива. | Уровень безопасности в ''Обычный'' - не требует обязательного подтверждения Диспетчером сигнального состояния примитива. | ||
| Строка 39: | Строка 41: | ||
В режиме настройки выбрать меню Вид / Переменные | В режиме настройки выбрать меню Вид / Переменные | ||
[[ | [[File:Variables1.PNG|center|600px|Настройка Переменных]] | ||
Слева указаны зарегистрированные Переменные. | Слева указаны зарегистрированные Переменные. | ||
Имя переменной всегда начинается с '''"Var."'''. | Имя переменной всегда начинается с '''"Var."'''. | ||
Для добавления Переменной следует кликнуть правой кнопкой мыши в списке Переменной. | Для добавления Переменной следует кликнуть правой кнопкой мыши в списке Переменной. | ||
Элементы меню добавления переменной: | Элементы меню добавления переменной: | ||
* Добавить - добавить новую переменную | |||
* Копия (полная) | *Добавить - добавить новую переменную | ||
* Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов | *Копия (полная) - скопировать настройки текущей переменной (удобно при разбивке битовой маски одного Item, при настройке [[Modbus-устройства|Modbus-устройства]]) | ||
* Удалить - удалить переменную | *Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов | ||
* Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте | *Удалить - удалить переменную | ||
*Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте | |||
Настройки переменной: | Настройки переменной: | ||
* Название - имя переменной (без приставки '''Var.''') | |||
* Журнал событие - название типа неисправности (для Дискретного датчика будет отображаться в Журнале событий) | *Название - имя переменной (без приставки '''Var.''') | ||
* Журнал адрес - адрес (для Дискретного датчика будет отображаться в Журнале событий) | *Журнал событие - название типа неисправности (для Дискретного датчика будет отображаться в Журнале событий) | ||
* Тип - реализуемая функция обработки значения | *Журнал адрес - адрес (для Дискретного датчика будет отображаться в Журнале событий) | ||
* Задержка - задержка срабатывания Переменной в секундах (max 600 секунд) | *Тип - реализуемая функция обработки значения | ||
*Задержка - задержка срабатывания Переменной в секундах (max 600 секунд) | |||
Далее следует добавить Item OPC-сервера, выполнив клик правой кнопкой мыши в списке Тэги / Переменные. | Далее следует добавить Item OPC-сервера, выполнив клик правой кнопкой мыши в списке Тэги / Переменные. | ||
| Строка 65: | Строка 69: | ||
После добавления Item в окне отобразится их текущее состояние и вычисленное текущее состояние Переменной. | После добавления Item в окне отобразится их текущее состояние и вычисленное текущее состояние Переменной. | ||
=== Тип (функции обработки значений) === | === Тип (функции обработки значений) === | ||
В настоящее время реализованы следующие функции: | В настоящее время реализованы следующие функции: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Тип функции | ! Тип функции | ||
! Описание | |||
! Число связанных Item | |||
! Типы связанных Item | |||
|- | |- | ||
| OR | | OR | ||
* дискретный сигнал; | | Логическое ИЛИ (анализируется только младший бит Item) | ||
* канал ПГС; | | Любое | ||
* канал управления. | | | ||
*дискретный сигнал; | |||
*канал ПГС; | |||
*канал управления. | |||
|- | |- | ||
| AND | | AND | ||
* дискретный сигнал; | | Логическое И (анализируется только младший бит Item) | ||
* канал ПГС; | | Любое | ||
* канал управления. | | | ||
*дискретный сигнал; | |||
*канал ПГС; | |||
*канал управления. | |||
|- | |- | ||
| XOR | | XOR | ||
* дискретный сигнал; | | Логическое исключающее ИЛИ (анализируется только младший бит Item) | ||
* канал ПГС; | | 2 | ||
* канал управления. | | | ||
*дискретный сигнал; | |||
*канал ПГС; | |||
*канал управления. | |||
|- | |- | ||
| | | !=0 | ||
| Сравнение с 0 (авария - числовое значение <> 0) | |||
| 1 | |||
| Числовое значение | |||
|- | |- | ||
| ВЫРАЖЕНИЕ | |||
| Логическое выражение | |||
| Любое | |||
| Числовое значение | |||
|} | |} | ||
Последний | Последний Тип удобно использовать при визуализации данных контроллеров сторонних производителей, например: [[Modbus-устройства|Modbus-устройств]]. | ||
Выражения - позволяют реализовать более сложную модель обработки значения одного или нескольких Item. При этом каждый добавленный Item в разделе Теги и/или Переменные получает условное буквенное обозначение X, Y, Z, K, L и т.д. | Выражения - позволяют реализовать более сложную модель обработки значения одного или нескольких Item. При этом каждый добавленный Item в разделе Теги и/или Переменные получает условное буквенное обозначение X, Y, Z, K, L и т.д. | ||
Примеры построения выражений: | Примеры построения выражений: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Выражение | ! Выражение | ||
! Описание | |||
|- | |- | ||
| BIT (X;1) | | BIT (X;1) | ||
| Проверить установленный 1-ый бит в значении Item-а. Нумерация бит 32..1 (1 - младший) | |||
|- | |- | ||
| X > 10 | | X > 10 | ||
| Проверить, что значение Item-a больше 10 | |||
|- | |- | ||
| X == 5 | | X == 5 | ||
| Проверить, что значение Item-a равно 5 | |||
|- | |- | ||
| X != 2 | | X != 2 | ||
| Проверить, что значение Item-a не равно 2 | |||
|- | |- | ||
| X !! Y | | X !! Y | ||
| Логическое ИЛИ двух значений Item | |||
|- | |- | ||
| X && Y | | X && Y | ||
| Логическое И двух значений Item | |||
|- | |- | ||
| X % 2 | | X % 2 | ||
| X mod 2 | |||
|- | |- | ||
| X div 2 | |||
| X div 2 | |||
|} | |} | ||
После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов. | После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов. | ||
=== Дискретный датчик === | === Дискретный датчик === | ||
Разместить на карте примитив дискретный датчик, указать в поле Тэг имя переменной, например, Var0, нажать Enter. | Разместить на карте примитив дискретный датчик, указать в поле Тэг имя переменной, например, Var0, нажать Enter. | ||
Размещать (визуализировать) на карте все связанные с переменной дискретные сигналы необходимости нет. Однако, если они будут размещены, то при переходе Примитива, связанного с переменной в сигнальное состояние, его подтверждение (с помощью мыши или трубки) будет приводить к авто-подтверждению связанных с переменной Item-ов. | Размещать (визуализировать) на карте все связанные с переменной дискретные сигналы необходимости нет. Однако, если они будут размещены, то при переходе Примитива, связанного с переменной в сигнальное состояние, его подтверждение (с помощью мыши или трубки) будет приводить к авто-подтверждению связанных с переменной Item-ов. | ||
=== Изображение === | === Изображение === | ||
Разместить на карте примитив [[Дополнительные_примитивы | Изображение]], указать в поле Тэг имя переменной, например, Var0, нажать Enter. | Разместить на карте примитив [[Дополнительные_примитивы|Изображение]], указать в поле Тэг имя переменной, например, Var0, нажать Enter. | ||
Написать простой [[Скрипты | Lua-скрипт]] выбора изображения из перечня (название функции может быть любым). | Написать простой [[Скрипты|Lua-скрипт]] выбора изображения из перечня (название функции может быть любым). | ||
< | | ||
<syntaxhighlight lang="php"> | |||
function img (x) | function img (x) | ||
local xi = math.floor(x) | local xi = math.floor(x) | ||
| Строка 144: | Строка 179: | ||
end | end | ||
end | end | ||
</ | </syntaxhighlight> | ||
Указать в настройках примитива Изображение функцию img. | Указать в настройках примитива Изображение функцию img. | ||
== Пример работы == | == Пример работы == | ||
* два дискретных датчика связанны с Переменными Var1 и Var2 | *два дискретных датчика связанны с Переменными Var1 и Var2 | ||
* Переменная Var1 - тип AND | *Переменная Var1 - тип AND | ||
* Переменная Var2 - тип OR | *Переменная Var2 - тип OR | ||
1. Ни один из дискретных сигналов не находится в Активном состоянии. | 1. Ни один из дискретных сигналов не находится в Активном состоянии. | ||
[[ | [[File:Variables norma.PNG|center|600px|Переменные Норма]] | ||
2. Один из дискретных сигналов находится в Активном состоянии. | 2. Один из дискретных сигналов находится в Активном состоянии. | ||
| Строка 162: | Строка 197: | ||
Это приводит к переводу в сигнальное состояние переменной Var2 (OR) - тип ИЛИ. | Это приводит к переводу в сигнальное состояние переменной Var2 (OR) - тип ИЛИ. | ||
[[ | [[File:Variables alert.PNG|center|600px|Переменные Норма]] | ||
3. Оба дискретных сигнала находятся в Активном состоянии. | 3. Оба дискретных сигнала находятся в Активном состоянии. | ||
| Строка 168: | Строка 203: | ||
Это приводит к переводу в сигнальное состояние обоих переменных. | Это приводит к переводу в сигнальное состояние обоих переменных. | ||
[[ | [[File:Variables alert2.PNG|center|600px|Переменные Норма]] | ||
== Пример решения типовых задач == | == Пример решения типовых задач == | ||
=== Выделить битовое состояние из числа (Modbus-устройства) | === Выделить битовое состояние из числа (Modbus-устройства) === | ||
Пусть есть [[Modbus-устройства|Modbus-устройство]], в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный (в 1) 3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать. | |||
Пусть есть [[Modbus-устройства|Modbus-устройство]], в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный (в 1) 3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать. | |||
'''Решение''' | '''Решение''' | ||
1. Настройка ASUDBase | 1. Настройка ASUDBase | ||
Выполнить регистрацию [[Modbus-устройства]]. Добавить настройку регистра, указав тип в виде целочисленного значения. При этом нет необходимости дополнительно указывать регистр с типом BIT и использовать настройку [[Виртуальный КДД-RS]] (как это было ранее). | Выполнить регистрацию [[Modbus-устройства|Modbus-устройства]]. Добавить настройку регистра, указав тип в виде целочисленного значения. При этом нет необходимости дополнительно указывать регистр с типом BIT и использовать настройку [[Виртуальный_КДД-RS|Виртуальный КДД-RS]] (как это было ранее). | ||
Далее, запустить [[KCSLogger]] и прочитать состояние устройства. | Далее, запустить [[KCSLogger|KCSLogger]] и прочитать состояние устройства. | ||
2. Настройка OPC-сервера | 2. Настройка OPC-сервера | ||
| Строка 189: | Строка 225: | ||
3. Настройка Scada | 3. Настройка Scada | ||
Открываем меню Вид / Переменные | Открываем меню Вид / Переменные | ||
Добавляем переменную Var0, переименовываем имя в VarPump1 | Добавляем переменную Var0, переименовываем имя в VarPump1 | ||
VarPump1 | VarPump1 | ||
* Журнал событие - Насос 1 | |||
* Журнал адрес - адрес установки устройства | *Журнал событие - Насос 1 | ||
* Тэги | *Журнал адрес - адрес установки устройства | ||
** | *Тэги | ||
* Тип - ВЫРАЖЕНИЕ | **Контейнер.Прибор.PumpState (ваше название Тэга) | ||
* Выражение - BIT(X;3) | *Тип - ВЫРАЖЕНИЕ | ||
*Выражение - BIT(X;3) | |||
Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную VarPump1 (нажать Enter). | Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную VarPump1 (нажать Enter). | ||
=== Логическая группировка сигналов | === Логическая группировка сигналов === | ||
Пусть есть устройство, подключенное к концентратору КУН, которое выдает 5 дискретных сигналов.<br> | |||
При этом считается, что: | Пусть есть устройство, подключенное к концентратору КУН, которое выдает 5 дискретных сигналов.<br/> При этом считается, что: | ||
Необходимо отобразить в Scada 2-а дискретных датчика, отражающих состояния устройства: | *одновременная сработка сигналов 1-3 с двухминутной задержкой является переходом устройства в состояние ''Неисправность'' | ||
* Неисправность. | *cработка любого из сигналов 4,5 без задержки является признаком состояния ''Выше нормы''. | ||
* Выше нормы. | |||
Необходимо отобразить в Scada 2-а дискретных датчика, отражающих состояния устройства: | |||
*Неисправность. | |||
*Выше нормы. | |||
'''Решение''' | '''Решение''' | ||
| Строка 217: | Строка 256: | ||
1. Настройка OPC-сервера | 1. Настройка OPC-сервера | ||
Настраиваем концентратор КУН-2Д.1, к которому подключено устройство. | Настраиваем концентратор КУН-2Д.1, к которому подключено устройство. | ||
Настраиваем 5 дискретных сигналов (например, 1 сигнал устройства подключен к входу 3 КУН, 2 - к 4, и т.д.): | Настраиваем 5 дискретных сигналов (например, 1 сигнал устройства подключен к входу 3 КУН, 2 - к 4, и т.д.): | ||
Закрываем Конфигуратор | *для каждого из входов КУН 3 - 5 указываем задержку 2 мин. | ||
Закрываем Конфигуратор | |||
2. Настройка Scada | 2. Настройка Scada | ||
Открываем меню Вид / Переменные | Открываем меню Вид / Переменные | ||
Добавляем 2 переменные Var0, Var1 | Добавляем 2 переменные Var0, Var1 | ||
Var0 | Var0 | ||
* Тип - AND | |||
* Журнал - Неисправность | *Тип - AND | ||
* Адрес - адрес установки устройства | *Журнал - Неисправность | ||
* Тэги | *Адрес - адрес установки устройства | ||
** | *Тэги | ||
** | **КУН.DiscretChannel1 (это 3 вход на плате КУН-2Д.1) | ||
** | **КУН.DiscretChannel2 | ||
**КУН.DiscretChannel3 | |||
Var1 | Var1 | ||
Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную Var0 (нажать Enter) | *Тип - OR | ||
*Журнал - Выше нормы | |||
*Адрес - адрес установки устройства | |||
*Тэги | |||
**КУН.DiscretChannel4 (это 6 вход на плате КУН-2Д.1) | |||
**КУН.DiscretChannel5 | |||
Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную Var0 (нажать Enter) | |||
Повторить тоже самое для переменной Var1. | Повторить тоже самое для переменной Var1. | ||
| |||
[[Category:SCADA]] | |||
Версия от 14:53, 28 декабря 2020
Введение
Внимание! Следует обновить SCADA до версии 2.3.8 или обновить модуль Variables
Начиная с версии 2.2.2 в программе АСУД.SCADA доступен ряд дополнительных функциональных возможностей по анализу состояния группы дискретных сигналов.
Данный функционал реализуется с помощью механизма "Переменных".
Переменные - это некий аналог Item в понимании OPC-сервера, но реализованный на стороне Scada.
Переменная в общем случае может быть связана с несколькими Item OPC-сервера. Значение Переменной при этом определяется, как функция от состояния связанных Item.
Значение, которые может принимать Переменная:
- 0 - состояние Норма
- 1 - состояние Активное (Сигнальное)
- 3 - подтвержденное сигнальное состояние (желтый восклицательный знак).
Изменение состояния Переменной будет отображаться в Журнале событий и в Оперативном журнале.
В Scada можно привязать Переменную через свойство Тэг к примитивам
- Дискретный сигнал (набор примитивов) - это наиболее типовой случай применения.
- LED, Изображение (см. дополнительные примитивы)
- и т.п.
Настройка OPC-сервера
Внимание! Важно!
Если для отображения состояния переменной используется примитив типа Дискретный датчик, то дополнительной настройки ОРС-сервера не требуется.
В случае использования примитивов типа Изображение (или любого другого примитива, у которого нет сигнального состояния с красным восклицательным знаком) - следует в настройках OPC-сервера для всех связанных с переменной дискретных сигналов настроить режим Уровень безопасности в Обычный (по умолчанию значение установлено в Охрана).
Уровень безопасности в Обычный - не требует обязательного подтверждения Диспетчером сигнального состояния примитива.
Настройка Scada
В режиме настройки выбрать меню Вид / Переменные
Слева указаны зарегистрированные Переменные.
Имя переменной всегда начинается с "Var.".
Для добавления Переменной следует кликнуть правой кнопкой мыши в списке Переменной.
Элементы меню добавления переменной:
- Добавить - добавить новую переменную
- Копия (полная) - скопировать настройки текущей переменной (удобно при разбивке битовой маски одного Item, при настройке Modbus-устройства)
- Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов
- Удалить - удалить переменную
- Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте
Настройки переменной:
- Название - имя переменной (без приставки Var.)
- Журнал событие - название типа неисправности (для Дискретного датчика будет отображаться в Журнале событий)
- Журнал адрес - адрес (для Дискретного датчика будет отображаться в Журнале событий)
- Тип - реализуемая функция обработки значения
- Задержка - задержка срабатывания Переменной в секундах (max 600 секунд)
Далее следует добавить Item OPC-сервера, выполнив клик правой кнопкой мыши в списке Тэги / Переменные.
После добавления Item в окне отобразится их текущее состояние и вычисленное текущее состояние Переменной.
Тип (функции обработки значений)
В настоящее время реализованы следующие функции:
| Тип функции | Описание | Число связанных Item | Типы связанных Item |
|---|---|---|---|
| OR | Логическое ИЛИ (анализируется только младший бит Item) | Любое |
|
| AND | Логическое И (анализируется только младший бит Item) | Любое |
|
| XOR | Логическое исключающее ИЛИ (анализируется только младший бит Item) | 2 |
|
| !=0 | Сравнение с 0 (авария - числовое значение <> 0) | 1 | Числовое значение |
| ВЫРАЖЕНИЕ | Логическое выражение | Любое | Числовое значение |
Последний Тип удобно использовать при визуализации данных контроллеров сторонних производителей, например: Modbus-устройств.
Выражения - позволяют реализовать более сложную модель обработки значения одного или нескольких Item. При этом каждый добавленный Item в разделе Теги и/или Переменные получает условное буквенное обозначение X, Y, Z, K, L и т.д.
Примеры построения выражений:
| Выражение | Описание |
|---|---|
| BIT (X;1) | Проверить установленный 1-ый бит в значении Item-а. Нумерация бит 32..1 (1 - младший) |
| X > 10 | Проверить, что значение Item-a больше 10 |
| X == 5 | Проверить, что значение Item-a равно 5 |
| X != 2 | Проверить, что значение Item-a не равно 2 |
| X !! Y | Логическое ИЛИ двух значений Item |
| X && Y | Логическое И двух значений Item |
| X % 2 | X mod 2 |
| X div 2 | X div 2 |
После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов.
Дискретный датчик
Разместить на карте примитив дискретный датчик, указать в поле Тэг имя переменной, например, Var0, нажать Enter.
Размещать (визуализировать) на карте все связанные с переменной дискретные сигналы необходимости нет. Однако, если они будут размещены, то при переходе Примитива, связанного с переменной в сигнальное состояние, его подтверждение (с помощью мыши или трубки) будет приводить к авто-подтверждению связанных с переменной Item-ов.
Изображение
Разместить на карте примитив Изображение, указать в поле Тэг имя переменной, например, Var0, нажать Enter.
Написать простой Lua-скрипт выбора изображения из перечня (название функции может быть любым).
function img (x)
local xi = math.floor(x)
if (xi == 0) then
return "norma.jpg"
end
if (xi == 1) then
return "alert.jpg"
end
end
Указать в настройках примитива Изображение функцию img.
Пример работы
- два дискретных датчика связанны с Переменными Var1 и Var2
- Переменная Var1 - тип AND
- Переменная Var2 - тип OR
1. Ни один из дискретных сигналов не находится в Активном состоянии.
2. Один из дискретных сигналов находится в Активном состоянии.
Это приводит к переводу в сигнальное состояние переменной Var2 (OR) - тип ИЛИ.
3. Оба дискретных сигнала находятся в Активном состоянии.
Это приводит к переводу в сигнальное состояние обоих переменных.
Пример решения типовых задач
Выделить битовое состояние из числа (Modbus-устройства)
Пусть есть Modbus-устройство, в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный (в 1) 3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать.
Решение
1. Настройка ASUDBase
Выполнить регистрацию Modbus-устройства. Добавить настройку регистра, указав тип в виде целочисленного значения. При этом нет необходимости дополнительно указывать регистр с типом BIT и использовать настройку Виртуальный КДД-RS (как это было ранее).
Далее, запустить KCSLogger и прочитать состояние устройства.
2. Настройка OPC-сервера
Добавить Контейнер оборудования \ Прибор учета
3. Настройка Scada
Открываем меню Вид / Переменные
Добавляем переменную Var0, переименовываем имя в VarPump1
VarPump1
- Журнал событие - Насос 1
- Журнал адрес - адрес установки устройства
- Тэги
- Контейнер.Прибор.PumpState (ваше название Тэга)
- Тип - ВЫРАЖЕНИЕ
- Выражение - BIT(X;3)
Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную VarPump1 (нажать Enter).
Логическая группировка сигналов
Пусть есть устройство, подключенное к концентратору КУН, которое выдает 5 дискретных сигналов.
При этом считается, что:
- одновременная сработка сигналов 1-3 с двухминутной задержкой является переходом устройства в состояние Неисправность
- cработка любого из сигналов 4,5 без задержки является признаком состояния Выше нормы.
Необходимо отобразить в Scada 2-а дискретных датчика, отражающих состояния устройства:
- Неисправность.
- Выше нормы.
Решение
1. Настройка OPC-сервера
Настраиваем концентратор КУН-2Д.1, к которому подключено устройство.
Настраиваем 5 дискретных сигналов (например, 1 сигнал устройства подключен к входу 3 КУН, 2 - к 4, и т.д.):
- для каждого из входов КУН 3 - 5 указываем задержку 2 мин.
Закрываем Конфигуратор
2. Настройка Scada
Открываем меню Вид / Переменные
Добавляем 2 переменные Var0, Var1
Var0
- Тип - AND
- Журнал - Неисправность
- Адрес - адрес установки устройства
- Тэги
- КУН.DiscretChannel1 (это 3 вход на плате КУН-2Д.1)
- КУН.DiscretChannel2
- КУН.DiscretChannel3
Var1
- Тип - OR
- Журнал - Выше нормы
- Адрес - адрес установки устройства
- Тэги
- КУН.DiscretChannel4 (это 6 вход на плате КУН-2Д.1)
- КУН.DiscretChannel5
Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную Var0 (нажать Enter)
Повторить тоже самое для переменной Var1.