From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI Ürünleri İle İlgili Tartışmalar

cancel
Showing results for 
Search instead for 
Did you mean: 

Tetikleme sinyali ile çoklu analog girişten tek tek veri okumak

Herkese selamlar,

Şimdiden konu hakkında yardımcı olacak herkese teşekkür ederim. analog çıkışa sahip olan (-10/+10V) sekiz (8) sensörden veri alarak bir dosyaya kaydetmeyi amaçlıyorum.  Fakat bu verileri dışarıdan gelen bir tetikleme sinyali ile almak istiyorum. tetikleme sinyalinde pulse lar arasındaki zaman sabit değil. tahminen ortalama 2kHz bir frekansa sahip olan tetikleme sinyalinin girişini PFI olarak yapmayı düşünüyorum. ama burada şöyle bir sorun karşıma çıkıyor tetikleme sinyalinden sonra sırası ile sensör1-sensör2-sensör3-...-sensör8 den alacağım verileri birer (1) tane alamıyorum. çünkü n samples ta en az 2 değerini girebiliyorum. yani bir tetikleme sinyali ile 8 veriyi ard arda nasıl okuyabilirim? ingilizce forumda ve white paper kısmında oldukça fazla araştırdım ama maalesef bulamadım. elimde bulunan kartlar ni6009 (bunu kullanmayacağım), usb 6210 ve pci 6010. sinyal yaklaşık 5 metreden geldiği için de differential olarak bağlantı yapmayı düşündüm. daha önceden veri toplama üzerine çalışan basit programlar express.vi ve daqmx kullanarak yazdım.ama burada tetikleme frekansı nispeten yüksek olduğu için flat sequence yapısının doğru çalışmayacağını düşünüyorum.

 

Biraz uzun oldu ama okuyup zaman ayırdığınız için teşekkür ederim. iyi çalışmalar.

 

Mustafa.

0 Kudos
Message 1 of 10
(4,449 Views)

Merhaba Mustafa Bey, 

 

Sadece 6210 serisi ile yapabileceğinizden emin değilim ancak eğer imkanınız varsa C serisi dijital çıkış modülü kullanarak onu bir clock source olarak kullanıp senkronlayabilirsiniz. Aynısı olmasa da benzer bir uygulama (Mikrofon ve doppler vibrometer sensöründen veri toplama) cDAQ Gen II şasi ve C Serisi dijital giriş ve çıkış kullanarak yapmıştım. Zaten ürünler sisteminizde olduğu zaman DAQmx Timing.vi'daki Source girişinde çıkış modülünün yer aldığını göreceksiniz. (NOT: Şasinin hangi nesil olduğuna göre değişebilir çünkü task sayısı nesile göre değişiyor. Kullanmadığım için emin değilim.) 

 

İyi çalışmalar,

 

Emre TÜZÜNER 

AnsoLab Elektronik

Actor Framework rocks!
Emre TUZUNER
0 Kudos
Message 2 of 10
(4,417 Views)

Cevabınız için teşekkür ederim Emre Bey,

Maalesef başka kart ile bu işlemi gerçekleştirme imkanım şu anda yok. Ayrıca dışarıdan gelecek olan clock sinyalini bir encoderden alacağım. belki tam olarak ifade edememiş olabilirim diye eklere sinyalin örneğini - yapmak istediğimi koyuyorum. ayrıca her tetiklemede ardarda 8 veriyi almak istiyorum ve ortalama tetikleme sinyali hızı 2kHz. n samples ta 1 yazamıyorum çünkü sistem izin vermiyor. en az 2 girilmesi gerekiyor. veri uzun (yaklaşık 5 m) bir mesafeden geleceği için de diff. bağlantısı yapmıştım. forumda uzun süredir araştırdım ve hala araştırıyorum, belki çok kolay bir yolu vardır ama bulamadım. zaman ayıran herkese çok teşekkürler...

0 Kudos
Message 3 of 10
(4,413 Views)

Merhaba Mustafa Bey, 

 

N Samples değil de continuous seçip encoder'dan geleni DAQmx Read ile okuyup bir Case Structure bağlayıp içerisinde okumayı denediniz mi? Bu da bir çözüm olabilir. Yani döngü hızını 2 kHZ'den fazla seçip (Yakalaması daha garanti, örneğin 2.5 kHZ gibi) her gelen pulse değerini case structure tarafına bağlayın. Case structure bir kere çalıştıracağı için içerisinde 8 adet sensörün okumasını gerçekleştirebilirsiniz diye düşünüyorum. Deneyip haber verir misiniz? 

 

Trigger kullanarak da yapabilmesiniz aslında ama ben de benzer koşulları sağlayan bir şey yapmaya çalışacağım. İş yoğunluğum sebebiyle donanımlarıma erişmem biraz zaman alabilir, en kısa zamanda sizinle sonuçları paylaşırım.

 

İyi çalışmalar,

 

Emre TÜZÜNER

AnsoLab Elektronik

Actor Framework rocks!
Emre TUZUNER
Message 4 of 10
(4,391 Views)

Uzun süredir yakın takip etmesem de istediğiniz türden işleri bahsettiğiniz veri toplama kartları ile yapamazsınız. Her tetiğe karşılık bir ölçüm yapmak için gerçek zamanlı (Real-Time) sistem kullanmanız gerekir. Standart veri toplama kartları belli miktar veriyi belli hızda toplayıp RAM'e aktaracak şekilde çalışır. Büyük boyutlu veriler toplayıp 500ms/1000ms gibi sürelerde bilgisayara aktarıp işlemenize imkan verirken yüksek hızda yinelenen işler yapmaya müsait değildirler. Yani 1M örnek/sn hızda çalışan cihaz saniyede 1000 kere tetiklenip veri toplamayabilir.

 

Yine de denemek isterseniz cihazı "1 Sample" e getirin. Sanırım "On Demand" seçerseniz yazılımsal olarak tek veri alacaktır. "HW Timed" seçerseniz dışarıdan vereceğiniz tetiğe göre alacaktır. Muhtemelen elinizdeki cihazla 1kHz hızında dahi veri toplayamayacaksınız. PCI bir kart üzerinde dışarıdan tetikle tek tek bu hızlara kadar çıkılabiliyor.

 

Çözüm;

Veri toplama kartını veri toplama kartı olarak kullanın 🙂

Hem enkoder sinyalini hem de okuyacağınız sensörleri analog girişlere bağlayın. Yeterli olabilecek hızın da üzerinde örnekleme yaparak bütün verileri toplayın. Daha sonra biraz yazılımla tetiklere karşılık gelen ölçümleri çıkarabilirsiniz.

 

Not;

Sanırım bu kart eş zamanlı (simultaneous) veri toplamıyor. Kanallar arasında multiplexer geçiş süresi kadar gecikmeler olacaktır. Çok önemli değilse ihmal edebilirsiniz. Aksi halde eş zamanlı ölçüm yapan bir kart kullanınız. Yada tam olarak istediğinizi yapmak için FPGA kullanan Real-Time bir donanıma geçiniz.

 

Message 5 of 10
(4,363 Views)

Emre Bey ve Zafer Bey cevaplarınız için teşekkür ederim. 

Öncelikle ben kullandığım programı ekliyorum. İngilizce forumda yardım alarak bunu yaptım.  Şu aşamada istediğim hızda veri aldığımı düşünüyorum fakat yanlış yaptığım bir noktada olabilir - özellikle kayıt noktasında-.

 

Elimdeki kart(6210) 250kS/s olduğu için ve 8 kanaldan data toplayacağım için  30k sample rate'de işlemi yapabildim. Bunun üzerinde ADC çevriminde zaman yetmiyor doğal olarak. Multiplexer ın kanallar arasını okuma zamanını kendimce test ettim ve benim için sorun teşkil edecek düzeyde değil.

 

Fakat - eğer programda sorun yoksa- denemek istediğim son bir şey var. o da dataların alındığı zamanı da bir sütun olarak excel dosyasına yazdırarak kontrol etmek istiyorum.

 

İlginiz ve cevabınız için teşekkürler.

Download All
0 Kudos
Message 6 of 10
(4,357 Views)

Bu örneği enkoder ile denediniz mi? Enkoderle eş zamanlı olarak veri topluyorsa sorununuz çözülmüş demektir. Açıkçası ben hala tam emin değilim. "Sample Clock" istediğiniz gibi çalışmayabilir.

 

Kayıt kısmında ise "Write to Measurement File" kullanabilirsiniz. Veri toplama sürelerinin de olması için okurken "Waveform" olarak almalısınız. "Daqmx Read" kısmını "Multiple Samples >> 1D Waveform" yapın ve "Write to Measurement File" ın girişini buradan alın. Yalnız değişken zamanlı veri toplayacaksanız verileri x,y şeklinde almanız gerekecek. Bu haliyle denediğinizde nasıl bir sonuç alıyorsunuz ona göre bakalım.

0 Kudos
Message 7 of 10
(4,349 Views)

Merhaba Zafer bey,

 

Encoder ile denemedim ama function generator ile denedim ve farklı frekanslarda sinyaller göndererek sonuç elde ettim. tabi yüksek hızda  kaç sinyal gönderdiğimi kesin sayı olarak bilemediğimden - yaklaşık olarak tahmin edebliyorum ama- zamanı da yanına yazdırmak istemiştim. yaklaşık olarak istedğim sayıda data aldığımı biliyorum ama. (Örneğin 5s boyunca 1kHz gönderdiğimde 5000 data civarı kaydedilmiş oluyor.) "Write to Measurement File" ile de deneyeceğim en kısa zamanda. Bir de "Write to Measurement File" ile "Daqmx Configure Logging (TDMS)" arasındaki farka dair bilginiz varsa ve bilgilendirirseniz sevinirim. Ben burada "Daqmx Configure Logging (TDMS)" kullandım ama örneklerden yardım aldım. Normalde" Daqmx Read"den sonra böyle bir ikonu yerleştirirdim ki kayıt yapılsın. tam olarak çalışmasını kavrayabilmiş değilim açıkcası.

İlginiz ve cevaplarınız için çok teşekkürler...

Mustafa. 

0 Kudos
Message 8 of 10
(4,345 Views)

TDMS kaydedilen veri, tipini de göz önünde bulundurarak, genelde "binary" veri kaydeder ve indeksleme yapar. Bir nevi veri tabanı gibi diyebiliriz. "Write to Measurement File" da ise metin olarak excel benzeri kayıt yapabilirsiniz. Daha sonra bu veriyi "Notepad" ile açarak veriyi başka platformlara taşıyabilirsiniz.

0 Kudos
Message 9 of 10
(4,342 Views)

Merhaba Mustafa Bey, 

 

High speed counter kullanılarak pulse da sayabilirsiniz benzer şekilde tetik de verebilirsiniz ki dediğim gibi benzer bir uygulama geliştirdim ve hala kullanılıyor. 

 

Bunun haricinde veri toplama tarafında takdir edersiniz ki bir limit olmalı. DAQ kartlarındaki buffer yönetimi önemlidir. http://digital.ni.com/public.nsf/allkb/8EF7084B908ABF6686257589007C97DF linkinde güzel bir şekilde anlatılmaktadır. 

 

Uzun süreli kayıtta bahsetmemiştiniz. Eğer öyle bir durum varsa zaten farklı çözüm aramalısınız. Mesela FPGA bu iş için çok uygundur. Burada devreye DMA (Direct Memory Access) FIFO'lar giriyor. Örneğin NI 9234 ile veri toplayacaksınız. NI 9234 kanal başına 51.2 kHZ örnekleme yapabilen 4 kanallı bir DSA (Dynamic Signal Acquisition) modülüdür ki en favori modüllerimdendir. Sıklıkla kullanırım. Dünya genelinde de popülerliği üst seviyededir. Bu cihazı DAQmx sürücüleriyle kullanabileceğiniz gibi FPGA tarafında da kullanabilirsiniz. Kendi timebase özelliği olduğu için senkronlama yapmak mümkündür. Tam olarak istediğiniz tipte uygulamalar için gerçekleştirilir ki ben de çok kullanırım. Modülün FPGA altında start ve stop bit leri yönetilebilir. Böylelikle FPGA tarafında SCTL mümkün olabiliecek ve yönetilebilecek en hızlı şekilde tetikleyebilirsiniz. FPGA tarafında yapılan yüksek hızlı ölçümün kaydı ise host tarafında yapılır. Host tarafına veriler DMA ile taşınır. DMA okumayı yaptığınız döngünün hızına bağlı olarak tamponlanmış veriyi host tarafına aktarırsınız. Bu bölümde host tarafı Windows da olabilir Real-time da olabilir. Veriler tamponlandığı için düzgün yönetildiğinde istediğiniz hızdaki veriyi işletim sisteminin çekirdek özelliklerinden bağımsız bir şekilde kayıpsız kayıt edebilirsiniz. Talebiniz doğrultusunda daha ayrıntılı anlatabilirim. Birkaç gün önce devreye aldığım bir makinede bahsettiğim yapıyı kullandım. Geliştirdiğim bir kontrol sistemi (PID vb. olmayan) FPGA tarafında 100 usec ile çalışırken verileri Windows tarafında kayıt altına alıyorum. Temiz ve planladığım şekilde hiç bir kayıp olmadan kayıt işlemini gerçekleştiriyor. Zaten kayıpsız olması için DMA FIFO'lar var o da ayrı bir konu.. 🙂 

 

Uzun lafın kısası, Zafer Bey'in de belirttiği gibi ürünleri doğru seçip kullanmak lazım. Yapılabilir olması her zaman istediğinizi tam olarak karşılayacaktır anlamına gelmeyebilir.

 

Herhangi bir konuda sormak istediğiniz bir şey olursa memnuniyetle yardımcı olmayı isterim. 

 

İyi çalışmalar,

 

Emre TÜZÜNER

AnsoLab Elektronik

Actor Framework rocks!
Emre TUZUNER
0 Kudos
Message 10 of 10
(4,312 Views)