今天給大家?guī)?/span>如何使用三菱ST語言編寫一個完整的項目程序。
本文作者:陸馮
【本文如有不足之處,請各位高手指點】
眾所周知,目前類似于C語言的ST結(jié)構(gòu)化文本語言,已經(jīng)成為了目前工控行業(yè)PLC編程的主流發(fā)展趨勢。目前,三菱、西門子、施耐德等各大PLC廠商的編程軟件,包括國產(chǎn)PLC所采用的CODESYS軟件,這些編程開發(fā)平臺均支持ST結(jié)構(gòu)化文本語言。例如:西門子的SCL、三菱的ST等等。
當然,各家之間只是叫法不一樣,但是本質(zhì)上都是一樣的。各家PLC廠商的ST結(jié)構(gòu)化文本語言和C語言非常類似,并且符合IEC-61131-3國際電工委員會規(guī)定的標準,像定時器、計數(shù)器這些軟元件,都有標準的數(shù)據(jù)結(jié)構(gòu)和形式。因此,ST結(jié)構(gòu)化文本語言,有著“支持跨平臺移植”的獨特能力,在它的面前,所有的PLC眾生平等,不再有品牌之分,只要寫一遍程序,就可以同時下載進入不同廠商生產(chǎn)的PLC,實現(xiàn)同樣的功能;另外,ST結(jié)構(gòu)化文本語言,也有著在“復雜數(shù)據(jù)運算處理”方面的天然優(yōu)勢。
那么,【西門子的SCL語言】或者【三菱的ST語言】好學嗎?難嗎?好用嗎?為了回答這些問題,我特意今天給大家寫出這樣一篇文章,以FX3U小型PLC控制分揀設(shè)備為例,詳細闡述三菱ST語言的在項目中的使用方法,并對程序進行詳細的解析。
(設(shè)備總體視圖)
正文開始:
內(nèi)容目錄 |
一、程序架構(gòu) |
二、詳細程序解釋 |
(注意:本文中全部程序是面向智控教育新北校區(qū)的物料分揀設(shè)備所編寫的,不適用于世界上任何其他設(shè)備) |
首先我們明確一點,我們要做的,是讓這個設(shè)備安全、正確、高效地運作起來。這是我們的唯一目的!那么為了這個目的去進行PLC編程調(diào)試。一個好的電氣工程師編寫出來的程序,應(yīng)當具有:安全性、正確性、高效性、移植性和擴展性。PLC程序其實就是人的意志的延伸,你的思維和意識基本決定了這臺設(shè)備是個傻瓜,還是聰慧過人,當然,這個世界上不可能有完美的程序…….
一、程序架構(gòu)
為了我們的設(shè)備能夠正常運行,我們將程序分為以下幾個部分:
IO映射程序:
負責PLC輸入輸出虛擬地址與實際地址的映射。這樣的做法,可有效降低PLC某個觸點在損壞后,現(xiàn)場維修人員的工作量;并且,我們在本文第二章中,將詳細講解如何借助IO映射實現(xiàn)暫停和設(shè)備定時停機功能。
手動程序:
負責在設(shè)備進入手動狀態(tài)后,對各個執(zhí)行機構(gòu)的手動操縱。
自動程序部分又分為6個小部分:
1.復位程序:
負責執(zhí)行設(shè)備的復位,并對設(shè)備復位完成情況進行判斷。
2.急停程序:
負責執(zhí)行設(shè)備的緊急停止,該程序在被調(diào)用后,設(shè)備將無條件立即停止運行,所有機構(gòu)停止運動,并保持當前位置不動,等待用戶確認后,按下“復位按鈕”進行設(shè)備復位。
3.暫停程序:
負責設(shè)備的暫時停止,該程序在被調(diào)用后,設(shè)備將無條件立即停止運行,所有機構(gòu)停止運動,并保持當前位置不動,等待用戶按下“啟動按鈕”進行重新啟動,設(shè)備將繼續(xù)去執(zhí)行沒有完成的任務(wù),接著暫停前的流程繼續(xù)正常運行。
4.預(yù)停程序:
負責執(zhí)行設(shè)備的預(yù)先停止,該程序在被調(diào)用后,設(shè)備將在搬運完一個工件,也就是完成一個周期的順序動作后立即停止運行,所有機構(gòu)停止運動,并保持當前位置不動,等待用戶確認后,按下“復位按鈕”進行設(shè)備復位。
5.統(tǒng)計程序:
負責設(shè)備的完成工件數(shù)量的計數(shù),并將數(shù)據(jù)存儲到對應(yīng)的數(shù)據(jù)寄存器中;同時為我們這套系統(tǒng)的1分鐘工件完成趨勢曲線提供參照數(shù)據(jù)。
6.順控程序:
作為承載和配合以上4個子功能程序的主體,它負責對設(shè)備各個狀態(tài)下的機構(gòu)控制,但是也是最好寫、行數(shù)最多的程序。
二.詳細程序解釋
1.實際輸入信號X的全局標簽建立
在全局標簽中,建立類別為“全局標簽-變量”,并設(shè)置對應(yīng)的“標簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件X的編號,GXworks2軟件會自動調(diào)出對應(yīng)的X輸入軟元件地址。
2.實際輸出信號Y的全局標簽建立
在全局標簽中,建立類別為“全局標簽-變量”,并設(shè)置對應(yīng)的“標簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件Y的編號,GXworks2軟件會自動調(diào)出對應(yīng)的Y輸出軟元件地址。
3.IO映射數(shù)據(jù)的全局標簽建立
在全局標簽中,建立類別為“全局標簽-變量”,并設(shè)置對應(yīng)的“標簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件M的編號,GXworks2軟件會自動調(diào)出對應(yīng)的M輔助繼電器的軟元件地址。
注意:在ST語言的全局標簽建立過程中,可以不指定絕對地址,但是我們?yōu)榱朔奖?span id="7cv38ze8gk" class="candidate-entity-word" data-gid="222549">上位機HMI從PLC中讀取各個信號的數(shù)據(jù),要進行絕對地址指定,否則程序就會多出一個子程序部分,用這個子程序把數(shù)據(jù)傳到絕對地址中,用來對監(jiān)控信號的抓取操作,這樣就不可取了,還不如直接在這里指定。
4.開關(guān)量數(shù)據(jù)(0/1標志位)的全局標簽建立
在全局標簽中,建立類別為“全局標簽-變量”,并設(shè)置對應(yīng)的“標簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件M的編號,GXworks2軟件會自動調(diào)出對應(yīng)的M輔助繼電器的軟元件地址。
注意:這些“0/1標志位”的建立,是為了ST語言程序在設(shè)備動作中,存儲設(shè)備的動作完成信號、物料判別信號、系統(tǒng)中斷信號、下一步動作許可信號等程序數(shù)據(jù)。
5.數(shù)字量數(shù)據(jù)(“字”數(shù)據(jù)類型狀態(tài)存儲器)的全局標簽建立
在全局標簽中,建立類別為“全局標簽-變量”,并設(shè)置對應(yīng)的“標簽名”,數(shù)據(jù)類型選擇為“Word”(“字”數(shù)據(jù)類型),并指定輸入軟元件D的編號,GXworks2軟件會自動調(diào)出對應(yīng)的D數(shù)據(jù)寄存器的軟元件地址。
注意:這些“字”數(shù)據(jù)類型狀態(tài)存儲器的建立,是為了ST語言程序在設(shè)備動作中,存儲設(shè)備的狀態(tài)信號、完成個數(shù)、周期數(shù)量統(tǒng)計等程序數(shù)據(jù)。
6.HMI交互數(shù)據(jù)的全局標簽建立
在全局標簽中,建立類別為“全局標簽-變量”,并設(shè)置對應(yīng)的“標簽名”,數(shù)據(jù)類型選擇為“Bit”(位數(shù)據(jù)類型),并指定輸入軟元件M的編號,GXworks2軟件會自動調(diào)出對應(yīng)的M輔助繼電器的軟元件地址。
注意:這些“HMI交互數(shù)據(jù)”的建立,是為了PLC與上位機HMI之間的信號交互,主要是操作按鈕,也是這臺設(shè)備實現(xiàn)“人機交互”的關(guān)鍵一步。
7.IO映射、設(shè)備暫停程序的編寫
將實際輸入X軟元件的狀態(tài),通過賦值語句傳遞到PLC內(nèi)部我們建立的“I映射數(shù)據(jù)”;將PLC內(nèi)部的“O映射數(shù)據(jù)”通過賦值語句傳遞到實際輸出Y軟元件。
注意:我們在“輸出映射”程序段中,IF語句的執(zhí)行條件被設(shè)為“暫停標志”的不得電狀態(tài),如果我們將“暫停標志”設(shè)置為1,設(shè)備將不再進行輸出信號的數(shù)據(jù)更新,PLC所有實際輸出軟元件Y,將保持“暫停標志”為1前的狀態(tài),保持當前位置不動,從而實現(xiàn)設(shè)備暫停的功能。
PS:當然我們可以使用“級聯(lián)方式”對時間繼電器編程,自由設(shè)置一段時間,當時間到了之后,將“暫停標志”設(shè)置為1,設(shè)備將不再進行輸出信號的數(shù)據(jù)更新,從而實現(xiàn)“設(shè)備的定時停機”。當然,這只是IO映射程序的一種特殊用法,希望能幫助到大家。
8.初始化程序的編寫
當設(shè)備上電時,所有輸出全部復位,為設(shè)備運行做好準備。
9.手動程序的編寫
當設(shè)備處于手動狀態(tài)時,上位機HMI交互數(shù)據(jù)(也就是觸摸屏上的按鈕),將分別控制每個執(zhí)行機構(gòu)動作,實現(xiàn)對設(shè)備的手動操縱。
10.復位程序的編寫
當設(shè)備處于自動狀態(tài),并按下復位按鈕時,系統(tǒng)狀態(tài)將置為2,系統(tǒng)執(zhí)行復位,在滿足所有復位條件(所有機構(gòu)的復位信號傳感器得電)的情況下,將證明系統(tǒng)復位已經(jīng)完成,系統(tǒng)狀態(tài)將變?yōu)?,設(shè)備進入等待啟動狀態(tài)。
11.順控程序的編寫
主要是,一步一步走下去,正確地操作狀態(tài)的轉(zhuǎn)移和標志位的更新,就可以完成任務(wù)了。我們的順序控制程序,主要分為3個部分,每個部分之間,依靠標志位進行信息的交換,這些交換的數(shù)據(jù)內(nèi)容有很多,比如:設(shè)備的動作完成信號、物料判別信號、系統(tǒng)中斷信號、下一步動作許可信號等。
順序控制程序,需要把“0/1標志位”和“字”數(shù)據(jù)類型狀態(tài)存儲器的配合使用,爛熟于心,因為順控程序承載的是整個程序的主體,其他所有的功能都是在這個主體上建立的,這個程序要是寫不好,基本什么都沒戲了。
12.急停、預(yù)停程序的編寫
當接收到“急?!被蛘摺邦A(yù)先停止”信號時,系統(tǒng)將判斷在何時,將順序控制程序的“字”數(shù)據(jù)類型狀態(tài)存儲器置為“1”,讓設(shè)備進入停止狀態(tài),設(shè)備將從順序控制的自動運行狀態(tài)中跳出,不再繼續(xù)向下執(zhí)行,PLC所有輸出軟元件保持當前狀態(tài)不動作,0依舊為0、1依舊為1,所有機構(gòu)不會再動,由此可以實現(xiàn)設(shè)備的安全停止,防止對人員的二次傷害。
13.統(tǒng)計程序的編寫
根據(jù)程序中抓取到的信號標志位,并配合“字”數(shù)據(jù)類型狀態(tài)存儲器,實現(xiàn)對物料分揀總數(shù)量的統(tǒng)計;通過定時器T20定時,每隔1分鐘對“一分鐘統(tǒng)計個數(shù)產(chǎn)能”清零,為上位機HMI的統(tǒng)計趨勢曲線提供數(shù)據(jù)依據(jù)。
到這里,我們的“智控分揀設(shè)備ST語言程序”就全部解釋完了。
如果大家對三菱ST語言感興趣,可以來常州智控教育學習,這里有配套完整、功能先進的教學設(shè)備,有認真負責、一絲不茍的專業(yè)老師,能夠幫助您在工控之路上,走得更快、更遠?。?!
]]>