PLC中ST語言的幾種程序流程控制語句


ST語言是IEC61131-3中規定的5中標准語言之一,目前常用見品牌的PLC都支持這種語言(施耐德,AB可以直接選擇創建該類型的程序段或者功能塊,西門子的略微麻煩一點),ST語言的一個好處是移植性好,各家的ST語言基本都是類似的,所以如果有一個巨牛逼的算法,用ST語言實現是再好不過的了,這樣可以很容易的在多個品牌的PLC上移植,當前,有個前提條件是在這個算法中不要使用太多的系統功能塊,因為系統功能塊往往都是各個品牌比較個性的東西,會給移植帶來麻煩。另外,ST語言最適合寫一些復雜的算法,個人覺得尤其是對應一些數組的操作,用ST語言是最方便的,當然有梯形圖也能實現,不過遠沒有用ST來的方便。ST語言的語法和pascal非常像,有時候各種語言用多了,就會混,所以這里將ST語言的幾種常用控制語句記錄下來。
 
1,IF結構:
基本語法是:
IF bool_expression_1 THEN
  <邏輯語句>
ELSE IF bool_expression_2 THEN //這兩行可選
  <邏輯語句>
ElSE //這兩行可選
  <邏輯語句>
END_IF;
 
舉例:
  IF a>b THEN
       flag:=1;
  ELSE IF a<b THEN
      flag:=2;
  ELSE
      flag:=3;
  END_IF;
 
說明:
  IF語句和梯形圖里的常開常閉指令類似,不太推薦用IF語句寫復雜邏輯,bool邏輯還是用梯形圖寫起來方便也直觀,除非對ST語言非常熱愛同時對梯形圖一點不懂。
 
 
2,FOR結構:
基本語法是:
FOR   count:= initial_value  TO  final_value BY  increment DO
  <循環體>
END_FOR;
 
舉例:
sum:=0;
FOR   i:= 2  TO  100 BY  2 DO
      sum:=sum+i; //計算0-100內偶數和,包含100
END_FOR;
說明:
BY可后面跟的步長是可選的,如果沒有默認為1.
如果要提前退出循環,可以在循環內部增加一個判斷條件,配合EXIT語句實現,如下:
FOR   count:= initial_value  TO  final_value BY  increment DO
IF bool_expression THEN
EXIT;
END_IF;
END_FOR;
 
3,CASE結構:
基本語法:
CASE numeric_expression OF
selector_1:
  <邏輯語句>
……
selector_n:
  <邏輯語句>
ELSE
  <邏輯語句>
END_CASE;
 
舉例:
CASE num OF
  1,2,3:
  a:=10;
  4:
  a:=20;
else
  a:=100;
END_CASE;
 
說明:
CASE語句和其他高級語言中的CASE語句很類似,但是少了break,實際上這里的CASE只會執行第一個滿足條件的語句,相當於在每一個選項里自動增加了一個break操作。
 
4,WHILE結構:
基本語法:
WHILE bool_expression DO
  <邏輯語句>
END_WHILE;
 
舉例:
i:=0;
sum:=0;
WHILE i=100 DO
  sum:=sum+i;
  i:=i+1;
END_WHILE;
 
說明:
WHILE和FOR幾乎是可以通用的,隨個人喜好用吧。
 
 
基本結構就上面幾種,上面的語法參照了AB的資料,不同品牌之間可能略有區別,具體使用可以參考具體品牌的手冊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM