Переменные: различия между версиями

Материал из TekonWiki
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
== Введение ==
== Введение ==
<pre>В версии 2.7.14 - модуль работает не корректно, следует скопирвать модуль версии 2.7.13 или  
<pre>В версии 2.7.14 - модуль работает не корректно, следует скопирвать модуль версии 2.7.13 или  
Строка 40: Строка 37:


Никакой специальной настройки OPC-сервера при использовании переменных не требуется.
Никакой специальной настройки OPC-сервера при использовании переменных не требуется.
&nbsp;
&nbsp;


== Настройка Scada ==
== Настройка Scada ==
Строка 171: Строка 164:
После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов.
После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов.


После создания переменной следует связать ее с Примитивом обычном образом
[[Файл:Variable 5.png|центр|542x542пкс|Настройка Переменных]]


== Пример работы ==
Рассмотрим следующий демонстрационный пример.
Предположим у нас есть дискретных сигнала: Item1 и Item2.
Оба Item связаны с двумя переменными VAR.1 и VAR.2. Обе переменные типа Дискретный сигнал,
*Переменная VAR.1 - тип обработки&nbsp;AND&nbsp; (логическое "и")
*Переменная VAR.2 - тип обработки OR&nbsp; (логическое "или").
Отобразим на карте четыре примитива типа дискретный датчик и свяжем их с переменными и Item.
1. Ни один из дискретных сигналов не находится в Активном состоянии.
[[File:Variables norma.PNG|center|600px|Переменные Норма]]
2. Один из дискретных сигналов находится в Активном состоянии.
Это приводит к переводу в сигнальное состояние переменной VAR.2 (OR) - тип ИЛИ.
[[File:Variables alert.PNG|center|600px|Переменные Норма]]


3. Оба дискретных сигнала находятся в Активном состоянии.


Это приводит к переводу в сигнальное состояние обоих переменных.
И выбрать переменную из списка Item
[[Файл:Variable 6.png|центр|542x542пкс|Настройка Переменных]]


[[File:Variables alert2.PNG|center|600px|Переменные Норма]]
== Служебные переменные ==
Это переменные, которые создаются автоматически или создаются не в базовом окне настройке Вид \ Переменные


&nbsp;
=== Служебные переменные АСУД.SCADA 3.x ===


== Служебные переменные АСУД.SCADA 3.x ==
==== VAR.OPC-HTTP ====
Это переменные, создаваемые при настройке подключения к OPC-серверу через [[Tekon OPC-сервер|HTTP-шлюз]].


=== VAR.Spec.Timer ===
При успешном подключении к серверу, его адресное пространство будет спроецировано в дерево
[[Файл:Variable opc gate.png|центр|542x542пкс|Настройка Переменных]]


==== VAR.Spec.Timer ====
Переменная формирует сигнал (счетчик) один раз в указанное количество секунд&nbsp;и может быть использована, например:&nbsp; с примитивом Текстовое поле и&nbsp;&nbsp;[[Text-функция|text-функцией]]&nbsp; #Time для отображения текущего времени, или для других целей.
Переменная формирует сигнал (счетчик) один раз в указанное количество секунд&nbsp;и может быть использована, например:&nbsp; с примитивом Текстовое поле и&nbsp;&nbsp;[[Text-функция|text-функцией]]&nbsp; #Time для отображения текущего времени, или для других целей.


Строка 216: Строка 193:
Например:
Например:


*Timer 1 - обновление 1 раз в секунду  
*Timer 1 - обновление 1 раз в секунду
*Timer 30 - обновление 1 раз в 30 секунд  
*Timer 30 - обновление 1 раз в 30 секунд


Запустить SCADA, разместить примитив, например: Текстовое поле и связать его с Тегом переменной VAR.Spec.Timer
Запустить SCADA, разместить примитив, например: Текстовое поле и связать его с Тегом переменной VAR.Spec.Timer


=== VAR.Spec.ATimer ===
==== VAR.Spec.ATimer ====
 
В отличии от Timer&nbsp; - переменная меняет свое значение из 0 в 1 и обратно.
В отличии от Timer&nbsp; - переменная меняет свое значение из 0 в 1 и обратно.


Строка 232: Строка 208:
Например:
Например:


