Elektrik Sayacı Nasıl Okunur

Başlatan Muhittin22, 10 Nisan 2015, 11:40:17

Muhittin22

ELEKTRIK SAYACI NASIL OKUNUR

Kendi yöntemimi anlatacağım.

Haberleşme Bağlantısı:
1-Sayaç üzerindeki optik alıcı verici IR göz ile seri haberleşme.
2-485 bağlantı ile seri haberleşme.

Gönderilen ve alınan veri karakter şeklindedir(ASCII). Örnek Port'a CHR"0" için bir byte 48 yollanır.
Sayaçtan bilgi almak için bir komut dizisi kullanılır. Buna OBIS kodu denilmektedir.

Bu kodun formatı, sayaçlardan endeks okunurken ekranda görülen formattadır.
Sayada  buton ile Toplam kW, T1,T2,T3 gibi seçimler yapıldıkça her biri için ekranda görülen menu formatıtır.
Ayrıca bu format sayaç kataloglarında da mevcuttur. İstenilecek daha özel kodlar katalogda yoksa sayaç firmasından mail ile istenebilir.
Ben öyle yaptım.

OBIS Örnekler:
0.0.0
0.9.2
0.9.1
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
5.8.0
8.8.0 gibi.

Şimdi bu kodları nasıl seri haberleşmeye yollayacağımızı ve nasıl alacağımızı ekleyelim.

Sayaç ilk haberleşmeyi 300 baud rate ile yapmaktadır.  Sonra 9600'e çıkmaktadır.

Öncelikle sayacı uyandıralım. Aşağıdakileri sırayla uygulayalım.

Bort uyandırma Bölümü:
Kendi cihazınızın portunu '300,e,7,1' set ediniz.

