Стенд проверки АКБ

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Ответить
Артемий
interested
interested
Сообщения: 8
Зарегистрирован: 20 июн 2012, 13:00
Версия LabVIEW: 11
Контактная информация:

Стенд проверки АКБ

Сообщение Артемий »

Здравствуйте уважаемые разработчики.
Работаю с лабвью около года. Разрабатываю стендовое оборудование для проверки различных плат производимых у нас приборов(мед. оборудование). Стенд представляет собой железо+лабвьюшный софт. Фактически, железо обладает всем функционалом. Моя задача правильно организовать последовательность управления и контроль необходимых параметров получаемых от железа.

Первым моим стендом год назад был стенд входного контроля емкости акумуляторных батарей.
Стенд представляет собой набор из 10-и последовательно подключеных плат(модулей) каждая из которых заряжает-разряжает заданым током одну батарею, прорисовывая при этом кривую разряда рассчитывая при этом отобранную акумуляторную емкость. Не имея никакого багажа знаний год назад я глупо организовал эту програму структурой Flat Sequence и последовательно опрашивал каждый из 10-и модулей. Стенд хоть и криво но успешно работает уже год. Сейчас обладая кое-какими занниями о разрелкмированных шаблонах и конечных автоматах пишу уже более сносные и красивые програмы, но все стенды у меня представляют набор плат и устройств с которыми я общаюсь посредством ЛВ для проверки одновременно только !!одной!! конкретной платы. Сейчас хотелось бы организовать мой первый стенд (проверки акумуляторов) более грамотно поскольку сейчас возможность расширить его хотя бы до 20-и модулей проверки фактически нереально.

Задача состиот в следующем. Необходимо оранизовать опрос и управление модулями, причем их количество задается при включении програмы(связь организована по интерфесу MODBUS, тоесть каждый из модулей отличается от другого только адресом, все регистры с данными одинаковые у каждого модуля). От каждого модуля необходимо получать набор данных: текущее напряжение батареи, текущий ток заряда/разряда, текущая отобранная емкость, и т п. При этом кривую напряжения в процессе разряда от каждого модуля необходимо прорисовывать на графике. Прорисовка кривой у каждого модуля начинается после полного заряда акумулятора (в разные моменты времени в зависимости от начального заряда акумулятора). Для контроля текущего этапа тестирования есть специальный регистр, тоесть я знаю когда начинать прорисовку и расчет емкости.

Вопрос: Каким образом можно организовать управление и опрос модулей, не зная заранее сколько их(задавать при запуске програмы, например списком адресов по которым обращаться). Проще говоря как динамически создать на экране некое заданое количество панелей управления модулями (для каждого модуля это: график, кнопка рестарта теста, кнопка установки разрядного тока и т п, индикатор отобранной емкости, булевая лампочка прошел-не прошел тест). Напомню ранее это было 10 Flat Sequenc-ов на блок диаграме и 10 вкладок System Tab на передней панеле.
Есть предположение реализовать это методом обьектно-ориентированого програмирования, тоесть создать класс "Модуль" с соответствующими данными и методами, а потом создавать обьекты этого класса. Но каким образом тогда динамически вывести на экран много панелей управления каждым из модулей, и чтоб каждая панель упавления была привязана к конкретному MODBUS адресу модуля? При этом еще и паралельно их опрашивать и управлять (команда рестарт, задать ток разряда и т п)

Пытался описать более менее понятно. Надеюсь, что Вы подскажете мне общую суть реализации такого алгоритма.

Заранее благодарен за любую подсказку.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Стенд проверки АКБ

Сообщение IvanLis »

Используйте модель программирования "конечный автомат"

Если выполняются одинаковые действия для всех модулей, а модули различаются только адресом....
я бы организовал массив адресов модулей и все операции/протоколирование выполнял в цикле с автоиндексированием, таким образом мы можем сделать их бесконечно много

Отображать одновременно информацию о всех модулях я бы не стал, а сделал бы отображение только для одного из них по выбору.
Артемий
interested
interested
Сообщения: 8
Зарегистрирован: 20 июн 2012, 13:00
Версия LabVIEW: 11
Контактная информация:

Re: Стенд проверки АКБ

Сообщение Артемий »

Иван, спасибо за ответ и за то что Вы попытались разобраться. Я тоже думал про структуру FOR Loop в основном цыкле конечного автомата с индекированным входным массивом адрессов и одним кластером данных в качестве индикатора (напряжение, текущая емкость и т п). Тогда в процессе тестирования мы забундливаем в этот кластер нужные данные. Но мне крайне важно отображать информацию от всех модулей по нескольким причинам:
1-ая. При наличии большого количества модулей (допустим 50) в стенде, инженер после теста должен сразу оценить всю картину результатов. А не перещелкивать все элементы массива кластеров.
2-ая. Прорисовка кривой разряда (важный параметр для оценки качества батареи). Кривая от каждого модуля должна быть на отдельном графике. Данные то надо хранить о каждой точке кривой от каждого модуля. Тот вариант что вы предлагаете подразумевает прорисовку только того модуля который мы выводим на экран в даный момент. Данные о другом модуле не прорисовываются и не сохраняются нигде. В моем предыдущем испольнении на 10-вкладках было 10-индикаторов и все точки кривой от каждого модуля сохранялись на своем индикаторе.
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Стенд проверки АКБ

Сообщение Михаил23 »

Вот мне кажется можно воспользоваться эти тулкитом https://decibel.ni.com/content/docs/DOC-21668.
Там есть динамический таб. Который позволяет пользователю создавать вкладку на которой будет отображена некоторая лицевая панель другого :vi: . А в этом :vi: Вы уже можете просто менять адрес модуля.
Артемий
interested
interested
Сообщения: 8
Зарегистрирован: 20 июн 2012, 13:00
Версия LabVIEW: 11
Контактная информация:

Re: Стенд проверки АКБ

Сообщение Артемий »

Михаил спасибо. Посмотрю обязательно... Потом отпишу что вышло.
А как насчет обьектно ориентированого програмирования средствами ЛабВью? Создать класс, потом много обьектов. Просто мне так кажется оно как раз создано для решения такого рода вопросов. Но к сожалению информации по ООП в ЛАбВью очень мало и она очень общая.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Стенд проверки АКБ

Сообщение IvanLis »

это чисто мое мнение, но
Артемий писал(а):1-ая. При наличии большого количества модулей (допустим 50) в стенде, инженер после теста должен сразу оценить всю картину результатов. А не перещелкивать все элементы массива кластеров.
немного касался эргономики, там есть показатели скорость поиска информации, реакции и ошибки (Требования к интерфейсу)
при 50 графиках, будет путаница, оператор даже сразу не сможет определить, какой номер графика смотрит
так что лучше их контролировать, а в случае аномальных результатов, выдавать сигнализацию/предупреждение, что бы привлечь внимание оператора

Артемий писал(а):Кривая от каждого модуля должна быть на отдельном графике. Данные то надо хранить о каждой точке кривой от каждого модуля. Тот вариант что вы предлагаете подразумевает прорисовку только того модуля который мы выводим на экран в даный момент. Данные о другом модуле не прорисовываются и не сохраняются нигде.
а кто сказал, что они нигде не сохраняются? они как раз сохраняются и документируются и при необходимости их можно будет просмотреть
Артемий
interested
interested
Сообщения: 8
Зарегистрирован: 20 июн 2012, 13:00
Версия LabVIEW: 11
Контактная информация:

Re: Стенд проверки АКБ

Сообщение Артемий »

Иван, я согласен с вами по поводу путаницы при большом количестве графиков. Именно поэтому они у меня были разнесены по вкладкам.
Отдельной таблицой было некоторое количество лампочек (10 штук в старом стенде). Инженер посмотрел в таблицу и понял 9-ая лампочка сигнализирует о проблеме. Открыл 9-ую вкладку с развернутой информацией. В прикрепленной картинке интерфейс старого стенда. Так вот вкладки должны создаваться динамически и элементы таблицы тоже... Я подозреваю что решение Михаила это как раз то что мне надо. Хотя пока еще не смотрел.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Стенд проверки АКБ

Сообщение IvanLis »

Артемий писал(а):Отдельной таблицой было некоторое количество лампочек (10 штук в старом стенде). Инженер посмотрел в таблицу и понял 9-ая лампочка сигнализирует о проблеме. Открыл 9-ую вкладку с развернутой информацией...
:dntknw: а какая разница, открыл вкладку или подгрузил данные
он то их все равно по запросу наблюдает

но хозяин-барин
Артемий
interested
interested
Сообщения: 8
Зарегистрирован: 20 июн 2012, 13:00
Версия LabVIEW: 11
Контактная информация:

Re: Стенд проверки АКБ

Сообщение Артемий »

Картинка:
Вложения
Интерфейс
Интерфейс
Артемий
interested
interested
Сообщения: 8
Зарегистрирован: 20 июн 2012, 13:00
Версия LabVIEW: 11
Контактная информация:

Re: Стенд проверки АКБ

Сообщение Артемий »

Разница в том, что не надо переклацывать. Оценил одним взглядом таблицу кратких результатов и пошел дальше. Меньше действий.
Тоесть динамически создавать элементы и привязывать их к адресам модуля все равно надо, но как? в этом и вопрос.
Ответить

Вернуться в «Модели программирования»