Как стать автором
Обновить

Одна программа для управления и регистрации данных с различных устройств

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.2K
Всего голосов 12: ↑12 и ↓0+17
Комментарии23

Комментарии 23

Как понимаю, программа не свободная? Может есть ещё какие альтернативы для SCPI?

Не свободная и даже не open source. Из альтернатив я пробовал Sigrok и PyVISA. Если добавлять поддержку нового устройства, то pyvisa сильно проще на мой взгляд.

Понял. Спасибо!

Когда потребовался похожий функционал я использовал Эксель и PLX-DAQ, возможно чото подобное есть в OpenOffice(LibreOffice WPS Office и т.д.).

Спасибо!

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

https://github.com/pavel212/uffi/blob/master/example/hp3458a.lua

А чтобы потом не поток циферок в консоли разглядывать, он в несколько строчек заворачивается в gnuplot для отображения графиков на лету.

И в совсем запущенных случаях если это кому-то на сторону для использования отдать надо примитивный гуй с полями ввода всяких параметров тоже в пару строк добавляется что-нибудь вроде https://www.tecgraf.puc-rio.br/iup/en/dlg/iupgetparam.html

Есть много способов решить эту задачу если умеешь писать код - я пробовал sigrok, (относительно несложно, но затратно по времени) и pyvisa (легко).

В случае Test Controller достаточно создать файл конфигурации - это медленнее чем с pyvisa, но из коробки появляется много возможностей, которые уже решили за тебя.

Да, но только возможности эти довольно ограничены, и если надо что-нибудь лишь чуть сложнее чем просто отображение циферки на экране, геморроя сразу вылезет гораздо больше.

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

Хотя казалось бы просто ещё пару команд (тех же scpi) отправить подвижке/нагревателю и опросить его статус.

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

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

мало того, в 95% случаев простого самописца без какого-либо гуя, который тупо в текстовый csv файл значения непрерывно пишет более чем достаточно.

но easimonenko про альтернативы спрашивал.

Я в свое время вообще пришел к тому, что для доступа к приборам наиболее гибко использовать простейшие утилиты командной строки, а все остальное делать с помощью bash скрипта, написанного под конкретную задачу. Например, надо снять характеристики какого-нибудь dc/dc - пишем скрипт, управляющий программируемым источником питания, электронной нагрузкой и мультиметром, результаты пишем в SQLite, а потом уже с помощью gnuplot строим какие нужно графики (зависимость выходного напряжения от входного, зависимость выходного напряжения от тока нагрузки и т.д.).

Если кому вдруг будет интересно:

https://github.com/Serge78rus/rd6006p - управление источником RD6006P

https://github.com/Serge78rus/vc8145 - общение с мультиметром VC8145

https://github.com/Serge78rus/scpi - управление приборами, поддерживающими SCPI (есть пример работы с электронной нагрузкой ET5410)

Заранее прошу извинить за недостаточную "вылизанность" программ - писалось наспех для удовлетворения сиюминутных потребностей по мере их возникновения

да, только я со временем вообще всё в lua перенёс.

и сами "драйвера" устройств стали проще, и логику работы приятнее описывать, чем на bash.

@Serge78rusваше оборудование заявлено как поддерживаемое в Test Controller - можете глянуть заработает ли оно без лишних телодвижений?

Ну не сегодня точно. Если удастся поиграться на этой неделе, то отпишусь о результатах.

Попробовал подключить RD6006P и сразу потребовались те самые "лишние телодвижения", о которых Вы спрашивали.

У меня источник RD6006P (идентификатор прибора 60065), а программа из коробки знает только RD6006 (идентификатор прибора 60062), RD6012 (идентификатор прибора 60121) и RD6018 (идентификатор прибора 60181). RD6006P - это вариант RD6006 с двойной стабилизацией (после импульсного стабилизатора стоит еще линейный). Отличается от RD6006 существенно меньшими пульсациями и разрешающей способностью установки и измерения напряжения и тока.

Ладно, дописал в файл RidenRD60xx.txt конфигурацию для RD6006P с нужным идентификатором прибора 60065. Источник начал опознаваться программой, но напряжение и ток показывает в 10 раз больше, чем надо. И если ток поправить оказалось довольно просто заменой значения для переменной CurrentScaleFactor с 1000 на 10000, то с напряжением все гораздо печальней - авторы файла RidenRD60xx.txt не удосужились завести для его масштабирования переменную, а жестко вбили в SCPI команды умножение и деление на 100 (а для RD6006P надо 1000), т.е. нужно завести переменную VoltageScaleFactor для всех распознаваемых типов приборов и в командах найти и заменить где надо 100 на эту переменную. На этом пока остановился, отложив на потом, когда появится необходимость или будет совсем уж нечем заняться.

Попутно похоже и с током нашел ошибку: в некоторых SCPI командах (в частности для чтения IOut) вместо переменной CurrentScaleFactor жестко прописано значение 100, т.е. эти значения будут корректными только для RD6012 и RD6018, а не для RD6006.

@Serge78rusспасибо что проверили. Не обратил внимание что у вас RD6006P а не RD6006 (точнее до сегодняшнего не был в курсе о существовании улучшенной версии).

А мультиметр и электронная нагрузка заработали без проблем или не проверяли?

VC8145 не заработал, пишет что таймаут. В конфигурационном файле для него в общем-то и менять нечего. Но, насколько я понял из конфигурационного файла, он если и заработает, то умеет читать только число с основного дисплея (это я и сам умею:)). Поскольку официальной документации протокола я не нашел, мне было бы интересно посмотреть, как читаются данные с дополнительного дисплея, но увы...

@Serge78rusкак написан "драйвер" для VC8145 можно глянуть в TestController.jar загрузив его через какой-либо декомпилятор для Java (например http://java-decompiler.github.io/). Начать стоит с "dk.hkj/devices/dk.hkj.devices.DeviceVC8145.class".

Отсутствие исходников не особо затрудняет анализ этой программы.

Спасибо! Это гораздо более полная информация, чем те обрывки, что мне удалось найти в свое время.

ET5410 заработал без видимых проблем, во всяком случае связь идет и текущие данные показывает. Естественно все не проверял, а надо бы (судя по косякам с коэффициентом для IOut у RD60xx)

Понял. Спасибо!

так включите системный "look and feel" пропертей, шо оно выглядит как чудо из начала 90-ых?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации