電氣控制及PLC應(yīng)用技術(shù)(基于西門子S7-1200)活頁式 課件 項目五 S7-1200程序結(jié)構(gòu)_第1頁
電氣控制及PLC應(yīng)用技術(shù)(基于西門子S7-1200)活頁式 課件 項目五 S7-1200程序結(jié)構(gòu)_第2頁
電氣控制及PLC應(yīng)用技術(shù)(基于西門子S7-1200)活頁式 課件 項目五 S7-1200程序結(jié)構(gòu)_第3頁
電氣控制及PLC應(yīng)用技術(shù)(基于西門子S7-1200)活頁式 課件 項目五 S7-1200程序結(jié)構(gòu)_第4頁
電氣控制及PLC應(yīng)用技術(shù)(基于西門子S7-1200)活頁式 課件 項目五 S7-1200程序結(jié)構(gòu)_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《電氣控制及PLC應(yīng)用技術(shù)-基于西門子S7-1200》——活頁式教程第一部分低壓電器控制知識

第三部分電氣控制及PLC應(yīng)用技術(shù)實訓(xùn)指導(dǎo)第二部分西門子S7-1200應(yīng)用知識

項目三可編程控制器基礎(chǔ)知識項目四西門子S7-1200編程基礎(chǔ)知識第二部分西門子S7-1200應(yīng)用知識

項目五S7-1200程序結(jié)構(gòu)項目六可編程控制器程序設(shè)計方法項目七可編程控制器系統(tǒng)設(shè)計與應(yīng)用項目八西門子S7-1200通信與網(wǎng)絡(luò)技術(shù)項目九西門子S7-1200高級應(yīng)用知識卡10S7-1200用戶程序結(jié)構(gòu)知識卡11中斷事件與中斷指令項目五S7-1200程序結(jié)構(gòu)本項目主要介紹西門子S7-1200的程序結(jié)構(gòu),包含四種塊(組織塊、函數(shù)塊、函數(shù)、數(shù)據(jù)塊),中斷的知識。項目四學(xué)習(xí)的各類指令是構(gòu)建程序的基本材料,本程序項目學(xué)習(xí)的塊和中斷,加上跳轉(zhuǎn)和循環(huán)構(gòu)成程序的骨架,二者是相輔相成的,清晰的程序結(jié)構(gòu),會提升編寫、調(diào)試、維護(hù)程序的效率?!局R目標(biāo)】能區(qū)分組織塊、函數(shù)塊、函數(shù)和函數(shù);能初步理解中斷及中斷類型的概念;初步理解模塊化編程思路?!灸芰δ繕?biāo)】能使用博途軟件編寫及調(diào)用函數(shù)塊、函數(shù),設(shè)置數(shù)據(jù)塊;能初步應(yīng)用中斷處理各種中斷請求,完成實時控制?!舅刭|(zhì)目標(biāo)】初步理解并建立模塊化程序設(shè)計的思維;耐心細(xì)致知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)1.S7-1200PLC的塊

STEP7編程軟件提供各種類型的塊(BLOCK),可以存放用戶程序和相關(guān)數(shù)據(jù),根據(jù)工程項目控制和數(shù)據(jù)處理的需要,程序可以由不同的塊組成。

在工業(yè)控制中,程序采用塊的概念,便于大規(guī)模程序的設(shè)計和理解,還可以設(shè)計標(biāo)準(zhǔn)化的塊程序重復(fù)調(diào)用,使程序結(jié)構(gòu)清晰明了,修改方便,調(diào)試簡單。STEP7提供了多種不同類型的組織塊(OB),功能塊(FB)、功能(FC)和數(shù)據(jù)塊(DB)4種。知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)

1)組織塊(OB)

組織塊OB(OrganizationBlock)操作系統(tǒng)與用戶程序之間的接口,只有在OB中編寫的指令或調(diào)用的程序塊才能被CPU的操作系統(tǒng)執(zhí)行。組織塊用于控制掃描循環(huán)和中斷程序的執(zhí)行、PLC的啟動和錯誤處理等,組織塊由用戶編寫。組織塊由操作系統(tǒng)調(diào)用,OB間不可互相調(diào)用,OB可調(diào)用子函數(shù)如FB/FC。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)

