ट्यूटोरियल

Openness API के साथ TIA Portal को स्वचालित कैसे करें

अपने Siemens इंजीनियरिंग वर्कफ़्लो को आधुनिक DevOps पाइपलाइन में बदलने के लिए अंतिम गाइड।

T
T-IA Connect टीम
15 मिनट पढ़ें
अपडेट किया गया 10 मार्च 2026

स्वचालन अपरिहार्य क्यों है

TIA Portal में मैनुअल इंजीनियरिंग धीमी और त्रुटि-प्रवण है। राइट-क्लिक करना, ब्लॉक बनाना, कोड कॉपी-पेस्ट करना... इन दोहराए जाने वाले कार्यों को गायब होना चाहिए। Openness API (और इसके T-IA Connect REST रैपर) के लिए धन्यवाद, आप किसी भी आधुनिक सॉफ़्टवेयर की तरह TIA Portal को चला सकते हैं।

आवश्यक शर्तें

  • TIA Portal V16, V17, V18, V19 या V21 स्थापित
  • एक T-IA Connect लाइसेंस (या Freemium संस्करण)
  • आपकी मशीन पर PowerShell या Python इंस्टॉल हो

चरण 1: REST API प्रारंभ करें

TIA Portal को मैन्युअल रूप से लॉन्च करने के बजाय, हम T-IA Connect सर्वर शुरू करेंगे जो गेटवे के रूप में कार्य करेगा। अपना टर्मिनल खोलें और चलाएं:

PowerShell
./TiaPortalApi.App.exe --headless

चरण 2: हेल्थ चेक

सबसे पहले, आइए सत्यापित करें कि API चल रहा है और मशीन पर कौन से TIA Portal संस्करण उपलब्ध हैं।

curl
curl http://localhost:9000/api/health

curl http://localhost:9000/api/health/versions
Response
{
  "status": "healthy",
  "tiaPortalConnected": true,
  "uptime": "00:01:23"
}

{
  "installedVersions": ["V17", "V18", "V19"]
}

चरण 3: प्रोजेक्ट बनाएं

'फ़ाइल > नया' मेनू की जरूरत नहीं। एक खाली प्रोजेक्ट बनाने के लिए POST अनुरोध भेजें।

curl — POST /api/projects/actions/create
curl -X POST http://localhost:9000/api/projects/actions/create \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MyAutomatedProject",
    "path": "C:\\TIA_Projects",
    "version": "V19"
  }'
Response
{
  "name": "MyAutomatedProject",
  "path": "C:\\TIA_Projects\\MyAutomatedProject",
  "version": "V19",
  "created": true
}

चरण 4: PLC जोड़ें और FB बनाएं

हार्डवेयर कैटलॉग में CPU खोजें, इसे प्रोजेक्ट में जोड़ें और SCL कोड के साथ एक Function Block बनाएं — कुछ API कॉल में सब कुछ।

curl — Search catalog + Add device
# Search the hardware catalog
curl -X POST http://localhost:9000/api/catalog/actions/search \
  -H "Content-Type: application/json" \
  -d '{ "searchPattern": "CPU 1511" }'

# Add the device to the project
curl -X POST http://localhost:9000/api/projects/devices/actions/add \
  -H "Content-Type: application/json" \
  -d '{
    "name": "PLC_1",
    "typeId": "<typeId from search>",
    "deviceName": "CPU 1511C-1 PN"
  }'

# Create a Function Block
curl -X POST http://localhost:9000/api/devices/PLC_1/blocks \
  -H "Content-Type: application/json" \
  -d '{
    "name": "FB_MotorControl",
    "type": "FB",
    "programmingLanguage": "SCL"
  }'

# Add SCL code to the block
curl -X POST http://localhost:9000/api/devices/PLC_1/blocks/FB_MotorControl/networks \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Motor control logic",
    "code": "#Running := #Start AND NOT #Stop;\nIF #Running THEN\n  #Speed := #SpeedSetpoint;\nEND_IF;"
  }'
Response
// Block creation response
{
  "name": "FB_MotorControl",
  "type": "FB",
  "programmingLanguage": "SCL",
  "number": 1
}

// Network added
{
  "networkId": 1,
  "title": "Motor control logic",
  "created": true
}

चरण 5: टैग बनाएं

एक ही API कॉल से PLC टैग (इनपुट, आउटपुट, मेमोरी) को बल्क में इम्पोर्ट करें।

curl — POST /api/devices/PLC_1/tags/actions/import
curl -X POST http://localhost:9000/api/devices/PLC_1/tags/actions/import \
  -H "Content-Type: application/json" \
  -d '{
    "tagTable": "Motors",
    "tags": [
      { "name": "Motor1_Start",   "dataType": "Bool", "address": "%I0.0" },
      { "name": "Motor1_Stop",    "dataType": "Bool", "address": "%I0.1" },
      { "name": "Motor1_Running", "dataType": "Bool", "address": "%Q0.0" },
      { "name": "Motor1_Speed",   "dataType": "Real", "address": "%QD4"  },
      { "name": "Motor1_Fault",   "dataType": "Bool", "address": "%Q0.1" }
    ]
  }'
Response
{
  "tagTable": "Motors",
  "importedCount": 5,
  "tags": [
    { "name": "Motor1_Start",   "dataType": "Bool", "address": "%I0.0" },
    { "name": "Motor1_Stop",    "dataType": "Bool", "address": "%I0.1" },
    { "name": "Motor1_Running", "dataType": "Bool", "address": "%Q0.0" },
    { "name": "Motor1_Speed",   "dataType": "Real", "address": "%QD4"  },
    { "name": "Motor1_Fault",   "dataType": "Bool", "address": "%Q0.1" }
  ]
}

चरण 6: प्रोजेक्ट कंपाइल करें

कंपाइलेशन शुरू करें और Jobs API के माध्यम से प्रगति को ट्रैक करें। कंपाइलेशन एसिंक्रोनस रूप से चलता है।

curl — Compile + Poll job
# Start compilation
curl -X POST http://localhost:9000/api/devices/PLC_1/actions/compile

# Poll the job status (replace <jobId>)
curl http://localhost:9000/api/jobs/<jobId>
Response
// Compilation started
{ "jobId": "c7f3a1b2-...", "status": "running" }

// Job completed
{
  "jobId": "c7f3a1b2-...",
  "status": "completed",
  "errors": [],
  "warnings": 2
}

चरण 7: XML में निर्यात करें

Git के साथ वर्शन कंट्रोल के लिए अपने ब्लॉक्स को SimaticML (XML) प्रारूप में निर्यात करें।

curl — POST /api/devices/PLC_1/blocks/actions/export
curl -X POST http://localhost:9000/api/devices/PLC_1/blocks/actions/export \
  -H "Content-Type: application/json" \
  -d '{
    "blocks": ["FB_MotorControl"],
    "exportPath": "C:\\TIA_Projects\\Export"
  }'
Response
{
  "exportedCount": 1,
  "exportPath": "C:\\TIA_Projects\\Export",
  "files": ["FB_MotorControl.xml"]
}

चरण 8: सहेजें और बंद करें

प्रोजेक्ट सहेजें और इसे सही तरीके से बंद करें। TIA Portal इंस्टेंस अगले ऑटोमेटेड रन के लिए मुक्त है।

curl — Save & Close
curl -X POST http://localhost:9000/api/projects/actions/save

curl -X POST http://localhost:9000/api/projects/actions/close
Response
{ "saved": true }

{ "closed": true }

आगे क्या?

आपने अभी-अभी 90% मैनुअल प्रोजेक्ट निर्माण कार्यों को स्वचालित किया है। अब आप प्रत्येक प्रतिबद्धता पर अपने कोड को सत्यापित करने के लिए इस स्क्रिप्ट को अपनी CI/CD पाइपलाइन (Jenkins, GitLab CI) में एकीकृत कर सकते हैं।

इस ट्यूटोरियल की पूर्ण स्क्रिप्ट डाउनलोड करें और हमारे Freemium संस्करण के साथ आज़माएं।