В данном тексте я выполнил обзор одного широко известного и распространенного мультиметра модели 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 строки. Работает по принципу запрос‑ответ.

ответ на отправку  *IDN?
ответ на отправку *IDN?

Каждый запрос должен заканчиваться байтом 0x0A. Это ASCII символ возврата каретки LF. Он же \r. Ответ заканчивается байтами 0x0D 0x0A. Убедиться, что интерфейс живой, можно при помощи утилиты HTerm и команды *IDN?.

Перед Вами система команд для управления мультиметром. В принципе, этого должно быть достаточно для 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 

  1. У мультиметра XDM1241 нет внутри акселерометра. Если поставить прибор вертикально (что интуитивно естественно для мультиметров), то экран не делает транспонирование изображения, как мы привыкли это видеть на всех смартфонах и планшетных компьютерах. При этом в вертикальном положении прибор, как блок питания, занимает меньше места на столе.

  2. Протокол SCPI интуитивно непонятный. Нет как таковой help команды. Прибор сам про себя ничего рассказать не способен. Протокол SCPI реализован в приборе тоже далеко не полностью. На ключевые команды даже нет ответа по serial интерфейсу, что провоцирует мысли об осечке. Пришлось прибегнуть у реверс инжинирингу, чтобы хоть приблизительно понять, как управлять данным мультиметром. Лучше бы разработчики просто реализовали классический интерфейс командной строки, с командой help.

Итоги

Удалось опрашивать измеренное XDM1241 напряжение по последовательному порту через текстовый протокол SCPI. Это открывает прямую дорогу для проведения огромного количества последовательных автоматических тестов электронной аппаратуры в условиях массового конвейерного производства.

Ссылки

Название

URL

XDM1241, Портативный настольный цифровой мультиметр с аккуммулятором

https://www.chipdip.ru/product/xdm1241-portativnyy‑nastolnyy‑tsifrovoy‑multimetr‑s‑owon-9001094063

Программирование блока питания АКИП-1160/6 (или Drive‑by‑Wire)

https://habr.com/ru/articles/1039876/

Техникум: Распознавание Вещественного Числа из Строчки

https://habr.com/ru/articles/757122/

Утилита xdm1241.exe

https://github.com/aabzel/Artifacts/tree/main/xdm1241

HTerm is a terminal program for serial communication

https://der‑hammer.info/pages/terminal.html

Синтаксический разбор CSV строчек

https://habr.com/ru/articles/765066/

Японский мультиметр‑калькулятор Hioki 3208
@museumrza

https://habr.com/ru/companies/ruvds/articles/646783/

Почему нам нужен интерфейс командной строки?

https://habr.com/ru/articles/694408/

Измерительные приборы под контролем — универсальный SCPI‑драйвер управления: Python + Keysight, АКИП, R&S
@MaksAnt

https://habr.com/ru/articles/1078472/

Использование SCPI команд стандарта LXI для автоматического управления измерительными приборами
@Kudinoff_as

https://habr.com/ru/companies/stc_spb/articles/983232/

Словарь

Сокращение

Пояснение

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 и тому подобное

Комментарии (7)


  1. Reason89
    07.09.2026 15:39

    Очень не удобный прибор.

    Особенно добивает автоматическое переключение с mV на V. А обратно уже надо ручками переключать.

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


    1. aabzel Автор
      07.09.2026 15:39

      Надеюсь прекрасные мультиметры будущего станут делать с аксами.


  1. Coder007
    07.09.2026 15:39

    Отличная статья, которая отражает как можно нормально работать с более-менее интеллектуальным прибором при помощи практически "АТ" - команд (утрирую конечно, но протокол текстовый, поэтому такая ассоциация)

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

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

    Вот если бы голосом можно было бы переключать, то есть резон...

    Никогда не сталкивался с таким мультиметром, может и хорошо ))). Честно, для первого впечатления, мультиметр не особо понравился, места занимает много, привязка к рабочему месту жесткая. Больше ничего не могу сказать, так как не использовал.

    Как всегда у aabzel красивая и четкая статья, с полным и отличным описанием. Спасибо большое!


    1. aabzel Автор
      07.09.2026 15:39

      Утилита задаёт физическую величину измерения вторым аргументом.

      Можно выбирать ток, ёмкость, частоту, температуру, напряжение и сопротивление.

      При изменении режима внутри прибора издается звонкий щелчок.


    1. aabzel Автор
      07.09.2026 15:39

      Вот если бы голосом можно было бы переключать, то есть резон...

      яндексы в 2019 обещали выпустить модуль алисдуино для преобразования голоса в uart символы, однако так и не осилили.


  1. aabzel Автор
    07.09.2026 15:39

    Как консольная утилита может вернуть float число вызывающей программе? Файлы не использовать.


  1. VT100
    07.09.2026 15:39

    На днях была аналогичная статья.