如何使用三菱ST語(yǔ)言編寫一個(gè)完整的項(xiàng)目程序,照著寫就能成功!
哈嘍,大家上午好呀!
今天給大家?guī)?strong>如何使用三菱ST語(yǔ)言編寫一個(gè)完整的項(xiàng)目程序。
本文作者:陸馮
【本文如有不足之處,請(qǐng)各位高手指點(diǎn)】
眾所周知,目前類似于C語(yǔ)言的ST結(jié)構(gòu)化文本語(yǔ)言,已經(jīng)成為了目前工控行業(yè)PLC編程的主流發(fā)展趨勢(shì)。目前,三菱、西門子、施耐德等各大PLC廠商的編程軟件,包括國(guó)產(chǎn)PLC所采用的CODESYS軟件,這些編程開發(fā)平臺(tái)均支持ST結(jié)構(gòu)化文本語(yǔ)言。例如:西門子的SCL、三菱的ST等等。

當(dāng)然,各家之間只是叫法不一樣,但是本質(zhì)上都是一樣的。各家PLC廠商的ST結(jié)構(gòu)化文本語(yǔ)言和C語(yǔ)言非常類似,并且符合IEC-61131-3國(guó)際電工委員會(huì)規(guī)定的標(biāo)準(zhǔn),像定時(shí)器、計(jì)數(shù)器這些軟元件,都有標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)和形式。因此,ST結(jié)構(gòu)化文本語(yǔ)言,有著“支持跨平臺(tái)移植”的獨(dú)特能力,在它的面前,所有的PLC眾生平等,不再有品牌之分,只要寫一遍程序,就可以同時(shí)下載進(jìn)入不同廠商生產(chǎn)的PLC,實(shí)現(xiàn)同樣的功能;另外,ST結(jié)構(gòu)化文本語(yǔ)言,也有著在“復(fù)雜數(shù)據(jù)運(yùn)算處理”方面的天然優(yōu)勢(shì)。
那么,【西門子的SCL語(yǔ)言】或者【三菱的ST語(yǔ)言】好學(xué)嗎?難嗎?好用嗎?為了回答這些問題,我特意今天給大家寫出這樣一篇文章,以FX3U小型PLC控制分揀設(shè)備為例,詳細(xì)闡述三菱ST語(yǔ)言的在項(xiàng)目中的使用方法,并對(duì)程序進(jìn)行詳細(xì)的解析。

(設(shè)備總體視圖)
正文開始:

首先我們明確一點(diǎn),我們要做的,是讓這個(gè)設(shè)備安全、正確、高效地運(yùn)作起來。這是我們的唯一目的!那么為了這個(gè)目的去進(jìn)行PLC編程調(diào)試。一個(gè)好的電氣工程師編寫出來的程序,應(yīng)當(dāng)具有:安全性、正確性、高效性、移植性和擴(kuò)展性。PLC程序其實(shí)就是人的意志的延伸,你的思維和意識(shí)基本決定了這臺(tái)設(shè)備是個(gè)傻瓜,還是聰慧過人,當(dāng)然,這個(gè)世界上不可能有完美的程序.......
一、程序架構(gòu)
為了我們的設(shè)備能夠正常運(yùn)行,我們將程序分為以下幾個(gè)部分:

