05-14-2012 08:10 AM
Merhaba,
Benim "exe" olustururken karsilastigim bir problem var.
Ekte projenin basit bir hali bulunuyor. Projede 2 adet VI'im var. Biri "My Computer" altinda (main.vi) digeri de "cRIO (9073)" altinda (cRIO (FRM).vi).
Yapmak istedigim main VI'dan gelen x-ekseni koordinat bilgisini "Shared Variable" kullanarak (veya baska bir yöntem varsa önerebileceginiz) cRIO altindaki VI'a göndererek bir hareket olusturmak.
Bu hareketi nasil olusturdugumu "Block Diagram"larda bulabilirsiniz.
Bu noktaya kadar her sey (hareket, haberlesme...) normal calisiyor. Fakat cRIO ve PC altinda "exe" olusturdugum zaman sürücülerle haberlesme saglanmiyor. Block Diagram'da bulunan kirmizi loop'a kontrol icin led ekledigimde sinyal gelip led'i yakiyor (yani loop calisiyor) fakat motorlarda herhangi bir hareket olmuyor.
Benim sorum, bunun sebebi ne olabilir?
Kullanilan sürücü modeli: SEW EURODRIVE Movidrive B
cRIO: NI 9073
DI: NI 9421
Haberlesme: Modbus TCP/IP
05-14-2012 08:57 AM
LV 2010 ile kaydedebilir misiniz?
Koda bakmadan tahminim ise şöyle. Kullandığınız "shared var" erişimi ile ilgili bir sorun olabilir. İki farklı "shared var" "deploy" ediliyor ve birbiri ile ilişkisi olmayan yerlere veriler yazılıyor olabilir. Bunun yerine değişkeni sadece veri yazılan yerde "deploy" ediniz ve burası değişkenin dağıtıcısı olsun. Veriyi okuyacağınız yerde ise adresi ile ağ üzerinden çağırınız.
Bunu yapmak için proje içerisinde oluşturduğunuz değişkeni sadece veri yazılan yerde kullanınız. Okuduğunuz yerde ise "Data Communication/Shared Variable/Open Variable Connection" ile deploy edilen adresi göstererk o değişkene bağlanın. Böylece değişkenin tek noktada tanımlanacak ve diğer noktalardan erişim olacaktır.
Diğer olasılık ise güvenlik duvarınız açık olabilir. Bilgisayarda mutlaka kapatınız yada uygulama erişimine izin veriniz.
05-14-2012 04:00 PM
CPU yükü %100'e ulaştığı zaman da Shared Variable iletişimi sekteye uğrayabiliyor. Bu durumu, MAX vasıtasıyla ilgili yazılım paketinin cRIO'ya yüklenmesinin ardından, Distributed System Manager vasıtasıyla takip etmekte fayda var. Söz konusu böyle bir durum var ise, döngü hızlarını azaltmak ya da algoritmayı hafifletmek ile CPU yükünü azaltmayı deneyebilirsiniz. Alternatif çözüm ise her zaman daha yüksek kapasiteli bir kontrolcüye geçmek olabilir.
Nadir olarak görülmekle birlikte, PC ile cRIO arasında (ya da tam tersi yönde) tanımlanan Shared Variable'lar, yanlış IP adresine bakıyor olabiliyorlar. Bu durumu SV'ların Error çıkışına bağlanabilecek bir indikatörde, çok farklı bir IP adresine yönelik bildirimle karşılaştığınızda fark edebilirsiniz. Böyle bir durum söz konusu olduğunda ise SV'ları kaldırıp projeye yeni bir SV kütüphanesi tanıtılması çözüm olabiliyor.
Kolaylıklar dilerim.
Candan
Not: Derya Hanım, "Tanıtım" başlıklı mesajlaşma altında kendinizi ve belki de çalışma yapmış olduğunuz projeyi tanıtabilirseniz benim haricimde diğer forum takipçileri de sizi ve firmanızı tanıma şansına sahip olacaklardır 🙂
05-15-2012 01:14 AM
Merhaba,
Zafer Bey, eki LV 2010 ile degistirdim. Güvenlik duvarini da kontrol ettim, kapali. Diger bahsettikleriniz acaba "enable aliasing" secenegiyle mi ilgili?
Candan Bey, dediginiz gibi olabilir, CPU yükü 90% civarindaydi en son. Sizin ve Zafer Bey'in dediklerini deneyip tekrar dönüs yapicam.
Not: Hatirlattiginiz icin tesekkürler, unutmusum kendimi tanitmayi 😉
Tesekkürler, iyi calismalar.
05-15-2012 03:11 AM
Tekrar merhaba,
Sormayi unuttugum bir sey daha var. cRIO altindaki VI'a degerler bir "main VI"dan geliyor bir de main VI icindeki "sub VI" dan geliyor (Farkli shared variable'lar kullanilarak). Bir de sürücülerle haberlesme icin "NI Modbus LLB" kullaniyorum. Acaba bunlarin bir etkisi olabilir mi?
Tesekkürler, iyi calismalar.
05-15-2012 03:29 AM
CRIO - FPGA build edilirken adımlar biraz daha farklılaşıyor diye biliyorum. Bununla bir ilgisi olabilir mi?
05-15-2012 05:45 AM
Öncelikle foruma hoş geldiniz.
Öncelike değişkenlerin "deploy" edildiğinden emin olun.
İki ayrı noktada iki ayrı SV oluşup birbiriyle ilişkisi olmaması durumu olabilir. Bunun için tek noktada deploy edilsin diğer noktada ise adresi üzerinden erişip işlem yapın.
Candan'ın bahsettiği işlemci yükü de oldukça önemli. Ama konunun modbus ile ilgisi olmaması gerekli.
05-15-2012 09:54 AM - edited 05-15-2012 09:57 AM
Zafer Bey merhaba hosbuldum,
Projeyi anlattiginiz sekilde degistirdim fakat yine ayni sorun devam ediyor. Yine exe olusturmadan calistirdigimda, main VI'daki "x Rc (slide)" isimli numeric control degeri direk cRIO altindaki VI'a geliyor ve istedigim hareket gerceklesiyor.
Fakat exe isleminden sonra hic bir hareket yok. Acaba exe olustururken secilmesi gereken gözümden kacan veya bilmedigim bir yer mi var?
Not: Ekteki ilk resimde DO ile kontrol icin ekledigim boolean ve 3 tane while loop var.
2.Loop'da sürücü referanslaniyor, 3.Loop'da da x Rc(slide) ile main VI'dan gelen degere hareket saglaniyor.
05-15-2012 10:14 AM
192.168.10.2 cRIO adresi olduğuna ve "değişken arama penceresinde" içini ve değişkenleri gördüğünüze göre sorun çıkmaması gerekir. Bu haliyle herşey normal görünüyor. Bir de kodunuzu cRIO'ya aktarıp çalıştırdıktan sonra dener misiniz aynı değişkenleri görüp erişebiliyor musunuz? Hatta cRIO üzerinde değişkenler tanımlandıktan sonra sade bir VI yazıp adresleri arayıp değişkenlere erişebiliyormusunuz kontrol edin. Sade bir VI ile erişip yazabilmeniz ve okuyabilmeniz gerekir.
Herşey normal görünüyorsa Candan'ın bahsettiği işlemci yükü sorun olabilir ama bu veri kaybına neden olur temelde. Yani hiç erişememek durumunuz olmaması gerekir. Son olarak değişken ayarlarınızda sorun olabilir. Bence cRIO'ya kodu yükleyip çalıştırın ve bir VI ile deneyin. Ona göre bakalım.
05-16-2012 02:55 AM
Merhaba tekrar,
Öncelikle yardimlariniz icin tesekkür ederim. Dediginiz gibi sade bir VI ile denedim. My computer altindaki VI'lari projeden cikardim ve sadece cRIO altinda (hic bir SV kullanmadan) bir tane VI ile calistim (ekte görebilirsiniz). Yine ayni sonucu aliyorum. VI'i calistirinca motor hareket ediyor, rt App olusturunca digital output modulundeki led'ler yaniyor fakat hareket saglanmiyor.
exe olusturma asamasinda "Dependencies" kismindaki Modbus kütüphanesini baska bir klasöre alarak da denedim. (su linkte yazdigi sekilde: http://forums.ni.com/t5/LabVIEW/modbus-ethernet-example/m-p/849140#M385109 ) Yine sonuc ayni. "Component Definition" kismindaki secimlerle de oynadim bir etkisi olur mu bilmiyorum? Veya kullandigim Labview versiyonunu etkisi var midir? (LV 2011 32-bit, PC 64-bit).
Tekrar tesekkür ediyorum, iyi calismalar.