Community코딩 & 개발github.com

JaredCabot/siglent-sds2000x-hd

Siglent SDS2000X HD 12비트 오실로스코프(SDS2104X/2204X/2354X/2504X HD)를 SCPI(USB/LAN)로 원격 제어하고, 파형을 캡처하며, 검증 및 서비스합니다: 트리거, 디코드, MSO, FFT, 전력 분석, 보드 플롯, AWG.

siglent-sds2000x-hd란 무엇인가요?

이 스킬은 Siglent SDS2000X HD 시리즈 오실로스코프(SDS2104X/2204X/2354X/2504X HD)를 완전히 원격 제어하고 프로그래밍하기 위한 포괄적인 가이드입니다. SCPI 명령어를 통해 USB(USBTMC), LAN(VXI-11, Raw Socket, Telnet) 및 웹 인터페이스를 지원하며, 12비트 ADC, 최대 2 GSa/s 샘플링 속도, 200 Mpts/ch 메모리, 4개 아날로그 채널과 16개 디지털 채널(MSO) 등의 주요 사양을 상세히 다룹니다. 사용자는 수동 조작의 미묘한 차이(예: 12비트 데이터 전송 시 WORD 형식 사용, 쿼리 정밀도 설정, 인터리빙 모드 변경 시 메모리 깊이 재설정 필요)와 함께 트리거, 직렬 디코드(I2C, SPI, UART, CAN 등), 전력 분석, 보드 플롯, AWG 등 고급 기능을 활용할 수 있습니다. 또한, 파이썬 드라이버 예제를 제공하여 자동화된 테스트, 성능 검증 및 서비스 작업을 손쉽게 수행할 수 있도록 돕습니다. 이 가이드는 아직 실제 기기로 완전히 검증되지 않았으므로, 사용 시 실제 벤치 결과와 비교하여 업데이트하는 것이 좋습니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/JaredCabot/claude-instrument-skills/tree/HEAD/siglent-sds2000x-hd

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Siglent SDS2000X HD: 작동, 원격 제어 및 서비스

SDS2000X HD는 4채널, 12비트 오실로스코프 제품군입니다: SDS2104X HD (100 MHz), SDS2204X HD (200 MHz), SDS2354X HD (350 MHz), SDS2504X HD (500 MHz). 2 GSa/s, 200 Mpts/ch, 10.1인치 1024 x 600 터치 스크린, 옵션 16 디지털 채널, 옵션 25 MHz 단일 채널 AWG, 직렬 트리거 및 디코드, 전력 분석 및 보드 플롯.

출처:

약어문서용도
UMSDS2000X HD 시리즈 사용자 매뉴얼 EN01B (302쪽)전면 패널, 모든 메뉴, 동작 방식
PGSDS 시리즈 프로그래밍 가이드 EN11G (855쪽)SCPI. 다중 모델 가이드; SDS2000X HD 지원은 펌웨어 1.2.0.2 이상 필요
QSSDS2000X HD 빠른 시작 가이드 EN01CUM의 간략 버전; 자체 교정 및 빠른 교정 참고 사항
SMSDS2000X HD 서비스 매뉴얼 EN01A성능 검증, 분해, 보드 테스트 포인트
DSSDS2000X HD 데이터시트 EN01A (네 가지 매뉴얼 중 하나가 아님; 유통업체 사본에서 가져옴)사양은 데이터시트를 참조. 최신 EN02B가 존재하며, 그림 위치가 다를 수 있음

페이지 참조는 인쇄된 페이지 번호입니다("PG p.482", "UM p.73").

아직 실제 기기로 확인된 사항은 없습니다. PG는 10개의 모델 제품군을 다루며, 많은 테이블이 텍스트 추출 과정에서 행 레이아웃을 잃었습니다. SDS2000X HD 값을 재구성해야 하는 경우 이 파일에 명시합니다. UNVERIFIED(미확인)으로 표시된 것은 테스트해야 할 단서입니다. 벤치 결과가 이 파일과 다를 경우 벤치 결과를 신뢰하고 스킬을 업데이트하세요.

목차

  1. 기기 개요
  2. 주의 사항
  3. 연결
  4. SCPI 규칙, 동기화 및 오류
  5. 전면 패널 및 터치 스크린
  6. 수직 시스템
  7. 수평, 수집, 시퀀스, 히스토리, 확대/축소
  8. 트리거
  9. 직렬 트리거 및 디코드
  10. 디지털 채널 (MSO)
  11. 측정, 커서, 카운터, DVM
  12. 수학 및 FFT
  13. 검색, 탐색, 마스크 테스트, 히스토그램
  14. 전력 분석 및 보드 플롯
  15. 참조 파형, 메모리 파형, 저장 및 불러오기
  16. 디스플레이
  17. 파형 발생기 (AWG)
  18. 파형 데이터 읽기
  19. 시스템, LAN, 옵션, 펌웨어, 자체 교정
  20. 성능 검증
  21. 서비스 및 문제 해결
  22. 파이썬 드라이버
  23. 레시피
  24. 매뉴얼 불일치 사항

1. 기기 개요

항목값출처
채널4 아날로그 + EXT 트리거; SDS2000HD-16LA 및 SPL2016 프로브 사용 시 16 디지털UM p.34-35, 64
ADC12 비트DS
샘플 속도2 GSa/s(인터리빙), 1 GSa/s(비인터리빙)DS, SM p.28
메모리200 Mpts/ch(인터리빙), 100 Mpts/ch(비인터리빙); 평균 및 ERES 모드에서 20/10 Mpts (DS)UM p.73, DS
업데이트 속도최대 100,000 wfm/s(일반), 500,000 wfm/s(시퀀스)DS, UM p.77
시퀀스 / 히스토리최대 80,000 세그먼트/프레임, 최소 2 µs 트리거 간격UM p.77, 80
V/div0.5 mV ~ 10 V/div (1 MΩ); 0.5 mV ~ 1 V/div (50 Ω, 1X 프로브)DS
수직 범위8 divUM p.40
대역폭 제한20 MHz, 200 MHz (하드웨어)UM p.60-61
입력1 MΩ ±2% ∥ 16 pF ±2 pF 또는 50 Ω ±1%. 1 MΩ에서 최대 400 Vpk (DC+AC, DC ~ 10 kHz); 50 Ω에서 5 VrmsDS, SM p.46
DC 이득 정확도사양 ±0.5% (5 mV ~ 10 V/div), ±1.5% (0.5 ~ 4.95 mV/div) (DS). PV 제한 ±0.6% (5.8 mV ~ 10 V/div), ±1.5% (1 ~ 4.45 mV/div) (SM p.28-32)DS, SM
오프셋 정확도±(오프셋의 0.5% + 풀 스케일의 0.5% + 1 mV)SM p.33
타임베이스1 ns/div ~ 1000 s/div; 초기 ±2 ppm, 첫해 에이징 ±0.5 ppmDS
채널 스큐≤ 100 psSM p.45
트리거 레벨 범위화면 중심 기준 ±4.1 div (채널); EXT ±0.61 V; EXT/5 ±3.05 VPG p.492, DS
홀드오프8 ns ~ 30 s 또는 1 ~ 10^8 이벤트PG
디지털500 MSa/s, 50 Mpts/ch, 두 임계값 그룹 D0-D7 및 D8-D15, -10 ~ +10 VDS, UM p.69
AWG (옵션 FG)1 ch, 25 MHz, 125 MSa/s, 14 비트, 16 kpts 임의 파형, 50 Ω에서 ±1.5 V (Hi-Z에서 ±3 V)DS, UM p.271
FFT최대 2 Mpts (2^21)UM p.198
디스플레이10.1인치 TFT, 1024 x 600, 정전식 멀티 터치DS
I/OUSB 2.0 호스트 전면 2개, 후면 1개; USB 2.0 디바이스 (USBTMC); 10/100 LAN; EXT 트리거 입력; Aux Out; AWG 출력UM p.34-35
전원100-240 V 50/60 Hz, 최대 120 WSM p.9
환경0 ~ 50 °C 작동; 30 °C에서 5-90% RH, 40 °C에서 50%; ≤ 3000 mSM p.7

모델별 아날로그 수치 (DS, 일반적): 상승 시간 1 / 1.7 / 3.5 ns 및 노이즈 65 / 55 / 50 µVrms (1 mV/div 50 Ω) (350 / 200 / 100 MHz 모델).

인터리빙. 채널은 CH1/CH2 및 CH3/CH4 쌍으로 구성됩니다. 각 쌍에서 한 채널만 켜져 있으면 해당 채널은 2 GSa/s, 200 Mpts로 작동합니다. 한 쌍의 두 채널이 모두 켜져 있으면 쌍은 1 GSa/s, 100 Mpts로 떨어집니다. 따라서 CH1 + CH3은 여전히 인터리빙되지만, CH1 + CH2는 그렇지 않습니다. UM은 이를 "단일 채널" 및 "이중 채널" 모드(UM p.73), SM은 "인터리빙" 및 "비인터리빙" (SM p.28)이라고 부릅니다. 500 MHz 모델에서는 ~350 MHz 안티에일리어싱 필터가 속도가 ≤ 1 GSa/s일 때 자동으로 켜집니다(UM p.42).

전면 패널 (UM p.34): C1-C4 BNC, 프로브 보정 (1kHz, 0-3V 사각파) 및 접지 러그, USB 호스트 2개, 디지털 프로브 커넥터, 전원 키 (주황색 = 대기, 흰색 = 켜짐, SM p.57). 후면 (UM p.35): EXT TRIG, Aux Out (기본적으로 트리거 출력; 마스크 테스트 켜짐 시 패스/페일 펄스), WaveGen 출력, LAN, USB 디바이스, USB 호스트, AC 입력. BNC 쉘은 섀시(접지) 전위에 있습니다(SM p.10). 10 MHz 기준 입력 또는 출력은 없습니다.

옵션 (UM, DS):

옵션잠금 해제 기능
SDS2000HD-FG내장 AWG (하드웨어는 장착되어 있으며, 라이선스로 잠금 해제). 외부 SAG1021I에도 필요
SDS2000HD-16LA16 디지털 채널 (SPL2016 프로브 필요)
SDS2000HD-PA전력 분석
-I2S, -1553B, -FlexRay, -CANFD, -SENT, -Manch (DS 이름)기본 I2C, SPI, UART, CAN, LIN 외 직렬 프로토콜
BW1T2, BW1T3, BW1T5, BW2T3, BW2T5, BW3T5 (DS 이름)대역폭 업그레이드 (100/200/350에서 200/350/500 MHz)

라이선스는 Utility > Menu > Software Options (유형, 키, 설치, 재부팅, QS p.34)에서 입력하거나 USB 스틱 루트의 라이선스 파일에서 설치합니다. 설치되지 않은 "임시" 라이선스는 최대 30회까지 사용할 수 있습니다 (UM p.292). 디지털 채널 디코딩에는 16LA와 프로토콜 라이선스가 모두 필요합니다(UM p.65).

2. 주의 사항

  1. 12비트 데이터는 WORD 전송이 필요합니다. :WAVeform:WIDTh는 기본적으로 BYTE입니다(프리앰블의 COMM_TYPE 기본값은 0 = 바이트, PG p.754). 이렇게 하면 하위 비트가 손실됩니다. :WAV:DATA? 전에 :WAV:WIDT WORD를 보내세요. 워드는 부호 있는 int16, 기본적으로 LSB 우선, 왼쪽 정렬, 하위 비트는 0으로 채워집니다. 프리앰블의 code_per_div(오프셋 0xA4)로 스케일링하며, 하드 코딩된 25, 30 또는 7680을 사용하지 마세요(PG p.753, 758).

  2. *IDN?, *OPC? 및 *RST만 문서화되어 있습니다 (PG p.29). 문서화된 오류 큐, *CLS, *ESR? 또는 *STB?는 없습니다. 범위를 벗어난 숫자는 일반적으로 경고 없이 클램핑됩니다 (:ACQ:SRAT, :TIM:SCAL, 줌, 게이트 커서). 중요한 설정 후에는 다시 읽어보세요. :SYSTem:ERRor?, *ESR? 및 PG의 C# 예제에서 사용된 레거시 INR?를 시도해 볼 가치가 있습니다(UNVERIFIED).

  3. 쿼리 정밀도는 기본적으로 유효 숫자 3자리입니다. :FORMat:DATA는 NR3 응답이 전달하는 자릿수를 설정합니다: SINGle = 7, DOUBle = 14, CUSTom,<1-64> (PG p.34). 기본값에서 :TRIG:FREQ?는 9.99998 MHz 신호에 대해 "1.00E+07"을 반환합니다. 연결 후 한 번 :FORM:DATA DOUB를 보내세요.

  4. 상태 문자열은 대소문자가 혼합되고 아포스트로피가 포함됩니다. :TRIGger:STATus?는 Arm, Ready, Auto, Trig'd, Stop 또는 Roll을 반환합니다(PG p.483). 정확히 비교하거나 양쪽을 대문자로 변환하세요.

  5. *OPC?는 보류 중인 작업이 완료될 때까지 인터페이스를 차단합니다 (PG p.30). PG는 이것이 수집을 기다린다고 명시하지 않습니다. 단일 샷의 경우 :TRIG:MODE SINGle을 보내고 :TRIG:STAT?를 폴링하여 Stop을 읽을 때까지 기다리세요. 이것이 PG의 C# 예제가 하는 일입니다 (PG p.827-828).

  6. 두 가지 진실 공급원이 있는 설정. 직렬 트리거 설정과 디코드 설정은 완전히 별개입니다(UM p.117). 디코드 보드레이트를 변경해도 트리거의 보드레이트는 변경되지 않습니다. :DECode:BUS<n>:COPY FROMtrigger(트리거에서 디코드로) 또는 TOTRigger(디코드에서 트리거로)로 복사하고, 변경 후 다시 복사하세요. PG의 COPY 예제는 방향을 반대로 설명하고 있습니다 (PG p.143); 매개변수 정의를 신뢰하세요.

  7. 임계값 및 레벨은 채널의 현재 스케일 및 오프셋의 ±4.1 div로 제한됩니다 ([-4.1*vdiv - offset, 4.1*vdiv - offset]). 이는 트리거 레벨, 디코드 임계값, 검색 레벨 및 카운터 레벨에 적용됩니다. 먼저 V/div 및 오프셋을 설정한 다음 레벨을 설정하세요. 범위 밖의 값은 클램핑되거나 거부되며, PG는 어느 쪽인지 명시하지 않습니다.

  8. 인터리빙은 메모리와 속도를 변경합니다. 한 쌍의 두 번째 채널을 켜면 (CH1+CH2 또는 CH3+CH4) 샘플 속도와 메모리가 절반이 됩니다. :ACQ:MDEPth는 현재 모드의 토큰만 허용합니다: 인터리빙 시 20k|200k|2M|20M|200M, 비인터리빙 시 10k|100k|1M|10M|100M (PG p.40). 먼저 채널을 설정한 다음 메모리 깊이를 설정하세요. V/div 또는 인터리브 모드를 변경하면 수집을 일시적으로 중단시키는 백그라운드 ADC 교정이 트리거됩니다(QS p.34).

  9. 실행 중에는 분석이 화면상의 레코드만 사용합니다. 측정, 수학, 디코드 및 검색은 Fixed Memory 모드에서도 Stop을 누를 때까지 화면 밖의 샘플을 무시합니다(UM p.76).

  10. 평균 및 ERES는 시퀀스 모드에서 사용할 수 없으며 (PG p.47), 메모리 깊이를 제한하고(PG p.41; DS에 따르면 20/10 Mpts), ERES는 대역폭을 줄입니다: 3비트는 0.007 x Fs를 남깁니다(UM p.75).

  11. :CHANnel<n>:SCALe?는 프로브 스케일링됩니다 (PG p.58), 오프셋과 보내는 레벨도 마찬가지입니다. 스케일, 오프셋 및 트리거 레벨 전에 :CHAN<n>:PROBe를 설정하세요. 파형 프리앰블의 V/div 및 오프셋은 프로브를 제외합니다; 0x148의 프로브 팩터를 곱하여 프로브 팁 전압을 얻으세요.

  12. 수동 프로브는 1 MΩ이 필요합니다. 50 Ω에서 10X 프로브는 유용한 것을 읽지 못하며, 50 Ω 입력은 고전력 입력이 아닙니다(UM p.62; DS에 따르면 최대 5 Vrms). 라이브 고전압 신호가 있는 채널을 스크립트에서 50 Ω으로 전환하지 마세요.

  13. 16진수 필드는 10진수로 입력하며, "don't care"는 최대값보다 하나 더 큽니다. :TRIG:CAN:ID 125935441 (0x7819F51). 데이터 바이트: 256 = 0xXX. IIC 주소 1024, CAN 11비트 ID 2048, 29비트 ID 536870912, LIN ID 64, FlexRay ID 2048 (PG p.640-712).

  14. 잘못 인쇄된 열거형. BITorder는 {LSM|MSB}로 인쇄되어 있습니다; LSB를 보내세요. :TRIGger:TYPE 및 :SEARch:MODE는 PULSE를 받습니다 (PULSe 서브시스템 이름이 아님). Manchester 극성은 PULarity로 인쇄되어 있습니다; POLarity를 보내세요. SPI 래치 에지는 :TRIGger:SPI:LATChedge이지 ...:SPI:CLK:LATChedge가 아닙니다(PG p.653, 484, 228, 661).

  15. 일부 쿼리는 인수를 받습니다. :TRIG:PATT:LEV? C2 및 :TRIG:DEL:LEV? C2는 C2,<value>를 반환합니다; :MEAS:SIMP:VAL? PKPK; :MEAS:ADV:P1:STAT? MEAN. 통계가 꺼져 있을 때 여러 쿼리가 숫자 대신 OFF 단어를 반환합니다(:COUN:STAT:VAL?, :MEAS:ADV:P<n>:STAT?). PG는 잘못된 측정이 무엇을 반환하는지 명시하지 않습니다: 모든 float() 변환을 보호하세요.

  16. 요청하지 않으면 원격이 패널을 잠그지 않습니다. :SYSTem:REMote ON은 키와 터치 스크린을 잠급니다; OFF는 해제합니다(PG p.467). REMote ON 상태에서 충돌하는 스크립트는 해제될 때까지 범위를 잠긴 상태로 둡니다.

  17. 파일 경로는 유형에 대해 확인되지 않습니다. :SAVE:...는 확장자에서 형식을 유추하지 않습니다. 접두사가 없는 경로는 U-disk0/로 이동합니다. 접두사: local/, net_storage/, U-disk0/, U-disk1/ (PG p.407-413). :RECall:SERase는 오실로스코프 내부에 저장된 모든 사용자 파일을 삭제합니다(PG p.397).

  18. 펌웨어 업데이트 중에는 전원이 꺼지면 안 됩니다. 업그레이드 중 정전이 발생하면 오실로스코프가 부팅되지 않을 수 있습니다(UM p.294). 복구는 Siglent USB 복구 패키지로 가능합니다(SM p.57).

  19. 문서화된 기본값이 거의 없습니다. PG는 트리거, 디코드 또는 카운터에 대한 기본값을 명시하지 않습니다. 측정에 의존하는 모든 매개변수를 설정하세요.

