Знакомство с языком SCPI

SCPI (стандартные команды для программируемых приборов) – язык команд для приборов с использованием ASCII, предназначенный для работы с диагностическими и измерительными устройствами. В основе команд SCPI лежит иерархическая структура, называемая системой с древовидной структурой. В этой системе связанные команды группируются вместе под общим узлом или корнем, таким образом формируются подсистемы. В качестве примера системы с древовидной структурой ниже приведена часть подсистемы OUTPut.

OUTPut:
         SYNC {OFF|0|ON|1}

         SYNC:
                MODE {NORMal|CARRier}
                POLarity {NORMal|INVerted}

OUTPut является ключевым словом уровня администратора, SYNC является ключевым словом второго уровня, MODE и POLarity являются ключевыми словами третьего уровня. Двоеточие (: ) используется для разделения ключевого слова команды и ключевого слова более низкого уровня.

Условные обозначения синтаксиса

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

[SOURce[1|2]:]VOLTage:UNIT {VPP|VRMS|DBM}

[SOURce[1|2]:]FREQuency:CENTer {<frequency>|MINimum|MAXimum|DEFault}

В синтаксисе командного языка большинство команд (и некоторые параметры) представлены в виде комбинации букв верхнего и нижнего регистра. Буквы верхнего регистра используются для сокращенного написания команды. Для коротких строк программы можно отправлять сокращенную форму. Чтобы программа удобнее читалась, можно отправлять полную форму.

Например, в приведенном операторе синтаксиса допустимы обе формы – VOLT и VOLTAGE. Можно использовать строчные и прописные буквы. Поэтому допустимо употребление VOLTAGE, volt и Volt. Другие формы, например VOL и VOLTAG являются недопустимыми, и при их использовании генерируется ошибка.

Разделители команд

Двоеточие (: ) используется для разделения ключевого слова команды и ключевого слова более низкого уровня. Для разделения параметра и ключевого слова команды используется пробел. Если для команды требуется указать несколько параметров, параметры, указываемые друг за другом, разделяются с помощью запятой, как показано ниже.

APPL:SIN 455E3,1.15,0.0

В этом примере команда APPLy задает синусоидальный сигнал с частотой 455 кГц, амплитудой 1,15 В и смещением постоянного тока 0,0 В. 

Точка с запятой (;) используется для разделения команд в пределах одной подсистемы, а также с ее помощью можно сократить ввод. Например, отправка командной строки

TRIG:SOUR EXT; COUNT 10

равнозначна отправке двух следующих команд

TRIG:SOUR EXT
TRIG:COUNT 10

Использование параметров MIN, MAX, и DEF

Для большинства команд можно использовать "MIN" или "MAX" вместо параметра. В некоторых случаях можно также использовать "DEF". В качестве примера рассмотрим следующую команду.

[SOURce[1|2]:]APPLy:DC [{<frequency>|DEF} [,{<amplitude>|DEF} [,{<offset>|MIN|MAX|DEF}]]]

Вместо выбора определенного значения для параметра <offset> можно использовать MIN, чтобы задать для смещения минимальное значение, или MAX, чтобы задать для смещения максимальное значение. Также можно задать параметр DEF, чтобы задать для каждого параметра значение по умолчанию: <frequency>, <amplitude> и <offset>.

Запрос настроек параметров

Можно выполнить запрос текущего значения большинства параметров, добавив к записи команды вопросительный знак ( ). Например, при использовании следующей команды для количества запусков задается значение 10.

TRIG:COUN 10

Можно запросить значение количества, отправив следующую команду.

TRIG:COUN?

Можно запросить допустимое минимальное и максимальное значение количества с помощью следующей команды.

TRIG:COUN? MIN
TRIG:COUN? MAX

Терминаторы команд SCPI

Командная строка, отправляемая на прибор, должна быть ограничена <символом новой строки> (<NL>). Сообщение IEEE-488 EOI (End-Or-Identify – конец или идентификация) интерпретируется как символ <NL> и может использоваться для завершения командной строки вместо символа <NL>. Также допускается использование символа <NL> после символа <возврата каретки>. Ограничение командной строки всегда будет сбрасывать текущий путь команды SCPI на корневой уровень.

Примечание

Для каждого сообщения SCPI, которое включает запрос и отправляется на прибор, прибор завершает ответное сообщение символом <NL> или символом перевода строки (EOI). Например, при отправке запроса "DISP:TEXT?"   отклик будет завершен с помощью символа <NL>, следующего за блоком данных, включенным в ответное сообщение. Если сообщение SCPI включает несколько запросов, разделенных точкой с запятой (например, "DISP?;DISP:TEXT?"), ответное сообщение также будет завершено символом <NL>, следующим за откликом на последний запрос. В любом случае программа должна считать этот символ <NL> в ответном сообщении, прежде чем на прибор будет отправлена другая команда, в противном случае произойдет ошибка.

Общие команды IEEE-488.2

Стандарт IEEE-488.2 определяет набор общих команд, которые выполняют разные функции, такие как сброс, самодиагностика или операции состояний. Общие команды всегда начинаются со звездочки ( * ), состоят из трех символов и могут включать один или несколько параметров. Ключевое слово команды отделяется от первого параметра с помощью пробела.  Используйте точку с запятой (;), чтобы разделить несколько команд, как показано ниже.

*RST; *CLS; *ESE 32;*OPC?

Типы параметров SCPI

Язык SCPI определяет несколько форматов данных, которые можно использовать в программных сообщениях и ответных сообщениях.

Числовые параметры

Команды, для которых требуются числовые параметры, будут принимать все обычно используемые десятичные представления чисел, включая необязательные знаки, десятичные точки и научное представление. Специальные значения для числовых параметров, например MIN, MAX и DEF, также допустимы. С числовыми параметрами можно также отправлять единицы измерения (например, M, k, m или u).  Если команда принимает только определенные значения, прибор автоматически округлит входные числовые параметры для допустимых значений. В следующей команде для значения частоты требуется числовой параметр.

[SOURce[1|2]:]FREQuency:CENTer {<frequency>|MINimum|MAXimum}

Примечание

Поскольку синтаксический анализатор SCPI не учитывает регистр символов, можно спутать некоторые обозначения, например букву "M" (или "m"). Для удобства пользователя прибор интерпретирует единицы измерения "mV" (или "MV") как милливольты, а "MHZ" (или "mhz") как мегагерцы. Так же обозначение "MΩ" (или "mΩ") интерпретируется как мегомы. Для обозначения приставки "мега-" используется префикс "MA". Например, обозначение "MAV" интерпретируется как мегавольты.

 

Дискретные параметры

Дискретные параметры используются для программирования настроек, имеющих ограниченное количество значений (например, IMMediate, EXTernal или BUS). Они могут иметь краткую и полную форму, как ключевые слова команд. Можно использовать строчные и прописные буквы. Ответы на запросы всегда возвращаются в краткой форме с использованием букв верхнего регистра. В следующей команде требуется дискретный параметр для единиц измерения напряжения.

[SOURce[1|2]:]VOLTage:UNIT {VPP|VRMS|DBM}

Булевы параметры

Булевы параметры представляют единственное двоичное условие, которое может быть либо истиной, либо ложью. Для условия лжи прибор будет принимать значение "OFF" или "0". Для условия истины прибор будет принимать значение "ON" или "1". При запросе булева параметра прибор всегда будет возвращать "0" или "1". Для следующей команды требуется булев параметр:

DISPlay {OFF|0|ON|1}

Параметры строк ASCII

Параметры строки могут фактически содержать любой набор символов ASCII. Строка может начинаться и заканчиваться соответствующими кавычками – одинарными или двойными. Чтобы использовать кавычки в строке в качестве разделителя, введите два символа кавычек подряд. В следующей команде используется параметр строки.

DISPlay:TEXT <строка в кавычках>

Например, в результате выполнения следующей команды отображается сообщение "WAITING..." на дисплее на передней панели прибора (кавычки не отображаются).

DISP:TEXT "WAITING..."

Это сообщение также можно отобразить, используя одинарные кавычки.

DISP:TEXT 'WAITING...'

Использование сброса настроек прибора

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

При сбросе настроек прибора выполняются следующие действия.

Примечание

Команда ABORt является рекомендованным методом прекращения работы прибора.