Разделение цикла опроса модулей и UI

Захват, обработка и генерирование сигнала
Sergey Puzanov
assistant
assistant
Сообщения: 118
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 4 раза
Контактная информация:

Re: Разделение цикла опроса модулей и UI

Сообщение Sergey Puzanov »

В общем имеется возможность переделать опрос модулей с CVT на принцип FIFO, но и соответственно отказаться от некоторых пост-обработок, если время их выполнения будет превышать время следующего взятия блока из FIFO. И я считаю, что это лучшее решение, т.к. машину, куда это всё установится, улучшить нет возможности, а как бы я не пытался разделять потоки/уменьшать количество действий с программами и прочее, 100% гарантии это всё равно не даст, а терять данные совершенно не желательно (ещё один аргумент в сторону FIFO). Спасибо всем за обсуждение и подсказки, на многие вещи обратил внимание и буду в будущем следить, по возможности ещё буду возвращаться и отписываться по поводу успехов и неудач.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Разделение цикла опроса модулей и UI

Сообщение Borjomy_1 »

Зачем надо натягивать сову на глобус? Задачи жёсткой синхронизации и тактирования решаются аппаратно. Для этого есть cRIO, FPGA.
Sergey Puzanov
assistant
assistant
Сообщения: 118
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 4 раза
Контактная информация:

Re: Разделение цикла опроса модулей и UI

Сообщение Sergey Puzanov »

Borjomy_1 писал(а): 20 дек 2021, 10:00 Зачем надо натягивать сову на глобус? Задачи жёсткой синхронизации и тактирования решаются аппаратно. Для этого есть cRIO, FPGA.
cRIO рассматривали, но там большие два НО:
1) Число каналов в совокупности = 256, это минимум 2 cRIO, которые как-то нужно настроить.
2) Такое число оборудования просто не закупят, поэтому и приходится с этой старой и полудохлой совой работать.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3403
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Разделение цикла опроса модулей и UI

Сообщение Artem.spb »

Sergey Puzanov писал(а): 20 дек 2021, 09:56 В общем имеется возможность переделать опрос модулей с CVT на принцип FIFO, но и соответственно отказаться от некоторых пост-обработок,
Вам нужно прям по одному элементу?
Не на аппаратных уровнях вопрос решается выборкой массива и его обработкой, что позволяет "плавать" по частоте цикла-обработчика, главное чтобы он успевал вытащить всё.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3403
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Разделение цикла опроса модулей и UI

Сообщение Artem.spb »

Borjomy_1 писал(а): 20 дек 2021, 10:00 Зачем надо натягивать сову на глобус? Задачи жёсткой синхронизации и тактирования решаются аппаратно. Для этого есть cRIO, FPGA.
На надо мучить птичку..
Мне лично любопытно, реально ли :labview: разделяет потоки, и почему на слабых машинах не-UI поток всё равно страдает из-за UI-активности.
Ладно бы загрузка была 100%, но судя по "отчёту" ujin1 там ещё есть запас.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Разделение цикла опроса модулей и UI

Сообщение Borjomy_1 »

Если выдавать ничего не надо с такими-же таймингами, то никакого смысла искать задержки нет в принципе. Необходимо только обеспечить аппаратную буферизацию, которую обеспечивает практически любая плата сбора. Потребность выцарапывать миллисекунды стабильности нужна только когда обеспечивается обратная связь (и она обладает такими требованиями, в том числе по инерционности системы). А вот попытки сделать систему истинно реального времени на Windows - это, извините, принципиально ошибочная стратегия.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Разделение цикла опроса модулей и UI

Сообщение Borjomy_1 »

Artem.spb писал(а): 20 дек 2021, 11:07
Borjomy_1 писал(а): 20 дек 2021, 10:00 Зачем надо натягивать сову на глобус? Задачи жёсткой синхронизации и тактирования решаются аппаратно. Для этого есть cRIO, FPGA.
На надо мучить птичку..
Мне лично любопытно, реально ли :labview: разделяет потоки, и почему на слабых машинах не-UI поток всё равно страдает из-за UI-активности.
Ладно бы загрузка была 100%, но судя по "отчёту" ujin1 там ещё есть запас.
Скорее всего задействовано одно ядро для всего процесса (так построена программа) и его не хватает для работы в условиях перегрузки.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Разделение цикла опроса модулей и UI

Сообщение dadreamer »

Borjomy_1 писал(а): 20 дек 2021, 14:01А вот попытки сделать систему истинно реального времени на Windows - это, извините, принципиально ошибочная стратегия.
Вообще можно, если туда вкорячить IntervalZero RTX/RTX64, INtime и т.п. или перескочить на RT-Linux (можно и самому ядро пересобрать на основе rt-kernel). Однако в первых двух случаях Windows как основная система всё равно будет необходима по ряду причин: API ядра, HAL, функции лицензирования, да хотя бы GUI хоть какой-то для оператора. Ну, и придётся разделить программу на два модуля: для обычной системы и для RT-прослойки. RT-часть, естественно, придётся писать на C/C++ и потом сопрягать по IPC с :labview: .
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»