Embedded HandbookПриложения
Все разделы › V. Отладка и качество
STM32F103 · уровень средний · 23 мин чтения
Открыть в интерактивном справочнике

36м. Старшие осциллографы RIGOL: DHO1000 и DHO4000 — что добавляется и чем отличается управление

Части 36г–36ж разобрали осциллограф автора, RIGOL DHO900, ручка за ручкой и команда за командой. Рано или поздно на столе оказывается прибор постарше — в лаборатории, у коллеги, на производстве — и тогда нужны два ответа: что он умеет сверх DHO900 и заработает ли на нём скрипт, написанный для DHO900. Этот раздел отвечает на оба, и только на них: общее устройство канала, запуска, измерений и декодирования здесь не повторяется — оно в 36г, 36д, 36е и 36ж.

Источник у раздела необычный. На DHO1000 и DHO4000 у нас нет ни даташита, ни руководства пользователя — есть только руководство по программированию, справочник команд SCPI (язык команд прибора, 36ж). Но справочник команд многое выдаёт: какие модели он описывает, какие у команды допустимые значения, каких подсистем нет вовсе. Всё, что сказано ниже о старших сериях, следует из него; всё, что из него не следует, — в «Не проверено» в конце.

Опоры: RIGOL DHO1000/DHO4000 Programming Guide (Books/DHO_programming_manual.pdf, 2022; дальше — «руководство DHO1000/4000», страницы — по PDF-файлу): с. 23–24 — интерфейсы и модели, с. 37–40 — сбор и память, с. 44–45 — декодирование, с. 93–104 — канал и щупы, с. 144 — *IDN?, с. 196–197 — измерения, с. 214–224 — анализ мощности, с. 277–283 — система и опции, с. 431–441 — чтение осциллограммы. RIGOL DHO800/DHO900 Programming Guide (Books/DHO800900_ProgrammingGuide_EN.pdf, 2024; «руководство DHO800/900»): с. 23–24, 42–43, 47, 86, 93–97, 139, 148, 155, 217, 264–267, 297, 426–436 — то же для младших серий. Сравнение наборов команд, разбор ответов и все числа модели — _verify/scope36m_check.py (pypdf) и прогон _verify/scope36m/ (Python 3.11 и numpy в контейнере stm-lab:1); листинг проверен против подставных приборов в том же прогоне.

Как это называется в документации

Оригинал Перевод
Programming Guide, SCPI command руководство по программированию, команда прибора
root keyword, subsystem корень команды, подсистема: :POWer, :WAVeform
option, license, :SYSTem:OPTion:STATus? платная функция, ключ, проверка, установлена ли она
power analysis, Power Quality, Ripple анализ мощности, качество сети на входе, пульсации на выходе
Real_P, Apparent_P, Reactive_P активная, полная и реактивная мощность
P_Factor, Phase_Angle, Crest Factor коэффициент мощности, угол, пик-фактор
input impedance OMEG, FIFTy вход 1 МОм или 50 Ом
HRESolution, :ACQuire:BITS режим высокого разрешения и его разрядность
active probe, current probe, demagnetize активный щуп, токовые клещи, размагнитить
preamble преамбула: десять чисел, по которым коды точек переводят в вольты и секунды

36м.1 Кто такие DHO1000 и DHO4000 — по руководству

Модели. Руководство DHO1000/4000 начинается с таблицы моделей (с. 24):

серия модели полоса каналов
DHO4000 DHO4204, DHO4404, DHO4804 200, 400, 800 МГц 4
DHO1000 DHO1072, DHO1074, DHO1102, DHO1104, DHO1202, DHO1204 70, 100, 200 МГц 2 или 4 (последняя цифра)
DHO800 DHO802, DHO804, DHO812, DHO814 70, 100 МГц 2 и внешний вход или 4
DHO900 DHO914, DHO914S, DHO924, DHO924S 125, 250 МГц 4

Две нижние строки — из руководства DHO800/900 (с. 24). По полосе DHO1000 стоит рядом с DHO800/900, DHO4000 уходит выше всех — до 800 МГц.

Что ещё видно из команд. Не из таблиц характеристик, а из того, какие команды есть и какие значения они принимают:

Роль. Из этого складывается картина. DHO4000 — прибор для быстрых сигналов и силовой электроники: полоса до 800 МГц, вход 50 Ом для высокочастотного тракта, глубокая память, анализ мощности и шины автомобилей и авиации — всё это опции. DHO1000 — та же платформа команд, но по полосе и памяти ближе к DHO900 и без 50 Ом, анализа мощности и редких шин. DHO800/900 — компактные приборы, у которых зато есть то, чего нет у старших: цифровые каналы (DHO900), встроенный генератор и АЧХ (модели с буквой S) — 36м.4.

Ошибка. Считать, что «старше — значит всё то же плюс ещё». Генератора, логического анализатора и гистограммы в руководстве DHO1000/4000 нет: переход с DHO924S на DHO4404 отнимает функции.


36м.2 Как сравнивали два руководства

Метод. Обе книги устроены одинаково: каждая команда — заголовок вида «3.29.5 :WAVeform:DATA?», за ним раздел Syntax. Проверка раздела вынимает pypdf-ом из обоих PDF все такие заголовки, сравнивает имена без учёта регистра и считает, что есть в обеих книгах, а что — только в одной:

руководство DHO1000/4000 руководство DHO800/900
команд с разделом Syntax 609 564
общих 508 508
только в этой книге 101 56
корней команд (подсистем и общих команд *…) 41 44

Корень, которого нет у младших, — один: :POWer. Корней, которых нет у старших, — четыре: :BODeplot, :HISTogram, :LA, :SOURce. :SAVE есть в обеих книгах; у DHO800/900 в нём на 7 команд больше — сохранение в сетевую папку.

Сравнение наборов команд SCPI двух руководств RIGOL: только у DHO1000/4000 — 101 команда (запуск 49 — FlexRay, I2S, MIL-STD-1553, CAN-FD; декодирование 18; анализ мощности 17; система 8; канал 7 — вход 50 Ом и щупы; сбор 2 — High Res), общих — 508, только у DHO800/900 — 56 (генератор 19, цифровые каналы 9, АЧХ 9, гистограмма 9, сетевая папка 7 и ещё 3)

Честная оговорка. Руководство DHO1000/4000 — 2022 года, версия программы 00.01.00 (с. 2, 23); руководство DHO800/900 — 2024 года, версия 00.01.03 (руководство DHO800/900, с. 2, 23). Между ними два года прошивок. Часть различий может означать не «у прибора этого нет», а «в 2022 году этого ещё не было» или «не попало в книгу». Например, :SAVe:SMB и :HISTogram вполне могли появиться в новой прошивке старших серий. Надёжный ответ даёт только сам прибор: команда, которой у него нет, кладёт в очередь ошибок -113,"Undefined header…" (руководство DHO1000/4000, с. 277).

Что совпало целиком. Чтение осциллограммы :WAVeform — 14 команд, те же режимы NORMal, MAXimum, RAW, те же форматы WORD, BYTE, ASCii, та же преамбула из 10 полей и та же формула перевода кода в вольты (с. 431–441 и с. 426–436 руководства DHO800/900). Измерения :MEASure — те же 27 команд и тот же список из 42 величин. Отличие одно: у DHO900 источником может быть цифровой канал D0–D15.

Ошибка. Сравнивать по оглавлению. В оглавлении DHO1000/4000 есть «:SAVE and :LOAD», в DHO800/900 — «:SAVE» и отдельно :LOAD:SETup внутри; по оглавлению кажется, что разные, по командам — одно и то же.


36м.3 Только у DHO1000/4000

101 команда, по корням:

Что видно с этим и без этого. На DHO900 пульсации в милливольтах снимают через 20 МГц и усреднение (36г.7, 36г.16). На DHO4000 к этому добавляется High Res — шум падает в одиночной записи, без повторов. Вход 50 Ом убирает внешнюю проходную нагрузку на высокочастотном тракте.

Ошибка. Заказать DHO1000 «ради анализа мощности»: по руководству :POWer у DHO1000 не поддерживается вовсе (с. 214).


36м.4 Только у DHO800/900

56 команд:

Глубина 5 млн точек. Значение 5M есть в списке :ACQuire:MDEPth DHO800/900 (с. 42) и отсутствует у DHO1000/4000 (с. 38). Скрипт, который ставит 5M, на старшем приборе получит ошибку.

Ошибка. Ждать, что скрипт стенда с генератором (:SOURce) переедет на DHO4000: у старших в руководстве генератора нет, нужен отдельный (36к).


36м.5 Анализ мощности: команды :POWer

Что это. Прибор сам считает по двум каналам — напряжению и току — мощность и связанные с ней величины, со статистикой. Два вида (:POWer:TYPE, с. 215):

Настройка (с. 215–224):

команда что задаёт значения
:POWer:VOLTage:SOURce, :POWer:CURRent:SOURce каналы напряжения и тока CHANnel1…CHANnel4
:POWer:REFLevel:METHod опорные уровни в процентах или в вольтах (как прибор их применяет, руководство не пишет) PERCent (по умолчанию) или ABSolute
:POWer:REFLevel:PERCent:HIGH, MID, LOW уровни в процентах 0…100, по умолчанию 90, 50, 10
:POWer:REFLevel:ABSolute:HIGH, MID, LOW уровни в вольтах от −100 до 100 мВ
:POWer:QUALity:FREQ:REFerence по какому сигналу считать частоту VOLTage или CURRent
:POWer:QUALity:DISPlay, :POWer:RIPPle:DISPlay показать результаты ON или OFF
:POWer:RIPPle:SOURce канал пульсаций CHANnel1…CHANnel4
:POWer:STATistics:RESet сбросить статистику —

Ответ. :POWer:QUALity:STATistics:RESult? возвращает таблицу строкой: в каждой строке имя величины, каналы, текущее, среднее, наибольшее и наименьшее значение, отклонение и число измерений (с. 222). Величины: частота Ref_Freq, Vrms и Irms, активная Real_P, полная Apparent_P и реактивная Reactive_P мощность, коэффициент мощности P_Factor, угол Phase_Angle, отношение напряжения к току Imp и пик-факторы V_CrestFactor и I_CrestFactor. Числа — с единицами и приставками: 4.5289mW, 999.50kHz. Для RIPPle в примере одна величина — размах Meas_Vpp (с. 224).

Проверим пример руководства. Числа в примере на с. 222 связаны между собой, и это помогает понять, что прибор считает:

величина в примере пересчёт из Vrms, Irms и Real_P
полная мощность 7,8598 мВА 88,273 мВ × 89,039 мА = 7,8597 мВА
коэффициент мощности 576,21m 4,5289 / 7,8598 = 0,57621
угол 54,81° arccos 0,57621 = 54,82°
реактивная мощность 6,4237 мвар √(7,8598² − 4,5289²) = 6,4238 мвар
Imp 991,39 Ом 88,273 мВ / 89,039 мА = 0,9914 Ом

Первые четыре сходятся с точностью до единицы последнего знака — это округление. Отсюда важное: угол в примере — это arccos коэффициента мощности, а не сдвиг между синусоидами (почему это различие решает — 36м.6). А Imp расходится с отношением Vrms/Irms в 1000 раз: либо опечатка примера, либо другие единицы. Единицы в ответе проверяйте на известной нагрузке.

Ошибки в самом руководстве. У :POWer:REFLevel:ABSolute:HIGH диапазон от −100 до 100 мВ, а значение по умолчанию — 300 мВ, вне диапазона (с. 217); у LOW — −300 мВ (с. 218). Пример к :POWer:QUALity:DISPlay запрашивает :POWer:RIPPle:DISPlay? (с. 221). Скрипт не должен полагаться на значения по умолчанию — ставить всё явно и читать обратно.

Ошибка. Включить анализ мощности, не проверив опцию. На DHO4000 без UPA команды :POWer недоступны; проверка — :SYSTem:OPTion:STATus? UPA, ответ 1 или 0 (с. 282–283).


36м.6 Зачем это импульсному блоку и двигателю

Модель. Вход простейшего блока питания: обмотка трансформатора 24 В, 50 Гц, сопротивление обмотки и проводов 0,5 Ом, диодный мост (0,7 В на диод), конденсатор 2200 мкФ, нагрузка 20 Ом. Для сравнения — та же обмотка на резисторе 16 Ом. Считаем то, что показал бы анализ мощности на входе моста:

величина резистор 16 Ом мост с конденсатором
Vrms 24 В 23,06 В
Irms 1,5 А 2,806 А
активная мощность 36 Вт 42,3 Вт
полная мощность 36 ВА 64,71 ВА
коэффициент мощности 1,000 0,654
пик-фактор тока 1,414 2,49 (пик 7,00 А)
arccos(PF) 0° 49,2°
сдвиг первой гармоники тока 0° 10,8° (cos 0,982)

Что видно. Конденсатор заряжается только у вершины синусоиды: ток течёт 31 % времени короткими импульсами. Отсюда пик 7,00 А при действующем 2,806 А и коэффициент мощности 0,654. Но сдвига почти нет: первая гармоника тока опережает напряжение на 10,8°, её косинус 0,982. Мощность теряется не на сдвиге, а на форме тока: доля первой гармоники в действующем токе — 0,698, остальных гармоник в нём больше, чем основной (103 %). Полезную мощность переносит в основном первая гармоника, а действующий ток — и полная мощность — растут от всех.

Почему угол обманывает. Если угол — arccos коэффициента мощности (36м.5), прибор покажет 49,2°, хотя синусоиды сдвинуты на 10,8°. Конденсатор или дроссель «для компенсации сдвига» здесь не помогут — нечего компенсировать. Помогает только другая форма тока: корректор коэффициента мощности (активный — тот же повышающий преобразователь из 58.1) или дроссель на входе.

Пик-фактор и настройка канала. Ток 7,00 А в пике при действующем 2,806 А: шкалу канала тока выбирают по пику, а не по показаниям амперметра. В листинге 36м.8 канал тока — 2 А/дел: 25 кодов на деление, шаг 0,08 А, предел ±10,24 А — пик помещается. Токовые клещи перед измерением размагничивают (на DHO1000/4000 — командой, 36м.3).

Пульсации на выходе. На конденсаторе в среднем 28,4 В, размах пульсаций 4,55 В с частотой 100 Гц: это и измеряет RIPPle (Meas_Vpp). Выход отдаёт 40,3 Вт, на входе 42,3 Вт — мост и обмотка забирают 5 %. Как уменьшить пульсации ёмкостью и почему у импульсного стабилизатора к ним добавляются выбросы на частоте переключения — 58.3 и 36г.7.

Двигатель. Тот же расчёт на входе привода двигателя: у привода с выпрямителем и конденсатором звена (57а) форма тока та же, что выше; у асинхронного двигателя прямо от сети, наоборот, ток почти синусоидален, и коэффициент мощности теряется на настоящем сдвиге. Анализ мощности различает эти случаи только вместе с пик-фактором: высокий пик-фактор — форма, низкий при малом PF — сдвиг. Ток в обмотках самого двигателя и как его мерить — 57б.

Безопасность. Пример намеренно взят на вторичной обмотке 24 В. На стороне сети 230 В напряжение снимают только дифференциальным щупом или изолированным каналом, ток — токовыми клещами; землю осциллографа не отрезают никогда (36а.5, 36з, 208.7). Анализ мощности этого правила не отменяет: он считает то, что пришло в каналы.

Ошибка. Сравнивать «мощность» с ваттметра-розетки и с прибора без проверки, что в окне целое число периодов. В модели окно — 10 периодов 50 Гц; при дробном числе периодов активная мощность «гуляет» от записи к записи.


36м.7 Перенос скрипта с DHO900: что поменять

Скрипт для DHO900 из 36ж на DHO1000/4000 в основном заработает: чтение памяти и измерения устроены одинаково (36м.2). Ломается он на мелочах — на значениях параметров, которых у другой серии нет:

что DHO800/900 DHO1000/4000 что делать в скрипте
модель *IDN?: «RIGOL TECHNOLOGIES,<модель>,<серийный>,<версия>» (с. 148) так же (с. 144) серию брать из второго поля
число каналов :SYSTem:RAMount? :SYSTem:RAMount? «всегда 4» (с. 283) при двухканальных DHO1072, DHO1102, DHO1202 брать из последней цифры модели
наименьший масштаб при щупе 1X DHO800 500 мкВ/дел, DHO900 200 мкВ/дел (с. 97) DHO4000 100 мкВ/дел, DHO1000 500 мкВ/дел (с. 98) не ставить меньше; читать масштаб обратно
смещение ±8 В от 65,01 до 260 мВ/дел (с. 96) ±10 В от 65,1 до 270 мВ/дел (с. 97) не рассчитывать на запас ±10 В на DHO900
вход 50 Ом команды нет :CHANnel<n>:IMPedance FIFTy — только DHO4000 (с. 99) ставить OMEG явно, FIFTy — только осознанно
ограничение полосы 20M (с. 93) 20M или 250M (с. 93) 250M — только DHO4000
глубина памяти, 1 канал DHO800 25M, DHO900 50M DHO1000 50M (опция 100M), DHO4000 250M (опция 500M) выбирать по серии; 1M есть везде
то же, 2 канала DHO800 10M, DHO900 25M DHO1000 25M (50M), DHO4000 125M (250M)
то же, 3–4 канала DHO800 5M, DHO900 10M DHO1000 10M (25M), DHO4000 50M (100M и 125M) 5M у старших нет
режим сбора Normal, Average, Peak, UltraAcquire (с. 43) плюс HRESolution и :ACQuire:BITS (с. 37, 40)
чтение осциллограммы :WAVeform, источники D0–D15 только у DHO900 те же 14 команд и преамбула без изменений
измерения :MEASure:ITEM, 42 величины, D0–D15 у DHO900 (с. 217) те же 42 величины (с. 196–197) без изменений
декодирование PARallel, RS232, SPI, IIC, LIN (DHO900), CAN (с. 47) плюс IIS, FLEXray, M1553 — DHO4000 с опциями (с. 44–45)
сохранение :SAVE и :SAVe:SMB :SAVE и :LOAD — те же команды без SMB без изменений, если без SMB
мощность :POWer нет — считать самим :POWer у DHO4000 с UPA ветка по :SYSTem:OPTion:STATus? UPA

Отношение памяти. На двух каналах DHO4000 без опций держит в 5 раз больше точек, чем DHO900; с опцией на одном канале — в 10 раз. Это не бесплатно: чтение по сети идёт кусками через :WAVeform:STARt и STOP, и время выгрузки растёт так же (36ж).

Ошибка. Перенести «магические» значения: 5M, масштаб 200 мкВ/дел на DHO1000, :BUS1:MODE LIN на DHO800. Каждое — ошибка −113 или другая в очереди, и без проверки очереди после каждой команды скрипт молча снимет не то.


36м.8 Один скрипт на все серии

Задача. Измерить мощность на входе блока питания из 36м.6: канал 1 — напряжение (дифференциальный щуп), канал 2 — ток (токовые клещи), 10 периодов 50 Гц. Скрипт узнаёт модель по *IDN?, на DHO4000 с опцией UPA отдаёт расчёт прибору, на остальных читает память двух каналов и считает сам:

# dho_any.py — мощность на входе блока питания: DHO800/900 и DHO1000/4000 одним скриптом
import re, sys, time
import numpy as np
import pyvisa

ADDR = sys.argv[1]            # VISA-адрес: Utility → IO или :LAN:VISA?
CHUNK = 250000                # точек за одно чтение :WAVeform:DATA?
DEPTH2 = {"800": "10M", "900": "25M", "1000": "25M", "4000": "125M"}   # наибольшая память на 2 канала без опций

scope = pyvisa.ResourceManager().open_resource(ADDR)
scope.timeout = 10000
scope.read_termination = scope.write_termination = "\n"


def cmd(s):
    scope.write(s)
    err = scope.query(":SYSTem:ERRor?").strip()
    if int(err.split(",")[0]) != 0:
        raise RuntimeError(s + " -> " + err)


def series(model):
    """DHO924S -> ("900", 4), DHO1072 -> ("1000", 2), DHO4804 -> ("4000", 4)."""
    num = re.fullmatch(r"DHO(\d{3,4})S?", model).group(1)
    return num[0] + "0" * (len(num) - 1), int(num[-1])


def si(text):
    """'4.5289mW' -> 0.0045289: так :POWer:...:RESult? пишет числа."""
    m = re.match(r"([-+0-9.eE]+)([pnumkMG]?)", text)
    return float(m.group(1)) * {"p": 1e-12, "n": 1e-9, "u": 1e-6, "m": 1e-3, "": 1.0,
                                "k": 1e3, "M": 1e6, "G": 1e9}[m.group(2)]


