This is topic Управление навигацией по мнемосхемам in forum Общие вопросы / Common questions at Форум TRACE MODE: техническая поддержка.


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

Posted by RomanCh (Участник № / Member № 6743) on :
 
Здравствуйте,
изучаю TRACE MODE 6 для определения возможности использования для наших нужд. Возникла следующая задача:

Условия:
1. есть 1000 дискретных сигналов, которые приходят с разных контроллеров. Каждый сигнал независимо от других может переключиться в любой момент в состояние 1(вкл) или 0(выкл).

2. Есть 4 мнемосхемы, на каждой отображается по 250 сигналов из указанной в п.1 тысячи. Т.е. 1000 наших сигналов разбита по четырем мнемосхемам.

3.Если все сигналы в текущий момент времени имеют значение 0(выкл), то при изменении одного из сигналов в состояние 1(вкл) должна автоматически открыться мнемосхема, на которой данный сигнал отображён. Это касается только первого изменившегося сигнала, если после него происходит изменение второго сигнала, то автоматического перехода на другую мнемосхему произойти не должно.

5. Если после автоматического перехода на экран с первым активировавшимся сигналом оператор перешёл вручную на другую мнемосхему, то через 10 сек. снова должна открыться мнемосхема с первым активировавшимся сигналом.

4. На каждой мнемосхеме необходимо отобразить количество сигналов, состояние которых равно 1(вкл)

Поскажите какие функции и механизмы TRACE MODE 6 можно использовать или могут пригодиться для решения данной задачи.
Составил несколько вопросов, ответы на которые на мой взгляд могут помочь в решении задачи:
Какими способами можно реализовать обход группы каналов или нескольких групп?
Какие возможны варианты реализации таймера (частного для мнемосхемы или глобального для проекта)?
Можно ли каналам задавать какие-нибудь пользовательские атрибуты?

Понимаю что некоторые вопросы могут иметь простой ответ в документации, в таком случае прошу подсказать где-именно можно почитать по данному вопросу в документации.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Реализовывать через программу. Автоматический переход между экранами не рекомендуем. Если все же необходимо программно вызывать экраны, используйте всплывающие экраны.

Количество сигналов считать программой.

Что имеется в виду под "реализовать обход группы каналов"?

Реализовать таймер можно многими способами, как это сделать удобнее, зависит от задачи. К примеру, можно использовать подходящие FBD-блоки или считать циклы.

Добавить свои дополнительные атрибуты каналам нет возможности.
 
Posted by RomanCh (Участник № / Member № 6743) on :
 
Здравствуйте,

под обходом каналов я подразумевал следующее:
Есть 1000 каналов привязанных к одному OPC-серверу и есть 1000 каналов привязанных к другому OPC-серверу. Чтобы проверить значение каждого канала я могу для примера создать процедуру, у которой к примеру будет 2000 входных аргументов (сразу вопрос: такое возможно?) Далее я передаю 2000 каналов данной процедуре, в ней прверяю их состояние и формирую необходимые сигналы. Вопрос как лучше передать такое колличество аргументов в процедуру, можно ли это сделать это в виде некоего массива, который потом в процедуре можно бы было обходить в цикле, с учетом того, что одна группа каналов относится к одному OPC-серверу, а вторая к другому?

Изначально планировал из этой процедуры осуществлять открытие и закрытие необходимых мнемосхем, под этим и понимал автоматическое открытие и закрытие окон. Прошу уточнить именно такое автоматическое открытие окон не рекомендуется или имелся в виду другой механизм?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Используйте канал Call с типом вызова "=", аргументы которого должны иметь привязку к интересующим Вас каналам

значение нулевого аргумента канала Call.= сравнивается со значениями всех остальных аргументов, а также анализируются привязки аргументов:

Параметр=0 – если хотя бы один результат сравнения истинен, устанавливается бит 4 (0x10) A. Если все результаты сравнения истинны, дополнительно устанавливается бит 0 (0x1) A;
 
Posted by RomanCh (Участник № / Member № 6743) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Используйте канал Call с типом вызова "=", аргументы которого должны иметь привязку к интересующим Вас каналам

Т.е. если каналов 1000 или более то придётся для указанного канала CALL создать 1000 или более аргументов, а затем к каждому аргументу привязать все 1000+ каналов?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Учитывая разнообразные предполагаемы варианты обработки сигналов, возможно, более продуктивным может оказаться использование программной обработки в языке ST с применением "специальных функций"
"//чтение атрибута канала (целое со знаком,

//4 байта)

DINT getAttributeI(UDINT ch_id, UINT attr_id)

//чтение атрибута канала (вещественное, 4 байта)

REAL getAttributeF(UDINT ch_id, UINT attr_id)"

Эффективность механизма будет зависеть от степень упорядоченности ID обрабатываемых каналов.
Если источники создавались групповым образом, и переносились в узел методом D&D, можно предполагать, что большая часть созданных таким образом каналов будут иметь последовательные ID.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2