Universal Modbus, tüm Modbus TCP cihazlarında ortak olarak kullanılan standart adresleme yapısıdır.
Bu adresleme yöntemi PLC markasından bağımsızdır ve tüm Modbus uyumlu cihazlarda çalışır.
Farklı marka PLC veya cihazlara bağlanırken Universal Modbus adresleri kullanılır.
İlgili adresi önce HMI_Connect.TagList’e ekleyin. Ardından ID veya adres ile okuyabilirsiniz.
PLCTag val1 = hmI_Connect1.TagList_GetValue(5); // ID ile PLCTag val2 = hmI_Connect1.TagList_GetValue("DB1.D4@Dint"); // Adres ile if (val1 != null) hmI_NumericBox1.Text = val1.ToString();
ID tabanlı okuma refactor ve adres değişimlerinde daha dayanıklıdır: TagList_GetValue(5). Adres tabanlı okuma ("DB1.D4@Dint") hızlı deneme ve POC akışlarında esneklik verir. Büyük projelerde ID standardizasyonu önerilir.
TagList_GetValue(5)
"DB1.D4@Dint"
Adresi TagList’e ekledikten sonra yazın ve kısa bir bekleme ekleyin.
hmI_Connect1.TagList_SetValue(5, 10800); hmI_Connect1.Wait(150); // yazma sonrası stabilizasyon
Adresle yazım: TagList_SetValue("DB1.D4@Dint", 10800) Mutlaka Wait() kullanın
TagList_SetValue("DB1.D4@Dint", 10800)
hmI_Connect1.TagList_SetValue("DB1.DBX0.1@Bool", true); hmI_Connect1.Wait(150);
PLCTag ile tag’ı nesne olarak yönetirsiniz:
PLCTag t = NikCom_HMI.Tools.PLCTagList_tagID_To_PLCTag(hmI_Connect1, 5); t.Change_Tag_Value(10800); hmI_Connect1.Wait(150);
Bu yaklaşım Event(Olay) bağlama ve daha okunabilir kod sağlar.
Değer değişimini dinlemek için olaya abone olun:
PLCTag t = NikCom_HMI.Tools.PLCTagList_tagID_To_PLCTag(hmI_Connect1, 5); if (t != null) t.Tag_Changed += t_Tag_Changed;
Bazı PLC senaryolarında yazımın hemen ardından okuma/ikinci yazım tutarsızlığa sebep olabilir. Wait(150) kısa bir gecikme ile çevrimsel iletişimi stabilize eder. Değer, donanıma ve ağ koşullarına göre ayarlanabilir.
Wait(150)
Tek çağrıda tablo döndürür ve UI’a bağlayabilirsiniz.
NikCom_HMI.DataBase_Class db = new DataBase_Class("ConnectionString"); DataTable dt = db.GetTable("SELECT * FROM tbl_Report WHERE ID=25"); dataGridView1.DataSource = dt;
NikCom_HMI.DataBase_Class db = new DataBase_Class("ConnectionString"); db.SendQuery("UPDATE ...");