Git مدمج لـ TIA Portal

Source Control
لمشاريع TIA Portal

نظام Source Control كامل يعتمد على Git مدمج في T-IA Connect. قم بتصدير مشروعك كملفات نصية مقروءة، تنفيذ commit للتغييرات، عرض diffs، إدارة branches، والمزامنة مع remotes — مباشرة من واجهة المستخدم أو عبر أدوات MCP.

مشاريع TIA Portal هي كوابيس للتحكم في الإصدارات

ملفات Binary، لا يوجد diffs، لا يوجد merge — السيناريو الأسوأ لـ Source Control

صيغة Binary غامضة

مشاريع TIA Portal هي ملفات Binary مملوكة. يراها Git كـ blobs — لا توجد diffs سطر بسطر، ولا merge ذو معنى، ولا توجد طريقة لرؤية ما تغير فعلياً بين إصدارين.

تحديد الإصدارات عبر النسخ واللصق

يقوم المهندسون بإصدار المشاريع عن طريق نسخ المجلدات: Project_v1، Project_v2، Project_v2_John_modified. تستهلك مساحة القرص بشكل هائل، ولا أحد يعرف أي إصدار هو الحالي، والـ merging مستحيل.

لا توجد رؤية للتغييرات

قام شخص ما بتغيير function block الأسبوع الماضي. ما الذي تغير بالضبط؟ أي Network؟ أي instruction؟ بدون text diffs، لا يمكنك معرفة ذلك دون فتح كلا الإصدارين جنباً إلى جنب في TIA Portal.

لا يوجد سير عمل للتعاون

لا يمكن لمهندسين العمل على نفس المشروع في وقت واحد بأي ثقة. لا توجد branches، ولا قدرة على merge، ولا pull requests. أحدهما يكتب فوق عمل الآخر.

كيف يعمل VCS في T-IA Connect

تصدير ← Git ← diff/branch/merge، مع XML normalization تلقائي

تصدير تلقائي للمشروع

يقوم T-IA Connect بتصدير جميع عناصر المشروع كملفات نصية مقروءة: البلوكات (OB، FB، FC، DB) كـ SimaticML XML، جداول الـ tags، الـ UDTs، جداول الـ watch كـ XML، وتكوين الأجهزة كـ AML.

XML Normalization

يمكن لـ TIA Portal إعادة ترتيب سمات XML بين عمليات التصدير، مما يسبب diffs خاطئة. يقوم XmlNormalizer المدمج بفرز السمات بشكل محدد، بحيث تظهر الـ diffs التغييرات الحقيقية فقط.

Git مدمج (LibGit2Sharp)

لا يلزم تثبيت Git خارجي. يستخدم T-IA Connect مكتبة LibGit2Sharp لتنفيذ Git مدمج بالكامل. Init، commit، branch، diff، merge، push، pull — كل ذلك مدمج.

إدارة كاملة للـ Branch

قم بإنشاء branches للمتغيرات أو التجارب. اعمل على feature branch، واختبره، ثم قم بعمل merge مرة أخرى إلى main. نفس سير العمل الذي تستخدمه فرق البرمجيات، الآن لمشاريع PLC.

مزامنة عن بعد (Push/Pull)

أضف مستودعاً بعيداً (GitHub، GitLab، Gitea، Azure DevOps) وقم بعمل push/pull للتغييرات. شارك تاريخ المشروع عبر الفريق باستخدام بنية Git التحتية القياسية.

شريط جانبي لواجهة المستخدم

يعرض شريط VCS الجانبي في تطبيق سطح المكتب حالة المستودع، الملفات المعدلة، ويتيح لك إجراء commit مباشرة من واجهة المستخدم. لا حاجة لسطر الأوامر للعمليات اليومية.

سير عمل نموذجي للتحكم في الإصدارات

من تغيير المشروع إلى تاريخ متتبع وقابل للمقارنة (diffable)

1

1. تهيئة المستودع (Initialize Repository)

قم بتشغيل vcs_init لإنشاء مستودع Git في .tia-connect/source/. يتم ذلك مرة واحدة لكل مشروع. تذهب جميع عمليات التصدير اللاحقة إلى هذا المجلد.

2

2. تنفيذ Commit للتغييرات

بعد إجراء التغييرات في TIA Portal، قم بتشغيل vcs_commit. يقوم T-IA Connect بتصدير المشروع بالكامل، وتجهيز الملفات (stages)، وإنشاء Git commit مع رسالتك.

3

3. عرض الـ Diffs والتاريخ

استخدم vcs_diff لرؤية ما تغير بالضبط — أي عناصر XML تمت إضافتها أو تعديلها أو إزالتها. استخدم vcs_log لتصفح تاريخ الـ commit مع الرسائل والطوابع الزمنية.

4

4. Branch و Merge و Restore

قم بإنشاء branches للتجارب (vcs_branch_create)، أو ادمجها مرة أخرى (vcs_merge)، أو استعد ملفاً معيناً من commit سابق (vcs_restore).

ما الذي يتم تصديره

كل عنصر في المشروع يصبح ملفاً نصياً مقروءاً وقابلاً للمقارنة (diffable)

بلوكات البرنامج (Program Blocks)

OB، FB، FC، DB — يتم تصديرها كـ SimaticML XML. كل بلوك هو ملف منفصل في مجلد blocks/. يتم الحفاظ على هيكل الـ Network الكامل، التعليمات، والتعليقات.

جداول الـ Tag

يتم تصدير PLC tags كـ XML منظم في مجلد tags/. الأسماء، أنواع البيانات، العناوين، والتعليقات — جميعها خاضعة للتحكم في الإصدارات.

الـ UDTs وجداول الـ Watch

أنواع البيانات المحددة من قبل المستخدم (UDTs) في udts/ وجداول الـ watch في watch/. يتم تتبع أنواع بيانات المشروع الكاملة جنباً إلى جنب مع منطق البرنامج.

تكوين الأجهزة (Hardware Configuration)

تخطيط الشبكة، تكوين الـ CPU، ووحدات I/O المصدرة كـ AML (AutomationML) في hardware/. تتبع تغييرات الأجهزة جنباً إلى جنب مع تغييرات البرامج.

أدوات VCS المتاحة

يمكن الوصول إليها عبر MCP، Copilot، REST API، وواجهة مستخدم سطح المكتب

vcs_init / vcs_commit / vcs_status

تهيئة المستودع، تنفيذ commit لحالة المشروع الحالية مع رسالة، والتحقق من الملفات التي تم تعديلها أو إضافتها أو حذفها منذ آخر commit.

vcs_log / vcs_diff

تصفح تاريخ الـ commit مع الرسائل والطوابع الزمنية. عرض text diffs بين الـ commits أو بين الحالة الحالية وآخر commit.

vcs_branch_* / vcs_merge

إنشاء، سرد، checkout، وحذف branches. دمج الـ branches معاً. سير عمل كامل لـ Git branching لمشاريع PLC.

vcs_remote_* / vcs_push / vcs_pull

إضافة، سرد، وإزالة مستودعات remote. عمل push للـ commits إلى remote وعمل pull للتغييرات من الفريق. سير عمل Git remote قياسي.

vcs_restore / vcs_config

استعادة ملف من commit سابق. تكوين اسم مستخدم Git والبريد الإلكتروني. إعدادات على مستوى المشروع لمستودع Git المدمج.

الأسئلة الشائعة

كيف يختلف هذا عن تحديد إصدارات المشاريع المدمج في TIA Portal؟

يعمل نظام الإصدارات في TIA Portal على مستوى المشروع بالكامل — لقطات ثنائية (binary snapshots). يقوم نظام VCS في T-IA Connect بتصدير العناصر الفردية كملفات نصية، مما يمنحك diffs سطر بسطر، branching، merging، والقدرة على رؤية ما تغير بالضبط في كل بلوك. إنهما يكملان بعضهما البعض.

هل يمكنني عمل push إلى GitHub/GitLab؟

نعم. أضف remote باستخدام vcs_remote_add واستخدم vcs_push/vcs_pull للمزامنة. تعمل الملفات النصية المصدرة بشكل مثالي مع أي منصة استضافة Git. تاريخ مشروع PLC الخاص بك يعيش جنباً إلى جنب مع مستودعاتك الأخرى.

هل تقوم الاستعادة (restore) فعلياً بالاستيراد مرة أخرى إلى TIA Portal؟

يسترجع vcs_restore محتوى الملف من commit سابق. إعادة الاستيراد الكاملة إلى TIA Portal قيد التطوير (هناك مشكلة في الترميز مع UTF-16 في بعض أنواع البلوكات). في الوقت الحالي، تمنحك الاستعادة المحتوى المصدر الدقيق لإعادة استيراده يدوياً.

هل أحتاج إلى تثبيت Git على جهازي؟

لا. يقوم T-IA Connect بدمج Git عبر LibGit2Sharp — وهو تنفيذ أصلي لـ Git بلغة .NET. لا يلزم تثبيت Git خارجي، ولا تكوين PATH، ولا سطر أوامر. كل شيء يعمل من خلال واجهة مستخدم وأدوات T-IA Connect.

تحكم في إصدارات مشاريع PLC الخاصة بك

Diffs، branches، merge، push/pull — نظام Source Control حقيقي لـ TIA Portal، وليس نسخاً للمجلدات. مدمج في T-IA Connect بدون تكوين.