ट्यूटोरियल

CSV डिज़ाइन स्पेक से SCL कोड जनरेट करें

अपने उपकरणों और अनुक्रमों का वर्णन स्प्रेडशीट में करें — T-IA Connect स्वचालित रूप से फ़ंक्शन ब्लॉक जनरेट करता है।

T
T-IA Connect Team
12 मिनट पढ़ने का समय
11 मार्च 2026 को अपडेट किया गया

स्प्रेडशीट से PLC कोड तक

TIA Portal में ISA-88 स्टेट मशीनों की मैन्युअल कोडिंग थकाऊ और त्रुटि-प्रवण है। FDS (फ़ंक्शनल डिज़ाइन स्पेसिफ़िकेशन) मॉड्यूल आपको अपने उपकरणों (कंट्रोल मॉड्यूल) और फ़ेज़ अनुक्रमों का वर्णन एक सरल CSV फ़ाइल में करने देता है, फिर स्वचालित रूप से उत्पादन-तैयार SCL फ़ंक्शन ब्लॉक जनरेट करता है — HOLD/ABORT हैंडलिंग, स्टेट मशीन लॉजिक और उचित I/O डिक्लेरेशन के साथ।

पूर्वापेक्षाएँ

  • 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 एक उपकरण मॉड्यूल के I/O इंटरफ़ेस को परिभाषित करता है, और प्रत्येक Phase स्टेप्स, एंट्री एक्शन और ट्रांज़िशन कंडीशन के साथ एक स्टेट मशीन को परिभाषित करता है।

चरण 2: डिज़ाइन स्पेक लोड करें

आप CSV को तीन तरीकों से लोड कर सकते हैं: डेस्कटॉप ऐप साइडबार में FDS पेज के माध्यम से, REST API के माध्यम से, या AI कोपायलट के 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 प्रोजेक्ट के बगल में .tia-connect/cdc/ फ़ोल्डर में सहेजी जाती है और अगली बार स्वचालित रूप से पुनः लोड होगी।

चरण 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 जनरेट करता है, इसे SimaticML XML में लपेटता है, 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
}

आपको क्या मिलता है

स्टेट मशीन, HOLD/ABORT लॉजिक और टाइप्ड I/O के साथ एक पूर्ण ISA-88 फ़ंक्शन ब्लॉक — एक सरल स्प्रेडशीट से सेकंडों में जनरेट। दोहराए जाने वाले कंट्रोल लॉजिक की मैन्युअल कोडिंग अब नहीं।

T-IA Connect का उपयोग करके अपनी डिज़ाइन स्पेक के साथ अभी आज़माएँ।