Нет описания правки
Нет описания правки
Строка 1: Строка 1:
<h2>Введение</h2>
<h2>Введение</h2>


<pre>
<pre>
В версии 2.7.14 - модуль работает не корректно, следует скопировать модуль версии 2.7.13 или  
В версии 2.7.14 - модуль работает не корректно, следует скопировать модуль версии 2.7.13 или  
полнить обновление SCADA до версии 2.7.15
выполнить обновление SCADA до версии 2.7.15
В версии 2.7.4-2.7.5  
В версии 2.7.4-2.7.5  
требуется обвноление модуля variables при работе с доп. примитивами
требуется обновление модуля variables при работе с доп. примитивами
(статус примитивов не обновлялся после запуска SCADA, до открытия окна Дополнительно / Переменные)
(статус примитивов не обновлялся после запуска SCADA, до открытия окна Дополнительно / Переменные)
</pre>
</pre>
Строка 40: Строка 38:
<ul>
<ul>
<li>Дискретный сигнал (набор примитивов) - это наиболее типовой случай применения.</li>
<li>Дискретный сигнал (набор примитивов) - это наиболее типовой случай применения.</li>
<li>LED, Изображение (см. <a href="%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D1%8B">дополнительные примитивы</a>)</li>
<li>LED, Изображение (см. &lt;a href=&quot;%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D1%8B&quot;&gt;дополнительные примитивы&lt;/a&gt;)</li>
<li>и т.п.</li>
<li>и т.п.</li>
</ul>
</ul>


== Настройка OPC-сервера ==
<h2>Настройка OPC-сервера</h2>


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


&nbsp;
<p>&nbsp;</p>


&nbsp;
<p>&nbsp;</p>


== Настройка Scada ==
<h2>Настройка Scada</h2>


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


[[File:Variables1.PNG|center|600px|Настройка Переменных]]
<p><img _fck_mw_filename="Variables1.PNG" _fck_mw_location="center" _fck_mw_origimgheight="432" _fck_mw_origimgwidth="1130" alt="Настройка Переменных" class="fck_mw_center" src="/images/a/a2/Variables1.PNG" style="vertical-align:middle;" title="Настройка Переменных" width="600" /></p>


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


Имя переменной всегда начинается с&nbsp;'''"VAR."'''
<p>Имя переменной всегда начинается с&nbsp;<b>&quot;VAR.&quot;</b></p>


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


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


*Добавить - добавить новую переменную  
<ul>
*Копия (полная) - скопировать настройки текущей переменной (удобно при разбивке битовой маски одного Item, при настройке [[Modbus-устройства|Modbus-устройства]])  
<li>Добавить - добавить новую переменную</li>
*Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов  
<li>Копия (полная) - скопировать настройки текущей переменной (удобно при разбивке битовой маски одного Item, при настройке <a href="Modbus-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0">Modbus-устройства</a>)</li>
*Удалить - удалить переменную  
<li>Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов</li>
*Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте  
<li>Удалить - удалить переменную</li>
<li>Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте</li>
</ul>


Настройки переменной:
<p>Настройки переменной:</p>


*Название - имя переменной (без приставки '''VAR.''')  
<ul>
*Журнал событие - название типа неисправности (будет отображаться в [[Журнал_событий,_заявок,_записи_переговоров|Журнале событий]])  
<li>Название - имя переменной (без приставки <b>VAR.</b>)</li>
*Журнал адрес - адрес (отображаться в [[Журнал_событий,_заявок,_записи_переговоров|Журнале событий]])  
<li>Журнал событие - название типа неисправности (будет отображаться в <a href="%D0%96%D1%83%D1%80%D0%BD%D0%B0%D0%BB%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9%2C%20%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%2C%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2">Журнале событий</a>)</li>
*Задержка -&nbsp; задержка в (с) сработки переменной. Только для типа переменной -&nbsp; Дискретный сигнал  
<li>Журнал адрес - адрес (отображаться в <a href="%D0%96%D1%83%D1%80%D0%BD%D0%B0%D0%BB%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9%2C%20%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%2C%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2">Журнале событий</a>)</li>
*Тип данных - тип переменной  
<li>Задержка -&nbsp; задержка в (с) сработки переменной. Только для типа переменной -&nbsp; Дискретный сигнал</li>
**Дискретный сигнал  
<li>Тип данных - тип переменной
**Число  
<ul>
*Тип обработки&nbsp;- реализуемая функция обработки значения  
<li>Дискретный сигнал</li>
**для Дискретного сигнала - выбрать из списка (подробнее см. примеры далее)  
<li>Число</li>
**для Числа - использовать ВЫРАЖЕНИЕ (подробнее см. примеры далее)  
</ul>
*Выражение - для типа ВЫРАЖЕНИЕ следует указать правило обработки входного значения  
</li>
<li>Тип обработки&nbsp;- реализуемая функция обработки значения
<ul>
<li>для Дискретного сигнала - выбрать из списка (подробнее см. примеры далее)</li>
<li>для Числа - использовать ВЫРАЖЕНИЕ (подробнее см. примеры далее)</li>
</ul>
</li>
<li>Выражение - для типа ВЫРАЖЕНИЕ следует указать правило обработки входного значения</li>
</ul>


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


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


В настоящее время реализованы следующие функции обработки (Типы обработки)&nbsp;значений Item:
<p>В настоящее время реализованы следующие функции обработки (Типы обработки)&nbsp;значений Item:</p>


{| class="wikitable"
<table class="wikitable">
|-
<tbody>
! Тип функции
<tr>
! Описание
<th>Тип функции</th>
! Число связанных Item
<th>Описание</th>
! Типы связанных Item
<th>Число связанных Item</th>
|-
<th>Типы связанных Item</th>
| OR
</tr>
| Логическое ИЛИ (анализируется только младший бит Item)
<tr>
| Любое
<td>OR</td>
| &nbsp;  
<td>Логическое ИЛИ (анализируется только младший бит Item)</td>
*дискретный сигнал;  
<td>Любое</td>
*канал ПГС;  
<td>&nbsp;
*канал управления.  
<ul>
<li>дискретный сигнал;</li>
<li>канал ПГС;</li>
<li>канал управления.</li>
</ul>
</td>
</tr>
<tr>
<td>AND</td>
<td>Логическое И (анализируется только младший бит Item)</td>
<td>Любое</td>
<td>&nbsp;
<ul>
<li>дискретный сигнал;</li>
<li>канал ПГС;</li>
<li>канал управления.</li>
</ul>
</td>
</tr>
<tr>
<td>XOR</td>
<td>Логическое исключающее ИЛИ (анализируется только младший бит Item)</td>
<td>2</td>
<td>&nbsp;
<ul>
<li>дискретный сигнал;</li>
<li>канал ПГС;</li>
<li>канал управления.</li>
</ul>
</td>
</tr>
<tr>
<td>&nbsp;!=0</td>
<td>Сравнение с 0 (авария - числовое значение &lt;&gt; 0)</td>
<td>1</td>
<td>Числовое значение</td>
</tr>
<tr>
<td>ВЫРАЖЕНИЕ</td>
<td>Логическое выражение</td>
<td>Любое</td>
<td>Числовое значение</td>
</tr>
</tbody>
</table>


|-
<p>Последний Тип удобно использовать при визуализации данных контроллеров сторонних производителей, например: <a href="Modbus-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0">Modbus-устройств</a>.</p>
| AND
| Логическое И (анализируется только младший бит Item)
| Любое
| &nbsp;
*дискретный сигнал;
*канал ПГС;
*канал управления.  


|-
<p>Выражения - позволяют реализовать более сложную модель обработки значения одного или нескольких Item. При этом каждый добавленный Item в разделе Теги и/или Переменные получает условное буквенное обозначение X, Y, Z, K, L и т.д.</p>
| XOR
| Логическое исключающее ИЛИ (анализируется только младший бит Item)
| 2
| &nbsp;
*дискретный сигнал;
*канал ПГС;
*канал управления.  


|-
<p>Примеры построения выражений:</p>
| &nbsp;!=0
| Сравнение с 0 (авария - числовое значение <> 0)
| 1
| Числовое значение
|-
| ВЫРАЖЕНИЕ
| Логическое выражение
| Любое
| Числовое значение
|}


Последний Тип удобно использовать при визуализации данных контроллеров сторонних производителей, например: [[Modbus-устройства|Modbus-устройств]].
<table class="wikitable">
<tbody>
<tr>
<th>Выражение</th>
<th>Описание</th>
</tr>
<tr>
<td>BIT (X;1)</td>
<td>Проверить установленный 1-ый бит в значении Item-а. Нумерация бит 32..1 (1 - младший)</td>
</tr>
<tr>
<td>X &gt; 10</td>
<td>Проверить, что значение Item-a больше 10</td>
</tr>
<tr>
<td>X == 5</td>
<td>Проверить, что значение Item-a равно 5</td>
</tr>
<tr>
<td>X&nbsp;!= 2</td>
<td>Проверить, что значение Item-a не равно 2</td>
</tr>
<tr>
<td>X || Y</td>
<td>Логическое ИЛИ двух значений Item</td>
</tr>
<tr>
<td>X &amp;&amp; Y</td>
<td>Логическое И двух значений Item</td>
</tr>
<tr>
<td>X&nbsp;% 2</td>
<td>X mod 2</td>
</tr>
<tr>
<td>X div 2</td>
<td>X div 2</td>
</tr>
<tr>
<td>X &amp;&amp; $FFFF&nbsp;!=0</td>
<td>Проверить факт установки первых 16-ти бит</td>
</tr>
</tbody>
</table>


Выражения - позволяют реализовать более сложную модель обработки значения одного или нескольких Item. При этом каждый добавленный Item в разделе Теги и/или Переменные получает условное буквенное обозначение X, Y, Z, K, L и т.д.
<p>После внесения изменений следует сохранить их, нажав на пиктограмму &quot;Сохранить все&quot; панели инструментов.</p>


Примеры построения выражений:
<h2>Пример работы</h2>


{| class="wikitable"
<p>Рассмотрим следующий демонстрационный пример.</p>
|-
! Выражение
! Описание
|-
| BIT (X;1)
| Проверить установленный 1-ый бит в значении Item-а. Нумерация бит 32..1 (1 - младший)
|-
| X > 10
| Проверить, что значение Item-a больше 10
|-
| X == 5
| Проверить, что значение Item-a равно 5
|-
| X&nbsp;!= 2
| Проверить, что значение Item-a не равно 2
|-
| X &#124;&#124; Y
| Логическое ИЛИ двух значений Item
|-
| X && Y
| Логическое И двух значений Item
|-
| X&nbsp;% 2
| X mod 2
|-
| X div 2
| X div 2
|-
| X && $FFFF&nbsp;!=0
| Проверить факт установки первых 16-ти бит
|}


После внесения изменений следует сохранить их, нажав на пиктограмму "Сохранить все" панели инструментов.
<p>Предположим у нас есть дискретных сигнала: Item1 и Item2.</p>


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


Рассмотрим следующий демонстрационный пример.
<ul>
<li>Переменная VAR.1 - тип обработки&nbsp;AND&nbsp; (логическое &quot;и&quot;)</li>
<li>Переменная VAR.2 - тип обработки OR&nbsp; (логическое &quot;или&quot;).</li>
</ul>


Предположим у нас есть дискретных сигнала: Item1 и Item2.
<p>Отобразим на карте четыре примитива типа дискретный датчик и свяжем их с переменными и Item.</p>


Оба Item связаны с двумя переменными VAR.1 и VAR.2. Обе переменные типа Дискретный сигнал,
<p>1. Ни один из дискретных сигналов не находится в Активном состоянии.</p>


*Переменная VAR.1 - тип обработки&nbsp;AND&nbsp; (логическое "и")
<p><img _fck_mw_filename="Variables norma.PNG" _fck_mw_location="center" _fck_mw_origimgheight="199" _fck_mw_origimgwidth="678" alt="Переменные Норма" class="fck_mw_center" src="/images/c/ce/Variables_norma.PNG" style="vertical-align:middle;" title="Переменные Норма" width="600" /></p>
*Переменная VAR.2 - тип обработки OR&nbsp; (логическое "или").


Отобразим на карте четыре примитива типа дискретный датчик и свяжем их с переменными и Item.
<p>2. Один из дискретных сигналов находится в Активном состоянии.</p>


1. Ни один из дискретных сигналов не находится в Активном состоянии.
<p>Это приводит к переводу в сигнальное состояние переменной VAR.2 (OR) - тип ИЛИ.</p>


[[File:Variables norma.PNG|center|600px|Переменные Норма]]
<p><img _fck_mw_filename="Variables alert.PNG" _fck_mw_location="center" _fck_mw_origimgheight="204" _fck_mw_origimgwidth="670" alt="Переменные Норма" class="fck_mw_center" src="/images/f/fd/Variables_alert.PNG" style="vertical-align:middle;" title="Переменные Норма" width="600" /></p>


2. Один из дискретных сигналов находится в Активном состоянии.
<p>3. Оба дискретных сигнала находятся в Активном состоянии.</p>


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


[[File:Variables alert.PNG|center|600px|Переменные Норма]]
<p><img _fck_mw_filename="Variables alert2.PNG" _fck_mw_location="center" _fck_mw_origimgheight="185" _fck_mw_origimgwidth="664" alt="Переменные Норма" class="fck_mw_center" src="/images/3/3d/Variables_alert2.PNG" style="vertical-align:middle;" title="Переменные Норма" width="600" /></p>


3. Оба дискретных сигнала находятся в Активном состоянии.
<p>&nbsp;</p>


Это приводит к переводу в сигнальное состояние обоих переменных.
<p>&nbsp;</p>


[[File:Variables alert2.PNG|center|600px|Переменные Норма]]
<h2>Служебные переменные</h2>


&nbsp;
<p>Служебные переменные создаются автоматически по запросу и не отображаюся в общем окне настроек переменных.</p>


<p>&nbsp;</p>


<h3>VAR.Timer</h3>


== Служебные переменные ==
<pre>
Добавлено в версии 2.7.17</pre>


Служебные переменные создаются автоматически по запросу и не отображаюся в общем окне настроек переменных.
<p>Переменная формирует сигнал (счетчик) один раз в указанное количество секунд&nbsp;и может быть использована, например:&nbsp; с примитивом Текстовое поле и&nbsp;&nbsp;<a href="Text-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F">text-функцией</a>&nbsp; #Time для отображения текущего времени, или для других целей.</p>


<p>Для создания переменной, просто укажите ее имя&nbsp;&nbsp;в поле Тэг выбранного примитива:</p>


<pre>
VAR.Timer N</pre>


=== VAR.Timer ===
<p>где&nbsp; N=1, 2, 3, .... - количество секунд между обновлениями состояния</p>
<pre>Добавлено в версии 2.7.17</pre>


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


Для создания переменной, просто укажите ее имя&nbsp;&nbsp;в поле Тэг выбранного примитива:
<ul>
<pre>VAR.Timer N</pre>
<li>VAR.Timer 1 - обновление 1 раз в секунду</li>
<li>VAR.Timer 30 - обновление 1 раз в 30 секунд</li>
</ul>


где&nbsp; N=1, 2, 3, .... - количество секунд между обновлениями состояния
<h3>VAR.ATimer</h3>


Например:
<pre>
Добавлено в версии 2.7.17</pre>


*VAR.Timer 1 - обновление 1 раз в секунду
<p>В отличии от VAR.Timer&nbsp; - переменная меняет свое значение из 0 в 1 и обратно.</p>
*VAR.Timer 30 - обновление 1 раз в 30 секунд


=== VAR.ATimer ===
<p>Для создания переменной, просто укажите ее имя&nbsp;&nbsp;в поле Тэг выбранного примитива:</p>
<pre>Добавлено в версии 2.7.17</pre>


В отличии от VAR.Timer&nbsp; - переменная меняет свое значение из 0 в 1 и обратно.
<pre>
VAR.ATimer N</pre>


Для создания переменной, просто укажите ее имя&nbsp;&nbsp;в поле Тэг выбранного примитива:
<p>где&nbsp; N=1, 2, 3, .... - количество секунд между обновлениями состояния</p>
<pre>VAR.ATimer N</pre>


где&nbsp; N=1, 2, 3, .... - количество секунд между обновлениями состояния
<p>Например:</p>
 
<ul>
<li>VAR.ATimer 1 - обновление 1 раз в секунду</li>
<li>VAR.ATimer 30 - обновление 1 раз в 30 секунд</li>
</ul>


Например:
<h3>VAR.Ping</h3>


*VAR.ATimer 1 - обновление 1 раз в секунду
<pre>
*VAR.ATimer 30 - обновление 1 раз в 30 секунд
Добавлено в версии 2.7.17</pre>


=== VAR.Ping ===
<p>Переменная выполняет ping указанного IP-адреса&nbsp; с заданной периодичностью.</p>
<pre>Добавлено в версии 2.7.17</pre>


Переменная выполняет ping указанного IP-адреса&nbsp; с заданной периодичностью.
<p><b>Замечание.</b><br />
Переменная введена для помощи на этапе пусконаладки.<br />
Может быть использована например, для отображения графика доступности оборудования по сети.&nbsp;<br />
Не следует использовать<b>более 3</b> переменных данного типа в рабочей конфигурации (это может привести к замедлению механизма работы переменных в целом).<br />
В рабочей конфигурации следует использовать похожий функционал в <a href="Tekon%20OPC-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80">ОРС-серверве</a>, добавив устройство Компьютерная сеть&nbsp; \ Ping&nbsp;</p>


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


Результатом переменной является время отклика на ping-запрос в мс.
<p>Для создания переменной, просто укажите в поле Тэг выбранного примитива:</p>


Для создания переменной, просто укажите в поле Тэг выбранного примитива:
<pre>
<pre>VAR.Ping 192_168_1_100
VAR.Ping 192_168_1_100
или
или
VAR.Ping 192_168_1_100 60</pre>
VAR.Ping 192_168_1_100 60</pre>


где:&nbsp;
<p>где:&nbsp;</p>


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


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


<p>&nbsp;</p>


=== Задержка отображения вызовов ПГС ===
<h3>Задержка отображения вызовов ПГС</h3>


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


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


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


Например:
<p>Например:</p>


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


<p>&nbsp;</p>


<h3>VAR.AGG_VOICE - агрегатор голосовых каналов&nbsp;ПГС</h3>


=== VAR.AGG_VOICE - агрегатор голосовых каналов&nbsp;ПГС ===
<pre>
<pre>Доступно с версии АСУД.SCADA 3.0</pre>
Доступно с версии АСУД.SCADA 3.0</pre>


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


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


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


*АРМ1 -&nbsp; ОРС-сервер 1  
<ul>
*АРМ2 -&nbsp;&nbsp;ОРС-сервер 1  
<li>АРМ1 -&nbsp; ОРС-сервер 1</li>
*АРМ3 -&nbsp; OPC-сервер 2  
<li>АРМ2 -&nbsp;&nbsp;ОРС-сервер 1</li>
<li>АРМ3 -&nbsp; OPC-сервер 2</li>
</ul>


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


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


*АРМ1 -&nbsp; ОРС-сервер 1, ОРС-сервер-2  
<ul>
*АРМ2 -&nbsp;&nbsp;ОРС-сервер 1, ОРС-сервер-2  
<li>АРМ1 -&nbsp; ОРС-сервер 1, ОРС-сервер-2</li>
*АРМ3 -&nbsp; OPC-сервер 2, ОРС-сервер-1  
<li>АРМ2 -&nbsp;&nbsp;ОРС-сервер 1, ОРС-сервер-2</li>
<li>АРМ3 -&nbsp; OPC-сервер 2, ОРС-сервер-1</li>
</ul>


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


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


