版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
S7-1200PLC程序設(shè)計(jì)基礎(chǔ)04學(xué)習(xí)目標(biāo)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)本章將介紹PLC的基本工作原理,以及S7-1200PLC的工作模式。這些知識(shí)將為后續(xù)章節(jié)中的程序設(shè)計(jì)提供必要的基礎(chǔ)。
同時(shí),本章還將討論如何切換工作模式和不同的啟動(dòng)方式,以便適應(yīng)不同的應(yīng)用場(chǎng)景。掌握S7-1200PLC的基本工作原理及工作模式,理解循環(huán)掃描工作方式的意義;了解S7-1200PLC的存儲(chǔ)器類型和存儲(chǔ)區(qū)劃分,掌握CPU的尋址方式;了解常用的數(shù)據(jù)格式和類型;了解S7-1200PLC支持的編程語(yǔ)言,掌握梯形圖的組成,理解能流的概念;了解用戶程序中不同塊的作用;了解PLC的三種編程方法。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)學(xué)習(xí)重點(diǎn)循環(huán)掃描工作方式下不同階段所執(zhí)行的任務(wù);S7-1200PLC的存儲(chǔ)區(qū)類型及尋址方式;梯形圖的基本組成和程序閱讀方法;函數(shù)和函數(shù)塊,全局?jǐn)?shù)據(jù)塊和背景數(shù)據(jù)塊的差異;三種編程方法的特點(diǎn)及差別。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理在介紹S7-1200PLC程序設(shè)計(jì)基礎(chǔ)之前,先了解一些關(guān)于PLC的工作原理。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理PLC采用循環(huán)掃描的工作方式,循環(huán)執(zhí)行用戶程序。當(dāng)PLC上電,或者由停止模式轉(zhuǎn)為運(yùn)行模式時(shí),CPU首先執(zhí)行初始化操作:清除中斷堆棧、塊堆棧的內(nèi)容,復(fù)位保存的硬件中斷,消除沒(méi)有保持功能的位存儲(chǔ)器、定時(shí)器、計(jì)數(shù)器等。如果有的話,運(yùn)行僅執(zhí)行一次的由用戶編寫(xiě)的一個(gè)或者多個(gè)啟動(dòng)組織塊。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理在完成上述初始化操作后,PLC進(jìn)入周期性循環(huán)運(yùn)行階段,即循環(huán)掃描過(guò)程。一個(gè)掃描周期分為三個(gè)階段,即:輸入采樣、程序執(zhí)行、輸出刷新。輸入采樣和輸出刷新的時(shí)間是固定的,一般只需1~2ms,而程序執(zhí)行時(shí)間則因用戶程序的長(zhǎng)度不同而差異較大。所以一個(gè)掃描周期主要取決于用戶程序的長(zhǎng)度、指令類型和掃描速度。一般PLC的掃描周期約在10~100ms之間。在PLC處于運(yùn)行模式時(shí),可以使用博途軟件的監(jiān)控功能,在“在線和診斷”數(shù)據(jù)中,可以獲得CPU運(yùn)行的最大循環(huán)時(shí)間、最小循環(huán)時(shí)間、上一次的循環(huán)時(shí)間等。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理循環(huán)時(shí)間會(huì)受到中斷處理、診斷和處理故障、通信、傳送和刪除塊、測(cè)試和調(diào)試功能、壓縮用戶程序存儲(chǔ)器等事件而延長(zhǎng)。1)輸入采樣階段在此階段,PLC依次讀取所有輸入信號(hào)的狀態(tài)和數(shù)據(jù),并將其保存在CPU內(nèi)部存儲(chǔ)器中專門(mén)設(shè)置的“過(guò)程映像輸入/輸出(I/O)區(qū)”的相應(yīng)單元內(nèi)。在完成輸入采樣任務(wù)后,進(jìn)入程序執(zhí)行和輸出刷新階段。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理在當(dāng)前掃描周期中,一旦PLC完成輸入采樣進(jìn)入下一工作階段后,過(guò)程映像輸入?yún)^(qū)就會(huì)與外界隔離,無(wú)論外設(shè)輸入情況如何變化,過(guò)程映像輸入?yún)^(qū)中保存的狀態(tài)和數(shù)據(jù)信息也不會(huì)隨之改變。必須要等到下一個(gè)掃描周期的輸入采樣階段,其狀態(tài)值才能夠被刷新。這樣,可以保證在一個(gè)循環(huán)掃描周期內(nèi),始終使用相同的輸入信號(hào)。正是由于上述原因,需要注意如果輸入的是脈沖信號(hào),那么該脈沖的寬度必須要大于一個(gè)掃描周期,才能保證無(wú)論在何種情況下該信號(hào)都能夠被正確讀入,否則很可能會(huì)造成信號(hào)的丟失。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理2)程序執(zhí)行階段PLC對(duì)用戶程序按照一定的順序進(jìn)行掃描。如果是由梯形圖表示的程序,按照從上到下、從左到右的順序逐條執(zhí)行程序指令。每條指令中需要用到的輸入/輸出狀態(tài),均從I/O映像區(qū)內(nèi)相應(yīng)的寄存器中獲取。在進(jìn)行運(yùn)算處理后,將與輸出有關(guān)的程序執(zhí)行結(jié)果寫(xiě)入到過(guò)程映像輸出區(qū)內(nèi)保存,而非直接送到輸出端子立即驅(qū)動(dòng)外部負(fù)載。該輸出值可以被后面的指令所使用。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理3)輸出刷新階段在執(zhí)行完用戶程序后,進(jìn)入到輸出刷新階段。PLC將過(guò)程映像輸出區(qū)中的內(nèi)容傳送到輸出鎖存器中,通過(guò)輸出端子驅(qū)動(dòng)輸出設(shè)備或負(fù)載,實(shí)現(xiàn)控制功能。輸出鎖存器的值將一直保存到下一個(gè)輸出刷新階段。在輸出刷新階段結(jié)束后,PLC進(jìn)入下一個(gè)循環(huán)掃描周期。根據(jù)以上的工作過(guò)程可以看出,PLC的工作特點(diǎn)是:所有輸入信號(hào)在程序執(zhí)行前統(tǒng)一讀入,并在程序執(zhí)行過(guò)程中保持不變,程序處理結(jié)果也要等到掃描周期的最后時(shí)段統(tǒng)一輸出。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理PLC循環(huán)掃描采用輸入采樣、程序執(zhí)行、輸出刷新的工作方式,有著以下幾點(diǎn)好處:1)工業(yè)現(xiàn)場(chǎng)的干擾常常是脈沖、短時(shí)間的,而PLC僅在掃描周期起始階段讀取外部輸入狀態(tài),該過(guò)程時(shí)間短,因此抗干擾能力強(qiáng)。即使在某個(gè)掃描周期干擾侵入并造成輸出錯(cuò)誤,但是由于掃描周期時(shí)間遠(yuǎn)遠(yuǎn)小于執(zhí)行器的機(jī)電時(shí)間常數(shù),因此當(dāng)干擾還未來(lái)得及使執(zhí)行器發(fā)生錯(cuò)誤動(dòng)作,下一個(gè)掃描周期的正確輸出就會(huì)將其糾正,使PLC的可靠性更高。2)在一個(gè)掃描周期內(nèi),過(guò)程映像輸入?yún)^(qū)向用戶程序提供的過(guò)程信號(hào)不變,保證了PLC在執(zhí)行用戶程序過(guò)程中的數(shù)據(jù)一致性。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理3)在掃描周期結(jié)束時(shí),將過(guò)程映像輸出區(qū)的最終結(jié)果統(tǒng)一輸出給外設(shè),避免了輸出信號(hào)的抖動(dòng)。4)由于I/O映像區(qū)位于CPU的系統(tǒng)存儲(chǔ)器區(qū),訪問(wèn)速度遠(yuǎn)大于直接訪問(wèn)外設(shè),縮短了程序執(zhí)行時(shí)間。需要注意的是,對(duì)于信號(hào)高速變化的過(guò)程和響應(yīng)速度要求較快的系統(tǒng),上述PLC的工作過(guò)程可能會(huì)漏掉變化的信號(hào),也會(huì)帶來(lái)系統(tǒng)響應(yīng)的滯后??梢圆捎昧⒓摧斎胼敵觥⒚}沖捕獲、高速計(jì)數(shù)器或中斷技術(shù)等方法克服這些問(wèn)題。4.1.1工作原理04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理S7-1200PLC共有3種工作模式:STOP(停機(jī))、RUN(運(yùn)行)、STARTUP(啟動(dòng))。CPU面板上的狀態(tài)LED指示當(dāng)前工作模式,可以由編程軟件改變CPU的工作模式。在STOP模式下,CPU僅處理通信請(qǐng)求并執(zhí)行自診斷,不執(zhí)行用戶程序,過(guò)程映像也不會(huì)自動(dòng)更新。只有在STOP模式下,才能將項(xiàng)目下載到PLC中。在STARTUP模式下,進(jìn)行上電診斷和系統(tǒng)初始化,檢查到某些錯(cuò)誤時(shí),將禁止CPU進(jìn)入到RUN模式,而是保持在STOP模式。在啟動(dòng)模式下,CPU不會(huì)處理中斷事件。在RUN模式下,程序循環(huán)OB重復(fù)執(zhí)行。RUN模式中的任意點(diǎn)處都可能發(fā)生中斷事件,這會(huì)導(dǎo)致相應(yīng)的中斷事件OB執(zhí)行。4.1.2工作模式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理在STARTUP和RUN模式下,CPU執(zhí)行如圖所示的任務(wù)。4.1.2工作模式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理在啟動(dòng)過(guò)程中,CPU依次執(zhí)行下列操作:A將物理輸入的狀態(tài)復(fù)制到輸入映像存儲(chǔ)器(I存儲(chǔ)區(qū))。B將輸出映像存儲(chǔ)器初始化為零、上一個(gè)值或組態(tài)的替換值。C執(zhí)行啟動(dòng)OB,將非保持性M存儲(chǔ)器和數(shù)據(jù)塊初始化為其初始值,并啟用組態(tài)的循環(huán)中斷事件和時(shí)鐘事件。D將所有中斷事件存儲(chǔ)到要在進(jìn)入RUN模式后處理的隊(duì)列中。E將輸出映像存儲(chǔ)器(Q存儲(chǔ)區(qū))的值寫(xiě)入到物理輸出。4.1.2工作模式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理在啟動(dòng)階段結(jié)束后,進(jìn)入RUN模式,CPU反復(fù)地依次執(zhí)行各種處理工作:①將Q存儲(chǔ)器的值寫(xiě)入物理輸出。②將物理輸入的狀態(tài)復(fù)制到I存儲(chǔ)器。③執(zhí)行一個(gè)或多個(gè)程序循環(huán)OB,首先執(zhí)行主程序OB1。④執(zhí)行自檢診斷。上述任務(wù)按順序循環(huán)執(zhí)行,這種循環(huán)工作方式稱為循環(huán)掃描。運(yùn)行模式下,在循環(huán)掃描周期的任何階段,都可以處理中斷和通信(如圖4-1所示中階段⑤)。4.1.2工作模式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理CPU模塊上沒(méi)有切換工作模式的按鈕,只能使用STEP7工具欄上的快捷按鈕或在線工具中的CPU操作面板,來(lái)切換STOP或RUN工作模式。也可以在程序中使用STP命令使CPU進(jìn)入到STOP模式。4.1.3工作模式的切換04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理S7-1200CPU支持兩種啟動(dòng)方式:冷啟動(dòng)和暖啟動(dòng)。在新下載用戶程序和硬件組態(tài)后第一次切換到RUN模式時(shí),CPU將執(zhí)行冷啟動(dòng)。此后,在下一次下載程序前的任何STOP到RUN模式的切換,都是暖啟動(dòng)方式。CPU的冷啟動(dòng)執(zhí)行下列操作:復(fù)位存儲(chǔ)器,復(fù)位輸入、初始化輸出,將裝載存儲(chǔ)器的內(nèi)容復(fù)制到工作存儲(chǔ)器。復(fù)位存儲(chǔ)器將會(huì)清除工作存儲(chǔ)器、非保持性存儲(chǔ)區(qū)、保持性存儲(chǔ)區(qū),但不會(huì)清除診斷緩沖區(qū),不會(huì)清除永久保存的IP地址。4.1.4啟動(dòng)方式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.1S7-1200PLC的工作原理執(zhí)行暖啟動(dòng)時(shí),CPU將初始化所有的非保持性系統(tǒng)和用戶數(shù)據(jù),但不對(duì)存儲(chǔ)器復(fù)位。可以使用STEP7軟件的在線與診斷視圖中的“CPU操作員面板”上的“MRES”按鈕對(duì)存儲(chǔ)器進(jìn)行復(fù)位。在STEP7軟件的項(xiàng)目視圖下,通過(guò)點(diǎn)擊項(xiàng)目樹(shù)中CPU下的“設(shè)備組態(tài)”——“常規(guī)”屬性下的“啟動(dòng)”項(xiàng),通過(guò)下拉菜單指定CPU的啟動(dòng)方法,如圖所示。4.1.4啟動(dòng)方式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址S7-1200PLC的內(nèi)部存儲(chǔ)器在功能上劃分為三個(gè)邏輯區(qū)域,而系統(tǒng)存儲(chǔ)區(qū)作為內(nèi)部存儲(chǔ)器中工作存儲(chǔ)器的功能核心,直接支撐著用戶程序的編寫(xiě)與運(yùn)行。下面首先詳細(xì)介紹內(nèi)部存儲(chǔ)器,包括它的作用和特點(diǎn)。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址S7-1200PLC提供了三種用于存儲(chǔ)用戶程序、數(shù)據(jù)和組態(tài)的存儲(chǔ)器:裝載存儲(chǔ)器、工作存儲(chǔ)器和保持性存儲(chǔ)器。不同型號(hào)CPU的裝載存儲(chǔ)器、工作存儲(chǔ)器的容量大小不同,但保持性存儲(chǔ)器的大小都是10KB。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址1.裝載存儲(chǔ)器裝載存儲(chǔ)器用于非易失性地存儲(chǔ)用戶程序、數(shù)據(jù)和組態(tài)。將項(xiàng)目下載到CPU后,CPU會(huì)先將程序存儲(chǔ)在裝載存儲(chǔ)器中。該存儲(chǔ)器具有斷電保持功能,CPU能夠在斷電后繼續(xù)保持該存儲(chǔ)區(qū)中的信息不丟失。所有CPU都有內(nèi)部的裝載存儲(chǔ)器,也可以通過(guò)插入存儲(chǔ)卡的方式將外部存儲(chǔ)卡作為裝載存儲(chǔ)器,此時(shí)內(nèi)部裝載存儲(chǔ)器將不能使用。使用大容量的存儲(chǔ)卡,可以擴(kuò)展裝載存儲(chǔ)區(qū)。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址2.工作存儲(chǔ)器工作存儲(chǔ)器是易失性存儲(chǔ)器,用于在執(zhí)行用戶程序時(shí)存儲(chǔ)用戶項(xiàng)目的某些內(nèi)容。工作存儲(chǔ)器的作用類似于電腦中的內(nèi)存,為了提高系統(tǒng)運(yùn)行速度,CPU會(huì)將一些項(xiàng)目?jī)?nèi)容如組織塊、函數(shù)塊、函數(shù)和數(shù)據(jù)塊等,從裝載存儲(chǔ)器復(fù)制到工作存儲(chǔ)器中。該易失性存儲(chǔ)區(qū)中的信息將在斷電后丟失,在恢復(fù)供電時(shí)由CPU自動(dòng)恢復(fù)。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址3.保持性存儲(chǔ)器保持性存儲(chǔ)器用于非易失性地存儲(chǔ)限量的工作存儲(chǔ)器中的數(shù)據(jù)。斷電過(guò)程中,CPU使用保持性存儲(chǔ)器存儲(chǔ)所選工作存儲(chǔ)單元(如位存儲(chǔ)器M或數(shù)據(jù)塊)的值,在上電時(shí)將這些保持性值恢復(fù)到原來(lái)的存儲(chǔ)單元。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址CPU的M存儲(chǔ)器、FB的背景數(shù)據(jù)塊和全局?jǐn)?shù)據(jù)塊中的數(shù)據(jù)可以使用保持性存儲(chǔ)區(qū)存儲(chǔ)。1)位存儲(chǔ)器(M):可以在PLC變量表或分配列表中定義位存儲(chǔ)器的保持性存儲(chǔ)器的大小。保持性位存儲(chǔ)器總是從MB0開(kāi)始向上連續(xù)貫穿指定的字節(jié)數(shù),無(wú)法設(shè)置多個(gè)保持區(qū)。通過(guò)PLC變量表或在分配列表中通過(guò)單擊“保持性”工具欄圖標(biāo),輸入從MB0開(kāi)始保留的M字節(jié)個(gè)數(shù)。例如設(shè)置10,則保持范圍為MB0-MB9共10個(gè)字節(jié)。設(shè)置方法如下圖。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址M存儲(chǔ)器保持性設(shè)置4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址2)函數(shù)塊(FB)的背景數(shù)據(jù)塊(IDB)的變量:FB可以是優(yōu)化的塊或者非優(yōu)化的塊,新建的FB默認(rèn)為優(yōu)化FB,可以在FB右鍵屬性中修改。而系統(tǒng)FB,例如PID、運(yùn)動(dòng)控制、通訊等通常都是優(yōu)化FB,無(wú)法修改優(yōu)化屬性。優(yōu)化FB的背景數(shù)據(jù)塊是優(yōu)化IDB,非優(yōu)化FB的背景數(shù)據(jù)塊是非優(yōu)化IDB。FB屬性設(shè)置方法如圖所示。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址①對(duì)于優(yōu)化FB如果FB為“優(yōu)化塊訪問(wèn)”類型,則該FB的接口編輯器將包含“保持”列。在該列中,可以單獨(dú)為每個(gè)變量選擇斷電保持性為:“保持”、“非保持”或“在IDB中設(shè)置”,如下圖所示。將此類FB置于程序中時(shí),和該FB對(duì)應(yīng)的IDB也將包含此“保持”列。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址如果選擇“在IDB中設(shè)置”,則該變量的保持性可以在背景數(shù)據(jù)塊中設(shè)置,也就是說(shuō)同一個(gè)變量可能在不同的背景數(shù)據(jù)塊中設(shè)置不同的保持性。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址②對(duì)于非優(yōu)化FB非優(yōu)化FB的接口編輯器將不包含“保持”列。將此類FB置于程序中時(shí),和該FB對(duì)應(yīng)的實(shí)例DB將包含一個(gè)可進(jìn)行編輯的“保持”列。在這里只能整體地指定其背景數(shù)據(jù)塊的保持性,不能每個(gè)變量單獨(dú)指定。打開(kāi)FB的一個(gè)背景數(shù)據(jù)塊,用戶可以在“保持”列中修改變量的保持性,如圖所示。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址3)全局?jǐn)?shù)據(jù)塊(DB)中的變量:與FB的背景數(shù)據(jù)塊相同,全局?jǐn)?shù)據(jù)塊的也分為優(yōu)化和非優(yōu)化兩種。使用優(yōu)化DB塊能夠最優(yōu)化地利用CPU內(nèi)部的數(shù)據(jù)存儲(chǔ)區(qū)。新建的DB默認(rèn)為“優(yōu)化的塊訪問(wèn)”,可以在其屬性中修改。使用優(yōu)化的全局?jǐn)?shù)據(jù)塊可以分別指定其內(nèi)部每個(gè)變量的保存特性;使用非優(yōu)化的全局?jǐn)?shù)據(jù)塊,只能對(duì)其整體指定一種保持特性。與FB的背景數(shù)據(jù)塊特性設(shè)置相同,用戶可以打開(kāi)DB,通過(guò)勾選“保持”列,設(shè)定變量的保持性,如圖所示。4.2.1內(nèi)部存儲(chǔ)器04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址系統(tǒng)存儲(chǔ)區(qū)是CPU為用戶程序提供的存儲(chǔ)組件,被劃分為若干個(gè)地址區(qū)域,見(jiàn)下表。使用指令可以在相應(yīng)的地址區(qū)內(nèi)對(duì)數(shù)據(jù)直接進(jìn)行尋址。系統(tǒng)存儲(chǔ)區(qū)用來(lái)存放用戶程序的操作數(shù)據(jù),如過(guò)程映像輸入/輸出、位存儲(chǔ)器、數(shù)據(jù)塊、局部數(shù)據(jù)、I/O輸入輸出區(qū)域和診斷緩沖區(qū)等。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址4.2.2系統(tǒng)存儲(chǔ)區(qū)存儲(chǔ)區(qū)說(shuō)明強(qiáng)制保持性過(guò)程映像輸入(I)在掃描周期開(kāi)始時(shí),從物理輸入復(fù)制。每一位對(duì)應(yīng)一個(gè)數(shù)字量輸入點(diǎn)否否物理輸入(I_:P)立即讀取物理輸入點(diǎn)是否過(guò)程映像輸出(Q)在掃描周期開(kāi)始時(shí),將輸出值復(fù)制到物理輸出否否物理輸出(Q_:P)立即寫(xiě)入物理輸出是否位存儲(chǔ)器(M)用于存儲(chǔ)用戶程序的中間運(yùn)算結(jié)果或標(biāo)志位否是臨時(shí)存儲(chǔ)器(L)用于存儲(chǔ)塊的局部臨時(shí)數(shù)據(jù),只能供塊內(nèi)部使用否否數(shù)據(jù)塊(DB)數(shù)據(jù)存儲(chǔ)器,也是FB的參數(shù)存儲(chǔ)器
否是04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址1.過(guò)程映像輸入/輸出過(guò)程映像輸入在用戶程序中的標(biāo)識(shí)為I,它是PLC接收外部輸入的數(shù)字量的窗口。輸入端可以外接常開(kāi)觸點(diǎn)或常閉觸點(diǎn),也可以接多個(gè)觸點(diǎn)組成的串、并聯(lián)電路。每次掃描循環(huán)開(kāi)始時(shí),CPU讀取數(shù)字量輸入點(diǎn)的外部輸入電路的狀態(tài),并將它們存入過(guò)程映像輸入?yún)^(qū)。過(guò)程映像輸出在用戶程序中的標(biāo)識(shí)為Q,每次循環(huán)周期開(kāi)始時(shí),CPU將過(guò)程映像輸出區(qū)的數(shù)據(jù)傳送給數(shù)字量輸出模塊,再由后者驅(qū)動(dòng)外部負(fù)載。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址用戶程序在訪問(wèn)PLC的輸入和輸出地址區(qū)時(shí),不是去讀、寫(xiě)數(shù)字量模塊中的信號(hào)狀態(tài),而是訪問(wèn)CPU內(nèi)部過(guò)程映像區(qū)。I和Q都可以按照位、字節(jié)、字和雙字來(lái)訪問(wèn),如:I0.0、IB1、QW2和QD4。程序編輯器自動(dòng)在絕對(duì)操作數(shù)前插入“%”,如:%I0.0。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址2.物理輸入在I/O點(diǎn)的地址或符號(hào)地址的后面加“:P”,可以立即訪問(wèn)物理輸入或物理輸出,如I2.4:P、Q0.0:P。通過(guò)在輸入點(diǎn)的地址附加“:P”,可以立即讀取CPU、信號(hào)模塊、信號(hào)板的數(shù)字量輸入和模擬量輸入。訪問(wèn)時(shí)使用I_:P取代I的區(qū)別在于前者的數(shù)據(jù)直接來(lái)自于被訪問(wèn)的輸入點(diǎn),而非過(guò)程映像輸入。因位數(shù)據(jù)從信號(hào)源被立即讀取,而不是從最后一次被刷新的過(guò)程映像輸入中復(fù)制,所以這種訪問(wèn)被稱為“立即讀”。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址由于物理輸入點(diǎn)從直接連接在該點(diǎn)的現(xiàn)場(chǎng)設(shè)備接收數(shù)據(jù),因此寫(xiě)物理輸入點(diǎn)是被禁止的,即I_:P的訪問(wèn)是只讀的。I_:P的訪問(wèn)還受到硬件支持的輸入長(zhǎng)度的限制。以被組態(tài)為從I4.0開(kāi)始的2DI/2DO信號(hào)板的輸入點(diǎn)為例,可以訪問(wèn)I4.0:P、I4.1:P或IB4:P,但是不能訪問(wèn)I4.2:P~I4.7:P,因?yàn)闆](méi)有使用這些輸入點(diǎn)。也不能訪問(wèn)IW4:P和ID4:P,因?yàn)樗鼈兂^(guò)了信號(hào)板使用的字節(jié)范圍。用I_:P訪問(wèn)物理輸入,不會(huì)影響存儲(chǔ)在過(guò)程映像輸入?yún)^(qū)中的對(duì)應(yīng)值。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址3.物理輸出通過(guò)在輸出點(diǎn)的地址附加“:P”,可以立即寫(xiě)CPU、信號(hào)模塊、信號(hào)板的數(shù)字量輸出和模擬量輸出。訪問(wèn)時(shí)使用Q_:P取代Q的區(qū)別在于前者的數(shù)據(jù)直接寫(xiě)給被訪問(wèn)的物理輸出點(diǎn),同時(shí)寫(xiě)給過(guò)程映像輸出。因?yàn)閿?shù)據(jù)被立即寫(xiě)給目標(biāo)點(diǎn),不用等到下次刷新時(shí)將過(guò)程映像輸出中的數(shù)據(jù)傳送給目標(biāo)點(diǎn),所以這種訪問(wèn)被稱為“立即寫(xiě)”。由于物理輸入點(diǎn)直接控制與該點(diǎn)連接的現(xiàn)場(chǎng)設(shè)備,因此讀物理輸出點(diǎn)是被禁止的,即Q_:P的訪問(wèn)是只寫(xiě)的。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址Q_:P的訪問(wèn)還受到硬件支持的輸入長(zhǎng)度的限制。以被組態(tài)為從Q4.0開(kāi)始的2DI/2DO信號(hào)板的輸入點(diǎn)為例,可以訪問(wèn)Q4.0:P、Q4.1:P或QB4:P,但是不能訪問(wèn)Q4.2:P~Q4.7:P,因?yàn)闆](méi)有使用這些輸入點(diǎn)。也不能訪問(wèn)QW4:P和QD4:P,因?yàn)樗鼈兂^(guò)了信號(hào)板使用的字節(jié)范圍。用Q_:P訪問(wèn)外設(shè)輸出,同時(shí)影響外設(shè)輸出點(diǎn)和存儲(chǔ)在過(guò)程映像輸出區(qū)中的對(duì)應(yīng)值。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址4.位存儲(chǔ)器位存儲(chǔ)器(又稱為M存儲(chǔ)器),用來(lái)存儲(chǔ)運(yùn)算中的中間操作狀態(tài)或其它控制信息??梢杂梦弧⒆止?jié)、字或雙字來(lái)讀取/寫(xiě)入位存儲(chǔ)區(qū),如:M0.0、MB1、MW10、MD100。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址5.臨時(shí)存儲(chǔ)器臨時(shí)存儲(chǔ)器用于存儲(chǔ)代碼塊被處理時(shí)使用的臨時(shí)數(shù)據(jù)。CPU在代碼塊被啟動(dòng)(對(duì)于OB)或被調(diào)用(對(duì)于FC和FB)時(shí),將臨時(shí)存儲(chǔ)器分配給代碼塊。代碼塊執(zhí)行結(jié)束后,CPU將它使用的臨時(shí)存儲(chǔ)器區(qū)重新分配給其它要執(zhí)行的代碼塊使用。CPU不對(duì)在分配時(shí)可能包含數(shù)值的臨時(shí)存儲(chǔ)單元初始化。只能通過(guò)符號(hào)地址訪問(wèn)臨時(shí)存儲(chǔ)器。臨時(shí)存儲(chǔ)器類似于M存儲(chǔ)器,兩者的主要區(qū)別在于M存儲(chǔ)器是全局的;而臨時(shí)存儲(chǔ)器是局部的,只能在生成它的代碼塊內(nèi)使用,不能與其他代碼塊共享,即使在調(diào)用時(shí),被調(diào)用者也不能訪問(wèn)調(diào)用者的臨時(shí)存儲(chǔ)器。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址6.數(shù)據(jù)塊數(shù)據(jù)塊(DataBlock)簡(jiǎn)稱為DB,用來(lái)存儲(chǔ)代碼塊使用的各種類型的數(shù)據(jù),包括中間操作狀態(tài)、功能塊的其它控制信息、以及某些指令(如定時(shí)器、計(jì)數(shù)器)需要的數(shù)據(jù)結(jié)構(gòu)。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址數(shù)據(jù)塊可以按位、字節(jié)、字、雙字訪問(wèn),在訪問(wèn)時(shí)需要指明數(shù)據(jù)塊的名稱,如:DB1.DBX2.4、DB2.DBB0、DB3.DBW20、DB4.DBD100。如果啟用了塊屬性“優(yōu)化的塊訪問(wèn)”,則不能使用絕對(duì)地址訪問(wèn)數(shù)據(jù)塊和代碼塊接口區(qū)中的臨時(shí)局部數(shù)據(jù)。數(shù)據(jù)塊有兩種類型,分別時(shí)全局?jǐn)?shù)據(jù)塊和背景數(shù)據(jù)塊。全局?jǐn)?shù)據(jù)塊中存儲(chǔ)的數(shù)據(jù)可以被所有的代碼塊訪問(wèn)。背景數(shù)據(jù)塊中存儲(chǔ)的數(shù)據(jù)只能給指定的功能塊(FB,F(xiàn)unctionBlock)使用,其結(jié)構(gòu)取決于FB界面區(qū)的參數(shù)。4.2.2系統(tǒng)存儲(chǔ)區(qū)04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址CPU可以按照位、字節(jié)、字和雙字對(duì)存儲(chǔ)單元進(jìn)行尋址。①位(b,bit):二進(jìn)制數(shù)的一位,只有0、1兩種不同取值。可以用來(lái)表示數(shù)字量的兩種不同狀態(tài),如觸點(diǎn)的斷開(kāi)、接通,線圈的斷電、通電等。②字節(jié)(B,Byte):8位二進(jìn)制數(shù)組成一個(gè)字節(jié),其中第0位為最低位,第7位為最高位。③字(W,Word):兩個(gè)字節(jié)組成一個(gè)字,其中第0位為最低位,第15位為最高位。④雙字(D,DoubleWord):兩個(gè)字組成一個(gè)雙字,其中第0位為最低位,第31位為最高位。4.2.3尋址04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址位、字節(jié)、字和雙字的組成示意圖如圖所示。4.2.3尋址04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址S7CPU不同的存儲(chǔ)單元都是以字節(jié)為單位。對(duì)位的尋址由區(qū)域標(biāo)識(shí)符、字節(jié)地址和位地址組成,如I2.4。其中的區(qū)域標(biāo)識(shí)符“I”表示尋址輸入映像區(qū),字節(jié)地址為2,位地址為4。對(duì)字節(jié)、字、雙字的尋址,由區(qū)域標(biāo)識(shí)符、數(shù)據(jù)類型和存儲(chǔ)首地址構(gòu)成。例如,MB20表示由MB20.7~MB20.0這8個(gè)位組成的一個(gè)字節(jié),其中“M”為位存儲(chǔ)區(qū)域標(biāo)識(shí)符,“B”表示字節(jié),10表示字節(jié)的地址。相鄰的兩個(gè)字節(jié)組成一個(gè)字(W),相鄰的兩個(gè)字組成一個(gè)雙字(D)。例如,MW20表示由MB20、MB21組成的一個(gè)字,該字的起始地址為20。MD20表示由MB20、MB21、MB22、MB23(或MW20、MW22)組成的一個(gè)雙字,該雙字的起始地址為20。4.2.3尋址04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.2S7-1200PLC的存儲(chǔ)器及其尋址位、字節(jié)、字、雙字的尋址示意圖如圖所示。另外需要注意的是,S7CPU中的數(shù)據(jù)存儲(chǔ)采用“高字節(jié)存入低地址”的規(guī)則。如果將16#1234存入MW20,那么MB20=16#12,MB21=16#34。4.2.3尋址04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型數(shù)據(jù)格式指的是數(shù)據(jù)在存儲(chǔ)和傳輸中的組織方式,而數(shù)據(jù)類型則表示數(shù)據(jù)的含義和可操作性。在接下來(lái)的部分中,我們將首先詳細(xì)介紹數(shù)據(jù)格式,包括常見(jiàn)的數(shù)據(jù)格式及其特點(diǎn)。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型在PLC編程指令中經(jīng)常需要用到常數(shù),常用的常數(shù)格式有如下幾種:二進(jìn)制格式:2#數(shù)據(jù)。其中“2”表示二進(jìn)制,“#”為分隔符。二進(jìn)制格式可以表示8位、16位或32位數(shù)據(jù)。如:2#10100011、2#1010001111000101等。十六進(jìn)制格式:16#數(shù)據(jù)。其中“16”表示二進(jìn)制,“#”為分隔符。十六進(jìn)制格式可以表示8位、16位或32位數(shù)據(jù)。如:16#AB、16#2D4E、16#12345678等。4.3.1數(shù)據(jù)格式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型十進(jìn)制格式:±整數(shù).小數(shù)。其中“+”表示正數(shù)、“?”表示負(fù)數(shù)。十進(jìn)制格式可以表示8位、16位或32位數(shù)據(jù)。如:+54、?3248、123.456等。ASCII碼格式:‘字符’。ASCII碼格式必須將需要表示的字符寫(xiě)在單引號(hào)內(nèi),每個(gè)ASCII碼字符占用一個(gè)字節(jié)的存儲(chǔ)空間。如:‘A’、‘HelloWorld’等。4.3.1數(shù)據(jù)格式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型數(shù)據(jù)類型用來(lái)描述數(shù)據(jù)的長(zhǎng)度(即二進(jìn)制的位數(shù))和屬性,每個(gè)指令參數(shù)至少支持一種數(shù)據(jù)類型,而有些參數(shù)支持多種數(shù)據(jù)類型。將光標(biāo)停在指令的參數(shù)域上方,便可看到給定參數(shù)所支持的數(shù)據(jù)類型。S7-1200PLC使用的數(shù)據(jù)類型有:基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型、參數(shù)類型、系統(tǒng)數(shù)據(jù)類型和硬件數(shù)據(jù)類型。這里只介紹基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型。4.3.2數(shù)據(jù)類型04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型1.基本數(shù)據(jù)類型基本數(shù)據(jù)類型見(jiàn)下表。4.3.2數(shù)據(jù)類型數(shù)據(jù)類型符號(hào)位數(shù)取值范圍常數(shù)舉例位Bool10、10、1或FALSE、TRUE字節(jié)Byte816#00~16#FF16#09、16#35字Word1616#0000~16#FFFF16#2000、16#ABCD雙字DWord3216#00000000~16#FFFFFFFF16#12345678短整數(shù)SInt8?128~12712、?12整數(shù)Int16?32768~327671234、?1234雙整數(shù)DInt32?2147483648~2147483467123456、?123456無(wú)符號(hào)短整數(shù)USInt80~255123無(wú)符號(hào)整數(shù)UInt160~655351234504S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型無(wú)符號(hào)雙整數(shù)UDInt320~42949672951234567實(shí)數(shù)(浮點(diǎn)數(shù))Real32±1.175495e?38~±3.402823e+38?3.4、1.0e?5長(zhǎng)實(shí)數(shù)(雙精度浮點(diǎn)數(shù))LReal64±2.2250738585072014e?308~±1.7976931348623158e+30812345.123456789e?40、1.2e+40字符Char816#00~16#FF'A'、'a'、'@'、'?'、'Σ'16位寬字符WChar1616#0000~16#FFFF'A'、'a'、'@'、'?'、'Σ'、中文字符、以及其它字符時(shí)間Time32T#-24d_20h_31m_23s_648ms~T#24d_20h_31m_23s_647msT#5m_30s、T#1d_2h_15m_30s_45ms日期Date16D#1990-1-1~D#2168-12-31D#2020-1-23實(shí)時(shí)時(shí)間Time_of_Day32TOD#0:0:0.0~TOD#23:59:59.999TOD#10:20:30.40004S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型1)位位數(shù)據(jù)的數(shù)據(jù)類型位Bool(布爾)型,在編程軟件中,Bool變量的值“0”和“1”用英語(yǔ)FALSE(假)和TRUE(真)表示。2)位序列數(shù)據(jù)類型字節(jié)、字、雙字統(tǒng)稱為位序列(或稱位字符串),它們不能比較大小。它們的常數(shù)一般用十六進(jìn)制數(shù)表示。3)整數(shù)整數(shù)型常數(shù)常用十進(jìn)制格式的整數(shù)賦值。有符號(hào)整數(shù)用補(bǔ)碼形式存儲(chǔ),最高位為符號(hào)位,0表示整數(shù)、1表示負(fù)數(shù),剩余位為數(shù)值位。將負(fù)數(shù)補(bǔ)碼的數(shù)值位按位取反后加1,即可得到它的絕對(duì)值。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型4)實(shí)數(shù)實(shí)數(shù)型數(shù)據(jù)為有符號(hào)的浮點(diǎn)數(shù),在編程軟件中,用十進(jìn)制小數(shù)來(lái)輸入或顯示浮點(diǎn)數(shù)。例如:40是整數(shù),而40.0為浮點(diǎn)數(shù)。實(shí)數(shù)型數(shù)據(jù)表示的基本格式是
,其中m表示尾數(shù)的小數(shù)部分,e表示指數(shù)。例如123.4可以表示為
。在輸入時(shí),m最多可以指定6位(實(shí)數(shù))或15位(長(zhǎng)實(shí)數(shù))來(lái)保持精度。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型實(shí)數(shù)為32位的浮點(diǎn)數(shù),最高位(第31位)是符號(hào)位,0代表正數(shù),1代表負(fù)數(shù)。指數(shù)占用8位(第23~30位),將指數(shù)e加上偏移量127后存入。由于規(guī)定尾數(shù)的整數(shù)部分總是1,所以第0~22位只保存尾數(shù)的小數(shù)部分m,當(dāng)m不夠23位時(shí),在其右側(cè)用0補(bǔ)齊。實(shí)數(shù)的格式如圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型長(zhǎng)實(shí)數(shù)為64位的雙精度浮點(diǎn)數(shù),只能在設(shè)置了僅使用符號(hào)尋址的塊中使用。最高位(第63位)是符號(hào)位,0代表正數(shù),1代表負(fù)數(shù)。指數(shù)占用11位(第52~62位),將指數(shù)e加上偏移量1023后存入。第0~51位保存尾數(shù)的小數(shù)部分m,當(dāng)m不夠52位時(shí),在其右側(cè)用0補(bǔ)齊。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型5)字符字符型數(shù)據(jù)寫(xiě)在英文單引號(hào)之內(nèi)。每個(gè)字符占一個(gè)字節(jié),字符型數(shù)據(jù)以ASCII格式存儲(chǔ)。寬字符(WChar)占兩個(gè)字節(jié),可以存儲(chǔ)漢字和中文標(biāo)點(diǎn)符號(hào)。6)時(shí)間與日期時(shí)間(Time)數(shù)據(jù)為有符號(hào)雙整數(shù),單位為ms,能夠表示的最大時(shí)間為24天多。在編程軟件中以日期(d)、小時(shí)(h)、分鐘(m)、秒(s)和毫秒(ms)格式表示。不需要指定全部時(shí)間單位,例如,T#5h10s和500h均有效。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型日期(Date)數(shù)據(jù)作為無(wú)符號(hào)整數(shù)值存儲(chǔ),必須指定年、月和日。實(shí)時(shí)時(shí)間(TOD,Time_of_Day)數(shù)據(jù)作為無(wú)符號(hào)雙整數(shù)存儲(chǔ),表示從指定日期的0時(shí)算起的毫秒數(shù)。必須指定小時(shí)(24小時(shí)/天)、分鐘和秒,可以選擇指定毫秒。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型2.復(fù)雜數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型由基本數(shù)據(jù)類型組合而成,用戶可以將邏輯上有關(guān)聯(lián)的基本信息組合成一個(gè)擁有自己名稱的單元,從而生成適合特定任務(wù)的數(shù)據(jù)類型。另外,通過(guò)復(fù)雜數(shù)據(jù)類型可以使眾多基本信息在塊調(diào)用中作為一個(gè)單元被傳遞,保證了程序的高度可重復(fù)性和穩(wěn)定性。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型
復(fù)雜數(shù)據(jù)類型主要有以下幾種:
1)日期時(shí)間:長(zhǎng)格式日期時(shí)間(DTL)數(shù)據(jù)類型表示由日期和時(shí)間定義的時(shí)間點(diǎn)。DTL由12個(gè)字節(jié)組成,以規(guī)定的結(jié)構(gòu)保存日期和時(shí)間信息。可以在塊的臨時(shí)存儲(chǔ)器或在數(shù)據(jù)塊中定義DTL。DTL變量的結(jié)構(gòu)見(jiàn)表4-3,每一部分均包含不同的數(shù)據(jù)類型和值范圍,指定值的數(shù)據(jù)類型必須與相應(yīng)部分的數(shù)據(jù)類型相一致。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型字節(jié)數(shù)據(jù)數(shù)據(jù)類型取值范圍0~1年UINT1970~25542月USINT1~123日USINT1~314星期USINT1(星期日)~7(星期六)年-月-日-時(shí):分:秒.納秒格式中不包括星期5時(shí)USINT0~236分USINT0~597秒U(xiǎn)SINT0~598~11納秒U(xiǎn)DINT0~99999999904S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型在輸入DTL數(shù)據(jù)時(shí)不填寫(xiě)星期,如DTL#2020-10-11-22:33:44.555。2)字符串:字符串(String)類型的變量用于存儲(chǔ)一串單字節(jié)字符,最多可以存儲(chǔ)254個(gè)字符。定義時(shí)需要在中括號(hào)內(nèi)給出字符串的長(zhǎng)度n(如String[10])。在內(nèi)存中,String類型的數(shù)據(jù)變量占用n+2個(gè)字節(jié)的存儲(chǔ)空間,其中第一個(gè)字節(jié)存儲(chǔ)字符串的最大長(zhǎng)度n,第二個(gè)字節(jié)存儲(chǔ)字符串的實(shí)際長(zhǎng)度,后面每一個(gè)字節(jié)存儲(chǔ)一個(gè)字符(從16#00到16#FF的任意值)。如果字符串的實(shí)際長(zhǎng)度不足聲明的最大長(zhǎng)度,則剩余空間留空,在處理過(guò)程中僅考慮實(shí)際占用的字符空間。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型寬字符串(WString)數(shù)據(jù)類型支持單字(雙字節(jié))值的較長(zhǎng)字符串。第一個(gè)字存儲(chǔ)最大字符數(shù),下一個(gè)存儲(chǔ)實(shí)際字符數(shù),接下來(lái)的字符串可包含多達(dá)65534個(gè)字。WString數(shù)據(jù)類型中的每個(gè)字可以是16#0000~16#FFFF之間的任意值。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型
3)數(shù)組:數(shù)組(Array)數(shù)據(jù)類型表示由固定數(shù)目的同一數(shù)據(jù)類型的元素構(gòu)成的域,數(shù)組的維數(shù)可以是一維到六維。以二位數(shù)組為例,聲明時(shí)其格式為:“Name[index1_min..index1_max,index2_min..index2_max]ofType”。其中“Name”是數(shù)組的名字,“Type”是數(shù)組元素的數(shù)據(jù)類型。中括號(hào)中需要給出每一維下標(biāo)的下限值與上限值,同一維度內(nèi)下標(biāo)的下限值與上限值間由兩個(gè)小數(shù)點(diǎn)“..”隔開(kāi),下限值與上限值可以為負(fù),但下限必須小于或等于上限;不同維度間的下標(biāo)由逗號(hào)“,”隔開(kāi)。數(shù)組不支持嵌套。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型訪問(wèn)數(shù)組中的某個(gè)元素可以通過(guò)下標(biāo)訪問(wèn)進(jìn)行。例如,聲明數(shù)組ARRAY2[1..2,3..4]ofINT,則ARRAY2[2,3]表示二維數(shù)組ARRAY2中的一個(gè)元素,第一維的下標(biāo)為2,第二維的下標(biāo)為3。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.3數(shù)據(jù)格式與數(shù)據(jù)類型4.3.2數(shù)據(jù)類型
4)結(jié)構(gòu):結(jié)構(gòu)(Struct)是由固定數(shù)目的、不同數(shù)據(jù)類型的元素構(gòu)成的一種數(shù)據(jù)類型。結(jié)構(gòu)中可以使用數(shù)組和結(jié)構(gòu)作為自身的元素,一套結(jié)構(gòu)最多可嵌套八層。用戶可以把控制中有關(guān)的數(shù)據(jù)統(tǒng)一組織在一個(gè)結(jié)構(gòu)中,作為一個(gè)數(shù)據(jù)單元來(lái)使用,為統(tǒng)一處理不同類型的數(shù)據(jù)或參數(shù)提供了方便。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言S7-1200PLC有3種編程語(yǔ)言:梯形圖(LAD,LadderDiagram)、功能塊圖(FBD,F(xiàn)unctionBlockDiagram)、結(jié)構(gòu)化控制語(yǔ)言(SCL,StructuredControlLanguage)。其中梯形圖是使用最為廣泛的編程語(yǔ)言。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言4.4.1梯形圖
梯形圖是(LAD)一種圖形編程語(yǔ)言,使用基于電路圖的表示法。梯形圖與繼電器控制電路圖很相似,直觀易懂,很容易被熟悉繼電器接觸器控制的電氣人員掌握。梯形圖由觸點(diǎn)、線圈、用方框表示的功能塊和母線組成。觸點(diǎn)表示邏輯輸入條件,如外部的按鈕、開(kāi)關(guān)和內(nèi)部條件等。線圈通常代表邏輯輸出結(jié)果,用來(lái)控制外部的指示燈、繼電器和內(nèi)部的輸出條件等。功能塊用來(lái)表示定時(shí)器、計(jì)數(shù)器或者數(shù)學(xué)運(yùn)算等附加指令。母線位于梯形圖兩邊,表示假想的邏輯電源,左邊的母線為電源的“相線”,右邊的母線為電源的“零線”。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言4.4.1梯形圖每個(gè)梯形圖程序段都必須使用線圈或功能框指令來(lái)終止。典型的梯形圖程序如圖。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言4.4.1梯形圖
梯形圖中的觸點(diǎn)和線圈實(shí)質(zhì)上都是對(duì)應(yīng)CPU內(nèi)部存儲(chǔ)器中的某一位,觸點(diǎn)代表CPU對(duì)該位的讀操作,線圈代表CPU對(duì)該位的寫(xiě)操作。為了形象地理解梯形圖,引入一個(gè)在實(shí)際上不存在的“能流”的概念。如果支路上各觸點(diǎn)均閉合,“能流”從左至右流入線圈,線圈得電,對(duì)應(yīng)的存儲(chǔ)位為“1”;如果沒(méi)有“能流”流入線圈,則對(duì)應(yīng)的存儲(chǔ)位為“0”。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言4.4.1梯形圖
在編寫(xiě)梯形圖程序時(shí),如果需要?jiǎng)?chuàng)建復(fù)雜運(yùn)算邏輯,可插入分支以創(chuàng)建并聯(lián)電路的邏輯。但需要注意的是,不能創(chuàng)建可能導(dǎo)致反向能流的分支,也不能創(chuàng)建可能導(dǎo)致短路的分支。錯(cuò)誤的梯形圖程序如圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言4.4.2功能塊圖
與梯形圖類似,功能塊圖(FBD)也是一種圖形編程語(yǔ)言。功能塊圖采用類似于數(shù)字邏輯門(mén)電路的編圖形符號(hào),邏輯直觀、使用方便。功能塊圖中的方框左側(cè)為邏輯運(yùn)算的輸入變量,右側(cè)為輸出變量,輸入、輸出端的小圓圈表示“非”運(yùn)算。方框被“導(dǎo)線”連接在一起,信號(hào)從左向右流動(dòng)。典型的功能塊圖程序如圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.4編程語(yǔ)言4.4.3結(jié)構(gòu)化控制語(yǔ)言
結(jié)構(gòu)化控制語(yǔ)言(SCL)是一種基于PASCAL的高級(jí)編程語(yǔ)言,S7-1200從V2.2版本開(kāi)始支持SCL語(yǔ)言。結(jié)構(gòu)化控制語(yǔ)言適合公式運(yùn)算、復(fù)雜的優(yōu)化算法、管理大量的數(shù)據(jù)或重復(fù)使用的功能等,可以實(shí)現(xiàn)某些不能用梯形圖或功能塊圖實(shí)現(xiàn)的功能。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)
S7程序采用塊的結(jié)構(gòu)進(jìn)行編程,即將程序分解為獨(dú)立的、自成體系的各個(gè)部件,塊類似于子程序的功能,但類型更多,功能更強(qiáng)大。在工業(yè)控制中,程序往往是非常龐大和復(fù)雜的,采用塊的概念便于大規(guī)模程序的設(shè)計(jì)和閱讀,還可以設(shè)計(jì)最新年版本化的塊程序進(jìn)行重復(fù)調(diào)用,使程序結(jié)構(gòu)清晰明了、修改方便、調(diào)試簡(jiǎn)單。采用塊結(jié)構(gòu)顯著的增加了PLC程序的組織透明性、可理解性和易維護(hù)性。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)
S7程序提供了多種不同類型的塊,見(jiàn)下表。塊(Block)簡(jiǎn)要描述組織塊(OB)操作系統(tǒng)和用戶程序之間的接口,決定用戶程序的結(jié)構(gòu)函數(shù)(FC)用戶編寫(xiě)的包含經(jīng)常使用的功能的子程序,無(wú)專用的存儲(chǔ)區(qū)函數(shù)塊(FB)用戶編寫(xiě)的包含經(jīng)常使用的功能的子程序,有專用的存儲(chǔ)區(qū)(即背景數(shù)據(jù)塊)全局?jǐn)?shù)據(jù)塊(DB)存儲(chǔ)用戶數(shù)據(jù)的數(shù)據(jù)區(qū)域,供所有的代碼塊共享背景數(shù)據(jù)塊(DB)用于保存FB的輸入、輸出參數(shù)和靜態(tài)變量,其數(shù)據(jù)在編譯時(shí)自動(dòng)生成04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)
在博途軟件中添加新塊的方法如下圖。首先在項(xiàng)目樹(shù)中雙擊“添加新塊”,然后在彈出的對(duì)話框中選擇相應(yīng)類型的塊并對(duì)其進(jìn)行設(shè)置后,單機(jī)右下角的“確定”按鈕,塊就會(huì)被自動(dòng)生成。其中組織塊還有多種類型,需要進(jìn)一步設(shè)置。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
組織塊(OB,OrganizationBlock)是操作系統(tǒng)與用戶程序的接口,由操作系統(tǒng)調(diào)用,用于控制掃描循環(huán)和中斷程序的執(zhí)行、PLC的啟動(dòng)和錯(cuò)誤處理等。CPU中的特定事件將觸發(fā)組織塊的執(zhí)行。OB無(wú)法互相調(diào)用,F(xiàn)C和FB也不能調(diào)用OB。只有發(fā)生診斷中斷或時(shí)間間隔這類事件才能啟動(dòng)OB的執(zhí)行。CPU按照OB對(duì)應(yīng)的優(yōu)先級(jí)對(duì)其進(jìn)行處理,遵從高優(yōu)先級(jí)在前低優(yōu)先級(jí)在后的順序執(zhí)行OB。在低優(yōu)先級(jí)OB運(yùn)行過(guò)程中,高優(yōu)先級(jí)OB到來(lái)會(huì)打斷低優(yōu)先級(jí)執(zhí)行。最低優(yōu)先等級(jí)為1(對(duì)應(yīng)主程序循環(huán)),最高優(yōu)先等級(jí)為26(對(duì)應(yīng)時(shí)間錯(cuò)誤中斷)。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
OB1是用于掃描循環(huán)處理的組織塊,相當(dāng)于主程序。操作系統(tǒng)調(diào)用OB1來(lái)啟動(dòng)用戶程序的循環(huán)執(zhí)行,每一次循環(huán)中調(diào)用一次組織塊OB1。組織塊中除OB1作為用于掃描循環(huán)處理主程序的組織塊外,還包括啟動(dòng)組織塊、時(shí)間錯(cuò)誤中斷組織塊、診斷組織塊、硬件中斷組織塊、循環(huán)中斷組織塊和延時(shí)中斷組織塊等。每個(gè)組織塊必須有一個(gè)唯一的編號(hào),123之前的某些編號(hào)是保留的,其它OB的編號(hào)應(yīng)大于123。主要組織塊的類型及相應(yīng)啟動(dòng)事件見(jiàn)表。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
組織塊類型啟動(dòng)事件OB號(hào)OB數(shù)量OB優(yōu)先級(jí)程序循環(huán)啟動(dòng)或結(jié)束前一個(gè)程序循環(huán)OB1或≥123≥11啟動(dòng)從STOP切換到RUN模式100或≥123≥01時(shí)間中斷已達(dá)到啟動(dòng)時(shí)間10~17或≥123≤22延時(shí)中斷延時(shí)時(shí)間結(jié)束20~23或≥123≤43循環(huán)中斷固定的循環(huán)時(shí)間結(jié)束30~38或≥123≤4804S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
硬件中斷沿上升沿(≤16個(gè))、下降沿(≤16個(gè))40~47或≥123≤5018
HSC計(jì)數(shù)值=設(shè)定值、計(jì)數(shù)方向變化、外部復(fù)位,各6個(gè)
時(shí)間錯(cuò)誤中斷超過(guò)最大循環(huán)時(shí)間,被調(diào)用的OB仍在執(zhí)行,中斷隊(duì)列溢出80≤122診斷錯(cuò)誤中斷模塊檢測(cè)到錯(cuò)誤82≤1504S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
1.程序循環(huán)組織塊需要連續(xù)執(zhí)行的程序放在程序循環(huán)(Programcycle)組織塊中,主程序OB1屬于程序循環(huán)OB,CPU在RUN模式時(shí)循環(huán)執(zhí)行OB1,可以在OB1中調(diào)用FC和FB。一般只需要一個(gè)程序循環(huán)OB,但如果用戶程序生成了其它程序循環(huán)OB,CPU將按照OB編號(hào)的順序執(zhí)行它們,首先執(zhí)行主程序OB1,然后執(zhí)行編號(hào)大于等于123的程序循環(huán)OB。程序循環(huán)OB的優(yōu)先級(jí)最低,其它事件都可以中斷它們。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
2.啟動(dòng)組織塊啟動(dòng)(Startup)組織塊用于系統(tǒng)初始化。CPU從STOP切換到RUN時(shí),執(zhí)行一次啟動(dòng)OB。執(zhí)行完后,讀入輸入過(guò)程映像,開(kāi)始執(zhí)行OB1。允許生成多個(gè)啟動(dòng)OB,默認(rèn)的是OB100,其它啟動(dòng)OB的編號(hào)應(yīng)大于等于123,CPU將按照OB編號(hào)的順序執(zhí)行它們。一般只需要一個(gè)啟動(dòng)OB??梢栽趩?dòng)OB中編程通信的初始化設(shè)置。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
3.時(shí)間中斷組織塊時(shí)間中斷(Timeofday)又稱為“日時(shí)鐘中斷”,用于在設(shè)置的日期和時(shí)間產(chǎn)生一次中斷,或者從設(shè)置的日期時(shí)間開(kāi)始,周期性地重復(fù)產(chǎn)生中斷??梢杂脤S玫闹噶顏?lái)設(shè)置、激活和取消時(shí)間中斷。時(shí)間中斷OB的編號(hào)為OB10~OB17,或大于等于123。通過(guò)雙擊項(xiàng)目樹(shù)下程序塊文件夾中已生成的循環(huán)中斷OB,打開(kāi)其屬性對(duì)話框,在“常規(guī)”選項(xiàng)卡下的“時(shí)間中斷”選項(xiàng)中,可以設(shè)置時(shí)間中斷的執(zhí)行方式、啟動(dòng)日期和時(shí)間等,如下圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
時(shí)間中斷除了可以通過(guò)組態(tài)設(shè)置激活外,也可以通過(guò)在主程序中調(diào)用時(shí)間中斷指令進(jìn)行激活及設(shè)置。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
4.延時(shí)中斷組織塊PLC的普通定時(shí)器由于受到掃描方式的影響,造成其定時(shí)精度較差。如果需要高精度的延時(shí),應(yīng)當(dāng)使用延時(shí)中斷(Timedelayinterrupt)。延時(shí)中斷OB在經(jīng)過(guò)一段指定的時(shí)間延時(shí)后,才執(zhí)行其中的程序。延時(shí)中斷OB的編號(hào)為OB20~OB23,或大于等于123。要使用延時(shí)中斷OB,必須執(zhí)行以下任務(wù):必須調(diào)用啟動(dòng)中斷指令SRT_DINT;必須將延時(shí)中斷OB作為用戶程序的一部分下載到CPU。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
通過(guò)啟動(dòng)中斷指令SRT_DINT組態(tài)事件,在過(guò)程事件出現(xiàn)后,延時(shí)一定時(shí)間再執(zhí)行延時(shí)中斷OB。在指令SRT_DINT的EN使能輸入的上升沿,啟動(dòng)延時(shí)過(guò)程,用該指令的DTIME(1~60000ms)來(lái)設(shè)置延時(shí)時(shí)間,用參數(shù)OB_NR來(lái)指定延時(shí)時(shí)間到時(shí)調(diào)用的OB編號(hào),RET_VAL是指令執(zhí)行的狀態(tài)代碼。S7-1200未使用參數(shù)SIGN,可以設(shè)置任意值。延時(shí)中斷使用完后,若不再需要使用延時(shí)中斷,則可使用CAN_DINT指令來(lái)取消已啟動(dòng)的延時(shí)中斷OB;還可以在超出所組態(tài)的延時(shí)時(shí)間之后,取消調(diào)用待執(zhí)行的延時(shí)中斷OB。需要取消調(diào)用的OB編號(hào)在OB_NR中指定。啟動(dòng)和取消延時(shí)中斷的指令格式如圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
啟動(dòng)和取消延時(shí)中斷的指令格式04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
5.循環(huán)中斷組織塊循環(huán)中斷(Cyclicinterrupt)組織塊以設(shè)定的循環(huán)時(shí)間(1~60000ms)周期性地執(zhí)行,而與程序循環(huán)OB的執(zhí)行無(wú)關(guān)。循環(huán)中斷OB的編號(hào)為OB30~OB38,或大于等于123,系統(tǒng)最多支持4個(gè)循環(huán)中斷OB。如果循環(huán)中斷OB的執(zhí)行時(shí)間大于設(shè)定的循環(huán)時(shí)間,將會(huì)啟動(dòng)時(shí)間錯(cuò)誤中斷OB。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
如果設(shè)置了多個(gè)循環(huán)中斷OB,為了防止在它們循環(huán)時(shí)間的公倍數(shù)時(shí),多個(gè)循環(huán)中斷OB同時(shí)啟動(dòng),造成連續(xù)執(zhí)行中斷程序的時(shí)間太長(zhǎng),可以通過(guò)設(shè)置相移的方式解決,這樣可使循環(huán)中斷彼此錯(cuò)開(kāi)一定的相移時(shí)間執(zhí)行。相移是相位移動(dòng)(Phaseshift)的簡(jiǎn)稱,默認(rèn)值為0,是與基本時(shí)間周期相比,啟動(dòng)時(shí)間所偏移的時(shí)間。相移的設(shè)置范圍是1到該OB設(shè)定的循環(huán)時(shí)間之間,其數(shù)值必須是0.001ms的整數(shù)倍。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
通過(guò)雙擊項(xiàng)目樹(shù)下程序塊文件夾中已生成的循環(huán)中斷OB,打開(kāi)其屬性對(duì)話框,在“常規(guī)”選項(xiàng)卡下的“循環(huán)中斷”選項(xiàng)中,可以修改已生成循環(huán)中斷OB的循環(huán)時(shí)間及相移,如圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
可以通過(guò)如圖所示,理解相移的概念。圖(a)中,沒(méi)有設(shè)置相移時(shí)間,以相同的時(shí)間間隔調(diào)用兩個(gè)OB,則低優(yōu)先級(jí)的OB塊將不能以固定間隔時(shí)間t執(zhí)行;何時(shí)執(zhí)行受高優(yōu)先級(jí)的OB執(zhí)行時(shí)間影響。圖(b)中,低優(yōu)先級(jí)的OB塊可以以固定間隔時(shí)間t執(zhí)行。相移時(shí)間應(yīng)大于較高優(yōu)先級(jí)OB塊的執(zhí)行時(shí)間。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
6.硬件中斷組織塊硬件中斷(Hardwareinterrupt)組織塊用來(lái)處理需要快速相應(yīng)的過(guò)程事件。出現(xiàn)硬件中斷事件時(shí),立即中止當(dāng)前正在執(zhí)行的程序,改為執(zhí)行硬件中斷OB。最多可以生成50個(gè)硬件中斷OB,硬件中斷OB的編號(hào)應(yīng)為OB40~OB47,或大于等于123。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
S7-1200PLC支持下列硬件中斷事件:1)CPU內(nèi)置的數(shù)字量輸入及信號(hào)板的數(shù)字量輸入的上升沿事件、下降沿事件。2)高速計(jì)數(shù)器(HSC)的實(shí)際值等于設(shè)定值(CV=PV)。3)HSC的方向改變,即計(jì)數(shù)值由增大變?yōu)闇p小,或由減小變?yōu)樵龃蟆?)HSC的數(shù)字量外部復(fù)位輸入的上升沿,計(jì)數(shù)值被復(fù)位為0。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
在執(zhí)行硬件中斷OB期間,如果同一個(gè)中斷事件再次發(fā)生,則新發(fā)生的中斷事件丟失。如果發(fā)生多個(gè)不同的中斷事件,則新發(fā)生的中斷事件進(jìn)入隊(duì)列,等待第一個(gè)中斷OB執(zhí)行完畢后依次執(zhí)行。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
在生成硬件中斷OB后,需要對(duì)硬件中斷事件及其對(duì)應(yīng)的硬件中斷OB進(jìn)行組態(tài)。首先雙擊項(xiàng)目樹(shù)下“PLC_1”中的“設(shè)備組態(tài)”,打開(kāi)設(shè)備視圖,選中CPU。然后在打開(kāi)的“屬性”選項(xiàng)卡,選中“DIx/DQx”中“數(shù)字量輸入”下的所需通道,或“高速計(jì)數(shù)器”下的所需通道,激活“啟用上升沿檢測(cè)”、“啟用下降沿檢測(cè)”或“啟用該高速計(jì)數(shù)器”。接著單擊選擇框“硬件中斷”右邊的按鈕,在彈出的對(duì)話框OB列表中選擇所需的硬件中斷OB并點(diǎn)擊確定,完成組態(tài)。此后,若出現(xiàn)該中斷事件,將會(huì)調(diào)用對(duì)應(yīng)的中斷OB。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
組態(tài)硬件中斷OB的過(guò)程如圖所示。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
7.時(shí)間錯(cuò)誤中斷組織塊如果發(fā)生以下事件之一,操作系統(tǒng)將調(diào)用時(shí)間錯(cuò)誤中斷(Timeerrorinterrupt)組織塊:1)循環(huán)程序超出指定的最大循環(huán)時(shí)間。最大循環(huán)時(shí)間在PLC的屬性中定義。2)被調(diào)用OB(如循環(huán)中斷OB和延時(shí)中斷OB)當(dāng)前仍在執(zhí)行。3)中斷隊(duì)列溢出。當(dāng)中斷的出現(xiàn)頻率超過(guò)CPU的處理頻率,就會(huì)出現(xiàn)“中斷隊(duì)列溢出”。OB80是唯一支持時(shí)間錯(cuò)誤中斷的OB。如果不存在時(shí)間錯(cuò)誤中斷OB,則CPU更改為STOP模式。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.1組織塊
8.診斷錯(cuò)誤中斷組織塊
診斷錯(cuò)誤中斷(Diagnosticerrorinterrupt)組織塊在CPU檢測(cè)到診斷錯(cuò)誤,或者具有診斷功能的模塊發(fā)現(xiàn)錯(cuò)誤時(shí)執(zhí)行。OB82是唯一支持診斷錯(cuò)誤中斷的OB。如果不存在診斷錯(cuò)誤中斷OB,則CPU將忽略該錯(cuò)誤。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
函數(shù)(FC,F(xiàn)unction)和函數(shù)塊(FB,F(xiàn)unctionBlock)都是用戶編寫(xiě)的程序塊,用來(lái)完成特定任務(wù),功能類似于子程序,可以被其它程序塊(OB、FC和FB)調(diào)用。FC或FB可以與調(diào)用它的塊共享輸入、輸出參數(shù),執(zhí)行完FC或FB后,將結(jié)果返回給調(diào)用它的程序塊。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
1.功能
FC是沒(méi)有專用存儲(chǔ)區(qū)的代碼塊,即不具有相關(guān)的背景數(shù)據(jù)塊。其臨時(shí)變量存儲(chǔ)在局部數(shù)據(jù)堆棧中,當(dāng)FC執(zhí)行結(jié)束后,這些臨時(shí)數(shù)據(jù)會(huì)丟失。如果想要長(zhǎng)期存儲(chǔ)數(shù)據(jù),需要在FC中將其傳送到全局?jǐn)?shù)據(jù)塊或位存儲(chǔ)區(qū)。在博途軟件中生成函數(shù)后,打開(kāi)函數(shù)的接口區(qū),可以在接口區(qū)中生成局部變量。局部變量只能在它所在的塊中使用,且為符號(hào)尋址訪問(wèn),在編程時(shí)程序編輯器自動(dòng)地在局部變量名前加上“#”對(duì)其進(jìn)行標(biāo)識(shí)(全局變量使用雙引號(hào),絕對(duì)地址使用“%”進(jìn)行標(biāo)識(shí))。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
函數(shù)的局部變量如圖,可以看到函數(shù)主要有以下6種局部變量:1)Input(輸入?yún)?shù)):由調(diào)用它的塊提供的輸入數(shù)據(jù)。2)Output(輸出參數(shù)):返回給調(diào)用它的塊的程序執(zhí)行結(jié)果。3)InOut(輸入/輸出參數(shù)):初值由調(diào)用它的塊提供,塊執(zhí)行后用同一個(gè)參數(shù)將它的值返回給調(diào)用它的塊。4)Temp(臨時(shí)數(shù)據(jù)):暫時(shí)保存在局部堆棧中的數(shù)據(jù)。只在執(zhí)行塊時(shí)使用臨時(shí)數(shù)據(jù);執(zhí)行完后,不再保存臨時(shí)數(shù)據(jù)的數(shù)值,它可能被別的塊的臨時(shí)數(shù)據(jù)覆蓋。在調(diào)用FC和FB時(shí),首先應(yīng)初始化它的臨時(shí)數(shù)據(jù)(寫(xiě)入數(shù)值),然后再使用它,簡(jiǎn)稱為“先賦值后使用”。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
5)Constant(常數(shù)):在塊中使用并且?guī)в新暶鞯姆?hào)名的常數(shù)。6)Return(返回):Return中會(huì)自動(dòng)生成一個(gè)與函數(shù)同名的返回值,屬于輸出參數(shù),其值返回給調(diào)用它的塊。返回值默認(rèn)的數(shù)據(jù)類型為Void,表示函數(shù)沒(méi)有返回值。在調(diào)用該函數(shù)時(shí),看不到這個(gè)返回值。如果將返回值設(shè)為其它數(shù)據(jù)類型,在函數(shù)內(nèi)部編程時(shí)可以使用此變量,調(diào)用該函數(shù)時(shí)可以在函數(shù)方框的右邊看到作為輸出參數(shù)的返回值。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
2.功能塊
FB是有專用存儲(chǔ)區(qū)(背景數(shù)據(jù)塊)的代碼塊,F(xiàn)B的典型應(yīng)用是執(zhí)行不能在一個(gè)掃描周期結(jié)束的操作。每次調(diào)用FB時(shí),都需要指定一個(gè)背景數(shù)據(jù)塊,用來(lái)保存FB的Input、Output、InOut參數(shù)和Static(靜態(tài))變量。背景數(shù)據(jù)塊隨FB的調(diào)用而打開(kāi),在調(diào)用結(jié)束時(shí)自動(dòng)關(guān)閉。
FB的數(shù)據(jù)永久性地保存在它的背景數(shù)據(jù)塊中,在FB執(zhí)行完畢后,背景數(shù)據(jù)塊中的值也不會(huì)丟失,以供下次執(zhí)行時(shí)使用。其它代碼塊也可以訪問(wèn)背景數(shù)據(jù)塊中的變量。不能直接刪除和修改背景數(shù)據(jù)塊中的變量,只能在它的函數(shù)塊的接口區(qū)中刪除和修改這些變量。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
生成FB的輸入、輸出參數(shù)和靜態(tài)變量時(shí),它們被自動(dòng)指定一個(gè)默認(rèn)值,可以修改這些默認(rèn)值。變量的默認(rèn)值被傳送給FB的背景數(shù)據(jù)塊,作為同一變量的初始值,也可以在背景數(shù)據(jù)塊中修改這些初始值。調(diào)用FB時(shí),對(duì)沒(méi)有指定實(shí)參的形參,使用背景數(shù)據(jù)塊中的初始值。在給FB、FC編程時(shí),使用的是“形參”(形式參數(shù)),調(diào)用它時(shí)需要將“實(shí)參”(實(shí)際參數(shù))賦值給形參。形參的種類有三種:輸入?yún)?shù)Input類型,輸出參數(shù)Output類型,和輸入/輸出參數(shù)InOut類型。Input參數(shù)只能讀,Output參數(shù)只能寫(xiě),InOut參數(shù)可讀可寫(xiě)。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
3.功能與功能塊的區(qū)別1)FB有背景數(shù)據(jù)塊,而FC沒(méi)有。2)只能在FC內(nèi)部訪問(wèn)它的局部變量。其它代碼塊可以訪問(wèn)FB的背景數(shù)據(jù)塊中的變量。3)FC沒(méi)有靜態(tài)變量,F(xiàn)B有保存在背景數(shù)據(jù)塊中的靜態(tài)變量。如果代碼塊有執(zhí)行完后需要保存的數(shù)據(jù),應(yīng)當(dāng)使用FB,而非FC。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
4)FB的局部變量(不包括Temp)有默認(rèn)初始值,F(xiàn)C的局部變量沒(méi)有。在調(diào)用FB時(shí)可以不設(shè)置某些有默認(rèn)值的輸入、輸出參數(shù)的實(shí)參,此時(shí)將使用這些參數(shù)在背景數(shù)據(jù)塊中的初始值或上一次執(zhí)行后的參數(shù)值。調(diào)用FC時(shí)必須為所有形參指定實(shí)參。5)FB的輸出參數(shù)不僅與外部輸入?yún)?shù)有關(guān),還與用靜態(tài)變量保存的內(nèi)部狀態(tài)數(shù)據(jù)有關(guān)。FC因?yàn)闆](méi)有靜態(tài)數(shù)據(jù),相同的輸入?yún)?shù)產(chǎn)生相同的執(zhí)行結(jié)果。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.2函數(shù)和函數(shù)塊
4.組織塊與功能、功能塊的區(qū)別出現(xiàn)事件或故障時(shí),由操作系統(tǒng)調(diào)用對(duì)應(yīng)的OB,F(xiàn)B和FC是由用戶程序在代碼塊中調(diào)用。OB沒(méi)有輸入、輸出參數(shù)和靜態(tài)變量,只有臨時(shí)局部數(shù)據(jù)。OB自動(dòng)生成的臨時(shí)局部變量包含了與啟動(dòng)OB的事件有關(guān)的信息,它們由操作系統(tǒng)提供,用戶可以自行定義和使用這些臨時(shí)局部數(shù)據(jù)。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.3數(shù)據(jù)塊
用戶程序中除了邏輯處理外,還需要對(duì)存儲(chǔ)過(guò)程狀態(tài)和信號(hào)信息的數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)以變量的形式存儲(chǔ),通過(guò)存儲(chǔ)地址和數(shù)據(jù)類型來(lái)確保數(shù)據(jù)的唯一性。數(shù)據(jù)的存儲(chǔ)地址包括I/O映像區(qū),位存儲(chǔ)器、臨時(shí)局部存儲(chǔ)區(qū)和數(shù)據(jù)塊等。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.3數(shù)據(jù)塊
數(shù)據(jù)塊(DB,DataBlock)用于存放執(zhí)行用戶程序時(shí)所需的變量數(shù)據(jù),用戶程序能夠以位、字節(jié)、字或雙字操作訪問(wèn)DB中的數(shù)據(jù),可以使用絕對(duì)地址或符號(hào)地址。與臨時(shí)數(shù)據(jù)不同,在邏輯塊(OB、FB、FC)執(zhí)行結(jié)束或數(shù)據(jù)塊關(guān)閉時(shí),DB中的數(shù)據(jù)不會(huì)被覆蓋。DB同邏輯塊一樣占用用戶存儲(chǔ)器的空間,但DB中沒(méi)有指令,而只是一個(gè)數(shù)據(jù)存儲(chǔ)區(qū),系統(tǒng)按照數(shù)據(jù)生成的順序自動(dòng)為DB中的變量分配地址。04S7-1200PLC程序設(shè)計(jì)基礎(chǔ)4.5程序結(jié)構(gòu)4.5.3數(shù)據(jù)塊
DB
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年個(gè)人影視制作合同協(xié)議
- 家裝銷售技巧培訓(xùn)課件
- 工程機(jī)械承包合同
- 家裝公司市場(chǎng)部培訓(xùn)課件
- 家禽養(yǎng)殖知識(shí)培訓(xùn)課件
- 國(guó)際空運(yùn)培訓(xùn)課件模板
- 2024年公司市場(chǎng)營(yíng)銷策劃方案
- 信息安全和道德課件
- 醫(yī)生空氣消毒培訓(xùn)
- 冬季攻勢(shì)扶貧培訓(xùn)課件
- 2025山西大地環(huán)境投資控股有限公司社會(huì)招聘116人備考筆試題庫(kù)及答案解析
- 機(jī)器人手術(shù)術(shù)后引流管管理的最佳實(shí)踐方案
- 2025年產(chǎn)品質(zhì)量復(fù)盤(pán)與2026年品控升級(jí)指南
- 2025年瓦檢員考試題庫(kù)及答案
- 2025有色金屬行業(yè)市場(chǎng)發(fā)展深度分析及未來(lái)趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2026年廣東省第一次普通高中學(xué)業(yè)水平合格性考試化學(xué)仿真模擬卷01(全解全析)
- (新教材)2025年部編人教版一年級(jí)上冊(cè)語(yǔ)文全冊(cè)期末復(fù)習(xí)課件
- GB/T 26951-2025焊縫無(wú)損檢測(cè)磁粉檢測(cè)
- 燈展活動(dòng)安全協(xié)議書(shū)
- (2026年)壓力性損傷的預(yù)防和護(hù)理課件
- 2026中國(guó)醫(yī)藥招標(biāo)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
評(píng)論
0/150
提交評(píng)論