Функции

Понимание функций

Функции позволяют вам вызвать инструмент для выполнения некоторых задач или задач, которые могут вернуть результаты как текстовые данные или числовые данные. Функция может включать одну команду к инструменту или последовательность команд инструмента. Функция может включать в себя MATLAB® программный код для определения, какие команды посылаются на прибор или для выполнения анализа по данным, возвращенным с прибора. Для примера функция может запросить, чтобы счетчик запустил свою самокалибровку, возвращая в результате состояние. Другая функция может считать масштабирование счетчика, запрашивать измерение, корректировать измеренные данные в соответствии с показаниями шкалы и затем возвращать результат.

Функциональные компоненты

Поведение функции определяется компонентами, описанными ниже.

Код MATLAB

Код MATLAB определяет код, который выполняется, когда функция оценивается с invoke функция. Код может быть определен как команда instrument, которая будет записана на инструмент, или как код программного обеспечения MATLAB.

Если код определен как команда instrument, можно задать команду instrument, чтобы взять входной параметр. Все вхождения <input argument name> в команде instrument заменяются входным значением, переданным в invoke функция. Для примера, если функция задана с помощью входного параметра, start, и команда прибора определяется как Data:Start <start>, и начальное значение 10 передается в invoke function, the команды Data:Start 10 записывается на инструмент.

Если код определен как команда instrument, можно также задать команду instrument, чтобы вернуть выходной аргумент. Выходной аргумент может быть возвращен как числовые данные или как текстовые данные.

Если код определен как код программного обеспечения MATLAB, можно определить, какие команды отправляются в инструмент, и результаты данных с инструмента могут быть манипулированы, скорректированы или проанализированы по мере необходимости.

Примечание

Код, используемый для программного кода MATLAB вашей функции, не может включать вызовы fclose или fopen функции для объекта интерфейса, используемого для доступа к инструменту.

Текст справки

Текст справки содержит информацию о функции.

Примеры функций

Этот раздел включает несколько примеров функций и шагов для проверки поведения этих функций.

Простая функция

Этот пример создает функцию, которая вызовет Tektronix® Осциллограф TDS 210 для регулировки его вертикальных, горизонтальных и триггерных органов управления для отображения стабильной формы волны. В редакторе драйверов приборов MATLAB,

  1. Выберите Functions узел в дереве.

  2. Введите имя функции, autoset, в поле Add function text и нажмите кнопку Add. Имя новой функции, autoset, появляется в таблице Имя функции.

  3. Разверните Functions узел для отображения всех определенных функций.

  4. Выберите autoset узел из функций, отображаемых в дереве.

  5. Выберите вкладку Code, чтобы задать команды, выполненные для этой функции.

    • Выберите Instrument Commands в поле Function style.

    • На панели команд Function введите AUTOSet EXECute в поле команда и нажмите кнопку Add.

  6. Выберите вкладку «Справка», чтобы определить текст справки для этой функции.

    • В поле Текст справки введите INVOKE(OBJ, 'autoset') causes the oscilloscope to adjust its vertical, horizontal, and trigger controls to display a stable waveform.

  7. Нажмите кнопку Save.

Проверка поведения функции.  Эта процедура проверяет поведение функции. В этом примере имя драйвера tektronix_tds210_ex.mdd. Связь с осциллографом Tektronix TDS 210 по первичному адресу 2 осуществляется через плату Измерения Computing™ Corporation GPIB с индексом платы 0. Из командной строки MATLAB,

  1. Создайте объект устройства, obj, используя icdevice функция.

    g = gpib('mcc',0,2);
    obj = icdevice('tektronix_tds210_ex.mdd',g);
  2. Просмотрите метод, который вы создали.

    methods(obj)
    Methods for class icdevice:
    
    class          display        icdevice       instrnotify    methods        size           
    connect        end            inspect        instrument     ne             subsasgn       
    ctranspose     eq             instrcallback  invoke         obj2mfile      subsref        
    delete         fieldnames     instrfind      isa            openvar        vertcat        
    devicereset    get            instrfindall   isequal        propinfo                      
    disconnect     geterror       instrhelp      isvalid        selftest                      
    disp           horzcat        instrhwinfo    length         set                           
    
    Driver specific methods for class icdevice:
    
    autoset    
  3. Просмотрите справку, которую вы написали.

    instrhelp(obj,'autoset')
       INVOKE(OBJ, 'autoset') causes the oscilloscope to adjust its vertical,
       horizontal, and trigger controls to display a stable waveform.
  4. Используя элементы управления инструмента, установите возможности, чтобы ее отображение было нестабильным. Например, установите уровень триггера вне области значений формы волны так, чтобы форма волны прокручивалась по отображению.

  5. Подключитесь к инструменту и выполните функцию. Наблюдайте, как стабилизируется отображение формы волны.

    connect(obj)
    invoke(obj,'autoset')
  6. Отсоединитесь от инструмента и удалите объект.

    disconnect(obj)
    delete([obj g])

