發布日期:2022-04-26 點擊率:2715 品牌:組態王_Kingview
在梯形圖中沒有對應的堆棧指令格式,但在將LAD指令轉化為STL指令的過程中,編譯系統軟件會自動為LAD指令加上相應的堆棧指令。當使用語句表時,必須自己操作管理邏輯堆棧。堆棧操作從本質上較好地解決了邏輯位值的與、或運算問題,即控制電路的串、并聯問題。
(1)棧裝載或(OLD,Or Load)指令
棧裝載或指令對堆棧中第1層和第2層的值進行邏輯或操作,結果放入棧頂。執行完棧裝載或指令后,堆棧深度減1。
棧裝載或指令又稱為邏輯塊“或”指令,用于串聯電路塊的并聯連接,無操作數。
STL指令格式為:OLD。
觸點的串并聯指令只能將單個觸點與別的觸點電路串并聯。要想將圖6-6中由13.2和T16的觸點組成的串聯電路與它上面的電路并聯,首先需要完成兩個串聯電路塊內部的“與”邏輯運算(即觸點的串聯),這兩個電路塊都是用LD或LDN指令表示電路塊的起始觸點前兩條指令執行完后,“與”運算的結果SO= 11.4*10.3存放在棧頂,第3、4條指令執行完后,“與”運算的結果S1=13.2*T16壓人堆頂,原來在棧頂的SO被推到堆棧的第2層,第2層的數據被推到第3層……棧底的數據丟失。OLD指令用邏輯“或”操作對堆棧第1層和第2層的數據相“或”,即將兩個串聯電路塊并聯,并將運算結果S2=SO+S1存入堆棧的頂部,第3層~第9層中的數據依次向上移動1位。
OLD指令不需要地址,它相當于需并聯的兩塊電路右端的一段垂直連線。在圖6-7中,iVO到iV6表示堆棧的初值,x表示不確定的值,SO到S4表示堆棧中存儲的計算值。
(2)棧裝載與(ALD,And Load)指令
棧裝載與指令對堆棧中第1層和第2層的值進行邏輯與操作,結果放入棧頂。執行完棧裝載與指令后,堆棧深度減1。
棧裝載與指令又稱為邏輯塊“與”指令,用于并聯電路塊的串聯連接,無操作數。
STL指令格式為:ALD。
圖6-6中OLD后面的兩條指令將兩個觸點并聯,運算結果S3:C24 +11.2壓入棧頂,棧中原來的數據依次向下一層推移,棧底值被推出丟失。ALD指令用邏輯“與”操作對堆棧第1層和第2層的數據相“與”,即將兩個電路塊串聯,并將運算結果S4=S2*S3存人堆棧的頂部,第3層一第9層中的數據依次向上移動1位。
將電路塊串并聯時,每增加一個用LD或LDN指令開始的電路塊的運算結果,堆棧中增加一個數據,堆棧深度加1,每執行一條ALD或OLD指令,堆棧深度減1。
梯形圖和功能塊圖編輯器自動地插入堆棧操作所需要的指令。在語句表中,必須有編程人員加入這些堆棧處理指令。
ALD與OLD指令的堆棧操作如圖6-7所示。
(3)邏輯入棧(LPS,Logic Push)指令(分支或主控指令)
復制棧頂的值并將其壓入堆棧的下一層,棧中原來的數據依次向下一層推移,棧底值被推出丟失。在梯形圖中的分支結構中,用于生成一條新的母線,左側為主控邏輯塊時,第一個完整的從邏輯行從此處開始。使用IPS指令時,本指令為分支的開始,以后必須有分支結束指令LPP,即LPS與LPP指令必須成對出現。
STL指令格式為:J_PS。
(4)邏輯讀棧(LRD.Logic Read)指令
將堆棧中第2層的數據復制到棧頂,第2層~第9層的數據不變,但原棧頂值消失。在梯形圖中的分支結構中,當左側為主控邏輯塊時,開始第二個和后邊更多的從邏輯塊。
STL指令格式為:LRD。
(5)邏輯出棧(J-PP,Logic Pop)指令(分支結束或主控復位指令)
使棧中各層的數據向上移動一層,第2層的數據成為堆棧新的棧頂值,棧頂原來的數據從棧內消失。在梯形圖中的分支結構中,用于將LPS指令生成一條新的母線進行恢復。使用LPP指令時,必須出現在LPS的后面,與LPS成對出現。
STL指令格式為:LPP。
(6)裝載堆棧(LDS n,Load Stack)指令
復制堆棧內第n層的值到棧頂,棧中原來的數據依次向下一層推移,棧底值被推出丟失。一般很少使用這條指令。
STL指令格式為:LDS N。
圖6-8中的例子說明了(3)~(6)堆棧指令的使用過程。
邏輯堆棧指令的應用示例如圖6-9所示。
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航