> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/alblwkat-alwzyfyh/blocks-reference/input-output/communication/siemens-s7-write.md).

# Siemens S7 Write

هذه كتلة دالة تكتب قيمًا إلى PLC من عائلة Siemens S7. تستقبل مدخل بيانات ومرجع عميل (client reference)، ويمكنها إجراء كتابات فورية (synchronous) أو مجدولة في الخلفية (asynchronous). يمكن أيضًا تزويدها بقيمة اختيارية تكتب عند إيقاف النظام أو إزالة الكتلة.

## 📥 Inputs

* `Enable`\
  أمدد قيمة منطقية (boolean) للسماح بالكتابات أو حظرها. عندما تكون غير موجودة أو True، تستمر عمليات الكتابة.
* `Data`\
  القيمة المراد كتابتها في الـ PLC. تقبل نوع البيانات المختار في الضوابط.
* `[Optional] Data on Stop`\
  قيمة اختيارية ستُكتب عند إيقاف الكتلة أو إزالتها.
* `S7 Client`\
  مرجع عميل/اتصال PLC المستخدم لتنفيذ الكتابة. (زود المرجع باستخدام كتلة اتصال مثل `Siemens S7 Connect`.)

## 📤 Outputs

* هذه الكتلة لا تُنتج مخرجات.

## 🕹️ Controls

* `DB Number`\
  حدد رقم DB داخل الـ PLC الذي ستُكتب إليه القيمة.
* `DB Byte Address`\
  حدد إزاحة البايت داخل الـ DB المحدد.
* `Bit Position`\
  عند كتابة قيم boolean، اختر موضع البت داخل البايت المستهدف.
* `DB Data Type`\
  اختر نوع البيانات للكتابة (مثال: boolean, integer, float, string). تقوم الكتلة بتحويل قيمة الإدخال وفقًا لهذا الاختيار.
* `Connection Type`\
  اختر بين وضعيتي `Sync` و `Async`.
  * `Sync` ينفذ الكتابة فورًا ويشارك اتصالًا مشتركًا.
  * `Async` يجدول الكتابة لتُنفَّذ في الخلفية ويستخدم اتصالًا مخصصًا لهذه الكتلة.

## 🎛️ الميزات الرئيسية

* دعم لأنواع بيانات PLC متعددة مع اختيار صريح عبر `DB Data Type`.
* عنونة بالبايت والبت لتحديد مواضع دقيقة لقيم boolean أو القيم العددية.
* وضعي كتابة:
  * الكتابة المتزامنة (Synchronous) للعمليات الفورية المحددة.
  * الكتابة غير المتزامنة (Asynchronous) لتجنب حجب التدفق الرئيسي وتحميل عمليات الكتابة الأطول إلى الخلفية.
* خيار كتابة آمنة عند الإيقاف: القيمة المقدمة في `[Optional] Data on Stop` تُكتب تلقائيًا عند إيقاف أو إزالة الكتلة.
* إدارة الاتصالات وإعادة الاتصال عند تغيير عنوان العميل.
* رسائل واضحة للأخطاء والتحذيرات لمساعدة تشخيص مشكلات الاتصال أو النوع.

## ⚙️ كيف تعمل

* عندما تكون `Enable` غير موجودة أو قيمتها True، تحاول الكتلة كتابة القيمة الموجودة في `Data` إلى الـ PLC عند عنوان DB والبايت المُكوَّن.
* إذا كان `Connection Type` مضبوطًا على `Sync`، تستخدم الكتلة اتصالًا متزامنًا مشتركًا وتنفذ الكتابة فورًا.
* إذا كان `Connection Type` مضبوطًا على `Async`، تـُجدول الكتابة إلى عامل خلفي (background worker) حتى لا تحجب التدفق الرئيسي؛ وتستخدم بذلك نسخة اتصال مخصصة للكتلة.
* إذا كان مرجع العميل في `S7 Client` غير متصل، ستحاول الكتلة (إعادة)الاتصال قبل محاولة الكتابة.
* عند الإيقاف أو الإزالة، ستحاول الكتلة كتابة القيمة الموفرة إلى `[Optional] Data on Stop` لضمان حالة نهائية معرفة.

