Bit kaydrma yardım...

mutluhayri

Üye
Katılım
24 Nis 2008
Mesajlar
26
Puanları
1
Yaş
40
Arkadaşlar merhaba.
Schneider marka M340 plc ile bit kaydırma işlemi yapmak istiyorum.
Bit kaydırmayı SHR(sağa kaydırma) ve SHL(sola kaydırma) blok veya komutlarının yaptığını biliyorum. İnteger bir sayıyı sağa veya sola kaydırabiliyorum. int_to_byte yaparak da bitlerin kaydığını görebiliorum. herhangi bir kontağa bağlı olarak da sıradaki değerin 1 veya 0 gelmesini sağlıyorum. Ancak bunu 8 bit için yapabiliyorum. Benim istediğim 80-90 kadar biti yanyana kaydırabilmek. Bunu nasıl yapabilirim? Yardımcı olabilirseniz çok sevinirim.

Örn:
11010101 ==> sağa kaydır ?1101010 (* soru işareti önemli değil. 1 veya 0)
00101110 ==> sola kaydır 0101110? (* soru işareti önemli değil. 1 veya 0)

bu işlemi yapabiliyorum. Asıl istediim ise şu;

1011000111......................00110101 ==> 80 veya 90 bitlik bir sayıyı sağa veya sola kaydırabilmek..
 
arkadaşım kullanmadım ama mantık yürüttüm sorun üzerine sanırım aşağıda anlattığım sekilde çözülebilir. kolay gelsin.
3 tane SHR_DINT (3 x 32 bit) kullan mesala aynı komutla la bu bitleri kaydır. devamında 3 adet move işlemi kullanacaksın 1 wordün son bitini 2. wordün ilk bitine, 2.wordün sonbitini 1. wordün ilk bitine, 3 wördün son bitinide 1. bitin ilk bitine move etsen olur gibi geliyor bana. wordun bitlerine ulaşmayı biliyorsundur diye düşünüyorum. %mw0.0 mesala ilk bit, %mw1.15 te sonbit (32. bit). daha rahat kavramak için 1 kağıda 3 wordu bitlerini açarak yan yana yaz. kolay gelsin.
 
arkadaşım kullanmadım ama mantık yürüttüm sorun üzerine sanırım aşağıda anlattığım sekilde çözülebilir. kolay gelsin.
3 tane SHR_DINT (3 x 32 bit) kullan mesala aynı komutla la bu bitleri kaydır. devamında 3 adet move işlemi kullanacaksın 1 wordün son bitini 2. wordün ilk bitine, 2.wordün sonbitini 1. wordün ilk bitine, 3 wördün son bitinide 1. bitin ilk bitine move etsen olur gibi geliyor bana. wordun bitlerine ulaşmayı biliyorsundur diye düşünüyorum. %mw0.0 mesala ilk bit, %mw1.15 te sonbit (32. bit). daha rahat kavramak için 1 kağıda 3 wordu bitlerini açarak yan yana yaz. kolay gelsin.

Bu yöntemi denedim ve malesef bu şekilde olmuyor. Sebebini anlamadığım bi şekilde olmuyor nedense. Dediğiniz gibi (%MWxx.15:=%MWyy.0) yaptım ancak olmadı. Bu olayı sanırım plc de dizi (arrays) oluşturarak çözebiliriz. Ancak dizilerin nasıl oluşturulduğunu bilmiyorum.
 
dizi oluşturmak kolay. Element Table da sembol eklerken mesala "dizi" de adına Type kısmına tıkla açılan ekrandan solda EDT den değişken tipini seç INT mesala. sol alt köşede Array kutucuğunu işaretle ve kaç elemanlı bir dizi oluşturacaksan [0..20] 20 elemanlı bir dizi olsun diyelim. Tamam butonuna bas. Adres kısmınada bu dizinin başlangıç adresidir mesala %mw50 olsun . yani %mw50 den %mw70 e kadar wordlerin bir dizi oldu. diziler için kullanacağın Shift komutuda ROL_ veya ROR_ . umarım çalışır kolay gelsin
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst