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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

1)組織塊(OB)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

圖5.21OB40程序

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論