最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

三菱ST語(yǔ)言教學(xué)(1)——基本指令與標(biāo)簽

2023-05-27 14:35 作者:工控小周  | 我要投稿

三菱PLC工控人微信群:15961872327

三菱PLC工控人微信群:15961872327

IF 條件判斷

if單詞翻譯過(guò)來(lái)是“如果”,在程序中用于判斷是否滿(mǎn)足某種條件,當(dāng)滿(mǎn)足其中一個(gè)條件時(shí)在這個(gè)條件下面進(jìn)行一些操作,在所有條件都不滿(mǎn)足時(shí)不操作,舉個(gè)例子:

假設(shè)現(xiàn)在有3個(gè)按鈕控制電機(jī)正反轉(zhuǎn)。按下按鈕1(X1)電機(jī)正轉(zhuǎn)(Y1),按下按鈕2(X2)電機(jī)反轉(zhuǎn)(Y2),按下X3停止。使用梯形圖編程如下:

梯形圖編程

可以看到的是,由于輸入為按鈕,是一個(gè)脈沖信號(hào),所以需要線(xiàn)圈并上輸入形成自鎖保持電機(jī)啟動(dòng)。同樣的功能我們用ST來(lái)編程:

ST編程

當(dāng)按下按鈕X1的期間,位軟元件Y1的值為true(理解為on,高電平,導(dǎo)通),Y2的值為false(理解為off,低電平,斷開(kāi)),X2與X3同理。三個(gè)按鈕都沒(méi)有動(dòng)作時(shí),輸出Y1,Y2也不會(huì)有任何操作。

這里的:=是ST語(yǔ)言的賦值符號(hào),它即可以給開(kāi)關(guān)量賦值,也可以給數(shù)字量賦值;即可以賦值常數(shù),也可以賦值變量,類(lèi)似于梯形圖里面的mov指令。一定要記住每個(gè)賦值語(yǔ)句后面和結(jié)束指令后面要加分號(hào)結(jié)束符“;”,程序里所有的符號(hào)要用英文的符號(hào)。

程序?qū)懗蛇@樣已經(jīng)可以初步實(shí)現(xiàn)功能,可以看到在ST語(yǔ)言下,軟元件賦值后如果沒(méi)有其他的賦值操作,直接就是保持的,類(lèi)似于梯形圖的SET/RST指令。

IF語(yǔ)句的常用格式如下:


IF不僅可以判斷開(kāi)關(guān)量,同時(shí)可以判斷數(shù)字量,或者是一個(gè)公式,例如:

IF判斷數(shù)字量

標(biāo)簽(變量)

上面的程序我們都是用PLC自帶的軟元件(X,Y,M,D等)進(jìn)行編程的,而想要發(fā)揮ST語(yǔ)言真正的實(shí)力還需要學(xué)會(huì)使用標(biāo)簽進(jìn)行編程。

從使用范圍標(biāo)簽分為局部標(biāo)簽和全局標(biāo)簽,局部標(biāo)簽只能在相應(yīng)的一個(gè)程序段內(nèi)使用,不同的程序段可以建立同名標(biāo)簽不會(huì)互相影響;而全局標(biāo)簽可以在工程下所有程序段內(nèi)使用。

在三菱的結(jié)構(gòu)化工程中,每建立一個(gè)程序段就會(huì)生成相應(yīng)的局部標(biāo)簽,建立標(biāo)簽需要聲明標(biāo)簽的數(shù)據(jù)類(lèi)型,可以是bit(位),word(字),float(浮點(diǎn)),string(字符串),time(時(shí)間)等基本數(shù)據(jù)類(lèi)型,也可以是FB(功能塊),struct(結(jié)構(gòu)體),本文只介紹基本數(shù)據(jù)類(lèi)型,其他的以后再講。

上面電機(jī)正反轉(zhuǎn)控制的例子我們可以修改如下:

聲明標(biāo)簽

聲明標(biāo)簽

標(biāo)簽欄共有3項(xiàng),“類(lèi)”包含VAR,VAR_CONSTANT,VAR_RETAIN,其中VAR為中間變量,可以在任意時(shí)刻進(jìn)行判斷和賦值;VAR_CONSTANT為常數(shù)變量,設(shè)定常數(shù)后不能被程序賦值;VAR_RETAIN為保持變量,相比VAR多個(gè)掉電數(shù)據(jù)保持功能。“標(biāo)簽名”可以任意寫(xiě),三菱還支持寫(xiě)中文,但要注意不要寫(xiě)一些PLC保留字,比如bit,int,word等相關(guān)的,這里建議盡量寫(xiě)英文,這樣程序看起來(lái)整齊而且通用,可以復(fù)制到其他品牌PLC也能直接運(yùn)行,還有中文的變量在編程時(shí)不能雙擊選中,也很麻煩。

程序編輯如下:

標(biāo)簽編程

標(biāo)簽所表示的含義是編程人員定義的,想要控制實(shí)際的設(shè)備還需要將標(biāo)簽與設(shè)備對(duì)應(yīng)的軟元件相連接:

程序與設(shè)備相連

這里要注意賦值的方向,:=后面的值傳遞給前面的標(biāo)簽。

從這個(gè)程序來(lái)看好像標(biāo)簽沒(méi)有起到任何便利的作用,反而多此一舉,那是因?yàn)槌绦蛱?jiǎn)單還體現(xiàn)不出標(biāo)簽的便捷,下面我們講其他的基本指令。

CASE 條件判斷

與IF相比,CASE判斷更清晰,它常用于判斷數(shù)字量,我們舉個(gè)例子來(lái)說(shuō)明他的格式,仍然采用標(biāo)簽的方式:

聲明標(biāo)簽

CASE判斷

其含義為:

當(dāng)標(biāo)簽Number=0時(shí),輸出開(kāi)關(guān)量OutputBool為true,輸出整形量OutputInt=1;

當(dāng)Number=1時(shí),輸出開(kāi)關(guān)量OutputBool為true,輸出整形量OutputInt=2;

當(dāng)Number=2到11任意一個(gè)數(shù)時(shí),輸出開(kāi)關(guān)量OutputBool為true,輸出整形量OutputInt=3;

當(dāng)Number=15或者20時(shí),輸出開(kāi)關(guān)量OutputBool為true,輸出整形量OutputInt=4;

當(dāng)Number不等于以上任何值時(shí),輸出開(kāi)關(guān)量OutputBool為false,輸出整形量OutputInt=0;

這段程序基本體現(xiàn)了case語(yǔ)句的所有格式,可以看到相比IF,條件要清晰很多。

CASE指令除了用于條件判斷,也用于順序流程控制的編程,再舉個(gè)例子:

假設(shè)一個(gè)機(jī)構(gòu)有3個(gè)氣缸,3個(gè)氣缸按照一個(gè)固定順序依次進(jìn)行伸出動(dòng)作,完成后統(tǒng)一縮回。我們可以使用case來(lái)構(gòu)建整個(gè)流程:

聲明標(biāo)簽

每個(gè)氣缸有4個(gè)變量,分別為氣缸伸出,伸出反饋,氣缸縮回,縮回反饋。

流程控制

iStep的每一個(gè)值相當(dāng)于一個(gè)步驟,每完成一個(gè)步驟,通過(guò)氣缸到位信號(hào)將步驟iStep置為下一個(gè)步驟,這樣整個(gè)程序可以按照我們想要順序執(zhí)行。xBegin相當(dāng)于一個(gè)開(kāi)始按鈕,觸發(fā)整個(gè)流程。

從這個(gè)程序我們可以看出,case下面可以添加if,實(shí)際上不僅如此,所有基本指令的下面都可以多層套嵌,可以實(shí)現(xiàn)更為復(fù)雜的邏輯。