IO映射程序:
負(fù)責(zé)PLC輸入輸出虛擬地址與實(shí)際地址的映射。這樣的做法,可有效降低PLC某個(gè)觸點(diǎn)在損壞后,現(xiàn)場(chǎng)維修人員的工作量;并且,我們?cè)诒疚牡诙轮校瑢⒃敿?xì)講解如何借助IO映射實(shí)現(xiàn)暫停和設(shè)備定時(shí)停機(jī)功能。
手動(dòng)程序:
負(fù)責(zé)在設(shè)備進(jìn)入手動(dòng)狀態(tài)后,對(duì)各個(gè)執(zhí)行機(jī)構(gòu)的手動(dòng)操縱。
自動(dòng)程序部分又分為6個(gè)小部分:
1.復(fù)位程序:
負(fù)責(zé)執(zhí)行設(shè)備的復(fù)位,并對(duì)設(shè)備復(fù)位完成情況進(jìn)行判斷。
2.急停程序:
負(fù)責(zé)執(zhí)行設(shè)備的緊急停止,該程序在被調(diào)用后,設(shè)備將無(wú)條件立即停止運(yùn)行,所有機(jī)構(gòu)停止運(yùn)動(dòng),并保持當(dāng)前位置不動(dòng),等待用戶確認(rèn)后,按下“復(fù)位按鈕”進(jìn)行設(shè)備復(fù)位。
3.暫停程序:
負(fù)責(zé)設(shè)備的暫時(shí)停止,該程序在被調(diào)用后,設(shè)備將無(wú)條件立即停止運(yùn)行,所有機(jī)構(gòu)停止運(yùn)動(dòng),并保持當(dāng)前位置不動(dòng),等待用戶按下“啟動(dòng)按鈕”進(jìn)行重新啟動(dòng),設(shè)備將繼續(xù)去執(zhí)行沒有完成的任務(wù),接著暫停前的流程繼續(xù)正常運(yùn)行。
4.預(yù)停程序:
負(fù)責(zé)執(zhí)行設(shè)備的預(yù)先停止,該程序在被調(diào)用后,設(shè)備將在搬運(yùn)完一個(gè)工件,也就是完成一個(gè)周期的順序動(dòng)作后立即停止運(yùn)行,所有機(jī)構(gòu)停止運(yùn)動(dòng),并保持當(dāng)前位置不動(dòng),等待用戶確認(rèn)后,按下“復(fù)位按鈕”進(jìn)行設(shè)備復(fù)位。
5.統(tǒng)計(jì)程序:
負(fù)責(zé)設(shè)備的完成工件數(shù)量的計(jì)數(shù),并將數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)的數(shù)據(jù)寄存器中;同時(shí)為我們這套系統(tǒng)的1分鐘工件完成趨勢(shì)曲線提供參照數(shù)據(jù)。
6.順控程序:
作為承載和配合以上4個(gè)子功能程序的主體,它負(fù)責(zé)對(duì)設(shè)備各個(gè)狀態(tài)下的機(jī)構(gòu)控制,但是也是最好寫、行數(shù)最多的程序。
二.詳細(xì)程序解釋
1.實(shí)際輸入信號(hào)X的全局標(biāo)簽建立

在全局標(biāo)簽中,建立類別為“全局標(biāo)簽-變量”,并設(shè)置對(duì)應(yīng)的“標(biāo)簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件X的編號(hào),GXworks2軟件會(huì)自動(dòng)調(diào)出對(duì)應(yīng)的X輸入軟元件地址。
2.實(shí)際輸出信號(hào)Y的全局標(biāo)簽建立

在全局標(biāo)簽中,建立類別為“全局標(biāo)簽-變量”,并設(shè)置對(duì)應(yīng)的“標(biāo)簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件Y的編號(hào),GXworks2軟件會(huì)自動(dòng)調(diào)出對(duì)應(yīng)的Y輸出軟元件地址。
3.IO映射數(shù)據(jù)的全局標(biāo)簽建立

在全局標(biāo)簽中,建立類別為“全局標(biāo)簽-變量”,并設(shè)置對(duì)應(yīng)的“標(biāo)簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件M的編號(hào),GXworks2軟件會(huì)自動(dòng)調(diào)出對(duì)應(yīng)的M輔助繼電器的軟元件地址。
注意:在ST語(yǔ)言的全局標(biāo)簽建立過程中,可以不指定絕對(duì)地址,但是我們?yōu)榱朔奖闵衔粰C(jī)HMI從PLC中讀取各個(gè)信號(hào)的數(shù)據(jù),要進(jìn)行絕對(duì)地址指定,否則程序就會(huì)多出一個(gè)子程序部分,用這個(gè)子程序把數(shù)據(jù)傳到絕對(duì)地址中,用來對(duì)監(jiān)控信號(hào)的抓取操作,這樣就不可取了,還不如直接在這里指定。
4.開關(guān)量數(shù)據(jù)(0/1標(biāo)志位)的全局標(biāo)簽建立

