11-13-2012 03:17 PM
Merhaba arkadaşlar,
Elimde thorlabs'a ait BSC201 1Channel stepper motor var. Bu cihazı http://www.thorlabs.com/software_pages/ViewSoftwarePage.cfm?Code=APT linkinden idirebileceğiniz program ile kontrol edebiliyorum. Ancak yapmak istediğim işlemlerde bu prgram yetersiz kaldığı için üretici firmanın tarifi üzerine labview programını yazdım. Fakat stepper motor vi kontrolü activex ile olduğundan kontrolde sınırlamalar olmakta. Örneğin girilecek değer front diagramda bulunan MG17Motor üzerindeki "enter position" kısmından giriş yapılabiliyor. Ancak ben bu değeri controller ekleyerek yapmak istiyorum. Sanırım bu durum invoke node ile olacak ama ben yapamadım. Bu sorun karşısında bilgisi olan arkadaşlardan yardımlarını bekliyorum. Gerekli dosyalar ektedir.
Teşekkürler...
Solved! Go to Solution.
11-14-2012 10:18 AM
Merhabalar;
Maalesef ilgili firmaya özel ActiveX denetimleri elimizde olmadan programınıza yardımcı olabilmek pek mümkün değil.
Uygulamanızdaki pfPosition indikatörünün yanısısını (lokal değişkeni) kullanarak aynı isimdeki metoda (invoke node) yazmaya çalışıyor gibi gözüküyorsunuz. Bu lokal değişkenin yerine normal bir kontrol kullanmayı deneyebilir misiniz ?
Üretici firmanın web sitesinde ilgili step sürücünün kontrolü için seri iletişim komutları da mevcut. Belki bunların kullanılması ile de birşeyler yapılabilir ancak ActiveX denetimlerinden daha kolay olmayabilir.
Kolaylıklar dilerim.
11-15-2012 02:33 AM
Yardımınız için teşekkürler Candan Bey,üretici firmadan activex ile alakalı destek istedim ancak pek yardımcı olamadılar. pfP position lokal variable kısmını loop dışında controller ekledim ancak yine kontrol edemedim. Sanırım bu şekilde çözüm olmayacak. Peki front panelde MG17Motor olarak çıkan kısım üzerinde "settings" menüsünde bazı değişiklikler yaptıktan sonra programı kapat aç yaptığımda bu değişiklikler kayboluyor, yani data operations menüsünde "Make Current Value Default" yapılamıyor. Bunun hakkında bilginiz varsa paylaşırsanız seviniriz.
11-15-2012 01:56 PM
Kontrolü döngü içersine yerleştirmeniz daha doğru olacak. Döngü dışındaki kontroller sadece 1 defaya mahsus okunurlar.
Acaba "GetPosition" metodunun çıkışındaki pfPosition indikatöründe pozisyon geri beslemesini alabiliyor musunuz ? Yani ActiveX denetimleri çalışıyor mu çalışmıyor mu bundan emin misiniz acaba ? Error Out çıkışında bir hata olup olmadığı da yardımcı olabilir.
ActiveX denetimlerinin (sizin örneğinizde MG17Motor görseli sanırsam, ancak bu görsel aynı ActiveX denetimi bizlerde bulunmadığı için gözükmemektedir) default değerlerini LabVIEW'den değiştirmek pek mümkün gözükmüyor. En azından "Make Current Value Default" seçeneği diğer ActiveX denetimlerinde de kullanılabilir değil. Belki ActiveX denetimleri bir şekilde offline olarak açılıp farklı kaydet yapılması denenebilinir ancak elinizdeki denetimler için bunun nasıl yapılabileceğini bilemiyorum.
Kolaylıklar dilerim.
11-15-2012 02:53 PM
pfPosition indikatöründe pozisyon geri beslemesi alabiliyorum yani activeX çalışıyor. Bendeki programı http://www.thorlabs.com/software_pages/ViewSoftwarePage.cfm?Code=APT linkinden indirebilirsiniz. Bu arada invoke node özellğinden step kısmını halletim ancak hala jog butonuna basmak zorundayım. Yine set jog ile alakalı invoke node kullanmam gerekiyor sanırım. Fakat invoke node tam hakim olamadığım için bağlantıyı düzgün bir şekilde yapamıyor olabilirim.
Teşekkürler,
Erdem.
11-17-2012 04:09 AM
Aslında Invoke Node'lar ile ilgili fazla birşey pek yok. Kullanımları oldukça sadedir. Kanımca sizi zorlayan konu, hangi ActiveX denetiminin nasıl kullanılacağıdır.
Belirttiğiniz adresten kurulum dosyasını indirince tüm ActiveX denetimleri ortaya çıkıyor. Ancak ActiveX aktivasyonunu gerçekleştiremediğimiz için Front Panel'deki görseller açılmıyor. Yine de kurulum ile birlikte gelen APTServer.chm yardım dosyasında her bir ActiveX denetimi güzel bir şekilde açıklanmış. Bu yardım dosyasındaki MoveJog komutunu (metodu) kullanarak basit bir kod parçası oluşturdum, ekte VI Snippet'ini bulabilirsiniz. Tabii bu kod parçasını mevcut VI'ınızın içersine yerleştirmek ve Invoke Node'lara Motor referansını bağlamak size kalıyor 🙂
Deneyip sonucu paylaşırsanız sevinirim.
Kolaylıklar dilerim.
11-19-2012 02:47 AM
Invoke Node' lar gerçekten kolaymış ancak hangisini kullanacağımızı seçmek biraz uğraştırıyor. Ben buradaki sorunu MoveAbsoluteRot ile çözdüm,yardımcı olduğunuz için çok teşekkür ederim Candan Bey. MOudan bağımsız olarak bir sorum daha olacaktı, bu stepper motoru kontrol için küçük bir sequence yazdım ancak labview tecrübem çok yeterince olmadığı için tam istedğim gibi çalıştıramadım. Sorun şu ki, while loop'un içinde 1 den 5 e kadar olan bir döngü ve ardından 2,-2,2 ve 0 ile sonuçlanan başka bir döngü bulunmaktadır. Bu vi çalıştırdığımda ilk olarak 1-5 arası döngü oluyor ardından ikinci döngü başlıyor. Ancak benim amacım ilk olarak 1 olsun sonra ikinci döngü (2den -2 sonra 2 ve 0 ile sonuçlanan) işlesin, daha sonra 1 olan sonuç 2 olsun ve yine ikinci döngü işlesin vs.. Bu durum ilk döngünün 5 olması ile sonbulduktan sonra kapanması. Her nekadar karmaşık gibi görünsede eminim kolay bir yolu vardır. Yazmış olduğum vi ekte bulunmaktadır, bun problemde de çözümünüz varsa sanırım bu başlığı kapatabiliriz :).
Teşekkür ederim,
Erdem.
11-20-2012 02:16 PM
Açıkçası yapmak istediğinizi tam olarak anlayabildiğimi söyleyemeyeceğim.
Belirtmiş olduğunuz adımları ve kodu incelediğimde zannedersem iç içe iki adet döngü kullanılması sorununuzu çözecekmiş gibi duruyor. Diğer yandan State Machine uyarlaması da derli toplu bir kod ortaya çıkarabilir.
Koddaki döngülerin durma koşulu ne ile bağlıdır acaba ?
Diğer bir soru ise bahsi geçen 0'dan 5'e ve -2'den 2'ye kadar olan adım bilgileri nerede tanımlanacaktır ?
Eğer program kodu yazarak bu problemi daha kolay çözebiliyorsanız, küçük bir tiyo paylaşabilirim. Algoritmanızı "Formula Node" ya da "MathScript Node" içersinde ilgili program kodlamasıyla da yazarak LabVIEW'e taşıyabilirisiniz.
Kolaylıklar dilerim.