FOR循環(huán)

FOR循環(huán)為有限次的循環(huán),循環(huán)根據(jù)設(shè)定的增量講一個(gè)數(shù)字變量進(jìn)行遞增,直到變量等于設(shè)定值。舉例說(shuō)明:

FOR循環(huán)

這里建立了兩個(gè)字變量“ii”“iCount”,這里ii作為循環(huán)的依據(jù)變量,設(shè)定的增量為by后面的數(shù)字2,由0數(shù)到100,意思為ii初始值為0,每次+2,直到ii的值=100本次掃描周期內(nèi)停止。要明確的是循環(huán)是在一個(gè)PLC掃描周期內(nèi)完成的,所以如果FOR語(yǔ)句上面沒(méi)有條件進(jìn)行限制,每個(gè)掃描周期都要進(jìn)行這個(gè)循環(huán)任務(wù),例如上圖的程序如果直接執(zhí)行,那么每個(gè)掃描周期要進(jìn)行50次循環(huán),占用PLC的資源還是很大的,所以一般我們要用上升沿或者判斷條件限制FOR循環(huán)在需要的時(shí)候執(zhí)行。例如:

增加限制條件

這里對(duì)FOR循環(huán)做了條件限制,每循環(huán)一次iCount的值增加1,每個(gè)周期for循環(huán)50次,20個(gè)周期后iCount的值=1000,不再滿(mǎn)足iCount<1000的條件了, 循環(huán)停止。

WHILE循環(huán)

WHILE循環(huán)為條件循環(huán),只要滿(mǎn)足設(shè)定的條件就一直循環(huán),直到條件不滿(mǎn)足才停止,循環(huán)也是在一個(gè)PLC掃描周期內(nèi)完成的。這里要特別注意如果條件一直滿(mǎn)足,PLC會(huì)陷入死循環(huán),造成PLC報(bào)錯(cuò),所以如果不是迫不得已,盡量不要使用while循環(huán),舉例說(shuō)明其用法:

WHILE循環(huán)

這個(gè)程序的意思為,在一個(gè)掃描周期內(nèi),當(dāng)變量iCount<1000時(shí),始終執(zhí)行iCount自身+1的操作,直到不滿(mǎn)足iCount<1000的條件才停止,上面這個(gè)程序分析可知循環(huán)1000次后循環(huán)停止,程序是沒(méi)問(wèn)題的,但是如果由于馬虎+號(hào)寫(xiě)成了-號(hào),如果不考慮變量自身的容量問(wèn)題,循環(huán)沒(méi)有停止的時(shí)候,變?yōu)樗姥h(huán),那這個(gè)程序一運(yùn)行就會(huì)報(bào)錯(cuò)。

其他的基本符號(hào)

ST語(yǔ)言邏輯運(yùn)算和數(shù)學(xué)運(yùn)算都很方便,例如:


“與或非”和“加減乘除”都很簡(jiǎn)單,復(fù)雜的運(yùn)算可以直接調(diào)用現(xiàn)成的公式(指令)。下一篇講解指令和功能塊的調(diào)用。


三菱ST語(yǔ)言教學(xué)(1)——基本指令與標(biāo)簽的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
岳西县| 富锦市| 永丰县| 民丰县| 茌平县| 长寿区| 凤凰县| 开封县| 大洼县| 南投市| 尼勒克县| 威信县| 金溪县| 乌海市| 大厂| 汶川县| 绥棱县| 高雄市| 平南县| 瓦房店市| 大姚县| 瑞金市| 丰宁| 枣庄市| 东乌| 凉山| 靖西县| 万全县| 焦作市| 洛川县| 铁岭县| 光山县| 刚察县| 肇东市| 锡林浩特市| 如东县| 潮安县| 牟定县| 东方市| 吴堡县| 彰化县|