Ранее я писал обзор на программу Test Controller в котором в качестве примера была добавлена поддержка устройства, которое поддерживает управление через протокол SCPI. В этот раз я добавлю поддержку настольного мультиметра Agilent U3402A в котором поддержка SCPI протокола отсутствует. Точнее не так - она доступна при условии наличия модуля расширения GPIB, но в моём экземпляре такого модуля нет.
В документации на Test Controller есть раздел посвящённый поддержке не-SCPI устройств. А пример рекомендуется смотреть в файле конфигурации HP3478A.
Для начала указываю метаданные конфигурации
#idString Agilent Technologies,U3402A, #name Agilent U3402A #handle U3402A #port com #driver Ascii #eol \r\n
Мультиметр подключается к компьютеру через последовательный порт, а драйвер будет использоваться Ascii, т.к. общение с мультиметром идёт через тестовые команды.
Описание данных, которые поддерживает мультиметр. Несколько режимов могут выдавать один и тот же вид данных - например двухпроводное (2W_Resistance) и четырёхпроводное (4W_Resistance) измерение сопротивления или прозвонка (Continuity)
#value VoltageDC V D6 DC_Voltage,Diode #value CurrentDC A si DC_Current #value VoltageAC V D6 AC_Voltage #value CurrentAC A si AC_Current #value Resistance ohm si 2W_Resistance,4W_Resistance,Continuity #value Frequency Hz si Frequency #value VoltageACDC V D6 AC+DC_Voltage #value CurrentACDC A si AC+DC_Current
Не уверен что мне потребуется регистрировать данные сопротивления, диодов или прозвонки, но добавил их на всякий случай. Поймал себя на мысли что ещё ни разу не использовал измерения "AC+DC" для напряжения или тока и пока не особо представляю где это требуется.
Далее описание команд которые переключают режимы измерений
#scpiCmd DCV txrx S100 #scpiCmd ACV txrx S110 #scpiCmd 2WO txrx S120 #scpiCmd 4WO txrx S130 #scpiCmd DCI txrx S140 #scpiCmd ACI txrx S150 #scpiCmd DIOD txrx S160 #scpiCmd FREQ txrx S170 #scpiCmd ACDCV txrx S180 #scpiCmd ACDCI txrx S190 #scpiCmd CONT txrx S1A0
Эти команды как бы эмулируют SCPI - например "#scpiCmd DCV txrx S100" - объявляем команду "DCV" которая передаётся в мультиметр в виде команды "S100" и считывается ответ, но значение не возвращается. Эти команды можно выполнять на вкладке "Commands".
Далее описание команд для получения статуса мультиметра и запроса данных
#scpiCmd READ:FUNCTION? txrx? R0 :string: :readmath: substring(value, 6, 7) #scpiCmd READ:RATE? txrx? R0 :string: :readmath: substring(value, 5, 6) #scpiCmd READ:DATA? txrx? R1
В отличии от команд переключения режимов нам нужно получить данные (вместо txrx
используется txrx?
) а также сделать их интерпретацию (substring()
).
Чтобы программа не пыталась общаться с "неправильным" устройством добавлю получение информации о модели и её проверку
#scpiCmd model? txrx? RV :readmath: getMatchGroup(value, "^(.+),(.+)$", 2) #scpiCmd getDeviceSW? txrx? RV :readmath: getMatchGroup(value, "^(.+),(.+)$", 1) #verifyDevice 6 model?
Если устройство неверно ответит на команду RV
или в ответе будет указана другая модель, то общение с ним прекратится.
Блок описание команд управления режимом работы
#cmdModeLayout 2 6 #cmdMode DC_Voltage 0 DCV #cmdMode AC_Voltage 1 ACV #cmdMode AC+DC_Voltage 8 ACDCV #cmdMode AC+DC_Current 9 ACDCI #cmdMode DC_Current 4 DCI #cmdMode AC_Current 5 ACI #cmdMode 2W_Resistance 2 2WO #cmdMode 4W_Resistance 3 4WO #cmdMode Frequency 7 FREQ #cmdMode Diode 6 DIOD #cmdMode Continuity 10 CONT
В итоге становится активным меню "Mode" в котором можно выбрать режим работы
Для меню "Setup" добавил отображение текущего режима работы и частоты измерений
#cmdSetup info Mode :read: READ:FUNCTION? :readmath: getElement("DC Voltage;AC Voltage;2W Resistance;4W Resistance;DC Current;AC Current;Diode;Frequency;DC+AC Voltage;DC+AC Current;Continuity",listIndex(value, "0 1 2 3 4 5 6 7 8 9 A", " "), ";") :updatemodechange: :tip: Primary display mode #cmdSetup info Rate :read: READ:RATE? :readmath: getElement("Slow;Medium;Fast", listIndex(value, "S M F", " "), ";") :updatemodechange: :tip: Measurement rate
Само меню выглядит так
Чем больше пользуюсь этой программой, тем больше она мне нравится своей расширяемостью. В планах разобраться в документации и добавить переключение диапазонов и частоты измерений (одно зависит от другого и нужно подумать как это реализовать).
Комментариев нет:
Отправить комментарий