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

cancel
Showing results for 
Search instead for 
Did you mean: 

file oluşturma!!

Solved!
Go to solution

zafer bey benım ıstedıgımde galıba sub vıyla ilgili kodu düzeltiyim en yakın zamanda paylaşıcam biraz bılgısayardan kaynaklı problemlerımde var ınternete zar zor gırıyorum 🙂 

0 Kudos
Message 11 of 25
(4,088 Views)

Kolay gelsin, alt rutin (subVI) yapmakla ilgili kısa bilgi isterseniz, (nasıl yapıldığı, nasıl kullanıldığı, dikkat edilmesi gereken husular,vb) paylaşabiliriz.

0 Kudos
Message 12 of 25
(4,082 Views)

Clipboard11.png

 

 

zafer bey ben burda 11 girişli 3 çıkışlı bi icon yaptım ama patternlerde buna uygun birşey yok kendim bu icona göre bi pattern tasarlayabilirmiyim?

0 Kudos
Message 13 of 25
(4,075 Views)

LV henüz kendi istediğiniz gibi bir bağlantı panosu (connector pane) yapmanıza izin vermiyor. Mevcut olanlardan birini seçebilirsiniz. Bunun yanında giriş/çıkışları birbirleriyle ilişkili olan verileri bir araya getirip kümeler (cluster) şeklinde kullanırsanız daha az bağlantı noktası gerekecektir.

 

Connecotr Panes.png

0 Kudos
Message 14 of 25
(4,072 Views)

Clipboard13.png

 

zafer bey bu şekilde yaptım ama mesela benim burdaki Gerilim V LBat dediğim aslında daq kartından okuduğum değer bi indicator ben bu değeri burda normalde local variable yapıp read writenı değiştiriyodum ve maksimum kesme gerilimiyle karşılaştırıyodum..ben burda sadece kaynağı modellemek istiyorum ama kullanacağım bütün kaynakla ilgili programlarda daq kartından okuduğum değerle kaynağın maksimum kesme değerini karşılaştıracağım...burda subvı oluşturuken bu şekilde gerilim VLbat değişkenini de input olarak mı yerleştirmeliyim 

0 Kudos
Message 15 of 25
(4,069 Views)

Kod düzeninizde bir sıkıntı görünmüyor. Sorunuzu tam olarak anlayamadım. Verdiğiniz resimde Daq cihazdan veri toplayan bir bölüm yok. Daq'tan veri okumayı başka yerde yapıp elde edilen değeri burada mı kullanmak istiyorsunuz? Diğer konu ise bu ekran kısa süre açılıp sonra bazı koşullar gerçekleşince kapanıyor ya da sizin belirlediğiniz süre sonunda kapanıyor sanırım. Bunun maksadı nedir?

0 Kudos
Message 16 of 25
(4,065 Views)

Clipboard14.png

 

zafer bey ksusra bakmayın tam anlatamadım burda gördüğünüz gibi bi daq kartından aldığımız en üstteki veri (gerilim v Lbat )'ı yukarıdaki kaynağın döngüsünde local variable olarak değiştirip maksimum gerilimle karşılaştırıyoruz..aynen dediğiniz gibi daqta okuduğumuz değer ile maksimum kesme değeri eşit olunca veya bizim girdiğimiz zaman kadar döngü dönünce program sonlanıyor.bunun nedenı programın devamındaClipboard15.png

 

burda gördüğünüz gibi ayrıca kullandığımız yük kaynağı için ayrı bir kontrol diyagramımız var..burdan anlaşılacağı gibi program bu şekilde çok karışık halde.ben bu yüzden yük için ayrı kaynak için ayrı subvılar oluşturarak bu karmaşıklığı aza indirmek istiyorum..ayrıca değişik testler yapılacak mesela burda belli bir sure batarya şarj ediliyor ardından şarjın bitmesi yani kaynak kapanması için belirli koşullar sağlandıktan sonra batarya yük kısmına girerek deşarj edilecek..ama ben sadece bu testi yapmıyacam.sadece kaynaq ve daq kartını kullanarak veya sadece yük ve daq kartını kullanarakta farklı testler yapacam bu yüzden subvıları oluşturup programı kullanışlı hale getirmek istiyorum

0 Kudos
Message 17 of 25
(4,061 Views)

Bu sorunuza "he şöyle yapın olur" diyecek cevap yok 🙂

 

Size naçizane bir yazılımcı bilgisi vermek isterim. Çoklu iş yapan sistemler dışardan bakıldığında oldukça karmaşık görünür. Bunu aşmanın yolu sistemi bölebildiğiniz kadar küçük parçalara bölerek ele almaktır. Siz de SubVI'lar oluşturup bunu yapmaya çalışıyorsunuz ama çözüm mevcut sistemi parçalayarak küçük parçalar elde etmek değil sistemi en başta küçük parçalar olarak ele alıp bir araya getirmekten geçer. Kısaca bu kodu bölmeye çalışmak için tüketeceğiniz zaman baştan küçük parçalar halinde ele alıp oluşturmak için harcayacağınızdan daha fazladır.

 

Burada SubVI yapmak istediğiniz kısımla (diğer kısımları ele almamız zor) ilgili birkaç çözüm getirmeye çalışalım. Daq ile veri aldığınız kod ile elde edilen veriyi kullanmaya çalıştığınız kod normalde birbirine doğrudan bağlıdır bunu bırakın ayrı SubVI'larda ele almayı farklı döngülerde dahi ele almadan aynı döngüde veri toplama ve işleme yapılması çoğu zaman en doğru olandır. Çünkü Daq kartlar zaman belli çalışır, veri toplamaya başlama-bitiş zamanları bellidir. Elde edilen değerleri birebir işleyecekseniz analizin de kartla senkron olması gerekir yani veri alınır ve aynı döngüde hemen ardından işlenir. Eğer donanım (Daq) farklı kanalları çalıştırıyor ve birden fazla birbirinden bağımsız analize veri aktarıyorsa böyle bir durumda da verinin senkron aktarılması doğru olur. LV içerisinde "synchronization" adında bir alt palet bulunur. Çoğu yazılımcı senkron çalışmanın gerekliliğini önemsemeden bu paleti göz ardı ediyor olabilir. Burada "queue" işlemleri var bunlar üzerinden Daq kartınızla aldığınız veriyi FIFO mantığı ile başka bir döngüye ya da alt rutine rahatlıkla aktarabilirsiniz.

 

İşleminiz zaman kritik değil ve veri kaybı sorun teşkil etmeyecekse, veri aktarımı için kullanılmasını hiç tavsiye etmeyeceğim global değişkenleri kullanmak ikinci çözüm olabilir. Ya da LV "data reference" ile C'de işaretçi mantığına benzer hafıza adresleme imkanı sunmaktadır. Programın başında bir hafıza ataması yapıp Daq döngüsünde elde ettiğiniz verileri referans ile yazabilir ve aynı referans ile başka döngülerden alt rutinlerden okuyabilirsiniz.

 

Kişisel kanaatim zorunlu değilseniz veri toplama döngüsü ile verdiğiniz resimdeki döngüyü birleştirin ve aynı döngüde arka arkaya işleminizi gerçekleştirin.

 

Kolay gelsin 🙂

0 Kudos
Message 18 of 25
(4,055 Views)

zafer bey çok sağolun gayet ayrıntılı açıklamışsınız ben şimdilik ufak çaplı subvilar kurdum ama programa entegre etmek biraz zamanımı alcak hocanın istediklerini yetiştirmek için biraz acele etmem gerekiyor..benim file oluşturmayla ilgili başka bi sorum olacaktı..yine verdiğiniz örneğe yakın birşey ama benim istediğim farklı ben alttaki ön panelde gördüğünüz sistemde sağ alt köşede kaynak kısmında bataryayı görüldüğü üzere bir bucuk saat veya 4.2 ye gelene kadar şarj ediyor sonra orta tarafta bekleme yapıyor daha sonra sol alt taraftaki yük kısmına gelip orada 1 buçuk saat geçince veya 2.7ye ulaşıncaya kadar deşarj edip yine ortadaki 1 bucku dakkalık diğer beklemeye geçiyor.. bu döngü bizim 1 döngümüz oluyor ortada görüldüğü gibi biz 20 döngü istiyoruz diyelim ama her bir döngüden sonra kayıt dosyası ototmatik olarak oluşsun istiyoruz bunun için sizin verdiğiniz programda ne gibi değişiklikler yapılabilir..file la ilgili sadece sizin verdiğiniz örnekle ilgili yorum yapabiliyorum hani şöyle bişey uydursak diyede düşünemiyorum da 🙂  

 

 

Clipboard13.png

Clipboard12.png

Clipboard11.png

0 Kudos
Message 19 of 25
(4,043 Views)

Önce şarj, sonra bekleme, sonra deşarj, sonra bekleme, sonra şarj, ... şeklinde gidiyor ve toplam 20 döngü yapıyorsunuz. Peki bu sıra sıkı ardışıl bir sıra mıdır? Yani bu işlem sırası sıkı sıkıya bu şekilde mi takip eder? Öyleyse size işinize yarayabilecek bir örnek hazırlayıp birazdan ekliyorum 🙂

0 Kudos
Message 20 of 25
(4,039 Views)