Step7 STL KOD

crimer

Üye
Katılım
26 Mar 2010
Mesajlar
10
Puanları
1
Arkadaşlar Merhaba,

Umarım konuyu doğru yere açmışımdır. S7-300 PLC nin içerisine bağlandığımda bazı noktalarda STL kodları gördüm ve STL konusunda bilgimde pek yok, aşağıdaki kodda ne yapılmak istenilmiş bilen biri anlatabilir mi?

L P#0.0
LAR1
M002: OPN DB 13
L DBB [AR1,P#0.0]
L 0
<>I
JC M001
L P#1.0
+AR1
TAR1
L P#17.0
<=D
JC M002
SET
R M 99.0
JU M003
M001: SET
S M 99.0
M003: NOP 0
 
Kod:
L P#0.0                // Acc1 := P#0.0
LAR1                              // AR1 := P#0.0
M002: OPN DB 13         // DB13 açıldıdı
L DBB [AR1,P#0.0]        // DB13'teki AR1+P#0.0 bytı yüklendi (DB13'ün ilk Bytına denk geliyor DB13.DBX0.0 BYTE1 )
L 0                                 // 0 değeri yüklendi
<>I                                 // DB13'ün ilk bytı 0 ile karşılaştırdı eğer eşit değillerse RLO = 1;
JC M001                        // RLO :=1 ise M001'e atla
L P#1.0                        // Acc1 := P#1.0
+AR1                          // AR1 := AR1 + Acc1
TAR1                            // ACC1 := AR1
L P#17.0                      //  P#17.0
<=D                             // AR1(P#1.0) ile P#17.0 karşılaştırılıyor(double int şeklinde). P#17.0 büyükse RLO := 1
                                     //DB13'de 1.0 ofsetli adres ile DB13'teki 17.0 ofsetli adresten sonraki değerlr karşılaştırılıyor, yukarıda DB13 açıldı.
                                      // DB13.DBX1.0 WORD2 <=D DB13DBX17.0 WORD2 ??

JC M002                          // RLO == 1 ise M002'ye atla
SET                                    // RLO := 1
R M 99.0                           // M99.0 := 0
JU M003                           // M003'e git
M001: SET                        // RLO := 1
S M 99.0                        // M99.0 := 1
M003: NOP 0
// No operation

STL'e çok hakim değilim. Kendim için pratik olsun diye aşağıdaki sitelerden yararlanarak yukarıdaki commentleri ekledim. Similasyonda test etmekte fayda var.

https://cache.industry.siemens.com/dl/files/446/45523446/att_79269/v1/s7awl__b.pdf
https://www.plcdev.com/book/export/html/624
 
Son düzenleme:
DB12 ün içi resimdeki gibi, aslında benim amacım M99.0 neden setlendiğini bulmak,
Birde şurada DBB dememiş ama karşılaştırma yapılmış onu anlamadım.

L P#1.0 // Acc1 := P#1.0
+AR1 // AR1 := AR1 + Acc1
TAR1 // ACC1 := AR1
L P#17.0 // P#17.0
<=D


 
Son düzenleme:
L DBB [AR1,P#0.0]
L 0
<>I
JC M001 // DBB [AR1,P#0.0] Satırı sıfıra eşit değilse M001 etiketine sıçra

//Devamı
M001: SET
S M 99.0 // M99.0 burada setleniyor.
 
Aşağıdaki kod için açıklamanız var mı, M69,3 gelmesi gerekiyor neden gelmediğini anlamak istiyorum.

M006: NOP 0
A DB65.DBX 31.0
= M 69.0
A DB65.DBX 31.1
= M 69.1
A DB65.DBX 31.2
= M 69.2
A DB65.DBX 31.3
= M 69.3
A DB65.DBX 31.4
= M 69.4
A DB65.DBX 31.5
= M 69.5

Online olunca böyle bişey çıkıyor.

 
---| |----------------------------------( )
--DB65.DBX 31.3-------------------M69.3

M69.3 burada doğrudan DB65.DBX 31.3'ün değerini alıyor
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…