Можно выполнить последовательный опрос с помощью spoll функция. При последовательном опросе Контроллер запрашивает (опрашивает) каждый обращенный Прослушиватель, чтобы отправить обратно байт состояния, который указывает, установил ли он линию SRQ и нуждается ли в обслуживании. Седьмой бит этого байта (бит RQS) устанавливается, если прибор запрашивает услугу.
Контроллер выполняет следующие действия для каждого адресного прослушивателя:
Прослушивателю адресуется разговор, и посылается байт команды Serial Poll Enable (SPE).
Строка ATN устанавливается высокой, и прослушиватель возвращает байт состояния.
Линия ATN устанавливается на низкий уровень, и для завершения последовательности опроса посылается байт команды Serial Poll Disable (SPD).
Дополнительные сведения о шинах GPIB и битах RQS см. в разделе Отчеты о состоянии и событиях.
Этот пример показывает Вам, как выполнить последовательный опрос за генератор функции на 33120 А Keysight™ и осциллограф Tektronix® TDS 210. При этом в примере показано, как сконфигурировать многие биты состояния, описанные в стандартном регистре состояния события:
Создать объекты инструмента - создать объект GPIB, связанный с генератором функций Keysight 33120A по основному адресу 1.
g1 = gpib('ni',0,1);Создайте объект GPIB, связанный с осциллографом Tektronix TDS 210 по основному адресу 2.
g2 = gpib('ni',0,2);Подключение к прибору - Подключение g1 к генератору функций и подключить g2 к осциллографу.
fopen([g1 g2])
Настройка значений свойств - настройка тайм-аута обоих объектов через 1 секунду.
g1.Timeout = 1; g2.Timeout = 1;
Запись и чтение данных - настройка генератора функций для запроса услуг при возникновении ошибки команды.
fprintf(g1,'*CLS'); fprintf(g1,'*ESE 32'); fprintf(g1,'*SRE 32');
Сконфигурируйте осциллограф для запроса услуг при возникновении ошибки команды.
fprintf(g2,'*CLS') fprintf(g2,'*PSC 0') fprintf(g2,'*ESE 32') fprintf(g2,'DESE 32') fprintf(g2,'*SRE 32')
Определите, требуется ли обслуживание какого-либо прибора.
spoll([g1 g2]) ans = []
Запросите значение напряжения для каждого прибора.
fprintf(g1,'Volt?') fprintf(g2,'Volt?')
Определите, вызвал ли любой инструмент ошибку из-за предыдущего запроса.
out = spoll([g1 g2]);
Поскольку Volt? является недопустимой командой для осциллографа, он запрашивает услугу.
out == [g1 g2] ans = 0 1
Поскольку Volt? является допустимой командой для генератора функций, значение успешно прочитано.
volt1 = fscanf(g1) volt1 = +1.00000E-01
Однако время работы осциллографа истекает через 1 секунду.
volt2 = fscanf(g2) Warning: GPIB: NI: An I/O operation has been canceled, most likely due to a timeout. volt2 = ''
Отключить и очистить - когда вам больше не нужно g1 и g2необходимо отключить их от приборов и удалить из памяти и из рабочего пространства MATLAB ®.
fclose([g1 g2]) delete([g1 g2]) clear g1 g2