Функция с командами Instrument, которые используют входные и выходные аргументы

Этот пример создает функцию, которая конфигурирует, какая форма волны будет передана с осциллографа Tektronix TDS 210, и конфигурирует начальную и конечную точки данных формы волны. В редакторе драйверов приборов MATLAB,

  1. Выберите Functions узел в дереве.

  2. Введите имя функции, configureWaveform, в поле Add function text и нажмите кнопку Add. Имя новой функции, configureWaveform, появляется на панели Имя функции.

  3. Разверните Functions узел для отображения всех определенных функций.

  4. Выберите configureWaveform узел из функций, отображаемых в дереве.

  5. Выберите вкладку Code, чтобы задать команды, выполненные для этой функции.

    • Выберите Instrument Commands в поле Function style.

    • Введите входные параметры source, start, stop в поле входные параметры.

    • Введите Data:Source <source> в поле команда и нажмите кнопку Add. В таблице выберите тип выхода None и тип формата N/A.

    • Точно так же добавьте команду: Data:Source? с ASCII Выход и text Формат.

    • Точно так же добавьте команду: Data:Start <start> с NONE Выход и N/A Формат.

    • Точно так же добавьте команду: Data:Start? с ASCII Выход и numeric Формат.

    • Точно так же добавьте команду: Data:Stop <stop> с NONE Выход и N/A Формат.

    • Точно так же добавьте команду: Data:Stop? с ASCII Выход и numeric Формат.

  6. Выберите вкладку «Справка», чтобы определить текст справки для этой функции.

    • В поле Текст справки введите [SOURCE, START, STOP] = INVOKE(OBJ, 'configureWaveform', SOURCE, START, STOP) configures the waveform that will be transferred from the oscilloscope.

  7. Нажмите кнопку Save.

Проверка поведения функции.  Эта процедура проверяет поведение функции. В этом примере имя драйвера tektronix_tds210_ex.mdd. Связь с осциллографом Tektronix TDS 210 по первичному адресу 2 осуществляется через плату GPIB компании Measurement Computing Corporation по индексу 0 платы. Из командной строки MATLAB,

  1. Создайте объект устройства, obj, используя icdevice функция.

    g = gpib('mcc',0,2);
    obj = icdevice('tektronix_tds210_ex.mdd',g);
  2. Просмотрите метод, который вы создали.

    methods(obj)
    Methods for class icdevice:
    
    class              fieldnames         instrhwinfo        obj2mfile          
    connect            get                instrnotify        openvar            
    ctranspose         geterror           instrument         propinfo           
    delete             horzcat            invoke             selftest           
    devicereset        icdevice           isa                set                
    disconnect         inspect            isequal            size               
    disp               instrcallback      isvalid            subsasgn           
    display            instrfind          length             subsref            
    end                instrfindall       methods            vertcat            
    eq                 instrhelp          ne                                    
    
    Driver specific methods for class icdevice:
    
    autoset            configureWaveform        
  3. Просмотрите справку, которую вы написали.

    instrhelp(obj,'configureWaveform')
       [SOURCE, START, STOP] = INVOKE(OBJ, 'configureWaveform', SOURCE, START,
       STOP) configures the waveform that will be transferred from the oscilloscope.
  4. Подключитесь к инструменту и выполните функцию.

    connect(obj)
    [source,start,stop] = invoke(obj,'configureWaveform','CH1',1,500)
    source =
    
        'CH1'
    
    
    start =
    
         1
    
    
    stop =
    
            500
    
    [source,start,stop] = invoke(obj,'configureWaveform','CH2',0,3500)
    source =
    
        'CH2'
    
    
    start =
    
         1
    
    
    stop =
    
            2500
    
  5. Отсоединитесь от инструмента и удалите объект.

    disconnect(obj)
    delete([obj g])

