S7-300 de Register İçeriğini Adres Olarak Kullanmak

Merhabalar,

Anladığım kadarıyla yapmak istediğin sey;

Operator Panelinden Reçete numarasını seçeceksin.
Operator panelinde recete oluşturacaksın.
Operator panelinden Receteyi bir tampon DB'ye yazacaksın.
Kullanmak istediğin Receteyi seçip Reçete yaz dediğinde istediğin bir DB'ye Reçeteyi aktaracaksın.

Bunu yapabilen SCL kodları;

FUNCTION_BLOCK FB10
TITLE = 'recete'

VAR_INPUT
Recete_no:INT;//Recete Numarasi Belirlenir
Recete_Adimi:INT;//Recetenin Kac Adimdan Olusacagi Belirlenir
Recete_Kaydet:BOOL;//Recete Tampon_DB'ye yazilir
Recete_Yaz:BOOL;//Receteyi Out_DB'ye yazar

END_VAR


VAR
n:INT;
x:INT;
Adim:INT;
END_VAR




BEGIN
IF Recete_Adimi=0 THEN
Adim:=2;
ELSE
Adim:=Recete_Adimi;
END_IF;

IF Recete_Kaydet THEN
FOR n:=0 TO Adim-2 BY 2 DO
DB3.DW[(Recete_no*Adim)+n]:=DB2.DW[n];
END_FOR;
END_IF;

IF Recete_Yaz THEN
FOR x:=0 TO Adim-2 BY 2 DO
DB4.DW[x]:=DB3.Dw[(Recete_no*Adim)+x];
END_FOR;
END_IF;



END_FUNCTION_BLOCK




Projede MW20 ile reçete numarasını seçiyorsun.
Operator panelinden DB2'ye reçeteni yazabilirsin.
DB3 Tampon DB'dir.
M22.0 1 olduğunda;
MW20 ile belirlediğin adres ve reçete adımına göre tampon DB'ye yazılır.
DB4 Output DB'dir.
M22.1 1 olduğunda MW20 ile belirlediğin reçete numarası Output DB'ye yazılır.


Kolay Gelsin


Verdiğiniz bilgi için çok teşekkürler ama ben SCL dilini bilmiyorum bunun lader veya STL kodlarını yazabilirmisiniz. Birde tomapon DB diye adlandırdığını DB tam olarak ne yapıyor Hafıza kısmımı yoksa hafızadan reçete numarasına göre gerekli bilgileri aktardığım kısım mı?
Teşekkürler...
 
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
Verdiğiniz bilgi için çok teşekkürler ama ben SCL dilini bilmiyorum bunun lader veya STL kodlarını yazabilirmisiniz. Birde tomapon DB diye adlandırdığını DB tam olarak ne yapıyor Hafıza kısmımı yoksa hafızadan reçete numarasına göre gerekli bilgileri aktardığım kısım mı?
Teşekkürler...

Merhabalar,

Registerdaki veriyi adres olarak kullanmak için en kolay yol bence bu. Yazdığım SCL kodunda karmaşık çok fazla şey olduğunu düşünmüyorum. Biraz incelersen kolayca ne yapmaya çalıştığımı anlayabilirsin. Tampon DB diye adlandırdığım DataBlock senin tüm reçetelerinin saklandığı datablock'tur. Oluşturduğun tüm reçeteler Tampon DB'de saklanacaktır. MW20 ile Tampon DB'nin hangi adresinden itibaren yazmaya ve okumaya başlayacağını belirlersin.

Kolay Gelsin
 
Sayın morfeus verdiğiniz bilgiler için çok teşekkür ederim.
 
açıkel arkadaş sen galiba böyle bi örnek istiyosun galiba


Kod:
//temp

//kaynak Any 0.0
//hedef  Any 10.0
//TEMP0 bool 20.0
//TEMP1 bool 20.1
//Tip_Ret_Val int 22.0

//nw 1  

LAR1  P##kaynak

      L     B#16#10                     // s7 için 10 
      T     LB [AR1,P#0.0]

      L     B#16#7                      // DINT format
      T     LB [AR1,P#1.0]

      L     B#16#3                      // repetition factor
      T     LW [AR1,P#2.0]

      L     1                           // DB nosu
      T     LW [AR1,P#4.0]

      L     B#16#84                     // hafıza alanı
      T     LB [AR1,P#6.0]

      L     MW    90                    // başlangıç adresi
      T     LW [AR1,P#8.0]              // (dint) 32 arttırınca bir sonraki adrese //geçer

//nw 2

      CALL  SFC   20
       SRCBLK :=#kaynak
       RET_VAL:=#Tip_Ret_Val
       DSTBLK :=#hedef  // yukarıdaki örneğe göre burayı da sen şekillendir

//nw 3  #Tip_Ret_Val 0 a eşit değilse hata ver

     L     #Tip_Ret_Val
      L     0
      <>I   
      S     DB2.DBX    0.0

//nw 4

    A     M      2.0                  // bir sonraki adres bilgisine geç işareti
      FP    #TEMP0
      =     #TEMP1

      A     #TEMP1
      JNB   _001
      L     MW    90
      L     96                          // 3*32 (3 dint kaydırmak için)
      +I    
      T     MW    90
_001: NOP   0
 
Moderatör tarafında düzenlendi:

Forum istatistikleri

Konular
128,269
Mesajlar
916,326
Kullanıcılar
450,087
Son üye
Hsnozer

Yeni konular

Geri
Üst