לדלג לתוכן

SCPI

מתוך ויקיפדיה, האנציקלופדיה החופשית
פאנל אחורי של אוסצילוסקופ דיגיטלי Tektronix TDS210 המציג מחברי RS-232 (DE9) ו-IEEE-488 המקבלים פקודות SCPI מרוחקות.[1]
פאנל אחורי של אוסצילוסקופ דיגיטלי Rigol DS1074Z המציג מחברי USB - B ו-Ethernet (RJ45) המקבלים פקודות SCPI מרוחקות.[2]

SCPI (ראשי תיבות באנגלית של: Standard Commands for Programmable Instruments; מבוטא "סקאפי", באנגלית "סקיפי") הוא שמו של תקן עבור תחביר ופקודות לשימוש בבקרת התקני בדיקה ומדידה הניתנים לתכנות, כגון ציוד בדיקה אוטומטי (ATE) וציוד בדיקה אלקטרוני.[3]

סקירה כללית

[עריכת קוד מקור | עריכה]

SCPI הוגדר כשכבה נוספת מעל מפרט IEEE 488.2-1987 שכותרתו "Standard Codes, Formats, Protocols, and Common Commands (תרגום: קודים סטנדרטיים, פורמטים, פרוטוקולים ופקודות נפוצות)".[4] התקן מציין תחביר משותף, מבנה פקודה ומבני נתונים, לשימוש עם המכשירים. הוא הציג פקודות כלליות (כגון CONFigure ו - MEASure) שניתן להשתמש בהן עם כל מכשיר. פקודות אלו מקובצות לתת-מערכות. SCPI גם מגדיר כמה סוגים של מכשירים. לדוגמה, כל ספק כוח שניתן לשליטה יממש את אותה מחלקת פונקציונליות בסיס DCPSUPPLY. מחלקות מכשירים מציינים אילו תת-מערכות הם מיישמים, כמו גם כל תכונות ספציפיות למכשיר.

קישור התקשורת החומרה הפיזי אינו מוגדר על ידי SCPI. למרות שהוא נוצר במקור עבור האפיק IEEE-488.1 (או GPIB), ניתן להשתמש ב-SCPI גם עם RS-232, RS-422, Ethernet, USB, VXIbus, HiSLIP ועוד.

פקודות SCPI הן מחרוזות טקסטואליות ASCII, הנשלחות אל המכשיר מעל השכבה הפיזית (למשל, IEEE-488.1). פקודות הן סדרה של מילת מפתח אחת או יותר, שרבות מהן לוקחות פרמטרים. במפרט, מילות מפתח כתובות CONFigure : ניתן להשתמש בכל מילת המפתח, או שניתן לקצר אותה רק לחלק האותיות הגדולות. תגובות לפקודות שאילתה הן בדרך כלל מחרוזות ASCII. עם זאת, עבור נתונים בכמות גדולה, ניתן להשתמש בפורמט בינארי.[3]

מפרט SCPI מורכב מארבעה כרכים: כרך 1: "תחביר וסגנון", כרך 2: "הפניה לפקודה", כרך 3: "פורמט נתונים", כרך 4: "מחלקות מכשירים".[3] המפרט שוחרר במקור כמדריכים מודפסים שאינם בחינם, ולאחר מכן כקובץ PDF בחינם.

שוחרר לראשונה בשנת 1990,[3][5] SCPI היה כשכבה נוספת עבור IEEE-488. IEEE-488.1 ציין את הערוץ הפיזי והחשמלי, ו-IEEE-488.2 ציין פרוטוקול ופורמט נתונים, אך אף אחד מהם לא צוין פקודות מכשיר. יצרנים שונים, ואפילו דגמים שונים, מאותו סוג של מכשיר ישתמשו במערכות פקודות שונות. SCPI יצר תקן שיכול להיות בסיס משותף לכל היצרנים והדגמים. הוא מחייב שימוש בפורמטים של IEEE-488.2, אך אינו מחייב את האפיק IEEE-488.1.[6]

בשנים 2002-2003, קונסורציום SCPI הצביע להיות חלק מקרן IVI (מכשירים וירטואליים מתחלפים).[6]

היסטוריית IEEE 488.2

[עריכת קוד מקור | עריכה]

בשנת 1987, IEEE הציגה את IEEE מפרט 488.2-1987 "קודים סטנדרטיים, פורמטים, פרוטוקולים ופקודות נפוצות", הוא תוקן מאוחר יותר ב-1992 כ-IEEE 488.2-1992.[7]

בעוד IEEE 488.2 סיפק תחביר בלתי תלוי במכשיר, עדיין לא היה תקן לפקודות ספציפיות למכשיר. פקודות לשלוט באותו סוג של מכשירים, למשל, מולטימטרים, ישתנו בין יצרנים ואפילו דגמים. חיל האוויר של ארצות הברית,[8] ומאוחר יותר היולט-פקארד, הכירו בבעיה זו. בשנת 1989, HP פיתחה את שפת ה-TML שלהם[9] שהייתה המבשרת ל-SCPI.

הנציבות הבינלאומית לאלקטרוטכניקה פיתחה תקנים משלה במקביל ל-IEEE, עם 60625-2-1993 (IEC 625). בשנת 2004, IEEE ו-IEC שילבו את התקנים שלהם לכדי "לוגו כפול" IEEE/IEC תקן IEC 60488-2-2004, חלק 2: קודים, פורמטים, פרוטוקולים ופקודות נפוצות,[10] מחליף את IEEE 488.2-1992 וחברת החשמל 60625-2-1993.[11]

פקודות SCPI למכשיר עשויות לבצע פעולה מוגדרת (למשל הפעלת ספק כוח) או פעולת שאילתה (למשל קריאת מתח). שאילתות מונפקות למכשיר על ידי הוספת סימן שאלה בסוף פקודה. ניתן להשתמש בפקודות מסוימות גם להגדרה וגם לשאילתה למכשיר. לדוגמה, ניתן להגדיר את מצב רכישת הנתונים של מכשיר באמצעות הפקודה ACQuire:MODe או שניתן לשאול אותו באמצעות ACQuire:MODe? פקודה. פקודות מסוימות יכולות גם להגדיר וגם לבצע שאילתות על מכשיר בבת אחת. לדוגמה, *CAL? הפקודה מפעילה שגרת כיול עצמי בציוד מסוים, ולאחר מכן מחזירה את תוצאות הכיול.

פקודות דומות מקובצות להיררכיה או למבנה עץ.[3] לדוגמה, כל הוראה לקריאת מדידה ממכשיר תתחיל ב - "MEASure". פקודות משנה ספציפיות בתוך ההיררכיה מקוננות עם תו נקודתיים (:). לדוגמה, הפקודה "למדוד מתח DC" תהיה בצורת MEASure:VOLTage:DC?, והפקודה "למדוד זרם AC" תהיה בצורת MEASure:CURRent:AC?

   :MEASure
       :VOLTage
            :DC?
            :AC?
       :CURRent
            :DC?
            :AC?
              ...

פקודות קיצור

[עריכת קוד מקור | עריכה]

תחביר הפקודה מציג כמה תווים בתערובת של אותיות גדולות וקטנות. בהינתן קיצור הפקודה לשליחת האותיות הגדולות בלבד יש משמעות זהה לשליחת הפקודה הגדולה והקטנה.[3]

לדוגמה, הפקודה " SYSTem:COMMunicate:SERial:BAUD 2400" תגדיר ממשק תקשורת טורית RS-232 ל-2400 סיביות/שניות. אפשר גם לחלופין לקצר את זה "SYST:COMM:SER:BAUD 2400". פקודת השאילתה " SYSTem:COMMunicate:SERial:BAUD?" או "SYST:COMM:SER:BAUD?" ינחה את המכשיר לדווח על קצב ההבאוד הנוכחי שלו.

פקודות שרשור

[עריכת קוד מקור | עריכה]

ניתן להנפיק מספר פקודות לכלי במיתר בודד. הם עשויים מפקודות פשוטות המופרדות באמצעות תו נקודה-פסיק (;). לדוגמה, הפקודה "למדוד מתח DC ואז למדוד זרם AC" תינתן בתור MEASure:VOLTage:DC? ;:MEASure:CURRent:AC?.

פקודות פשוטות שמתחילות בנקודתיים (:) מתפרשות ביחס לשורש עץ הפקודות. אחרת, הם מתייחסים באופן מרומז לצומת האחרון של הפקודה הקודמת (אלא אם הם כבר מתחילים בכוכבית). לדוגמה,

   :SOURce:FREQuency:STARt 100;STOP 200

הוא קיצור להודעה

   :SOURce:FREQuency:STARt 100;:SOURce:FREQuency:STOP 200

פקודות מסוימות מקבלות או דורשות ארגומנט נוסף אחד או יותר. הטיעונים ניתנים לאחר הפקודה, ומופרדים מהפקודה באמצעות רווח.[10] לדוגמה, הפקודה להגדיר את מצב ההדק של מכשיר ל"רגיל" עשויה להינתן בתור "TRIGger:MODe NORMal". כאן, המילה "NORMal" משמשת כארגומנט לפקודה "TRIGger:MODe". כאשר מסופקים ארגומנטים מרובים, הארגומנטים נכתבים כרשימה מופרדת בפסיקים. לדוגמה, פקודת שאילתה המבצעת מדידת AC וולט במולטימטר דיגיטלי, תוך שימוש ב-10 של המונה טווח מדידת VRMS, והצגת ערך המתח הנמדד ברזולוציה של 4-1/2 ספרות, ייכתבו כ "MEASure:VOLTage:AC? 10,4"

ארגומנטים של מספר שלם (INT)

[עריכת קוד מקור | עריכה]

עבור פקודות שמקבלות ארגומנטים של מספרים שלמים, ניתן לציין ערכים בפורמטים מרובים של מספרי מחשב: עשרוני, הקסדצימלי, אוקטלי, בינארי. שלושת הפורמטים האחרונים מוגדרים על ידי IEEE 488.2,[10] שעליו מבוסס SCPI.[3] מספרים עשרוניים (בסיס 10) אינם מקבלים קידומת, מספרים הקסדצימליים (בסיס 16) מקבלים קידומת #H או #h, מספרים אוקטליים (בסיס 8) עם #Q או #q, ומספרים בינאריים (בסיס 2) עם #B או #b. ספרות הקסדצימליות עשויות להשתמש באותיות גדולות (ABCDEF), או באותיות קטנות (abcdef), או באותיות רישיות מעורבות (aBcDeF). עבור אוקטלי, האות "Q" נבחרה במקום האות "O" כדי למזער את הבלבול החזותי עם הספרה "0" (אפס).[10]

מפרטים:
  • SCPI-1999, Volume 1-4, free, 819 page PDF file. (doesn't include * commands, because they are specified in IEEE 488.2)
  • IEEE 488.2-1992, USD$49 cost in 2024, available as 254 page PDF file. (replaces IEEE 488.2-1987, both superseded by IEEE/IEC 60488-2-2004)
  • IEEE/IEC 60488-2-2004, USD$354 cost in 2024, available as 264 page PDF file. (replaces IEC 60625-2-1993 / IEEE 488.2-1992 / IEEE 488.2-1987)

מדריכי מכשירים לדוגמה העושים שימוש ב-SCPI

[עריכת קוד מקור | עריכה]

קישורים חיצוניים

[עריכת קוד מקור | עריכה]
ויקישיתוף מדיה וקבצים בנושא SCPI בוויקישיתוף

הערות שוליים

[עריכת קוד מקור | עריכה]
  1. ^ Tektronix TDS2010 Digital Oscilloscope Programmer Manual; 2020; 291 pages.
  2. ^ Rigol DS1074Z Oscilloscope Programmer Manual; 2019; 264 pages.
  3. ^ 1 2 3 4 5 6 7 SCPI-1999 Specification; SCPI Consortium.
  4. ^ ni.com - History of GPIB - Developer Zone
  5. ^ "History of GPIB". National Instruments. נבדק ב-2010-02-06. In 1990, the IEEE 488.2 specification included the Standard Commands for Programmable Instrumentation (SCPI) document.
  6. ^ 1 2 "SCPI". IVI Foundation. נבדק ב-2010-06-02.
  7. ^ IEEE Standard Codes, Formats, Protocols, and Common Commands for Use With IEEE Std 488.1-1987, IEEE Standard Digital Interface for Programmable Instrumentation, Institute of Electrical and Electronics Engineers, 1992, ISBN 1-55937-238-9, IEEE Std 488.2-1992
  8. ^ Project Mate in 1985
  9. ^ "GPIB 101, A Tutorial of the GPIB Bus". ICS Electronics. p. 5, paragraph=SCPI Commands.
  10. ^ 1 2 3 4 Standard Digital Interface for Programmable Instrumentation - Part 2: Codes, Formats, Protocols and Common Commands (Adoption of (IEEE Std 488.2-1992). IEEE. doi:10.1109/IEEESTD.2004.95390. hdl:11059/14380. ISBN 978-0-7381-4100-8.
  11. ^ "Replaced or Withdrawn Publications". IEC. אורכב מ-המקור ב-2012-04-17. נבדק ב-2010-02-06.