TUMER 7 Posted January 13 Share Posted January 13 Herkese iyi çalışmalar, Sistemde bulunan 6 adet valfin her döngüde sadece 4ünü aktif etmek istiyorum. kabaca anlatmak gerekirse 6nın 4lü permütasyon hesabına göre 360 farklı varyasyonun tamamlanması ardından döngünün başa alması gerek. c alt programda permütasyon hesaplama yapabiliyorum ancak hangi yolla bitleri aktif edebileceğimi çözemedim. konu ile ilgili yol gösterecek çözüm önerisi sunarsanız çok sevinirim. teşekkürler. Quote Link to post Share on other sites
malikenes 53 Posted January 13 Share Posted January 13 Hesaplamaların sonucunda bir rakam elde edebiliyorsan bu değeri bir word değerine atıp, bu word' ün bitlerini kontrol ederek tanımlayacağın bitleri aktif ya da pasif yapabilirsin. Fikir olsun diye örnek te verdim. Faydalı olur umarım. Quote Link to post Share on other sites
TUMER 7 Posted January 19 Author Share Posted January 19 Öncelikle cevap için teşekkür ederim. Ancak ya ben örneği anlamadım ya da derdimi iyi anlatamadım. Şöyle ki A,B,C isminde çıkışlarımız olsun, her tetiklemede bu çıkışların sadece ikisi sırası değişkenlik gösterecek şekilde aktif olacağını düşünelim. Sonuç: A,B; B,A; A,C; C,A; B,C; C,B; şeklinde 6 ihtimal ortaya çıkıyor. Bu altı ihtimali çıkışlara tanımlayıp verdiğiniz örnekteki gibi bit operasyonuyla çıkışları kontrol edebiliriz. ancak ihtimaller yükseldiğinde, bu ihtimalleri tek tek tanımlamak oldukça güç. bu yüzden ihtimalleri listeleyecek bir algoritmaya ihtiyaç var gibi. bunu algoritmayı plc ile kurabilmem mümkün mü? Teşekkür ederim Quote Link to post Share on other sites
malikenes 53 Posted January 19 Share Posted January 19 Elde ettiğin sayının binary karşılığını bulup, bu binary sayıda 2 tane 1 varsa çıkışları aktif edip, 2' den az ya da fazla 1 varsa çıkışları pasif edersen olur galiba. Quote Link to post Share on other sites
VKU 5 Posted January 19 Share Posted January 19 c alt programı kullanarak 0..5 (yani 6 adet rakam üret) /* Intializes random number generator */ srand(time(NULL)); /* bir sayı üret */ sayi=rand()%6; sayi değişkenini GMTSUITE Operandlar bölümünde WORD olarak tanımlayın. Aşağıdaki örnek 2 sn. de bir 0 ila 5 arasında random rakam üretiyor. Sonra tetiklemeyi nasıl yapılacak ise ardından bu alt programı çağırın. Her seferinde 0..5 arasında bir değer dönecek. IF cümlecikleri ile bu değer kullanılabilir. Not : Çevrim dışı Simulasyon ile denedim. ANSI C deki mod işlevinin gmtsuite de farklı bir kullanımı olabilir. Gerçek ortam denemesi yapmadım. Quote Link to post Share on other sites
TUMER 7 Posted January 19 Author Share Posted January 19 cevaplar için teşekkür ederim. iyi çalışmalar Quote Link to post Share on other sites
Emre 53 Posted January 19 Share Posted January 19 Merhabalar; 6 adet çıkışa göre istemiş olduğunuza göre örnek bir Ladder programı yazdım. Tetikleme için 500ms bir Osilatör kullanıldı. Tercihinize göre tetiklemeyi istediğiniz gibi değiştirebilirsiniz. İyi Çalışmalar Kolay Gelsin dnm_prog.gpf Quote Link to post Share on other sites