3. 연결

USB: 후면 USB Device 포트 (Type B). USBTMC로 열거되며 공급업체 ID는 0xF4EC입니다(PG p.813 예제 USB0::0xF4EC::0xEE38::<시리얼>::INSTR; 제품 ID 0xEE38은 예제이므로 하드 코딩하지 말고 열거하세요). Windows에서는 NI-VISA를 설치하거나(런타임 엔진이면 충분, PG p.19) pyvisa-py와 libusb를 사용하세요.

LAN: Utility > Menu > I/O > LAN Config, DHCP 또는 고정 IP, 마스크, 게이트웨이 및 DNS (UM p.289-290). SCPI 등가물은 따옴표 문자열을 받습니다: :SYST:COMM:LAN:TYPE STATIC, :SYST:COMM:LAN:IPAD "192.168.1.50", :SYST:COMM:LAN:SMAS "255.255.255.0", :SYST:COMM:LAN:GAT "192.168.1.1", :SYST:COMM:LAN:MAC? (PG p.455-458).

프로토콜주소참고
VXI-11 (VISA)TCPIP0::<ip>::INSTR (또한 TCPIP::<ip>::inst0::INSTR)PG 예제에서 둘 다 사용
Raw 소켓TCP 포트 5025명령은 \n으로 끝남. 응답은 \n으로 끝남; 바이너리 블록은 0A 0A로 끝남
TelnetTCP 포트 5024프롬프트 SCPI>; Ctrl+] 후 quit으로 종료 (PG p.24)
웹http://<ip>라이브 원격 화면, 스크린샷, BIN/CSV 파형 다운로드, bin-to-CSV 변환기, 펌웨어 업그레이드 (UM p.299). 최대 20바이트 비밀번호: Utility > Menu > I/O > Web Server
VNC포트 5900-5999:SYST:COMM:VNCPort 5901. 각 Siglent 기기에 고유한 포트를 할당하세요 (UM p.290)
LXILXI 1.5 (Device Spec 2016)LAN Reset은 DHCP, ping, mDNS를 복원하고 웹 비밀번호를 지웁니다 (UM p.289)

에뮬레이션: Utility > Menu > I/O > Emulation을 "Tektronix"로 설정하면 SCPI 세트가 Tek 호환 세트로 전환됩니다(UM p.291). 이 파일의 모든 항목에 대해서는 Siglent로 두세요.

파형 전송에 적합한 PyVISA 설정 (PG p.837):

import pyvisa
rm = pyvisa.ResourceManager()            # 또는 ResourceManager('@py')
sds = rm.open_resource("TCPIP0::192.168.1.50::INSTR")
sds.timeout = 10000                      # ms, 읽기당; 10 Mpt WORD 조각은 20 MB (100M LAN에서 ~2초)
sds.chunk_size = 20 * 1024 * 1024
sds.write_termination = "\n"
# read_termination 설정 안 함: 설정하면 VISA가 파형 내부의 첫 번째 0x0A 바이트에서
# 바이너리 읽기를 중단합니다. 텍스트 응답은 직접 스트립하세요.
print(sds.query("*IDN?").strip())  # Sigl

…

[번역 생략]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