S7-1200 PLC原理及應(yīng)用基礎(chǔ) 課件 第4章 S7-1200 PLC用戶程序結(jié)構(gòu)_第1頁
S7-1200 PLC原理及應(yīng)用基礎(chǔ) 課件 第4章 S7-1200 PLC用戶程序結(jié)構(gòu)_第2頁
S7-1200 PLC原理及應(yīng)用基礎(chǔ) 課件 第4章 S7-1200 PLC用戶程序結(jié)構(gòu)_第3頁
S7-1200 PLC原理及應(yīng)用基礎(chǔ) 課件 第4章 S7-1200 PLC用戶程序結(jié)構(gòu)_第4頁
S7-1200 PLC原理及應(yīng)用基礎(chǔ) 課件 第4章 S7-1200 PLC用戶程序結(jié)構(gòu)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第4章S7-1200PLC用戶程序結(jié)構(gòu)摘要ABSTRACTS7-1200的程序結(jié)構(gòu)可分為線性化結(jié)構(gòu)和模塊化結(jié)構(gòu)兩類,主要以“塊”的形式管理用戶程序和數(shù)據(jù)。在TIA博途編程環(huán)境中,通過在程序塊內(nèi)部或程序塊之間的調(diào)用,實現(xiàn)程序運行與控制任務(wù)。本章主要介紹S7-1200中的組織塊、函數(shù)、函數(shù)塊、數(shù)據(jù)塊等,學(xué)習本章內(nèi)容可以幫助用戶創(chuàng)建高效、實用的工程程序。本章學(xué)習目標知識目標①了解S7-1200PLC常見的用戶程序結(jié)構(gòu)。②熟悉S7-1200PLC用戶程序中的各種塊及其應(yīng)用特點。③熟悉和掌握函數(shù)和函數(shù)塊的特點和應(yīng)用方法。④了解用戶程序中塊調(diào)用的工作機制。⑤掌握數(shù)據(jù)塊的創(chuàng)建、使用方法以及屬性設(shè)置等。本章學(xué)習目標能力目標①能夠根據(jù)控制要求合理設(shè)計用戶程序結(jié)構(gòu)。②初步掌握函數(shù)和函數(shù)塊的生成和設(shè)計,并在實際應(yīng)用中靈活選用。③能夠在實際應(yīng)用中靈活選用組織塊。④能夠生成數(shù)據(jù)塊并合理應(yīng)用。⑤能夠根據(jù)控制要求合理選擇多重背景數(shù)據(jù)塊組織程序結(jié)構(gòu)。本章學(xué)習目標素質(zhì)目標①培養(yǎng)勇于創(chuàng)新、掌握先進控制技術(shù)的責任感和使命感。②樹立行業(yè)規(guī)范與標準意識,培養(yǎng)嚴謹求實的精神。③樹立獨立思考、辯證分析的意識。④通過項目任務(wù)實施,培養(yǎng)團隊協(xié)作共同體意識。1目錄CONTENTS程序結(jié)構(gòu)簡介2函數(shù)與函數(shù)塊組織塊43數(shù)據(jù)塊5交叉引用表與程序信息6職業(yè)技能訓(xùn)練4一、程序結(jié)構(gòu)簡介S7-1200的程序結(jié)構(gòu)可分為線性化結(jié)構(gòu)和模塊化結(jié)構(gòu)兩類,主要以“塊”的形式管理用戶程序和數(shù)據(jù)。在TIA博途編程環(huán)境中,通過在程序塊內(nèi)部或程序塊之間的調(diào)用,實現(xiàn)程序運行與控制任務(wù)。

將一個相對復(fù)雜的任務(wù)分解為“塊”,各種“塊”各司其職,通過對塊的組織共同完成控制任務(wù);就像我們通過團隊方式完成任務(wù)時,每個人都有職責和分工,通過團結(jié)協(xié)作才能取得最后的成功。采用塊結(jié)構(gòu)的程序組織形式顯著地增加了PLC程序的組織透明性、可理解性和易維護性。1.塊的類型S7-1200PLC的塊包括組織塊(OB)、函數(shù)(FC)、函數(shù)塊(FB)和數(shù)據(jù)塊(DB),而數(shù)據(jù)塊又包括全局數(shù)據(jù)塊和背景數(shù)據(jù)塊。其中的OB、FB、FC都包含程序,統(tǒng)稱為代碼(code)塊。代碼塊的個數(shù)沒有限制,但是受到存儲器容量的限制。塊簡要描述組織塊(OB)操作系統(tǒng)與用戶程序的接口,決定用戶程序的結(jié)構(gòu)函數(shù)塊(FB)

用戶編寫的包含經(jīng)常使用的功能的子程序,有專用的背景數(shù)據(jù)塊

函數(shù)(FC)

用戶編寫的包含經(jīng)常使用的功能的子程序,沒有專用的背景數(shù)據(jù)塊

背景數(shù)據(jù)塊(DB)

用于保存FB的輸入變量、輸出變量和靜態(tài)變量,其數(shù)據(jù)在編譯時自動生成

全局數(shù)據(jù)塊(DB)

存儲用戶數(shù)據(jù)的數(shù)據(jù)區(qū)域,供所有的代碼塊共享

1.塊的類型

不嚴謹?shù)恼f,組織塊(OB)可以相當于主程序,函數(shù)塊(FB)和函數(shù)(FC)可以相當于子程序,數(shù)據(jù)塊(DB)可以相當于數(shù)據(jù)存儲區(qū)。

(1)組織塊(OrganizationBlock,OB)是操作系統(tǒng)與用戶程序之間的接口,組織塊由操作系統(tǒng)調(diào)用,用于處理啟動行為、循環(huán)程序執(zhí)行、中斷驅(qū)動的程序執(zhí)行和錯誤處理事件。組織塊控制用戶程序的執(zhí)行,CPU中的特定事件可觸發(fā)組織塊的執(zhí)行,其它組織塊、功能或功能塊不能調(diào)用組織塊。

(2)函數(shù)塊(FunctionBlock,F(xiàn)B)也可稱為功能塊。函數(shù)塊是用戶編寫的包含經(jīng)常使用的功能的子程序。由于運行過程中需要調(diào)用各種參數(shù),因此產(chǎn)生了背景數(shù)據(jù)塊DB,所以需要用到的數(shù)據(jù)就存儲在了背景數(shù)據(jù)塊DB中。即使結(jié)束調(diào)用,數(shù)據(jù)也不丟失。

(3)函數(shù)(Function,F(xiàn)C)也可稱為功能。函數(shù)也是用戶編寫的包含經(jīng)常使用的功能的子程序。與FB的區(qū)別是,F(xiàn)C無專用的背景數(shù)據(jù)塊。FC是快速執(zhí)行的代碼塊,可用于完成標準的和可重復(fù)使用的操作,例如算術(shù)運算,或完成技術(shù)功能,例如使用位邏輯運算的控制。FC沒有固定的存儲區(qū),F(xiàn)C執(zhí)行結(jié)束后,其臨時變量中的數(shù)據(jù)將丟失。

(4)數(shù)據(jù)塊(DataBlock,DB)分為背景數(shù)據(jù)塊和全局數(shù)據(jù)塊兩種。背景數(shù)據(jù)塊是專門用于保存函數(shù)塊(FB)中的輸入變量、輸出變量和靜態(tài)變量的。其中的數(shù)據(jù)在編譯時自動生成。全局數(shù)據(jù)塊是一片存儲用戶數(shù)據(jù)的區(qū)域,供所有的代碼塊訪問。全局數(shù)據(jù)塊也被稱為共享數(shù)據(jù)塊。2.用戶程序結(jié)構(gòu)組織用戶可根據(jù)實際要求,選擇線性化結(jié)構(gòu)或模塊化結(jié)構(gòu)創(chuàng)建用戶程序:

線性程序按照順序逐條執(zhí)行用于自動化任務(wù)的所有指令。通常線性程序?qū)⑺兄噶畲a都放入循環(huán)執(zhí)行程序的OB(如OB1)中。

模塊化程序則調(diào)用可執(zhí)行特定任務(wù)的代碼塊(如FB、FC)。要創(chuàng)建模塊化結(jié)構(gòu)程序,需要將復(fù)雜的自動化任務(wù)分解為更小的次級任務(wù),每個代碼塊都為每個次級任務(wù)提供相應(yīng)的程序代碼段,通過從另一個塊調(diào)用其中的一個代碼塊來構(gòu)建程序。2.用戶程序結(jié)構(gòu)組織被調(diào)用的代碼塊又可以調(diào)用別的代碼塊,這種調(diào)用稱為嵌套調(diào)用,如圖所示。OB1是用戶程序的主程序(Main),使用時必須包含OB1。CPU操作系統(tǒng)會在每一個掃描周期,循環(huán)掃描執(zhí)行OB1中的程序,而對于FB或者FC需要在OB1中調(diào)用后,才會被CPU掃描執(zhí)行。在塊調(diào)用中,調(diào)用者可以是各種代碼塊,被調(diào)用的塊是OB之外的代碼塊。調(diào)用FB時需要為它指定一個背景數(shù)據(jù)塊。二、函數(shù)與函數(shù)塊1.函數(shù)FC及其應(yīng)用(1)函數(shù)FC簡介

函數(shù)(Function,F(xiàn)C)也可稱為功能,是不含存儲區(qū)的代碼塊,常用于對一組輸入值執(zhí)行特定運算,例如:可使用FC執(zhí)行標準運算和可重復(fù)使用的運算(例如數(shù)學(xué)計算)或者執(zhí)行工藝功能(如使用位邏輯運算執(zhí)行獨立的控制)。FC也可以在程序中的不同位置多次調(diào)用,簡化了對經(jīng)常重復(fù)發(fā)生的任務(wù)的編程。FC沒有相關(guān)的背景數(shù)據(jù)塊(DB),沒有可以存儲塊參數(shù)值的數(shù)據(jù)存儲器,因此,調(diào)用函數(shù)時,必須給所有形參分配實參。對于用于FC的臨時數(shù)據(jù),F(xiàn)C采用了局部數(shù)據(jù)堆棧,不保存臨時數(shù)據(jù)。要永久性存儲數(shù)據(jù),可將輸出值賦給全局存儲器位置,如M存儲器或全局數(shù)據(jù)塊DB。FC還支持無形參編程,用以優(yōu)化OB的程序結(jié)構(gòu),此時不需要任何接口參數(shù)。1.函數(shù)FC及其應(yīng)用(2)生成函數(shù)FC生成函數(shù)(FC)的步驟是:建立一個TIA博途項目,在項目視圖的項目樹中選中“已經(jīng)添加的設(shè)備”(如:PLC_1),雙擊“程序塊”下的“添加新塊”,即可彈出要插入塊的界面,選擇“函數(shù)(FC)”并為FC命名,點擊確定即可。(3)函數(shù)FC的應(yīng)用【實例4-1】用FC實現(xiàn)電機的起保停控制(實參編程與絕對調(diào)用方式)。

創(chuàng)建函數(shù)FC并命名為“電機起保停-絕對調(diào)用”,之后選擇編程語言(本例為LAD),最后單擊“確定”按鈕,將彈出函數(shù)的程序編輯器界面。在程序界面編寫控制程序。在TIA博途軟件項目視圖項目樹中,雙擊“Main[OB1]”,打開主程序塊。選中新創(chuàng)建的函數(shù)“電機起保停-絕對調(diào)用[FC1]”,并將其拖拽到程序編輯器中,如圖所示。1.函數(shù)FC及其應(yīng)用在實例4-1中,電機起保停程序在FC1中編寫,在OB1中調(diào)用;此程序也可以在OB1中編寫,實現(xiàn)的功能一樣。對于多臺相同控制功能的電機控制來說顯然靈活性不夠,需要多次編寫起保停程序段。1.函數(shù)FC及其應(yīng)用

【實例4-2】用FC實現(xiàn)電機的起保??刂疲ㄐ螀⒕幊膛c參數(shù)調(diào)用方式)。

創(chuàng)建函數(shù)的局部變量。將鼠標的光標放在FC2的程序區(qū)最上面的分隔條上,按住鼠標的左鍵往下拉動分隔條,上面是功能的界面(Interface)區(qū),如圖所示。函數(shù)FC的局部接口變量意義如下:1)Input(輸入?yún)?shù)):只讀,調(diào)用時將用戶程序數(shù)據(jù)傳遞到FC中。實參可以為常數(shù)。2)Output(輸出參數(shù)):讀寫,函數(shù)調(diào)用時將FC執(zhí)行結(jié)果傳遞到用戶程序中。實參不能為常數(shù)。3)InOut(輸入_輸出參數(shù)):在塊調(diào)用之前讀取輸入/輸出參數(shù)并在塊調(diào)用之后寫入。實參不能為常數(shù)。4)Temp(臨時數(shù)據(jù)):暫時保存在局部數(shù)據(jù)堆棧中的數(shù)據(jù)。5)Constant(常量)只讀,聲明常量符號名后,F(xiàn)C中可以使用符號名代替常量。6)Return中的Ret_Val(返回值),屬于輸出參數(shù)。1.函數(shù)FC及其應(yīng)用

【實例4-2】用FC實現(xiàn)電機的起保??刂疲ㄐ螀⒕幊膛c參數(shù)調(diào)用方式)。

在接口界面中創(chuàng)建局部變量,先選中Input,新建參數(shù)“Start”和“Stop”,數(shù)據(jù)類型“Bool”。再選中InOut,新建參數(shù)“Motor”,數(shù)據(jù)類型為“Bool”。然后使用用局部變量編寫控制程序。生成局部變量時,不需要指定存儲器地址;根據(jù)各變量的數(shù)據(jù)類型,程序編輯器自動地為所有局部變量指定存儲器地址。1.函數(shù)FC及其應(yīng)用

【實例4-2】用FC實現(xiàn)電機的起保停控制(形參編程與參數(shù)調(diào)用方式)。調(diào)用函數(shù)FC2。選中新創(chuàng)建的函數(shù)“電機起保停-參數(shù)調(diào)用[FC2]”,并將其拖拽到“Main[OB1]”程序編輯器中,并為形參指定實參。

如圖所示,在程序段2中調(diào)用了2次FC2。如果將整個項目下載到PLC中,就可以實現(xiàn)兩臺電機的“起保停”控制。通常,使用形參編程比較靈活,使用比較方便,特別對于重復(fù)功能的編程來說,僅需要在調(diào)用時改變實參即可,便于用戶閱讀及程序維護,而且能實現(xiàn)模塊化編程。1.函數(shù)FC及其應(yīng)用(4)專有技術(shù)保護單擊選中生成的FC,執(zhí)行菜單命令“編輯”→“專有技術(shù)保護”,在打開的對話框中輸入密碼和密碼的確認值,如圖所示。完成操作后則該FC被加密。說明:如果想要刪除或更改密碼,首先要把該代碼塊的程序編輯界面關(guān)閉,否則“編輯”菜單中沒有“專有技術(shù)保護”選項。關(guān)閉程序編輯界面后,用戶選擇“專有技術(shù)保護”選項,在出現(xiàn)的對話框中輸入原有的密碼后,可以修改或刪除密碼。2.函數(shù)塊FB及其應(yīng)用(4)專有技術(shù)保護單擊選中生成的FC,執(zhí)行菜單命令“編輯”→“專有技術(shù)保護”,在打開的對話框中輸入密碼和密碼的確認值,如圖所示。完成操作后則該FC被加密。說明:如果想要刪除或更改密碼,首先要把該代碼塊的程序編輯界面關(guān)閉,否則“編輯”菜單中沒有“專有技術(shù)保護”選項。關(guān)閉程序編輯界面后,用戶選擇“專有技術(shù)保護”選項,在出現(xiàn)的對話框中輸入原有的密碼后,可以修改或刪除密碼。2.函數(shù)塊FB及其應(yīng)用(1)函數(shù)塊FB簡介函數(shù)塊(FunctionBlock,F(xiàn)B)又稱為功能塊。FB的典型應(yīng)用是執(zhí)行不能在一個掃描周期結(jié)束的操作。調(diào)用函數(shù)塊時,需要指定背景數(shù)據(jù)塊,背景數(shù)據(jù)塊是函數(shù)塊專用的存儲區(qū)。CPU執(zhí)行FB中的程序代碼,將塊的輸入、輸出參數(shù)和局部靜態(tài)變量保存在背景數(shù)據(jù)塊中,函數(shù)塊執(zhí)行完畢后背景數(shù)據(jù)塊中的數(shù)據(jù)不會丟失。(2)生成函數(shù)塊FB生成函數(shù)塊(FB)的步驟和生成函數(shù)(FC)類似,不同的是在“添加新塊”時,選擇“函數(shù)塊(FB)”,并為FB命名,點擊確定即可。(3)函數(shù)塊FB的應(yīng)用

下面通過一個具體實例講解函數(shù)塊FB的應(yīng)用?!緦嵗?-4】使用函數(shù)塊實現(xiàn)電機及冷卻風扇的控制。2.函數(shù)塊FB及其應(yīng)用【實例4-4】使用函數(shù)塊實現(xiàn)電機及冷卻風扇的控制。

控制要求:按下啟動按鈕后,電機和冷卻風扇啟動運行;按下停止按鈕后,電機立即停止運行,冷卻風扇延時一段時間后再停止運行。要求使用函數(shù)塊編程實現(xiàn)?!窘狻勘纠紫纫x接口區(qū)的形參,然后用形參編寫控制邏輯,最后進行調(diào)用。(1)創(chuàng)建一個FB,命名為“電機和冷卻風扇”的函數(shù)塊,并打開。(2)生成FB的局部變量用戶可以在FB接口區(qū)定義局部變量,如圖4-13所示,與函數(shù)FC類似,函數(shù)塊FB的局部變量也有Input參數(shù)、Output參數(shù)、InOut參數(shù)和Temp參數(shù);此外,函數(shù)塊增加了Static參數(shù),在Static(靜態(tài)變量)定義的變量下一次調(diào)用時,靜態(tài)變量的值保持不變。2.函數(shù)塊FB及其應(yīng)用【實例4-4】使用函數(shù)塊實現(xiàn)電機及冷卻風扇的控制。編寫FB程序

在打開的FB1中的程序編輯視窗中編寫控制程序;在本程序中,TOF定時器的參數(shù)用靜態(tài)變量“定時器DB”來保存。在為TOF定時器選擇背景數(shù)據(jù)塊的時候,選擇“多重實例”,并在接口參數(shù)中名稱下拉菜單中選擇“#定時器DB”,如圖所示。2.函數(shù)塊FB及其應(yīng)用【實例4-4】使用函數(shù)塊實現(xiàn)電機及冷卻風扇的控制。在OB1中調(diào)用并調(diào)試FB程序調(diào)用FB時,會彈出“調(diào)用選項”對話框,可以輸入FB1背景數(shù)據(jù)塊的名稱,一般采用默認即可。雙擊查看生產(chǎn)背景數(shù)據(jù)塊,可以看到其中的數(shù)據(jù)與FB1接口區(qū)數(shù)據(jù)是一致的。在OB1中我們調(diào)用兩次FB1(第二次調(diào)用也要為FB1指定背景數(shù)據(jù)塊),分別控制兩套設(shè)備,并將輸入輸出實參賦給形參2.函數(shù)塊FB及其應(yīng)用(4)更新函數(shù)塊如果OB1中已經(jīng)調(diào)用FB1,后期根據(jù)需要又對FB1源程序進行了修改,則在OB1中被調(diào)用的FB1的方框、或字符或背景數(shù)據(jù)塊將變成紅色,這時單擊程序編輯器的工具欄上的更新不一致的塊調(diào)用按鈕,此時FB1中的紅色錯誤標記將消失(右擊紅色的FB塊,選擇“更新塊調(diào)用”也可以)。或者在OB1中直接將FB1刪除,重新調(diào)用。2.函數(shù)塊FB及其應(yīng)用(5)FB和FC的區(qū)別和選擇FB和FC本質(zhì)都是一樣的,都相當于子程序,可以被其他程序塊所調(diào)用(也可以調(diào)用其他子程序)。它們最大的區(qū)別就是,F(xiàn)B與其背景數(shù)據(jù)塊配合使用,背景數(shù)據(jù)塊中保存著FB使用的數(shù)據(jù),即使FB退出運行后也會一直保留。而FC沒有背景數(shù)據(jù)塊來存放數(shù)據(jù),只在運行期間被分配一個臨時的數(shù)據(jù)區(qū)。說明與建議:①

除了純粹的實參子程序用FC外,大部分功能編程采用FB;②FB編程中盡量用靜態(tài)變量Static作為中間變量,少用或不用TEMP臨時變量(因為有時因為會在賦值先后方面出現(xiàn)不注意的問題);③創(chuàng)建常用的一些功能塊庫時,盡量選用FB;④在調(diào)用FB較多的場合時,盡量采用多重背景數(shù)據(jù)塊形式,這樣可以節(jié)省存儲空間。2.函數(shù)塊FB及其應(yīng)用(6)臨時變量Temp在使用時的問題臨時變量可以在組織快OB、功能FC和功能塊FB中使用,當塊執(zhí)行時它們被用來臨時存儲數(shù)據(jù),一旦塊執(zhí)行結(jié)束,堆棧的地址將被重新分配用于其它程序塊使用,此地址上的數(shù)據(jù)不會被清零,直到被其他程序塊賦予新值,需要遵循“先賦值,再使用”的原則。有常見的幾種情況可能導(dǎo)致程序運行不正常:(1)某個塊程序運行時好時壞,其中某個數(shù)值或多個數(shù)值偶爾不正常。此問題在于,沒有遵循“先賦值,再使用”的原則。Temp的數(shù)值在每個掃描周期開始沒有被明確的賦值,則此地址的數(shù)值將是隨機的。

