คำสั่งมาตรฐานสำหรับเครื่องมือที่ตั้งโปรแกรมได้


คำสั่งมาตรฐานสำหรับเครื่องมือที่ตั้งโปรแกรมได้ ( SCPI ; มักออกเสียงว่า "skippy") กำหนดมาตรฐานสำหรับไวยากรณ์และคำสั่งที่จะใช้ในการควบคุมอุปกรณ์ทดสอบและวัดที่ตั้งโปรแกรมได้ เช่นอุปกรณ์ทดสอบอัตโนมัติและอุปกรณ์ทดสอบอิเล็กทรอนิกส์[ 3 ]
ภาพรวม
SCPI ถูกกำหนดให้เป็นเลเยอร์เพิ่มเติมบน ข้อกำหนด IEEE 488.2-1987 "รหัสมาตรฐาน รูปแบบ โปรโตคอล และคำสั่งทั่วไป" [ 4 ]มาตรฐานนี้ระบุไวยากรณ์ ทั่วไป โครงสร้างคำสั่งและรูปแบบข้อมูลเพื่อใช้กับเครื่องมือทั้งหมด โดยได้แนะนำคำสั่งทั่วไป (เช่นCONFigureและMEASure) ที่สามารถใช้กับเครื่องมือใดก็ได้ คำสั่งเหล่านี้ถูกจัดกลุ่มเป็นระบบย่อย SCPI ยังกำหนดคลาสของเครื่องมือหลายประเภท ตัวอย่างเช่นแหล่งจ่ายไฟ ที่ควบคุมได้ใดๆ ก็ตาม จะใช้คลาสฟังก์ชันพื้นฐานเดียวกันDCPSUPPLYคลาสของเครื่องมือจะระบุว่าใช้ระบบย่อยใดบ้าง รวมถึงคุณสมบัติเฉพาะของเครื่องมือแต่ละประเภทด้วย
SCPI ไม่ได้กำหนดลิงก์การสื่อสารฮาร์ดแวร์ทางกายภาพ (เลเยอร์ทางกายภาพ) [ 5 ]แม้ว่าเดิมทีจะถูกสร้างขึ้นสำหรับ บัส IEEE-488.1 (GPIB) [ 5 ] SCPI ยังสามารถใช้กับRS-232 , RS-422 , RS-485 , USB , Ethernet , VXIbus , HiSLIPเป็นต้น[ 5 ]
คำสั่ง SCPI เป็นสตริงข้อความASCII [ 5 ]ซึ่งส่งไปยังเครื่องมือผ่านเลเยอร์ทางกายภาพ[ 5 ]คำสั่งประกอบด้วยคำหลักหนึ่งคำขึ้นไป ซึ่งหลายคำรับพารามิเตอร์ ในข้อกำหนด คำหลักจะเขียนดังนี้CONFigure: สามารถใช้คำหลักทั้งหมด หรือย่อให้เหลือเพียงส่วนที่เป็นตัวพิมพ์ใหญ่ก็ได้ การตอบสนองต่อคำสั่งสอบถามโดยทั่วไปจะเป็นสตริง ASCII อย่างไรก็ตาม สำหรับข้อมูลจำนวนมาก สามารถใช้รูปแบบไบนารีได้[ 3 ]
ข้อกำหนด SCPI ประกอบด้วยสี่เล่ม: เล่มที่ 1: "ไวยากรณ์และรูปแบบ", เล่มที่ 2: "คู่มืออ้างอิงคำสั่ง", เล่มที่ 3: "รูปแบบการแลกเปลี่ยนข้อมูล", เล่มที่ 4: "คลาสเครื่องมือ" ข้อกำหนดนี้เดิมทีเผยแพร่เป็นคู่มือพิมพ์ที่ไม่ฟรี จากนั้นจึงเผยแพร่เป็น ไฟล์ PDF ฟรีไฟล์เดียว ที่รวมทั้งสี่เล่มไว้ด้วยกัน[ 3 ]
ประวัติ SCPI
SCPI เปิดตัวครั้งแรกในปี พ.ศ. 2533 [ 3 ] [ 6 ]โดยมีต้นกำเนิดมาจากเลเยอร์เพิ่มเติมสำหรับIEEE-488 IEEE-488.1 ระบุบัสทางกายภาพและไฟฟ้า และ IEEE-488.2 ระบุโปรโตคอลและรูปแบบข้อมูล แต่ทั้งสองมาตรฐานไม่ได้ระบุคำสั่งเครื่องมือ ผู้ผลิตที่แตกต่างกัน หรือแม้แต่รุ่นที่แตกต่างกันของเครื่องมือประเภทเดียวกัน ก็จะใช้ชุดคำสั่งที่แตกต่างกัน SCPI สร้างมาตรฐานที่สามารถใช้ร่วมกันได้กับผู้ผลิตและรุ่นทั้งหมด โดยกำหนดให้ใช้รูปแบบข้อมูล IEEE-488.2 แต่ไม่ได้บังคับใช้บัส IEEE-488.1 [ 7 ]
ในปี พ.ศ. 2545–2546 กลุ่มSCPI Consortiumได้ลงมติให้เป็นส่วนหนึ่งของมูลนิธิ IVI (Interchangeable Virtual Instruments) [ 7 ]
ประวัติความเป็นมาของ IEEE 488.2
ในปี พ.ศ. 2530 IEEEได้นำเสนอข้อกำหนด IEEE 488.2-1987 " รหัสมาตรฐาน รูปแบบ โปรโตคอล และคำสั่งทั่วไป " ซึ่งต่อมาได้รับการแก้ไขในปี พ.ศ. 2535 เป็นIEEE 488.2-1992 [ 8 ]
แม้ว่า IEEE 488.2 จะมีไวยากรณ์ที่ไม่ขึ้นกับอุปกรณ์ แต่ก็ยังไม่มีมาตรฐานสำหรับคำสั่งเฉพาะเครื่องมือ คำสั่งในการควบคุมเครื่องมือประเภทเดียวกัน เช่น มัลติมิเตอร์ จะแตกต่างกันไปตามผู้ผลิตและแม้แต่รุ่น กองทัพอากาศสหรัฐฯ[ 9 ]และต่อมาคือ Hewlett-Packard ตระหนักถึงปัญหานี้ ในปี 1989 HP ได้พัฒนาภาษา TML [ 10 ]ซึ่งเป็นต้นแบบของ SCPI
IEC ได้พัฒนามาตรฐานของตนเองควบคู่ไปกับ IEEE โดยใช้มาตรฐาน IEC 60625-2-1993 (IEC 625) ในปี 2004 IEEE และ IEC ได้รวมมาตรฐานของตนเข้าด้วยกันเป็นมาตรฐาน IEEE/IEC "โลโก้คู่" IEC 60488-2-2004 ส่วนที่ 2 : รหัส รูปแบบ โปรโตคอล และคำสั่งทั่วไป [ 11 ] ซึ่งแทนที่ IEEE 488.2-1992 และ IEC 60625-2-1993 [ 12 ]
ไวยากรณ์คำสั่ง
คำสั่ง SCPI ที่ส่งไปยังเครื่องมือวัดอาจเป็นการดำเนิน การ ตั้งค่า (เช่น การเปิดปิดแหล่งจ่ายไฟ) หรือ การดำเนินการ สอบถาม (เช่น การอ่านค่าแรงดันไฟฟ้า) การสอบถามจะทำได้โดยการเติมเครื่องหมายคำถามไว้ท้ายคำสั่ง คำสั่งบางคำสั่งสามารถใช้ได้ทั้งในการตั้งค่าและการสอบถามเครื่องมือวัด ตัวอย่างเช่น โหมดการเก็บข้อมูลของเครื่องมือวัดสามารถตั้งค่าได้โดยใช้ACQuire:MODeคำสั่ง หรือสามารถสอบถามได้โดยใช้ACQuire:MODe?คำสั่ง คำสั่งบางคำสั่งสามารถตั้งค่าและสอบถามเครื่องมือวัดได้พร้อมกัน ตัวอย่างเช่น*CAL?คำสั่ง จะทำการปรับเทียบตัวเองบนอุปกรณ์บางชนิด แล้วส่งคืนผลลัพธ์ของการปรับเทียบ
คำสั่งที่คล้ายกันจะถูกจัดกลุ่มเป็นโครงสร้างลำดับชั้นหรือ "ต้นไม้" [ 3 ] ตัวอย่างเช่น คำสั่งใดๆ ที่จะอ่านค่าการวัดจากเครื่องมือจะเริ่มต้นด้วย " MEASure" คำสั่งย่อยเฉพาะภายในลำดับชั้นจะถูกซ้อนด้วย:อักขระโคลอน ( ) ตัวอย่างเช่น คำสั่ง "วัดแรงดันไฟฟ้ากระแสตรง" จะอยู่ในรูปแบบMEASure:VOLTage:DC?และคำสั่ง "วัดกระแสไฟฟ้ากระแสสลับ" จะอยู่ในรูปMEASure:CURRent:AC?แบบ
:วัด แรงดันไฟฟ้า :DC? :AC? :ปัจจุบัน :DC? :AC? ...
กรณี
แม้ว่าไวยากรณ์คำสั่งข้างต้นจะแสดงคำสั่งในรูปแบบตัวพิมพ์ใหญ่และตัวพิมพ์เล็กผสมกัน แต่SCPI ไม่คำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
- ตัวอย่างเช่น สำหรับ
VOLTageตัวเลือกต่อไปนี้ทั้งหมดถือเป็นการแสดงผลที่ถูกต้อง:VOLTAGE,voltage,Voltage,VoLtAgE.
การย่อคำสั่ง
ไวยากรณ์คำสั่งแสดงอักขระบางตัวในรูปแบบตัวพิมพ์ใหญ่และตัวพิมพ์เล็กผสมกัน การย่อคำสั่งให้ส่งเฉพาะตัวพิมพ์ใหญ่จะมีความหมายเหมือนกับการส่งคำสั่งที่มีทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก[ 3 ]
- ตัวอย่างเช่น คำสั่ง “
SYSTem:COMMunicate:SERial:BAUD 2400” จะตั้งค่าอินเทอร์เฟซการสื่อสารแบบอนุกรม RS-232 เป็น 2400 บิต/วินาทีหรืออาจย่อเป็น “SYST:COMM:SER:BAUD 2400” ก็ได้ คำสั่งสอบถาม “SYSTem:COMMunicate:SERial:BAUD?” หรือ “SYST:COMM:SER:BAUD?” จะสั่งให้เครื่องมือรายงานอัตราการส่งข้อมูลปัจจุบัน
คำสั่งที่ถูกต้องมีเพียงรูปแบบย่อและรูปแบบเต็มของแต่ละคำสั่งเท่านั้น รูปแบบย่อยอื่นๆ ทั้งหมดไม่ถูกต้อง
- ตัวอย่างเช่น สำหรับ
COMMunicateเฉพาะCOMM(รูปแบบสั้น) และCOMMUNICATE(รูปแบบยาว) เท่านั้นที่ถูกต้อง แต่COM,COMMUN, เซตย่อยไม่ถูกต้อง นอกจากนี้ตัวอักษรที่ต่อท้ายก็ไม่ถูกต้องเช่น กันCOMMUNICเช่นCOMMUNICATED
การรวมคำสั่งเข้าด้วยกัน
สามารถออกคำสั่งหลายคำสั่งให้กับเครื่องดนตรีได้ในสายเดียว โดยคำสั่งเหล่านั้นประกอบด้วยคำสั่งง่ายๆ ที่คั่นด้วยเครื่องหมายเซมิโคลอน ( ;)
- ตัวอย่างเช่น คำสั่ง "วัดแรงดันไฟฟ้ากระแสตรง จากนั้นวัดกระแสไฟฟ้ากระแสสลับ" จะถูกออกในรูปแบบ
MEASure:VOLTage:DC?;:MEASure:CURRent:AC?.
คำสั่งง่ายๆ ที่ขึ้นต้นด้วยเครื่องหมายโคลอน ( :) จะถูกตีความโดยอ้างอิงจากรากของโครงสร้างคำสั่ง ส่วนคำสั่งอื่นๆ จะอ้างอิงถึงโหนดสุดท้ายของคำสั่งก่อนหน้าโดยปริยาย (เว้นแต่ว่าคำสั่งนั้นจะขึ้นต้นด้วยเครื่องหมายดอกจันอยู่แล้ว) ตัวอย่างเช่น
:แหล่งที่มา:ความถี่:เริ่มต้น 100;หยุด 200
เป็นคำย่อสำหรับข้อความ
:SOURce:FREQuency:START 100;:SOURce:FREQuency:STOP 200
เส้นทางปัจจุบันจะถูกรีเซ็ตเป็นเส้นทางหลักโดย: อักขระขึ้นบรรทัดใหม่, คำสั่ง *RST และเมื่อเปิดเครื่องครั้งแรก
ข้อโต้แย้ง
คำสั่งบางคำสั่งยอมรับหรือต้องการอาร์กิวเมนต์เพิ่มเติมอย่างน้อยหนึ่งรายการ อาร์กิวเมนต์จะระบุไว้หลังคำสั่ง และคั่นด้วยช่องว่างระหว่างคำสั่ง[ 11 ] ตัวอย่างเช่น คำสั่งในการตั้งค่าโหมดทริกเกอร์ของเครื่องมือเป็น "ปกติ" อาจระบุเป็น " TRIGger:MODe NORMal" โดยที่คำว่า " NORMal" ถูกใช้เป็นอาร์กิวเมนต์ของTRIGger:MODeคำสั่ง " " เมื่อมีการระบุอาร์กิวเมนต์หลายรายการ อาร์กิวเมนต์จะถูกเขียนเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น คำสั่งสอบถามที่ทำการวัดแรงดันไฟฟ้ากระแสสลับบนมัลติมิเตอร์ดิจิทัล โดยใช้ช่วงการวัด 10 VRMS ของมิเตอร์ และแสดงค่าแรงดันไฟฟ้าที่วัดได้ด้วยความละเอียด 4-1/2 หลัก จะเขียนเป็น " "MEASure:VOLTage:AC? 10,4
อาร์กิวเมนต์จำนวนเต็ม
สำหรับคำสั่งที่ยอมรับ อาร์กิวเมนต์ จำนวนเต็มค่าอาจถูกระบุในรูปแบบตัวเลขคอมพิวเตอร์ หลายรูปแบบ ได้แก่ เลขฐานสิบ เลขฐานสิบหก เลขฐานแปด และเลขฐานสอง รูปแบบสามรูปแบบสุดท้ายถูกกำหนดโดย IEEE 488.2 [ 11 ]ซึ่ง SCPI ใช้เป็นพื้นฐาน[ 3 ] ตัวเลข ฐานสิบ ( ฐาน 10) จะไม่มีคำนำหน้า ตัวเลข ฐานสิบหก ( ฐาน 16) จะมีคำนำหน้าเป็นหรือ ตัวเลข ฐานแปด (ฐาน 8) จะมีคำนำหน้า เป็นหรือและ ตัวเลข ฐานสอง (ฐาน 2) จะมีคำนำ หน้าเป็น หรือ ตัวเลขฐานสิบหกอาจใช้ ตัวพิมพ์ ใหญ่ (ABCDEF) หรือ ตัวพิมพ์ เล็ก (abcdef) หรือ ตัวพิมพ์ ผสม (aBcDeF) สำหรับเลขฐานแปด เลือกใช้ตัวอักษร " Q " แทนตัวอักษร " O " เพื่อลดความสับสนทางสายตากับตัวเลข " 0 " (ศูนย์) [ 11 ]#H#h#Q#q#B#b
ตัวอย่างข้อโต้แย้งต่อไปนี้มีค่าเท่ากันในเชิงตัวเลข:
- ทศนิยม:
26 - เลขฐานสิบหก:
#H1Aหรือ#h1a - เลขฐานแปด:
#Q32หรือ#q32 - ไบนารี:
#B11010หรือ#b11010
คำสั่ง 488.2
เนื่องจาก SCPI ถูกกำหนดให้เป็นเลเยอร์เพิ่มเติมบนข้อกำหนด IEEE 488.2 อุปกรณ์ที่สอดคล้องกับ SCPI จึงควรรับรู้คำสั่ง 488.2 ต่างๆ ด้วยเช่นกัน[ 3 ] คำสั่งเหล่านี้อาจเรียกกันอย่างไม่เป็นทางการว่าคำสั่งดอกจัน (หรือคำสั่งดาว) เพราะขึ้นต้นด้วยอักขระดอกจัน*
ตามมาตรา 4.1.1 ของเล่ม 1 ของ SCPI อุปกรณ์ SCPI ทั้งหมดต้องใช้งานคำสั่ง 488.2 ต่อไปนี้[ 3 ] ในโลกแห่งความเป็นจริง อุปกรณ์ทดสอบระดับล่างบางตัวอาจรองรับเฉพาะคำสั่ง 488.2 เหล่านี้บางส่วน หรืออาจยอมรับคำสั่งแต่ไม่ดำเนินการใดๆ ผู้ใช้ควรตรวจสอบคู่มือโปรแกรมเมอร์อย่างเป็นทางการสำหรับแต่ละอุปกรณ์ก่อนที่จะสรุปว่าคำสั่ง 488.2 เหล่านี้ได้รับการสนับสนุนทั้งหมด
*CLS*ESE*ESE?*ESR?*IDN?*OPC*OPC?*RST*SRE*SRE?*STB?*TST?*WAI
ตามมาตรา 4.1.2 ของเล่ม 1 ของ SCPI คำสั่ง 488.2 อื่นๆ ทั้งหมดที่ไม่ได้ระบุไว้ข้างต้นถือเป็นทางเลือกและไม่จำเป็นสำหรับ SCPI [ 3 ]
*AAD*CAL?*DDT*DDT?*DLF*DMC*EMC*EMC?*GMC?*IST?*LMC?*LRN?*OPT?*PCB*PMC*PRE*PRE?*PSC*PSC?*PUD*PUD?*RCL*RDT*RDT?*SAV*TRG*RMC*SDS
ดูเพิ่มเติม
- IEEE-488 (GPIB)
- สถาปัตยกรรมซอฟต์แวร์เครื่องดนตรีเสมือน (VISA)
- คนขับเครื่องมือ
- รายการหมายเลขพอร์ต TCP และ UDP – scpi-raw บนพอร์ต TCP 5025 และพอร์ต UDP 5025
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการขององค์กร SCPI
- ข้อกำหนด
- SCPI-1999 เล่ม 1-4ไฟล์ PDF จำนวน 819 หน้าดาวน์โหลดฟรี(ไม่รวมคำสั่งที่มีเครื่องหมายดอกจัน (*) เนื่องจากระบุไว้ใน IEEE 488.2 และ IEC 60488-2 แล้ว)
- IEEE 488.2-1992ไฟล์ PDF จำนวน 254 หน้า ราคา56 ดอลลาร์สหรัฐในปี 2026 (ถูกแทนที่ด้วย IEEE/IEC 60488-2-2004)
- เอกสาร IEEE/IEC 60488-2-2004ไฟล์ PDF จำนวน 264 หน้า ราคา404 ดอลลาร์สหรัฐในปี 2026
ตัวอย่างคู่มือการเขียนโปรแกรม
- มัลติมิเตอร์
- เอกสาร PDF เกี่ยวกับเครื่องวัดพิกัดสามมิติ Tektronix DMM6500จำนวน 1202 หน้า
- ออสซิลโลสโคป
- เอกสาร PDF จำนวน 1896 หน้า เกี่ยวกับตระกูลผลิตภัณฑ์ Keysight InfiniiVision
- Rohde-Schwarz MXO ซีรี่ส์ 4 , ไฟล์ PDF 848 หน้า
- เอกสาร PDF จำนวน 2050 หน้า เกี่ยวกับตระกูล Tektronix MSO 4/5/6