S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序


本文包含以下內容,高手繞行:

1、STL下的部分位邏輯指令

2、如何根據電路圖或梯形圖編寫STL程序

3、邏輯運算的規則::先"與"(串聯)後"或"並聯


一、觸點與線圈

觸點分為常開觸點和常閉觸點,其在梯形圖中表示如圖1所示。

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖1 梯形圖中的觸點與線圈

觸點、線圈與RLO的關係如下:

· 常開觸點,為0時,表示能流未流過該觸點,RLO=0;為1時,表示有能流流過該觸點,RLO=1;

· 常閉觸點,與常開觸點相反,0時RLO=1;狀態為1時,RLO=0;

· 線圈或輸出指令"="將RLO寫入相應的地址位,即線圈的狀態與當前RLO相同。

二、基本位邏輯指令

由不同觸點經過串聯、並聯或者更復雜的電氣連接,可實現很多簡單卻實用的邏輯控制功能。

1、串聯邏輯

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖2 觸點串聯(LAD)

如圖2所示,為一個常開觸點和常閉觸點的串聯邏輯梯形圖。在STL中,用"A"(即AND,"與")表示常開點的串聯;用"AN"(即AND NOT,"與非")表示常閉點的串聯。因此,圖2的邏輯,用STL描述如下:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖2.1 觸點串聯(STL)

2、並聯邏輯

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖3 觸點並聯(LAD)

如圖3所示,為一個常開觸點和常閉觸點的並聯邏輯梯形圖。在STL中,用"O"(即OR,"或")表示常開點的並聯;用"ON"(即OR NOT,"或非")表示常閉點的並聯。因此,圖3的邏輯,用STL描述如下:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖3.1 觸點並聯(STL)

三、位邏輯指令的嵌套

所謂"位邏輯指令的嵌套"是指由基本位邏輯指令"A"、"O"、"AN"、"ON"等,和嵌套指令"(" 及 ")"組合而成的指令,用以編程描述由基本的串、並聯組成的複雜的混聯邏輯指令。

複雜的邏輯運算採用的規則是:先"與"(串聯)後"或"並聯。在初學STL時,可以通過假設中間邏輯,將複雜的邏輯拆分為簡單的串聯或並聯邏輯,以方便編程。下面舉幾個簡單的例子加以說明。

為方便說明,在邏輯表達式中"&"表示"與"、"&N"表示"與非"、"|"表示"或"、"|N"表示"或非"。

1、先"並聯"、再"串聯"

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖4 混聯邏輯1:先"並聯"後"串聯"(LAD)

圖4的混聯邏輯,由兩個並聯組件(紅框和藍框)再經由串聯後,將邏輯結果賦值給Q3.0。我們可以令:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

則:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

將(1)、(2)代入(3)得:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

因為,邏輯運算的規則是"先與後或",因此,(4)不可繼續化簡。根據(4)即可寫出與圖4相應的STL邏輯,如圖4.1所示。

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖4.1 混聯邏輯1:先"並聯"後"串聯"(STL)

2、先"串聯"、再"並聯"

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖5 混聯邏輯2:先"串聯"後"並聯"(LAD)

圖5的混聯邏輯,由兩個串聯組件(紅框和藍框)再經由並聯後,將邏輯結果賦值給Q4.0。我們可以令:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

則:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

將(1)、(2)代入(3)得:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

因為,邏輯運算的規則是"先與後或",因此,(4)中的"括號"是不必須的,即(4)的邏輯運算結果等價於:

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

由表達式(4)、(4.1)寫出的STL如圖5.1所示。

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖5.1 混聯邏輯2:先"串聯"後"並聯"(STL)

由圖5.1可見,通過表達式(4.1)寫出的STL語句更為簡潔、精煉。因為,我們在編程中,要時刻牢記邏輯運算的鐵則:先"與"(串聯)後"或"並聯

3、更為複雜的邏輯

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

圖6 混聯邏輯3

在實際應用中,我們可能遇到更為複雜的邏輯運算,比如如圖6所示。利用"化繁為簡"的方法,找出其"線圈"與"觸點"之間的邏輯關係後,自然可以寫出其對應的STL程序。

圖6對應的STL語句這裡就不給出了,有興趣的小夥伴不妨可以試著分析一波。


附錄:(介紹幾個文中提到的概念)

1、能流的概念

"能流"是梯形圖中,為方便理解和描述一段程序而提出的一個虛擬概念。左右母線看做是一個直流電源的正負極,左母線是正極,右母線是負極。電流沿著梯形圖,從左母線流到右母線,形成一條迴路,這裡所謂的"電流"就是"能流"。如圖1,綠色部分為能流的走向。

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

附圖1 "能流"及其概念

2、狀態字寄存器

S7系列PLC中,維護著一個16位的狀態字寄存器(如圖2所示),用於存儲CPU執行指令時的狀態。狀態字中的某些位用於決定某些指令是否執行以及以什麼樣的方式執行,同時,指令在執行時可能改變狀態字中的某些位。本文,主要用到"RLO"位。

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

附圖2 狀態字寄存器

RLO,(Result of Logic Operation),即:邏輯運算結果位。用來存儲位邏輯指令、比較指令的執行結果,可以用RLO觸發跳轉指令。

3、位邏輯指令一覽

S7-300/400進階筆記6:如何根據電路圖或梯形圖編寫STL程序

附圖3 位邏輯指令


分享到:


相關文章: