日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(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),如下:

FOR count:= initial_value TO final_value BY increment DO IF bool_expression THEN EXIT; END_IF; END_FOR;

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ì)小差別。

舉例:
變量定義:

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。