*ATimer 1 - обновление 1 раз в секунду  
*ATimer 1 - обновление 1 раз в секунду
*ATimer 30 - обновление 1 раз в 30 секунд  
*ATimer 30 - обновление 1 раз в 30 секунд


Запустить SCADA, разместить примитив, например: Текстовое поле и связать его с Тегом переменной VAR.Spec.ATimer
Запустить SCADA, разместить примитив, например: Текстовое поле и связать его с Тегом переменной VAR.Spec.ATimer


=== VAR.AGG_VOICE - агрегатор голосовых каналов&nbsp;ПГС ===
==== VAR.AGG_VOICE - агрегатор голосовых каналов&nbsp;ПГС ====
 
Переменная позволяет взаимодействовать с каналами&nbsp;переговорной связи, которые не отражены на карте SCADA данного АРМ.
Переменная позволяет взаимодействовать с каналами&nbsp;переговорной связи, которые не отражены на карте SCADA данного АРМ.


Строка 245: Строка 220:
Пусть у нас есть три АРМ следующей конфигурации:
Пусть у нас есть три АРМ следующей конфигурации:


*АРМ1 -&nbsp; ОРС-сервер 1  
*АРМ1 -&nbsp; ОРС-сервер 1
*АРМ2 -&nbsp;&nbsp;ОРС-сервер 1  
*АРМ2 -&nbsp;&nbsp;ОРС-сервер 1
*АРМ3 -&nbsp; OPC-сервер 2  
*АРМ3 -&nbsp; OPC-сервер 2


На каждом из АРМ отрисована своя карта сигналов (причем эти сигналы могут повторяться или не повторяться). Необходимо предоставить возможность диспетчерам АРМ-ов обработывать входящие вызовы соседних АРМ, если основной диспетчер не может на них ответить.
На каждом из АРМ отрисована своя карта сигналов (причем эти сигналы могут повторяться или не повторяться). Необходимо предоставить возможность диспетчерам АРМ-ов обработывать входящие вызовы соседних АРМ, если основной диспетчер не может на них ответить.
Строка 253: Строка 228:
Для этого следует выполнить следующие действия: на каждом АРМ зарегистрировать все ОРС-сервера, т.е.
Для этого следует выполнить следующие действия: на каждом АРМ зарегистрировать все ОРС-сервера, т.е.


*АРМ1 -&nbsp; ОРС-сервер 1, ОРС-сервер-2  
*АРМ1 -&nbsp; ОРС-сервер 1, ОРС-сервер-2
*АРМ2 -&nbsp;&nbsp;ОРС-сервер 1, ОРС-сервер-2  
*АРМ2 -&nbsp;&nbsp;ОРС-сервер 1, ОРС-сервер-2
*АРМ3 -&nbsp; OPC-сервер 2, ОРС-сервер-1  
*АРМ3 -&nbsp; OPC-сервер 2, ОРС-сервер-1


Далее на каждом из АРМ создать подвид, на котором разместить два примитива:
Далее на каждом из АРМ создать подвид, на котором разместить два примитива:


*Переговорное устройство  
*Переговорное устройство  
**Тэг:&nbsp; VAR.AGG_VOICE  
**Тэг:&nbsp; VAR.AGG_VOICE
**Приоритет: Обычный&nbsp; &nbsp; - необходимо для приоритетной обработки локальных входящих вызовов  
**Приоритет: Обычный&nbsp; &nbsp; - необходимо для приоритетной обработки локальных входящих вызовов
*Таблица свойств - для отображения источника вызова  
*Таблица свойств - для отображения источника вызова  
**Тэг:&nbsp; VAR.AGG_VOICE  
**Тэг:&nbsp; VAR.AGG_VOICE


[[File:Agg voice 1.PNG|center|350px|Agg voice 1.PNG]]
[[File:Agg voice 1.PNG|center|350px|Agg voice 1.PNG]]
Строка 273: Строка 248:
Существующие ограничения:
Существующие ограничения:


*Диспетчера АРМ могут одновременно совершаться вызовы на контроллеры / концентраторы с уникальными IP-адресами.<br/> Нельзя одновременно позвонить на один и тот же IP-адрес устройства.  
*Диспетчера АРМ могут одновременно совершаться вызовы на контроллеры / концентраторы с уникальными IP-адресами.<br /> Нельзя одновременно позвонить на один и тот же IP-адрес устройства.
*Вызов будет записан в журнал на том АРМ, диспетчер которого обработает вызов.
*Вызов будет записан в журнал на том АРМ, диспетчер которого обработает вызов.


