Всем привет!
возник такой затык при освоении 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
Заранее большое спасибо за любые идеи!
Как менять один тэг (variable) по нажатию на разные control
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Как менять один тэг (variable) по нажатию на разные cont
Зачем насиловать себя и булевские индикаторы?
Вам не нужно 6 цветов, а вы пытаетесь это реализовать.
Есть color box, с его помощью и организуйте цветовую индикацию
и я не понял прикола реками делать сотню индикаторов. Сделайте массив и жизнь станет проще.
Вам не нужно 6 цветов, а вы пытаетесь это реализовать.
Есть color box, с его помощью и организуйте цветовую индикацию
и я не понял прикола реками делать сотню индикаторов. Сделайте массив и жизнь станет проще.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как менять один тэг (variable) по нажатию на разные cont
Может, тогда подойдёт Radio Group? В нём можно заменить переключатели на кнопки или Boolean-индикаторы.Simatic писал(а):Плюс еще LED реализован "с залипанием", то есть не сбросится сам, пока не нажмешь его второй раз. А здесь нужно, чтобы нажатие на один LED, автоматически сбрасывало вноль все другие, то есть чтобы одновременно был TRUE только один LED control
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение