> 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/turkish/fonksiyon-bloklari/blocks-reference/input-output/communication/siemens-s7-write.md).

# Siemens S7 Write

Bu fonksiyon bloğu, değerleri bir Siemens S7 PLC'ye yazmak için kullanılır. Bir `Data` girişi ve bir `S7 Client` referansı alır; senkron (anında) veya zamanlanmış arka plan (asenkron) yazma işlemlerini gerçekleştirebilir. Sistem durduğunda veya blok kaldırıldığında yazılacak isteğe bağlı bir değer de sağlanabilir.

## 📥 Girdiler

* `Enable`\
  Yazma işlemlerine izin vermek veya engellemek için boolean sağlayın. Sağlanmadığında veya `True` olduğunda yazma işlemleri devam eder.
* `Data`\
  PLC'ye yazılacak değer. Kontrollerde seçilen veri tipini kabul eder.
* `[Optional] Data on Stop`\
  Blok durdurulduğunda veya kaldırıldığında yazılacak isteğe bağlı değer.
* `S7 Client`\
  Yazma işlemini gerçekleştirmek için kullanılan PLC istemci/bağlantı referansı. (`Siemens S7 Connect` gibi bir bağlantı bloğu kullanılarak sağlanmalıdır.)

## 📤 Çıktılar

Bu fonksiyon bloğu çıktı üretmez.

## 🕹️ Kontroller

* `DB Number`\
  Değerin yazılacağı PLC içindeki DB numarasını belirtin.
* `DB Byte Address`\
  Seçilen DB içindeki byte ofsetini belirtin.
* `Bit Position`\
  Boolean yazımlarda, hedef byte içindeki bit konumunu seçin.
* `DB Data Type`\
  Yazılacak veri tipini seçin (örn. boolean, integer, float, string). Blok, girdi değerini bu seçime göre dönüştürür.
* `Connection Type`\
  `Sync` ve `Async` modları arasında seçim yapın. `Sync` yazmayı hemen gerçekleştirir ve paylaşılan bir bağlantı kullanır; `Async` yazmayı arka planda zamanlar ve bu blok için ayrı bir bağlantı kullanır.

## 🎛️ Temel Özellikler

* `DB Data Type` ile açıkça seçilebilen birden çok PLC veri tipi desteği.
* Boolean veya skaler değerler için byte ve bit adresleme.
* İki yazma modu:
  * Senkron (anında) yazmalar — tek adımlı deterministik işlemler için.
  * Asenkron (arka plan) yazmalar — ana akışı engellemeden uzun süren yazma işlemlerini arka plana alır.
* İsteğe bağlı güvenli-stop-yazma: `[Optional] Data on Stop` alanına sağlanan değer, blok durdurulduğunda veya kaldırıldığında otomatik yazılır.
* İstemci adresi değiştiğinde bağlantı yönetimi ve yeniden bağlanma.
* Bağlantı veya tip hatalarını teşhis etmeye yardımcı net hata ve uyarı mesajları.

## ⚙️ Çalışma Şekli

* `Enable` sağlanmamış veya `True` ise blok, `Data` girişine verilen değeri yapılandırılmış DB ve byte adresine yazmayı dener.
* `Connection Type` `Sync` olarak ayarlanmışsa, paylaşılan bir senkron bağlantı kullanılır ve yazma işlemi hemen gerçekleştirilir.
* `Connection Type` `Async` ise yazma, ana akışı engellememek için arka plan çalışanına zamanlanır; bu mod blok için ayrı bir bağlantı örneği kullanır.
* `S7 Client` üzerinde verilen istemci referansı bağlı değilse, blok yazma denemeden önce (yeniden)bağlanmayı dener.
* Durdurma veya kaldırma sırasında, blok `[Optional] Data on Stop` alanındaki değeri yazmaya çalışarak tanımlı bir son durum sağlamaya çalışır.

## 📝 Kullanım Talimatları

1. `S7 Client` girişine bir PLC istemci referansı verin (bağlantı oluşturmak için `Siemens S7 Connect` kullanın).
2. Hedef adresi `DB Number` ve `DB Byte Address` ile yapılandırın.
3. Boolean yazıyorsanız `Bit Position` ayarlayın.
4. Yazacağınız veri için uygun `DB Data Type` seçimini yapın.
5. `Connection Type` seçin:
   * Aynı DB/byte üzerinde koordinasyon gerekiyorsa ve anında yazma istiyorsanız `Sync` kullanın.
   * Yazmaların ana akışı bloke etmemesi ve arka plana alınması isteniyorsa `Async` kullanın.
6. Yazılacak değeri `Data` girişine besleyin ve yazmayı etkinleştirmek için `Enable` sağlayın.
7. İsteğe bağlı olarak, durdurma/kaldırma sırasında yazılmasını istediğiniz değeri `[Optional] Data on Stop` alanına girin.

## 💡 İpuçları ve Püf Noktaları

* `S7 Client` girişine güvenilir bir istemci referansı sağlamak için `Siemens S7 Connect` kullanın.
* Yazmalardan önce veya sonra register doğrulaması için `Siemens S7 Read` ile kombinleyin.
* `Enable` soketini basit bir UI anahtarıyla kontrol etmek için `Logic Input` kullanın.
* Yazmadan önce metin/struktur verisini hazırlamanız gerekiyorsa `String Input` veya `Data to JSON` bloklarını düşünün.
* Birden fazla yerden yazılacak değerleri saklamak için `Data Write Global` / `Data Write Local` veya `Data Memory` kullanın.
* Kayıt veya teşhis amaçlı olarak yazdığınız değerleri yakalamak/incelemek için `CSV Export` veya `Debug Input` bağlayın.
* Aynı DB/byte'a birden fazla blok yazıyorsa yazma çakışmalarını önlemek için `Sync` modunu tercih edin; ağır veya bağımsız yazma işlerinde ana akışı yavaşlatmamak için `Async` kullanın.

## 🛠️ Sorun Giderme

* Bağlantı kaybı / Yazma hataları: PLC erişilebilirliğini ve `S7 Client` için sağlanan istemciyi kontrol edin. Bağlantıyı ayrı olarak test etmek için `Siemens S7 Connect` kullanın.
* Yanlış veri değerleri: Seçilen `DB Data Type`'ın PLC değişken tipine uygun olduğundan emin olun ve `DB Byte Address` / `Bit Position` değerlerini kontrol edin.
* Sunucu meşguliyeti veya eşzamanlı yazmalar: Sunucunun meşgul olduğunu belirten uyarılar görüyorsanız, aynı adreslere yapılan paylaşılan, sıralı yazmalar için `Sync` moduna geçmeyi deneyin veya her yazıcı için ayrı adresler kullanın.
* Durdurmada değer yazılmıyor: `[Optional] Data on Stop` alanına geçerli bir değer girildiğinden ve blokun son yazmayı tamamlamasına izin veren bir durdurma sırasının olduğundan emin olun (bazı kapanış senaryoları son yazmayı engelleyebilir).

## ✅ Güvenlik ve En İyi Uygulamalar

* Canlı PLC'lere yazmadan önce DB ve byte adreslerini iki kez kontrol edin; istenmeyen değişiklikleri önleyin.
* Stop sırasında yazma özelliğini dikkatli kullanın; durdurma dizisinin bloğun son yazmayı tamamlamasına izin verdiğinden emin olun.
* Ağır veya sık yazma görevleri için ana akışı engellememek adına ayrı bağlantıları (`Async`) tercih edin; birden çok bloğun koordinasyonu gerekiyorsa `Sync` kullanın.
