西門子S7-1500PLC模塊湖南代理商

組織塊(OB)是CPU操作系統(tǒng)和用戶程序的接口,只有CPU操作系統(tǒng)可以調(diào)用組織塊。操作系統(tǒng)根據(jù)不同的啟動事件(如日期時間中斷、硬件中斷等)調(diào)用不同的組織塊。因此,用戶的主程序必須寫在組織塊中。
STEP 7提供了大量的組織塊(OB)用于執(zhí)行用戶程序。OB被嵌在用戶程序中,根據(jù)某個事件的發(fā)生,執(zhí)行相應(yīng)的中斷,自動調(diào)用相應(yīng)的OB,如循環(huán)中斷OB10、硬件錯誤中斷OB40、機(jī)架故障OB86等。
當(dāng)操作系統(tǒng)調(diào)用其他組織塊時,循環(huán)程序OB1的執(zhí)行被中斷,由于OB1的優(yōu)先級低,因此任何其他的OB都可以中斷主程序并執(zhí)行自己的程序,執(zhí)行完畢后,從斷點(diǎn)處開始恢復(fù)執(zhí)行OB1。當(dāng)有比當(dāng)前執(zhí)行的程序優(yōu)先級更高的OB被調(diào)用時,程序?qū)⒅兄巩?dāng)前正在運(yùn)行的OB,轉(zhuǎn)而調(diào)用更高優(yōu)先級的OB。操作系統(tǒng)為被中斷的塊保存全部的寄存器堆棧。當(dāng)返回被中斷的塊時,寄存器的信息被恢復(fù)。這就是壓棧、出棧過程。
結(jié)構(gòu)化編程是對應(yīng)于典型的控制要求,將過程要求中的類似或相關(guān)的任務(wù)歸類,在功能或功能塊中編寫通用的程序塊,這些程序塊可以反復(fù)被調(diào)用,以控制不同的目標(biāo),形成通用的解決方案。這些的通用的程序塊就稱為結(jié)構(gòu),利用各種結(jié)構(gòu)組成程序就稱為結(jié)構(gòu)化編程??梢酝ㄟ^不同的參數(shù)調(diào)用相同的功能或通過不同的背景數(shù)據(jù)塊調(diào)用相同的功能塊。結(jié)構(gòu)化編程過程中通用的數(shù)據(jù)和代碼可以共享,其特點(diǎn)是,編寫通用程序塊,對不同的控制任務(wù)代入不同的地址和數(shù)據(jù),使更多的控制任務(wù)可以使用此通用程序塊,因此具有很高的編程和編程調(diào)試效率,并且編程結(jié)構(gòu)清晰,適合于復(fù)雜的控制任務(wù)。
在塊調(diào)用時,調(diào)用者可以是各種邏輯塊,包括用戶編寫的組織塊(OB)、FB、FC和系統(tǒng)提供的SFB和SFC,被調(diào)用的塊是除OB1外的所有邏輯塊。調(diào)用功能塊時需要為其一個背景數(shù)據(jù)塊,背景數(shù)據(jù)塊在功能塊調(diào)用的同時被打開,在調(diào)用結(jié)束時被關(guān)閉。
在給功能塊編程時使用的是形參,調(diào)用它時需要使用實參來為形參賦值。在一個項目中,可以多次調(diào)用同一個塊,如在調(diào)用控制電動機(jī)的塊時,將不同的實參賦值給形參,就可以實現(xiàn)對類似但不*相同的被控對象(如直流電動機(jī)和交流電動機(jī))的控制。
塊及子程序的調(diào)用,可以嵌套調(diào)用,即被調(diào)用的塊同時還可以調(diào)用其他的塊。嵌套調(diào)用的嵌套深度與CPU的型號相關(guān)。
嵌套調(diào)用的深度同時還與局部數(shù)據(jù)堆棧(L堆棧)有關(guān)。每個OB需要至少20 B的L內(nèi)存。當(dāng)塊A調(diào)用塊B時,塊A的臨時變量將被壓入L堆棧進(jìn)行現(xiàn)場保護(hù)。
在圖5-1中,OB1調(diào)用FB1,FB1調(diào)用FC1,應(yīng)按下面的順序創(chuàng)建塊:FC1→FB1,其背景數(shù)據(jù)塊→OB1,即編程時被調(diào)用的塊必須已經(jīng)存在。 程序被分為不同的邏輯塊,每個塊包含了完成部分控制任務(wù)所需的邏輯指令。組織塊OB1(主程序)中的指令決定在什么情況下調(diào)用哪一個塊,功能和功能塊(子程序)用來完成不同的過程任務(wù)。被調(diào)用的塊執(zhí)行完后,返回到OB的調(diào)用點(diǎn),繼續(xù)執(zhí)行OB1。模塊化編程,將一個較大的程序分成若干塊,易于實現(xiàn)多人同時對一個項目編程。由于只在需要時執(zhí)行相關(guān)的指令,因此提高了CPU的執(zhí)行效率。
線性化編程是將整個系統(tǒng)的控制程序放在主循環(huán)控制組織塊OB1(主程序)中,每一次循環(huán)掃描都要不斷地順序執(zhí)行OB1中的全部指令。這種方法的程序結(jié)構(gòu)簡單,不涉及功能、功能塊、數(shù)據(jù)塊、局部變量和中斷等比較復(fù)雜的概念。
由于所有的指令都集中在一個塊中,即使程序中的某些部分在大多數(shù)時候都不需要執(zhí)行,但每個掃描周期都需要執(zhí)行所有指令,CPU的執(zhí)行效率比較低。此外如果需要多次執(zhí)行相同或相似的程序就需要重復(fù)編寫程序。因此,這種編程方法,一般只在編寫簡單的控制系統(tǒng)程序時使用。
系統(tǒng)功能(SFC)沒有存儲功能。STEP 7提供以下的系統(tǒng)功能(SFC):復(fù)制及塊功能,檢查程序,處理時鐘和運(yùn)行時間計數(shù)器,數(shù)據(jù)傳送,在多CPU模式下的CPU之間傳送事件,處理時間日期中斷和延時中斷,處理同步錯誤、中斷錯誤和異步錯誤,有關(guān)靜態(tài)和動態(tài)系統(tǒng)數(shù)據(jù)的信息,過程映像刷新和位域處理,模塊尋址,分布式I/O,全局?jǐn)?shù)據(jù)通信,非組態(tài)連接的通信,生成與塊相關(guān)的信息等。
數(shù)據(jù)塊是用來存放用戶程序執(zhí)行時所需要的變量數(shù)據(jù)的數(shù)據(jù)區(qū)。與邏輯塊不同,在數(shù)據(jù)塊中沒有PLC的指令,STEP 7按數(shù)據(jù)形式的順序自動地為數(shù)據(jù)塊的變量分配地址;數(shù)據(jù)塊分為共享數(shù)據(jù)塊和背景數(shù)據(jù)塊。數(shù)據(jù)塊的大容量與CPU的型號有關(guān)。
數(shù)據(jù)塊中的基本數(shù)據(jù)類型有BOOL、REAL和INTEGER( INT)等。結(jié)構(gòu)化數(shù)據(jù)類型由基本數(shù)據(jù)類型組成。在STEP 7中,可以用在符號表中定義的符號來代替數(shù)據(jù)塊中的數(shù)據(jù)地址,以方便程序的編寫與閱讀。
①共享數(shù)據(jù)塊( Share Block)。共享數(shù)據(jù)塊用來存儲全局?jǐn)?shù)據(jù),所有的邏輯塊都可以在共享數(shù)據(jù)塊中進(jìn)行數(shù)據(jù)的讀寫。CPU可以同時打開一個共享數(shù)據(jù)塊和一個背景數(shù)據(jù)塊。
②背景數(shù)據(jù)塊( Instance Data Block)。背景數(shù)據(jù)塊中的數(shù)據(jù)是自動生成的,它們是功能塊的變量聲明表中除臨時變量( TEMP)外的數(shù)據(jù)。背景數(shù)據(jù)塊用于對功能塊傳遞參數(shù),FB的實參和靜態(tài)數(shù)據(jù)存放在背景數(shù)據(jù)塊中。調(diào)用功能塊時要同時背景數(shù)據(jù)塊,背景數(shù)據(jù)塊只能被特定的功能塊訪問。
西門子S7-1500PLC模塊湖南代理商