## 📝 إرشادات الاستخدام

1. زود مرجع عميل PLC في `S7 Client` (استخدم `Siemens S7 Connect` لإنشاء الاتصال).
2. ضبّط العنوان الهدف باستخدام `DB Number` و `DB Byte Address`.
3. إذا كنت تكتب boolean، اضبط `Bit Position`.
4. اختر `DB Data Type` المناسب للبيانات التي ستكتبها.
5. اختر `Connection Type`:
   * استخدم `Sync` عندما تريد كتابات فورية ومشاركة الاتصال عبر كتل متعددة.
   * استخدم `Async` لنقل الكتابات إلى الخلفية وتجنّب حجب التدفق.
6. أدخل القيمة للكتابة في `Data` وفعل الكتابة عبر `Enable`.
7. اختياريًا، زود قيمة في `[Optional] Data on Stop` لتُكتب عند إيقاف أو إزالة الكتلة.

## 💡 نصائح وحيل

* استخدم `Siemens S7 Connect` لتوفير مرجع عميل موثوق إلى مدخل `S7 Client`.
* اجمع مع `Siemens S7 Read` للتحقق من السجلات قبل أو بعد الكتابة.
* استخدم `Logic Input` لقيادة مأخذ `Enable` من مفتاح واجهة بسيط.
* إذا احتجت تجهيز أو تنسيق نص/بيانات مُنظمة قبل الكتابة، فكر في استخدام `String Input` أو `Data to JSON` في المسار السابق.
* استخدم `Data Write Global` / `Data Write Local` أو `Data Memory` لتخزين القيم التي تنوي كتابتها من أماكن متعددة في التدفق.
* للتسجيل أو التشخيص، وصل `CSV Export` أو `Debug Input` لالتقاط أو فحص القيم المكتوبة.
* فضّل وضع `Sync` عند كتابة كتل متعددة إلى نفس DB/البت لتجنب تعارضات، واختر `Async` عندما تكون الكتابات مستقلة لتقليل زمن المعالجة.

## 🛠️ استكشاف الأخطاء وإصلاحها

* فقدان الاتصال / فشل الكتابة: تحقق من وصولية الـ PLC والعميل المقدم إلى `S7 Client`. استخدم `Siemens S7 Connect` لاختبار الاتصال بصورة منفصلة.
* قيم بيانات غير صحيحة: تأكد من أن `DB Data Type` المحدد يطابق نوع المتغير في الـ PLC وعدّل `DB Byte Address` / `Bit Position` حسب الحاجة.
* الخادم مشغول أو كتابات متزامنة: إذا ظهرت تحذيرات بأن الخادم مشغول، جرّب التحويل إلى وضع `Sync` للكتابات المشتركة والمُسلسلة إلى نفس العناوين، أو تأكد أن كل كاتب يستخدم عناوين منفصلة.
* القيمة لم تُكتب عند الإيقاف: تأكد من توفير قيمة صالحة في `[Optional] Data on Stop` وأنه سُمِح للكتلة بإتمام التسلسل النهائي (بعض سيناريوهات الإيقاف قد تمنع الكتابات النهائية).

## ✅ السلامة وأفضل الممارسات

* تحقق مرتين من أرقام DB وعناوين البايت قبل الكتابة إلى PLC حي لتجنّب تغييرات غير مقصودة.
* استخدم ميزة الكتابة عند الإيقاف بحذر؛ تأكد أن تسلسل الإيقاف يسمح للكتلة بإتمام الكتابة النهائية.
* فضّل الاتصالات المخصصة (`Async`) للمهام الكثيفة أو المتكررة التي لا يجب أن تحجب التدفق الرئيسي؛ واستخدم `Sync` عند الحاجة لتنسيق الكتابات عبر كتل متعددة.
