Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Общие вопросы / Common questions » Управление навигацией по мнемосхемам

   
Автор / Author Тема / Topic: Управление навигацией по мнемосхемам
RomanCh
Junior Member / Новичок
Участник № / Member № 6743


Icon 1 отправлено / posted      Профиль для / Profile for RomanCh           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте,
изучаю TRACE MODE 6 для определения возможности использования для наших нужд. Возникла следующая задача:

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

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

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

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

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

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

Понимаю что некоторые вопросы могут иметь простой ответ в документации, в таком случае прошу подсказать где-именно можно почитать по данному вопросу в документации.

Сообщения / Posts 3 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Реализовывать через программу. Автоматический переход между экранами не рекомендуем. Если все же необходимо программно вызывать экраны, используйте всплывающие экраны.

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

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

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

Добавить свои дополнительные атрибуты каналам нет возможности.

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
RomanCh
Junior Member / Новичок
Участник № / Member № 6743


Icon 1 отправлено / posted      Профиль для / Profile for RomanCh           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте,

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

Изначально планировал из этой процедуры осуществлять открытие и закрытие необходимых мнемосхем, под этим и понимал автоматическое открытие и закрытие окон. Прошу уточнить именно такое автоматическое открытие окон не рекомендуется или имелся в виду другой механизм?

Сообщения / Posts 3 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Используйте канал Call с типом вызова "=", аргументы которого должны иметь привязку к интересующим Вас каналам

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

Параметр=0 – если хотя бы один результат сравнения истинен, устанавливается бит 4 (0x10) A. Если все результаты сравнения истинны, дополнительно устанавливается бит 0 (0x1) A;

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
RomanCh
Junior Member / Новичок
Участник № / Member № 6743


Icon 1 отправлено / posted      Профиль для / Profile for RomanCh           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Используйте канал Call с типом вызова "=", аргументы которого должны иметь привязку к интересующим Вас каналам

Т.е. если каналов 1000 или более то придётся для указанного канала CALL создать 1000 или более аргументов, а затем к каждому аргументу привязать все 1000+ каналов?
Сообщения / Posts 3 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Учитывая разнообразные предполагаемы варианты обработки сигналов, возможно, более продуктивным может оказаться использование программной обработки в языке ST с применением "специальных функций"
"//чтение атрибута канала (целое со знаком,

//4 байта)

DINT getAttributeI(UDINT ch_id, UINT attr_id)

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

REAL getAttributeF(UDINT ch_id, UINT attr_id)"

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

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2