This is topic Приоритет канала опроса и др. in forum TRACE MODE 5 бесплатная версия / TRACE MODE 5 Free version at Форум TRACE MODE: техническая поддержка.
Вопрос №1. Можно ли сделать, чтобы после нажатия кнопки, значение в канал (в порт) посылалось сразу, а не ждала очереди, когда до него дойдет последовательный цикл опроса каналов? ( протокол ModBus ).
Вопрос №2. Как привязать к кнопке, используя "ввод и посылку" значения, чтобы, введенное в одном окне ввода значение, можно было отправить в несколько каналов?
Вопрос №3. Можно ли поставить ограничения на вводимую в окне "ввод и посылка" значения?
Вопрос №4. Почему, если значение канала равно например 1, а я хочю послать туда 0, мне приходится сначала послать 1, а потом следом только 0? ( протокол ModBus )
Вопрос №5. Как можно сделать переключение текста ( хотя бы двух надписей ) между собой в зависимости от состояния канала, не прибегая к использованию такого метода как наложение двух граф. объектов (цветовых индикаторов), где в одном положении цвет надписи совпадает с цветом фона?
Вопрос №6. В проекте имеются несколько узлов. Как сделать общую форму, откуда можно будет попадать на формы каждого узла? Я знаю одно средство - это действие кнопки - переход на форму, но она дает переходить на формы только текущего узла? Есть другой способ?
Вопрос №7. Вопрос связан с предыдущим вопросом. Почему опрашиваются каналы только текущего узла (открыта форма этого узла), а каналы другого узла не опрашиваются?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Ответ №1. Цикл пересчета по умолчанию 550 мс, сомневаюсь, что оператор может кликать по кпопкам так быстро, чтобы потом у него еще оставалось время на то чтобы мучительно долго ждать примерно 550 мс когда же значение будет отправлено по протоколу ModBus! На самом деле обмен по внешним интерфейсам происходит асинхронно относительно цикла пересчета и асинхронность эта выходит за рамки цикла пересчета базы каналов только тогда, когда поток генерируемых обращений при пересчете базы будет превышать пропускную способность самого канала связи!
Ответ №2. Ввод и посылка может посылать значение только в один приемник. Но для одной ФО (формы Отображения) можно задать несколько ФУ (Функций Управления) вроде Ввода и посылки. Однако придется каждый раз вводить это значение для каждой такой ФУ.
Ответ №3. Ограничения выставляются на основе задания границ канала, в который Вы вводите значения, в РБК (Редакторе Базы Каналов), а не для ФУ в графике.
Ответ №4. Зачем посылать туда сначала 1? Ведь там и так уже 1, если хотите изменить значение канала, то необходимо посылать значение отличное от его текущего!
Ответ №5. Для этого необходимо использовать ФО текстового индикатора - по диапазонам, пороговый или булевый.
Ответ №6. Под узлом в проекте понимается индивидуальное рабочее место оператора (АРМ) или узел контроллера! Нельзя запускать на одном ПК или контроллере сразу несколько узлов проекта. Соответственно каждый АРМ должен иметь свою собственную графическую базу, которая никак не может быть связана с другими графическими базами других узлов. Если Вы хотите иметь возможность продублировать АРМ оператора - подключившись к любому АРМ по сети, то для этого у нас существует специальный продукт NetLink Light, но даже он не позволяет переключаться с окна графической базы одного узла на окно из графической базы другого.
Ответ №7. Смотрите ответ №6 - каждый узел должен запускаться в своем ПК или контроллере, а не все узлы на одном ПК!
Posted by vladbond (Участник № / Member № 171) on :
Вы первый вопрос не поняли! Объясняю подробнее. У меня допустим есть 1000 каналов опроса + 1000 каналов посылки из Trace Mode значений в контроллер (всего 2000). На каждый канал выделяется время ожидания 1000 мс (а если связь по радиомодему, то в несколько раз больше!). Данные 1 канала обновляются только после 1 сек*1000 каналов = 1000 сек. Так как у вас последовательный опрос каналов (или нет? другого я не замечал). Да вот оператор, например, меняет значение в 1500 канале, а Trace Mode сейчас обрабатывает 10 канал, то когда он дойдет до 1500 пройдет 990 сек (худший вариант, конечно ответ приходит у меня до 300 мс). То есть оператору придется ждать 990 сек (16.5 мин), чтобы выполнилась его команда. Нажимает у себя старт системы, и он может спокойно идти чай пить. А если каналов 32000 и выше (серьезные системы), то ждать несколько часов? Вот я спрашивал, можно ли после изменения значения в канале оператором (нажатия кнопки), нарушить последовательность прохода каналов и сразу послать значение 1500 канала? Может использовать период "быстрый"?
На третий ответ:
То есть ставлю ограничения на канал. Тогда оператор может вводить неправильные данные, но они посылаться не будут. Я так понимаю. Если так, тогда оператор не будет знать что он ввел не верные данные. Это очень плохо! Если так, то как можно сообщить оператору в данной ситуации?
На четвертый ответ: Догадка: Каналы посылки значений в контроллер по умолчанию имеют 0. Тогда изменения нет, если мы посылаем 0. То есть в реквизитах "при старте" я должен выдумать такое значение, которое не может быть у данного канала?
На шестой ответ: По вашему определению узел - это АРМ. Пусть будет так. Тогда как мне создавать проект с одним узлом и с 100 станций? Можно, конечно, на 100 объектов разбить и их дублировать. Но все равно они попадают в один АРМ ( будет 50000 каналов = 100 * ~500 каналов ). Усложняется выбор канала в графическом редакторе (например в тренде нет строкового шаблона и как я должен искать канал среди 50000). Также я сейчас сделал одну станцию (демо), где 500 каналов разбил на объекты. В каждом объекте каналы объеденены по смыслу. Значит я от этого отказываюсь и 1 объект = 1 станции. Как мне лучше сгруппировать каналы?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Эх... Вам бы сначала почитать справочную систему по ТМ, основные понятия и определения - многое бы прояснилось.
1) Вы совершенно неправильно понимаете работу базы каналов в реальном времени! По вашему получается, что у всех наших пользователей узлы АРМов и контроллеров часами один цикл пересчета выполняют! Вся база каналов одного узла может просчитываться очень быстро - например, на Р4 1500Мгц база из 20 тысяч каналов с 20 тысячами FBD алгоритмами ПИД-регулятора сервер пересчитывает за 80 милисекунд! То есть, в реальном временни все это пересчитывается примерно 12.5 раз в секунду и если пользователь изменит значение канала №12500, то как максимум через 80 мс его значение будет готово для отправки по внешнему интерфейсу (конкретно для данного случая). Вы говорите, что у Вас обработка всей базы на 2000 каналов занимает 2000 секунд! Это нонсенс! Вы что - для узла период пересчета в 2000 секунд выставили? Таймаут при обмене по последовательным портам никак не может влиять на торможение при пересчете всей базы каналов! Он влияет только на очередность обработки обмена по каналам, которые обмениваются по последовательному интерфейсу. Очевидно у Вас нет вообще никакого обмена, потому что сервер, как Вы утверждаете, ожидает 1000 мс на каждом канале. Зачем тогда вести обмен, если канал обмена вообще не работает?
2) Если каналу заданы границы и выставлен флаг Контроля границ, то при посылке в него значения выходящего за пределы этих границ в его атрибуте Достоверность выставиться флаг Программной недостоверности данных, который можно анализировать в FBD-программе или отображать оператору любыми ФО в графике.
3) Не совсем понятно - для чего выдумывать какие-либо значения? Поясните более конкретно, какую задачу Вы хотите реализовать?
4) Узел: Любое устройство, в котором запущено программное обеспечение ТРЕЙС МОУД, реализующее серверные функции называется узлом. Это может быть контроллер, операторская или архивная станция. Объект базы каналов: Объект базы каналов - это группа каналов, которой приписан набор атрибутов. Над каналами объектов могут осуществляться групповые операции.
Пожалуйста не путайте Объект управления - реальный технологический объект с Объектом базы канлов узла, и тем более со станцией.
У Вас архитектура объекта автоматизации имеет распределенную структуру или нет? Вы приравниваете 1 объект=1 станция! Что Вы понимаете по понятием станция, рабочее место оператора, некий отдельный технологический объект, или что-то другое?
5) При привязке ФО - Вы всегда можете выбрать из списка Объект базы (он должен быть Загружаемым), канал, его атрибут - для каждого списка можно задать фильтр, или выполнять поиск по первому символу в имени (штатные функции для списков в ОС Windows).
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
Простите, что вмешиваюсь, но: вы же сами сказали: "На самом деле обмен по внешним интерфейсам происходит асинхронно относительно цикла пересчета и асинхронность эта выходит за рамки цикла пересчета базы каналов только тогда, когда поток генерируемых обращений при пересчете базы будет превышать пропускную способность самого канала связи!" Вот у него как раз тот случай! Т.е. представьте, что идет асинхронный опрос тысячи каналов по супер медленной линии и нужно в эту же линию послать управляющий сигнал. Вы утверждаете, что он будет послан по истечение цикла пересчета базы, а не по истечение цикла опроса всей 1000 входных каналов. Верно?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Механизм на самом деле следующий: При пересчете базы каналов, в которой есть каналы участвующие в обмене по последовательному интерфейсу, эти каналы поступают в некую очередь запросов, которая и обрабатывается асинхронно относительно общего цикла пересчета. По мере выполнения транзакции из этой очереди сервер распределяет результат в базе каналов по каналам, которые участвовали в этой транзакции - если все прошло удачно, то канал получает принятый ответ, если нет - выставляется в 1 его атрибут Достоверность. Если канал обмена очень медленный и не справляется с обработкой очереди запросов, которая генерируется при каждом пересчете базы каналов, то начинает наблюдаться асинхронность в заполнении каналов, участвующих в запросе, значениями (или выставлением атрибута Достоверность), что визуально приводит к тому, что пользователю кажется, что база пересчитывается очень медленно, а на самом деле она пересчитывается со стандартным циклом пересчета. Если канал обмена очень медленный, то вопрос "Можно ли сделать, чтобы после нажатия кнопки, значение в канал (в порт) посылалось сразу, а не ждала очереди, когда до него дойдет последовательный цикл опроса каналов?", не имеет смысла - потому как это все равно никак не убыстрит обмен по нему.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Для решения поставленной задачи воспользуйтесь следующим механизмом: организуйте приоритетную посылку значения выходного канала, работающего через последовательный интерфейс, в момент самой посылки отключая группу входных каналов, ведущих запросы по той же линии к устройству. Для этого используйте механизмом управления каналами через объекты.