Страница 1 из 1

Создание таблицы с заданием изменения скоростей

Добавлено: 18 авг 2019, 00:53
metrim
Здравствуйте
Только начал осваивать LabView + с програмированием у меня всегда было не очень то.
Мне нужно сделать интерфейс хроматографической программы.
Одной из необходимых функций и элементов является наличие нескольких временных сегментов, в которые изменяется некая константа.
Например:
с 0 по 5 минут скорость работы насоса 3 (условно)
с 5 до 10 - 4
с 10 до 25 -9
и т.д.
При этом при разных условиях работы прибора эти значения (и временные отрезки и "константы" в них - могут изменяться)

В существующих хроматографических программах эти свойства реализованы в виде поля со списком, в котором можно добавлять-удалять строки. Мне нужно нечто аналогичное.
Каким элементом управления в LV это реализовано и каким наиболее простым способом можно данные констант извлекать из этого поля, если скажем у меня в программе идет счетчик времени и нужно знать: с какой скоростью в тот или иной момент должен работать насос.
Проблема в том, что я даже не знаю как называется то что мне требуется.

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 19 авг 2019, 17:41
IvanLis
Готовых инструментов для решения этой задачи в :labview: нет.
Необходимо будет с "0" создавать все необходимые функции.

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 02:26
metrim
Неужели действительно нет готовых разработок ??
Даже находятся гуглением древние правда проекты Chromatography toolkits for labview, есть несколько не очень внятных статей, без подробного описания, но конов там вероятно не найти....

Наверняка я не первый пытаюсь решить данную задачу. По идее отдельные части "прибора" более-менее понятны, но вот как сделать список со значениями по времени, в соответствии с которыми будет изменяться режим работы перефирии - понять не могу ....

