STL hakkında bir soru

hopkins

Üye
Katılım
22 Ağu 2007
Mesajlar
48
Puanları
1
Yaş
40
Herkese selam..hazır bir programı çözmeye ugrasıyorum fakat stl kısmında tıkandım..ekteki resimdeki yapılan işlemi tam olarak çözemedim..Bu konuda yardım edebilecek ark.lar war mı?.Bir de stl i ögrenebilmek adına dokuman ,kaynak vs. paylaşım olursa cok sevinirim ..iyi çalışmalar dileirm
 

Ekli dosyalar

  • 1.JPG
    1.JPG
    55 KB · Görüntüleme: 27
Moderatör tarafında düzenlendi:
Double Integer değerler compare edilmiş.Ayrıca transfer işlemi yürütülmüş
 
Merhaba,
Geçmiş arızalar ile şimdiki arızaları karşılaştırıyor. Yeni arıza gelmiş ise korna çaldıran bir program. MD180 ile başlayan hafıza bölgelerinde geçmiş alarmlar saklanıyor. Databloklarda ise yeni gelen alarmlar.

İyi çalışmalar
 
MD 180 : memory double integer 180,181,182,183 adreslerimi oluyor? bu karşılaştırma sayısal olarak mı peki?yani adrese sayısal deger atıp onları mı karşılaştırıyor? çok teşekkürler yardımlarınız için
 
MD180(Double Word)= MW 180+MW182(Word) = MB180+MB181+MB182+MB183 (Byte) olarak alan kaplar burada + işaretlerini toplama anlamında kullanmadım, sadece nereden nereye kadar kapladığı alanları birleştirip göstermek için kullandım. Yani MD180 dediğin zaman MB180 ile MB 183 arasını kullanmış oluyorsun bir sonraki Double Word değişkeni kullanmak istersen MD184 ten başlaman gerekli ki MD180 ile çakışmasın! 8) (Önemli kısmı burası ve veri tiplerine çalışman lazım)
Hepsinin biribirine eşit olmasını kapladığı alanların aynı olduğunu göstermek için kullandım yoksa içerikleri farklı olabilir!
 
Merhaba.
Siemens S7-300 ve S7-400 PLC'lerdeki hafıza yapısını anlamak için kendine excell sayfası gibi yanyana ve alt alta karelerden oluşan bir yapı çiz. En üstesi sol kutudan itibaren 0'dan başlayarak her kutuya bir arttırarark sayıları yaz. Herbir kutunun kendi kapasitesi 8 bittir. 1 Byte= 8bit yani bir kutu. 2 byte=1 word yani 2 kutu 4 byte=1 dword yani 4 kutu. MW0 hafıza bölgesinde ilk iki kutuyu kaplar. MW0'a bir sayı yazdığın zaman bu sayı 256'dan küçük ise MB1'e 256 dan büyük ise hem MB0 ve MB1 e yazılır. MW0=10 yaptığın zaman MB1in değeride 10 olur. Marker dışındaki Input, Output Datablokların yapısıda aynıdır...

İyi çalışmalar..
 
Buna bir bakın.Faydası olur.
 

Ekli dosyalar

  • DATA BLOCK ADRESLEME.rar
    5.1 KB · Görüntüleme: 33
Moderatör tarafında düzenlendi:
Herkese merhabalar,

STL ile ilgili bir sorum var.Şimdi 2 mw adresinin carpımından oluşacak bir mw adresi düşünürsek , sonuç kısmındaki mw adresinin her degerine karşılık bir bit setlemek istiyorum. Örneğin;

mw100*mw200=mw0
mw0=1 ise m1000.0 set
mw0=8 ise m1001.0 set .. gibi

Ancak burada ladderda compare komutunu kullanarak yapmak istemiyorum cunku belki 100 adet bu işlemden olacak..Daha pratik olarak nasıl olabilir? Konu baslıgında stl ile ilgili bir soru yazdım cunku index adresleme ile yapılabilir diye duydum ama nasıl olacagı hakkında bi bilgi yok! Teşekkürler saygılar...
 
eğer bir matematiksel işlemi çok fazla kullanacaksan onu sürekli yazmak yerine bir fonksiyon (FC) tanımlaman çok daha avantajlı olur. bahsettiğin çarpanlar için birer mw ya da dw kullanıp onları fonksiyon içinde çarpıp başka bir mw ya da dw'nin ilgili bitlerini set edersin. böylece o fonksiyonu hangi parametrelerle çağırırsan (mw100, mw200 gibi) o değerleri arguman olarak alıp sana sonucu verecektir. istediğin kadar da çağırabilirsin bu fonksiyonu. FC yazmak konusunda da internette çeşitli örnekler var onlardan faydalanabilirsin.
 
MW100*MW200=MW0

MW0=0 ISE M1000.0=1
MW0=1 ISE M1000.1=1
MW0=2 ISE M1000.2=1
.................
MW0=8383 ISE M2047.7=1 (8383 ÇARPIMIN ALABILECEGI SON DEGERDIR)

Kod:
   L  0
   T  MB 300
   CALL "FILL"
   BVAL :=MB300
   RET_VAL:=MW400
   BLK  :=P#M 1000.0 BYTE 1048
   L  MW 100
   L  MW 200
   *I  
   T  MW  0
   L  8383
   >I  
   JC  stp
   L  1000
   SLD 3
   LAR2 
   L  MW  0
   +AR2 
   S  M [AR2,P#0.0]
stp: NOP 0

Kod:
L +pop
T HansAndersen
 

Forum istatistikleri

Konular
129,734
Mesajlar
929,358
Kullanıcılar
452,456
Son üye
WasTR

Yeni konular

Çevrimiçi üyeler

Geri
Üst