model = scope.query("*IDN?").split(",")[1]
ser, nch = series(model)
upa = ser == "4000" and scope.query(":SYSTem:OPTion:STATus? UPA").strip() == "1"
print("%s: серия DHO%s, каналов %d, память на 2 канала до %s, :POWer %s"
      % (model, ser, nch, DEPTH2[ser], "есть" if upa else "нет — считаем сами"))

scope.write("*RST")
while scope.query("*OPC?").strip() != "1":
    time.sleep(0.1)
for ch, probe, scale, unit in ((1, 10, 10, "VOLTage"), (2, 10, 2, "AMPere")):
    cmd(":CHANnel%d:DISPlay ON" % ch)
    cmd(":CHANnel%d:PROBe %d" % (ch, probe))       # дифференциальный щуп / токовые клещи
    cmd(":CHANnel%d:UNITs %s" % (ch, unit))
    cmd(":CHANnel%d:SCALe %g" % (ch, scale))       # 10 В/дел и 2 А/дел
    cmd(":CHANnel%d:OFFSet 0" % ch)
cmd(":TIMebase:MAIN:SCALe 0.02")                    # 20 мс/дел: 10 периодов 50 Гц
cmd(":ACQuire:MDEPth 1M")                           # есть во всех четырёх сериях
cmd(":TRIGger:MODE EDGE")
cmd(":TRIGger:EDGE:SOURce CHANnel1")
cmd(":TRIGger:EDGE:LEVel 0")
cmd(":SINGle")
t0 = time.time()
while scope.query(":TRIGger:STATus?").strip() != "STOP":
    if time.time() - t0 > 5:
        raise TimeoutError("нет запуска за 5 с")
    time.sleep(0.05)

if upa:                                             # DHO4000 с опцией UPA: считает прибор
    cmd(":POWer:TYPE QUALity")
    cmd(":POWer:VOLTage:SOURce CHANnel1")
    cmd(":POWer:CURRent:SOURce CHANnel2")
    cmd(":POWer:QUALity:DISPlay ON")
    rows = re.findall(r"\[([^\[\]]+)\]", scope.query(":POWer:QUALity:STATistics:RESult?"))
    table = {r.split(",")[0].strip('"'): [c.strip('"') for c in r.split(",")] for r in rows}
    head = table.pop("Name")
    cur = {k: si(v[head.index("Current")]) for k, v in table.items()}
    vrms, irms, p, crest = cur["Vrms"], cur["Irms"], cur["Real_P"], cur["I_CrestFactor"]
else:                                               # остальные: память двух каналов и numpy
    cmd(":WAVeform:MODE RAW")
    cmd(":WAVeform:FORMat BYTE")
    wave = []
    for ch in (1, 2):
        cmd(":WAVeform:SOURce CHANnel%d" % ch)
        pre = scope.query(":WAVeform:PREamble?").split(",")
        npts, yinc, yorg, yref = int(pre[2]), float(pre[7]), float(pre[8]), float(pre[9])
        raw = b""
        for start in range(1, npts + 1, CHUNK):
            cmd(":WAVeform:STOP %d" % min(start + CHUNK - 1, npts))
            cmd(":WAVeform:STARt %d" % start)
            raw += scope.query_binary_values(":WAVeform:DATA?", datatype="B", container=bytes)
        wave.append((np.frombuffer(raw, np.uint8) - yorg - yref) * yinc)
    v, i = wave
    vrms, irms = np.sqrt(np.mean(v * v)), np.sqrt(np.mean(i * i))
    p, crest = np.mean(v * i), np.abs(i).max() / irms
scope.close()
print("Vrms %.2f В, Irms %.3f А, P %.2f Вт, S %.2f ВА, PF %.3f, пик-фактор тока %.2f"
      % (vrms, irms, p, vrms * irms, p / (vrms * irms), crest))

