Можно выполнить последовательный опрос с функцией spoll
. В последовательном опросе спрашивает Диспетчер (опрашивает) каждый обращенный Прослушиватель, чтобы передать обратно байт состояния, который указывает, утверждал ли он строку SRQ и обслуживание потребностей. Седьмой бит этого байта (бит RQS) установлен, если инструмент запрашивает сервис.
Контроллер выполняет следующие шаги для каждого обращенного Прослушивателя:
Прослушиватель адресован разговору, и байт команды Последовательного опроса включает (SPE) отправляется.
Строка ATN установлена высоко, и Прослушиватель возвращает байт состояния.
Строка ATN установлена низко, и байт команды Последовательного опроса отключает (SPD) отправляется, чтобы закончить последовательность опроса.
Обратитесь к Состоянию и Событию, Сообщающему для получения дополнительной информации о линиях шины GPIB и бите RQS.
Этот пример показывает вам, как выполнить последовательный опрос для функционального преобразователя на 33120 А Keysight™ и осциллографа Tektronix® TDS 210. При этом пример показывает вам, как сконфигурировать многие биты состояния, описанные в Стандартном Регистре состояния События:
Создайте инструментальные объекты — Создают объект GPIB, сопоставленный с функциональным преобразователем Keysight 33120 А в первичном адресе 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