1)組織塊(OB)——組織塊的類型程序循環(huán)組織塊啟動組織塊中斷組織塊1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)

1)組織塊(OB)——組織塊的類型程序循環(huán)組織塊啟動組織塊中斷組織塊程序循環(huán)組織塊(OB)在CPU處于運(yùn)行(RUN)狀態(tài)時循環(huán)執(zhí)行。用戶在其中編寫控制程序和調(diào)用其它用戶塊。相當(dāng)于主程序功能,其中的OB1是默認(rèn)的程序循環(huán)組織塊。允許使用多個OB。OB的編號一般由系統(tǒng)自動給出,編號從123開始。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)

1)組織塊(OB)——組織塊的類型程序循環(huán)組織塊啟動組織塊中斷組織塊在CPU開始處理用戶程序之前,首先執(zhí)行啟動組織塊。啟動組織塊只在CPU啟動時執(zhí)行一次,以后不再被執(zhí)行??梢詫⒁恍┏跏蓟噶罹帉懺趩咏M織塊中,同樣允許有多個啟動組織塊。OB100是默認(rèn)的啟動組織塊,其它啟動組織塊的編號由系統(tǒng)自動給出,編號從123開始。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)

1)組織塊(OB)——組織塊的類型程序循環(huán)組織塊啟動組織塊中斷組織塊中斷組織塊用于處理各種類型的中斷事件,及時對外部信息進(jìn)行處理。中斷組織塊包含延時中斷(OB20、OB21、OB22、OB23以及OB123以后的編號)、循環(huán)中斷(OB30)、硬件中斷(OB0)、時間錯誤中斷(OB80)、診斷錯誤中斷(OB82)等5種類型。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)1)組織塊(OB)——組織塊的優(yōu)先級

為避免組織塊在執(zhí)行過程中發(fā)生沖突,操作系統(tǒng)為每個組織塊分配了相應(yīng)的優(yōu)先級,如果同時滿足幾個組織塊的執(zhí)行條件,則系統(tǒng)首先執(zhí)行優(yōu)先級高的組織塊。其中,啟動組織塊在CPU工作模式切換到RUN時執(zhí)行,循環(huán)執(zhí)行組織塊在沒有中斷情況下循環(huán)執(zhí)行,二者的優(yōu)先級最低為1。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)1)組織塊(OB)——組織塊的優(yōu)先級表5.1組織塊類型及優(yōu)先級表組織塊類型數(shù)量編號優(yōu)先級程序循環(huán)必須有一個OB,允許多個OB1(默認(rèn)),≥1231啟動必須有一個OB,允許多個OB100(默認(rèn)),≥1231延時中斷4個延時OB20(默認(rèn))21~233循環(huán)中斷4個循環(huán)OB30(默認(rèn)),31~334硬件中斷HSC16個上升沿和16個下降沿事件共32個OB≥1235邊沿6個CV=PV,6個方向改變和6個外部復(fù)位共18個OB≥1236時間錯誤1個OB809診斷錯誤1個OB82261.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)2)功能塊(FB)

功能塊FB(FunctionBlock)也稱為函數(shù)塊FB,是由用戶自己編寫的子程序塊或帶形參的函數(shù),可以被其它程序塊(OB、FC和FB)調(diào)用。與FC不同的是FB擁有自己的稱為背景數(shù)據(jù)塊的數(shù)據(jù)存儲區(qū),常用于編寫復(fù)雜功能的函數(shù),例如閉環(huán)控制任務(wù)。附加背景數(shù)據(jù)塊的函數(shù)塊,內(nèi)部含有靜態(tài)變量,使用背景數(shù)據(jù)塊DB來保存該FB調(diào)用實例的數(shù)據(jù)值,多數(shù)情況下需要多個掃描周期內(nèi)執(zhí)行完畢。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)3)功能(FC)

功能FC(Function)也稱為函數(shù)FC,是由用戶自己編寫的子程序塊或帶形參的函數(shù),可以被其它程序塊(OB、FC和FB)調(diào)用。不附加背景數(shù)據(jù)塊的函數(shù),內(nèi)部不含有靜態(tài)變量,無需附加背景數(shù)據(jù)塊,一個掃描周期內(nèi)執(zhí)行完畢。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)4)數(shù)據(jù)塊(DB)

數(shù)據(jù)塊DB(DataBlock)用戶定義的存放數(shù)據(jù)的區(qū)域,有以下兩種類型。背景數(shù)據(jù)塊(DB)保存FB的輸入、輸出變量、靜態(tài)變量。全局?jǐn)?shù)據(jù)塊(DB)存儲用戶數(shù)據(jù),所有代碼塊共享。1.S7-1200PLC的塊知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)2.程序結(jié)構(gòu)線性編程設(shè)計模塊式程序設(shè)計參數(shù)化程序設(shè)計知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)1)線性編程設(shè)計

將用戶的所有指令均放在OB1中,從第一條到最后一條順序執(zhí)行。這種方式適用于一個人完成的小項目,不適合多人合作設(shè)計和程序調(diào)試。2.程序結(jié)構(gòu)知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)2)模塊式程序設(shè)計2.程序結(jié)構(gòu)圖5.1模塊化程序設(shè)計

當(dāng)工程項目比較大時,可以將大項目分解成多個子項目,由不同的人員編寫相應(yīng)的子程序塊,在OB1中調(diào)用,最終多人合作完成項目的設(shè)計與調(diào)試,如圖5.1所示。知識卡10S7-1200用戶程序結(jié)構(gòu)一、西門子PLC程序結(jié)構(gòu)3)參數(shù)化程序設(shè)計2.程序結(jié)構(gòu)圖5.3嵌套調(diào)用圖5.2參數(shù)化程序設(shè)計知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用1.函數(shù)的特點2.生成函數(shù)3.生成函數(shù)的局部數(shù)據(jù)4.FC1的程序設(shè)計5.在OB1中調(diào)用FC1知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用1.函數(shù)的特點

函數(shù)編寫舉例:設(shè)壓力變送器量程的下限為0MPa,上限為HighMPa,經(jīng)A/D轉(zhuǎn)換后得到0~27648的整數(shù)。轉(zhuǎn)換后的數(shù)字N和壓力P之間的計算公式為:P=(High×N)/27648(MPa)編寫函數(shù)FC1實現(xiàn)上述運(yùn)算。

函數(shù)FC和函數(shù)塊FB是用戶編寫的子程序,它們包含完成特定任務(wù)的程序,F(xiàn)C和FB有與調(diào)用它的塊共享的輸入、輸出參數(shù)。知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用2.生成函數(shù)雙擊指令樹的“添加新塊”,單擊“添加新塊”對話框中的“函數(shù)”按鈕,F(xiàn)C默認(rèn)的編號為1,默認(rèn)的語言為LAD。設(shè)置函數(shù)的名稱為“計算壓力”。單擊“確定”按鈕,生成FC1,如圖5.4所示。圖5.4添加FC1塊知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用3.生成函數(shù)的局部數(shù)據(jù)

往下拉動程序區(qū)最上面的分隔條,分隔條上面是函數(shù)的接口區(qū),下面是程序區(qū)。

在接口區(qū)中生成局部變量,只能在它所在的塊中使用,如圖5.5所示。圖5.4添加FC1塊知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用3.生成函數(shù)的局部數(shù)據(jù)

