This is topic NLL удаленное управление или только просмотр? in forum Операторский интерфейс SCADA/HMI TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/34/t/000122.html

Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Здравствуйте!
Необходимо управлять с помощью NLL включением отключением аварийной сигнализации. Со звуком на NLL разобрался, а как передать значение в RTM при нажатии кнопки не пойму никак. В узле NLL есть копия вызова шаблона экрана, где кнопка НЕ-ИЛИ привязана к аргументу, в свою очередь привязанному к биту дискретного канала управляющего вкл\откл сигнализации на различном оборудовании. В RTM все работает, а вот кнопка в NLL не функционирует. В чем может быть проблема?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Управлять атрибутами "бит" с удаленной консоли нельзя.
Эта процедура в RTM локально включает в себя ряд скрытых операций, которые в протоколах связи NLL не предусмотрены.
Надо в NLL писать программу, в которую считывать с сервера значение управляемого канала, программно менять в этом значении нужный бит и отправлять результат в атрибут ВХОД управляемого канала.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
В клиентах NLL не работает сетевое обращение к атрибутам бит, полубайт, байт и некоторым другим атрибутам. Решить это можно так:
1) Случай, когда надо передать данные в биты - в узле NLL создаете программу, в которой из 16 или 32 аргументов этой же программы собираете целочисленное значение (упаковка битов) и передаете в аргумент OUT типа UINT или UDINT этой же программы. Сам аргумент OUT привязываете ко входу канала на сервере, а вот в экранах узла NLL (или алгоритмах) привязываетесь к аргументам этого канала, вызывающего эту программу.
2) Случай, когда надо принять данные из битов - аналогично предыдущему методу, создаем в узле NLL программу, которая будет одним аргументом типа IN принимать из Реального атрибута удаленного канала значение и распаковывать его на биты и выдавать в аргументы этой же программы. Соответственно при вязка всех программ и экранов узла NLL должна идти уже к этим битам этой программы.

[Пдмигивание / Wink]

[ 06.06.2011, 11:48: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Ой, одновременно ответили... [Усмешка / Big Grin]
2Денис Анлреевич: Если что - обращайтесь, могу выслать пример проекта...

[ 06.06.2011, 11:48: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Спасибо, думаю разберусь сам. Но если что... в любом случае, спасибо)
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Да уж, распаковка\упаковка пришлись кстати.
А отображение битов на архивных трендах в NLL тоже таким образом реализовывать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нет, биты из архива должны на тренде отображаться корректно без дополнительных процедур.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
От кнопки с экрана непосредственное управление битами удаленного канала HEX16 можно осуществить следующим образом.

Привязать целочисленный аргумент OUT экрана к атрибуту ВХОД удаленного HEX-канала.
К этому аргументу привязать атрибуты "Источник" и "Результат" функции управления кнопки.
Выбрать функцию XOR, OR или AND в зависимости от того как следует задать значение бита, соответственно "изменить", "установить в 1" или "установить в 0".
Значение в функции управления следует выбирать в зависимости от номера бита.
Для функций XOR и OR надо задать 2**(N-1), а для функции AND надо задать (2**16)-1-(2**(N-1)), где N - номер бита (начинается с 1).
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Вот это уже поудобней будет! Спасибо!)
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Попытался поуправлять первым битом. Создал аргумент OUT INT и в консоли привязал его ко входу дискретного канала МРВ. В XOR кнопке значение функции 1. Кнопка не работает...
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Присылайте Ваш тестовый проект на hotline@adastra.ru.
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
И еще такая проблема. Методом упаковки\распаковки битов получается управлять(считывать) из консоли битами(ы) на сервере. Но при первом включении консоли вместо того чтобы считать значения битов на сервере и установить соответствующие в консоли, происходит обнуление битов на сервере (т.е. все кнопки выключаются). Как бороться с этим???
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Используется тип передачи НЕ-ИЛИ. возможно следует использовать прямую? но тогда проблематично совместить функции вкл и выкл в одной кнопке.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Пришлите, пожалуйста, пример проекта.
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
пожалуйста напомните адресс
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
ага, вижу))
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
отправил. кнопки вкл\выкл каналов МТМ.
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
И?)
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Разбираться в присланном Вами проекте оказалось достаточно трудоемким делом.

Поэтому я решил сделать и послать Вам простенький демо-проект.

Изначально предполагается, что управление одним параметром с двух рабочих мест (или от двух задач одного узла) принципиально чревато конфликтами, которые могут возникать за счет асинхронности различных потоков обработки и обмена информацией.
Поэтому непосредственное формирование команды управления должно осуществляться из одного источника (программы) на сервере, а в эту программу могут поступать локальные или дистанционные команды. Причем программа сервера должна синтезировать управление, исключая противоречия и эффекты асинхронности различных "управляющих".

Особенно критичным является объединение команд от разных программ. Программа всегда выдает управление (в отличие от экрана, который выдает управление только при операторских манипуляциях). Программное управление значительно чувствительнее к рассинхронизации потоков, чем экранное.

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

Мы подумаем, как усовершенствовать обмен с NLL с целью исключения некоторых конфликтных ситуаций.
 
Posted by Денис Анлреевич (Участник № / Member № 2046) on :
 
Интересно, а будут ли подобные проблемы при связи МРВ с МРВ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если использовать в МРВ точно такие же связи между узлами, то и проблемы останутся те же.
Но в МРВ можно создать канал HEX_OUT, с которого уже передавать сигнал в удаленный канал. Тогда часть проблем будет исключена - можно легко напрямую управлять непосредственно битами.
Однако останется проблема асинхронного управления, если управление ведется не от одного клиента. Это уже зависит не от Trace Mode 6.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2