[[File:Agg voice 1.PNG|center|350px|Agg voice 1.PNG]]
<p><img _fck_mw_filename="Agg voice 1.PNG" _fck_mw_location="center" _fck_mw_origimgheight="466" _fck_mw_origimgwidth="834" alt="Agg voice 1.PNG" class="fck_mw_center" src="/images/a/aa/Agg_voice_1.PNG" style="vertical-align:middle;" title="Agg voice 1.PNG" width="350" /></p>


[[File:Agg voice 2.PNG|center|350px|Agg voice 2.PNG]]Сохраните изменения. На этом настройка завершена.
<p><img _fck_mw_filename="Agg voice 2.PNG" _fck_mw_location="center" _fck_mw_origimgheight="416" _fck_mw_origimgwidth="809" alt="Agg voice 2.PNG" class="fck_mw_center" src="/images/d/d7/Agg_voice_2.PNG" style="vertical-align:middle;" title="Agg voice 2.PNG" width="350" />Сохраните изменения. На этом настройка завершена.</p>


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


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


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


&nbsp;
<p>&nbsp;</p>


&nbsp;
<p>&nbsp;</p>


&nbsp;
<p>&nbsp;</p>


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


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


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


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


'''Решение'''
<p>Открываем меню Вид / Переменные</p>


Открываем меню Вид / Переменные
<p>Добавляем переменную VAR.1</p>


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


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


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


Отобразить на карте:
<ul>
<li>примитив канал управления</li>
<li>примитив дискретный сигнал обратной связи&nbsp;</li>
<li>примитив&nbsp;дискретный сигнал, связанный с переменной VAR.1</li>
</ul>


*примитив канал управления
<h3>Выделить битовое состояние из числа (Modbus-устройства)</h3>
*примитив дискретный сигнал обратной связи&nbsp;
*примитив&nbsp;дискретный сигнал, связанный с переменной VAR.1


=== Выделить битовое состояние из числа (Modbus-устройства) ===
<p>Пусть есть <a href="Modbus-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0">Modbus-устройство</a>, в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный в единицу&nbsp;3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать.</p>


Пусть есть [[Modbus-устройства|Modbus-устройство]], в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный в единицу&nbsp;3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать.
<p><b>Замечание</b></p>


'''Замечание'''
<p>Решение данной задачи, устарело. В настоящий момент, вы можете выделять нужные биты либо сразу в настройках Modbus-устройства в ОРС-сервере, либо воспользоваться примитивом <a href="%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D1%8B">LED-индикатор</a>, у которого присутствует данный функционал.</p>


Решение данной задачи, устарело. В настоящий момент, вы можете выделять нужные биты либо сразу в настройках Modbus-устройства в ОРС-сервере, либо воспользоваться примитивом [[Дополнительные_примитивы|LED-индикатор]], у которого присутствует данный функционал.
<p><b>Решение</b></p>


'''Решение'''
<p>Открываем меню Вид / Переменные</p>


Открываем меню Вид / Переменные
<p>Добавляем переменную VAR.0, переименовываем имя в VAR.Pump1</p>


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


VAR.Pump1
<ul>
<li>Журнал событие - Насос 1</li>
<li>Журнал адрес - адрес установки устройства</li>
<li>Тэги
<ul>
<li>ваше название Тэга</li>
</ul>
</li>
<li>Тип - Дискретный сигнал</li>
<li>Тип обработки&nbsp;&nbsp;- ВЫРАЖЕНИЕ</li>
<li>Выражение - BIT(X;3)</li>
</ul>


*Журнал событие - Насос 1
<p>Отобразить на ситуационном плане любой примитив Дискретный датчик и в свойстве Тэг указать вручную VAR.Pump1 (нажать Enter).</p>
*Журнал адрес - адрес установки устройства
*Тэги
**ваше название Тэга 
*Тип - Дискретный сигнал
*Тип обработки&nbsp;&nbsp;- ВЫРАЖЕНИЕ
*Выражение - BIT(X;3)  


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


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