(2)多個塊使用Temp,單獨使用任意一個都正常,無法一起正常使用。此問題也是由于Temp變量未能先賦值,再使用。我們只要遵循“先賦值,再使用”的原則,就可避免這個問題。(3)Temp變量無法實現(xiàn)自鎖。此問題在于,Temp數(shù)值無法像M點或Q點一樣保持上一個周期的數(shù)值,Temp需要在每個掃描周期有一個明確的賦值,即先賦值(寫),再使用(讀寫),解決方法:FB可使用Static靜態(tài)變量,F(xiàn)C可使用M區(qū)或全局DB地址。三、數(shù)據(jù)塊1.數(shù)據(jù)塊簡介數(shù)據(jù)塊(DataBlock,DB)用于存儲用戶數(shù)據(jù)及程序中間變量。與M數(shù)據(jù)區(qū)不同的是,M數(shù)據(jù)區(qū)的大小在CPU技術(shù)規(guī)范中已經(jīng)定義且不可擴展,而數(shù)據(jù)塊存儲區(qū)由用戶定義,最大不能超過工作存儲區(qū)或裝載存儲區(qū)。最常用的是全局數(shù)據(jù)塊和背景數(shù)據(jù)塊:全局(Global)數(shù)據(jù)塊:存儲供所有的代碼塊使用的數(shù)據(jù),所有的OB、FB和FC都可以訪問。背景(Instance)數(shù)據(jù)塊:存儲供特定的FB使用的數(shù)據(jù),即對應(yīng)FB的輸入、輸出參數(shù)和局部靜態(tài)變量。盡管背景DB反映特定FB的數(shù)據(jù),然而任何代碼塊都可訪問背景DB中的數(shù)據(jù)。2.全局數(shù)據(jù)塊及其應(yīng)用1.全局數(shù)據(jù)塊的生成新建博途項目,命名為“數(shù)據(jù)塊使用”,CPU選擇1215C。打開項目視圖中文件夾“\PLC_1\程序塊”,雙擊其中的“添加新塊”,單擊打開的對話框中的“數(shù)據(jù)塊”按鈕,在右側(cè)“類型”下拉菜單中選擇“全局DB”(默認)。全局數(shù)據(jù)塊默認名稱為“數(shù)據(jù)塊_1”,也可以手動修改;數(shù)據(jù)塊編號為DB1。在打開的數(shù)據(jù)塊編輯區(qū)中可以新建各種類型的變量,在這里我們建立SB1(Bool)、SB2(Bool)、ADD1(int)、SUM1(Int)、ADD2(Real)和SUM2(Real)六個變量,并為ADD1和ADD2賦初值。2.全局數(shù)據(jù)塊及其應(yīng)用2.全局數(shù)據(jù)塊中數(shù)據(jù)的引用

全局數(shù)據(jù)塊建立好后,在程序中可以引用其中的變量參與程序運算。常用的引用方法有拖動、選擇以及復(fù)制粘貼。其中拖動方法編程效率較高。如圖所示,鼠標單擊“數(shù)據(jù)塊_1”,在項目樹的下方出現(xiàn)該數(shù)據(jù)塊的“詳細視圖”,用戶可以用鼠標將變量拖動到程序地址位置。采用地址選擇的引用方式如圖所示,首先點擊觸點處的“??.?”,選擇“數(shù)據(jù)塊_1”,然后選擇數(shù)據(jù)塊中的數(shù)據(jù)(注意:引用的數(shù)據(jù)與指令數(shù)據(jù)類型相關(guān),不是全部數(shù)據(jù))。2.全局數(shù)據(jù)塊及其應(yīng)用3.全局數(shù)據(jù)塊中數(shù)據(jù)的應(yīng)用接下來我們在OB1中編寫如圖所示程序,下載并在線監(jiān)控。程序段1是為了調(diào)試方便,用I0.0和I0.1分別為“數(shù)據(jù)塊_1”.SB1和“數(shù)據(jù)塊_1”.SB2賦值。按下SB1,執(zhí)行整數(shù)加法,將結(jié)果寫入“數(shù)據(jù)塊_1”.SUM1;按下SB2,執(zhí)行實數(shù)加法,將結(jié)果寫入“數(shù)據(jù)塊_1”.SUM2中。圖4-23中是I0.0接通1次、I0.1接通4次結(jié)果。2.全局數(shù)據(jù)塊及其應(yīng)用4.標準的DB塊和優(yōu)化的DB塊當在博途中為S7-1200/S7-1500CPU添加一個DB塊時,其缺省屬性為優(yōu)化的DB。通過右擊DB塊,查看其屬性,在“常規(guī)”選項下的“屬性”中有選擇是否“優(yōu)化的塊訪問”選項。優(yōu)化的數(shù)據(jù)塊:大的數(shù)據(jù)類型在塊的開始,小的數(shù)據(jù)類型在塊的末端,因此在塊中不會形成數(shù)據(jù)塊間隙。優(yōu)化的塊只能以符號尋址,編程者無需考慮DB塊中每個變量存儲的具體地址非優(yōu)化的數(shù)據(jù)塊:將數(shù)據(jù)塊屬性中的“優(yōu)化的塊訪問”前面的對號去掉,該數(shù)據(jù)塊就會變?yōu)闃藴实臄?shù)據(jù)塊(非優(yōu)化)。標準DB中的數(shù)據(jù)根據(jù)用戶創(chuàng)建的數(shù)據(jù)類型、順序為每個變量定義固定的地址,數(shù)據(jù)可以通過符號訪問、絕對訪問以及指針方式尋址。2.全局數(shù)據(jù)塊及其應(yīng)用4.標準的DB塊和優(yōu)化的DB塊S7-1200/S7-1500中如有以下應(yīng)用,必須使用標準DB塊:1)與其它CPU建立S7單邊通信時(PUT/GET),用于存儲發(fā)送區(qū)數(shù)據(jù)和接收區(qū)數(shù)據(jù)的DB塊,或者與第三方設(shè)備進行數(shù)據(jù)通信時(如與MCGS觸摸屏通信);2)與

