Modbus TCP .NET Client (C#)

 



Önceki yazıda, NodeMCU ile ekonomik bir modbus slave (server) yapmıştık. İnternetten indirdiğimiz hazır bir master veya client yazılım ile test etmiştik. Şimdi yazılımı .net ortamında yazıyoruz. Visual Studio da kullanabilirsiniz, ben SharpDevelop kullandım. Kullanmak isterseniz bu linkte SharpDevelop kurulumunu anlatıyorum. Resimdeki gibi 3 buton, 4 text box tan oluşan basit bir dizayn hazırlıyoruz.

SharpDevelop menüsünde File -> New project e tıklayıp, proje ismini yazıyoruz... 




Sağ üstte .net 4.5.2 yi ve Windows Application ı seçip Create butonuna tıklıyoruz. Menüde Project -> Manage Packages... e tıklıyoruz. Visual Studio da da bulunan NuGet penceresi açılacaktır. Sağdaki arama kutusuna easymodbus yazıyoruz. 




EasyModbusTCP yi seçip Add butonuna tıklıyoruz. Kodumuz ise bu şekilde :


using System.Windows.Forms;
using EasyModbus;

namespace modbusClient
{
    
    public partial class MainForm : Form
    {
        ModbusClient client;
        string error;
        
        public MainForm()
        {
            InitializeComponent();
        }
        
        void BtnOffClick(object sender, EventArgs e)
        {
        try {
                if(client==null)
                    client=new ModbusClient();
                client.Connect("172.20.10.8",502);
// NodeMCU ip adresi
                client.WriteSingleRegister(3,1);
                client.WriteSingleRegister(3,1);
                client.Disconnect();
        } catch (Exception ex) {
                error=""+ex.Message;
                MessageBox.Show(error);
                return;
        }
        }
        
        void BtnOnClick(object sender, EventArgs e)
        {
        try {
                if(client==null)
                    client=new ModbusClient();
                client.Connect("172.20.10.8",502);
                client.WriteSingleRegister(3,0);
                client.WriteSingleRegister(3,0);
                client.Disconnect();
        } catch (Exception ex) {
                error=""+ex.Message;
                MessageBox.Show(error);
                return;
        }
        }
        
        void BtnReadClick(object sender, EventArgs e)
        {
        try {
                if(client==null)
                    client=new ModbusClient();
                client.Connect("172.20.10.8",502);
                int[] read=client.ReadHoldingRegisters(0,4);
                txt40001.Text=read[0].ToString();
                txt40002.Text=read[1].ToString();
                txt40003.Text=read[2].ToString();
                txt40004.Text=read[3].ToString(); 
  //LED durumu
                client.Disconnect();
        } catch (Exception ex) {
                error=""+ex.Message;
                MessageBox.Show(error);
                return;
        }
        }
    }
}


EasyModbus örnek kodlarına sitesinden bakabilirsiniz. ModbusClient metodları, burada listelenmiştir. EasyModbus, Java ve Python u da desteklemektedir. Kütüphanede ayrıca modbus RTU da destekleniyor.

Projeyi kaydettikten sonra SharpDevelop programını kapatın. Proje klasöründe; C:\Users\x\Documents\SharpDevelop Projects\modbusClient\modbusClient\bin\Debug  bulunan modbusClient.exe yi 2 veya 3 kez açın, hepsi aynı anda çalışabilecektir.. Yani mesela, yapacağınız exe yi bütün şirkete dağıtıp, led in durumunu 4. text box tan görmelerini sağlayabilirsiniz. Artık modbus slave NodeMCU yu hangi amaç için kullanabileceğinizi sizin hayal gücünüze bırakıyorum.




Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Uzak I/O modülü olarak PLC kullanmak