# Modbus TCP

Modbus TCP,  inSCADA platformundan Modbus TCP Server protokolüne sahip cihazlar ile haberleşme kurulmasını sağlar.

![Resim 1 : Modbus TCP](/files/-LkmdMopcMDGYxybnjLH)

Modbus TCP Server protokole sahip bir cihaz ile haberleşebilmek için ;

* IP Address,
* Slave Id/Station Number,
* Veri blokları başlangıç ve bitiş adresleri,
* Veri blokları içerisindeki değişkenlerin veri tipi,

tanımlamalarını bilmemiz gerekir.

Şimdi inSCADA platformunda Modbus TCP protokolünün nasıl yapılandırıldığını inceleyelim.

#### 1.Adım Bağlantı Oluşturmak.

Bir cihaza bağlanmak için öncelikle bir bağlantı oluşturmamız gerekmektedir.&#x20;

![Resim 2 : Connection](/files/-LkmfOFKHXxom4xrRgam)

Resim 2'de gösterildiği gibi verdiğimiz örnekte bağlanmak istediğimiz cihazın IP adresi : 0.0.0.0 Portu : 3501. Bu bilgilere göre bir bağlantı oluşturuyoruz.

#### 2.Adım Bağlantıya Bağlı Cihaz Oluşturmak.

Şimdi bağlantı kuracağımız cihaz oluşturalım.

![Resim 3 : Device](/files/-LkmgYEjvw0PPGZLjTzo)

Resim 3'te görüldüğü gibi bir önceki adımda oluşturmuş olduğumuz bağlantıya bağlı bir cihaz oluşturuyoruz. Protocol olarak "Modbus TCP" seçiyoruz. Station Address : 1. Tarama süresi olarak da 1000 ms set ediyoruz.

#### 3.Adım Cihazdan Okunacak/Yazılacak Veribloklarını oluşturmak.

Bu adımda artık cihaz içerisinden okuyacağımız veribloklarını tanımlayacağız. MODBUS protokolün de veri blokları maksimum 255 byte/127 Word/63 Double Word olabilir.Modbus protokolü veri bloklarını 4 ayrı tipte gruplandırmıştır. Bunlar ;

* Holding Registers,
* Input Registers,
* Digital Inputs,
* Coils,

#### Holding Registers

Holding Registers yazılabilir ve okunabilir word bellek bölgesini ifade eder. Daha detaylı bilgi için [modbus.org](http://modbus.org/specs.php) sitesinden inceleme yapabilirsiniz.

#### Input Registers

Input Registers sadece okunabilir word bellek bölgesini ifade eder. Daha detaylı bilgi için [modbus.org](http://modbus.org/specs.php) sitesinden inceleme yapabilirsiniz.

#### Digital Inputs

Digital Inputs sadece okunabilir bit bellek bölgesini ifade eder. Daha detaylı bilgi için [modbus.org](http://modbus.org/specs.php) sitesinden inceleme yapabilirsiniz.

#### Coils

Coils okunabilir ve yazılabilir bit bellek bölgesini ifade eder. Daha detaylı bilgi için [modbus.org](http://modbus.org/specs.php) sitesinden inceleme yapabilirsiniz.

![Resim 4 : Frame](/files/-Lkn10Dwh7TiLcz6_lFG)

Resim 4'te görüldüğü gibi bir önceki adımda oluşturmuş olduğumuz cihaza bağlı Holding Register tipinde bir veri bloğu oluşturuyoruz. Başlangıç adresi 1000 ve 20 adet Word olarak tanımlıyoruz.

Buradaki adımları tamamladıktan sonra artık cihazla haberleşme kurabiliriz. Burada düzenlediğiniz yapılandırma ayarları haberleşmek istediğiniz cihaz ve ondan okuma/yazma yapmak istediğiniz veri blokları hakkında bilgi sahibi olmanız gerekmektedir. Bunun için cihazın teknik dokümanlarını incelemeniz gerekecektir.

Haberleşmenin çalıştırılması için Control Panel ekranına gidip ilgili Bağlantıya Start verebilirsiniz. Eğer herhangi bir uyumsuzluk yok ise ,bağlantınız "Connected" olarak Control Panel ekranında görünecektir.

#### Son Adım Değişken oluşturmak ve veri okumak/yazmak

Haberleşme kurulduktan sonra artık değişkenlerimizi oluşturabilir cihaz içerisinden verileri okuyabilir ve yazabiliriz. Bunun için Development-Variables menüsünden değişken oluşturmamız gerekmektedir.

![Resim 5 : Variables](/files/-Lkn0N4g09gcqk2L1deP)

Resim 5'te görüldüğü gibi veri bloğumuza bağlı bir değişken oluşturuyoruz. Şimdi artık tekrar Control Panelimize gidip bağlantımızı güncelledikten sonra değişken değerimizi ekranda görebiliriz.

![Resim 6 : Modbus TCP Test On Control Panel](/files/-Lkn2_ECpAxdciR7NIKG)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://inscada.gitbook.io/ins/master/communication-protocols/modbus/modbus-tcp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