WinCCV7.2進行HMI連接時,WinCCV7.2訪問的S7-1200/S7-1500CPU的DB塊只能是標準的DB塊;3)使用SimaticNetV8.2與S7-1200/S7-1500PLC進行OPC連接時,OPC服務(wù)器訪問S7-1200/S7-1500CPU的DB塊只能是標準的DB塊。2.全局數(shù)據(jù)塊及其應(yīng)用5.創(chuàng)建復(fù)雜數(shù)據(jù)類型數(shù)據(jù)-數(shù)組ARRAY【實例4-5】用數(shù)據(jù)塊創(chuàng)建一個非優(yōu)化二維數(shù)組ARY1[0..2,0..2],數(shù)據(jù)類型Int,并編寫程序?qū)⒛M量通道IW64采集的數(shù)據(jù)每秒保存一次到數(shù)組元素ARY[1,2]中?!窘狻浚?)新建一全局數(shù)據(jù)塊,命名為“數(shù)組DB塊”,按題目要求創(chuàng)建數(shù)組,如圖所示:2.全局數(shù)據(jù)塊及其應(yīng)用6.創(chuàng)建復(fù)雜數(shù)據(jù)類型數(shù)據(jù)-結(jié)構(gòu)體Struct結(jié)構(gòu)數(shù)據(jù)類型(Struct)是一種由指定數(shù)目的數(shù)據(jù)元素且不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類型,也可以是Struct、Array等復(fù)雜數(shù)據(jù)類型以及PLC數(shù)據(jù)類型(UDT)等。【實例4-6】創(chuàng)建Struct數(shù)據(jù)類型數(shù)據(jù)“電機數(shù)據(jù)”,包含變量“電機電流”(Real)、“電機溫度”(Real)、“電機轉(zhuǎn)速”(Int)、“電壓”(Int)、“斷路器”(Bool)?!窘狻咳鐖D,在數(shù)據(jù)塊_1中創(chuàng)建了名為“電機數(shù)據(jù)”的結(jié)構(gòu)體變量。2.全局數(shù)據(jù)塊及其應(yīng)用7.創(chuàng)建復(fù)雜數(shù)據(jù)類型數(shù)據(jù)-PLC數(shù)據(jù)類型UDTUDT類型是一種由多個不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),元素可以是基本數(shù)據(jù)類型,也可以是Struct、Array等復(fù)雜數(shù)據(jù)類型以及其它UDT等?!緦嵗?-7】建立一個簡單的電機控制標準塊并多次調(diào)用,并使用UDT數(shù)據(jù)類型提升編程效率。每臺電動機都有啟動、停止、運行狀態(tài)和運行次數(shù)四個參數(shù)由上位機進行監(jiān)控。2.全局數(shù)據(jù)塊及其應(yīng)用7.創(chuàng)建復(fù)雜數(shù)據(jù)類型數(shù)據(jù)-PLC數(shù)據(jù)類型UDT編寫電機標準塊程序。新建FB,在FB中建立接口變量,如圖所示。在FB中編寫電機控制程序。根據(jù)題目要求,所有電機均由上位機控制,并監(jiān)控其運行狀態(tài)和運行次數(shù)。3.多重背景數(shù)據(jù)塊

在調(diào)用功能塊(FB)時,需要為其指定一個背景數(shù)據(jù)塊(InstanceDB),用來存放功能塊的輸入、輸出參數(shù)變量及靜態(tài)變量。在一個大型的程序中,往往會有很多的功能塊。如果為每一個功能塊(FB)都創(chuàng)建一個背景數(shù)據(jù)塊(InstanceDB),不僅費時費力,而且會使程序結(jié)構(gòu)變得混亂,不易理解,如在實例4-7中,調(diào)用了4次FB1,生成了4個背景數(shù)據(jù)塊。為了簡化編程,提高程序的可讀性,西門子STEP7支持使用多重背景數(shù)據(jù)塊(Multi-instanceDB)?!緦嵗?-8】使用多重背景數(shù)據(jù)塊(多重實例)的方式實現(xiàn)[實例4-7]中FB的多次調(diào)用?!窘狻吭谝粋€“主FB塊”中去調(diào)用其他的“子FB塊”,然后在分配背景DB時可選擇“多重實例”,當在OB塊中調(diào)用“主FB塊”時就僅生成1個背景數(shù)據(jù)塊,這些“子FB塊”的數(shù)據(jù)存儲在“主FB塊”的靜態(tài)變量中,這就是“多重實例”。3.多重背景數(shù)據(jù)塊調(diào)用完成后的FB2編輯界面如圖所示??梢奆B1的背景數(shù)據(jù)塊出現(xiàn)在FB2接口區(qū)的靜態(tài)變量Static中。完成程序變量賦值,并在OB1中調(diào)用FB2。如圖所示,調(diào)用FB2后,在項目樹中只有一個背景塊DB2,使整個程序變的十分簡潔。四、組織塊S7-1200為用戶提供了不同的塊類型來執(zhí)行自動化系統(tǒng)中的任務(wù)。其中組織塊OB是操作系統(tǒng)和用戶程序之間的接口,可以通過對OB編程來實現(xiàn)特定功能。OB由操作系統(tǒng)調(diào)用,使用OB可以創(chuàng)建在特定時間執(zhí)行的程序,以及響應(yīng)特定事件的程序。熟悉各類OB的使用對于提高編程效率和程序的執(zhí)行效率有很大的幫助。1.事件與組織塊事件,是對程序操作的一系列動作。在PLC操作時,有些事件是由系統(tǒng)預(yù)先設(shè)計好的,比如組織塊。在執(zhí)行組織塊時,一般無法人工干預(yù),如果需要強制結(jié)束,就需要用到中斷事件或中斷指令。啟動組織塊的事件事件類型OB編號OB個數(shù)啟動事件隊列深度OB優(yōu)先級優(yōu)先級組程序循環(huán)1或

123

1啟動或結(jié)束前一循環(huán)OB111啟動100或

123

1從STOP切換到RUN11時間延遲

123

4延遲時間到832循環(huán)中斷

123

4固定的循環(huán)時間到84硬件中斷

123

50上升沿(

16個)、下降沿(

16個)325HSC計數(shù)值=設(shè)定值,計數(shù)方向編號,外部復(fù)位,最大分別6個166診斷錯誤820或1模塊檢測到錯誤89時間錯誤800或1超過最大循環(huán)時間,調(diào)用的OB正在執(zhí)行,隊列溢出,因為中斷負荷過高丟失中斷82632.程序循環(huán)OB

程序循環(huán)(Programcycle)OB在CPU處于RUN模式時,周期性地循環(huán)執(zhí)行??稍诔绦蜓h(huán)OB中放置控制程序的指令或調(diào)用其它功能塊(FC或FB)。S7-1200允許使用多個程序循環(huán)OB,按OB的編號順序執(zhí)行。OB1是默認設(shè)置,其它程序循環(huán)OB的編號必須大于或等于123。程序循環(huán)OB的優(yōu)先級為1,可被高優(yōu)先級的OB中斷;程序循環(huán)執(zhí)行一次需要的時間即為程序的循環(huán)掃描周期時間。最長循環(huán)時間缺省設(shè)置為150ms。創(chuàng)建程序循環(huán)OB過程:打開項目視圖中文件夾“\PLC_1\程序塊”,雙擊其中的“添加新塊”,單擊打開的對話框中的“組織塊”按鈕,如圖所示,選中列表中的“Programcycle”,生成一個程序循環(huán)組織塊,OB默認編號123。塊的名稱默認Main_1。3.啟動OB啟動(Startup)OB僅在CPU啟動過程中被調(diào)用一次(上電,從STOP模式轉(zhuǎn)換成RUN模式)。在調(diào)用啟動OB時,CPU尚未進行周期性循環(huán)執(zhí)行,程序時間監(jiān)控沒有激活。啟動OB一般用于編寫初始化程序,如賦初始值等。允許生成多個啟動OB,默認編號是OB100,其他的啟動OB的編號應(yīng)大于等于123。一般只需要一個啟動OB或者不用?!緦嵗?-9】在啟動OB100中無條件為地址為MW100賦初值100;有條件(當I0.0=1時)為MW102賦初值200。4.延時中斷OB

延時中斷(Timedelayinterrupt)OB在經(jīng)過一段指定的時間延時后,才執(zhí)行相應(yīng)的OB中的程序。S7-1200最多支持4個延時中斷OB,“SRT_DINT”指令用于啟動延時中斷,該中斷在超過參數(shù)指定的延時時間后調(diào)用延時中斷OB。延時時間范圍1~60000ms,精度為1ms?!癈AN_DINT”擴展指令用于取消啟動的延時中斷?!癚RY_DINT”擴展指令用于查詢延時中斷的狀態(tài)。延時中斷OB的編號必須為20~23,或大于等于123。

以上指令的相關(guān)詳細信息,請查看S7-1200系統(tǒng)手冊。5.循環(huán)中斷OB

循環(huán)中斷OB(Cyclicinterrupt)按設(shè)定的時間間隔循環(huán)執(zhí)行中斷OB中的程序。

例如,如果時間間隔為100ms,則在程序執(zhí)行期間會每隔100ms調(diào)用該OB一次。S7-1200用戶程序中最多可使用4個循環(huán)中斷OB或延時中斷OB。例如,如果已使用2個延時中斷OB,則在用戶程序中最多可以再插入2個循環(huán)中斷OB?!緦嵗?-10】運用循環(huán)中斷,使Q0.0實現(xiàn)周期為1s的方波輸出(500ms輸出為1,500ms輸出為0),調(diào)試完成后,重新設(shè)置方波周期為2s。6.硬件中斷OB