右鍵單擊項目樹中的FC1,單擊快捷菜單中的“屬性”,選中打開的對話框左邊的“屬性”打開屬性頁框,如圖5.6所示。去除“優(yōu)化的塊訪問”(復(fù)選框內(nèi)的“√”不顯示)。成功編譯后接口區(qū)出現(xiàn)“偏移量”列,只有臨時數(shù)據(jù)才有偏移量。知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用3.生成函數(shù)的局部數(shù)據(jù)圖5.6取消優(yōu)化的塊訪問知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用3.生成函數(shù)的局部數(shù)據(jù)函數(shù)各種類型的局部變量的作用:1)輸入?yún)?shù)Input用于接收調(diào)用它的主調(diào)塊提供的輸入數(shù)據(jù)。2)輸出參數(shù)Output用于將塊的程序執(zhí)行結(jié)果返回給主調(diào)塊。3)輸入_輸出參數(shù)InOut的初值由主調(diào)塊提供,塊執(zhí)行完后用同一個參數(shù)將它的值返回給主調(diào)塊。知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用3.生成函數(shù)的局部數(shù)據(jù)函數(shù)各種類型的局部變量的作用:4)文件夾Return中自動生成的返回值“計算壓力”與函數(shù)的名稱相同,屬于輸出參數(shù)。數(shù)據(jù)類型為Void,表示函數(shù)沒有返回值。5)臨時數(shù)據(jù)Temp是暫時保存在局部數(shù)據(jù)堆棧中的數(shù)據(jù)。每次調(diào)用塊之后,臨時數(shù)據(jù)可能被同一優(yōu)先級中后面調(diào)用的塊的臨時數(shù)據(jù)覆蓋。6)常量Constant是塊中使用并且?guī)в蟹柮某A?。知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用4.FC1的程序設(shè)計FC1程序如圖5.7所示,運(yùn)算的中間結(jié)果用臨時局部變量“中間變量”保存。STEP7自動地在局部變量的前面添加#號。圖5.7FC1程序知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用5.在OB1中調(diào)用FC1在變量表中生成調(diào)用FC1時需要的3個變量,如圖圖5.8(a)所示,將項目樹中的FC1拖放到右邊的程序區(qū)的水平“導(dǎo)線”上。5.8(a)PLC變量表知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用5.在OB1中調(diào)用FC1在變量表中生成調(diào)用FC1時需要的3個變量,如圖圖5.8(a)所示,將項目樹中的FC1拖放到右邊的程序區(qū)的水平“導(dǎo)線”上。5.8(a)PLC變量表知識卡10S7-1200用戶程序結(jié)構(gòu)二、函數(shù)編寫與調(diào)用5.在OB1中調(diào)用FC1

圖5.8(b)OB1調(diào)用FC1的程序形參實參知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用1.函數(shù)塊2.生成函數(shù)塊3.生成函數(shù)塊的局部變量4.FB1的控制要求與程序5.用于定時器計數(shù)器的多重背景6.在OB1中調(diào)用FB1知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用1.函數(shù)塊函數(shù)塊(FB)是用戶編寫的有自己的存儲區(qū)(背景數(shù)據(jù)塊)的代碼塊,F(xiàn)B的典型應(yīng)用是執(zhí)行不能在一個掃描周期結(jié)束的操作。每次調(diào)用函數(shù)塊時,都需要指定一個背景數(shù)據(jù)塊。該DB隨函數(shù)的調(diào)用而打開,在調(diào)用結(jié)束時自動關(guān)閉。函數(shù)塊的輸入、輸出參數(shù)和靜態(tài)局部數(shù)據(jù)(Static)用指定的背景數(shù)據(jù)塊保存。函數(shù)塊執(zhí)行完后,背景數(shù)據(jù)塊中的數(shù)據(jù)不會丟失。知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用2.生成函數(shù)塊在項目“函數(shù)與函數(shù)塊”中添加名為“電動機(jī)控制”的FB1。取消FB1默認(rèn)的屬性“塊的優(yōu)化訪問”。知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用3.生成函數(shù)塊的局部變量函數(shù)塊的輸入、輸出參數(shù)和靜態(tài)數(shù)據(jù)用指定的背景數(shù)據(jù)塊保存。在FB中,定時器如果使用一個固定的背景數(shù)據(jù)塊,在同時多次調(diào)用該FB時,該數(shù)據(jù)塊將會被同時用于兩處或多處。為此在塊接口中生成數(shù)據(jù)類型為IEC_TIMER的靜態(tài)變量“定時器DB”,用它提供定時器TOF的背景數(shù)據(jù)知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用3.生成函數(shù)塊的局部變量FB1的接口數(shù)據(jù)如圖5.9所示,其背景數(shù)據(jù)塊如圖5.10所示。圖5.9FB1的接口數(shù)據(jù)

圖5.10FB1的背景數(shù)據(jù)塊知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用4.FB1的控制要求與程序用輸入?yún)?shù)“起動按鈕”和“停止按鈕”控制InOut參數(shù)“電動機(jī)”。按下停止按鈕,斷開延時定時器(TOF)開始定時,輸出參數(shù)“制動器”為1狀態(tài),經(jīng)過輸入?yún)?shù)“定時時間”設(shè)置的時間預(yù)置值后,停止制動,F(xiàn)B1程序如圖5.11所示。知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用5.用于定時器計數(shù)器的多重背景多重背景:在函數(shù)塊的接口區(qū)定義數(shù)據(jù)類型為IEC_Timer的靜態(tài)變量(見圖5.12),用它們來提供定時器和計數(shù)器的背景數(shù)據(jù)。這種程序結(jié)構(gòu)被稱為多重背景。圖5.12多重背景知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用5.用于定時器計數(shù)器的多重背景背景數(shù)據(jù)設(shè)置方法:

將定時器TON方框拖放到FB1的程序區(qū),出現(xiàn)“調(diào)用選項”對話框。單擊選中“多重背景”,選中列表中的“定時器DB”,用FB1的靜態(tài)變量“定時器DB”提供TON的背景數(shù)據(jù)。

這樣處理后,多個定時器計數(shù)器的背景數(shù)據(jù)被包含在它們所在的函數(shù)塊的背景數(shù)據(jù)塊中,而不需要為每個定時器或計數(shù)器設(shè)置一個單獨的背景數(shù)據(jù)塊。知識卡10S7-1200用戶程序結(jié)構(gòu)三、函數(shù)塊編寫與調(diào)用6.在OB1中調(diào)用FB1

