Тема / Topic: Отключить FBD программу от выполнения
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
Как можно отключить FBD, чтобы она не исполнялась при пересчете базы каналов. Необходимо при аппаратной недостоверности канала, не выполняя ни каких расчетов, просто выставить соответствующий бит в маске отвечающей за достоверность.
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Если FBD-программа вызывается в качестве процедуры трансляции канала INPUT, то при появлении признака аппаратной недостоверности в этом канале она не будет пересчитываться. В любом случае, для того, чтобы FBD-программа не пересчитывалась, достаточно выключить канал, который ее вызывает.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
А в каком порядке расчитываются FBD программы и как быть, если результаты работы одной FBD-пр. должны стать данными для расчетов другой? Допустим, у меня аналоговый канал. Сначала проверится достоверность канала. Потом необходимо расчитать значение. Потом посчитать расход. Потом посчитать с помощью пид-закона положение РУ. А потом только спозиционировать РУ. Как соблюсти необходимый порядок?
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
База каналов пересчитывается сверху в низ? Т.е. от канала с индексом 0 и к бесконечности. Так же наверное и считаются FBD программы, привязанные к каналам? Очень надо!!
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Порядок обработки каналов описан в HELP: "Работа в реальном времени/Структура обработки данных/Пересчет базы каналов/Такты пересчета". В пределах каждой функции МРВ пересчитывает каналы по порядку индексов.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
quote: В любом случае, для того, чтобы FBD-программа не пересчитывалась, достаточно выключить канал, который ее вызывает.
А канал при пересчете может отключить сам себя, чтобы на следующем такте пересчета ого включили только при выполнении нужных условий? И вообще коректо ли так делать: Имеется битовая маска достоверности параметров. Отвожу под неё нулевой канал. При пересчете обнуляю её. В первом канале хранится показания аналогового датчика и к этому каналу привязана процедура трансляции. Эта процедура установит биты достоверности в маске 0-го канала. Далее драйвер ввода-вывода получит коректное значение маски(НЕ ОБНУЛЕННОЕ при старте пересчета), а именно то которое нужно и передаст его куда надо. Нужно это чтобы выключить те FBD программы, которые нет необходимости пересчитывать, просто отключив их, а те биты которые будут ими устанавливаться, останутся сброшенными.
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Может. Должна быть соответствующая функция в его процедуре трансляции или управления. Только включать его потом придется какой-то другой программой.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
Пересчет и ввод/вывод происходят не паралельно друг другу? Нет такой ситуации когда FBD программа считается, а драйвер ввода/вывода получает данные для отправки? Вопрос касается проектов для Lagoon, но если вы обясните структуру под Win, скажу двойное спасибо.
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Обратите внимание на соответствующие разделы документации, в которых описан порядок обработки каналов, их пересчета и отработки функций каналами OUT. Эти механизмы одинаковы для любых МРВ и МикроМРВ. Драйвер получает команду на отправку после обработки соответствующего канала. Если драйвер отрабатывает асинхронный поток, то реальное исполнение команды драйвером может быть задержано по отношению к моменту получения команды от канала и, возможно, его отключения. Читайте HELP.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
Из HELP
quote: Внимание! Канал OUTPUT отрабатывает свою функцию (передает приемнику значение своего атрибута ВЫХОД или исполняет свою системную команду) только при изменении значения своего атрибута ВЫХОД. Поэтому для инициализации принудительного исполнения им своей функции, если его АППАРАТНОЕ значение не изменялось, достаточно изменить значение атрибута ВЫХОД. При этом для отработки будет использовано текущее значение атрибута АППАРАТНОЕ. Заметим, что такая процедура, примененная к каналам, функции которых реализуются асинхронными параллельными потоками, может привести к неоднозначному результату в случае, если предыдущая команда еще не была исполнена.
А где посмотреть про каналы ф-ии которых реализуются асинхронными параллельными потоками? И что за ф-ии реализуют эти потоки?
Мой вопрос выше был задан не просто так. Мне нравится читать HELP по системе, но на некоторые вопросы будет быстрее найти ответ на форуме, чем получить ответ в справке. К примеру: MSDN. Я поискал информацию по организации вашей системы, но думаю такие вещи, как тактирование ядром задачь системы, возможно являются комерческой. Вообщем я так и не нашел ответа.
Вы можете объяснить мне языком разработчика или вашими терминами, я пойму, т.к. работал над созданием SCADA-системы.
Мне действительно важно, как происходит ввод/вывод. Ещё пример: 1. Проект для Lagoon, в нем канал с подтипом null, при старте равный 0. Каждый такт значение канала увеличивается на 1 и уменьшается на 1 АРМ запрашивает это значение(на АРМ работает МРВ). АРМ может получить значение 1 или нет? 2. Таже ситуаци, только вместо Lagoon выступает компьютер с работающим под Windows МРВ.
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sldk_buf
Forum Member / Участник форума
Участник № / Member № 2898
отправлено / posted
Я кажется врубился, вы хотели сказать этим: функции которых реализуются асинхронными параллельными потоками,-что после обработки канала какой-то объект синхронизации устанавливается в сигнальное состояние, а поток обрабатывающий ввод/вывод может сразу и не обработать это событие, т.к. будет занят в/в или какими-то другими задачами после выполнения которых может изменить состояние канала?
Сообщения / Posts 54 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Все каналы, связанные с внешними источниками/приемниками через драйверы разного рода, включая и наши внутренние протоколы I_Net и M_Link, реализуют свои функции асинхронными потоками. В частности, связь между МРВ и Lagoon осуществляется по протоколу M_Link. Эта связь реализуется асинхронно. АРМ может уверенно получить меандр из Lagoon, если период меандра в Lagoon существенно превышает реальный период опроса со стороны АРМа по M_Link. Точно указать необходимое соотношение между периодами обработки соответствующих каналов в Lagoon и АРМе нельзя, поскольку есть 2 неопределенных фактора - реальный цикл и загруженность Lagoon и загруженность RS-канала, по которому АРМ опрашивает Lagoon. Ориентировочно можно сказать, что если полный объем всех запросов от АРМа к Lagoon укладывается в 1 цикл обработки базы каналов в АРМе, то надо обеспечить, чтобы период меандра в Lagoon более чем вдвое превышал цикл обработки базы каналов в АРМе.
Принципиально замена в этой конфигурации Lagoon на МРВ мало что меняет. Возможно, реактивность МРВ может быть выше. Еще лучше динамика будет, если связь будет организована не по M_Link, по сети.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |