Re: IEC 62056-21 sayaç okuma
Gönderilme zamanı: 03 Tem 2018, 16:44
Serbest protokol için RS komutu var sadece. Bu komut ile gönderilebilmektedir.
DELTA Türkiye Resmi Online Destek Sayfasıdır
http://www.destek.delta-turkey.com/
uğur bey merhabaUğur yazdı: 03 Tem 2018, 16:44 Serbest protokol için RS komutu var sadece. Bu komut ile gönderilebilmektedir.
yaptığım da oydu zaten =(Uğur yazdı: 12 Tem 2018, 10:42 Değişiklik öncesi M1120 yi reset sonra değişikliği yazarak ardından M1120 yi set edin.
Kod: Tümünü seç
string Obis_BCC(string obis)
{
string str = (char)0x01 + "R2" + (char)0x02 + obis + (char)0x03;
checksum = str[1];
for (int i = 2; i < str.Length; i++)
{
checksum ^= str[i];// exor yapa yapa gidiyor ve isteğin en sonnuna ekliyor. bildiğin kod için elle de eklenebilir.
}
return str + checksum;
}
sp = new SerialPort();
sp.PortName = "COM2";
sp.BaudRate = 300;
sp.ReadTimeout = 7000;
sp.WriteTimeout = 7000;
sp.Parity = Parity.Even;
sp.DataBits = 7;
sp.StopBits = StopBits.One;
sp.Handshake = Handshake.None;
sp.ReadBufferSize = 4096;
sp.WriteBufferSize = 4096;
sp.RtsEnable = true;
sp.DtrEnable = true;
sp.BaudRate = 300;
sp.Open();
sp.DiscardOutBuffer(); sp.DiscardInBuffer();/gelen giden bufferda kalan bişey varsa temizlesin diye ekledim.
sp.Write("/90043537!\r\n");
lbl.Text = sp.ReadLine();
sp.Write("\u0006" + "051" + "\r\n"); //051 göndermek ile 5(9600), 1(okuma ya da kontrol modu emin değilm) 9600 e geçip okuma yapalım dedik
int a = sp.ReadByte();
if (a == 0x06) // "ACK" onaylandı gibi bi anlamı var. kabul etmezse "NAK" gönderiyor 0x15 değerinde.
{
sp.BaudRate = 9600; // baud isteğinin kabulünün ardından 9600 e çekiyorum
sp.Write(Obis_BCC("1.8.0")); //1.8.0 olarak gönderiyorum buraya farklı obis kodları da yazılabilir.
}
else
{
lbl.Text = sp.ReadExisting(); sp.Close(); return; /// bu satırı başka bişey göreyim diye ekledim.
}
string gelen = sp.ReadTo("\u0003");
tbObis.Text = gelen.ToString();
sp.Close();
ben onnu şöyle yapıyorum, c# da modbus ile buton ekleyip göndermiş olduğum dvp dosyasındaki m0 m1 m2 leri sırası ile gönderirken, sayaç bilgisi m0 butonu ile alıyorum AEL5....,sonra m1 butonu ile bu 051 olan stringi gönderiyorum, 6 geliyor. sonrasında ise toggle butonu ile m1120 resetliyorum, hemen ardından başka bir buton ile d1120 ye sabit olarak 134 decimal yazıyorum yani 9600bpsye çekiyorum, tekrar toggle buton ile m1120 set ediyorum. sonra m2 butonu ile R2 olan stringi gönderiyorum fakat timeout a gidiyor. bunları online simulasyon ile de tek tek izliyorum.Uğur yazdı: 12 Tem 2018, 14:46 Açık protokol için malesef RS alternatifi yok. PLC bilgisi dediğiniz zaman COM2 durumu değişmiş görünüyormu? Protokol değişti ise burada değişikliğin yansıması gerekmektedir.