Portu string modda kullanacağınız varsayımıyla diziler şöyle olacak.
Not = (") Tırnak işaretleri veriye dahil değildir. String olduğunun ifadesidir. Yani "A" = rakamsal 65 dir.

Porta gönder ="/?!"+chr(13)+chr(10)

Bekle 200ms (siz belirleyin)

Porta gönder =  chr(6)+"050"+chr(13)+chr(10)

Bekle 200ms (siz belirleyin)

Burdan sonra baud rate 9600 dönecektir.
Kendi cihazınızın portunu '9600,e,7,1' set ediniz.

Porta gönder = chr(1)+"R2"+chr(2)+"0.0.0"+"()"+chr(3)+ "P"

Şimdi Portu okuyunuz:
Gelen bir veri varsa Uyandırma başarılı.

Şimdi tercih edeceğiniz Sayaç endeks vesair verileri alma bölümüne geldik.

"1.8.0" OBIS kodlu menü, toplam aktif enerji (+T) miktarını verir.

Porta gönder = chr(1)+"R2"+chr(2)+"1.8.0"+"()"+chr(3)+"Y"

Porttan gelen veriyi string modda oku.


Haberleşmeyi kapat
Porta gönder = chr(1)+"B0"+chr(3)+ "q"



Dizi sonlarındaki "P,q,Y" gibi karakterler BCC kodlarıdır. Bu aslında veriye göre hesaplanır.
Ancak Basit işler için size kolaylık olsun diye liste şeklinde veriyorum.

0.0.0     P
0.9.2     [
0.9.1     X
1.8.0     Y
1.8.1     X
1.8.2     [
1.8.3     Z
1.8.4     ]
5.8.0     İ
8.8.0     P
32.7.0    f
52.7.0    `
72.7.0    b
31.7.0    e
51.7.0    c
71.7.0    a
21.7.0    d
41.7.0    b
61.7.0    `
23.7.0    f
43.7.0    @
63.7.0    b
29.7.0    L
49.7.0    j
69.7.0    h
33.7.0    g
53.7.0    a
73.7.0    c   
34.7.0    @

ayhani

Alıntı yapılan: Muhittin22 - 10 Nisan 2015, 11:40:17
ELEKTRIK SAYACI NASIL OKUNUR

Kendi yöntemimi anlatacağım.

Haberleşme Bağlantısı:
1-Sayaç üzerindeki optik alıcı verici IR göz ile seri haberleşme.
2-485 bağlantı ile seri haberleşme.

Gönderilen ve alınan veri karakter şeklindedir(ASCII). Örnek Port'a CHR"0" için bir byte 48 yollanır.
Sayaçtan bilgi almak için bir komut dizisi kullanılır. Buna OBIS kodu denilmektedir.

Bu kodun formatı, sayaçlardan endeks okunurken ekranda görülen formattadır.
Sayada  buton ile Toplam kW, T1,T2,T3 gibi seçimler yapıldıkça her biri için ekranda görülen menu formatıtır.
Ayrıca bu format sayaç kataloglarında da mevcuttur. İstenilecek daha özel kodlar katalogda yoksa sayaç firmasından mail ile istenebilir.
Ben öyle yaptım.

OBIS Örnekler:
0.0.0
0.9.2
0.9.1
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
5.8.0
8.8.0 gibi.

Şimdi bu kodları nasıl seri haberleşmeye yollayacağımızı ve nasıl alacağımızı ekleyelim.

Sayaç ilk haberleşmeyi 300 baud rate ile yapmaktadır.  Sonra 9600'e çıkmaktadır.

Öncelikle sayacı uyandıralım. Aşağıdakileri sırayla uygulayalım.

Bort uyandırma Bölümü:
Kendi cihazınızın portunu '300,e,7,1' set ediniz.

Portu string modda kullanacağınız varsayımıyla diziler şöyle olacak.
Not = (") Tırnak işaretleri veriye dahil değildir. String olduğunun ifadesidir. Yani "A" = rakamsal 65 dir.

Porta gönder ="/?!"+chr(13)+chr(10)

Bekle 200ms (siz belirleyin)

Porta gönder =  chr(6)+"050"+chr(13)+chr(10)

Bekle 200ms (siz belirleyin)

Burdan sonra baud rate 9600 dönecektir.
Kendi cihazınızın portunu '9600,e,7,1' set ediniz.

Porta gönder = chr(1)+"R2"+chr(2)+"0.0.0"+"()"+chr(3)+ "P"

Şimdi Portu okuyunuz:
Gelen bir veri varsa Uyandırma başarılı.

Şimdi tercih edeceğiniz Sayaç endeks vesair verileri alma bölümüne geldik.

"1.8.0" OBIS kodlu menü, toplam aktif enerji (+T) miktarını verir.

Porta gönder = chr(1)+"R2"+chr(2)+"1.8.0"+"()"+chr(3)+"Y"

Porttan gelen veriyi string modda oku.


Haberleşmeyi kapat
Porta gönder = chr(1)+"B0"+chr(3)+ "q"



Dizi sonlarındaki "P,q,Y" gibi karakterler BCC kodlarıdır. Bu aslında veriye göre hesaplanır.
Ancak Basit işler için size kolaylık olsun diye liste şeklinde veriyorum.

0.0.0     P
0.9.2     [
0.9.1     X
1.8.0     Y
1.8.1     X
1.8.2     [
1.8.3     Z
1.8.4     ]
5.8.0     İ
8.8.0     P
32.7.0    f
52.7.0    `
72.7.0    b
31.7.0    e
51.7.0    c
71.7.0    a
21.7.0    d
41.7.0    b
61.7.0    `
23.7.0    f
43.7.0    @
63.7.0    b
29.7.0    L
49.7.0    j
69.7.0    h
33.7.0    g
53.7.0    a
73.7.0    c   
34.7.0    @

Güzel paylaşım. Favorilere ekledim. Klavyene sağlık.
En iyi bildiğim şey hiçbir şey bilmediğimdir.

Murat Mert

S.A.
Sağol Muhittin hocam bilgilerin çok güzel.
mert07

erenbasturk

Muhittin paylaştığın bilgilerde bazı eksiklik ve yanlışlar var. Sayaçlar okunurken kullandıkları protokoller göze önüne alınır dlms, iec gibi. Seni bahsettiğin protokol iec mode-c. Bu protokolde sayaç'a bir sorgu gönderirsin ve sayaç sana "/ACK0Z1 CR LF" şeklinde bir cevap gönderir sana buraki Z sayacın geçeceği bir sonraki baudrate değeridir. Okuma yaptıgın sayaç 9600 baud'una geçiyorsa sana "/ACK05 CR LF" cevabı gelmiştir buradaki 5 9600 baud'unu temsil etmektedir.

Muhittin22

#4
Marhabalar.

Mesajım içerisinde yanlışım varsa düzeltilmesini ifade edecektim unutmuşum özür dilerim.  erenbasturk arkasaşıma teşekkür ederim.

Benim kullandığım iki meşhur marka sayaçda bu şekilde sonuç almıştım. Delphi ve pic kullandım ikisinden de sonuç aldım.  Sonuç alana kadar epey uğraşmıştım. Başka arkadaşlarımda aynı uğraşıyı vermesin diye paylaştım. Ayrıca sayaçların tüm anlık değerlerinin okunmasında bazı aksamalar gördüm. Örneğin bir tanesi,  B fazı anlık kapasitif reaktif değeri vermiyordu, bir diğeri başka bir değeri vermiyordu. Sorunu firmayla paylaştığımda bu hatayı doğruladılar.

Yanıtlar için teşekkürler.


kamber7373

gerçekten işime çok yaradı muhittin bey. paylaşımınız için tekrar tekrar teşekkürler.

mmkaratokus

Merhabalar öncelikle bilgilendirmeniz için teşekkür ederim, takıldığım bir konu var, BCC hesabı yaptığımda sizin sonuçlarınızla bir olmuyor, BCC hesabını nasıl yapıyorsunuz ?


mustys

konuya biraz katkımız olsun
sayaca RS485 yada optik port üzerinden baglandıktan sonra ilk sorgulama İEC62056 standartlarına göre
/?!\r\n
bu şekilde yapıyorum.sonrasında makel sayaclarda kısa güç profili için
ACK0Z6\r\n
sorgusu ile

0.0.0(100026211)
0.2.0(V10.91)
0.9.1(00:29:42)
0.9.2(23-09-18)
0.9.5(1)
1.8.0(000064.804*kWh)
1.8.1(000036.128*kWh)
1.8.2(000015.350*kWh)
1.8.3(000013.326*kWh)
1.8.4(000000.000*kWh)
1.6.0(000.004*kW)(23-09-17,04:19)
96.1.3(23-04-11)
96.2.5(23-04-11)
32.7.0(230.7)
31.7.0(000.0)
14.7.0(50.0)
33.7.0(0.00)
!

cevabını alabiliyoruz.

RS485 haberleşmeli sayaclar maliyet olarak biraz fazla o yuzden rs485 portu olmayan sayaclar içinde şöyle bir optik prob maceramız mevcut buyrun bi göz atın

ibrahim96

Merhaba kodu paylaşa bilirmisiniz rica etsem

OmerFTMLL

Kolay gelsin,üniversite öğrencisiyim denemeler yapıyorum da bana örnek kod paylaşabilir misiniz ESP32 için rica etsem.