Kisi Sayısını Kayıt ve PC ye aktarma mantıgı

Başlatan M_B, 25 Eylül 2009, 07:26:56

M_B

Merhaba arkadaslar;
Bir konuda fikirlerinize ihtiyacım var.
Şu şekilde bir uygulama yapılmayı dusunuluyor.
Bu uygulama için nasıl bir algoritma kurulmalı ki programı yazılabilsin.

Simdilik elimizde 10 tane gişemiz var.( artabilirde )
ve bir tanede merkezi yerimiz var.

Sonuc olarak 10 Tane Slave işlemci
1 tane master işlemci olacak. Kendi aralarındaki baglantı şekli Usart.
Her slave işlemcide birer tane Tarih&saat bilgisini almak için Entegre olacak.

Bu gişelerken  gecerken slave işlemci giseden gecenleri
sensor sayesinde algılayacak, sayacak ve geçtiği an saat ve tarih bilgisini tutacak.

Merkezi bir yerdeki  master işlemcimiz ise belli peryotlarda slave işlemcilerdeki
bilgileri alıp bilgisayara aktaracak. Aldıgı bilgi  ve PC ye aktaraçağı bilgi şu
şekilde olacak.


ID numaralı gişe ( veya 1.numaralı )

Toplam gecen sayısı 325
1.kısı geçiş anı 10:12 25/09/2009
2.kısı geçiş anı 10:13 25/09/2009
3.kısı geçiş anı 10:15 25/09/2009
4.kısı geçiş anı 10:20 25/09/2009
5.kısı geçiş anı 10:28 25/09/2009
devam ediyor.


Sonuc olarak benim duşuncem şu şekilde

Her Slave işlemciye bir ID numarası verilecek.
Master işlemci ID numarasına gore Slave deki bilgileri tek tek alıp
Pc ye aktaracak.

ornek olarak

bir numaralı Giseden gecen bilgileri nasıl kayıt altına alacagım
Cunku her gişeden gecmede elimizde şu şekilde bilgiler olacak

1.kısı geçiş anı 10:12 25/09/2009
2.kısı geçiş anı 10:13 25/09/2009
3.kısı geçiş anı 10:15 25/09/2009
4.kısı geçiş anı 10:20 25/09/2009
5.kısı geçiş anı 10:28 25/09/2009
devam ediyor.

Gunde her gişeden 100 kişi veya 10.000 kişide gecebilir.

Diğer gişeler icinde aynı durum gecerli.

Takıldığım nokta ise.
Bu verileri neye kayıt etmeli.
- Pic epromuna kayıt yapsak ne kadar bu şekilde bilgi alabilir.
- Harici Eprom olsa hangisinden kullanılmalı ve nasıl hesaplamalıyım  
Ornek olarak 24c16 ne kadar yukardaki gibi kısı sayısı alır.


Not:
-Bir başka cıkıs yolu olarak ise işlemler günluk yapılırsa master işlemci her slave deki verileri silebilir. ( bilgiler her aktarımdan sonra )
- Programlama dili C olacak.

Teşekkürler
Mehmet


Not: yazım biraz uzun olmuş vakit ayırıp okudugunuz için Teşekkürler
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

xenix

Geçiş sürelerini Unix Time olarak kaydedersen 4 byte yer kaplar. Örneğin Şubat 13, 2009 23:31:30 => 1234567890 =>4 byte yer kaplar.

ID sayısının 256 dan fazla, 65536 dan az olduğunu varsayarsak id için de 2 byte ayırmak gerekir. Toplam 6 byte var, 24c512 kullanarak 10666 giriş tutabilirsin. Daha çok kayıt etmek istersen SD karta yaz.

Yerinde olsaydım slave piclere saat entegresi koymayarak maliyeti düşürür ve tasarımı basitleştirirdim. Master slaveleri sürekli tarasın geçiş var mı diye, geçiş olduğunda ID yi alır,  ve sadece masterda olan saat bilgisini kullanarak kaydeder.

teknikelektronikci

sd kart kullanabilirseniz daha iyi olur en azindan bilgisayara aktarma manuel ollarak sd kart danda yapilir ayrica hafiza problemi cekmezsiniz yalniz merak ettigim konu slave ler ile master ler arasi iletisimi nasil yapacaksinz? usart demisiniz ama zor olmazmi? bildigim kadari ile rs485 haberlesmede bütün slave ler paralel baglaniyor ve mastere bilgi gönderebilyior veya benmi yanlis biliyorum :S proje güzel proje, aslinda bende su an rfid  ile tek giseli giris cikis kontrol ve dediginiz gibi kayit altina alma yapyiyorum ama slave ler yok slave ler arasi iletisimi nasil yapacaginizi biraz daha aciklarsaniz memnun olurum belki bende kendimkine uyarlarim kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

M_B

