NikCom HMI — PLC bağlantısı ve HMI görseli
Modern HMI Tasarımı
Endüstriyel arayüzleri hızlıca oluştur, yüksek performans ve şıklıkla yayınla.
PLC Entegrasyonu
Profinet , TCP protokolleri ile sorunsuz bağlantı ve veri akışı.
Lisans Yönetimi
Güvenli lisanslama, çevrim içi aktivasyon ve rahat sürüm takibi.
Toplam: 22
1C# ile (Kod İle) NikCom HMI Kütüphanesinin bazı fonksiyonlarının kullanımını örneklendirir misin ?PLC den Değer Alma - Gönderme , PLCTag kullanımı , User Sınıfı ve DataBase_Class Kullanımı ile ilgili örneklerDetayı açKapat
                                            
//Aşağıda PLC den Değer Alma - Gönderme , PLCTag kullanımı ve DataBase_Class Kullanımı ile ilgili örnekler erilmiştir.          

private void hmI_Button_Click(object sender, EventArgs e)
{

    //-----------------------PLC den Değer Alma
    //Öncelikle İlgili PLC Adresini HMI_Connect nesnesinin TagListine e ekleyiniz

    //PLC de değer alma , Tag List ->  Tag ID ile
    object _tagDegeri_1 = hmI_Connect1.TagList_GetValue(5);  //ID si 5 olan tagın değerini PLC den Alır
    if(_tagDegeri_1 != null)
    {
        hmI_NumericBox1.Text= _tagDegeri_1.ToString();  // Değeri NumericBox da gösterdik , Windows Form Elemanlarında da gösterebilirsiniz. Örn TextBox
    }


    //PLC de değer alma , Tag List ->  Tag Adresi ile
    object _tagDegeri_2 = hmI_Connect1.TagList_GetValue("DB1.D4@Dint");  // 1 Nolu DB de D4 veri alanının değerini PLC den Alır
    if (_tagDegeri_2 != null)
    {
        hmI_NumericBox1.Text = _tagDegeri_2.ToString();  // Değeri NumericBox da gösterdik , Windows Form Elemanlarında da gösterebilirsiniz. Örn TextBox
    }


    //-----------------------PLC e Değer Yollama
    //Öncelikle İlgili PLC Adresini HMI_Connect nesnesinin TagListine e ekleyiniz

    //PLC e değer yollama , Tag List ->  Tag ID ile
    hmI_Connect1.TagList_SetValue(5, 10800);  // ID si 5 olan Tag a 10800 değeri yollanmıştır (Bu şekilde PLC e veri yollayabilirsiniz)
    hmI_Connect1.Wait(150); //PLC 'e veri yollandığında satır beklemesi yapınız




    //PLC e değer yollama , Tag List ->  Tag Adresi ile
    hmI_Connect1.TagList_SetValue("DB1.D4@Dint", 10800);  // 1 Nolu DB de D4 veri alanına 10800 değeri yollanmıştır (Bu şekilde PLC e veri yollayabilirsiniz)
    hmI_Connect1.Wait(150); //PLC 'e veri yollandığında satır beklemesi yapınız


    //PLC e değer yollama , Tag List ->  Tag Adresi ile  , Bool Değer Yollama (Tag ID ilede Yollanabilir)
    hmI_Connect1.TagList_SetValue("DB1.DBX0.1@Bool", true);  // 1 Nolu DB de O.1 veri alanı true yapılıyor (Tag ID ilede Yollanabilir)
    hmI_Connect1.Wait(150); //PLC 'e veri yollandığında satır beklemesi yapınız



    //-----------------------Tag List den PLCTag alma
    //PLC e değer yollama 
    PLCTag _tag_1 = NikCom_HMI.Tools.PLCTagList_tagID_To_PLCTag(hmI_Connect1, 5);  //hmI_Connect1 in TagList inden ID si 5 Olan Tag alındı
    _tag_1.Change_Tag_Value(10800); // ID si 5 olan Tag a 10800 değeri yollanmıştır (Bu şekilde PLC e veri yollayabilirsiniz)
    hmI_Connect1.Wait(150);


    //PLC e değer yollama 
    PLCTag _tag_2 = NikCom_HMI.Tools.PLCTagList_Adres_To_PLCTag(hmI_Connect1, "DB1.DBX0.1@Bool");
    _tag_2.Change_Tag_Value(true);  // 1 Nolu DB de O.1 veri alanı true yapılıyor 
    hmI_Connect1.Wait(150);


    PLCTag _tag_3 = NikCom_HMI.Tools.PLCTagList_tagID_To_PLCTag(hmI_Connect1, 5);  //hmI_Connect1 in TagList inden ID si 5 Olan Tag alındı
    if(_tag_3 != null)
    {
        hmI_NumericBox1.Text = _tag_3.Tag_Value_in_PLC.ToString();   // Değeri NumericBox da gösterdik , Windows Form Elemanlarında da gösterebilirsiniz. Örn TextBox
    }



    //-----------------------PLC Tag ile Event (Olay Tanımlama) Tanımlama
    PLCTag _tag_4 = NikCom_HMI.Tools.PLCTagList_tagID_To_PLCTag(hmI_Connect1, 5);  //hmI_Connect1 in TagList inden ID si 5 Olan Tag alındı
    if( _tag_4 != null)
    _tag_4.Tag_Changed += _tag_4_Tag_Changed;



    //----------------------DataBasae_Class Kullanımı
    //Eğitim Bölümünden DataBasae_Class Kullanımı için Video İzleyebilirsiniz

    //3 Satırda tablo verilerini alma
    NikCom_HMI.DataBase_Class _db = new DataBase_Class("ConnectionString i buraya Giriniz");
    DataTable dataTable  = _db.GetTable("Select * from tbl_Report Where ID=25"); //Select Sorgusu
    dataGridView1.DataSource = dataTable;

    //MSSQL e Sorgu Yollama
    _db.SendQuery("insert , Update , Delete Sorgunuzu buraya yazabilirsiniz");    
                       


    //----------------------User (Kullanıcı İşlemleri)

    //Login Ekranını Getirir ve Kullanıcının Giriş yapmasını Sağlar
    hmI_Connect1.Login();

    //LogOut Yapar
    hmI_Connect1.LogOut();

    //Login Yapmış Kullanıcı ID sini verir , isterseniz bu veriyi PLC e yollayabilirsiniz
    int user_ID = hmI_Connect1.Login_Active_User_ID;

    //User sınıfı ile kullanıcı bilgilerini öğrenebilirsiniz , Önemli : User sınıfında Kod ile yapacağınız değişiklikler kalıcı olmaz 
    User kullanici = hmI_Connect1.User_ID_To_User(user_ID);     
           
}


private void _tag_4_Tag_Changed(object sender, Tag_Value_Changed_EventArgs e)
{
   //Tag Değeri Değiştiğinde Bu Olay Çalışır
   if(e.new_Tag_Value != null)
        hmI_NumericBox1.Text=e.new_Tag_Value.ToString();
}

                        
2Koddan tag okumayı güvenle nasıl yaparım?TagList_GetValue ile tip güvenli okuma ve hata kontrolü.Detayı açKapat

HMI_Connect nesnesinin TagList_GetValue() metodu ile tag değerini okuyun; tip uyumsuzluğu ve boş değer durumlarını kontrol edin. UI güncellemesini ana iş parçacığına alın.

3Koddan tag yazarken nelere dikkat edilmeli?Tip dönüşümü, min/max sınırlar ve onay/geri bildirim akışı.Detayı açKapat
  • HMI_Connect nesnesinin TagList_SetValue() metodu ile PLC e değer yazabilirsiniz
  • Beklenen tiple yazın (Int/Real/Bool/String).
  • Min/Max ve format kontrolü uygulayın.
  • Yazma sonrası onay/geri bildirim için tag değerini kontrol edin doğrulayın.
  • Ard arda yazma işlemi yapıyorsanız TagList_SetValue() aralarına mutlaka HMI_Connect'in Wait fonksiyonu ile en az 200 ms bekleme kodu yazın
4Offline/Online modunu kod akışında nasıl ele almalıyım?Offline’da simülasyon; Online’da gerçek PLC etkisini göz önünde bulundurun.Detayı açKapat

Offline modda risk olmadan davranış doğrulama yapılır. Online modda gecikme/timeout ve yetki kısıtlarını hesaba katarak hata yönetimi uygulayın.

5Tag değerini C# ile nasıl okuyabilirim?TagList_GetValue ile ID veya adres üzerinden oku.Detayı açKapat

İ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();
6Tag değerini ID’ye göre mi yoksa adrese göre mi okumalıyım?ID performans ve bakım için önerilir; adres esneklik sağlar.Detayı açKapat

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.

7PLC’ye C# ile nasıl değer yazarım?TagList_SetValue çağır ve kısa bir Wait ekle.Detayı açKapat

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

8Bool bir tag’ı nasıl set ederim?Adresi tip belirterek yaz: "DB1.Detayı açKapat

Adresi TagList’e ekledikten sonra yazın ve kısa bir bekleme ekleyin.

hmI_Connect1.TagList_SetValue("DB1.DBX0.1@Bool", true);
hmI_Connect1.Wait(150);
9PLCTag nesnesi ile çalışmanın avantajı nedir?Nesne tabanlı erişim, Event(Olay) ve okunabilirlik.Detayı açKapat

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.

10Tag değeri değiştiğinde nasıl event yakalarım?Tag_Changed olayına abone olun.Detayı açKapat

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;