https://www.youtube.com/watch?v=jWDq4fhixCg
Modbus nedir ?
Endüstriyel cihazlar arasında çok sık kullanılan bir protokoldür. Modbus bağlantısının en kolay yolu modbus componentini kurarak yapılıyor.
PLC nedir?
PLC (Programlanabilir Mantıksal Denetleyici), fabrikalardaki üretim bölümlerinde veya makinelerin kontrolü gibi işlemlerin denetiminde kullanılan otomasyon cihazıdır.
Bu işlem için öncelikle PLC’nin IP'sini bilmemiz gerekiyor. Angry Ip Scanner ücretsiz tool ile networkümüzde arama yaptırarak bulabiliyoruz. Plc’nin kendi yazılımına geçiyoruz seçenekler> haberleşme ayarları açılan pencerede Tip → etharnet seçiyoruz. Birden fazla ethernet kartı varsa bilgisayarınızda hangi ethernet kart ile haberleşmek istediğinizi seçmelisiniz. Ethernet ayarında ip atama işaretleyerek yandaki kutucuğa öğrendiğimiz ip’yi yazıyoruz tamam diyerek kapatıyoruz. Benzer işlemleri haberleşme> haberleşme oto-algılama seçeneğini seçerek de yapabiliriz.
Yeni proje açıyoruz açılan pencerede proje adımızı yazıyoruz proje başlığı> test - model tipi> plc - seç >SE şeklinde dolduruyoruz ve tamam diyoruz. Komut giriş kısmına yazıyoruz sırayla ; Idm2 - outy1 - id<d100 - k100 - outy3. Programımızı plc’ye gönderiyoruz. Plc’yi run moduna alıyoruz ve plc deki çalışma ışıklarını görüyoruz.
Bu işlemleri Delphi ile yapmayı göstereceğiz. File> New> vcl application diyerek formumuzu açıyoruz. Formumuza yüklediğimiz componentin modbus clientini yerleştirelim name →PLC diyelim çünkü plc ile ilgili işlemlerimizi bu component üzerinden gerçekleştireceğiz. Host alanına ip adresimizi yazıyoruz bu şekilde plcmiz ile bağlantı sağlayacağız. 1 Adet panel, 2 adet edit ve editlerin önüne 2 adet label yerleştiriyoruz. Editlerimizin içine sabit değerler yazacağız. Edit1> text = 4097 (delta plc için) bu değer d’li adreslerin başlangıç adresidir. Edit1 >name→ EditAdres. Edit1’in önüne label yerleştiriyoruz caption → Plc Adresi. Edit2’nin önüne de label yerleştiriyoruz caption → Uzunluk. Edit2> text → 1 yazdık ne kadar okuyacağını göstermek için – name→ EditUzunluk . Panelin içine 1 adet buton yerleştiriyoruz button1> caption → Plc’den Oku. Buttona çift tıklayarak kod yazmaya başlayabiliriz.
procedure TForm2.ButtonClick(Sender : TObject);
var
Data: array [0..4096] of word;
Data2: Dword;
iAmount : integer;
Sline : string;
i : integer;
begin
iAmount := StrToInt(EditUzunluk.Text);
if iAmount >0 then
begin
if plc.ReadHoldingRegisters(StrToInt(EditAdres.Text) , iAmount,data) then
begin
SLine := ‘Okunan adres :’ ;
for := 0 to iAmount -1 do
SLine := Sline + #13#10’ ‘
+IntToStr (StrToInt(EditAdres.Text)+ i) +
‘ : 0x’ +
IntToStr(Data[i]);
ShowMessage(SLine);
end;
end;
end;
end.
Data isminde bir değişken tanımladık bu bir array 0’dan 4096’ya kadar gidecek ve word tipinde değerler içerecek. Data2 isminde bir değişken tanımladık dword tipinde bir değişken. Bir değişken daha tanımladık iAmount isminde bu da integer tipinde. SLine isminde string tipinde bir değişken daha tanımladık bu değişkene göndereceğimiz verinin içeriğini yükleyeceğiz buradan kolaylıkla veriyi gönderebileceğiz. Plc’den gelen değeri okuyoruz okuduğumuz değeri array’in içerisine aldığımız için array daki tüm değerleri okuyarak SLine ismindeki değişkene ekliyoruz en son olarakta SLine değişkeninin içerisindeki veriyi ekrana ShowMessage komutu ile yazdırıyoruz. Çalıştırıyoruz, başlangıç değer olarak yazdırdığımız değer d1’i ifade ediyor başlangıç değerini değiştirdikçe o değeri okuyabiliyoruz. Veri okuma işlemi bu kadardı.Şimdi veri yazma işlemine bakalım.
Veri Yazma İşlemi;
Componentleri aynı kullanacağız kopyala yapıştır yaparak devam edebilirsiniz. İsimleri değiştirerek devam edelim edit1> name→ EditAdresYaz. edit2> name → EditUzunlukYaz. Button2 > caption → Plc’ye Yaz. Label5 caption → Yeni değer, şeklinde yeni isimlendirmelerimizi yaptık. Button2’ ye çift tıklıyoruz ve kodlarımızı yazmaya başlıyoruz;
procedure TForm2.Button2Click(Sender : TObject);
begin
if plc.WriteRegister(StrToInt(EditAdresYaz.Text), StrToInt(EditUzunlukYaz.Text)) then
begin
MessageDlg((‘Plc’ye başarı ile yazıldı’), mtInformation,[mbOK],0)
end
else
MessageDlg((‘Hata ! ! ! Plc’ye yazılmadı’), mtError,[mbOK], 0)
end;
end.
Çalıştırıyoruz. Okuma kısmındaki değeri yazıp görelim sonrasında yeni değer kısmına bir değer girelim ve okuma kısmındaki değerin değiştiğini görebiliyoruz. Girdiğiniz değer tanımladığımız şarttan küçük bir değer ise plc’nin ışığının söndüğünü görebilirsiniz.
Son olarak ip’yi bilgisayardan komut olarak göndermeyi öğrenelim. Bu sayede birden fazla plc’den veri okutabiliriz o zaman plc’nin hangi plc’ye okuma talebi gönderdiğini ip olarak yazmamız gerekir.
Formumuza birer adet label ve textbox ekliyoruz. label> caption → ip. Edit5 >text → bu kısma ip’mizi yazıyoruz. Formumuza çift tıklayalım kodları bu kısma yazacağız edite yazdığımız ip’yi okuması için formun create’inde komutu göndereceğiz;
procedure TForm2.FormCreate(Sender : TObject);
begin
plc.Host:= edit3.text;
end;
end.