== Служебные переменные АСУД.SCADA 2.x ==
=== Служебные переменные АСУД.SCADA 2.x ===
 
Служебные переменные создаются автоматически по запросу и не отображаюся в общем окне настроек переменных.
Служебные переменные создаются автоматически по запросу и не отображаюся в общем окне настроек переменных.


=== VAR.Timer ===
==== VAR.Timer ====
<pre>Добавлено в версии 2.7.17</pre>
<pre>Добавлено в версии 2.7.17</pre>


Строка 292: Строка 266:
Например:
Например:


*VAR.Timer 1 - обновление 1 раз в секунду  
*VAR.Timer 1 - обновление 1 раз в секунду
*VAR.Timer 30 - обновление 1 раз в 30 секунд  
*VAR.Timer 30 - обновление 1 раз в 30 секунд


=== VAR.ATimer ===
==== VAR.ATimer ====
<pre>Добавлено в версии 2.7.17</pre>
<pre>Добавлено в версии 2.7.17</pre>


Строка 307: Строка 281:
Например:
Например:


*VAR.ATimer 1 - обновление 1 раз в секунду  
*VAR.ATimer 1 - обновление 1 раз в секунду
*VAR.ATimer 30 - обновление 1 раз в 30 секунд  
*VAR.ATimer 30 - обновление 1 раз в 30 секунд


=== VAR.Ping ===
==== VAR.Ping ====
<pre>Добавлено в версии 2.7.17</pre>
<pre>Добавлено в версии 2.7.17</pre>


Переменная выполняет ping указанного IP-адреса&nbsp; с заданной периодичностью.
Переменная выполняет ping указанного IP-адреса&nbsp; с заданной периодичностью.


'''Замечание.'''<br/> Переменная введена для помощи на этапе пусконаладки.<br/> Может быть использована например, для отображения графика доступности оборудования по сети.&nbsp;<br/> Не следует использовать'''более 3''' переменных данного типа в рабочей конфигурации (это может привести к замедлению механизма работы переменных в целом).<br/> В рабочей конфигурации следует использовать похожий функционал в [[Tekon_OPC-сервер|ОРС-серверве]], добавив устройство Компьютерная сеть&nbsp; \ Ping&nbsp;
'''Замечание.'''<br /> Переменная введена для помощи на этапе пусконаладки.<br /> Может быть использована например, для отображения графика доступности оборудования по сети.&nbsp;<br /> Не следует использовать'''более 3''' переменных данного типа в рабочей конфигурации (это может привести к замедлению механизма работы переменных в целом).<br /> В рабочей конфигурации следует использовать похожий функционал в [[Tekon_OPC-сервер|ОРС-серверве]], добавив устройство Компьютерная сеть&nbsp; \ Ping&nbsp;


Результатом переменной является время отклика на ping-запрос в мс.
Результатом переменной является время отклика на ping-запрос в мс.
Строка 326: Строка 300:
где:&nbsp;
где:&nbsp;


*192_168_1_100 - проверяемый IP-адрес, вместо точки&nbsp;следует указываться знак подчеркивания _.  
*192_168_1_100 - проверяемый IP-адрес, вместо точки&nbsp;следует указываться знак подчеркивания _.
*60&nbsp; (не обязательный параметр) - число секунд между проверками  
*60&nbsp; (не обязательный параметр) - число секунд между проверками


Таймаут выполняемого ping-запроса составляет 300 мс.
Таймаут выполняемого ping-запроса составляет 300 мс.


=== Задержка отображения вызовов ПГС ===
==== Задержка отображения вызовов ПГС ====
<div>На объектах с двумя АРМ, которые отображают одни и теже каналы ПГС, может потребоваться, чтобы каналы на АРМ1 отображались с задержкой относительно АРМ2.</div>  
<div>На объектах с двумя АРМ, которые отображают одни и теже каналы ПГС, может потребоваться, чтобы каналы на АРМ1 отображались с задержкой относительно АРМ2.</div>  
Т.е. факт вызова сначала отображался на АРМ2, а затем через указанную задержку (если не был обработан на АРМ2), отобразился на АРМ1.
Т.е. факт вызова сначала отображался на АРМ2, а затем через указанную задержку (если не был обработан на АРМ2), отобразился на АРМ1.
Строка 339: Строка 313:
Например:
Например:


