Rx/Tx ile haberleşen iki mcu nun yaptığı işleri senkronize etmek?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,204
Motor çalıştırıp durduran bir kartım var. Kart üzerinden kabaca start, stop inputları ve motor çıkışı var. Şimdi ben iki ayrı karta aynı anda start/stop sinyali vererek kartları senkronize çalıştırıyorum. Bu duruma alternatif bir çözüm oluşturmak istiyorum. Kartın birine (bu master olsun) sinyal verince diğer karta (slave olsun) seriport üzerinden komut göndersem diğer kartı da start konumuna getirebilirim. Ancak iletişim sırasında bir zaman farkı olacak. Bu işi nasıl senkronize ederim?

Master : komut gönder, cevabı al, motoru çalıştır,
Slave : komut al, cevap al, cevabın gitme süresince bekle, motoru çalıştır.

Böyle birşeyler geliyor aklıma...
 
  • Beğen
Reactions: nt
Slave'in komut al, cevap al, motoru çalıştır süresini tespit edip, master'a o süre kadar gecikme ekle. Süre mili-micro saniyeler cinsinden olacağı için gecikme pek farkedilmez.
 
Iki karti surmek icin RTC iceren birer kontrol devresi ekleyebilirsiniz. Bunlara start stop komutunu gonderen devre calisma zamanlarini saat olarak gonderir. Aradaki mesafe ne kadar uzun olursa olsun mutlaka es zamanli calisacaklardir.
 
Motor çalıştırıp durduran bir kartım var. Kart üzerinden kabaca start, stop inputları ve motor çıkışı var. Şimdi ben iki ayrı karta aynı anda start/stop sinyali vererek kartları senkronize çalıştırıyorum. Bu duruma alternatif bir çözüm oluşturmak istiyorum. Kartın birine (bu master olsun) sinyal verince diğer karta (slave olsun) seriport üzerinden komut göndersem diğer kartı da start konumuna getirebilirim. Ancak iletişim sırasında bir zaman farkı olacak. Bu işi nasıl senkronize ederim?

Master : komut gönder, cevabı al, motoru çalıştır,
Slave : komut al, cevap al, cevabın gitme süresince bekle, motoru çalıştır.

Böyle birşeyler geliyor aklıma...
Çok iyi senkron olması gerekiyorsa fazladan bir i/o ile kolay olur. İletişim kanalından start-stop sinyaline hazırlanmasını sağlarsın slave kartların. Sonra tek sinyal pininden tetikleme yapabilirsin.
Ya da tetikleme için iletişim pinlerini belli bir süre interrupt pini gibi tutabilir, tetiklemeyi beklemesini sağlayabilirsin. Belli bir time-out sonrasında iletişim portunu normal işlevine döndürebilirsin.
 
.. kartlara aynı anda sinyal göndermek daha sağlıklı. Yani hali hazırdaki çalışan sistem..
 
Kartları çalıştırmak bile gerçekten büyük bir başarı, ve haberleşmelerini sağlamak...

Ülkeme katma değer kattığınız için hepinize teşekkür ederim.
 
Merhaba, SPI haberleşme benim de ilgimi çeken bir konuydu. Geçmiş zamanlarda böyle bir çalışma yapmıştım. Burada gecikme oldukça kısadır. Yazılımda kullanılan BEKLE alt rutinindeki değerler ile daha da kısaltılabilir. Masterda basılan butona tekabül eden slave, komutu alır. Aldığı komut ile ASCII değerini gösterir. Ve Mastere geri bildirim verir. Master de geri bildirim veren slave ait ledi yakar. Bu çalışma genel amaçlı olup her türlü endüstriyel uygulamaya tatbik edilebilir. Hatta komut alan slave 1 e gerekli eylemler yaptırılır işlem bitiminde mastere geri bildirim verir. Bu çalışmanın 3lü versiyonunu zaman zaman gurubumda da paylaşmıştım. Hep yazarım .............................@gmail adresi olan arkadaşlara google drayvırımdaki arşivden paylaşabilirim. MCU yazılımlar assembly kodlar ile yazılmış olup tamamen benim geliştirdiğim bir çalışmadır. Bu çalışma kısa mesafe(oda içinde RF ile) yapılabilir diye düşünüyorum. Ama deneme yapmadım zira 9 adet MCU lazım sadece PIC maliyeti 4000-4500 tl civarıdır. Bu çalışma ayrıca PC'ye de uygun yazılmış bir ara yüz ile de kontrol edilebilir.
 
Uart iletişiminin pic üzerinden yapıldığını ve aradaki mesafenin kısa olduğunu varsayarsak uart hızı 1mbit yada 4mbit seviyesine çıkarılabilir. Bu sayede iletişim süresi oldukça kısalacaktır. Yada tam senkron isteniyorsa paralel bir hat daha çekilir. Master olan cihaz önce yspılacak görevi gönderir. Karşı taraf görevi aldıktan sonra ekstra hattı 1 yapıp göreve başlar. Slave olan cihaz da uart üzerinden görevi alınca ekstra hattı dinler. 1 olunca göreve başlar. Senkron farkı mikrosaniye civarında ancak olur diye düşünüyorum
 
Eğer mümkünse, tek bir komut ile efendi işlemciyi kontrol ettikten sonra, efendi işlemcinin motor süren çıkışını paralele olarka köle işlemciye giriş olarak ver.

Böylece köledeki bir kesmeyle, her komutun iki cihaz içinde geçerli olacağını garanti etmiş olursun.

Motorları bağımsız çalıştırmak istediğin durumlarda kesme olsa bile bu girişe duyarsız davaranabilirsin...
 
Yorumlar için teşekkür ederim. Biraz düşündüm ve bu işin bu kadar kolay olmadığına karar verdim. Arada başka kriterler var. Mesela stop sinyalim aslında emergency stop. Haberleşmede bir hata olursa motorun durmama ihtimalini göze alamam. Sadece şöyle bir çözüm olabilir.
Slave karttaki girdiler haberleşme ile master karta çekilecek. Slave kartıda haberleşme ile master kart yönetecek. Haberleşme kesilir ise slave kart motoru durduracak. haberleşme var ise direktife uygun hareket edecek. Bu düşünce ışığında haberleşme yoğun olacak ve master karta daha çok işlem binecek.... Denemek lazım...
 
Bu kadar zor değil arkadaşlar ne yaptınız.
PLC'lerde yıllarca kullanılan modbus bunun için zaten.
Birisi master olur, 150 tane de slave, bir butona basarsın master slavelere çalışın durun der bu kadar.
Modbus diye aratınca bir çok kaynak çıkacaktır, motor gibi gürültülü yerler için ise rs485 biçilmiş kaftan.
 
Bu kadar zor değil arkadaşlar ne yaptınız.
PLC'lerde yıllarca kullanılan modbus bunun için zaten.
Birisi master olur, 150 tane de slave, bir butona basarsın master slavelere çalışın durun der bu kadar.
Modbus diye aratınca bir çok kaynak çıkacaktır, motor gibi gürültülü yerler için ise rs485 biçilmiş kaftan.
Projenin ne oldugu hakkinda bilgi olmayinca mikrosaniye de mi degerli acaba diye dusunuyor insan. Belki de amelyat robotu gelistiriyordur.
 
İstenen hassasiyeti bilsek daha doğru yorumlar çıkar ortaya
Iki karti surmek icin RTC iceren birer kontrol devresi ekleyebilirsiniz. Bunlara start stop komutunu gonderen devre calisma zamanlarini saat olarak gonderir. Aradaki mesafe ne kadar uzun olursa olsun mutlaka es zamanli calisacaklardir.
mesela rtclerin kristallerinin doğrulugu ve stabilliği çok önemli doğrulugu eksikse çok yüksek doğrulukta bir kalibrasyon cihazı ile kalibre edilmişsse sorun çözülür ama stabilliği eksikse ne yaparsak yapalım kayar saatler

Sonuçta rtclerin içerisine rubidyum frekans referansı veya ocxo koymalarını bekleyemeyiz
Saati internetten kalibre etmek için esp eklenebilir ama yine ne kadar hassas olduğunu bilmiyoruz

Aklıma gelen en iyi çözüm fiber optik alici ve verici ile idoğrudan harici kesme tetiklemek hatta 2 hat yapıp bir tanesini sorun yok sinyali bir tanesini motor sinyali yapıp extra güvenlik amacli algoritmalar kurulabilir
 
İstenen hassasiyeti bilsek daha doğru yorumlar çıkar ortaya

mesela rtclerin kristallerinin doğrulugu ve stabilliği çok önemli doğrulugu eksikse çok yüksek doğrulukta bir kalibrasyon cihazı ile kalibre edilmişsse sorun çözülür ama stabilliği eksikse ne yaparsak yapalım kayar saatler

Sonuçta rtclerin içerisine rubidyum frekans referansı veya ocxo koymalarını bekleyemeyiz
Saati internetten kalibre etmek için esp eklenebilir ama yine ne kadar hassas olduğunu bilmiyoruz

Aklıma gelen en iyi çözüm fiber optik alici ve verici ile idoğrudan harici kesme tetiklemek hatta 2 hat yapıp bir tanesini sorun yok sinyali bir tanesini motor sinyali yapıp extra güvenlik amacli algoritmalar kurulabilir
RTC'lerin kayma hassasiyeti yazar zaten datasheet'te. Iste atiyorum yilda 12 saniye gibi. Bunun onune gecmek icin time server kurarsin master'a. Belirlenen araliklarla RTC saatini master'in saati ile esler. Saati internet uzerinden eslemek riskli olabilir. O an time server'a internet uzerinden erisemezse sorun cikar. Ama bize lazim olan zaten master'in saati. Hepsi ayni olugu surece sorun yasamazlar.
 
RTC'lerin kayma hassasiyeti yazar zaten datasheet'te. Iste atiyorum yilda 12 saniye gibi. Bunun onune gecmek icin time server kurarsin master'a. Belirlenen araliklarla RTC saatini master'in saati ile esler.
olabilir aslinda gerçek saate göre doğru olmalarına gerekmyoo kendi aralarında doğru olsalar yetiyor
Ama yine bir problem var yazarken fark ettim
kalibirasyon sırasında Time serverdan saat bilgisini slave cihaza nasıl gecikme olmadan göndereceğiz zaman bilgisi slave cihaza gidip işlenene kadar geçerliliğini yitirmiş olacak eğer çok yüksek bir hassasiyetten bahsediyorsak
 
olabilir aslinda gerçek saate göre doğru olmalarına gerekmyoo kendi aralarında doğru olsalar yetiyor
Ama yine bir problem var yazarken fark ettim
kalibirasyon sırasında Time serverdan saat bilgisini slave cihaza nasıl gecikme olmadan göndereceğiz zaman bilgisi slave cihaza gidip işlenene kadar geçerliliğini yitirmiş olacak eğer çok yüksek bir hassasiyetten bahsediyorsak
Uydulardan atom saati ile esleme yapabiliyoruz. Bunu yapabilen hassasiyet var yani teknoloji olarak. Is ne kadar hassas onu bilmek lazim. Cern'de arastima icin kullanilan atom saatinden alirsin 0.00001 uS hassasiyet lazimsa. Artik kac yuz milyon dolar fiyat cikarirlar bilemem tabii. :D
 
Uydulardan atom saati ile esleme yapabiliyoruz. Bunu yapabilen hassasiyet var yani teknoloji olarak. Is ne kadar hassas onu bilmek lazim. Cern'de arastima icin kullanilan atom saatinden alirsin 0.00001 uS hassasiyet lazimsa. Artik kac yuz milyon dolar fiyat cikarirlar bilemem tabii. :D
Evet aslinda gpsden zaman verisini çalmak en hassası ama onun kısaltmasını unuttum d ike baslayan 0 ile biten biseyfi sanki forumda o konu ile ugrasanlar vardı sanki baslık olarak değil de laf arasında gormustum
 
Arduino ile RTC kullanimi projesi :

Adafruit DS3231 Hassas RTC Breakout : ( 800 TL civari )


Datashetine gore yilda 2 dakika +- sapmasi varmis. Bu da 250.000'de bir sapma demek. 4 uS hata payi sanirim Jet ucaginda dahi yeterli olabilir. Datasheetin 9 sayfasi.

 
Arduino ile RTC kullanimi projesi :

Adafruit DS3231 Hassas RTC Breakout : ( 800 TL civari )


Datashetine gore yilda 2 dakika +- sapmasi varmis. Bu da 250.000'de bir sapma demek. 4 uS hata payi sanirim Jet ucaginda dahi yeterli olabilir. Datasheetin 9 sayfasi.

Oyle hesaplayamayız ama
Sapmanın toplam gecen zamana oranı onemli değil
Biri 2dakika ileri kayar biri bir dakika geri kayar aralarında 3 dakika sapma olur
 
Oyle hesaplayamayız ama
Sapmanın toplam gecen zamana oranı onemli değil
Biri 2dakika ileri kayar biri bir dakika geri kayar aralarında 3 dakika sapma olur
E sizde bir yil beklemeyin canim artik saati esleyecegim diye. Bir yil aramayinca karisi unutur adami, saat mi sasmayacak. :katil2: :katil2:

@Endorfin35+ in yaptigi proje ne bilmiyorum ama 7/24, saniyede 500 defa komut gonderdigini sanmam. Askeri standartlar icin bile bu kadari fazla. 16Mhz'de calisan arduino icin saniyede hatta dakikada bir esleme yaparsaniz sorun cikmaz herhalde.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,880
Mesajlar
100,274
Üyeler
2,491
Son üye
djkop

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top