دروس تعليمية

توليد كود SCL من مواصفات التصميم CSV

صِف معداتك وتسلسلاتك في جدول بيانات — يولّد T-IA Connect كتل الوظائف تلقائياً.

T
T-IA Connect Team
12 دقيقة قراءة
تم التحديث في 11 مارس 2026

من جدول البيانات إلى كود PLC

البرمجة اليدوية لآلات الحالة ISA-88 في TIA Portal عملية مملة وعرضة للأخطاء. تتيح لك وحدة FDS (مواصفات التصميم الوظيفي) وصف معداتك (وحدات التحكم) وتسلسلات المراحل في ملف CSV بسيط، ثم تولّد تلقائياً كتل وظائف SCL جاهزة للإنتاج — مع منطق HOLD/ABORT، وآلة الحالة، وإعلانات المدخلات/المخرجات المناسبة.

المتطلبات المسبقة

  • T-IA Connect مثبّت وقيد التشغيل
  • مشروع TIA Portal مفتوح (V16–V21)
  • ملف CSV يحتوي على مواصفات التصميم (أو استخدم النموذج أدناه)

الخطوة 1: تحضير ملف CSV

يتبع ملف CSV معيار ISA-88 بقسمين: [CmTypes] لتعريف المعدات (صمامات، مضخات، حساسات) و[Phases] لمنطق التسلسل (آلات الحالة). إليك مثال بسيط:

design-spec.csv
[CmTypes]
CmType;Variable;Direction;DataType;Description
Valve;Cmd_Open;Out;Bool;Open command
Valve;Sts_Opened;In;Bool;Opened feedback
Valve;Sts_Closed;In;Bool;Closed feedback
Pump;Cmd_Run;Out;Bool;Run command
Pump;Sts_Running;In;Bool;Running feedback
Pump;Speed_SP;Out;Real;Speed setpoint
TempSensor;Value;In;Real;Temperature value
TempSensor;Sts_Fault;In;Bool;Sensor fault

[Phases]
PhaseType;Step;StepName;IsInitial;IsFinal;EntryAction;Condition;NextStep
Fill;10;Init;TRUE;;;"Execute=TRUE";20
Fill;20;OpenValve;;;"Valve.Cmd_Open:=TRUE";"Valve.Sts_Opened=TRUE";30
Fill;30;StartPump;;;"Pump.Cmd_Run:=TRUE";"TempSensor.Value>=80.0";40
Fill;40;StopPump;;;"Pump.Cmd_Run:=FALSE";"TRUE";50
Fill;50;CloseValve;;;"Valve.Cmd_Open:=FALSE";"Valve.Sts_Closed=TRUE";60
Fill;60;Done;;TRUE;"Pump.Cmd_Run:=FALSE";"TRUE";

يستخدم ملف CSV الفاصلة المنقوطة كفواصل. يُعرّف كل CmType واجهة المدخلات/المخرجات لوحدة معدات، وكل Phase تُعرّف آلة حالة بخطوات وإجراءات دخول وشروط انتقال.

الخطوة 2: تحميل مواصفات التصميم

يمكنك تحميل ملف CSV بثلاث طرق: عبر صفحة FDS في الشريط الجانبي لتطبيق سطح المكتب، أو عبر REST API، أو عبر أدوات MCP الخاصة بمساعد الذكاء الاصطناعي. إليك طريقة API:

curl — POST /api/design-spec/load
curl -X POST http://localhost:9000/api/design-spec/load \
  -H "Content-Type: multipart/form-data" \
  -F "file=@design-spec.csv"
Response
{
  "success": true,
  "areas": 1,
  "processCells": 1,
  "unitTypes": 1,
  "cmTypes": 3,
  "phases": 1
}

بمجرد التحميل، يُحفظ ملف CSV في مجلد .tia-connect/cdc/ بجانب مشروع TIA الخاص بك وسيتم إعادة تحميله تلقائياً في المرة القادمة.

الخطوة 3: استكشاف النموذج المُحلَّل

بعد التحميل، يُحلّل T-IA Connect ملف CSV إلى تسلسل ISA-88 الهرمي: المنطقة → خلية العملية → نوع الوحدة → وحدات التحكم + المراحل. يمكنك فحص النتيجة:

curl — GET /api/design-spec/model
# Get the full ISA-88 hierarchy
curl http://localhost:9000/api/design-spec/model

# List all phases
curl http://localhost:9000/api/design-spec/phases
Response
{
  "areas": [{
    "name": "Area1",
    "processCells": [{
      "name": "PC1",
      "unitTypes": [{
        "name": "Unit1",
        "cmTypes": [
          { "name": "Valve", "variables": 3 },
          { "name": "Pump", "variables": 3 },
          { "name": "TempSensor", "variables": 2 }
        ],
        "phases": [
          { "name": "Fill", "steps": 6 }
        ]
      }]
    }]
  }]
}

// GET /api/design-spec/phases
[
  {
    "name": "Fill",
    "steps": ["Init", "OpenValve", "StartPump",
              "StopPump", "CloseValve", "Done"]
  }
]

الخطوة 4: توليد كود SCL

ولّد كتلة وظائف SCL لأي مرحلة. يُنشئ المولّد آلة حالة كاملة مع VAR_INPUT (Execute، Abort، Hold + متغيرات مخصصة)، VAR_OUTPUT (Done، Active، Held، Error)، وتعليمة CASE بجميع الخطوات.

curl — POST /api/design-spec/generate
curl -X POST http://localhost:9000/api/design-spec/generate \
  -H "Content-Type: application/json" \
  -d '{ "phase": "Fill" }'
Response
FUNCTION_BLOCK "FB_Fill"

VAR_INPUT
    Execute : Bool;
    Abort   : Bool;
    Hold    : Bool;
    Valve   : "UDT_Valve";
    Pump    : "UDT_Pump";
    TempSensor : "UDT_TempSensor";
END_VAR

VAR_OUTPUT
    Done   : Bool;
    Active : Bool;
    Held   : Bool;
    Error  : Bool;
END_VAR

VAR
    _Step      : Int;
    _StepEntry : Bool;
END_VAR

BEGIN
CASE #_Step OF
    0:  // IDLE
        IF #Execute THEN
            #Active := TRUE;
            #_Step := 10;
        END_IF;

    10: // Init
        IF Execute = TRUE THEN
            #_Step := 20;
        END_IF;

    20: // OpenValve
        IF #_StepEntry THEN
            #Valve.Cmd_Open := TRUE;
        END_IF;
        IF #Valve.Sts_Opened = TRUE THEN
            #_Step := 30;
        END_IF;

    30: // StartPump
        IF #_StepEntry THEN
            #Pump.Cmd_Run := TRUE;
        END_IF;
        IF #TempSensor.Value >= 80.0 THEN
            #_Step := 40;
        END_IF;

    40: // StopPump
        IF #_StepEntry THEN
            #Pump.Cmd_Run := FALSE;
        END_IF;
        IF TRUE THEN
            #_Step := 50;
        END_IF;

    50: // CloseValve
        IF #_StepEntry THEN
            #Valve.Cmd_Open := FALSE;
        END_IF;
        IF #Valve.Sts_Closed = TRUE THEN
            #_Step := 60;
        END_IF;

    60: // Done
        IF #_StepEntry THEN
            #Pump.Cmd_Run := FALSE;
        END_IF;
        #Done := TRUE;
        #Active := FALSE;
        #_Step := 0;
END_CASE;

// HOLD management
IF #Hold AND #Active THEN
    #Held := TRUE;
END_IF;

// ABORT management
IF #Abort AND #Active THEN
    #Active := FALSE;
    #_Step := 0;
END_IF;

END_FUNCTION_BLOCK

الخطوة 5: الاستيراد في TIA Portal

الخطوة الأخيرة تولّد كود SCL، وتغلّفه في XML بصيغة SimaticML، وتستورده في TIA Portal، وتُجمّعه تلقائياً للتحقق. كل ذلك في استدعاء API واحد:

curl — POST /api/design-spec/generate-and-import
curl -X POST http://localhost:9000/api/design-spec/generate-and-import \
  -H "Content-Type: application/json" \
  -d '{ "phase": "Fill", "device": "PLC_1" }'
Response
{
  "phase": "Fill",
  "blockName": "FB_Fill",
  "imported": true,
  "compiled": true,
  "errors": [],
  "warnings": 0
}

ما تحصل عليه

كتلة وظائف ISA-88 كاملة مع آلة حالة، ومنطق HOLD/ABORT، ومدخلات/مخرجات مُعرَّفة الأنواع — تُولَّد في ثوانٍ من جدول بيانات بسيط. لا مزيد من البرمجة اليدوية لمنطق التحكم المتكرر.

جرّبها الآن مع مواصفات التصميم الخاصة بك باستخدام T-IA Connect.