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

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума

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

Postby Simatic on 19 Dec 2017, 13:15

Всем привет!
возник такой затык при освоении 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

Заранее большое спасибо за любые идеи!
Attachments
Index.png
Change_colour.png
Изменение цвета - но только для одного контрола((
Simatic
interested
interested
 
Posts: 1
Joined: 19 Dec 2017, 11:01
LabVIEW Version: 2016
Karma: 0

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

Postby Artem.spb on 19 Dec 2017, 15:16

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

и я не понял прикола реками делать сотню индикаторов. Сделайте массив и жизнь станет проще.
Artem.spb
expert
expert
 
Posts: 1428
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 246
CLD hardware I/O VIP freelance

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

Postby dadreamer on 19 Dec 2017, 16:31

Simatic wrote:Плюс еще LED реализован "с залипанием", то есть не сбросится сам, пока не нажмешь его второй раз. А здесь нужно, чтобы нажатие на один LED, автоматически сбрасывало вноль все другие, то есть чтобы одновременно был TRUE только один LED control

Может, тогда подойдёт Radio Group? В нём можно заменить переключатели на кнопки или Boolean-индикаторы.
User avatar
dadreamer
professor
professor
 
Posts: 3150
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 802
I/O VIP vision internet


Return to Общие

Who is online

Users browsing this forum: Google and 7 guests

cron