В данном тексте я выполнил обзор одного широко известного и распространенного мультиметра модели XDM1241.
У меня уже был текст про то как управлять лабораторным блоком питания. Теперь надо понять как управлять мультиметром.
Когда я был ВУЗовцем у нас был курс Advanced Electronic Tеchnique. Суть лабораторных работ была в том, чтобы взять электронную плату, придумать для нее авто‑тест, подключить всю измериловку (осциллограф, блок питания, DMM, генератор сигналов и прочее) к PC, написать скрипт, и протестировать электронную плату этим скриптом. Из 20 плат надо было выявить одну бажную. Я тогда тестировал генератор на таймере 555. Проверял амплитуду, частоту, скважность и прочее.
При тестировании электронных плат на производстве часто надо делать множество однообразных измерений напряжений. Например для проверки линейности ADC пинов на автомобильных ECU надо прочитать множество измерений на всем рабочем диапазоне. Чтобы исключить человеческий фактор надо автоматизировать данную рутинную задачу. Для этого надо как‑то заставить мультиметр работать по электрическим командам, нежели через кнопки на HMI. В связи с этим возникает следующая задача:
Постановка задачи
Научиться опрашивать DMM XDM1241 по последовательному порту. Научиться измерять напряжения без использования HMI на лицевой панели.
Какие команды надо отправлять на XDM1241 по последовательному COM порту, чтобы прибор выдавал в ответ напряжение на клеммах?
Аппаратная часть
Как можно заметить, с оборотной стороны прибора присутствует USB‑B разъём. Это для управления прибором. Надо соединить DMM и LapTop PC кабелем от принтера.
Управление буду производить по проводам (Drive‑by‑Wire). С обратной стороны заложен USB‑B штекер для соединения DMM и LapTop. Внутри себя прибор использует чип CH340.
Программная часть
При соединении DMM и LapTop PC принтерным кабелем в Windows появляется виртуальный последовательный порт. У меня выскочил COM11. При переключении через USB HUB стал COM4.
Битовая скорость последовательного порта задается через HMI кнопками Utility → Next → Serial. По умолчанию там применяется битовая скорость 115 200 бит в секунду.
Протокол SCPI
Для управления мультиметром XDM1241 по COM‑порту (без использования HMI), прибор использует стандартный протокол SCPI (Standard Commands for Programmable Instruments). Это очень старый протокол. SCPI — это текстовый протокол. По сути — CSV строки. Работает по принципу запрос‑ответ.
Каждый запрос должен заканчиваться байтом 0×0A. Это ASCII символ возврата каретки LF. Он же r. Ответ заканчивается байтами 0×0D 0×0A. Убедиться, что интерфейс живой можно при помощи утилиты HTerm.
Перед Вами система команд для управления прибором. В принципе, этого должно быть достаточно для 99% задач.
|
Запрос |
Ответ |
Пояснение |
|
*IDN? |
OWON,XDM1241,xxxxxxxx,V4.1.0,3 |
Получение информации о приборе |
|
CONF:VOLT:DC AUTO |
ничего |
Переключиться на режим измерения напряжений постоянного тока |
|
CONF:CURR:DC |
ничего |
Переключиться на режим измерения силы постоянного тока |
|
CONF:CAP |
ничего |
Переключиться на режим измерения ёмкости конденсатора |
|
CONF:FREQ |
ничего |
Переключиться на режим измерения частоты |
|
CONF:RES |
ничего |
Переключиться на режим измерения сопротивления |
|
CONF:TEMP |
ничего |
Переключиться на режим измерения температуры |
|
*RST |
ничего |
Перезагрузка прибора |
|
MEAS? |
-4.008602E-05 |
прочитать напряжение |
|
MEAS? |
1.197084E+01 |
прочитать напряжение |
|
MEAS1? |
1.197065E+01 |
Запрос значения на основном |
|
FUNC? |
«VOLT» или «RES» или «CURR» или «CAP» или «FREQ» или «TEMP» |
Запрос текущей функции |
|
FUNC1? |
“TEMP” |
Запрос текущего режима измерения |
|
FUNC2? |
NONe |
второй дисплей выключен |
|
RANGE1? |
50 V |
Запрос текущего диапазона на основном дисплее |
|
RATE? |
S |
Запрос текущей частоты дискретизации |
|
MEAS:VOLT? CH1 |
2.978931E+01 |
Как можно заметить, XDM1241 ‑мультиметр возвращает действительное число в научном формате. То есть с мантиссой и экспонентой (например 2.978931E+01). Ваша программа должна уметь распознавать число из такой строки. Про то как делать синтаксический разбор числа из строки есть отдельный текст: Техникум: Распознавание Вещественного Числа из Строчки.
Я написал консольную утилиту xdm1241.exe, которая позволяет измерять напряжения на входе DMM. Утилита сама вызывает все нужные команды и просто выдает физическую величину в консоль. Аргументы очень просты. Вот пример типичной команды xdm1241_get 4 VOLT
|
Порядковый номер аргумента |
Пояснение |
Допустимые значения |
|
1 |
Номер COM порта |
0…. N |
|
2 |
режим измерения |
VOLT; RES; CURR; CAP; FREQ или TEMP |
Благодаря Tool‑е можно буквально одной строчкой управлять прибором.
Недостатки XDM1241
- У мультиметра XDM1241 нет внутри акселерометра. Если поставить прибор вертикально, то экран не делает транспонирование изображения, как мы привыкли это видеть на всех смартфонах и планшетных компьютерах. При этом в вертикальном положении прибор, как блок питания, занимает меньше места на столе.
- Протокол SCPI интуитивно непонятный. Нет как таковой help команды. Протокол SCPI реализован в приборе не полностью. На ключевые команды даже нет ответа по serial интерфейсу. Пришлось прибегнуть у реверс инжинирингу, чтобы понять как управлять данным мультиметром. Лучше бы разработчики просто реализовали классический интерфейс командной строки.
Итоги
Удалось опрашивать измеренное XDM1241 напряжение по последовательному порту через протокол SCPI. Это открывает дорогу для проведения огромного количества автоматических тестов электронной аппаратуры на массовом производстве.
Ссылки
|
Название |
URL |
|
XDM1241, Портативный настольный цифровой мультиметр с аккуммулятором |
https://www.chipdip.ru/product/xdm1241-portativnyy‑nastolnyy‑tsifrovoy‑multimetr‑s‑owon-9001094063 |
|
Программирование блока питания АКИП-1160/6 (или Drive‑by‑Wire) | |
|
Техникум: Распознавание Вещественного Числа из Строчки | |
|
Утилита xdm1241.exe | |
|
HTerm is a terminal program for serial communication | |
|
Синтаксический разбор CSV строчек | |
|
Японский мультиметр‑калькулятор Hioki 3208 | |
|
Почему нам нужен интерфейс командной строки? | |
|
Измерительные приборы под контролем — универсальный SCPI‑драйвер управления: Python + Keysight, АКИП, R&S | |
|
Использование SCPI команд стандарта LXI для автоматического управления измерительными приборами |
Словарь
|
Сокращение |
Пояснение |
|
ADC |
Analog‑to‑Digital Converter |
|
SCPI |
Standard Commands for Programmable Instruments |
|
ECU |
Electronic Control Unit |
|
DMM |
Digital Multimeter |
|
HMI |
Human‑Machine Interface |
|
DC |
Direct current |
|
USB |
Universal Serial Bus |
|
КИП |
Контрольно‑измерительные приборы |
Вопросы
1) Зачем в UART 2 стоповых бита, если это только замедляет битовую скорость? Это для режима передачи по DMA. Чтобы можно было подключаться к UART в середине трансляции по DMA и найти начало байта для синхронизации приема.
2) Как заставить DMM XDM1241 переключить режим измерения? Например с VOLT на RES, или с CURR на FREQ? Какие SCPI команды надо исполнить для переключения режима измерений? CONF:CAP;CONF:VOLT и тому подобное
Источник: https://habr.com/ru/articles/1078588/
🔗 Автоматическое Управление Мультиметром XDM1241 (или drive‑by‑wire)