在PLC變量表中生成兩次調(diào)用FB1使用的符號地址。在OB1中兩次調(diào)用FB1,自動生成背景數(shù)據(jù)塊,為各形參指定實參。OB1程序如圖5.13所示。圖5.13OB1調(diào)用FB1知識卡10S7-1200用戶程序結(jié)構(gòu)四、塊的區(qū)別1.函數(shù)與函數(shù)塊的區(qū)別2.組織塊與函數(shù)塊和函數(shù)的區(qū)別知識卡10S7-1200用戶程序結(jié)構(gòu)四、塊的區(qū)別1.函數(shù)與函數(shù)塊的區(qū)別區(qū)別1:函數(shù)塊有背景數(shù)據(jù)塊,函數(shù)沒有。區(qū)別2:只能在函數(shù)內(nèi)部訪問它的局部變量。其他代碼塊或HMI可以訪問函數(shù)塊的背景數(shù)據(jù)塊中的變量。區(qū)別3:函數(shù)沒有靜態(tài)變量,函數(shù)塊有保存在背景數(shù)據(jù)塊中的靜態(tài)變量。知識卡10S7-1200用戶程序結(jié)構(gòu)四、塊的區(qū)別1.函數(shù)與函數(shù)塊的區(qū)別區(qū)別4:函數(shù)塊的局部變量(不含Temp)有默認(rèn)的初始值,函數(shù)的局部變量沒有默認(rèn)值。區(qū)別5:函數(shù)塊的輸出參數(shù)值不僅與來自外部的輸入?yún)?shù)有關(guān),還與用靜態(tài)數(shù)據(jù)保存的內(nèi)部狀態(tài)數(shù)據(jù)有關(guān)。函數(shù)沒有靜態(tài)數(shù)據(jù),相同的輸入?yún)?shù)產(chǎn)生相同的執(zhí)行結(jié)果。知識卡10S7-1200用戶程序結(jié)構(gòu)四、塊的區(qū)別2.組織塊與函數(shù)塊和函數(shù)的區(qū)別出現(xiàn)事件或故障時,由操作系統(tǒng)調(diào)用對應(yīng)的組織塊,函數(shù)塊FB和函數(shù)FC是用戶程序在代碼塊中調(diào)用的。組織塊OB沒有輸出參數(shù)、InOut參數(shù)和靜態(tài)數(shù)據(jù),它的輸入?yún)?shù)是操作系統(tǒng)提供的啟動信息。用戶可以在組織塊的接口區(qū)生成臨時變量和常量。組織塊中的程序是用戶編寫的。知識卡11中斷事件與中斷指令一、事件與組織塊知識卡11中斷事件與中斷指令一、事件與組織塊1.啟動組織塊的事件組織塊OB是操作系統(tǒng)與用戶程序的接口,出現(xiàn)啟動組織塊的事件時,由操作系統(tǒng)調(diào)用對應(yīng)的組織塊。如果當(dāng)前不能調(diào)用OB,則按照事件的優(yōu)先級將其保存到隊列。如果沒有為該事件分配OB,則會觸發(fā)默認(rèn)的系統(tǒng)響應(yīng)。啟動組織塊的事件屬性如表5.2所示,為1的優(yōu)先級最低。知識卡11中斷事件與中斷指令一、事件與組織塊1.啟動組織塊的事件表5.2啟動OB事件知識卡11中斷事件與中斷指令一、事件與組織塊1.啟動組織塊的事件注意:如果插入/移除中央模塊,或超過最大循環(huán)時間的兩倍,CPU將切換到STOP模式。系統(tǒng)忽略過程映像更新時間出現(xiàn)的I/O訪問錯誤。塊中有編程錯誤或I/O訪問錯誤時,保存RUN狀態(tài)不變。啟動事件與程序循環(huán)事件不會同時發(fā)生,在啟動期間,只有診斷錯誤事件能中斷啟動事件,其它事件將進(jìn)入中斷隊列,在啟動事件結(jié)束后處理它們。OB用局部變量提供啟動信息。知識卡11中斷事件與中斷指令一、事件與組織塊2.事件執(zhí)行的優(yōu)先級與中斷隊列優(yōu)先級、優(yōu)先級組合隊列用來決定事件服務(wù)程序的處理順序。每個CPU事件均有其優(yōu)先級。優(yōu)先級編號越大,優(yōu)先級越高。時間錯誤中斷具有最高的優(yōu)先級。事件一般按優(yōu)先級的高低來處理,先處理高優(yōu)先級的事件。優(yōu)先級相同的事件按“先來先服務(wù)”的原則來處理。知識卡11中斷事件與中斷指令一、事件與組織塊2.事件執(zhí)行的優(yōu)先級與中斷隊列優(yōu)先級≥2的OB將中斷循環(huán)程序的執(zhí)行。如果設(shè)置為OB可中斷模式,優(yōu)先級為2~25的OB可以被優(yōu)先級高于當(dāng)前運(yùn)行的OB的任何事件中斷,優(yōu)先級為26的時間錯誤中斷會中斷其它所有的OB。如果未設(shè)置可中斷模式,優(yōu)先級為2~25的OB不能被任何事件中斷。如果執(zhí)行可中斷OB時發(fā)生多個事件,CPU將按照優(yōu)先級順序處理這些事件。知識卡11中斷事件與中斷指令一、事件與組織塊3.禁止與激活中斷可以用指令DIS_AIRT,將延時處理優(yōu)先級高于當(dāng)前組織塊的中斷OB,輸出參數(shù)RET_VALUE返回調(diào)用DIS_AIRT的次數(shù)。發(fā)生中斷時,調(diào)用指令EN_AIRT啟用以前調(diào)用DIS_AIRT延時的組織塊處理。要取消所有的延時,EN_AIRT的執(zhí)行次數(shù)必須與DIS_AIRT的次數(shù)相同。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊1.程序循環(huán)組織塊主程序OB1屬于程序循環(huán),CPU在RUN模式時循環(huán)執(zhí)行OB1,可以在OB1中調(diào)用FC和FB。如果用戶程序生成了其他程序循環(huán)OB,CPU按OB編號順序執(zhí)行它們。首先執(zhí)行主程序OB1,然后執(zhí)行編號大于等于123的程序循環(huán)。一般只需要一個程序循環(huán)OB。程序循環(huán)OB的優(yōu)先級高低,其他事件都可以中斷他們。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊1.程序循環(huán)組織塊例如:建立新項目,取名為“啟動組織塊與循環(huán)中斷組織塊”,自動生成程序循環(huán)組織塊OB1。雙擊項目數(shù)中的“添加新塊”,單擊“組織塊”按鈕,選中列表中的“Programcycle”,生成一個程序循環(huán)組織塊。OB默認(rèn)的編號為123,語言為LAD。單擊“確定”按鈕,生成OB123。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊1.程序循環(huán)組織塊圖5.14OB1程序圖5.15OB123程序知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊2.啟動組織塊

啟動組織塊用于首次掃描時將系統(tǒng)初始化,當(dāng)CPU從STOP切換到RUN時,執(zhí)行一次啟動OB,執(zhí)行完成后,讀入過程映像輸入,開始執(zhí)行OB1。允許生成多個啟動OB,默認(rèn)的OB是OB100,其它OB的編號應(yīng)該大于123。一般只需要應(yīng)該啟動OB。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊2.啟動組織塊圖5.16OB100程序用上述方法生成啟動組織塊OB100,在其中編程給給QB0置初值9,將MB14加1,程序如圖5.16所示??梢栽诜抡鏁r觀察OB100的功能是否正常。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊3.循環(huán)中斷組織塊 循環(huán)中斷組織塊以設(shè)定的循環(huán)時間(1~60000ms)周期性地執(zhí)行,而與程序循環(huán)OB的執(zhí)行無關(guān)。循環(huán)中斷和延時中斷組織塊的個數(shù)之和最多允許4個。循環(huán)中斷OB的編號應(yīng)為OB30~OB38,或大于等于123。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊3.循環(huán)中斷組織塊 例如:在項目中添加新組織塊,選擇對話框中的“Cycleinterrupt”,將循環(huán)中斷的時間間隔設(shè)置為1000ms,默認(rèn)的編號為OB30,生成OB30。可以設(shè)置循環(huán)中斷的循環(huán)時間和相位偏移。相位偏移用于錯開不同時間間隔的幾個循環(huán)中斷OB,默認(rèn)為0。如果循環(huán)中斷的時間大于循環(huán)時間,將啟動時間錯誤OB。知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊3.循環(huán)中斷組織塊

在OB30編寫程序控制8位彩燈循環(huán)移位,I0.2控制彩燈是否移位,I0.3控制移位的方向,程序如圖5.17所示。圖5.17循環(huán)中斷編程知識卡11中斷事件與中斷指令二.初始化組織塊與循環(huán)中斷組織塊3.循環(huán)中斷組織塊 圖5.17循環(huán)中斷編程在CPU運(yùn)行期間,在OB1中,可以使用SET_CINT指令重新設(shè)置循環(huán)中斷的循環(huán)時間(CYCLE)和相移(PHASE),時間的單位為μs,用QRY_CINT指令查詢循環(huán)中斷的狀態(tài)。MB9是讀取的狀態(tài)字MW8的低位字節(jié),M9.4為1表示已下載OB30,M9.2為1表示已啟用循環(huán)中斷。知識卡11中斷事件與中斷指令三.時間中斷組織塊知識卡11中斷事件與中斷指令三.時間中斷組織塊1.時間中斷的功能 時間中斷又稱為“日時鐘中斷”,用于在設(shè)置的日期和時間產(chǎn)生一次中斷,或從設(shè)置的日期時間開始,周期性地重復(fù)產(chǎn)生中斷,例如每分鐘、每小時、每天、每周、每月、每年產(chǎn)生一次時間中斷??梢杂脤S玫闹噶顏碓O(shè)置、激活和取消時間中斷。時間中斷OB的編號應(yīng)為10~17,或大于等于123。知識卡11中斷事件與中斷指令三.時間中斷組織塊2.編寫程序 新建一個“時間中斷”的新項目,打開項目,添加一個時間中斷組織塊,默認(rèn)的編號為10,默認(rèn)編程語言為LAD。編寫如圖5.18所示的程序。圖5.18OB10程序知識卡11中斷事件與中斷指令三.時間中斷組織塊2.編寫程序 圖5.19時間中斷項目OB1程序調(diào)用指令QRY_TINT查詢時間中斷的狀態(tài)。調(diào)用指令SET_TINTL設(shè)置時間中斷OB10。調(diào)用指令A(yù)CT_TINT激活時間中斷OB10。調(diào)用指令指令CAN_TINT來取消時間中斷。知識卡11中斷事件與中斷指令三.時間中斷組織塊2.編寫程序 圖5.19時間中斷項目OB1程序參數(shù)OB_NR為組織塊的編號參數(shù)LOCAL為1表示使用本地時間參數(shù)PERIOD為16#0201表示每分鐘產(chǎn)生一次時間中斷。參數(shù)ACTIVATE為1時,該指令設(shè)置并激活時間中斷,為0僅設(shè)置時間中斷。知識卡11中斷事件與中斷指令四.硬件中斷組織塊知識卡11中斷事件與中斷指令四.硬件中斷組織塊1.硬件中斷事件與硬件中斷組織塊 硬件中斷事件硬件中斷事件包括CPU內(nèi)置的和信號板的DI的上升沿/下降沿事件,高速計數(shù)器的實際計數(shù)值等于設(shè)定值、計數(shù)方向改變和外部復(fù)位輸入信號的上升沿。硬件中斷組織塊硬件中斷組織塊用于處理需要快速響應(yīng)的過程事件。出現(xiàn)硬件中斷事件時,立即中止正在執(zhí)行的程序,改為執(zhí)行對應(yīng)的硬件中斷OB。最多可以生成50個硬件中斷OB,其編號應(yīng)為40~47,或大于等于123。知識卡11中斷事件與中斷指令四.硬件中斷組織塊1.硬件中斷事件與硬件中斷組織塊

如果在執(zhí)行硬件中斷OB期間,同一個中斷事件再次發(fā)生,則新發(fā)生的中斷事件丟失。如果一個中斷事件發(fā)生,在執(zhí)行該中斷OB期間,又發(fā)生多個不同的中斷事件,則新的中斷事件進(jìn)入隊列,等待第一個OB中斷事件執(zhí)行完畢后依次執(zhí)行。知識卡11中斷事件與中斷指令四.硬件中斷組織塊2.硬件中斷事件處理方法

給一個事件指定一個硬件中斷OB,這種方法最為簡單,應(yīng)優(yōu)先采用。多個硬件中斷OB分時處理一個硬件中斷事件,需要使用DETACH指令取消原有的OB與事件的連接,用ATTACH指令將一個新的硬件中斷OB分配給中斷事件。知識卡11中斷事件與中斷指令四.硬件中斷組織塊3.編寫程序

新建項目“硬件中斷例1”,打開項目視圖,雙擊“添加新塊”,選擇“組織塊”,選擇“Hardwareinterrupt(硬件中斷)”,生成硬件中斷組織塊OB40、OB41,組態(tài)時將它們分配給I0.0的上升沿事件和I0.1的下降沿事件,如圖5.20所示。圖5.20組態(tài)硬件中斷事件知識卡11中斷事件與中斷指令四.硬件中斷組織塊3.編寫程序

選中巡視窗口的“屬性-常規(guī)-系統(tǒng)和時鐘存儲器”,啟用系統(tǒng)存儲字節(jié)MB1?!皩B附加到中斷事件”指令A(yù)TTACH和“將OB與中斷事件分離”指令DETACH分別用于在PLC運(yùn)行時建立和斷開硬件中斷事件與中斷OB的連接。

下面使用指令A(yù)TTACH和DETACH,在出現(xiàn)I0.0上升沿事件時,交替調(diào)用硬件中斷組織塊OB40和OB41,分別將不同的數(shù)寫入QB0。知識卡11中斷事件與中斷指令四.硬件中斷組織塊3.編寫程序

選中巡視窗口的“屬性-常規(guī)-系統(tǒng)和時鐘存儲器”,啟用系統(tǒng)存儲字節(jié)MB1?!皩B附加到中斷事件”指令A(yù)TTACH和“將OB與中斷事件分離”指令DETACH分別用于在PLC運(yùn)行時建立和斷開硬件中斷事件與中斷OB的連接。

下面使用指令A(yù)TTACH和DETACH,在出現(xiàn)I0.0上升沿事件時,交替調(diào)用硬件中斷組織塊OB40和OB41,分別將不同的數(shù)寫入QB0。知識卡11中斷事件與中斷指令四.硬件中斷組織塊3.編寫程序

圖5.21OB40程序

在硬件組態(tài)時將OB40分配給I0.0的上升沿中斷事件。該中斷事件出現(xiàn)時,調(diào)用OB40。在OB40中,斷開該事件與OB40的連接,建立該事件與OB41的連接。

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論