硬件中斷(Hardwareinterrupt)OB在發(fā)生相關(guān)硬件事件時執(zhí)行,可以快速的響應(yīng)并執(zhí)行硬件中斷OB中的程序(例如立即停止某些關(guān)鍵設(shè)備)。硬件中斷事件包括內(nèi)置數(shù)字輸入端的上升沿和下降沿事件以及HSC(高速計數(shù)器)事件。當發(fā)生硬件中斷事件,硬件中斷OB將中斷正常的循環(huán)程序而優(yōu)先執(zhí)行?!緦嵗?-11】當硬件輸入I0.0上升沿時,觸發(fā)硬件中斷OB40(執(zhí)行累加程序),當硬件輸入I0.1上升沿時,觸發(fā)硬件中斷OB41(執(zhí)行遞減程序)。【解】首先生成中斷組織塊,然后將I0.0和I0.1的上升沿關(guān)聯(lián)硬件中斷事件。(1)首先按照前述方法生成硬件中斷組織塊OB40,OB41,分別命名為“Hardwareinterrupt1”和“Hardwareinterrupt2”。(2)在OB40中編程,當硬件輸入I0.0上升沿時,執(zhí)行MW200加1;OB41中編程,當硬件輸入I0.1上升沿時,執(zhí)行MW200減1,程序如圖4-46所示。7.時間錯誤中斷OB時間錯誤中斷(Timeerrorinterrupt)OB的編號為80,當CPU中的程序執(zhí)行時間超過最大循環(huán)時間或者發(fā)生時間錯誤事件(例如循環(huán)中斷OB仍在執(zhí)行前一次調(diào)用時,該循環(huán)中斷OB的啟動事件再次發(fā)生)時,將觸發(fā)時間錯誤中斷優(yōu)先執(zhí)行OB80。由于OB80的優(yōu)先級最高,它將中斷所有正常循環(huán)程序或其它所有OB事件的執(zhí)行而優(yōu)先執(zhí)行。8.診斷錯誤OB診斷錯誤(Diagnosticerrorinterrupt)的編號為OB82。S7-1200可以為具有診斷功能的模塊啟用診斷錯誤中斷功能來檢測模塊狀態(tài)。OB82是唯一支持診斷錯誤事件的OB,出現(xiàn)故障(進入事件),故障解除(離開事件)均會觸發(fā)診斷中斷OB82。當模塊檢測到故障并且在軟件中使能了診斷錯誤中斷時,操作系統(tǒng)將啟動診斷錯誤中斷,診斷錯誤中斷OB82將中斷正常的循環(huán)程序優(yōu)先執(zhí)行。此時無論程序中有沒有診斷中斷OB82,CPU都會保持RUN模式,同時CPU的ERROR指示燈閃爍。五、交叉引用表與程序信息1.交叉引用表

交叉引用表提供項目中對象的使用概況??梢钥吹侥男ο笙嗷ヒ蕾囈约案鲗ο笏诘奈恢?。因此,交叉引用是項目文檔的一部分。還可以直接跳到對象的使用位置。

在TIAPortalV15及更高版本中,交叉引用中將顯示帶有版本標識的指令。不帶版本標識的指令則不顯示。(1)打開交叉引用的方法選中需要查詢的目標,在“工具”(Tools)菜單中,選擇“交叉引用”(Cross-reference)命令。1.交叉引用表選中需要查詢的目標(可以是某個程序,某個塊,某個程序段,某個變量,某個塊接口,某個PLC數(shù)據(jù)類型等),在右鍵下拉菜單中,選擇“交叉引用”或“交叉引用信息”。(1)打開交叉引用的方法1.交叉引用表為了快速搜索特定的交叉引用并進行合理排列,可對交叉引用列表進行過濾篩選。博途軟件安裝后,交叉引用表中集成了系統(tǒng)過濾器。系統(tǒng)過濾器通常位于過濾器選擇的下拉列表中,且無法刪除。博途默認設(shè)置的交叉引用過濾器為“顯示帶有引用的對象”。如下圖所示。(2)交叉引用過濾2.程序信息

博途設(shè)備(如PLC_1)項目樹中,有“程序信息”選項

,可雙擊進入程序信息界面。用戶程序的程序信息包含表中指定的視圖。視圖應(yīng)用調(diào)用結(jié)構(gòu)顯示用戶程序內(nèi)塊的調(diào)用結(jié)構(gòu)并概要說明所用的塊及塊間的關(guān)系。從屬結(jié)構(gòu)顯示用戶程序中使用的塊的列表。塊顯示在第一級,調(diào)用或使用此塊的塊縮進排列在其下方。與調(diào)用結(jié)構(gòu)不同,實例塊單獨列出。視圖應(yīng)用分配列表概要說明用戶程序中已分配的I、Q和M存儲區(qū)的地址位。還指示是否通過訪問從S7程序中分配了地址或是否已將地址分配給SIMATICS7模塊。資源顯示CPU對象(OB、FC、FB、DB、用戶自定義數(shù)據(jù)類型和PLC變量)、CPU存儲區(qū)域以及現(xiàn)有I/O模塊的硬件資源。2.程序信息(1)調(diào)用結(jié)構(gòu)

調(diào)用結(jié)構(gòu)用于說明S7程序中各個塊的調(diào)用層級。調(diào)用結(jié)構(gòu)將以表格形式顯示用戶程序中所用的塊。調(diào)用結(jié)構(gòu)的第一級將彩色高亮顯示,指示程序中其它所有塊都未調(diào)用的塊。組織塊通常顯示在調(diào)用結(jié)構(gòu)的第一級。功能、功能塊和數(shù)據(jù)塊僅當未被組織塊調(diào)用時才顯示在第一級。當某個塊調(diào)用其它塊或功能時,被調(diào)用塊或功能以縮進形式列在調(diào)用塊下。指令和塊只有在被某個塊調(diào)用時,它們才顯示在調(diào)用結(jié)構(gòu)中。2.程序信息(2)從屬結(jié)構(gòu)

從屬結(jié)構(gòu)將顯示程序中每個塊的相互關(guān)系。顯示從屬結(jié)構(gòu)時會顯示用戶程序中使用的塊的列表。如果某個塊顯示在最左側(cè),則調(diào)用或使用該塊的其它塊將縮進排列在該

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論