Стенд проверки АКБ
-
- interested
- Сообщения: 8
- Зарегистрирован: 20 июн 2012, 13:00
- Версия LabVIEW: 11
- Контактная информация:
Стенд проверки АКБ
Здравствуйте уважаемые разработчики.
Работаю с лабвью около года. Разрабатываю стендовое оборудование для проверки различных плат производимых у нас приборов(мед. оборудование). Стенд представляет собой железо+лабвьюшный софт. Фактически, железо обладает всем функционалом. Моя задача правильно организовать последовательность управления и контроль необходимых параметров получаемых от железа.
Первым моим стендом год назад был стенд входного контроля емкости акумуляторных батарей.
Стенд представляет собой набор из 10-и последовательно подключеных плат(модулей) каждая из которых заряжает-разряжает заданым током одну батарею, прорисовывая при этом кривую разряда рассчитывая при этом отобранную акумуляторную емкость. Не имея никакого багажа знаний год назад я глупо организовал эту програму структурой Flat Sequence и последовательно опрашивал каждый из 10-и модулей. Стенд хоть и криво но успешно работает уже год. Сейчас обладая кое-какими занниями о разрелкмированных шаблонах и конечных автоматах пишу уже более сносные и красивые програмы, но все стенды у меня представляют набор плат и устройств с которыми я общаюсь посредством ЛВ для проверки одновременно только !!одной!! конкретной платы. Сейчас хотелось бы организовать мой первый стенд (проверки акумуляторов) более грамотно поскольку сейчас возможность расширить его хотя бы до 20-и модулей проверки фактически нереально.
Задача состиот в следующем. Необходимо оранизовать опрос и управление модулями, причем их количество задается при включении програмы(связь организована по интерфесу MODBUS, тоесть каждый из модулей отличается от другого только адресом, все регистры с данными одинаковые у каждого модуля). От каждого модуля необходимо получать набор данных: текущее напряжение батареи, текущий ток заряда/разряда, текущая отобранная емкость, и т п. При этом кривую напряжения в процессе разряда от каждого модуля необходимо прорисовывать на графике. Прорисовка кривой у каждого модуля начинается после полного заряда акумулятора (в разные моменты времени в зависимости от начального заряда акумулятора). Для контроля текущего этапа тестирования есть специальный регистр, тоесть я знаю когда начинать прорисовку и расчет емкости.
Вопрос: Каким образом можно организовать управление и опрос модулей, не зная заранее сколько их(задавать при запуске програмы, например списком адресов по которым обращаться). Проще говоря как динамически создать на экране некое заданое количество панелей управления модулями (для каждого модуля это: график, кнопка рестарта теста, кнопка установки разрядного тока и т п, индикатор отобранной емкости, булевая лампочка прошел-не прошел тест). Напомню ранее это было 10 Flat Sequenc-ов на блок диаграме и 10 вкладок System Tab на передней панеле.
Есть предположение реализовать это методом обьектно-ориентированого програмирования, тоесть создать класс "Модуль" с соответствующими данными и методами, а потом создавать обьекты этого класса. Но каким образом тогда динамически вывести на экран много панелей управления каждым из модулей, и чтоб каждая панель упавления была привязана к конкретному MODBUS адресу модуля? При этом еще и паралельно их опрашивать и управлять (команда рестарт, задать ток разряда и т п)
Пытался описать более менее понятно. Надеюсь, что Вы подскажете мне общую суть реализации такого алгоритма.
Заранее благодарен за любую подсказку.
Работаю с лабвью около года. Разрабатываю стендовое оборудование для проверки различных плат производимых у нас приборов(мед. оборудование). Стенд представляет собой железо+лабвьюшный софт. Фактически, железо обладает всем функционалом. Моя задача правильно организовать последовательность управления и контроль необходимых параметров получаемых от железа.
Первым моим стендом год назад был стенд входного контроля емкости акумуляторных батарей.
Стенд представляет собой набор из 10-и последовательно подключеных плат(модулей) каждая из которых заряжает-разряжает заданым током одну батарею, прорисовывая при этом кривую разряда рассчитывая при этом отобранную акумуляторную емкость. Не имея никакого багажа знаний год назад я глупо организовал эту програму структурой Flat Sequence и последовательно опрашивал каждый из 10-и модулей. Стенд хоть и криво но успешно работает уже год. Сейчас обладая кое-какими занниями о разрелкмированных шаблонах и конечных автоматах пишу уже более сносные и красивые програмы, но все стенды у меня представляют набор плат и устройств с которыми я общаюсь посредством ЛВ для проверки одновременно только !!одной!! конкретной платы. Сейчас хотелось бы организовать мой первый стенд (проверки акумуляторов) более грамотно поскольку сейчас возможность расширить его хотя бы до 20-и модулей проверки фактически нереально.
Задача состиот в следующем. Необходимо оранизовать опрос и управление модулями, причем их количество задается при включении програмы(связь организована по интерфесу MODBUS, тоесть каждый из модулей отличается от другого только адресом, все регистры с данными одинаковые у каждого модуля). От каждого модуля необходимо получать набор данных: текущее напряжение батареи, текущий ток заряда/разряда, текущая отобранная емкость, и т п. При этом кривую напряжения в процессе разряда от каждого модуля необходимо прорисовывать на графике. Прорисовка кривой у каждого модуля начинается после полного заряда акумулятора (в разные моменты времени в зависимости от начального заряда акумулятора). Для контроля текущего этапа тестирования есть специальный регистр, тоесть я знаю когда начинать прорисовку и расчет емкости.
Вопрос: Каким образом можно организовать управление и опрос модулей, не зная заранее сколько их(задавать при запуске програмы, например списком адресов по которым обращаться). Проще говоря как динамически создать на экране некое заданое количество панелей управления модулями (для каждого модуля это: график, кнопка рестарта теста, кнопка установки разрядного тока и т п, индикатор отобранной емкости, булевая лампочка прошел-не прошел тест). Напомню ранее это было 10 Flat Sequenc-ов на блок диаграме и 10 вкладок System Tab на передней панеле.
Есть предположение реализовать это методом обьектно-ориентированого програмирования, тоесть создать класс "Модуль" с соответствующими данными и методами, а потом создавать обьекты этого класса. Но каким образом тогда динамически вывести на экран много панелей управления каждым из модулей, и чтоб каждая панель упавления была привязана к конкретному MODBUS адресу модуля? При этом еще и паралельно их опрашивать и управлять (команда рестарт, задать ток разряда и т п)
Пытался описать более менее понятно. Надеюсь, что Вы подскажете мне общую суть реализации такого алгоритма.
Заранее благодарен за любую подсказку.
-
IvanLis
- guru
- Сообщения: 5464
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Стенд проверки АКБ
Используйте модель программирования "конечный автомат"
Если выполняются одинаковые действия для всех модулей, а модули различаются только адресом....
я бы организовал массив адресов модулей и все операции/протоколирование выполнял в цикле с автоиндексированием, таким образом мы можем сделать их бесконечно много
Отображать одновременно информацию о всех модулях я бы не стал, а сделал бы отображение только для одного из них по выбору.
Если выполняются одинаковые действия для всех модулей, а модули различаются только адресом....
я бы организовал массив адресов модулей и все операции/протоколирование выполнял в цикле с автоиндексированием, таким образом мы можем сделать их бесконечно много
Отображать одновременно информацию о всех модулях я бы не стал, а сделал бы отображение только для одного из них по выбору.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 8
- Зарегистрирован: 20 июн 2012, 13:00
- Версия LabVIEW: 11
- Контактная информация:
Re: Стенд проверки АКБ
Иван, спасибо за ответ и за то что Вы попытались разобраться. Я тоже думал про структуру FOR Loop в основном цыкле конечного автомата с индекированным входным массивом адрессов и одним кластером данных в качестве индикатора (напряжение, текущая емкость и т п). Тогда в процессе тестирования мы забундливаем в этот кластер нужные данные. Но мне крайне важно отображать информацию от всех модулей по нескольким причинам:
1-ая. При наличии большого количества модулей (допустим 50) в стенде, инженер после теста должен сразу оценить всю картину результатов. А не перещелкивать все элементы массива кластеров.
2-ая. Прорисовка кривой разряда (важный параметр для оценки качества батареи). Кривая от каждого модуля должна быть на отдельном графике. Данные то надо хранить о каждой точке кривой от каждого модуля. Тот вариант что вы предлагаете подразумевает прорисовку только того модуля который мы выводим на экран в даный момент. Данные о другом модуле не прорисовываются и не сохраняются нигде. В моем предыдущем испольнении на 10-вкладках было 10-индикаторов и все точки кривой от каждого модуля сохранялись на своем индикаторе.
1-ая. При наличии большого количества модулей (допустим 50) в стенде, инженер после теста должен сразу оценить всю картину результатов. А не перещелкивать все элементы массива кластеров.
2-ая. Прорисовка кривой разряда (важный параметр для оценки качества батареи). Кривая от каждого модуля должна быть на отдельном графике. Данные то надо хранить о каждой точке кривой от каждого модуля. Тот вариант что вы предлагаете подразумевает прорисовку только того модуля который мы выводим на экран в даный момент. Данные о другом модуле не прорисовываются и не сохраняются нигде. В моем предыдущем испольнении на 10-вкладках было 10-индикаторов и все точки кривой от каждого модуля сохранялись на своем индикаторе.
- Михаил23
- adviser
- Сообщения: 219
- Зарегистрирован: 24 ноя 2008, 17:58
- Версия LabVIEW: 2009
- Откуда: Москва
Re: Стенд проверки АКБ
Вот мне кажется можно воспользоваться эти тулкитом https://decibel.ni.com/content/docs/DOC-21668.
Там есть динамический таб. Который позволяет пользователю создавать вкладку на которой будет отображена некоторая лицевая панель другого . А в этом Вы уже можете просто менять адрес модуля.
Там есть динамический таб. Который позволяет пользователю создавать вкладку на которой будет отображена некоторая лицевая панель другого . А в этом Вы уже можете просто менять адрес модуля.
-
- interested
- Сообщения: 8
- Зарегистрирован: 20 июн 2012, 13:00
- Версия LabVIEW: 11
- Контактная информация:
Re: Стенд проверки АКБ
Михаил спасибо. Посмотрю обязательно... Потом отпишу что вышло.
А как насчет обьектно ориентированого програмирования средствами ЛабВью? Создать класс, потом много обьектов. Просто мне так кажется оно как раз создано для решения такого рода вопросов. Но к сожалению информации по ООП в ЛАбВью очень мало и она очень общая.
А как насчет обьектно ориентированого програмирования средствами ЛабВью? Создать класс, потом много обьектов. Просто мне так кажется оно как раз создано для решения такого рода вопросов. Но к сожалению информации по ООП в ЛАбВью очень мало и она очень общая.
-
IvanLis
- guru
- Сообщения: 5464
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Стенд проверки АКБ
это чисто мое мнение, но
при 50 графиках, будет путаница, оператор даже сразу не сможет определить, какой номер графика смотрит
так что лучше их контролировать, а в случае аномальных результатов, выдавать сигнализацию/предупреждение, что бы привлечь внимание оператора
немного касался эргономики, там есть показатели скорость поиска информации, реакции и ошибки (Требования к интерфейсу)Артемий писал(а):1-ая. При наличии большого количества модулей (допустим 50) в стенде, инженер после теста должен сразу оценить всю картину результатов. А не перещелкивать все элементы массива кластеров.
при 50 графиках, будет путаница, оператор даже сразу не сможет определить, какой номер графика смотрит
так что лучше их контролировать, а в случае аномальных результатов, выдавать сигнализацию/предупреждение, что бы привлечь внимание оператора
а кто сказал, что они нигде не сохраняются? они как раз сохраняются и документируются и при необходимости их можно будет просмотретьАртемий писал(а):Кривая от каждого модуля должна быть на отдельном графике. Данные то надо хранить о каждой точке кривой от каждого модуля. Тот вариант что вы предлагаете подразумевает прорисовку только того модуля который мы выводим на экран в даный момент. Данные о другом модуле не прорисовываются и не сохраняются нигде.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 8
- Зарегистрирован: 20 июн 2012, 13:00
- Версия LabVIEW: 11
- Контактная информация:
Re: Стенд проверки АКБ
Иван, я согласен с вами по поводу путаницы при большом количестве графиков. Именно поэтому они у меня были разнесены по вкладкам.
Отдельной таблицой было некоторое количество лампочек (10 штук в старом стенде). Инженер посмотрел в таблицу и понял 9-ая лампочка сигнализирует о проблеме. Открыл 9-ую вкладку с развернутой информацией. В прикрепленной картинке интерфейс старого стенда. Так вот вкладки должны создаваться динамически и элементы таблицы тоже... Я подозреваю что решение Михаила это как раз то что мне надо. Хотя пока еще не смотрел.
Отдельной таблицой было некоторое количество лампочек (10 штук в старом стенде). Инженер посмотрел в таблицу и понял 9-ая лампочка сигнализирует о проблеме. Открыл 9-ую вкладку с развернутой информацией. В прикрепленной картинке интерфейс старого стенда. Так вот вкладки должны создаваться динамически и элементы таблицы тоже... Я подозреваю что решение Михаила это как раз то что мне надо. Хотя пока еще не смотрел.
-
IvanLis
- guru
- Сообщения: 5464
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Стенд проверки АКБ
а какая разница, открыл вкладку или подгрузил данныеАртемий писал(а):Отдельной таблицой было некоторое количество лампочек (10 штук в старом стенде). Инженер посмотрел в таблицу и понял 9-ая лампочка сигнализирует о проблеме. Открыл 9-ую вкладку с развернутой информацией...
он то их все равно по запросу наблюдает
но хозяин-барин
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 8
- Зарегистрирован: 20 июн 2012, 13:00
- Версия LabVIEW: 11
- Контактная информация:
Re: Стенд проверки АКБ
Разница в том, что не надо переклацывать. Оценил одним взглядом таблицу кратких результатов и пошел дальше. Меньше действий.
Тоесть динамически создавать элементы и привязывать их к адресам модуля все равно надо, но как? в этом и вопрос.
Тоесть динамически создавать элементы и привязывать их к адресам модуля все равно надо, но как? в этом и вопрос.