لماذا يغيّر MCP كل شيء
يعاني مساعدو الذكاء الاصطناعي التقليديون (ChatGPT وCopilot) من مشكلة كبيرة في الأتمتة الصناعية: الهلوسة السياقية. فهم يولّدون كود SCL صحيحاً نحوياً، لكنهم يستخدمون متغيرات غير موجودة وأنواع بيانات خاطئة ويتجاهلون تكوين الأجهزة الخاص بك. مع خادم MCP المدمج في T-IA Connect، يمكن للذكاء الاصطناعي رؤية مشروعك وقراءة جداول المتغيرات وفحص الكتل الموجودة — وإنشاء أو تعديل الكود فعلياً في TIA Portal.
المتطلبات الأساسية
- T-IA Connect مثبّت وقيد التشغيل
- مشروع TIA Portal مفتوح (V16–V21)
- عميل ذكاء اصطناعي متوافق مع MCP (Claude Desktop أو أي عميل MCP)
الإعداد: ربط الذكاء الاصطناعي بـ TIA Portal
أضف T-IA Connect كخادم MCP في ملف تكوين Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"tia-connect": {
"command": "C:\\Program Files\\FeelAutomCorp\\TiaConnect\\TiaPortalApi.McpBridge.exe",
"args": [],
"env": {
"TIA_CONNECT_URL": "http://localhost:9000",
"TIA_CONNECT_API_KEY": "your-api-key"
}
}
}
}يعمل McpBridge.exe كجسر stdio-to-HTTP. يقوم بتوجيه طلبات الذكاء الاصطناعي إلى خادم API الخاص بـ T-IA Connect الذي يتواصل مع TIA Portal عبر Openness.
مثال 1: التحقق من حالة المشروع
أبسط أداة — تحقق من الاتصال بـ TIA Portal وانظر أي مشروع مفتوح.
{
"name": "get_project_status",
"arguments": {}
}{
"connected": true,
"projectName": "WaterTreatment_V19",
"projectPath": "C:\TIA_Projects\WaterTreatment_V19",
"tiaVersion": "V19",
"modified": false
}مثال 2: فتح مشروع
افتح ملف مشروع TIA Portal مباشرة من الذكاء الاصطناعي. يمكنك أيضاً البحث عن المشاريع المتاحة على القرص باستخدام list_project_files.
{
"name": "open_project",
"arguments": {
"path": "C:\TIA_Projects\WaterTreatment_V19\WaterTreatment_V19.ap19"
}
}{
"success": true,
"projectName": "WaterTreatment_V19",
"version": "V19"
}مثال 3: عرض الأجهزة
عرض جميع أجهزة PLC وHMI والأجهزة الأخرى في المشروع الحالي.
{
"name": "list_devices",
"arguments": {}
}[
{
"name": "PLC_1",
"type": "CPU 1516-3 PN/DP",
"category": "PLC"
},
{
"name": "HMI_1",
"type": "TP1500 Comfort",
"category": "HMI"
}
]مثال 4: عرض وقراءة الكتل
تصفح جميع الكتل (FB وFC وDB وOB) في PLC، ثم اقرأ الكود الكامل وواجهة أي كتلة.
// Step 1: List all blocks
{ "name": "list_blocks", "arguments": { "deviceName": "PLC_1" } }
// Step 2: Read a specific block
{ "name": "get_block_details", "arguments": {
"deviceName": "PLC_1",
"blockName": "FB_MotorControl"
}
}// list_blocks response
[
{ "name": "Main [OB1]", "type": "OB", "language": "LAD", "number": 1 },
{ "name": "FB_MotorControl", "type": "FB", "language": "SCL", "number": 1 },
{ "name": "DB_Config", "type": "DB", "language": "DB", "number": 1 }
]
// get_block_details response
{
"name": "FB_MotorControl",
"type": "FB",
"language": "SCL",
"interface": {
"input": [
{ "name": "Start", "type": "Bool" },
{ "name": "Stop", "type": "Bool" },
{ "name": "SpeedSetpoint", "type": "Real" }
],
"output": [
{ "name": "Running", "type": "Bool" },
{ "name": "Speed", "type": "Real" }
]
},
"code": "#Running := #Start AND NOT #Stop;\nIF #Running THEN\n #Speed := #SpeedSetpoint;\nEND_IF;"
}مثال 5: إنشاء كتلة SCL
الأداة الأقوى — إنشاء كتلة وظيفية بكود SCL ومتغيرات محددة الأنواع وتعريف واجهة كامل. يمكن للذكاء الاصطناعي توليد هذا الكود من وصف بلغة طبيعية لمتطلباتك.
{
"name": "create_scl_block",
"arguments": {
"deviceName": "PLC_1",
"blockName": "FB_ValveControl",
"blockType": "FB",
"interface": {
"input": [
{ "name": "Open", "type": "Bool" },
{ "name": "Close", "type": "Bool" },
{ "name": "Timeout", "type": "Time", "defaultValue": "T#5s" }
],
"output": [
{ "name": "IsOpen", "type": "Bool" },
{ "name": "IsClosed", "type": "Bool" },
{ "name": "Error", "type": "Bool" }
]
},
"sclCode": "IF #Open AND NOT #Close THEN\n #IsOpen := TRUE;\n #IsClosed := FALSE;\nELSIF #Close THEN\n #IsOpen := FALSE;\n #IsClosed := TRUE;\nEND_IF;"
}
}{
"name": "FB_ValveControl",
"type": "FB",
"number": 2,
"created": true
}مثال 6: إدارة المتغيرات
عرض جداول المتغيرات وتصفح المتغيرات وإنشاء متغيرات جديدة بعناوين وأنواع بيانات صحيحة.
// List existing tags
{ "name": "list_tags", "arguments": {
"deviceName": "PLC_1",
"tableName": "Motors"
}
}
// Create a new tag
{ "name": "create_tag", "arguments": {
"deviceName": "PLC_1",
"tableName": "Motors",
"name": "Motor2_Start",
"dataType": "Bool",
"logicalAddress": "%I0.2"
}
}// list_tags response
[
{ "name": "Motor1_Start", "dataType": "Bool", "address": "%I0.0" },
{ "name": "Motor1_Stop", "dataType": "Bool", "address": "%I0.1" },
{ "name": "Motor1_Running", "dataType": "Bool", "address": "%Q0.0" }
]
// create_tag response
{
"name": "Motor2_Start",
"dataType": "Bool",
"address": "%I0.2",
"created": true
}مثال 7: التجميع
تشغيل تجميع الجهاز للتحقق من صحة الكود المُولّد. يتم إرجاع الأخطاء والتحذيرات ليتمكن الذكاء الاصطناعي من إصلاح المشاكل تلقائياً.
{
"name": "compile_device",
"arguments": { "deviceName": "PLC_1" }
}{
"success": true,
"errors": [],
"warnings": [
"FB_ValveControl: Variable 'Timeout' declared but not used"
],
"warningCount": 1,
"errorCount": 0
}مثال 8: البحث في كتالوج الأجهزة
البحث في كتالوج أجهزة Siemens وإضافة أجهزة إلى مشروعك — كل ذلك باللغة الطبيعية.
// Search the catalog
{ "name": "search_hardware_catalog", "arguments": {
"query": "CPU 1511"
}
}
// Add the device
{ "name": "add_device", "arguments": {
"deviceName": "PLC_2",
"typeIdentifier": "OrderNumber:6ES7 511-1AK02-0AB0/V2.9"
}
}// search_hardware_catalog response
[
{
"name": "CPU 1511C-1 PN",
"typeIdentifier": "OrderNumber:6ES7 511-1CK01-0AB0/V2.9",
"version": "V2.9"
},
{
"name": "CPU 1511-1 PN",
"typeIdentifier": "OrderNumber:6ES7 511-1AK02-0AB0/V2.9",
"version": "V2.9"
}
]
// add_device response
{
"name": "PLC_2",
"type": "CPU 1511-1 PN",
"added": true
}مثال 9: شاشات HMI
عرض وإنشاء وفحص شاشات WinCC HMI. استرجاع تصميم XML الكامل للتحليل.
// List screens
{ "name": "list_hmi_screens", "arguments": {
"deviceName": "HMI_1"
}
}
// Create a new screen
{ "name": "create_hmi_screen", "arguments": {
"deviceName": "HMI_1",
"screenName": "MotorOverview"
}
}// list_hmi_screens response
[
{ "name": "MainScreen", "type": "Screen" },
{ "name": "AlarmView", "type": "Screen" }
]
// create_hmi_screen response
{
"name": "MotorOverview",
"created": true
}مثال 10: الحفظ والأرشفة والإغلاق
إدارة دورة حياة المشروع الكاملة — حفظ عملك وإنشاء نسخ أرشيفية والإغلاق بشكل نظيف.
{ "name": "save_project", "arguments": {} }
{ "name": "archive_project", "arguments": {
"targetDirectory": "C:\TIA_Backups",
"archiveName": "WaterTreatment_backup_2026-03-11"
}
}
{ "name": "close_project", "arguments": {} }{ "saved": true }
{
"archivePath": "C:\TIA_Backups\WaterTreatment_backup_2026-03-11.zap19",
"size": "45.2 MB",
"created": true
}
{ "closed": true }مرجع الأدوات الكامل (31 أداة)
إليك القائمة الكاملة لأدوات MCP المتاحة في T-IA Connect، مصنفة حسب الفئة.
إدارة المشاريع
| Tool | Description | Parameters |
|---|---|---|
| get_project_status | Get current project status | — |
| list_project_files | Scan disk for TIA projects | path? |
| open_project | Open a .ap* project file | path |
| create_project | Create an empty TIA project | path, name |
| close_project | Close the active project | — |
| save_project | Save the current project | — |
| archive_project | Create a .zap backup | targetDirectory, archiveName |
| retrieve_project | Restore from .zap backup | archivePath, targetDirectory |
الأجهزة والشبكات
| Tool | Description | Parameters |
|---|---|---|
| list_devices | List all devices (PLC, HMI) | — |
| search_hardware_catalog | Search Siemens hardware catalog | query |
| add_device | Add a device to the project | deviceName, typeIdentifier |
| delete_device | Remove a device | deviceName |
| rename_device | Rename a device | currentName, newName |
| configure_network | Set IP / subnet / gateway | deviceName, ipAddress, subnetMask, gateway |
البرمجة
| Tool | Description | Parameters |
|---|---|---|
| list_blocks | List all blocks (FB, FC, DB, OB) | deviceName |
| get_block_details | Read block interface and code | deviceName, blockName |
| create_scl_block | Create SCL block with interface | deviceName, blockName, sclCode, blockType, interface |
| delete_block | Delete a block | deviceName, blockName |
| rename_block | Rename a block | deviceName, currentName, newName |
| compile_device | Compile device code | deviceName |
HMI (WinCC)
| Tool | Description | Parameters |
|---|---|---|
| list_hmi_screens | List WinCC screens | deviceName |
| create_hmi_screen | Create an HMI screen | deviceName, screenName |
| delete_hmi_screen | Delete an HMI screen | deviceName, screenName |
| get_hmi_screen_xml | Get screen XML design | deviceName, screenName |
البيانات والمتغيرات
| Tool | Description | Parameters |
|---|---|---|
| list_tag_tables | List tag tables | deviceName |
| create_tag_table | Create a tag table | deviceName, tableName |
| delete_tag_table | Delete a tag table | deviceName, tableName |
| list_tags | List variables in a table | deviceName, tableName |
| create_tag | Create a variable (I, Q, M) | deviceName, tableName, name, dataType, logicalAddress |
| delete_tag | Delete a variable | deviceName, tableName, tagName |
تشخيص النظام
| Tool | Description | Parameters |
|---|---|---|
| get_server_diagnostics | API & TIA Portal health check | — |
إضافي: أدوات FDS (مواصفات التصميم)
يتضمن T-IA Connect أيضاً 5 أدوات MCP إضافية لوحدة FDS (مواصفات التصميم الوظيفي). راجع الدرس المخصص للتفاصيل.
دليل توليد كود SCL من CSV