Jump to content

    
alexvu

Какую выбрать программу для визуализации данных от контроллера с сом-порта?

Recommended Posts

Здравствуйте. Посоветуйте готовую программу для решения подобной задачи.

Делаю несложный контроллер на ардуино с ПИД-регуляторами (пока для своего дома), и хочу посмотреть на компе виде графиков, как он работает, и записать лог.

Нужно несколько (штук 6-8) графиков (контроллер будет каждые 0.5с присылать строку чисел со знаком float и int в том формате, который я выберу.

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

Также желательно отмечать на графиках события, которые присылает контроллер в виде слов (например, если в строке присутствует слово CLOSED1 - то отображать какую-то метку на временной шкале). И это тоже должно попадать в лог.

Еще желательно менять и отправлять параметры в контроллер с этого же экрана.

Вот нашел такую разработку https://github.com/sebnil/RealtimePlotter

это на Processinge, с которым я не имел дела раньше.

Это хороший вариант для меня? Или есть что-то подобное, но более популярное  и удобное и которым все обычно пользуются? Хочется именно готовое решение, а не писать самому. Но в то же время с открытым кодом (хотя, если есть много настроек, это не обязательно).

 

Share this post


Link to post
Share on other sites

У всех разные требования, готовое не подходит и пишут свое. У меня нет текстовых меток и отправки параметров обратно, и не думаю в эту сторону.

 

https://sourceforge.net/projects/graph-plotter/

Edited by amaora

Share this post


Link to post
Share on other sites

Процессинг у меня не запустился на ноуте (видеокарта не поддерживает OpenGL 2)

Ваша программа запустилась (хотел попробовать), 

13 часов назад, amaora сказал:

но я не нашел по ней описания, какие данные присылать, как задавать цвета и названия графиков и т.д.

Share this post


Link to post
Share on other sites

Использую для подобного SerialPlot (последняя версия тут). Вроде почти всем пожеланиям должен удовлетворять, только:

 

16 часов назад, alexvu сказал:

Также желательно отмечать на графиках события, которые присылает контроллер в виде слов (например, если в строке присутствует слово CLOSED1 - то отображать какую-то метку на временной шкале).

я не пробовал, не уверен, что такое там есть.

Share this post


Link to post
Share on other sites
3 hours ago, alexvu said:

но я не нашел по ней описания, какие данные присылать, как задавать цвета и названия графиков и т.д.

Есть README.md и пример конфигурационного файла с описанием всех настроек. Так же можно запустить GP с единственным параметром именем файла и порта. Или можно выбрать файл нажав "O". Настройки порта программа не умеет, всегда работал с уже настроенным портом.

Пример CSV файла, заголовок с названиями параметров, единиц измерений и числовые данные. Такой файл можно открыть без настроек, и выбрать столбцы/оси/цвета уже в программе. Или вот пример моей конфигурации для real-time построения.

#!/home/amaora/util/gp
# vi: ft=conf

chunk 20

load 0 1200 text "/dev/rfcomm0"
mkpages -1

group 0 -1
deflabel 0 "Time (s)"
defscale 0 0.05 0

 

Share this post


Link to post
Share on other sites
1 час назад, arhiv6 сказал:

Использую для подобного SerialPlot

Спасибо, запустилась, завтра попробую в деле.

9 минут назад, amaora сказал:

Спасибо, попробую тоже. У Вас хорошо сделан просмотр мелких участков графика.

10 минут назад, amaora сказал:

Или можно выбрать файл нажав "O".

А что еще можно нажать?

Share this post


Link to post
Share on other sites
4 minutes ago, alexvu said:

А что еще можно нажать?

Клавиши назначены не на все действия. Посмотреть действия можно вызвав контекстное меню на каком-нибудь элементе, они подсвечиваются при наведении. Можно на заголовке сверху, на каждой оси, на легенде фигур. В каждом меню слева подписано если есть клавиша для этого действия. По большому списку меню есть нечёткий поиск (при открытом меню начинаем набирать текст, в меню останутся только совпадения), для тех у кого ~100+ графиков или файлов.

Share this post


Link to post
Share on other sites

Пишется на buildere или delfi за вечер с любыми извращениями.

Если не знаете builder или delfi это хороший повод их начать изучать, потребуются еще не раз.

Edited by whale

Share this post


Link to post
Share on other sites
5 часов назад, Herz сказал:

Здесь один известный ардуинщик, демонстрируя PID, выводит графики, похоже, средствами самого IDE.

Это вариант простейший и неудобный. Вот что я сразу увидел:

1) Графики отображаются в едином масштабе, т.е. если один принимает значения до 1000, то другие будут болтаться около 0. Можно, конечно, нормировать в самом контроллере, но зачем?

2) При запуске этого монитора контроллер ресетится, и это нельзя отключить. Т.е. нельзя в процессе запустить монитор и посмотреть графики.

3) Нельзя прокручивать и т.д. Ничего нельзя, в общем.

Share this post


Link to post
Share on other sites

На чём в итоге остановились? Сейчас озаботился аналогичной задачей.

24.04.2021 в 18:10, alexvu сказал:

Спасибо, запустилась, завтра попробую в деле.

Как впечатления?

Share this post


Link to post
Share on other sites

Я пытался сделать программу, которая могла бы удовлетворить практически все пожелания, но, пожалуй, экзотические пожелания вроде установки текстовых меток на график, не сумеет... Моей фантазии на такое попросту не хватило.

Share this post


Link to post
Share on other sites
9 часов назад, Herz сказал:

На чём в итоге остановились? Сейчас озаботился аналогичной задачей.

Вот эту использовал:

24.04.2021 в 16:14, arhiv6 сказал:

Использую для подобного SerialPlot (последняя версия тут).

Там простой интерфейс, она может автоматически опознавать количество графиков по строке чисел до символа конца строки, есть масштабирование каждого графика, просмотр с увеличением и т.д.

Записывает файл (я пока не пробовал).

И можно посылать текстовые команды контроллеру.

Регуляторы тем временем заработали как надо, и я пока к этой программе больше не возвращался и всех ее особенностей не знаю.

Share this post


Link to post
Share on other sites
12 часов назад, alexvu сказал:

Там простой интерфейс, она может автоматически опознавать количество графиков по строке чисел до символа конца строки, есть масштабирование каждого графика, просмотр с увеличением и т.д.

А мне она показалась даже менее удобной, чем встроенный в Ардуино Плоттер: если в Плоттер можно запросто передавать большие числа в формате ASCII посредством Serial.print() и он сам переводит их в десятичный вид, то с SerialPlot это не прокатывает: нужно пользоваться Serial.write() и выводить байты по одному. Учитывая, что в Ардуино-среде самый популярный формат - int, это становится каким-то абсурдом...

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

13 часов назад, alexvu сказал:

Регуляторы тем временем заработали как надо, и я пока к этой программе больше не возвращался и всех ее особенностей не знаю.

Если не секрет, какой алгоритм использовали? И чем управляли?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.