當(dāng)前位置:
首頁(yè) >
PLC编程之ST语言
發(fā)布時(shí)間:2024/8/1
74
豆豆
生活随笔
收集整理的這篇文章主要介紹了
PLC编程之ST语言
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
PLC編程之ST語(yǔ)言
- 1,IF結(jié)構(gòu):
- 2,FOR結(jié)構(gòu):
- 3,CASE結(jié)構(gòu):
- 4,WHILE結(jié)構(gòu):
ST語(yǔ)言是IEC61131-3中規(guī)定的5中標(biāo)準(zhǔn)語(yǔ)言之一,目前常用見(jiàn)品牌的PLC都支持這種語(yǔ)言(施耐德,AB可以直接選擇創(chuàng)建該類(lèi)型的程序段或者功能塊,西門(mén)子的略微麻煩一點(diǎn)),ST語(yǔ)言的一個(gè)好處是移植性好,各家的ST語(yǔ)言基本都是類(lèi)似的,所以如果有一個(gè)巨牛逼的算法,用ST語(yǔ)言實(shí)現(xiàn)是再好不過(guò)的了,這樣可以很容易的在多個(gè)品牌的PLC上移植,當(dāng)前,有個(gè)前提條件是在這個(gè)算法中不要使用太多的系統(tǒng)功能塊,因?yàn)橄到y(tǒng)功能塊往往都是各個(gè)品牌比較個(gè)性的東西,會(huì)給移植帶來(lái)麻煩。另外,ST語(yǔ)言最適合寫(xiě)一些復(fù)雜的算法,個(gè)人覺(jué)得尤其是對(duì)應(yīng)一些數(shù)組的操作,用ST語(yǔ)言是最方便的,當(dāng)然有梯形圖也能實(shí)現(xiàn),不過(guò)遠(yuǎn)沒(méi)有用ST來(lái)的方便。ST語(yǔ)言的語(yǔ)法和pascal,C語(yǔ)言等都非常像,有時(shí)候各種語(yǔ)言用多了,就會(huì)混,所以這里將ST語(yǔ)言的幾種常用控制語(yǔ)句記錄下來(lái)。
基本語(yǔ)法參考鏈接:參考鏈接
1,IF結(jié)構(gòu):
基本語(yǔ)法是:
IF bool_expression_1 THEN<邏輯語(yǔ)句> ELSE IF bool_expression_2 THEN //這兩行可選<邏輯語(yǔ)句> ElSE //這兩行可選<邏輯語(yǔ)句> END_IF;舉例:
IF a>b THENflag:=1;ELSE IF a<b THENflag:=2;ELSEflag:=3;END_IF;說(shuō)明:
IF語(yǔ)句和梯形圖里的常開(kāi)常閉指令類(lèi)似,不太推薦用IF語(yǔ)句寫(xiě)復(fù)雜邏輯,bool邏輯還是用梯形圖寫(xiě)起來(lái)方便也直觀,除非對(duì)ST語(yǔ)言非常熱愛(ài)同時(shí)對(duì)梯形圖一點(diǎn)不懂。
2,FOR結(jié)構(gòu):
基本語(yǔ)法是:
FOR count:= initial_value TO final_value BY increment DO<循環(huán)體> END_FOR;舉例:
sum:=0; FOR i:= 2 TO 100 BY 2 DOsum:=sum+i; //計(jì)算0-100內(nèi)偶數(shù)和,包含100 END_FOR;說(shuō)明:
BY可后面跟的步長(zhǎng)是可選的,如果沒(méi)有默認(rèn)為1.
如果要提前退出循環(huán),可以在循環(huán)內(nèi)部增加一個(gè)判斷條件,配合EXIT語(yǔ)句實(shí)現(xiàn),如下:
3,CASE結(jié)構(gòu):
基本語(yǔ)法:
CASE numeric_expression OF selector_1:<邏輯語(yǔ)句> …… selector_n:<邏輯語(yǔ)句> ELSE<邏輯語(yǔ)句> END_CASE;舉例:
CASE num OF1,2,3:a:=10;4:a:=20; elsea:=100; END_CASE;說(shuō)明:
CASE語(yǔ)句和其他高級(jí)語(yǔ)言中的CASE語(yǔ)句很類(lèi)似,但是少了break,實(shí)際上這里的CASE只會(huì)執(zhí)行第一個(gè)滿(mǎn)足條件的語(yǔ)句,相當(dāng)于在每一個(gè)選項(xiàng)里自動(dòng)增加了一個(gè)break操作。
4,WHILE結(jié)構(gòu):
基本語(yǔ)法:
WHILE bool_expression DO<邏輯語(yǔ)句> END_WHILE;舉例:
i:=0; sum:=0; WHILE i=100 DOsum:=sum+i;i:=i+1; END_WHILE;基本結(jié)構(gòu)就上面幾種,不同的軟件之間可能會(huì)有細(xì)小差別。
舉例:
變量定義:
代碼:
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總結(jié)
以上是生活随笔為你收集整理的PLC编程之ST语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JRTPLib的编译步骤
- 下一篇: 黑客帝国全解析