黃恭偉,倪受春,汪先兵,鄧景泉,王 偉
?
S7-1200 PLC結(jié)構(gòu)化編程的研究和應(yīng)用
黃恭偉1,倪受春1,汪先兵2,鄧景泉1,王偉1
摘要:PLC結(jié)構(gòu)化編程具有程序結(jié)構(gòu)清晰等優(yōu)點(diǎn),是復(fù)雜控制系統(tǒng)設(shè)計(jì)的首選方法。S7-1200 PLC是具有鮮明結(jié)構(gòu)化編程技術(shù)特點(diǎn)的新型小型PLC。針對S7-1200 PLC結(jié)構(gòu)化編程中,塊的運(yùn)用和編程過程復(fù)雜的問題,歸納分析了各種塊,概括了編程過程,并結(jié)合實(shí)例詳細(xì)闡述編程過程,對學(xué)習(xí)使用S7-1200 PLC結(jié)構(gòu)化編程,具有參考作用。
關(guān)鍵詞:S7-1200;塊;結(jié)構(gòu)化;編程過程
S7-1200系列PLC是西門子公司最新推出的一款小型PLC,相對于目前使用的S7-200系列PLC,具有鮮明的結(jié)構(gòu)化編程技術(shù)特點(diǎn),并有逐步取代S7-200的趨勢。
PLC程序設(shè)計(jì)一般有線性化編程和結(jié)構(gòu)化編程。結(jié)構(gòu)化編程具有程序結(jié)構(gòu)清晰,代碼執(zhí)行效率高,檢查維護(hù)升級方便等優(yōu)點(diǎn)。一般小型PLC,如S7-200,只有主程序、子程序和中斷程序,程序結(jié)構(gòu)較為簡單,多采用線性化編程編程。S7-1200 PLC程序結(jié)構(gòu)引進(jìn)了組織塊、功能、功能塊和數(shù)據(jù)塊等概念,對于復(fù)雜控制任務(wù)能采用結(jié)構(gòu)化編程。
S7-1200 PLC結(jié)構(gòu)化編程要涉及程序結(jié)構(gòu)中的許多復(fù)雜概念,控制任務(wù)分解及其程序代碼編寫要與各種邏輯塊和數(shù)據(jù)塊對應(yīng),因此雖然結(jié)構(gòu)化的程序有以上優(yōu)點(diǎn),但編程過程相對復(fù)雜。針對以上問題,本文在介紹了各種程序結(jié)構(gòu)的基礎(chǔ)上,概括了結(jié)構(gòu)化編程一般過程,并結(jié)合稱重傳感器的輸出值轉(zhuǎn)化工程值這一實(shí)例詳細(xì)闡述編程過程。
文章對于學(xué)習(xí)S7-1200 PLC結(jié)構(gòu)化編程的高校師生和企業(yè)工程技術(shù)人員有參考和借鑒作用。
1S7-1200 PLC程序結(jié)構(gòu)
S7-1200 PLC程序結(jié)構(gòu)采用與S7-300 PLC相同的塊的概念。其分為組織塊(OB)、功能(FC)、功能塊(FB)和數(shù)據(jù)塊(DB),其中數(shù)據(jù)塊分為全局訪問的數(shù)據(jù)塊,又稱共享數(shù)據(jù)塊,和特定功能塊FB相關(guān)的背景數(shù)據(jù)塊。
組織塊( OB) 是操作系統(tǒng)和用戶程序之間的接口,由操作系統(tǒng)調(diào)用。其中OB1主循環(huán)程序組織塊是必須創(chuàng)建的,PLC運(yùn)行后,就不斷循環(huán)執(zhí)行OB1。
功能( FC) /功能塊( FB)是用戶自己編的塊,類似子程序。FC和FB不能獨(dú)自運(yùn)行,通過調(diào)用在OB1發(fā)揮作用。
FB與FC 的根本區(qū)別在于功能塊FB 是具有“存儲功能”的塊,用背景數(shù)據(jù)塊DB 作為存儲器。傳遞給FB 的參數(shù)和靜態(tài)變量存在DB 中,臨時變量存在本地?cái)?shù)據(jù)堆棧中。FC 的臨時變量存儲在局域數(shù)據(jù)堆棧中,當(dāng)FC 執(zhí)行結(jié)束后,這些數(shù)據(jù)就丟失了。
背景DB 是和FB 相關(guān)聯(lián)的,創(chuàng)建背景DB 時,必須指定它所屬的FB 序號,而且該FB 必須已經(jīng)存在。在調(diào)用一個FB 的時候,也必須指明一個與之對應(yīng)的背景DB。
共享DB與背景DB 的主要區(qū)別在于,其存儲的數(shù)據(jù)所有OB、FC、FB都可以使用。而背景DB只有特定的FB才能使用。FC、FB、共享DB和背景DB相互關(guān)系如圖1所示。
圖1 FC、FB和DB相互關(guān)系
2線性化編程與結(jié)構(gòu)化編程
線性化編程是將整個程序放在循環(huán)控制組織塊OB1(主程序)中。這種方式的編程不涉及各種塊的概念,程序結(jié)構(gòu)和編程過程簡單,如圖2 a所示。這種編程方式適用于簡單控制任務(wù)使用。
當(dāng)控制任務(wù)較為復(fù)雜時,程序相應(yīng)很長。線性化思想編寫的程序,內(nèi)部結(jié)構(gòu)不清晰,不易與控制任務(wù)相對應(yīng),使程序調(diào)試、故障檢查難度加大;隨控制任務(wù)變化而進(jìn)行程序修改、代碼移植難以進(jìn)行;有些不經(jīng)常執(zhí)行的控制任務(wù),其代碼CPU仍然要掃描,執(zhí)行效率低。
結(jié)構(gòu)化編程將控制任務(wù)分解成小任務(wù),這些任務(wù)由相應(yīng)的程序塊(或稱邏輯塊),如FC、FB來表示。這些程序塊相對獨(dú)立,根據(jù)條件被OB1調(diào)用或別的程序塊調(diào)用,如圖2 b所示。這種編程方式特別適合復(fù)雜控制任務(wù)。
圖2 線性化編程與結(jié)構(gòu)化編程示意圖
3S7-1200 PLC結(jié)構(gòu)化編程過程
編程前,首先應(yīng)分析控制任務(wù)。對于順序控制的工藝過程,應(yīng)根據(jù)工作內(nèi)容之間的邏輯或時間關(guān)系劃分不同階段。對于無順序關(guān)系的,應(yīng)根據(jù)工作內(nèi)容,劃分工作模塊。對于重復(fù)出現(xiàn)的工作,可以編寫成功能(FC)。然后,根據(jù)各種塊的特點(diǎn)將上述劃分內(nèi)容與之對應(yīng),并畫出之間的關(guān)系圖。最后按照編程軟件使用規(guī)定編制程序,一般按以下過程進(jìn)行。
圖3 S7-1200 PLC結(jié)構(gòu)化編程過程
根據(jù)圖3可以看出S7-1200 PLC結(jié)構(gòu)化編程過程是比較復(fù)雜的。下面將結(jié)合過程控制中傳感器輸出值轉(zhuǎn)化這一實(shí)例,詳細(xì)闡述S7-1200 PLC結(jié)構(gòu)化編程過程。
3.1控制任務(wù)要求及分析
控制任務(wù)要求是將PLC讀取的兩個稱重傳感器的測量輸出值轉(zhuǎn)化為重量值,并根據(jù)轉(zhuǎn)化結(jié)果指示測量準(zhǔn)確與否。傳感器測量范圍是0-100Kg。當(dāng)接通啟動開關(guān)后,轉(zhuǎn)化開始。轉(zhuǎn)化的重量測量值低于50kg時認(rèn)為測量準(zhǔn)確,指示燈亮;超過50kg時則認(rèn)為測量不準(zhǔn)確,指示燈將以2HZ頻率閃爍。
控制任務(wù)中,兩個傳感器的輸出值轉(zhuǎn)化在方法上、形式上是一樣的,因此可以采用一個功能(FC1)來實(shí)現(xiàn)。由于轉(zhuǎn)化過程有重量值數(shù)據(jù)產(chǎn)生和保存,因此需要使用共享數(shù)據(jù)(DB)和功能塊(FB1)。運(yùn)行時,主程序OB1兩次調(diào)用FB1,F(xiàn)B1調(diào)用FC1程序,實(shí)現(xiàn)轉(zhuǎn)化和判斷任務(wù)。結(jié)構(gòu)如圖4所示。
圖4 程序結(jié)構(gòu)
3.2創(chuàng)建PLC變量
首先要創(chuàng)建PLC變量,將所需分配的I/O、M區(qū)域的變量填寫入PLC變量表中,如圖5所示。
圖5 PLC變量表
3.3創(chuàng)建功能FC1
創(chuàng)建FC首先根據(jù)要求定義本地變量即形參,如圖6所示,然后運(yùn)用相關(guān)指令編寫代碼,形式上實(shí)現(xiàn)移傳感器輸出值Value_in轉(zhuǎn)化為工程上的重量值Value_Out,如圖7所示。
圖6 FC1本地變量聲明表
圖7 FC1程序代碼
3.4創(chuàng)建共享數(shù)據(jù)塊DB
兩個傳感器輸出值轉(zhuǎn)化的重量值如果需要全局訪問的話,則需要創(chuàng)建共享數(shù)據(jù)塊DB,存放轉(zhuǎn)化的兩個重量值value_1和value_2,如圖8所示。
圖8 全局?jǐn)?shù)據(jù)塊變量聲明表
3.5創(chuàng)建功能塊FB1
重量值等數(shù)據(jù)在程序執(zhí)行結(jié)束后需要保存,因此需要創(chuàng)建功能塊FB1.在FB1中調(diào)用FC1,F(xiàn)C1執(zhí)行結(jié)束后,通過FB1的背景數(shù)據(jù)塊使相關(guān)數(shù)據(jù)得以保存。
創(chuàng)建FB1,首先進(jìn)行本地變量聲明,如圖9所示。系統(tǒng)自動根據(jù)臨時變量外的變量產(chǎn)生背景數(shù)據(jù)塊,以存放數(shù)據(jù)。然后編寫代碼。代碼內(nèi)容就是調(diào)用FC實(shí)現(xiàn)將一個稱重傳感器的輸出值轉(zhuǎn)化為重量值,并對測量準(zhǔn)確性進(jìn)行判斷,代碼如圖10所示。
圖9 FB1本地變量聲明表
圖10 FB1程序代碼
3.6創(chuàng)建循環(huán)組織塊OB1
OB1是用戶程序的主程序,是必須創(chuàng)建的。創(chuàng)建OB1,首先根據(jù)需要進(jìn)行本地臨時變量的聲明,如圖11所示。然后編寫程序代碼。通過兩次調(diào)用FB1,進(jìn)行實(shí)參向形參傳遞,實(shí)現(xiàn)兩個稱重傳感器的輸出值轉(zhuǎn)化為重量值,并根據(jù)輸出值大小判斷測量準(zhǔn)確與否,代碼如圖12所示。
圖11 OB1本地變量聲明表
圖12 OB1程序代碼
4結(jié)語
S7-1200PLC在程序結(jié)構(gòu)上采用了塊結(jié)構(gòu),使程序設(shè)計(jì)能夠使用結(jié)構(gòu)化編程,很合適復(fù)雜的自動化控制系統(tǒng)。由于塊的多樣性,掌握和實(shí)際運(yùn)用它進(jìn)行結(jié)構(gòu)化編程相對較難。對此,文章首先概括性介紹了各種塊及之間關(guān)系,分析了線性化編程和結(jié)構(gòu)化編程的不同點(diǎn),給出了結(jié)構(gòu)化編程的步驟,并結(jié)合具體實(shí)例,詳細(xì)清晰地?cái)⑹隽薙7-1200PLC結(jié)構(gòu)化編程過程,對以后學(xué)習(xí)和使用這種新型PLC有很好的指導(dǎo)和參考意義。
[參考文獻(xiàn)]
[1]西門子自動化與驅(qū)動集團(tuán).S7-1200可編程控制器系統(tǒng)手冊[M]. 北京:北京西門子(中國)有限公司,2009.
[2]西門子自動化與驅(qū)動集團(tuán). 深入淺出西門子S7-1200[M]. 北京:北京航空航天大學(xué)出版社, 2009.
[3]廖常初.S7-1200PLC編程及應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社出版社, 2009.
[4]馮博, 徐淑華.SIMATICS7-1200 可編程控制器技術(shù)特點(diǎn)[J]. 科技信息,2010(23): 120-121.
[5]王小曼.SIMATICS7-1200 可編程控制器的功能特點(diǎn)與應(yīng)用[J] .PLC&PA,2010(8): 33-36.
責(zé)任編輯:劉海濤
收稿日期:2015-04-20
基金項(xiàng)目:滁州學(xué)院校級教研項(xiàng)目(2012jyy014);安徽省振興計(jì)劃重大教學(xué)研究項(xiàng)目(2013zdjy150);滁州學(xué)院科研項(xiàng)目(2014GH24、2014GH17、2014GH23)
作者簡介:黃恭偉,滁州學(xué)院機(jī)械與汽車工程學(xué)院實(shí)驗(yàn)師,碩士;汪先兵,滁州學(xué)院電子與電氣工程學(xué)院(安徽 滁州 239000)。
中圖分類號:TP332.3
文獻(xiàn)標(biāo)識碼:A
文章編號:1673-1794(2015)05-0062-04