在全局標(biāo)簽中,建立類別為“全局標(biāo)簽-變量”,并設(shè)置對(duì)應(yīng)的“標(biāo)簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件M的編號(hào),GXworks2軟件會(huì)自動(dòng)調(diào)出對(duì)應(yīng)的M輔助繼電器的軟元件地址。
注意:這些“0/1標(biāo)志位”的建立,是為了ST語(yǔ)言程序在設(shè)備動(dòng)作中,存儲(chǔ)設(shè)備的動(dòng)作完成信號(hào)、物料判別信號(hào)、系統(tǒng)中斷信號(hào)、下一步動(dòng)作許可信號(hào)等程序數(shù)據(jù)。
5.數(shù)字量數(shù)據(jù)(“字”數(shù)據(jù)類型狀態(tài)存儲(chǔ)器)的全局標(biāo)簽建立

在全局標(biāo)簽中,建立類別為“全局標(biāo)簽-變量”,并設(shè)置對(duì)應(yīng)的“標(biāo)簽名”,數(shù)據(jù)類型選擇為“Word”(“字”數(shù)據(jù)類型),并指定輸入軟元件D的編號(hào),GXworks2軟件會(huì)自動(dòng)調(diào)出對(duì)應(yīng)的D數(shù)據(jù)寄存器的軟元件地址。
注意:這些“字”數(shù)據(jù)類型狀態(tài)存儲(chǔ)器的建立,是為了ST語(yǔ)言程序在設(shè)備動(dòng)作中,存儲(chǔ)設(shè)備的狀態(tài)信號(hào)、完成個(gè)數(shù)、周期數(shù)量統(tǒng)計(jì)等程序數(shù)據(jù)。
6.HMI交互數(shù)據(jù)的全局標(biāo)簽建立

在全局標(biāo)簽中,建立類別為“全局標(biāo)簽-變量”,并設(shè)置對(duì)應(yīng)的“標(biāo)簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件M的編號(hào),GXworks2軟件會(huì)自動(dòng)調(diào)出對(duì)應(yīng)的M輔助繼電器的軟元件地址。
注意:這些“HMI交互數(shù)據(jù)”的建立,是為了PLC與上位機(jī)HMI之間的信號(hào)交互,主要是操作按鈕,也是這臺(tái)設(shè)備實(shí)現(xiàn)“人機(jī)交互”的關(guān)鍵一步。
7.IO映射、設(shè)備暫停程序的編寫

將實(shí)際輸入X軟元件的狀態(tài),通過賦值語(yǔ)句傳遞到PLC內(nèi)部我們建立的“I映射數(shù)據(jù)”;將PLC內(nèi)部的“O映射數(shù)據(jù)”通過賦值語(yǔ)句傳遞到實(shí)際輸出Y軟元件。
注意:我們?cè)凇拜敵鲇成洹背绦蚨沃?,IF語(yǔ)句的執(zhí)行條件被設(shè)為“暫停標(biāo)志”的不得電狀態(tài),如果我們將“暫停標(biāo)志”設(shè)置為1,設(shè)備將不再進(jìn)行輸出信號(hào)的數(shù)據(jù)更新,PLC所有實(shí)際輸出軟元件Y,將保持“暫停標(biāo)志”為1前的狀態(tài),保持當(dāng)前位置不動(dòng),從而實(shí)現(xiàn)設(shè)備暫停的功能。
PS:當(dāng)然我們可以使用“級(jí)聯(lián)方式”對(duì)時(shí)間繼電器編程,自由設(shè)置一段時(shí)間,當(dāng)時(shí)間到了之后,將“暫停標(biāo)志”設(shè)置為1,設(shè)備將不再進(jìn)行輸出信號(hào)的數(shù)據(jù)更新,從而實(shí)現(xiàn)“設(shè)備的定時(shí)停機(jī)”。當(dāng)然,這只是IO映射程序的一種特殊用法,希望能幫助到大家。
8.初始化程序的編寫

