SCPI: على معلمه الأدوات الخاصة بك The Lingua Franca of Laboratories

قد يتم إعفاء أحدهم على الاعتقاد في بعض الأحيان أن فكرة ربط الأدوات بأدوات الأداة الأخرى لوظائف الأتمتة هي اختراع حديثة نسبيا. ومع ذلك بالنسبة لجميع الضجيج الأخير (نسبيا) من شبكة الويب وكذلك “المنزل الذكي”، كانت المختبرات أسلاك معداتهم لتشغيل القياس الصعب وكذلك تسلسل الاختبار لعدة عقود الآن، إلى جانب المصانع التي تعمل كثيرا نفس الشيء بالضبط لأتمتة عمليات الإنتاج.

يشبه إلى حد كبير العالم الفوضوي لأجهزة IOT، وأجهزة المختبرات من مختلف الشركات المصنعة يعملون بعدد واسع من البروتوكول غير المتوافق بالإضافة إلى معايير الواجهة. في نهاية المطاف هذه سوف تتناولها في IEEE-488.1 (GPIB) كطبقة جسدية وكذلك بحلول عام 1990، تم إصدار الأوامر الأساسية الأولى للأدوات القابلة للبرمجة (SCPI) الأساسية التي تطورت أعلى IEEE-488.

يحدد SCPI (كما يوحي الاسم) الأوامر الأساسية للتفاعل مع الأدوات. لقد استمرت على مدار العقود الماضية لتوفير قدرات تفاعل عن بعد لأي شيء من الذبذبات وكذلك إمدادات الطاقة إلى المعدات العلمية الغريبة. يمكن أن يقوم الكثير من أدوات الجرف بالهواة بالهواء يمكن أن يشتري اليوم وظيفة SCPI عبر منفذ إيثرنت أو USB أو منفذ USB أو RS-232C الذي تم دمجه مع تطبيق برنامج لأتمتة مختبر One One Soul.

أفضل بكثير هو أنه من السهل إلى حد ما إضافة أداء SCPI إلى الأدوات الخاصة بالمرء، طالما أنه يحتوي على ماكو على الأقل بالإضافة إلى بعض الطرق للتفاعل مع العالم الخارجي.

إعادة اختراع العجلة ليست متعة

الكثير من المرح كما هو الحال في العثور على اتصالات المرء الأساسية للحصول على عنصر واجهة مستخدم مخصص، فهناك صفقة كبيرة ليتم ذكرها للبقاء مع المعايير الحالية، بدلا من إضافة واحد “قياسي” إلى كومة. سبب كبير هو الوقت الذي ستنفقه على الخروج بروتوكول يعمل، والذي يغطي جميع حالات الحافة وكذلك أترك مساحة كافية للنمو في المستقبل عند إضافة ميزات جديدة.

سبب آخر هو التوافق مع البرامج الحالية، والتي تلامس بالمثل لماذا من المحتمل أن يتم تسريع الأفراد في هذا البروتوكول الجديد المذهل. عند استخدام SCPI، يمكن دمجها بشكل غير مؤلم نسبيا في برنامج الأتمتة الموجود (المختبر)، حيث أن الفكرة الكاملة وراء SCPI هي أن كل أداة ستنفذ مجموعة متنوعة من الأوامر المخصصة بالإضافة إلى عدد من الأشخاص المطلوبين.

بالنسبة لأفراد تطبيق البرامج مثل Labview أو Sigrok، فإن الوضع المثالي هو أن الأداة تتحدث SCPI، وكذلك في أسوأ الحالات يجب كتابة معالج مخصص لأوامر SCPI المخصصة عند عدم تقديم أحد المرء بعد. إن ما لن يعد أبدا التعديل هنا هو بناء جملة SCPI الأساسية، مما يتيح من أجل الإصبع السريع للأجهزة الجديدة، والوقاية من الأخطاء (بدون محلل مثالي) وكذلك إعادة استخدام التعليمات البرمجية. تسمح مجموعة الأوامر الأساسية في SCPI بالمثل بأداء آليات المزامنة بشكل افتراضي.

على الرغم من ذلك، عندما ينظر حقا إلى كومة الحدة الحالية من معدات القياس بالإضافة إلى إمدادات الطاقة القابلة للبرمجة مكدسة في مختبر المنزل، وليس كلهم ​​يتحدثون SCPI. الذبذبات Rigol DS1104Z يقوم عبر منفذ Ethernet الخاص به. يتحدث شقيق بت من Owon XDM2041 DMM (XDM1041) SCPI عبر منفذ USB الخاص به. ولكن جيدا حتى الآن، ومع ذلك، فإن الأطنان الإلكترونية (Arachnid Labs Reload Pro) يتحدث بروتوكول مخصص عبر USB قد يكون SCPI.

إن امدادات الطاقة القابلة للبرمجة من مانسون HCS-3304 التي تعاني من نفس الشيء مع البروتوكول المخصص حتى الآن، مع الأوامر المدرجة في مراجعات الكتيب بوضوح في كثير من الأحيان مخطئ. مع عدد قليل من هذه الأدوات التي تدعمها Sigrok في هذه المرحلة، ستشمل اختبارات أتمتة الاختبارات اختراق وحدة فك ترميز بلدي معا، بدلا من القليل من التبويبات الرفيعة المستوى مع أوامر أداة SCPI المخصصة.

استخدام المتطلبات بشكل صحيح يمكن أن ينقذ الكثير من الوقت والحركة وكذلك الشعر الرمادي. مما يؤدي إلى السؤال التالي: تماما بالضبط مدى بسيطة هو إضافة SCPI إلى القطعة المذهلة الخاصة بها؟

أدخل libscpi.

لا يرغب الجميع في إنشاء محلل SCPI الخاص بهم من نقطة الصفر، وهذا هو السبب في أن مكتبة محلل SCPI V2، أو مجرد “libscpi” هي بداية رائعة. إنه ينفذ معيار SCPI 1999 الحالي. نظرا لأننا سنفكر في استخدام SCPI على جهاز مضمن، فسوف نلقي نظرة على Frettos المقدمة مع مثال LWIP (NetConn). هذا يدل على تطبيق خادم SCPI الذي يعمل في مؤشر ترابط Frettos.

يقوم خادم SCPI بإعداد منفذ تسمع TCP على منفذ SCPI الأساسي (5025)، وبعد ذلك يمكن إرسال الأوامر إلى الأداة عبر أي نوع من عميل Telnet أو ما شابه ذلك في وضع RAW، I.E. النص العادي. لاحظ أنه في هذا الخادم مثال، يتم استخدام NetConn_copy ل LWIP NetConn بدلا من NetConn_Nocopy. هذا مهم لمنع تلف البيانات (استخدام البيانات المخزن المؤقت بعد الحذف) عند الاستفادة من أوامر SCPI بالسلاسل.

لاستخدام libscpi مع USArt أو واجهة أخرى، فإن أول شيء يجب القيام به هو إعداد المكتبة عن طريق الاتصال SCPI_INIT. الامتثال الطرافةيجب تنفيذ التقنيات H بالمثل في التعليمات البرمجية الخاصة بك:

SCPI_WRITE (SCPI_T * سياق، Const Char * البيانات، Size_t Len)

SCPI_FLUSH (سياق SCPI_T *)

SCPI_ERROR (SCPI_T * السياق، INT_FAST16_T ERRES)

SCPI_CONTROL (SCPI_T * السياق، SCPI_CTRL_NAME_T CTRL، SCPI_REG_VAL_T VAL)

SCPI_RESET (SCPI_T * السياق)

هذه الوظائف هي أساسا التفسير الذاتي. كما يمكن التأكد من تنفيذ المثال، تمكن SCPI_WRITE LIBSCPI من إنشاء إخراج الاختيار الخاص بك، مع استخدام SCPI_FLUSH لاستدعاء أي نوع من مخازن الإخراج التي قد تكون موجودة. SCPI_ERRROR يطبع رسائل الخطأ من libscpi، يعيد تعيين SCPI_RESET الجهاز، بالإضافة إلى استخدام SCPI_CONTROL لتتكوين قناة إدارة (ميزة اختيارية، هنا على منفذ TCP 5026).

للحصول على LIBSCPI لتحليل أي نوع من السلاسل الواردة الطازجة (تم إنهاء دائما باستخدام Newline أو \ n أو \ r \ n)، يستدعي هاتف الكود الخاص بك SCPI_INPUT، أو في وضع الأوامر المفرد، يمكن استخدام SCPI_PILESSE مباشرة.

يمكن اكتشاف تطبيق مثال ل LIBSCPI على STM32 مع ST HAL مع Freertos بالإضافة إلى خادم HTTP بسيط في مستودع GitHub هذا. هذا يستهدف مجلس التقدم النواة-F746ZG.

SCPI رقمي متعدد

كما يتم تزويدها بمثال LIBSCPI هو تطبيق مثال لجهاز رقمي متعدد. إذا فتحنا تعريفات الأوامر وكذلك التطبيقات في SCPI-DEF.C، فهي توفر لنا لمحة رائعة في ما يتطلبه تطبيق الأداة المخصصة. هذا يبدأ مع جدول القيادة، يسمى SCPI_COMMANDS.

يحدد هذا الجدول جميع الأوامر بأسلوب نقش مع رد الاتصال المرتبط (جميعها ولكن تلك الأساسية المنفذة في نفس الملف بالضبط)، بدءا من الأوامر المفوضية IEEE، E.G. * cls (حالة واضحة):

{.Pattern = “* cls”، .callback = scpi_corecls،}

