日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PLC编程之ST语言

發布時間:2024/8/1 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PLC编程之ST语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PLC編程之ST語言

  • 1,IF結構:
  • 2,FOR結構:
  • 3,CASE結構:
  • 4,WHILE結構:

ST語言是IEC61131-3中規定的5中標準語言之一,目前常用見品牌的PLC都支持這種語言(施耐德,AB可以直接選擇創建該類型的程序段或者功能塊,西門子的略微麻煩一點),ST語言的一個好處是移植性好,各家的ST語言基本都是類似的,所以如果有一個巨牛逼的算法,用ST語言實現是再好不過的了,這樣可以很容易的在多個品牌的PLC上移植,當前,有個前提條件是在這個算法中不要使用太多的系統功能塊,因為系統功能塊往往都是各個品牌比較個性的東西,會給移植帶來麻煩。另外,ST語言最適合寫一些復雜的算法,個人覺得尤其是對應一些數組的操作,用ST語言是最方便的,當然有梯形圖也能實現,不過遠沒有用ST來的方便。ST語言的語法和pascal,C語言等都非常像,有時候各種語言用多了,就會混,所以這里將ST語言的幾種常用控制語句記錄下來。

基本語法參考鏈接:參考鏈接

1,IF結構:

基本語法是:

IF bool_expression_1 THEN<邏輯語句> ELSE IF bool_expression_2 THEN //這兩行可選<邏輯語句> ElSE //這兩行可選<邏輯語句> END_IF;

舉例:

IF a>b THENflag:=1;ELSE IF a<b THENflag:=2;ELSEflag:=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 DOsum:=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 OF1,2,3:a:=10;4:a:=20; elsea:=100; END_CASE;

說明:
CASE語句和其他高級語言中的CASE語句很類似,但是少了break,實際上這里的CASE只會執行第一個滿足條件的語句,相當于在每一個選項里自動增加了一個break操作。

4,WHILE結構:

基本語法:

WHILE bool_expression DO<邏輯語句> END_WHILE;

舉例:

i:=0; sum:=0; WHILE i=100 DOsum:=sum+i;i:=i+1; END_WHILE;

基本結構就上面幾種,不同的軟件之間可能會有細小差別。

舉例:
變量定義:

PROGRAM STStructTest001TYPEstudent:STRUCTgender : ARRAY[1..10] OF BOOL;age : ARRAY[1..10] OF USINT;class : ARRAY[1..10] OF INT;score : ARRAY[1..10] OF INT;END_STRUCT;END_TYPEVAR//stu : ARRAY[1..10] OF student;stu1: student;num : INT;boy : UINT;girl: UINT;ageSum : UINT;scoreSum : UINT;i : INT;start : bool;aveAge : REAL;aveScore : REAL;END_VAR

代碼:

IF start THEN num := 10;boy := 0;girl := 0;ageSum := 0;scoreSum := 0;FOR i:=1 to num BY 1 DOIF stu1.gender[i]=TRUE THENboy := boy + 1;ELSE girl := girl + 1;END_IF;ageSum := ageSum + stu1.age[i];scoreSum := scoreSum + INT_TO_UINT(stu1.score[i]);END_FOR; END_IF;aveAge := ageSum / num; aveScore := aveScore / num;END_PROGRAM

總結

以上是生活随笔為你收集整理的PLC编程之ST语言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。