Функции

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

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

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

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

КОД MATLAB

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

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

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

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

Примечание

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

Помогите тексту

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

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

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

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

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

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

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

  3. Расширьте узел Functions, чтобы отобразить все заданные функции.

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

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

    • Выберите Instrument Commands в Функциональном поле стиля.

    • В Функциональной панели команд введите AUTOSet EXECute в Добавить поле команды и нажмите кнопку Add.

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

    • В текстовом поле Help введите 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 сделана через Измерение плата GPIB Корпорации Computing™ в параметре плат 0. Из командной строки MATLAB,

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

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

    methods(obj)
    
    Methods for class icdevice:
    
    Contents         error            instrhwinfo      open
    class            fieldnames       instrnotify      openvar
    close            get              instrument       propinfo
    connect          geterror         invoke           selftest
    ctranspose       horzcat          isa              set
    delete           icdevice         isequal          sim
    devicereset      igetfield        isetfield        size
    disconnect       inspect          isvalid          subsasgn
    disp             instrcallback    length           subsref
    display          instrfind        methods          vertcat
    end              instrfindall     ne
    eq               instrhelp        obj2mfile
    
    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])

Функция с Инструментальными Командами тот Ввод и вывод Использования Аргументы

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

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

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

  3. Расширьте узел Functions, чтобы отобразить все заданные функции.

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

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

    • Выберите Instrument Commands в Функциональном поле стиля.

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

    • Введите Data:Source <source> в Добавить поле команды и нажмите кнопку Add. В таблице выберите тип Output 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. Выберите вкладку Help, чтобы задать текст справки для этой функции.

    • В текстовом поле Help введите [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:
    
    Contents         error            instrhwinfo      open
    class            fieldnames       instrnotify      openvar
    close            get              instrument       propinfo
    connect          geterror         invoke           selftest
    ctranspose       horzcat          isa              set
    delete           icdevice         isequal          sim
    devicereset      igetfield        isetfield        size
    disconnect       inspect          isvalid          subsasgn
    disp             instrcallback    length           subsref
    display          instrfind        methods          vertcat
    end              instrfindall     ne
    eq               instrhelp        obj2mfile
    
    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. Имя новой функции, getWaveform, появляется в таблице Function Name.

  3. Расширьте узел Functions, чтобы отобразить все заданные функции.

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

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

    • Выберите M-Code в Функциональном поле стиля.

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

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

      % 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. Кликните по вкладке Help, чтобы задать текст справки для этой функции.

    • В текстовом поле Help введите 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:
    
    Contents         error            instrhwinfo      open
    class            fieldnames       instrnotify      openvar
    close            get              instrument       propinfo
    connect          geterror         invoke           selftest
    ctranspose       horzcat          isa              set
    delete           icdevice         isequal          sim
    devicereset      igetfield        isetfield        size
    disconnect       inspect          isvalid          subsasgn
    disp             instrcallback    length           subsref
    display          instrfind        methods          vertcat
    end              instrfindall     ne
    eq               instrhelp        obj2mfile
    
    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])