exponenta event banner

Серийные опросы

Использование функции spoll

Можно выполнить последовательный опрос с помощью spoll функция. При последовательном опросе Контроллер запрашивает (опрашивает) каждый обращенный Прослушиватель, чтобы отправить обратно байт состояния, который указывает, установил ли он линию SRQ и нуждается ли в обслуживании. Седьмой бит этого байта (бит RQS) устанавливается, если прибор запрашивает услугу.

Контроллер выполняет следующие действия для каждого адресного прослушивателя:

  1. Прослушивателю адресуется разговор, и посылается байт команды Serial Poll Enable (SPE).

  2. Строка ATN устанавливается высокой, и прослушиватель возвращает байт состояния.

  3. Линия ATN устанавливается на низкий уровень, и для завершения последовательности опроса посылается байт команды Serial Poll Disable (SPD).

Дополнительные сведения о шинах GPIB и битах RQS см. в разделе Отчеты о состоянии и событиях.

Выполнение последовательного опроса

Этот пример показывает Вам, как выполнить последовательный опрос за генератор функции на 33120 А Keysight™ и осциллограф Tektronix® TDS 210. При этом в примере показано, как сконфигурировать многие биты состояния, описанные в стандартном регистре состояния события:

  1. Создать объекты инструмента - создать объект GPIB, связанный с генератором функций Keysight 33120A по основному адресу 1.

    g1 = gpib('ni',0,1);

    Создайте объект GPIB, связанный с осциллографом Tektronix TDS 210 по основному адресу 2.

    g2 = gpib('ni',0,2);
  2. Подключение к прибору - Подключение g1 к генератору функций и подключить g2 к осциллографу.

    fopen([g1 g2])
  3. Настройка значений свойств - настройка тайм-аута обоих объектов через 1 секунду.

    g1.Timeout = 1;
    g2.Timeout = 1;
  4. Запись и чтение данных - настройка генератора функций для запроса услуг при возникновении ошибки команды.

    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 =
    ''
  5. Отключить и очистить - когда вам больше не нужно g1 и g2необходимо отключить их от приборов и удалить из памяти и из рабочего пространства MATLAB ®.

    fclose([g1 g2])
    delete([g1 g2])
    clear g1 g2