@Teknikelektronikci arkadaşım.
Haberleşme için  RS485  dusunuyorum.  Dediğiniz gibi hepsi parelel baglanacak. Her Slave ID numarası verileceği için. Master okumak istediği Slave için ona ozgu ID yi gonderecek alan slave lerden hangisine ait ise Slave diyecek ki bu benim o zaman ben mastera benden istediği bilgiyi vereyim diyecek.  
RS-485 kullanmam daki amac dusuncem mesafeler uzak.

@xenix Hocam bilginiz icin tesekkürler
Yalnız master slaveleri tarasın dediniz ya giriş algılama kaçma durumu olmaz mı
cunku şimdi diyelim birinci Slave baktı. Diğerlerini kontrol ederken o anda birinci slave geçiş sinyali algılamıs olabilir. Sonuncu Slave gelince bir tane daha algılamıs olamaz mı. Birde Slave ler artınca sorun olmaz mı ?. Yoksa bunu cok iyi mi dusunmek lazım.

Teşekkürler
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

xenix

Pratikte RS485 hattına 32 tane slave takabilirsiniz. Özel durumlarda 256 slave e kadar çıkabilirsin.

10ms gibi sürede bütün slaveler taranabilir. Bu esnada bir bankodan 2 geçiş olmaz, bence sorun olmaz.

picusta

Master islemci PC'ye bagli oldugundan saati PC'den alsin.
Sonra belli araliklarla (her gece yarisi veya Slave açilirken) saat bilgisini Slave'e göndersin.
Master- Salve her zaman bagli oldugu için (RF veya WIFI olsaydi ayni seyi söylemek zor) oldugu  için RAM'de bir FIFO rahatlikla yeter. Slave'de Enerji kesintisini algilayan bir devre yap, enerji kesildiginde, Flash'a verileri kaydetsin.
FIFO mantigini biliyorsan, ve her ihtimale karsi çalismasini saglayabiliyorsan, sorun yok.
PC'ye de MS-SQL Server Express türü bir veri tabani, bir de güzel arayüz yaparsan tadindan yenmez.

SiVRiSiNEK

saat entegresi dediğin nedirki? 1$?
bence her slave in kendi saat entegresi olmalı mesela hatta kopukluk oldu tarama yapamadın ne olacak? data hattında kopukluk olsa bile slaveler geçişi kayıt altına alabilmeli ve masterda iletişimde hata olan slave leri algılayıp mesela pc ortamında rapor edebilmeli, haberleşme normale döndüğündede slavede biriken geçişleri okuyabilmeli, her okuyup pc ye aktarma işleminden sonrada slave e komut gönderip içerisindeki bilgileri sildirebilirsiniz
ayrıca master slavelere komut gönderip saat bilgisinide güncelleyebilir, mesela slave saatlerini bağlı olduğu pc nin saati ile aynı yapabilir

hafıza olayına gelince 24C512 için +10000 kayıt örneği verilmiş yinede yetmezse 8 tane 24C512 yi bir I2C hattına bağlayıp adresleyip bu sayıyı +80000 üzerine çıkarabilirsiniz ve en basit depolamayı bu şekilde yapabilirsiniz, SD kartı okuyup yazmak görece eepromdan daha zordur ve soket vs lazım olacak falan filan.

M_B

Alıntı yapılan: "picusta"Master islemci PC'ye bagli oldugundan saati PC'den alsin.
Sonra belli araliklarla (her gece yarisi veya Slave açilirken) saat bilgisini Slave'e göndersin.
Master- Salve her zaman bagli oldugu için (RF veya WIFI olsaydi ayni seyi söylemek zor) oldugu  için RAM'de bir FIFO rahatlikla yeter. Slave'de Enerji kesintisini algilayan bir devre yap, enerji kesildiginde, Flash'a verileri kaydetsin.
FIFO mantigini biliyorsan, ve her ihtimale karsi çalismasini saglayabiliyorsan, sorun yok.
PC'ye de MS-SQL Server Express türü bir veri tabani, bir de güzel arayüz yaparsan tadindan yenmez.

@Picusta Hocam; Dediginizi su an benim yapma durumum olmaz o kadar bilgiye sahip değilim FIFO olayını bılmıyorum. PC den saat bilgisini alamam. Ama ilerisi icin çalışırsam olabilir diye düşünüyorum.

Ama FIFO olayı hakkında bir arastırma yapayım bakayım ne tur faydası olabilir. Bu olay için nasıl kullanılabilir Hocam ufak bir mantık soyleyebilirmisiniz.

Teşekkürler
Mehmet
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

picusta