Как устроено. Серия — из имени модели: три цифры — DHO800/900, четыре — DHO1000/4000; последняя цифра — число каналов, поэтому :SYSTem:RAMount? не нужен (36м.7). :SYSTem:OPTion:STATus? UPA спрашивают только у DHO4000: у DHO1000 такой опции нет, у DHO900 — самой команды. Всё, что отличает серии, собрано в ветке if upa; настройка канала, запуск и чтение памяти — общие. Глубина 1M выбрана потому, что она есть во всех четырёх сериях; окно 200 мс при ней — это 5 Мвыб/с. Каждая команда проверяется по очереди ошибок, как в 36ж: команда чужой серии не пройдёт молча.

Прогон. Четыре подставных прибора в контейнере — DHO924, DHO1204, DHO4204 без опции и DHO4804 с опцией UPA. Каждый знает только заголовки команд из руководства своей серии (проверка сверяет их с PDF) и отдаёт сигнал модели 36м.6:

DHO924: серия DHO900, каналов 4, память на 2 канала до 25M, :POWer нет — считаем сами
Vrms 23.07 В, Irms 2.805 А, P 42.29 Вт, S 64.70 ВА, PF 0.654, пик-фактор тока 2.48
DHO1204: серия DHO1000, каналов 4, память на 2 канала до 25M, :POWer нет — считаем сами
Vrms 23.07 В, Irms 2.805 А, P 42.29 Вт, S 64.70 ВА, PF 0.654, пик-фактор тока 2.48
DHO4204: серия DHO4000, каналов 4, память на 2 канала до 125M, :POWer нет — считаем сами
Vrms 23.07 В, Irms 2.805 А, P 42.29 Вт, S 64.70 ВА, PF 0.654, пик-фактор тока 2.48
DHO4804: серия DHO4000, каналов 4, память на 2 канала до 125M, :POWer есть
Vrms 23.06 В, Irms 2.806 А, P 42.30 Вт, S 64.71 ВА, PF 0.654, пик-фактор тока 2.49

Ошибок в очередях — 0 на всех четырёх; выход за шкалу — 0 точек. Ветка «считаем сами» прочитала по два канала за 8 обращений :WAVeform:DATA? и разошлась с прибором в последнем знаке: код BYTE — 256 ступеней, шаг напряжения 0,4 В при 10 В/дел. На DHO4804 ушло 5 команд :POWer и ни одного чтения памяти.

Чего прогон не доказывает. Подставной прибор отвечает так, как описано в руководствах, — но настоящий может отвечать иначе: ждать ли накопления статистики перед :RESult?, приходит ли таблица одной строкой (перевод строки внутри ответа оборвал бы чтение на первой строке), какие точно единицы в Imp. На DHO1000 и DHO4000 листинг не запускался.

Ошибка. Узнавать серию по :SYSTem:RAMount? или по наличию команды «попробуем — вдруг ответит»: первое врёт на двухканальных DHO1000, второе оставляет ошибку в очереди и ломает проверку следующей команды.


36м.9 Грабли

«Старше» не значит «больше». Генератора, АЧХ, цифровых каналов и гистограммы в руководстве DHO1000/4000 нет (36м.4).

Анализ мощности на DHO1000. Не поддерживается; на DHO4000 — только с опцией UPA (36м.5).

Угол — не сдвиг. На выпрямителе с конденсатором arccos(PF) = 49,2° при сдвиге первой гармоники 10,8° (36м.6).

Imp в 1000 раз. В примере руководства 991,39 Ом при Vrms/Irms = 0,9914 Ом — проверить единицы на известной нагрузке (36м.5).

Значения по умолчанию вне диапазона. ABSolute HIGH 300 мВ при диапазоне ±100 мВ — ставить уровни явно (36м.5).

5M и 200 мкВ/дел. Есть у DHO900, нет у DHO4000 или DHO1000 (36м.7).

:SYSTem:RAMount? = 4 на двухканальном. Каналы — из модели (36м.7).

Разные годы руководств. 2022 и 2024: различие может быть прошивкой; проверяет сам прибор и его очередь ошибок (36м.2).

Шкала тока по действующему значению. Пик-фактор 2,49 — шкалу выбирают по пику (36м.6).


36м.10 Итоги

Дальше: раздел 36н «Осциллограф и генератор в работе: практикум на DHO900 и DG900 Pro» — двенадцать задач для осциллографа и генератора на одном столе.

Открыть в интерактивном справочнике