USBTMC является USB тест & измерения класса. командами являются команды SCPI. драйвер системы водителя, который должен быть загружен, - usb_tmc
(http://lxr.free-electrons.com/source/drivers/usb/class/usbtmc.c), проверьте это на выходе dmesg
после подключения в устройство. генератор wavefrom должен появиться в /dev/usbtmcx
или /dev/ttySx
(заменить й с номером на вашей системе)
Настройка интерфейса
Последних ядер Linux поддерживают USBTMC из коробки. Подключите свой прибор и проверьте, существует ли /dev/usbtmc*
. Установите соответствующие разрешения /dev/usbtmc*
Открытый интерфейс USB инструмент t0 = usbtmc('/dev/usbtmc0')
записи слушателю usbtmc_write(t0, '*IDN?')
Блокировка чтения вызов [двоичный для чтения], возвращает uint8 array data = usbtmc_read(t0, 10000)
Преобразовать uint8 массив в строку, символ (данные)
закрыть usbtmc сеанс usbtmc_close(t0)
http://wiki.octave.org/Instrument_control_package (не питон октав, только чтобы показать основное использование)
в питоне он похож, посмотреть http://scruss.com/blog/tag/usbtmc/
первого чек dmesg
, что водитель usb_tmc
загружается при подключении Agilent в системе и проследуйте инструкции по https://github.com/python-ivi/python-usbtmc (создать правило udev, ..., проверьте, если появляется/DEV/usbtmc0, ...)
, если все в порядке записи простой тестовый скрипт, чтобы увидеть, если Аджилент отвечает
import usbtmc
instr = usbtmc.Instrument(2391, 5973) // the 2391 and 5973 are USB idVendor and idProduct of the Agilent MSO7104A converted to decimal
print(instr.ask("\***IDN?"))
# returns 'AGILENT TECHNOLOGIES,MSO7104A,MY********,06.16.0001'
тогда вы пишете питон «драйвер», который отображает стандартный TMC команду питон функции (read()
, write()
, ...), как usbtmc.py
в https://gist.github.com/pklaus/2597049. у вас это есть в here
очень рудиментарный сценарий управления генератором сигналов, который является объектом: //markjones112358.co.Н.З./проекты/Python-Controlled-Function-генератор/
, если вы хотите установить частоту вы пишете команду SCPI FREQ
затем целевого значения
freq = 1000
write("FREQ %f" % freq)
, если вы хотите установить амплитуда вы пишете команду VOLT
затем целевого значения
amplitude = 5
write("VOLT %f" % amplitude)
сложная часть создания и загрузки двоичного файла АРБ
вы не можете загрузить Аджилент с Numpy матрицы непосредственно, потому что он принимает только специальные двоичные файлы, так что вы должны преобразовать матрицу ЛЧМ в двоичный файл см. http://cp.literature.agilent.com/litweb/pdf/E4400-90627.pdf страница 42, . Могу переводить пример на странице 62, чтобы питон, чтобы сгенерировать двоичные АРБЫ файл
при создании формы сигнала двоичного файла АРБ вы можете передать его с помощью операции ИМТПА записи https://community.keysight.com/thread/20217 (в C#)
//Downloading
oFio.WriteIEEEBlock("SOURce1:DATA:ARBitrary testarb,",z,true); binary write
переведенных в Python при использовании драйвера питона, как и выше, это может быть
binary_write("SOURce1:DATA:ARBitrary testarb,",z,true);
(двоичная запись)
см http://rfmw.em.keysight.com/spdhelpfiles/33500/webhelp/US/Content/__I_SCPI/DATA_Subsystem.htm
(в руководстве пользователя http://cp.literature.agilent.com/litweb/pdf/33220-90002.pdf на страницах 234 и далее также резюме соответствующего ИМТПА команд, поиск сети для «AGILENT записи ARB»)
в https://de.mathworks.com/company/newsletter/articles/downloading-a-custom-waveform-to-an-arbitrary-waveform-generator.html является MATLAB набором инструментов с именем Quick-Control Генератор функций в Instrument Control Toolbox, что решить эту проблему
Ничего себе, это один из самый подробный ответ, который я когда-либо получал. Большое спасибо @ralf htp. –
Надеюсь, это правильно, я узнал, отвечая :) –