ST結構化文本_第1頁
ST結構化文本_第2頁
ST結構化文本_第3頁
ST結構化文本_第4頁
ST結構化文本_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、結構化文本語言學習心得一、工程的簡介和建立工程1. 工程文件的結構:工程文件的后綴名為pro,在新工程中建立的第一個程序結構單元(ProgramOrga ni zation Un it)將被自動命名為PLC_PRG,這個程序結構單元就類似于 C語言中的主程序。在PLC_PRG中可以調用各種函數及功能塊,而函數和功能塊都 屬于程序結構單元。PLC-1131-3 DS能夠區分在同一工程中的不同對象: 程序結構單元(POU)數據類型(data types)資源(resources)2. 工程的設置:1) 首先應該設置PLC的輸入輸出以保證工程中使用的地址的準確性。2) 接著建立解決問題的程序結構單元

2、3) 選擇適當的語言編寫程序4) 寫好程序之后,對程序進行編譯去除程序中的所有錯誤。3. 工程的測試:當工程之中的所有錯誤被去除之后激活仿真模式,就是與仿真PLC連接,與此同時將工程下載到PLC中,這樣PLC-1131-3 DS就處于在線方式了。現在能以適當的順序測試工程了,手動改變輸入變量的值,觀察輸出是否正確。用PLC-1131-3DS調試程序當程序發生錯誤時,你可以設置斷點。當處理發生中斷時,你就可以及時的在斷 點處檢查所有工程變量的值。工作在單步方式(si nglestep)下,可以檢驗程序的邏輯錯誤。你可以強制輸入或輸出變量的值。使用流控制(flowcontrol)可以知道哪些程序段

3、已經 執行。采樣軌跡(SamplingTrace)顯示變量在長時間的變化過程曲線。整個工程可以以文本文件的形式導出。總而言之PLC-1131-3 DS對于PLC編程是一種完善和方便的工具。4. 工程的組成(1) 工程(Project)一個工程包括了 PLC程序中所有的對象,工程中包含了如下對象:錯誤!未找到 引用源。*程序結構單元 POUs*數據類型 data types* 資源resources* 庫函數libraries(2) 程序結構單元(POU)函數(Functions)錯誤!未找到引用源。,功能塊(function blocks)錯誤!未找到引用源。和 程序(programs都是程序

4、結構單元(錯誤!未找到引用源。POUs)。每個POU包括了定義變量和程序主體兩個部分 錯誤!未找到引用源。錯誤!未找到引用 源。程序主體用IEC編程語言編寫,其中包括:指令表(IL)結構文本(ST)SFCFBD梯形圖(LD).PLC-1131-3 DS支持所有的標準IEC程序結構單元。錯誤!未找到引用源。錯誤!未找 到引用源。錯誤!未找到引用源。POUs之間能夠相互調用,但是不允許遞歸調用.(3) 函數(Function)錯誤!未找到引用源。當定義函數的時候,不要忘記函數中必須含有返回值的數據類型,也就是說在函數名的后面必需緊跟冒號和一個數據類型。二. ST結構化文本編程1 定義"結

5、構"是指高水平的結構化編程能力,象一個"結構化的編程";"文本"是指應用文本而不是梯形圖和順序函功能表的能力。ST語言不能代替其它的語言,每種語言都有它自己的優點和缺點。ST主要的一個優點就是能簡化復雜的數學方程。2特點 咼級文本編程語言 結構化的編程 簡單的標準結構 快速高效的編程 使用直觀靈活與PASCAL類似有計算機編程經驗的人可以很容易地使用它 符合IEC 61131-3標準3 功能數字量和模擬量I/O邏輯操作邏輯比較表達式算術運算判斷語句機器的狀態語句循環語句功能塊可選用的動態變量診斷工具 4.結構文本基礎IF value <

6、7 THENWHILE value < 8 DOvalue := value + 1;END_WHILE;END_IF;4.1 表達式操作數可以表達式是指返回變量評估值的結構。表達式由操作符和操作數組成是常量,變量,調用函數或其它表達式。例子:b + c(a - b + c) "COS (to)SIN (a) * COS (b)4.2賦值操作符 通過一個表達式和一個值來給變量賦值。賦值語句包括位于左邊的變量,賦值操 作符":=",及后邊需要計算的表達式。所有的語句,包括賦值語句,必須要以分 號""結尾。當這行程序執行后,變量"V

7、ar 1"的值是變量"Var 2"的兩倍。例子:Vari := Var22;Vari 一一 (Var2 * 2)*)圖 4 Assignment4.3注釋雖然注釋經常被刪掉,但它們是源代碼中非常重要的一部分。它們解釋了一部分 代碼,使程序更易讀懂。注釋幫助你或其他人讀你的程序,即使過去了很長時 間。注釋不被編譯,因此不會影響程序的執行。注釋應該用一對星號和小括號括 起來"(*comment*)"。例子:(* This is one line comment圖.6單行注釋P This is more lines conirtient 卡)4.4操

8、作符優先級如果在一個表達式中使用幾個操作符,就會出現優先級的問題(執行的順序) 操作符按優先級的順序來執行。在任何一個表達式中,首先執行最高級別的操作符,接著執行低一級的操作符, 等等,直到執行完所有的操作符。具有相同級別的操作符按照書寫順序從左至右 依次執行。操作符符號/語言優先級括號()依次降低函數調用例子Call argume nt(s)LN(A), MAX(X),等:注釋*取反NOT乘*除/取模(取除法的余數)MOD加+減-比較V, >, <=, >=等于=不等于<>邏輯與AND邏輯異或XOR邏輯或OR4.5結構文本格式編程格式指令 指令類型賦值(Assi

9、gnment)錯誤!未找到引用源。錯誤!未找到引用源。 調用功能塊或者函數的返回值(Calli ng a fun cti on block and use of the FB output)錯誤!未找到引 用源。錯誤!未找到引用源。返回(RETURN)錯誤!未找到引用源。錯誤!未找到引用源。IF (條件)錯誤!未找到引用源。 錯誤!未找到引用源。例子A:=B; CV := CV + 1; C:=SIN(X);CMD_TMR(IN := %IX5, PT := 300);A:=CMD_TMR.QCASE(分支)錯誤!未找到引用 源。錯誤!未找到引用源。RETURN;D:=B*B;IF D<

10、0.0 THENC:=A;ELSIF D=0.0 THENC:=B;ELSEC:=D;END_IF;CASE INT1 OF1: BOOL1 := TRUE; 2: BOOL2 := TRUE; ELSEBOOL1 := FALSE;BOOL2 := FALSE;END CASE;J:=101;FOR I:=1 TO 100 BY 2 DOFOR(循環)錯誤!未找到引用源 錯誤!未找到引用源。IF ARRI = 70 THENJ:=I;EXIT;END_IF;END_FOR;WHILE(循環)錯誤!未找到引用J:=1;源。錯誤!未找到引用源。WHILE J<= 100 AND ARRJ

11、<> 70DO用結構J:=J+2;文本編END_WHILE;程格式REPEAT(重復)錯誤!未找到引用J:=-1;編寫的源。錯誤!未找到引用源。REPEAT程序與J:=J+2;其它格UNTIL J= 101 OR ARRJ = 70式的編END_REPEAT;程語言EXIT(退出)錯誤!未找到引用EXIT;相比出源。錯誤!未找到引用源。錯概率Empty in structi on(空指令)J低,編寫的程序具有可讀性高的特點。錯誤!未找到引用源。調用功能塊(Calling a function block)結構文本編程格式通過在功能塊名后面的括號里分配參數值來調用功能塊的功 能在下面

12、的例子中通過分配參數IN和PT的值調用一定時器功能塊,它的結果變量 的值被賦給變量A。CMD_TMR(IN := %IX5, PT := 300);A:=CMD_TMR.Q返回指令(RETURN instruction )錯誤!未找到引用源。返回指令用來結束函數調用,當條件滿足時返回主程序(3)條件指令(IF instruction)使用IF指令檢驗是否滿足條件,當條件滿足時執行相應的的指令 語法:IF <布爾表達式_1> THEN<IF_指令>ELSIF <布爾表達式_2> THEN<ELSIF_指令 1>ELSIF <布爾表達式_n&g

13、t; THEN<ELSIF_指令 n-1>ELSE<ELSE_指令 >END_IF;里面的內容是可選的。如果 <布爾表達式1>的返回值為真(TRUE),那么只有<IF_指令被執行,而其它 的指令不執行。否則檢驗 <布爾表達式2>的返回值是否為真,這樣連續判斷 <布爾表達式n>的返回值,直到返回值為真時執行對應的指令。如果執行到最后表達式的返 回值也沒有為真,那么執行<ELSE_指令>。例:THENELSEIF temp<17heati ng_on := TRUE; heati ng_on := FALSE;EN

14、D_IF;這段程序控制加熱功能的開啟和關閉, 度時就加熱。當溫度高于17度時不加熱,當溫度低于17(4) 分支指令(CASE instruction)錯誤!未找到引用源。錯誤!未找到引用源。錯 誤!未找到引用源。錯誤!未找到引用源。錯誤!未找到引用源。使用分支指令可以將一些具有相同條件變量的指令結合在一個結構中語法:CASE < 變量 1> OF<=1>:< 指令 1><=2>:<指令 2>v=n>:<指令 n>ELSE <ELSE 指令 >END_CASE;CASE指令根據下面的模式處理程序:如果變量的

15、值為i,那么執行 <指令i>中的指令。如果沒有相應的變量的值,那么執行ELSE如果需要幾個不同的變量值執行相同的指令,那么可以將幾個變量值寫在一起用逗號隔開,后面接需要執行的指令。例:CASE INT1 OF1,5:BOOL1 := TRUE;BOOL3 := FALSE;2: BOOL2 := FALSE;BOOL3 := TRUE;ELSEBOOL1 := NOT BOOL1;BOOL2 := BOOL1 OR BOOL2;END_CASE;(5) 循環指令(FOR)< 步長 Step size DO<指令In structi ons>使用FOR循環指令可以重

16、復程序處理的過程。語法:整形變量INT_Var :INT;FOR <整形變量 INT_Var>:= < 初始值 INIT_V ALUE> TO < 終止值 END_VALUE> BYEND_FOR;中的內容可選的只要INT_Var中的計數值不大于END_VALUE就重復執行lnstructions中 的指令。在執行指令之前就檢驗這個條件,如果條件得不到滿足就不執行lnstructions中的指令。當指令被執行一次之后 整形變量INT_Var就增加 vStepsize沖的相應值。當得到INT_Var大于END_VALUE匚勺條件時就 停止循環。例:FOR Co

17、u nter:=1 TO 5 BY 1 DOVar1:=Var1*2;END_FOR;Res:=Var1;我們假設Var1的初始值為1,那么循環結束時變量 Var1的值為32。(6) 循環指令(WHILE loop)WHILE循環指令的用法與FOR循環指令相似,它們的不同之處在于 WHILE循環 的判斷條件有些不同,它可以是任何布爾表達式。也就是說只要滿足你給定的條 件時,就執行循環指令。語法:WHILE 布爾表達式指令END_WHILE;只要布爾表達式的返回值為真TRUE,也就是條件滿足的時候, 指令將重復 執行,直到 布爾表達式的返回值為假FALSE0如果在第一次判斷條件時就不滿足,那么沒

18、有執行一次指令循環就結束了。當布爾表達式的返回值始終為真時,指令就無限的循環執行下去,進入死循環狀 態。這在編程時要盡量避免。例:WHILE cou nter0 DOVar1 := Var1*2;Coun ter := Coun ter-1;END_WHILEWHILE循環和REPEAT循環在某種意義上來說比FOR循環更實用,因為在某種情 況下我們不能確定循環的次數,在這種情況下只能用WHILE循環指令或者REPEAT循環指令。但是FOR循環指令的循環次數是一定的,所以用 FOR循環指 令編程可以避免死循環的出現。(7) 循環指令(REPEAT loop)REPEAT循環指令不同于WHILE循

19、環指令的地方在于指令執行條件的判定順序, REPEAT循環指令在判斷條件之前就執行指令,也就是說 REPEAT循環指令至少 可以執行一次而不考慮判定條件。 WHILE循環指令就不同,可能指令一次也不 執行就終止循環。語法:REPEAT指令UNTIL 布爾表達式END_REPEAT;當 布爾表達式的返回值為真時,就是說判定條件滿足的時候就終止循環。 如果 布爾表達式在第一次檢驗的時候滿足條件,那么整個循環只執行一 次。如果條件始終得不到滿足,進入死循環狀態,編程時需盡量避免這種情況的 發生。例:REPEATVari := Var1*2;Coun ter := Coun ter-1;UNTILCo

20、un ter=OEND_REPEAT;(8)退出指令(EXIT instruction)如果EXIT指令出現在FOR、WHILE、REPET循環指令里面的時候,循環將不考 慮中斷條件是否滿足就無條件中斷正在進行中的循環。4.6布爾邏輯操作操作數不需要是BOOL類型。布爾邏輯操作:錯誤!未找到引用源符號邏輯操作例子NOT取反a:=NOT b;AND邏輯與a:=b AND c;OR邏輯或a:=b OR c;XOR異或A:=b XOR c;這些操作符可以形成一個邏輯表達式和條件語句,結果是真(TRUE)或(FALSE)4.7算術運算4.7.1基本的算術運算ST為應用程序提供了以下基本的算術運算符號算

21、術操作例子賦值a:=b;+加a :=b + c;-減a :=b -c;*乘a :=b * c;/除a :=b / c;MOD取模(顯示余數)a :=b mod c;數據類型是非常重要的參數,結果也依賴于語法和數據類型。表達式左邊的數據 類型應該等同于(或大于)右邊的數據類型。4.7.2隱形數據類型轉換該類型的轉換由編譯器完成。編譯器將表達式中低的數據類型轉換成高的數據類 型。如果有兩種或多個類型的變量參與運算, 那么必須將它們轉換成相同的類型 以便執行運算。數據類型BOOLSINTINTDINTUSINTUINTUDINTREALBOOL HBOOLp'SINTINTDINTUSINT

22、UINTUDINTREALINTSINTDINTUSINTUINTUDINTREALdint nSINTHNTUSINTUINTUDINT 1REAL 1USINTSINTINTDINTUINTUDINTREALUINTSINTINTDINTUSINTUDINTREALUDINTSINTHNTDINTUSINTUINTREAL 1REALSINTINTDINTUSINTUINTUDINT4.7.3顯性數據類型轉換當兩個變量在計算時,所得結果超過了某一類型數據所表示的范圍,只是就需要顯示的進行數據轉換。4.7.4比較操作高級編程語言ST或以允許比較操作的簡單結構分枝。比較的結果是真(TRUE或假

23、(FALSE。符號邏輯比較含義例子=等于If a=b the n<>不等于If a<>b the n>大于If a>b the n>=不小于If a>=b the n<小于If a<b the n<=不大于If a<=b the n比較操作作為一個邏輯條件用在IF, ELSE, WHILE和UNTIL語句中.4.8調用功能模塊ST中調用功能塊的方法:寫出功能塊的名稱,并在括號中給的需的輸入參數分 配變量名。在調用功能塊之前,需要給輸入參數分配所需的值。功能塊調用放在一行里,以 分號結束。在調用功能塊之后才能讀取 FB俞出值。首先是功能塊的名稱,接著是位于括號里的輸入參數。輸入參數用逗號隔開。功 能塊調用以分號結束。4.9指針和動態變量在運行時,系統給動態變量 PV分配了一個內存地址,這個過程叫做動態變量的尋參或初始化。當一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論