يعني “*” (العلامة النجمية) أمام الأمر أنه أمر مطلوبة، نموذج SCPI نموذجي يجب أن ينفذ كل أداة. تلك المهمة هي * IDN؟، والتي تستفسر (لاحظ علامة القلق) الأداة حول هويتها، * RST قيادة الأداة “إعادة تعيين الأداة” بالإضافة إلى * واي التي تخبر الأداة بالانتظار مع تنفيذ أي نوع من الأوامر الجديدة حتى تم الانتهاء من الأوامر التي تسبق هذا الأمر.

بعد هذه الكتلة من الأوامر اللازمة، نحصل على كتلة مع وظائف DMM:

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{.pattern = “التدبير: الجهد: العاصمة؟”، .callback = dmm_measurevoltagq،}،
{.pattern = “Configure: الجهد: DC”، .callback = dmm_configurevoltagedc،}،
{.pattern = “التدبير: الجهد: DC: نسبة؟”، .callback = scpi_stubq،}،
{.pattern = “التدبير: الجهد: AC؟”، .callback = dmm_measurevoltageac،}،
{.pattern = “التدبير: الحالي: DC؟”، .callback = scpi_stubq،}،
{.pattern = “التدبير: الحالي: ac؟”، .callback = scpi_stubq،}،
{.pattern = “التدبير: المقاومة؟”، .callback = scpi_stubq،}،
{.pattern = “التدبير: fresistance؟”، .callback = scpi_stubq،}،
{.pattern = “التدبير: التردد؟”، .callback = scpi_stubq،}،
{.pattern = “التدبير: الفترة؟”، .callback = scpi_stubq،}،

يجب أن يؤدي سبب استخدام العلوي المختلط وكذلك البطولات الصغيرة في الأوامر مع جانب “النمط”: في SCPI فقط الجزء الأحمق من النمط مطلوب، بالإضافة إلى القسم السفلي من الأمر يمكن حذفه للإيجاز وبعد كما لوحظ سابقا، فإن الأمر الذي امتثل به بمقدار مارك هو استفسار. الاستفادة من COLONS هي فصل مستويات التسلسل الهرمي للشجرة التي تحدد واجهة SCPI.

لاستخدام هذا التسلسل الهرمي لتحديد الجهد وكذلك موجود ل DC في سلسلة واحدة، فإن المرء يستفيد من الامتثال مع الأمر:

التدبير: الجهد: العاصمة؟؛: التدبير: الحالي: AC؟

يفصل نصف القولون أوامر خاصة، وكذلك القولون الرائد يعيد تعيين التسلسل الهرمي إلى جذر شجرة القيادة. يمكن استخدام هذه الوظيفة الأخيرة لإنتاج سلاسل قيادة قصيرة للغاية متسلسلة ل E.G. قياس كل من AC & DC الجهد:

التدبير: الجهد: العاصمة؟ AC؟

نظرا لأن الأمر الأول قد تركنا في مستوى التسلسل الهرمي للجهد، فإن القيادة اللاحقة ستشغل AC؟ استفسار. هذا يعني أن واجهة مصممة جيدا للأداة يمكن أن تجعل السيطرة عليها فعالة إلى حد ما حتى عند كتابة الاستعلامات يدويا عن طريق تجنب التكرار غير الضروري.

الخيارات المتقدمة

كل هذا ببساطة الخدوش سطح ما scpi قادر على ذلك، بالطبع. بالإضافة إلى إخراج النص العادي، يمكن وضع علامة على السلاسل الرقمية كما هو الحالثة العشرية (#H)، كما octal (# q)، أو كما ثنائي (#B). يمكن توفير الوسائط مع أوامر مفصولة بمساحة. مع LIBSCPI، يمكن استرجاع هذه الحجج في وظيفة رد الاتصال.

يمكن إعداد تسلسلات الأوامر المعقدة بالإضافة إلى متداخلة الاستفادة باستخدام * OPC وكذلك أوامر WAI، بالإضافة إلى * OPC؟ استفسار. يمكن استخدامها بالاشتراك مع أوامر تسجيل الحالة وكذلك أي نوع من الأوامر الخاصة بالجهاز لإدارة تسلسل توقيت خاص.

من المرجح أن يكون أفضل جزء حول SCPI أنه يتجمع مع تعقيد الجهاز، سواء كان متر جهد بسيط، أو قراءة أداة علمية QUAلا يتغير الاضطرابات على مستوى NTUM، البروتوكول الأساسي. من خلال عدم الاضطرار إلى إعادة اختراع أساسيات نفسها بالضبط كل مرة، يمكن أن يركز المصمم وكذلك الفرد من الأداة بدلا من ذلك على الأشياء التي تهمها.

في حالة المستخدم النهائي، من المرجح أن تكون تجربة تفريغ الجهاز، قم بتوصيله بل برمجة في تسلسل SCPI الذي يجعله يؤدي الوظائف المفضلة. وهي الفائدة الرئيسية للامتثال للمعايير القائمة.

[صورة العنوان: الجزء الخلفي من الذبذبات Rigol DS1104Z مع Ethernet وكذلك منافذ USB مرئية. الائتمان: ريغول]