Визуально похоже на то что нужно окошко Real matrix, там табличка прокручивающаяся в которой можно как бы изменять кол-во строк в соответствии со сложностью необходимой программы, но вот как заставить алгоритм брать оттуда построчно в зависимости от времени значения - ......

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 10:10
ujin
Ближайший инструмент к вашей задаче Statechart Module
http://www.ni.com/tutorial/7425/en/
Меня данный модуль не устроил, так как нет как раз задания времени шага и сам Statechart Module не поддерживается в Linux версии.
Поэтому делал аналог SFC по образу алгоблоков ЭТП, ШАГ старого контроллера ремиконт Р-130.
Сам подход использован от:
Шалыто А.А. Switch-технология. Алгоритмизация и программирование задач логического управления
(СПб.: Наука,1998. 628 с.
УДК 681.3.06:62-507)
Немного теории (было подготовлено для другого производителя). Блок этап от ремиконта Р-130
Образец программы пуска обычного насоса с использованием этого подхода. Можно добавить шагов и переключателя скоростей на выходе.

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 10:32
ladik
Вот Вам простейший example логики работы Вашего примера.
Например:
с 0 по 5 минут скорость работы насоса 3 (условно)
с 5 до 10 - 4
с 10 до 25 -9
и т.д.
В таблицу заносим длительность периода и скорость работы чего-либо (в данном случае -- это задержка работы цикла и соответственно частота моргания индикатора Action). В цикле, если длительность текущего периода больше той, что требуется, заносим в сдвиговый регистр новое значение периода и снова проверяем, и так, пока не достигнем конца массива. Надеюсь, это прибавит Вам понимания того куда нужно двигаться.

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 15:21
metrim
ujin писал(а):Ближайший инструмент к вашей задаче Statechart Module
http://www.ni.com/tutorial/7425/en/
Я по данной ссылке страницу прокрутил и что то на картинках ничего под свои потребности как то не обнаружил :(
Меня данный модуль не устроил, так как нет как раз задания времени шага и сам Statechart Module не поддерживается в Linux версии.
Ну у меня задача пока что для под винду
Поэтому делал аналог SFC по образу алгоблоков ЭТП, ШАГ старого контроллера ремиконт Р-130.
Сам подход использован от:
Шалыто А.А. Switch-технология. Алгоритмизация и программирование задач логического управления
(СПб.: Наука,1998. 628 с.
УДК 681.3.06:62-507)
Немного теории (было подготовлено для другого производителя). Блок этап от ремиконта Р-130
Образец программы пуска обычного насоса с использованием этого подхода. Можно добавить шагов и переключателя скоростей на выходе.
Ну мне к счастью не нужно столь далеко копать. У меня есть старые хроматографические насосы ,к которым есть документация, есть модуль управления ими, есть описание коммутационных сигналов. Я просто в основном хочу заменить родной контрольный модуль сопряжением с ПК. Насосам я буду давать управляющие команды с ардуинок. (два насоса, две ардуины). Это как бы все понятно как реализовать, постепенно допиливаю скетчи.
Теперь надо решить задачу синхронного изменения скооростей насосов. Дело в том, что если по простому - есть насос А, есть насос В , сумарный поток - скажем 1 мл/мин (или 5 или 10, в зависимости от задачи) на старте 100% раствора должна давать помпа А, а насос В - 0% и плавно, скажем за полчаса или час они должны смениться через 99%/1%... 90%/10% ..... 50/50 ..... до 100% на насосе В. Чем плавнее это делать - тем лучше.
Проблема в том, что нельзя "жестко записать "переход с 0 до 100 за 30минут", т.к. задачи меняются. Могут быть вообще варианты когда за 5 минут нужно от 0 до 30% канал В довести, а потом , в течении часа плавно повышать от 30 до 40, а потом опять быстро за 10 минут до 100% В. Для этого нужна гибко настраиваемая программа-таблица. Как её реализовывать - в принципе не принципиально. Можно хоть текстовой файл, из которого подгружать условия программу изменений.

Ну и после того , как разберусь с насосами - в программу нужно будет завести сигналы с детекторов, но это к счастью уже более понятный ход, там просто читать с помощью ардуино вольтах на входах и писать их в лабвью, записывая в файл данных и выводя на какой нибудь наиболее гибкий 2Д график.

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 15:36
metrim
ladik писал(а):Вот Вам простейший example логики работы Вашего примера.

В таблицу заносим длительность периода и скорость работы чего-либо (в данном случае -- это задержка работы цикла и соответственно частота моргания индикатора Action). В цикле, если длительность текущего периода больше той, что требуется, заносим в сдвиговый регистр новое значение периода и снова проверяем, и так, пока не достигнем конца массива. Надеюсь, это прибавит Вам понимания того куда нужно двигаться.
Спасибо!!
Внешне похоже на то что мне нужно! Только почему то у меня не открывается блок-диаграма программы, что бы взглянуть на внутреннюю организацию программы и разобраться.
Ну и разумеется мне нужен не "ступенчатый градиент" (как в хроматографии именовалось бы предложенное вами исполнение), а несколько более сложный вариант, когда запись условий
0 минут - 0%
5 минут - 20%
означала бы не то что с 0 до 5 минут должен быть поток 0% , а с 0 до 5 минут должен быть плавный переход от 0 до 20%
Т.е. каждую секунду должно происходить изменение (20-0)%/(300-0)сек = 0,066%сек. Это рассчитанное "приращение" должно далее поступать в канал расчета реальных скоростей работы для насосов А и В и далее уже передаваться через ардуино самим насосам. Ну этот участок программы уже б.м. менее понятно как делать, а вот с расчетом градиента с помощью лабвью - это я как то вовсе буксую .

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 15:42
ujin
Можно еще посмотреть в библиотеке PID например PID Setpoint Profile, PID Output Rate Limiter

Re: Создание таблицы с заданием изменения скоростей

Добавлено: 20 авг 2019, 23:55
metrim
ujin писал(а):Можно еще посмотреть в библиотеке PID например PID Setpoint Profile, PID Output Rate Limiter
Да, это уже весьма похоже на то что нужно!
По трезвым азмышлениям можно таблицу ограничить десятком переключений в градиенте, очень редко нужны более сложные градиенты.