*было:&nbsp;DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].КУН-IP4 - 0.VoiceChannel01  
*было:&nbsp;DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].КУН-IP4 - 0.VoiceChannel01
*стало:&nbsp;VAR.D10.DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].КУН-IP4 - 0.VoiceChannel01
*стало:&nbsp;VAR.D10.DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].КУН-IP4 - 0.VoiceChannel01


== Пример решения типовых задач ==
== Пример решения типовых задач ==


=== Логическое объединение сигналов ===
Рассмотрим следующий демонстрационный пример.
Предположим у нас есть дискретных сигнала: Item1 и Item2.
Оба Item связаны с двумя переменными VAR.1 и VAR.2. Обе переменные типа Дискретный сигнал,
*Переменная VAR.1 - тип обработки&nbsp;AND&nbsp; (логическое "и")
*Переменная VAR.2 - тип обработки OR&nbsp; (логическое "или").
Отобразим на карте четыре примитива типа дискретный датчик и свяжем их с переменными и Item.
1. Ни один из дискретных сигналов не находится в Активном состоянии.
[[File:Variables norma.PNG|center|600px|Переменные Норма]]
2. Один из дискретных сигналов находится в Активном состоянии.
Это приводит к переводу в сигнальное состояние переменной VAR.2 (OR) - тип ИЛИ.
[[File:Variables alert.PNG|center|600px|Переменные Норма]]
3. Оба дискретных сигнала находятся в Активном состоянии.
Это приводит к переводу в сигнальное состояние обоих переменных.
[[File:Variables alert2.PNG|center|600px|Переменные Норма]]
&nbsp;


=== Канал управления + дискретный сигнал обратной связи ===
=== Канал управления + дискретный сигнал обратной связи ===
Необходимо проинформировать об ошибке, если после включения канала управления, не происходит сработка дискретного сигнала обратной связи в течение 30 секунд.
Необходимо проинформировать об ошибке, если после включения канала управления, не происходит сработка дискретного сигнала обратной связи в течение 30 секунд.



Текущая версия от 07:50, 9 февраля 2026

Введение

В версии 2.7.14 - модуль работает не корректно, следует скопирвать модуль версии 2.7.13 или 
выполнить обновление SCADA до версии 2.7.15
В версии 2.7.4-2.7.5 
требуется обновление модуля variables при работе с доп. примитивами
(статус примитивов не обновлялся после запуска SCADA, до открытия окна Дополнительно / Переменные)

В программе АСУД.SCADA доступен ряд дополнительных функциональных возможностей по анализу состояния группы дискретных сигналов.

Данный функционал реализуется с помощью механизма "Переменных".

Переменные - это некий аналог Item в понимании OPC-сервера, но реализованный на стороне Scada.

Переменная в общем случае может быть связана с несколькими Item OPC-сервера. Значение Переменной при этом определяется, как функция от состояния связанных Item.

Переменная может быть двух типов:

  • Дискретный сигнал - обычно это некая логическая операция над группой Item, например: отобразить аварию, если Item1 и Item2 в аварии.
  • Число - некая математическая операция над значением одного или нескольких Item.

Значение, которые может принимать Переменная типа дискретный сигнал:

  • 0 - состояние Норма
  • 1 - состояние Активное (Сигнальное)
  • 3 - подтвержденное сигнальное состояние (желтый восклицательный знак).

Изменение состояния Переменной (если она связана с какми-либо Примитивом) будет отображаться в Журнале событий и в Оперативном журнале.

В Scada можно привязать Переменную через свойство Тэг почти к любым примитивам, например:

  • Дискретный сигнал (набор примитивов) - это наиболее типовой случай применения.
  • LED, Изображение (см. дополнительные примитивы)
  • и т.п.

Настройка OPC-сервера

Никакой специальной настройки OPC-сервера при использовании переменных не требуется.

Настройка Scada

В режиме настройки выбрать меню Вид / Переменные

Настройка Переменных
Настройка Переменных

Слева указаны зарегистрированные Переменные.

Имя переменной всегда начинается с "VAR."

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

Элементы меню добавления переменной:

  • Добавить - добавить новую переменную
  • Копия (полная) - скопировать настройки текущей переменной (удобно при разбивке битовой маски одного Item, при настройке Modbus-устройства)
  • Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов
  • Удалить - удалить переменную
  • Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте

Настройки переменной:

  • Название - имя переменной (без приставки VAR.)
  • Журнал событие - название типа неисправности (будет отображаться в Журнале событий)
  • Журнал адрес - адрес (отображаться в Журнале событий)
  • Задержка -  задержка в (с) сработки переменной. Только для типа переменной -  Дискретный сигнал
  • Тип данных - тип переменной
    • Дискретный сигнал
    • Число
  • Тип обработки - реализуемая функция обработки значения
    • для Дискретного сигнала - выбрать из списка (подробнее см. примеры далее)
    • для Числа - использовать ВЫРАЖЕНИЕ (подробнее см. примеры далее)
  • Выражение - для типа ВЫРАЖЕНИЕ следует указать правило обработки входного значения

Далее следует добавить Item OPC-сервера, выполнив клик правой кнопкой мыши в списке Тэги / Переменные.

После добавления Item в окне отобразится их текущее состояние и вычисленное текущее состояние Переменной.

В настоящее время реализованы следующие функции обработки (Типы обработки) значений 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
X && $FFFF !=0 Проверить факт установки первых 16-ти бит

После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов.

После создания переменной следует связать ее с Примитивом обычном образом

Настройка Переменных
Настройка Переменных


И выбрать переменную из списка Item

Настройка Переменных
Настройка Переменных

Служебные переменные

Это переменные, которые создаются автоматически или создаются не в базовом окне настройке Вид \ Переменные

Служебные переменные АСУД.SCADA 3.x

VAR.OPC-HTTP

Это переменные, создаваемые при настройке подключения к OPC-серверу через HTTP-шлюз.

При успешном подключении к серверу, его адресное пространство будет спроецировано в дерево

Настройка Переменных
Настройка Переменных

VAR.Spec.Timer

Переменная формирует сигнал (счетчик) один раз в указанное количество секунд и может быть использована, например:  с примитивом Текстовое поле и  text-функцией  #Time для отображения текущего времени, или для других целей.

Для создания переменной, следует закрыть SCADA и добавить в файл settings \ variables_quick.conf  строку :

Timer N

где  N=1, 2, 3, .... - количество секунд между обновлениями состояния

Например:

  • Timer 1 - обновление 1 раз в секунду
  • Timer 30 - обновление 1 раз в 30 секунд

Запустить SCADA, разместить примитив, например: Текстовое поле и связать его с Тегом переменной VAR.Spec.Timer

VAR.Spec.ATimer

В отличии от Timer  - переменная меняет свое значение из 0 в 1 и обратно.

Для создания переменной, следует закрыть SCADA и добавить в файл settings \ variables_quick.conf  строку :

ATimer N

где  N=1, 2, 3, .... - количество секунд между обновлениями состояния

Например:

  • ATimer 1 - обновление 1 раз в секунду
  • ATimer 30 - обновление 1 раз в 30 секунд

Запустить SCADA, разместить примитив, например: Текстовое поле и связать его с Тегом переменной VAR.Spec.ATimer

VAR.AGG_VOICE - агрегатор голосовых каналов ПГС

Переменная позволяет взаимодействовать с каналами переговорной связи, которые не отражены на карте SCADA данного АРМ.

Это дает возможность реализовать функцию помощи в обработке входящих вызовов соседних АРМ. При этом АРМы могут быть настроены, как на работу с одним ОРС-сервервером, так и с несколькими серверами.

Пусть у нас есть три АРМ следующей конфигурации:

  • АРМ1 -  ОРС-сервер 1
  • АРМ2 -  ОРС-сервер 1
  • АРМ3 -  OPC-сервер 2

На каждом из АРМ отрисована своя карта сигналов (причем эти сигналы могут повторяться или не повторяться). Необходимо предоставить возможность диспетчерам АРМ-ов обработывать входящие вызовы соседних АРМ, если основной диспетчер не может на них ответить.

Для этого следует выполнить следующие действия: на каждом АРМ зарегистрировать все ОРС-сервера, т.е.

  • АРМ1 -  ОРС-сервер 1, ОРС-сервер-2
  • АРМ2 -  ОРС-сервер 1, ОРС-сервер-2
  • АРМ3 -  OPC-сервер 2, ОРС-сервер-1

Далее на каждом из АРМ создать подвид, на котором разместить два примитива:

  • Переговорное устройство
    • Тэг:  VAR.AGG_VOICE
    • Приоритет: Обычный    - необходимо для приоритетной обработки локальных входящих вызовов
  • Таблица свойств - для отображения источника вызова
    • Тэг:  VAR.AGG_VOICE
Agg voice 1.PNG
Agg voice 1.PNG
Agg voice 2.PNG
Agg voice 2.PNG

Сохраните изменения. На этом настройка завершена.

Теперь в случае, если например: на АРМ2, АРМ3 придет один или несколько входящих вызовов, на который локальный диспетчер не ответит в течение 5 секунд, этот вызов отобразиться на АРМ1, в том случае, если вызов пришел с контроллера или концентратора, с IP-адресом которого в настояший момент нет установленной ПГС.

Существующие ограничения:

  • Диспетчера АРМ могут одновременно совершаться вызовы на контроллеры / концентраторы с уникальными IP-адресами.
    Нельзя одновременно позвонить на один и тот же IP-адрес устройства.
  • Вызов будет записан в журнал на том АРМ, диспетчер которого обработает вызов.

Служебные переменные АСУД.SCADA 2.x

Служебные переменные создаются автоматически по запросу и не отображаюся в общем окне настроек переменных.

VAR.Timer

Добавлено в версии 2.7.17

Переменная формирует сигнал (счетчик) один раз в указанное количество секунд и может быть использована, например:  с примитивом Текстовое поле и  text-функцией  #Time для отображения текущего времени, или для других целей.

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

VAR.Timer N

где  N=1, 2, 3, .... - количество секунд между обновлениями состояния

Например:

  • VAR.Timer 1 - обновление 1 раз в секунду
  • VAR.Timer 30 - обновление 1 раз в 30 секунд

VAR.ATimer

Добавлено в версии 2.7.17

В отличии от VAR.Timer  - переменная меняет свое значение из 0 в 1 и обратно.

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

VAR.ATimer N

где  N=1, 2, 3, .... - количество секунд между обновлениями состояния

Например:

  • VAR.ATimer 1 - обновление 1 раз в секунду
  • VAR.ATimer 30 - обновление 1 раз в 30 секунд

VAR.Ping

Добавлено в версии 2.7.17

Переменная выполняет ping указанного IP-адреса  с заданной периодичностью.

Замечание.
Переменная введена для помощи на этапе пусконаладки.
Может быть использована например, для отображения графика доступности оборудования по сети. 
Не следует использоватьболее 3 переменных данного типа в рабочей конфигурации (это может привести к замедлению механизма работы переменных в целом).
В рабочей конфигурации следует использовать похожий функционал в ОРС-серверве, добавив устройство Компьютерная сеть  \ Ping 

Результатом переменной является время отклика на ping-запрос в мс.

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

VAR.Ping 192_168_1_100
или
VAR.Ping 192_168_1_100 60

где: 

  • 192_168_1_100 - проверяемый IP-адрес, вместо точки следует указываться знак подчеркивания _.
  • 60  (не обязательный параметр) - число секунд между проверками

Таймаут выполняемого ping-запроса составляет 300 мс.

Задержка отображения вызовов ПГС

На объектах с двумя АРМ, которые отображают одни и теже каналы ПГС, может потребоваться, чтобы каналы на АРМ1 отображались с задержкой относительно АРМ2.

Т.е. факт вызова сначала отображался на АРМ2, а затем через указанную задержку (если не был обработан на АРМ2), отобразился на АРМ1.

Для этого, для требуемых каналов ПГС на АРМ1, следует изменить в настройках свойство тэг, дописав вручную в начале тега VAR.D10,  где 10 - длительность задержки в секундах

Например:

  • было: DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].КУН-IP4 - 0.VoiceChannel01
  • стало: VAR.D10.DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].КУН-IP4 - 0.VoiceChannel01

Пример решения типовых задач

Логическое объединение сигналов

Рассмотрим следующий демонстрационный пример.