當(dāng)設(shè)備上電時(shí),所有輸出全部復(fù)位,為設(shè)備運(yùn)行做好準(zhǔn)備。
9.首動(dòng)程序的編寫

當(dāng)設(shè)備處于手動(dòng)狀態(tài)時(shí),上位機(jī)HMI交互數(shù)據(jù)(也就是觸摸屏上的按鈕),將分別控制每個(gè)執(zhí)行機(jī)構(gòu)動(dòng)作,實(shí)現(xiàn)對(duì)設(shè)備的手動(dòng)操縱。
10.復(fù)位程序的編寫

當(dāng)設(shè)備處于自動(dòng)狀態(tài),并按下復(fù)位按鈕時(shí),系統(tǒng)狀態(tài)將置為2,系統(tǒng)執(zhí)行復(fù)位,在滿足所有復(fù)位條件(所有機(jī)構(gòu)的復(fù)位信號(hào)傳感器得電)的情況下,將證明系統(tǒng)復(fù)位已經(jīng)完成,系統(tǒng)狀態(tài)將變?yōu)?,設(shè)備進(jìn)入等待啟動(dòng)狀態(tài)。
11.順控程序的編寫

主要是,一步一步走下去,正確地操作狀態(tài)的轉(zhuǎn)移和標(biāo)志位的更新,就可以完成任務(wù)了。我們的順序控制程序,主要分為3個(gè)部分,每個(gè)部分之間,依靠標(biāo)志位進(jìn)行信息的交換,這些交換的數(shù)據(jù)內(nèi)容有很多,比如:設(shè)備的動(dòng)作完成信號(hào)、物料判別信號(hào)、系統(tǒng)中斷信號(hào)、下一步動(dòng)作許可信號(hào)等。
順序控制程序,需要把“0/1標(biāo)志位”和“字”數(shù)據(jù)類型狀態(tài)存儲(chǔ)器的配合使用,爛熟于心,因?yàn)轫樋爻绦虺休d的是整個(gè)程序的主體,其他所有的功能都是在這個(gè)主體上建立的,這個(gè)程序要是寫不好,基本什么都沒戲了。
12.急停、預(yù)停程序的編寫

當(dāng)接收到“急停”或者“預(yù)先停止”信號(hào)時(shí),系統(tǒng)將判斷在何時(shí),將順序控制程序的“字”數(shù)據(jù)類型狀態(tài)存儲(chǔ)器置為“1”,讓設(shè)備進(jìn)入停止?fàn)顟B(tài),設(shè)備將從順序控制的自動(dòng)運(yùn)行狀態(tài)中跳出,不再繼續(xù)向下執(zhí)行,PLC所有輸出軟元件保持當(dāng)前狀態(tài)不動(dòng)作,0依舊為0、1依舊為1,所有機(jī)構(gòu)不會(huì)再動(dòng),由此可以實(shí)現(xiàn)設(shè)備的安全停止,防止對(duì)人員的二次傷害。
13.統(tǒng)計(jì)程序的編寫

根據(jù)程序中抓取到的信號(hào)標(biāo)志位,并配合“字”數(shù)據(jù)類型狀態(tài)存儲(chǔ)器,實(shí)現(xiàn)對(duì)物料分揀總數(shù)量的統(tǒng)計(jì);通過定時(shí)器T20定時(shí),每隔1分鐘對(duì)“一分鐘統(tǒng)計(jì)個(gè)數(shù)產(chǎn)能”清零,為上位機(jī)HMI的統(tǒng)計(jì)趨勢(shì)曲線提供數(shù)據(jù)依據(jù)。
到這里,我們的“智控分揀設(shè)備ST語(yǔ)言程序”就全部解釋完了。
如果大家對(duì)三菱ST語(yǔ)言感興趣,可以來常州智控教育學(xué)習(xí),這里有配套完整、功能先進(jìn)的教學(xué)設(shè)備,有認(rèn)真負(fù)責(zé)、一絲不茍的專業(yè)老師,能夠幫助您在工控之路上,走得更快、更遠(yuǎn)?。?!