PLC-MODBUS-REGISTER-ADRESLEME

uksilato

Üye
Katılım
7 Şub 2014
Mesajlar
7
Puanları
1
Merhaba Üstadlar. Ben PLC ile programlamaya yeni başladım ve elimde bir proje var bu proje doğrultusunda malum sorularda beraberinde geliyor.

PLC de register nedir bir türlü kaynak bulup anlayamadım?

birde
Modbus haberleşme ile ;
Örnek olarak bir buton var ve butona bastıkça sayaçdaki değeri 1 artırıyor. Sonuç datasını nasıl elde edebilirim? C# dan uzanıcam o dataya ama datayı nereye nasıl yazıyor bilmiyorum. yada programlarken ayrı bir şey mi yapmak lazım yardımcı olursanız çok sevinirim.
Zaman ayırdığınız ve verdiğiniz cevaplar için şimdiden teşekkürler?
 
hangi plc yi kullanıyorsun ? her plc nin kendine has modbus registerleri olur.
 
Delta Plc nin Modbus registerlerini içeren bir tablo göndereyim oradan hangi giriş (X) hangi çıkış(Y) kullanacaksan ona göre modbus registerlerinden sorgulama yapabilirsin. Birde plc nin modbus ayarlarını yapman gerekir hangi port RTU mu Yoksa ASCII mi haberleşme hızı parite gibi. Yok eğer ben plc ye proğram yükleyemem çalışan bir sistem diyorsan ve plc nin modbus ayarları yapılmışsa herhangi bir modbus okuyan proğramla (ModPoll gibi) adresleri tek tek sorgulatarak registerleri bulabilirsin. Mesela bir sayıcıdan bahsetmişsin "Örnek olarak bir buton var ve butona bastıkça sayaçdaki değeri 1 artırıyor. Sonuç datasını nasıl elde edebilirim?" DVP-12SA2 Delta PLC de 200 adet sayıcı(C) vardır. bunların adresleri 43585-43784 arasıdır, bu 200 datayı okutup hangi datada senin istediğin değer artıyorsa o registeri kullanman gerekecek.
 
Delta Plc nin Modbus registerlerini içeren bir tablo göndereyim oradan hangi giriş (X) hangi çıkış(Y) kullanacaksan ona göre modbus registerlerinden sorgulama yapabilirsin. Birde plc nin modbus ayarlarını yapman gerekir hangi port RTU mu Yoksa ASCII mi haberleşme hızı parite gibi. Yok eğer ben plc ye proğram yükleyemem çalışan bir sistem diyorsan ve plc nin modbus ayarları yapılmışsa herhangi bir modbus okuyan proğramla (ModPoll gibi) adresleri tek tek sorgulatarak registerleri bulabilirsin. Mesela bir sayıcıdan bahsetmişsin "Örnek olarak bir buton var ve butona bastıkça sayaçdaki değeri 1 artırıyor. Sonuç datasını nasıl elde edebilirim?" DVP-12SA2 Delta PLC de 200 adet sayıcı(C) vardır. bunların adresleri 43585-43784 arasıdır, bu 200 datayı okutup hangi datada senin istediğin değer artıyorsa o registeri kullanman gerekecek.

Verdiğiniz cevap için çok teşekkür ederim ama yeni cevaplar malum yeni sorular..?
İlk başta projeyi sıfırdan başladım her şeyini kendim yapıcam.
---Register sorgulama nedir ve nasıl yapılır en önemli soru?
---Modbus ayarlarını nasıl yapıcam. RTU ile çalışmak mı daha mantıklı (bildiğim kadarı ile daha hızlı) yoksa ASCII ile mi.???
---Birde mesela ben sayıcı verisine ulaşmak için C# ile nokta atış yapamıyormuyum illede hepsini mi sorgulatmam lazım ?
 
---Register sorgulama nedir ve nasıl yapılır en önemli soru?
Öncelikle Senin
C# ile modbus protekolünü okuyabilmen gerekir. Ethernetten okuyacaksan modbus TCP/IP 485 portundan okuyacaksan Modbus RTU yada Modbus ASCII . Bunlar için internette muhtemelen hazır kütüpaneler bulabilrisin.
Ben işin bu kısmından Yani
C# kısmından fazla anlamam ama genede bir örnek verecek olursam
Modbus simple read example;
Aşağıdaki 12 byte’lık paketi TCP soket üzerinden cihaza göndermeniz yeterlidir.
Örnek Okuma
Transac
tion
protocol
Length
unit id
Func
register address
register sayısı
17. Adresteki registerı okuma
0x00 0x01
0x00 0x00
0x00 0x06
0x00
0x03
0x00 0x11
0x00 0x01
Binary Hex Array : 00 01 00 00 00 06 00 03 00 11 00 01
İşin Bu kısmını çözebilirsen plc nin RTU ayarlarını ve registerlerini içeren tabloyu gönderdiğimde gerisi kolay olur.

---Birde mesela ben sayıcı verisine ulaşmak için C# ile nokta atış yapamıyormuyum illede hepsini mi sorgulatmam lazım ?
Hepsini sorgulaman lazım değil sadece senin aradığın sayıcı hangisi proğramlamayı yapan kişi hangi sayıcıyı kullanmış ? Bunu Bulmak için Modbus sorgulayan demo proğramları kullanarak bulabilrisin . O Aşamaya geldiğinde Demo modbus sorgulayan proğramıda gönderebilirim.


İlk iş senin
Yani C# kısmından Modbus okuyabilmendir. Bunun içinde Gene demo Modbus Slave olarak çalışan Bir proğram bulursan vede onunla denesen senin için daha pratik olur. Çünkü daha PLC deki ayarlardan emin değiliz.
 
Örnek OkumaTransac
tion
protocolLengthunit idFuncregister addressregister sayısı
17. Adresteki registerı okuma0x00 0x010x00 0x000x00 0x060x000x030x00 0x110x00 0x01

Binary Hex Array : 00 01 00 00 00 06 00 03 00 11 00 01

peki bu kısım ile ilgili bir döküman vs. varmıdır yada nereye bakmalıyım çok araştırdım ama hala bu kısmı çözebilmiş değilim eğer sizin elinizde varsa ve gönderebilirseniz yada yol gösterebilirseniz çok sevinirim

bu arada verdiğiniz cevaplar için ve vakit ayırdığınız için çok teşekkürler
 
o konuyu daha önce incelemiştim benim sıkıntım şu aynı örnek üzerinden plcde nasıl bir program yazmalıyım ki registerda nereyi kontrol edeceğimi bileyim. Yani bir tane sayıcı düşünün butona bastıkça bir artıyor tipinde bu değeri registera nasıl yazabilirim plc tarafından ve bu değeri mesela wplsoft ile görebilirmiyim
 
Son kısmı çok anlıyamadım daha açıklayıcı yazarsanız. Tam olarak ne yapmayı planlıyorsunuz ? Sadece sayıcıyı pc den görmekse niyetiniz bir inputu bir sayıcıya bağlarsınız sayıcının değerlerinide ister 232 portundan istrer 485 portundan gönderebilirsiniz.
 

Forum istatistikleri

Konular
128,184
Mesajlar
915,690
Kullanıcılar
449,956
Son üye
CharmanDear

Yeni konular

Geri
Üst