Предположим у нас есть дискретных сигнала: Item1 и Item2.

Оба Item связаны с двумя переменными VAR.1 и VAR.2. Обе переменные типа Дискретный сигнал,

  • Переменная VAR.1 - тип обработки AND  (логическое "и")
  • Переменная VAR.2 - тип обработки OR  (логическое "или").

Отобразим на карте четыре примитива типа дискретный датчик и свяжем их с переменными и Item.

1. Ни один из дискретных сигналов не находится в Активном состоянии.

Переменные Норма
Переменные Норма

2. Один из дискретных сигналов находится в Активном состоянии.

Это приводит к переводу в сигнальное состояние переменной VAR.2 (OR) - тип ИЛИ.

Переменные Норма
Переменные Норма

3. Оба дискретных сигнала находятся в Активном состоянии.

Это приводит к переводу в сигнальное состояние обоих переменных.

Переменные Норма
Переменные Норма

 

Канал управления + дискретный сигнал обратной связи

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

Решение

Открываем меню Вид / Переменные

Добавляем переменную VAR.1

VAR.1

  • Журнал событие - Неисправность устройства 
  • Журнал адрес - адрес установки устройства
  • Тэги
    • Тэг Канала управления
    • Тэг Дискретного сигнала, подтверждающего корректность включения (чего-то)
  • Тип - Дискретный сигнал
  • Тип обработки  - ВЫРАЖЕНИЕ
  • Выражение -  X == 32769 && BIT(Y;1) == 0
  • Задержка - 30 с

Отобразить на карте:

  • примитив канал управления
  • примитив дискретный сигнал обратной связи 
  • примитив дискретный сигнал, связанный с переменной VAR.1

Выделить битовое состояние из числа (Modbus-устройства)

Пусть есть Modbus-устройство, в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный в единицу 3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать.

Замечание

Решение данной задачи, устарело. В настоящий момент, вы можете выделять нужные биты либо сразу в настройках Modbus-устройства в ОРС-сервере, либо воспользоваться примитивом LED-индикатор, у которого присутствует данный функционал.

Решение

Открываем меню Вид / Переменные

Добавляем переменную VAR.0, переименовываем имя в VAR.Pump1

VAR.Pump1

  • Журнал событие - Насос 1
  • Журнал адрес - адрес установки устройства
  • Тэги
    • ваше название Тэга
  • Тип - Дискретный сигнал
  • Тип обработки  - ВЫРАЖЕНИЕ
  • Выражение - BIT(X;3)

Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную VAR.Pump1 (нажать Enter).

Логическая группировка сигналов

Пусть есть устройство, подключенное к концентратору КУН, которое выдает 5 дискретных сигналов.
При этом считается, что:

  • одновременная сработка сигналов 1-3 с двухминутной задержкой является переходом устройства в состояние Неисправность
  • cработка любого из сигналов 4,5 без задержки является признаком состояния Выше нормы.

Необходимо отобразить в Scada 2-а дискретных датчика, отражающих состояния устройства:

  • Неисправность.
  • Выше нормы.

Решение

1. Настройка OPC-сервера

Настраиваем концентратор КУН-2Д.1, к которому подключено устройство.

Настраиваем 5 дискретных сигналов (например, 1 сигнал устройства подключен к входу 3 КУН, 2 - к 4, и т.д.):

  • для каждого из входов КУН 3 - 5 указываем задержку 2 мин.

Закрываем Конфигуратор

2. Настройка Scada

Открываем меню Вид / Переменные

Добавляем 2 переменные VAR.0, VAR.1

VAR.0

  • Тип - Дискретный сигнал
  • Тип обработки - AND
  • Журнал - Неисправность
  • Адрес - адрес установки устройства
  • Тэги
    • КУН.DiscretChannel1 (это 3 вход на плате КУН-2Д.1)
    • КУН.DiscretChannel2
    • КУН.DiscretChannel3

VAR.1

  • Тип - Дискретный сигнал
  • Тип обработки - OR
  • Журнал - Выше нормы
  • Адрес - адрес установки устройства
  • Тэги
    • КУН.DiscretChannel4 (это 6 вход на плате КУН-2Д.1)
    • КУН.DiscretChannel5

Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную VAR.0 (нажать Enter)

Повторить тоже самое для переменной VAR.1