Пусть есть устройство, подключенное к концентратору КУН, которое выдает 5 дискретных сигналов.<br/> При этом считается, что:
<ul>
<li>одновременная сработка сигналов 1-3 с двухминутной задержкой является переходом устройства в состояние <i>Неисправность</i></li>
<li>cработка любого из сигналов 4,5 без задержки является признаком состояния <i>Выше нормы</i>.</li>
</ul>


*одновременная сработка сигналов 1-3 с двухминутной задержкой является переходом устройства в состояние ''Неисправность''
<p>Необходимо отобразить в Scada 2-а дискретных датчика, отражающих состояния устройства:</p>
*cработка любого из сигналов 4,5 без задержки является признаком состояния ''Выше нормы''.


Необходимо отобразить в Scada 2-а дискретных датчика, отражающих состояния устройства:
<ul>
<li>Неисправность.</li>
<li>Выше нормы.</li>
</ul>


*Неисправность.
<p><b>Решение</b></p>
*Выше нормы.


'''Решение'''
<p>1. Настройка OPC-сервера</p>


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


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


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


*для каждого из входов КУН 3 - 5 указываем задержку 2 мин.
<p>Закрываем Конфигуратор</p>


Закрываем Конфигуратор
<p>2. Настройка Scada</p>


2. Настройка Scada
<p>Открываем меню Вид / Переменные</p>


Открываем меню Вид / Переменные
<p>Добавляем 2 переменные VAR.0, VAR.1</p>


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


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


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


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


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


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


[[Category:SCADA]]
<p><span _fcknotitle="true" class="fck_mw_category" contenteditable="false">SCADA</span></p>

Версия от 09:17, 25 августа 2025

Введение

В версии 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, Изображение (см. <a href="%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D1%8B">дополнительные примитивы</a>)
  • и т.п.

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

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

 

 

Настройка Scada

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

<img _fck_mw_filename="Variables1.PNG" _fck_mw_location="center" _fck_mw_origimgheight="432" _fck_mw_origimgwidth="1130" alt="Настройка Переменных" class="fck_mw_center" src="/images/a/a2/Variables1.PNG" style="vertical-align:middle;" title="Настройка Переменных" width="600" />

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

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

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

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

  • Добавить - добавить новую переменную
  • Копия (полная) - скопировать настройки текущей переменной (удобно при разбивке битовой маски одного Item, при настройке <a href="Modbus-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0">Modbus-устройства</a>)
  • Копия (без тегов) - скопировать настройки текущей переменной без заполнения Тегов
  • Удалить - удалить переменную
  • Имя в буфер обмена - скопировать имя переменной в буфер обмена для последующей вставки в свойство Тег Примитива на карте

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

  • Название - имя переменной (без приставки VAR.)
  • Журнал событие - название типа неисправности (будет отображаться в <a href="%D0%96%D1%83%D1%80%D0%BD%D0%B0%D0%BB%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9%2C%20%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%2C%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2">Журнале событий</a>)
  • Журнал адрес - адрес (отображаться в <a href="%D0%96%D1%83%D1%80%D0%BD%D0%B0%D0%BB%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9%2C%20%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%2C%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2">Журнале событий</a>)
  • Задержка -  задержка в (с) сработки переменной. Только для типа переменной -  Дискретный сигнал
  • Тип данных - тип переменной
    • Дискретный сигнал
    • Число
  • Тип обработки - реализуемая функция обработки значения
    • для Дискретного сигнала - выбрать из списка (подробнее см. примеры далее)
    • для Числа - использовать ВЫРАЖЕНИЕ (подробнее см. примеры далее)
  • Выражение - для типа ВЫРАЖЕНИЕ следует указать правило обработки входного значения

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

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

В настоящее время реализованы следующие функции обработки (Типы обработки) значений Item:

<tbody> </tbody>
Тип функции Описание Число связанных Item Типы связанных Item
OR Логическое ИЛИ (анализируется только младший бит Item) Любое  
  • дискретный сигнал;
  • канал ПГС;
  • канал управления.
AND Логическое И (анализируется только младший бит Item) Любое  
  • дискретный сигнал;
  • канал ПГС;
  • канал управления.
