Как менять один тэг (variable) по нажатию на разные control

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
Simatic
interested
interested
Сообщения: 1
Зарегистрирован: 19 дек 2017, 11:01
Версия LabVIEW: 2016
Контактная информация:

Как менять один тэг (variable) по нажатию на разные control

Сообщение Simatic »

Всем привет!
возник такой затык при освоении LV: как изменять один тэг (local / global variable?) по нажатию на разные LED control, причем сам control должен давать возможность менять цвет в зависимости от переменной?
Идея такая: есть 100 датчиков, которые опрашиваются, и параметры заносятся в таблицу.
Если датчик исправен (есть показания), то индикатор подсвечивается зеленым
Если датчик неисправен (некорректные показания или ноль), то индикатор подсвечивается красным
Если датчик не опрошен (тэг Queried = 0), то индикатор подсвечивается серым

По нажатию на датчик на front panel открывается таблица и из нее делается выборка строки, соответсвующая номеру датчика

В чем затык:
1) Как изменять цвет LED control в одном цикле while для всех 100 индикаторов?
Пока получилось сделать только для одного. В зависимости от значения еще одного control_Mod1_Ch1, вытащив из Led Control Property [Colors4], и подвязав его к массиву (см картинку, не уверен, что этот путь оптимальный). При добавлении второго control_Mod1_Ch2, cо вторым M1_2 ничего не просиходит... Делать 100 отдельных while - явно не вариант

Хотелось бы объединить все control_Modххх_Chххх в массив, но как это сделать? С учтом того, что в дальнейшем это будет не ручной контрол, а выход функции, то есть, вероятно, global variable, по каждому из 100 датчиков?
Если За время WAIT_TIME параметр VAL меньше SET, то OUT = 1 (красный)
Если истекшее время (после нажатия на кнопку "опросить датчики") меньше, чем время WAIT_TIME , то OUT = 2 (серый) и тд

2) как присовоить тегу (или локальной переменной) значение, в зависимости от того, на какой индикатор нажали мышкой?
У каждого контрола есть свойство ControlIndex, он статичный и инкрементируется с добавлением нового контрола на Front panel. Но как сделать выбор межлу этими ControlIndex в зависимости от того, какой LED нажат последним? Плюс еще LED реализован "с залипанием", то есть не сбросится сам, пока не нажмешь его второй раз. А здесь нужно, чтобы нажатие на один LED, автоматически сбрасывало вноль все другие, то есть чтобы одновременно был TRUE только один LED control

Заранее большое спасибо за любые идеи!
Вложения
Index.png
Изменение цвета - но только для одного контрола((
Изменение цвета - но только для одного контрола((
Artem.spb

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

Re: Как менять один тэг (variable) по нажатию на разные cont

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

Зачем насиловать себя и булевские индикаторы?
Вам не нужно 6 цветов, а вы пытаетесь это реализовать.
Есть color box, с его помощью и организуйте цветовую индикацию

и я не понял прикола реками делать сотню индикаторов. Сделайте массив и жизнь станет проще.
Аватара пользователя
dadreamer

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

Re: Как менять один тэг (variable) по нажатию на разные cont

Сообщение dadreamer »

Simatic писал(а):Плюс еще LED реализован "с залипанием", то есть не сбросится сам, пока не нажмешь его второй раз. А здесь нужно, чтобы нажатие на один LED, автоматически сбрасывало вноль все другие, то есть чтобы одновременно был TRUE только один LED control
Может, тогда подойдёт Radio Group? В нём можно заменить переключатели на кнопки или Boolean-индикаторы.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»