Siemens, Client/Server Modbus TCP bağlantılarını kurmak için iki yönlendirme türü vardır. Bunlar; Communication on the Instructions Window penceresi altın yer alan MB_SERVER ve MB_CLIENT‘dır.
Örnek olarak, PLC’mizde bir Modbus TCP sunucusu kuralım. Bir projeyi sıfırdan başlatalım, bu yüzden OB1’e bir MB_SERVER örneği ekleyelim. Talimatı eklediğinizde, kendi örneğinin DB’ye ihtiyacı olduğunu göreceksiniz. Bu nedenle devam edin ve bir tane oluşturun.
Bu bloğa sadece birkaç girişin olduğunu göreceksiniz:
DISCONNECT: bu giriş için varsayılan ‘FALSE’ şeklindedir. Girişi ‘DOĞRU’ olarak ayarlamak, sunucunun herhangi bir etkin bağlantıyı kesmesine ve herhangi bir bağlantı girişimini reddetmesine neden olacaktır.
CONNECT_ID: Bu, PLC’deki bir bağlantı numarasını tanımlar. Bu MB_SERVER veya MB_CLIENT her örneği için benzersiz olmalıdır.
IP_PORT: varsayılan olarak IP_PORT, Modbus TCP iletişimleri için kullanılan standart port olan 502’ye ayarlanacaktır. Alternatif bir bağlantı noktası kullanmak isterseniz, bunu ayarladığınız yer burasıdır. Sadece PLC tarafından kullanılmakta olan herhangi bir bağlantı noktasını kullanmamaya dikkat edin: 20, 21, 25, 80, 102, 123, 5001, 34962, 34963 ve 34964.
MB_HOLD_REGISTER: Bu, mevcut Tescil Kayıtlarının yerini (başlangıç ​​ve büyüklük) tanımladı (40001, tanımlanan maksimum kayıt için). Bu işaretçi herhangi bir global veri bloğu veya bir bellek alanı (M) olabilir. Bu tutma kayıtları Modbus fonksiyonları 3 (Word), 6 (Write Word) ve 16 (multi Words yaz) için kullanılır. Bu işaretçiyi HERHANGİ format (“P # bit adresi” “veri tipi” “uzunluk”) kullanarak ayarlayabilirsiniz:
Bağlantı sorunlarını ve erişilebilen birkaç statik etiketi ayıklamak için kullanabileceğiniz bazı durum bitleri vardır, ancak çoğu durumda bunlara ihtiyacınız olmamalıdır. Şimdi, bekletme kayıtlarını bir süreliğine görmezden gelerek, bu MB_SERVER komutunun bize kutudan ne verdiğini gözden geçirelim . Otomatik olarak kullanıma sunulan kodları ve veri kaynaklarını açıklayan yardım dosyasında kullanışlı bir tablo var. Özetlemek gerekirse, işlev kodları 1, 2, 4, 5 ve 15 işlemcinin işlem görüntüsüne doğrudan okuma ve yazma erişimini hemen destekleyecektir.
Örneğin, 01 (Read Bits) işlev kodu, Q0.0-Q1023.7’ye karşılık gelen 1-8192 kayıtlarıyla çıkış işlemi görüntüsüne okuma erişimi sağlar. Aynı şekilde, işlev kodu 5 (Yazma Bitleri), aynı yazmaçlara/bitlere yazma erişimine izin verir. Fonksiyon kodu 02, giriş prosesi görüntüsüne okuma erişimine, 10001-18192 kayıtlarının I0.0 ila I1023.7’ye eşlenmesini sağlayacaktır. Diğer seçenekler için yardım dosyasını kontrol edin.
Bekleme kayıtlarına geri dönersek, bunlar 3, 6 ve 16 işlev kodlarıyla erişilir. Başlangıç ​​konumunu değiştirmediyseniz, bekletme kayıtları 40001’de başlar ve MB_HOLD_REG’de tanımlanan uzunluk için devam eder. Bir şeyleri sarmak için, bekletme kayıtlarım için global bir DB oluşturacağız ve aşağıdakileri içereceğiz:
Yukarıdaki DB’ye baktığımızda, ilk Word’ü oluşturan bir dizi Bools oluşturduğumu görebilirsiniz (bu Kayıt 40001 olacaktır). Bir sonraki Word, Kayıt 40002’nin verileri, bu durumda bir Int. Son olarak, bir DW ekleyelim ve Registers 40003 ve 40004’ü kullanalım.
Artık Modbus TCP sunucumuzu kontrol etmek için tek bir mantığa sahip olmalıyız.
Şimdi, global DB’mdeki bilgileri kodumdan güncelleyebilir ve Modbus TCP-Master’dan okuyabilir ya da master PLC’ye veri yazabilir durumdadır.