FIFO çok genel bir kavram. Burada kast ettigim yazilimsal FIFO.
iki program parçasinin (iki ayri süreç olabilir) birbiri ile veri kaybetmeden asenkron biçimde veri alip vermesini sagliyor.
Kisi algilama fonksyonu ile master'e gönderme fonksyonu arasinda bir boru düsün. 1. fonksyon veriyi üretiyor (saat'i kaydedip boruya koyuyor) 2. fonksyon tüketiyor (borudan alip mastere gönderiyor).
Eger 1. fonksyon 2. fonksyon isini bitirmeden veri üretiyorsa, boruya koyuyor ve veri kaybi olmuyor.
Dolayisi ile Master irtibati koparsa (belli bir süre için) veri kaybi yasanmiyor.
FIFO aslinda RAM'de bir liste, ve bu listeye dolayli yoldan ulasmak için birkaç fonksyondan ibaret.
"Circular buffer"'i arastir bir de.
Devre elektrigin kesildigini algiladiginda bu listeyi FLASH'a saklamali. Daha sonra elektrik gelip Master irtibati kurulunca liste RAM'e yüklenip master'a bosaltilacak.
Verilerin dogru ulastigini bilmek için checksum ve ACK/NACK mesajlarida olmali.
Saat bilgisi mecbur Master tarafindan slave'lere gönderilmeli (slave'ler sonra kendileri saati tutacak tabii ) yoksa sistemde senkronizasyon kalmaz. Bütün slave'ler ayni saate sahip olmali (saniye mertebesinde).

cdurakbasi

Picusta nın dediği tek noktadan senkronizasyon güzel ve garanti çözüm.
Öte yandan senkronizesiz düşünülürse sorgulama gecikmesinden kişi kaçırma mevzusu çok kritik olmasa gerek, zira en küçük kayıt birimi zaten saniye ise slave e düşen sadece son sorgudan sonraki geçen kişi adedini tutmak olmalı zira zaten min sn birimi kaydediliyor.Bu da masterın 31 slave sorgulaması için her seferinde önünde koca bir saniyesi var demek değilmidir acaba(eğer min. dk. ise karnını kaşıya kaşıya).......Yine de senkronizasyon en garanti gibi.

M_B

Merhaba arkadaşlar,
Henuz bu proje askıda Ben genede yapılacakmış gibi bu işin mantığını ögrenmek için  araştırma yapıyorum. ( Eger bu olayı gerçekleştirebilirsem E-Dergide yayınlamak isterim )

Araştırma yaparkende Picustanın mantığını kullanmak istiyorum.
Yalnız kafama takılan bir takım noktalar var.
Picustam biraz daha detaya inebilirmiyiz. Biliyorum indiniz kafamda da canlandırabiliyorum yalnız nasıl uygulamam gerektiğini bir türlü oluşturamadım.

Ben resimdeki şema gibi bir baglantı yapmayı düşünüyorum  Burda 3 tane Slave gozukuyor o sayı artacaktır. 50 eya 100 olabilir.



Burada kast ettigim yazilimsal FIFO. 

FIFO aslinda RAM'de bir liste, ve bu listeye dolayli yoldan ulasmak için birkaç fonksyondan ibaret.


Picusta hocam burdaki yapıyı nasıl yapmalıyım. onu bir turlu kafamda canlandıramadım.

"Circular buffer"'i arastir bir de.

kısmına baktım  ve anladıgım kadarıyla bır halka seklınde verı alıs verişi oluyor.  

Picusta hocam Bu bahsetmiş olduklarınızı yukardaki semaya uygulanabilir mi ?. Uygulanamazsa nasıl bir şema olmalı.
Bu yapı ile ilgili bir kademe daha ilerleyebilmem için kabaca bir iskelet oluşturabilirmiyiz.

Teşekkürler
Mehmet
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

picusta

"Flying the PIC24"  gibi bir kitap olacak orada interrupt hakkinda bölümde interrupt ile anaprogram arasina nasil yapilir anlatimi ve C kodu var.
Su an daha fazla yazamiyorum.

MC_Skywalker

bBelki bir fikir oluşturu diye Bizim şirketin geçiş sistemi değiştinde eski ve yeni sistemi inceleme fırsatım oldmuştu onu aktarayım

eski sistemde kart okuyucular kart'a rs232 ile direk bağlı. Bir kart üstünde 2 okuyucu için giriş var ve turnike kolunu döndürmek için 2 çıkış.

kart üsütünde Z80 işlemcili bir yapı var. reset kontrol entegresi, realtime saat entegresi Rs485 çıkıs entegresi.

kartlar PC ile sürekli haberleşme halinde okuma gerçeleşir gerçekleşmez PC dekiyazılıma gönderiyor. Bu arada sistem ilk çalıştında ve belirili periyotlarda geçiş yetki bilgilerini kartlara gönderiyor.

yeni sistemde ise kart okuyucular kart'a rs232 ile direk bağlı. Bir kart üstünde 2 okuyucu için giriş var ve turnike kolunu döndürmek için 2 çıkış.
MCU temmeli bir yapı var. reset kontrol entegresi, realtime saat entegresi Rs485 çıkıs entegresi ve ek olarak Flash bellek. ve ek olarak RS485 i Ethernet'e çeviren kart var okuyucalar ile PC ethernet üzerinden haberleşmiş oluyor.
tüm kayıtlar flash üzerinde tutuluyor PC belirli aralıklar ile flash belleği okuyup işliyor. ve yine geçiş yetkileri PC tafafından bu flash'a yazılıyor.