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

cancel
Showing results for 
Search instead for 
Did you mean: 

crio ve PC arasındaki en hızlı data alışveriş şekli ??

merhaba,

 

9073 crio ile bir fırının sıcaklığını PID ile kontrol etmeye çalışıyorum.Fırının 5 noktasındaki sıcaklık değerlerini olçup kaydedecek bir PC mevcut.  FPGA module herhangi bir kod yazmadan butun kontrol programını RT ye yazmayı düşünüyorum. PID  ve birkaç basit IO nun kontrolü RT işlemcide çalışacak.yanı bütün program PC ye bağlı kalmadan 9073 şasesinde scan interface modunda çalışacak.  Fırın sıcaklık set değerinin crio ya yazılması  ve 5 noktanın sıcaklık değerlerinin PC den okunup kaydedilebilmesi için  projeye library ekyeyip değişkenleride network-publised olarak tanımlıycam... PC dende shared variable ları okuyup değerleri kaydedeceğim...

 

      yukarıda anlattıklarım içerisinde yanlış düşündüğüm bir nokta varmı acaba... PC ve Crio arasıdaki haberleşme için en hızlı ve uygun yöntem hangisidir...

teşekkür ederim.

0 Kudos
Message 1 of 17
(6,446 Views)
PC ile cRIO arasında doğrudan TCP/IP ile veri aktarmak en hızlısı olur. Ama sizin uygulamanızda "shared variable" kullanmanız sorun çıkarmayacaktır. Hem toplam veriniz az olacak hem de zaten "scan engine" üzerinde çalışacağına göre tarama zamanları içinde çok hızlı işlemler olmayacak. Bence düşündüğünüz şekilde deneyin sorun çıkarsa tekrar değerlendiririz.
0 Kudos
Message 2 of 17
(6,441 Views)

aslında başka bi uygulamada (64 den fazla analog giriş,80 dijital giriş ve çıkış, puls okuma(hız ölçümü) ve PWM kontrolü )  veri toplama yazılımı yapmıştım.Butün dijital ve analog IO ları FPGA e yazdım.Sonra Direk olarak PC programında fpga read/write ile  okuyup yazma yaptım. Yani bütün prosesi pc tarafında gerçekleştirdim. pc tarafında analog değerlerin okuma hızı normal iken çıkışa bağlı basit bir uyarı lambasını yarım saniye ON yarım saniye OFF olarak çalışmasında çok  ciddi hız problemi yaşadım.Tabi bunun yanında diğer dijital giriş ve çıkışlarinda tepki süreleri çok yüksekti.FPGA modül yapım saniyelik peryodları yakalayamıyordu...çok ama çok yavaş çalışıyordu.Muhtemelen analog girişlerde çok yavaş okuyor ama gözle bunu farketmedim.

 

Bu hız probleminden kaynaklı sistemin kontrol kısmını (pıd ve diğer ıo kontrolleri) RT da yapıp sadece pc den değer okuyup yazmayı düşünüyorum. En azından yukarda bahsettiğimden daha hızlı çalışacağını düşünüyorum. Siz sadece 5 TC nin okunacağını düşünmeyin,daha fazla IO olduğunda hız ve genel oalrak Compact RIO ların yapısı gereği nasıl bir yapı oluştırmamız gerekiyor.Yukarıda anlattığım uygulamayı nasıl oluşturmam  gerekirdi.

 

Teşekkür ederim.

0 Kudos
Message 3 of 17
(6,434 Views)

Elinizde cRIO varken uygulamayı PC üzerinden çalıştırmaya çalışmak zaten pek doğru bir seçim olmaz. Sıcaklık okuyup elde ettiğiniz verilere göre PID kontrolü yapacaksanız. PID'yi RT modül üzerinde yapmanız yeterli olur diye düşünüyorum. FPGA üzerinde belki veri okuma (filtreleme) ve PID çıkışları ile sistemi kontrol etme yaparsınız. Doğal olarak da RT üzerinden PC ile haberleşirsiniz. Görünürde PC üzerinde bir işlem aslında yok herşey cRIO üzerinde çalışacak ve PC belki belli aralıklarla okunan değerleri kaydedecek. Hatta işleminiz çok uzun sürmeyecekse verileri de cRIO üzerinde tutup işlem bitince PC'ye aktarmak da olabilir. Eğer PC'den gözlemleyip işleme müdahale etmyi düşünüyorsanız tabi bu işe yaramaz.

Her neyse bence sıcaklık ölçümü olacaksa zaten oldukça yavaş değişen ve az veri demektir. Shared Var sorun çıkarmaz diye düşünüyorum.

Candan okursa onun da fikrini almak iyi olur 🙂 

0 Kudos
Message 4 of 17
(6,430 Views)

Özetlemek gerekirse,

 

                   -  bütün analog ve dijital giriş ve çıkışları FPGA e yazılır.

                   -  Kontrol işlemleri RT üzerinde yapılır.

                   -  PC üzerinde sadece verilerin okunup kayıt yapılması , sistemin gözlemlenmesi ,start stop gibi temel müdahaleler gerçekleştirilir.PC ve Crio arasındaki data alişverişi Shared Variable kullanılarak gerçekleştirilir...

            

                   Bu noktada şunu sormak istiyorum.örneğin 100 adet double değerin PC den okunması için Shared variable yeterli olurmu olamaz ise daha geçerli bi çözüm olarak ne yapmamız gerekir???  TCP/IP haberleşmesi mi yapmak gerekir ?

 

Çok teşekkür ederim.

0 Kudos
Message 5 of 17
(6,425 Views)

Açıklamalarınız oldukça doğru. 100 dbl/sn ise 100x8 byte/sn demektir ki bu oldukça küçük bir veri. Bunun 100 hatta 1000 katı bile sorun çıkarmamalı. Yalnız verilerinizi 100-200 ms'lerin altında göndermeyin. Paketler oluşturup bu sürelerin üzerinde kalmaya dikkat edin.

0 Kudos
Message 6 of 17
(6,417 Views)

Merhabalar Aixx,

 

 

Genel itibarıyla PID ile fırın kontrolü için ortak bir noktada anlaşıldığını düşünüyorum. 

 

Şahsi kanaatim, FPGA'i de fazla işin içersine katmadan bütün PID'yi RT üzerinde Scan Engine ile senkron bir şekilde çalıştırmak uygulamayı kolayca çözmenizi sağlayacaktır. Piyasada bulunan düşük maliyetli PID kontrolcülerinin çevrim hızlarının 100 - 200 ms. olduğu düşünülürse, Scan Engine'in default 5 ms.lik hızı oldukça yeterli olacaktır. Hatta okunan sıcaklık verisi üzerinde filtreleme yapmak için bile yeterli zamana sahipsiniz.

 

Özel olarak, cRIO ile Host PC arasında veri transferi için en hızlı yöntem (toplam veri transferi/sn) hangisidir diye sorulacak olursa, bildiğim kadarıyla sıralama şu şekildedir:

 

1) TCP/UDP Stream

2) Netwrok Streams (bkz. Lossless Communication with Network Streams: Components, Architecture, and Performance https://www.ni.com/en/shop/labview/lossless-communication-with-network-streams--components--archite....)

3) Shared Variables

 

Linkini vermiş olduğum makalede, bazı benchmark'lar olduğunu göreceksiniz. Temel itibarıyla bu benchmark'lar sistem beklentileriyle de bağdaşmaktadır. Örneğin güncel 9222 / 9223 modüllerimizin veri üretme hızlarını (500 / 1000 MS/s @ 16-bit) ethernet üzerinden PC'ye taşımak için modül başına 4-8 MB/sn. ve üzerinde bir veri transfer hızına ihtiyaç duyulmaktadır.

 

Öte yandan, latency (gecikme), ethernet üzerinden veri transferi yapılması durumunda önüne geçilemeyen bir olgu ve ne yaparsak yapalım 100 ms.nin altında bir latency yakalayabilmek benim bildiğim kadarıyla pek mümkün değildir. 

 

RIO sistemlerde latency'nin azaltılabilmesi için en etkin yöntem MXI Express RIO ürünleridir (bkz. 9157 ve 9159) ve zaten bunlar da PC ile RIO arasında PCI Express arabirimi üzerinden iletişim kurmaktadırlar.

 

 

Umarım bilgiler faydalı olur.

 

 

Candan

 

(Bay) Candan CANER
National Instruments Türkiye
Message 7 of 17
(6,408 Views)

yardımlarınız için teşekkür ederim,

    

            son olarak Shared Variables işimi görecektir.Butun kontrol blokları RT de koşturulup PC sadece sıcaklık değerlerinin kaydedilmesinde kullanılmalıdır.

0 Kudos
Message 8 of 17
(6,400 Views)

tekrar merhaba,9073 de yukarda bahsettiğim uygulamayı yapmaya çalışıyorum. Sistemde bolca analog input ve dijital IO lar mevcut.FPGA modda butun analog ve dijital IO ların okunduğu FPGA.vi Vİ ını hazırlayıp yüklediim. RT tarafında ise şu an için sadece 8 adet analog değeri okuyorum. PC tarafında ise shared variable kullanarak bu analog değerleri okuyorum... Fakat PC ile CRio arasında ki bağlantı sürekli kesiliyor.Bazen Crio yu resetleyerek ,enerjisinini kapatıp açarak tekrar bağlantı kurabiliyorum. Ama çoğunlukla CRio yu formatlamak zorunda kalıyorum. MAX dada  crio yu bağlı olarak göremiyorum.IP leri değiştirmeyi filan denedim ama format atmadan bağlantıyı gerçekleşmiyor.RT.vi çalıştırdıkan 5 - 6 sn sonra bağlantı kopuyor. Bazen 25-30sn sonra kopuyor.  Bunun nedeni ne olabilir .crio ya yükladiğim softwareler mi acaba eksik. august 11 i yüklüyorum sadece.

 

teşekkür ederim...

0 Kudos
Message 9 of 17
(6,363 Views)

merhaba bağlantı problemini aştım.MAX ı güvenlik duvarı engellememe listesine ekledim şu ana kadar sıkıntı olmadı. Fakat farklı bir sıkıntı ile karşı karşıyayım. Crio altında shared variable ekledim.real time programın çalıştığı vi da start up olarak ayarlı.Compact Rio yu restart ettiğimde içerisindeki program dönmeye başlıyor. PC tarafında shared variableleri okuduğum bir vi var.PC deki VI 'ı çalıştırdığımda startup olarak çalışan  RT.vi çalıştığı için hata veriyor. Devam ettiğimde ise RT.VI  stop a geçiyor. Bu sıkıntıyı nasıl aşabiliriz acaba. 

0 Kudos
Message 10 of 17
(6,348 Views)