Delta PLC İçin Modbus Program Yazmak.

Programı hemen incelemeye başladım, tabi hemen sorunlar baş gösterdi :)
Göndermiş olduğunuz program da iki satır komutu tam olarak anlayamadım.

LRC_ham2 = convert_des(LRC_ham, 6) 'Bu satırı tam olarak anlayamadım ?

LRC.Text = convert_LRC(LRC_ham2) ' Sanırım bu kısımda toplam bulunarak komplementi alınıp hata değeri hesaplanıyor.
 
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
Değerli hocalarım şimdilik ilk adımı başardım. Vermiş olduğunuz bilgiler sayesinde C# ile veri almayı başardım.
 
ustam bu sadece bir alt yordam (fonksiyon) çağrısı diyorum ki "bana şu değeri(LRC_ham2) hesablayıp gel (convert_LRC, bu yazılan fonksiyonun adı) sonucuda buna (LRC.Text) koy olay bu. diğeride benzer yapıda

olay olarak ta gönderilen bilginin CRC si hesablanıyor yanlış hatırlamıyorsam detaylı bakmadım ama.

Saygılar
 
Hocam tamamdır o kısmı gece çözdüm.
 
abuzettin20 hocam çok olduğumun farkındayım  :) ama şu Y0 On/Y0 Off olayını gerçekleştiremedim.
Sizin programda
Text1.Text = Chr(58) + "010505000000" + "F5" + Chr(13) + Chr(10)
ile Text1 in text inie komutu gönderiyorsunuz, sanırım bunu timer ile de cihaza iletiyorsunuz. Ben bunu cihaza gönderdiğimde cihaz bana hata kodu gönderiyor. Daha doğrusu set edilmiş bobini resetliyorum ancak sıfır olan bobini birleyemiyorum. Sizce sebebi ne olabilir ?

Hatayı buldum hesaplamam sonucundaki hata kontrol kodu hatalıymış.
 
Selamlar;
Yamış olduğum programda sanırım küük bir sorun var. PLC den bobinleri ve daha önemlisi girişleri okuyamıyorum. Cihazın kataloğunda bobinleri okumak için aşağıdaki gibi bir yapı var,

Ornek:01 no'lu PLC'den T20~T56 bobin durumlarini okuma
PC→PLC “:01 01 06 14 00 25 BF CR LF”
PLC→PC “:01 01 05 CD 6B B2 0E 1B D6 CR LF”

Ancak benim kullandığım veya abuzettin20 hocamın gönderdiği program ile okuma yaptığımda bobinler için
0:01020500000000E019 değerini veriyor.


Aynı şekilde girişleri okumak için de aşağıdaki yapı örnek olarak verilmiş.

Ornek:01 no'lu PLC'den Y024~Y070 kontaklarin durumunu okuma
PC→PLC “:01 02 05 14 00 25 BF CR LF”
PLC→PC “:01 01 05 CD 6B B2 0E 1B E5 CR LF”

Ancak benim kullandığım veya abuzettin20 hocamın gönderdiği program ile okuma yaptığımda girişler için
0:01020500000000E018 değerini veriyor.
Ama bobiinleri enerjilendirebiliyorum ve girişelere bir sensörden değer alabiliyorum.
 
Cihazın kataloğunda bobinleri okumak için aşağıdaki gibi bir yapı var,
...
...
Ancak benim kullandığım veya abuzettin20 hocamın gönderdiği program ile okuma yaptığımda bobinler için
0:01020500000000E019 değerini veriyor.

Bobin okumak icin 01 kullanacaksın. Senin pakette 02 kullanılmış; 02, IO okumak icin...

Aynı şekilde girişleri okumak için de aşağıdaki yapı örnek olarak verilmiş.

Ornek:01 no'lu PLC'den Y024~Y070 kontaklarin durumunu okuma
PC→PLC “:01 02 05 14 00 25 BF CR LF”
PLC→PC “:01 01 05 CD 6B B2 0E 1B E5 CR LF”
Dökümandan aynen aldıysan muhtemelen dökümanda hata var. 02 komutu (I/O okuma) kullanıldığında, gelen paket de :0102 ile baslamali. Ayrıca Y024-Y070 arasi kontakları okuyacaksa 0025 degil 002F göndermesi lazım. Hesaplamadım ama CheckSum değeri de yanlış gibi gözüküyor.


Ancak benim kullandığım veya abuzettin20 hocamın gönderdiği program ile okuma yaptığımda girişler için
0:01020500000000E018 değerini veriyor.
Başındaki 0 karakterini saymazsak asıl alman gereken paket bu zaten, dökümandaki değil.
 
emrah_ ' Alıntı:
Cihazın kataloğunda bobinleri okumak için aşağıdaki gibi bir yapı var,
...
...
Ancak benim kullandığım veya abuzettin20 hocamın gönderdiği program ile okuma yaptığımda bobinler için
0:01020500000000E019 değerini veriyor.
Emrah hocam bu alanda yazmış olduğunuz gibi hata var. Asıl değer 01010500000000E019 olacak ama kopyalarken yanlış kopyalamışım :( .

Şuan denediğimde eğer bobinler (Y0 Y1 ...Y5) eğer tümü setliyken girişleri okumak istediğimde :010205140025BF
talebini gönderiyorum cevap olarak
:0:01020500000000E018 alıyorum ama bobinlerin tümü resetliyken yine aynı komutu :010205140025BF
gönderdiğimde :0:01020500000000E018 cevabını alıyorum. Kafam karıştı açıkcası.


Cihazın iletişim protokolü:
https://www.kontrolkalemi.com/forum/attachments/delta-plc-protokol-pdf.37729/

Peki hocam almış olduğum paket örneğin girişden (X0 X1 ... X7) gelen veri 0:01020500000000E018 bu şekide ancak PLC üzerinde X1 de 24 volt var. Burdan nasıl bir anlam çıkartmalıyım.
 
Suan denediğimde eğer bobinler (Y0 Y1 ...Y5) eğer tümü setliyken girişleri okumak istediğimde :010205140025BF

Dökümana göre Y0'in adresi 0x0500'den başlıyor ama sen 0x0514 göndermissin. Yani set etmedigin yerleri okuyorsun ve bu nedenle her seferinde aynı seyi okuman normal.

Dökümandaki bazı örnekler oldukça hatalı görünüyor, onları referans alma.
 
Peki emrah hocam 0x0514 adreslerine data gönderdiğimde neden PLC de Y0..Y7 bobinleri setleniyor ? Yani LED ışıkları yanıyor ve bobinlere 24V geliyor ? (DVP-14SS serisi)
 

Forum istatistikleri

Konular
128,217
Mesajlar
915,886
Kullanıcılar
450,000
Son üye
ozproje46

Yeni konular

Geri
Üst