okunan word le islem yapma

Başlatan rck8942, 14 Şubat 2013, 12:42:51

cetinkaya

Merhaba arkadaslar su siralar twido ile ugrasiyorum. Bir kac sorum var Modbus üzerinde Bagli olan OTB lere bagli olan 16 tane girisleri okuyorum. Okuduktan sonra girislerde herhangi bir degisiklik  olursa bunu algilamam gerekiyor.

Yani 16 giris  00 11 00 11 00 11 00 11 diyelim bunlardan birisinde degisiklik (01 11 00 11 00 11 00 11 olursa program o girise denk gelen hata mesajini vermesi gerekiyor.

Bir de bu worddeki degisikligi nasil anlayabilirim ?
mantigini anlatacak biri olursa sevinirim umarim derdimi anlatabilmisimdir.
Saygilar.

ayhani

okuduğun wordu bir değişkene ata. Sonra o değişkeni word ile karşılaştır, eğer fonksiyonu ile word<>degisken ise alarm çal diye programı hazırla. Ben bu yöntemi picte kullandım ama senin bahsettiğin plc'de uygulamadım.
En iyi bildiğim şey hiçbir şey bilmediğimdir.

Salih

#2
Bit olarak işlem yaparsan daha iyi olur gibime geliyor.
Şöyle ki eğer giriş değerinin 0 -> 1 olmasını değişti kabul ediyorsan, yükselen kenar algılama komutu kullanacaksın.
Eğer değişmeyi 1 -> 0 kabul ediyorsan, düşen kenar algılama komutunu kullanacaksın.
Her bir bit için bir network oluştur. Her networkun başına dediğim komutu koy.
Eylem olarak istediğin bir değişkene bir değer ata. Veya ne istiyorsan o eylemi yap.

cetinkaya

Alıntı yapılan: salih - 14 Şubat 2013, 15:15:01
Bit olarak işlem yaparsan daha iyi olur gibime geliyor.
Şöyle ki eğer giriş değerinin 0 -> 1 olmasını değişti kabul ediyorsan, yükselen kenar algılama komutu kullanacaksın.
Eğer değişmeyi 1 -> 0 kabul ediyorsan, düşen kenar algılama komutunu kullanacaksın.
Her bir bit için bir network oluştur. Her networkun başına dediğim komutu koy.
Eylem olarak istediğin bir değişkene bir değer ata. Veya ne istiyorsan o eylemi yap.

aslinda hocam isin asli söyle. bu 16 tane girise 8 tane anahtar bagli. Yani her iki girise bir anahtar düsüyor. I0 ve I1 girisleri bir anahtar oluyor.
Bunlardan gelen sinyal 01 veya 10 olunca (XOR) 1 oursa anahtar ya acik yada kapali oluyor. 00 ve 11 düsünülemez durumda.
Okudugum word ün herhangi bir bitinde degisiklik olursa ve o bite denk gelen anahtarda acik yada kapali oldugunu anlayabilicem.
S1=I0 ve I1
S2=I2 ve I3
S3=....
S8=I14 ve I15


simdi diyelim ben 01 01 01 01 01 01 01 01 okudum
Sagdan sola S1 > S8
S1 01 biti birdahiki okumamda 10 olursa S1 kapalidan acik durumuna gecti. bunu tüm Anahtarlar icin nasil yapabilirim.

Veya direk  word 01 01 01 01 01 01 01 01 tüm anahtarlar acik.
Kabul edip atayip okudugumlan And tabirine tutup karsilastira bilirim. Ama karsilastirdiktan sonra hangi S in durumu veya kacinci bitin durumu degismis nasil anlayabilirim ? sorunumda burda



Salih

Şöyle yapabiliriz.

I0 ve I1 girişlerinin yükselen kenar algılamalarını paralel bağla.
Bu paralel devreye XOR komutunu seri bağla. XOR girişlerine de I0 ve I1 bağla.
Çalışmasını incelersek.
I0 veya I1 girişlerinden herhangi birinde yükselen kenar değişimi olunca, çıkış lojik1 olur.
Devamında XOR komutu aktif olur. Onun da girişlerinde Lojik fark varsa onun da çıkışı Lojik1 olur.
Network'ün en sonuna da eylemini koyarsın.

cetinkaya

hocam en azindan 40 x 16 girisim var bunlari tek tek öyle yapamam program cok uzun olur ve hafizasi dolabilir.

Salih

Ben M340'ı Unity pro ile programlarken böyle durumlarda fonksiyon tanımlıyorum.
Ve fonksiyonun giriş çıkış parametrelerini kullanarak, çok tekrarlanan işlemleri hal ediyorum.
Ama twido da durum nasıl, tam bilmiyorum.