SCPI

[שמאל|ממוזער| פאנל אחורי של [אוסצילוסקופ דיגיטלי Rigol DS1074Z המציג מחברי USB - B ו-Ethernet (RJ45) המקבלים פקודות SCPI מרוחקות.]]
**SCPI** (ראשי תיבות באנגלית של: **S**tandard **C**ommands for **P**rogrammable **I**nstruments; מבוטא "**סקאפי**", באנגלית "**סקיפי**") הוא שמו של תקן עבור תחביר ופקודות לשימוש בבקרת התקני בדיקה ומדידה הניתנים לתכנות, כגון ציוד בדיקה אוטומטי (ATE) וציוד בדיקה אלקטרוני.

## סקירה כללית
SCPI הוגדר כשכבה נוספת מעל מפרט  שכותרתו "Standard Codes, Formats, Protocols, and Common Commands (תרגום: קודים סטנדרטיים, פורמטים, פרוטוקולים ופקודות נפוצות)". התקן מציין תחביר משותף, מבנה פקודה ומבני נתונים, לשימוש עם המכשירים. הוא הציג פקודות כלליות (כגון `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. עם זאת, עבור נתונים בכמות גדולה, ניתן להשתמש בפורמט בינארי.

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

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

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

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

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

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

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

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

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

לדוגמה, הפקודה " `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

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

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

; **מפרטים:**

* 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 [https://www.techstreet.com/ieee/standards/ieee-488-2-1987?product_id=1777534 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
* Tektronix DMM6500, PDF 1202 עמודים.
* Keysight InfiniiVision Families, PDF  1896 עמודים.
* Rohde-Schwarz MXO 4 Series, PDF  848 עמודים.
* Tektronix MSO 4/5/6 Families, PDF  2050 עמודים.

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

## הערות שוליים

קטגוריה:מכשירי מדידה חשמליים
קטגוריה:קלט/פלט
קטגוריה:דפים עם תרגומים שלא נסקרו
קטגוריה:תקנים בתחום המחשוב
קטגוריה:אפיקי מחשב