XOR Логическое исключающее ИЛИ (анализируется только младший бит Item) 2  
  • дискретный сигнал;
  • канал ПГС;
  • канал управления.
 !=0 Сравнение с 0 (авария - числовое значение <> 0) 1 Числовое значение
ВЫРАЖЕНИЕ Логическое выражение Любое Числовое значение

Последний Тип удобно использовать при визуализации данных контроллеров сторонних производителей, например: <a href="Modbus-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0">Modbus-устройств</a>.

Выражения - позволяют реализовать более сложную модель обработки значения одного или нескольких Item. При этом каждый добавленный Item в разделе Теги и/или Переменные получает условное буквенное обозначение X, Y, Z, K, L и т.д.

Примеры построения выражений:

<tbody> </tbody>
Выражение Описание
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-ти бит

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

Пример работы

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

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

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

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

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

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

<img _fck_mw_filename="Variables norma.PNG" _fck_mw_location="center" _fck_mw_origimgheight="199" _fck_mw_origimgwidth="678" alt="Переменные Норма" class="fck_mw_center" src="/images/c/ce/Variables_norma.PNG" style="vertical-align:middle;" title="Переменные Норма" width="600" />

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

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

<img _fck_mw_filename="Variables alert.PNG" _fck_mw_location="center" _fck_mw_origimgheight="204" _fck_mw_origimgwidth="670" alt="Переменные Норма" class="fck_mw_center" src="/images/f/fd/Variables_alert.PNG" style="vertical-align:middle;" title="Переменные Норма" width="600" />

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

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

<img _fck_mw_filename="Variables alert2.PNG" _fck_mw_location="center" _fck_mw_origimgheight="185" _fck_mw_origimgwidth="664" alt="Переменные Норма" class="fck_mw_center" src="/images/3/3d/Variables_alert2.PNG" style="vertical-align:middle;" title="Переменные Норма" width="600" />

 

 

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

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

 

VAR.Timer

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

Переменная формирует сигнал (счетчик) один раз в указанное количество секунд и может быть использована, например:  с примитивом Текстовое поле и  <a href="Text-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F">text-функцией</a>  #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 переменных данного типа в рабочей конфигурации (это может привести к замедлению механизма работы переменных в целом).
В рабочей конфигурации следует использовать похожий функционал в <a href="Tekon%20OPC-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80">ОРС-серверве</a>, добавив устройство Компьютерная сеть  \ 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

 

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

Доступно с версии АСУД.SCADA 3.0

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

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

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

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

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

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

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

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

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

<img _fck_mw_filename="Agg voice 1.PNG" _fck_mw_location="center" _fck_mw_origimgheight="466" _fck_mw_origimgwidth="834" alt="Agg voice 1.PNG" class="fck_mw_center" src="/images/a/aa/Agg_voice_1.PNG" style="vertical-align:middle;" title="Agg voice 1.PNG" width="350" />

<img _fck_mw_filename="Agg voice 2.PNG" _fck_mw_location="center" _fck_mw_origimgheight="416" _fck_mw_origimgwidth="809" alt="Agg voice 2.PNG" class="fck_mw_center" src="/images/d/d7/Agg_voice_2.PNG" style="vertical-align:middle;" title="Agg voice 2.PNG" width="350" />Сохраните изменения. На этом настройка завершена.

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

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

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

 

 

 

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

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

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

Решение

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

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

VAR.1

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

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

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

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

Пусть есть <a href="Modbus-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0">Modbus-устройство</a>, в одном из регистров которого записано целочисленное значение, являющееся битовым набором состояний датчиков и, например: установленный в единицу 3-й бит является признаком ошибки Насоса1, которую необходимо визуализировать.

Замечание

Решение данной задачи, устарело. В настоящий момент, вы можете выделять нужные биты либо сразу в настройках Modbus-устройства в ОРС-сервере, либо воспользоваться примитивом <a href="%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D1%8B">LED-индикатор</a>, у которого присутствует данный функционал.

Решение

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

Добавляем переменную 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

SCADA