Об организации параллельных циклов

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
Vladimir_T
user
user
Сообщения: 72
Зарегистрирован: 13 сен 2011, 18:06
Версия LabVIEW: 2009
Контактная информация:

Об организации параллельных циклов

Сообщение Vladimir_T »

Уважаемые, коллеги, посоветуйте где почитать статьи об организации параллельных процессов. П. Блюма читал и стараюсь точно выполнять рекомендации и придерживаться четкой логики.
Задачу реализовал таким образом, что работают два параллельных процесса while:
а) В первом идет постоянный обмен с прибором для контроля и анализа ошибок.
б) Во втором обслуживается лицевая панель, если были события, то в первый процесс передается командная строка.
Программа работает, но часто события на лицевой панели просто игнорируются. Я бы с удовольствием приложил бы саму программу для поиска решения, но она уже большая. На лицевой панели не очень много элементов, которые сгруппированы во вкладках.
Artem.spb

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

Re: Об организации параллельных циклов

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

Vladimir_T писал(а): 20 апр 2021, 14:30 Уважаемые, коллеги, посоветуйте где почитать статьи об организации параллельных процессов. П. Блюма читал и стараюсь точно выполнять рекомендации и придерживаться четкой логики.
тут затрудняюсь, только опыт
Программа работает, но часто события на лицевой панели просто игнорируются.
значит, обработка слишком долгая.
В настройка отлова событий есть галка "морозить FP", это значит, что другие события пропускаются. Но если этот цикл у вас только действия пользователя ловит, то как же вы строку формируете, что оно так долго работает?
rushonda
developer
developer
Сообщения: 289
Зарегистрирован: 26 фев 2016, 06:31
Версия LabVIEW: 18-20
Благодарил (а): 6 раз
Поблагодарили: 7 раз
Контактная информация:

Re: Об организации параллельных циклов

Сообщение rushonda »

Если есть возможность, выложите программу, интересно посмотреть как реализованы параллельные циклы
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Об организации параллельных циклов

Сообщение Kosist »

Vladimir_T писал(а): 20 апр 2021, 14:30 б) Во втором обслуживается лицевая панель, если были события, то в первый процесс передается командная строка.
Программа работает, но часто события на лицевой панели просто игнорируются.
А как Вы передаете информацию из одного цикла в другой?
Мы делили апельсин - много наших полегло...
Vladimir_T
user
user
Сообщения: 72
Зарегистрирован: 13 сен 2011, 18:06
Версия LabVIEW: 2009
Контактная информация:

Re: Об организации параллельных циклов

Сообщение Vladimir_T »

Здравствуйте, благодарю за желание помочь. Командная строка с опросом состояния формируется с частотой 0.5 сек, можно реже, но это не помогает. Отрабатываются кнопки с фиксацией, а кнопки с кратковременным нажатием и регуляторы - часто игнорируются. Раньше был ПК гораздо старее и все работало, сейчас ПК поменяли на очень современный с WIN10/64 и обнаружилась такая вот загвоздка.
Прилагаю сам прибор, шибко не критикуйте, любым советам буду рад. Программа исследовательская для разработки алгоритмов обработки массивов, потому там есть дублирующие друг друга функции.
Прием и передача с поддержкой простейшего протокола.
R_Finder_DFR3_V3.vi
(169.41 КБ) 83 скачивания
Signal_Select.vi
(17.71 КБ) 75 скачиваний
Split_Array (SubVI).vi
(18.51 КБ) 80 скачиваний
Vladimir_T
user
user
Сообщения: 72
Зарегистрирован: 13 сен 2011, 18:06
Версия LabVIEW: 2009
Контактная информация:

Re: Об организации параллельных циклов

Сообщение Vladimir_T »

А как Вы передаете информацию из одного цикла в другой?
Взаимодействие между параллельными циклами через локальные переменные. Читал, что это очень затратный механизм, но ничего другого не смог придумать. Или семафоры и сообщения нужно осваивать?
Аватара пользователя
dadreamer

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

Re: Об организации параллельных циклов

Сообщение dadreamer »

Для начала я бы все кнопки перевёл в режим Latch и поместил внутрь Event-структуры (чтобы соответствующая кнопка отщёлкивалась после клика по ней). Сейчас часть кнопок Latch, часть Switch, какие-то внутри эвента, какие-то снаружи болтаются... Надо бы всё это унифицировать. Дальше, есть Event Inspector Window - позволяет посмотреть, какие события происходили в Event-структуре. Откройте окно инспектора, нажимайте кнопки и смотрите, что как реагирует. Можете ещё и в отладочную переменную (строка / массив строк) записывать факт нажатия, если так проще.
Vladimir_T писал(а): 21 апр 2021, 09:15Взаимодействие между параллельными циклами через локальные переменные. Читал, что это очень затратный механизм, но ничего другого не смог придумать. Или семафоры и сообщения нужно осваивать?
Дело не в том, что затратный. С локалками возможны ситуации гонки. Здесь, скорее всего, что-то такое и происходит. По быстродействию локалки не намного хуже прямых операций с контролами/индикаторами. А очереди/уведомители стоит изучить, вещь полезная. Семафоры не так часто используются.
Vladimir_T
user
user
Сообщения: 72
Зарегистрирован: 13 сен 2011, 18:06
Версия LabVIEW: 2009
Контактная информация:

Re: Об организации параллельных циклов

Сообщение Vladimir_T »

dadreamer писал(а): 21 апр 2021, 11:57 Для начала я бы все кнопки перевёл в режим Latch и поместил внутрь Event-структуры (чтобы соответствующая кнопка отщёлкивалась после клика по ней). Сейчас часть кнопок Latch, часть Switch, какие-то внутри эвента, какие-то снаружи болтаются... Надо бы всё это унифицировать. Дальше, есть Event Inspector Window - позволяет посмотреть, какие события происходили в Event-структуре. Откройте окно инспектора, нажимайте кнопки и смотрите, что как реагирует. Можете ещё и в отладочную переменную (строка / массив строк) записывать факт нажатия, если так проще.
Благодарю за ценные советы, по результатам доработок - напишу!
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»