2. SCPI 명령 소개
1975년, IEEE는 휴렛팩커드에서 개발한 버스를 표준화했습니다. 이 버스의 원래 명칭은 HPIB(Hewlett-Packard Interface Bus)였며 이후 GPIB(General Purpose Interface Bus)로 변경되었습니다. 이 표준이 버스의 기계적 측면을 정의하는 IEEE 488(IEEE 488.1)입니다. 그 다음 표준인 IEEE 488.2는 프로토콜 특성을 정의합니다. 이 때에는 제조업체들이 기기 제어 명령을 정의하는 일정한 규칙이 없었습니다. 동일 제조업체에서 제작한 모델도 다른 명령을 사용하는 경우가 있었습니다.
1990년에 SCPI 컨소시움은 IEEE-488.2 표준에 대해 최초의 SCPI(Standard Commands for Programmable Instruments) 표준을 추가 릴리스했습니다.
SCPI 명령은 물리 통신 계층을 통해 기기로 전송되는 ASCII 문자열입니다. 이 명령은 다음을 수행할 수 있습니다.
- 연산을 설정합니다. 예: 기기를 리셋하는 *RST 명령.
- 연산을 쿼리합니다. 예를 들어 *IDN? 쿼리는 기기의 식별 문자열을 쿼리합니다.
일부 SCPI 명령은 설정 명령과 쿼리 명령이 모두 가능합니다. 예를 들어, 오실로스코프의 획득 시간 명령 "TIMebase:ACQTime"이 있습니다. 이 값은 SCPI 명령인 "TIM:ACQT 10ms"를 사용해 설정할 수 있으며 "TIM:ACQT?"로 현재 값을 쿼리할 수도 있습니다.
로데슈바르즈 사용자 매뉴얼에 나와 있는 형식, 예를 들어 "TRIGger<m>:LEVel<n>[:VALue] <Level>"을 정규 형식이라고 합니다. 여기서 기억해야 할 가장 중요한 규칙이 있습니다.
- 대괄호 안의 내용은 필수가 아니며 비워둘 수 있습니다.
- 대문자 부분은 필수이며 소문자는 생략 가능합니다. 이 형식을 약식이라고 합니다. 위 명령의 약식은 예를 들어 "TRIG1:LEV2 3.5"가 있습니다. 약식을 사용할 수도 있고 "TRIGGER1:LEVEL2 3.5"와 같이 긴 형식을 사용할 수도 있지만 "TRIGGE1:LEVE2 3.5"와 같은 중간 형식은 불가합니다.
- SCPI 명령은 대소문자를 구분하지 않습니다. 약식인 "trig1:lev2 3.5" 또는 긴 형식인 "trigger1:level2 3.5" 모두 사용할 수 있습니다.
- 복수의 명령은 세미콜론 ';'을 사용해 하나의 문자열로 결합합니다. 예를 들어, "TRIG1:SOUR CH1"과 "TRIG1:LEV2 3.5"를 결합한 문자열은 "TRIG1:SOUR CH1;LEV 2"입니다. 두 번째 명령에는 "TRIG1:" 부분이 없습니다. 한 문자열 내에서는 명령 트리 경로가 달라지지 않기 때문입니다. 명령 트리 경로를 루트로 재설정하려는 경우 두 번째 명령이 시작하는 위치에 콜론 문자를 사용하십시오: "TRIG1:SOUR CH1;:CHAN2:STATe ON".
- 쿼리 형식을 만들려면 보통 끝 위치에 물음표를 추가합니다: "TRIG1:LEV2?" 물음표 다음에 추가 파라미터가 배치되는 경우가 있습니다. 물음표와 추가 파라미터 사이에는 공백 문자가 있어야 합니다. 예를 들어 "TRACE:DATA? ALL"과 같습니다.
- 단위를 지정하지 않는 숫자 파라미터는 기본 단위로 간주됩니다. 이 경우 숫자 파라미터 3.5는 3.5 볼트를 의미합니다.
전체 SCPI 표준은 여기에서 확인할 수 있습니다: SCPI-99
로데슈바르즈에서 작성한 SCPI에 대한 설명을 확인해 보십시오: SCPI를 통한 원격 제어