在看別人寫包含STL的程序時,如何能快速讀懂STL程序?

對於一般初學PLC或只熟悉LAD、FBD語言的人來說,再看到STL語言編寫的程序會很迷糊,覺得無從下手,通常會轉換成自己熟悉的編程語言(當然了大部分是轉換不過去的),其實STL語言還是比較好理解的,今天就跟大家聊聊如何快速讀懂STL程序。

一、STL指令及其結構:

在看別人寫包含STL的程序時,如何能快速讀懂STL程序?

有些語句指令不帶操作數,它們操作的對象是唯一的。

如:NOT //對邏輯操作結果(RLO)取反。

在看別人寫包含STL的程序時,如何能快速讀懂STL程序?

二、尋址方式:

1、立即尋址:對常數或常量的尋址方式,操作數本身包含在指令中。

如下面的指令:

set //把 RLO (Result of Logic Operation)置“1”

L 27 //把整數27裝人累加器1

L C#0100 //把 BCD碼常數0100裝入累加器1

2、直接尋址:在指令中直接給出操作數的存儲單元地址。

如下面的指令:

A I0.0 //對輸入位I0.0進行“與”邏輯操作

S L20.0//把本地數據位L20.0置1

= M115.4 // 將RLO的內容傳給位存儲區中的位M115.4

L DB1.DBD12 //把數據塊DB1雙字DBD12中的內容傳送給累加器1。//雙字表示32位,如浮點數為32為雙字

3、存儲器間接尋址

標識參數由一個存儲器給出,存儲器的內容對應該標識參數的值(該值又稱為地址指針),這種尋址方式能動態改變操作數存儲器的地址,常用於程序循環過程中的尋址。

如下面的例子:

A I[MD 2]//對由MD 2指出的輸入位進行“與”邏輯操作,

如: MD 2值為2#0000 0000 0000 0000 0000 0000 0101 0110,表示I 10. 6

L IB[DID 4]//將由雙字DID 4指出的輸入字節裝入累加器1,

如:DID 4值為2#0000 0000 0000 0000 0000 0000 0101 0000,表示對IB10操作

OPN DB[MW 2]//打開由字MW2指出的數據塊,如MW2為3,則打開DB3

4、寄存器間接尋址 :在S7中有兩個地址寄存器(AR1和AR2)地址寄存器的內容 + 偏移量 = 地址指針

如下面的例子:

L P#8.6//將P#8.6裝入累加器1

LAR1//將累加器1的內容傳送至地址寄存器1

L P#10.0//將P#10.0裝入累加器1

LAR2//將累加器1的內容傳送至地址寄存器2

A I[AR1,P#1.0]//AR1+偏移量(9.6)

Q[AR2,P#4.1] //AR1+偏移量(14.1)

三、在線監視

我們在看程序時,一般需要在線監視程序執行狀態,STL程序的在線狀態及說明如下圖所示:

在看別人寫包含STL的程序時,如何能快速讀懂STL程序?

1、系統內部寄存器:

S7 CPU的寄存器有(7個)

在看別人寫包含STL的程序時,如何能快速讀懂STL程序?

2、STA狀態位:

• STA表示被操作的數據的當前狀態,0或者1;

• 僅表示布爾量;

• 非布爾量的數值以ACCU累加器表示

例如:

AN I0.0 //I0.0 現在為0,則STA為0,但是執行完畢後RLO為1。


分享到:


相關文章: