04-09-2012 01:53 PM
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 🙂
04-10-2012 02:54 AM
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.
04-11-2012 02:25 AM
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?
04-11-2012 03:15 AM
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.
04-11-2012 03:57 AM
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
04-11-2012 06:20 AM
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?
04-11-2012 06:43 AM
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ında
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
04-11-2012 07:22 AM
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 🙂
04-12-2012 11:12 AM
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 🙂
04-12-2012 01:40 PM
Ö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 🙂