Функция стиля кода MATLAB

Этот пример создает функцию, которая будет передавать и масштабировать форму волны от осциллографа Tektronix TDS 210. В редакторе драйверов приборов MATLAB,

  1. Выберите Functions узел в дереве.

  2. Введите имя функции, getWaveform, в поле Add function text и нажмите кнопку Add. Имя новой функции, getWaveform, появляется в таблице Имя функции.

  3. Разверните Functions узел для отображения всех определенных функций.

  4. Выберите getWaveform узел из функций, отображаемых в дереве.

  5. Выберите вкладку Code, чтобы задать команды, выполненные для этой функции.

    • Выберите M-Code в поле Function style.

    • Обновите линию функции в текстовом поле Define Функции MATLAB, чтобы включить выходной аргумент.

      function yout = getWaveform(obj)
    • Добавьте следующий код программного обеспечения MATLAB в поле Define MATLAB function text. (Инструмент может потребовать короткой паузы перед любыми операторами, считывающими форму волны, чтобы позволить ему завершить набор данных.)

      % Get the interface object.
      g = obj.Interface;
      
      % Configure the format of the data transferred.
      fprintf(g, 'Data:Encdg SRIBinary');
      fprintf(g, 'Data:Width 1');
      
      % Determine which waveform is being transferred.
      source = query(g, 'Data:Source?');
      
      % Read the waveform.
      fprintf(g, 'Curve?');
      ydata = binblockread(g, 'int8');
      
      % Read the trailing terminating character.
      fscanf(g);
      
      % Scale the data.
      fprintf(g, ['WFMPre:' source ':Yoff?']);
      yoffset = fscanf(g, '%g');
      
      fprintf(g, ['WFMPre:' source ':YMult?']);
      ymult = fscanf(g, '%g');
      
      yout = (ydata*ymult) + yoffset;

  6. Щелкните вкладку «Справка», чтобы определить текст справки для этой функции.

    • В поле Текст справки введите DATA = INVOKE(OBJ, 'getWaveform') transfers and scales the waveform from the oscilloscope.

  7. Нажмите кнопку Save.

Проверка поведения функции.  Эта процедура проверяет поведение функции. В этом примере имя драйвера tektronix_tds210_ex.mdd. Связь с осциллографом Tektronix TDS 210 по первичному адресу 2 осуществляется через плату GPIB компании Measurement Computing Corporation по индексу 0 платы. Из командной строки MATLAB,

  1. Создайте объект устройства, obj, используя icdevice функция.

    g = gpib('mcc',0,2);
    obj = icdevice('tektronix_tds210_ex.mdd',g);
  2. Просмотрите метод, который вы создали.

    methods(obj)
    Methods for class icdevice:
    
    class              fieldnames         instrhwinfo        obj2mfile          
    connect            get                instrnotify        openvar            
    ctranspose         geterror           instrument         propinfo           
    delete             horzcat            invoke             selftest           
    devicereset        icdevice           isa                set                
    disconnect         inspect            isequal            size               
    disp               instrcallback      isvalid            subsasgn           
    display            instrfind          length             subsref            
    end                instrfindall       methods            vertcat            
    eq                 instrhelp          ne                                    
    
    Driver specific methods for class icdevice:
    
    autoset            configureWaveform  getWaveform        
  3. Просмотрите справку, которую вы написали.

    instrhelp(obj,'getWaveform')
       DATA = INVOKE(OBJ, 'getWaveform') transfers and scales the waveform from
       the oscilloscope.
  4. Подключитесь к инструменту и выполните функцию.

    connect(obj)

    Сконфигурируйте сигнал, который будет передан.

    invoke(obj,'configureWaveform','CH1',1,500);

    Передайте форму волны.

    data = invoke(obj,'getWaveform');

    Анализируйте и просматривайте форму волны.

    size(data)
    ans =
    
       500     1
    plot(data)
  5. Отсоединитесь от инструмента и удалите объект.

    disconnect(obj)
    delete([obj g])