S7 1200 modbus rtu(rs485) veya rs232 haberleşme?

Başlatan mir_as82, 25 Ocak 2013, 15:35:47

mir_as82

siemens s7 1200 PLC ile herhangi bir görsel yazılım programı(delphi, visual c#..) arasında veri alış verişi nasıl oluyor ? Rs-232 haberleşme modülü de var. hangisini alıp kullanmak daha mantıklı olur?(öğrenme açısından ve işlve açısından)

PIC ile seri haberleşme veri alış-verişi yaptım visual c# ile. Ama PLC de bu işler nasıl oluyor hiç bilmiyorum.

Yardımcı olabilecek arkadaş var mı acaba.

cetinkaya

aslinda bu konu benide cok ilgilendiriyor bende ögrenmek istiyorum. Kullandigimiz aletler suanda hepsi modbus üzerinden haberlesiyor ve firmanin bir softwaresi üzerinde tüm bilgiler toplaniyor. Ben ise modbus uzerinden gelen tüm bilgileri kendi yazacagim programla görsel olarak göstermek istiyorum. Ama nasil olacagi konusunda hic bir bilgiye sahip degilim. C# üzerinden nasil register okunur yapan oldumu hic ?

mur@t

hazır modbus komponentleri mevcut. Komponent kullanmadan da yapabilirsiniz.
PLC kullanmadım hiç, ancak diğer modbus rtu protokonü kullanan cihazlarla haberleşiyorum.
PLC'nin de aynı olduğunu düşünürsek kolaylıkla yapabilirsiniz. Dökümanlarında register adresleri vardır.

CRC hesaplama için aşağıdaki fonksiyonu kullanabilirsiniz.

/////////////////////////////////////////////
// MODBUS-CRC
/////////////////////////////////////////////
function ModbusCRC(BufferData : TDataByte): word;
var
  Data: byte;
  i,j: integer;
const
  polinomio:word= $0A001;
begin
  result:= $0FFFF;
  for i:=0 to high(BufferData)- 2 do
  begin
    data:= BufferData;
    for j:=1 to 8 do
    begin
      if (((data xor result) and $0001) = 1) then
         result:=(result shr 1) xor polinomio
      else
         result:=result shr 1;
      data:= data shr 1;
    end;
  end;
end;



mir_as82

Yapanı bulursam öğrenmeden bırakmam zaten . :).

mufitsozen

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

hopehard

s71200 ile vb arasında ethernet porttan haberleşebilirsiniz.tcp ıp olabilir. modbus olarak haberleşmek istiyorsanız 485 modülü kullanabilirsiniz.

erbdnm

tamam hocam kullanalımda nasıl kullanalım bu 485i. mesala Q0.0 çıkışını okumak için rs485ten göndermem gereken data nedir?

Salih

#7
Daha önce başka konu başlıklarına yazdıklarımı tekrar veriyorum.

Öncelikle çalışacağın PLC modbus destekliyormu ona bak.(Her ihtimale karşı   ;) )
Plc modelinin Modbus register adreslerini tesbit et.
Plc'de Modbus ASCII veya RTU ayarlarının hangisinin aktif olduğuna bak.
PC'ye Modbus Master olarak çalışan bir program yükle ve çalıştır. (örneğin Modbus Poll)
Programla PLC'nin Modbus haberleşme ayarlarının aynı olmasını sağla.
Her ayar  tamamsa. Modbus Master Programın da örnek okuma ve yazma mesajları oluştur. Ve doğru işlem yaptıklarından emin ol.
Sonunda oluşturduğun mesajları kendi yazacağın programın da kullan.

ModBus Yapısı

Slave adresi(1 Bayt) + Fonksiyon Kodu(1 Bayt) + Okunacak Bellek dizisinin ilk adresi(2 Bayt) + Okunacak veri adedi(2 Bayt) + CRC16

40006 Örnek Adresinden 5 adet veri okumak için örnek paket oluşturalım.
S7 1200 deki adresleri bilmiyorum.

Slave adresi 01 kabul edelim.

CRC16 = C895 hesaplanır. Low Bayt + High Bayt sırasıyla yazılır.

01 + 03 + 0005 + 0005 + 95C8  Bu sayı dizisini gönderirsen sana cevap olarak şöyle bir format gelecek.
Dikkatli olalım, gönderirken ASCII  karakter olarak göndermeyelim. Gerçek sayı değerlerini gönderelim.

01 + 03 + 05 + (1.word) + (2.word) + (3.word) + (4.word) + (5.word) + CRC16

Önce okumayı yapalım. Başarılı olursak. Yazmayı yapalım.

Güzel bir link var faydalı olabilir.

http://www.simplymodbus.ca/FC03.htm

cetinkaya


erbdnm

hocam s7 200 veya 300ün modbus desteği varmıdır? bildiğim kadarıyla yok.

Salih

Siemens PLC Modbus konusu şurada tartışılmış.
Faydalı bilgiler var.

http://www.control.com/thread/1026228890

Şöyle program bileşeni de var, haberleşme için.
http://libnodave.sourceforge.net/index.php