نص منظم

النص المنظم ، ويُختصر إلى ST أو STX ، هو إحدى اللغات الخمس التي يدعمها معيار IEC 61131-3 ، والمصممة لوحدات التحكم المنطقية القابلة للبرمجة (PLCs). [ 1 ] [ 2 ] وهي لغة برمجة عالية المستوى ذات بنية كتلية ، وتشبه في تركيبها النحوي لغة باسكال التي تستند إليها. [ 3 ] تشترك جميع اللغات في عناصر IEC61131 المشتركة . تُعرَّف المتغيرات واستدعاءات الدوال بواسطة هذه العناصر المشتركة، مما يسمح باستخدام لغات مختلفة ضمن معيار IEC 61131-3 في البرنامج نفسه.

يتم دعم العبارات المعقدة والتعليمات المتداخلة:

  • حلقات التكرار (REPEAT-UNTIL; WHILE-DO)
  • التنفيذ المشروط (IF-THEN-ELSE؛ CASE) [ 3 ]
  • الدوال (SQRT()، SIN())

برنامج نموذجي

(* آلة حالة بسيطة *) TxtState := STATES [ StateMachine ] ;CASE StateMachine OF 1 : ClosingValve () ; StateMachine := 2 ; 2 : OpeningValve () ; ELSE BadCase () ; END_CASE ;

على عكس بعض لغات البرمجة الأخرى، لا يوجد انتقال عكسي لعبارة CASE: يتم إدخال الشرط المطابق الأول، وبعد تشغيل عباراتها، يتم ترك كتلة CASE دون التحقق من الشروط الأخرى.

أمثلة إضافية لبرمجة ST

// تهيئة وحدة التحكم المنطقية القابلة للبرمجة (PLC) CONFIGURATION DefaultCfg VAR_GLOBAL b_Start_Stop : BOOL ; // متغير عام لتمثيل قيمة منطقية. b_ON_OFF : BOOL ; // متغير عام لتمثيل قيمة منطقية. Start_Stop AT % IX0 . 0 : BOOL ; // مدخل رقمي لوحدة التحكم المنطقية القابلة للبرمجة (العنوان 0.0) ON_OFF AT % QX0 . 0 : BOOL ; // مخرج رقمي لوحدة التحكم المنطقية القابلة للبرمجة (العنوان 0.0). (ملف) END_VAR// جدولة تنفيذ البرنامج الرئيسي كل 20 مللي ثانية TASK Tick ( INTERVAL := t #20 ms ) ;البرنامج الرئيسي مع علامة صح : بدء_إيقاف_المراقبة ؛ نهاية_التكوينPROGRAM Monitor_Start_Stop // البرنامج الفعلي VAR_EXTERNAL Start_Stop : BOOL ; ON_OFF : BOOL ; END_VAR VAR // متغيرات مؤقتة لمعالجة المنطق ONS_Trig : BOOL ; Rising_ONS : BOOL ; END_VAR// بداية المنطق // التقاط الحافة الصاعدة لمدخل بدء/إيقاف ONS_Trig := بدء/إيقاف AND NOT Rising_ONS ; // المنطق الرئيسي لتشغيل/إيقاف التشغيل -- تبديل التشغيل / تبديل الإيقاف --- ON_OFF := ( ONS_Trig AND NOT ON_OFF ) OR ( ON_OFF AND NOT ONS_Trig ) ;// منطق النبضة الواحدة الصاعدة Rising_ONS := Start_Stop ; END_PROGRAM

أمثلة على كتل الوظائف

//=======================================================================// دالة عداد الوقت: عدّ تزايدي للفترة الزمنية//=======================================================================كتلة الوظائف FB_Timed_CounterVAR_INPUTنفّذ : BOOL := FALSE ; // إشارة بدء العد الزمنيTime_Increment : REAL := 1.25 ; // أدخل زمن الدورة (بالثواني) بين العداتCount_Cycles : INT := 20 ; // عدد دورات العد المطلوبةمتغير النهايةVAR_OUTPUTTimer_Done_Bit : BOOL := FALSE ; // بتة واحدة تشير إلى اكتمال دورة المؤقتCount_Complete : BOOL := FALSE ; // بت الإخراج الذي يشير إلى اكتمال العد Current_Count : INT := 0 ; // القيمة التراكمية للعدادمتغير النهايةمتغيرCycleTimer : TON ; // مؤقت FB من مكتبة الأوامرCycleCounter : CTU ; // دالة العداد من مكتبة الأوامرTimerPreset : TIME ; // تم تحويل قيمة Time_Increment من الثواني إلى المللي ثانيةمتغير النهاية// بداية برمجة كتلة الوظائفTimerPreset := REAL_TO_TIME ( in := Time_Increment ) * 1000 ;مؤقت الدورة (in := Execute AND NOT CycleTimer . Q ,pt := TimerPreset );Timer_Done_Bit := CycleTimer . Q ;عداد الدورات (cu := CycleTimer . Q ,r := لا تنفذ ،pv := Count_Cycles );Current_Count := CycleCounter . cv ;Count_Complete := CycleCounter . q ;نهاية كتلة الوظائف

مراجع

  1. باسيدور، مايك (16 مايو 2018). "هل يجب أن أقتصر البرمجة على منطق السلم أم أستخدم جميع المعايير ضمن IEC 61131؟" . تصميم التحكم .
  2. ستيفيك، توم (5 مايو 2017). "تاريخ موجز جدًا لمنصات برمجة PLC" . تصميم التحكم .
  3. 1 2 روس، نيكي. "برمجة وحدات التحكم المنطقية القابلة للبرمجة باستخدام النصوص المنظمة". قسم علوم الحاسوب، جامعة نيميغن. CiteSeerX 10.1.1.49.2016 . {{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=