![plc s7-300自學(xué)系列第五章_第1頁](http://file4.renrendoc.com/view/629ad3885a5cab551b7bb39c99e0d351/629ad3885a5cab551b7bb39c99e0d3511.gif)
![plc s7-300自學(xué)系列第五章_第2頁](http://file4.renrendoc.com/view/629ad3885a5cab551b7bb39c99e0d351/629ad3885a5cab551b7bb39c99e0d3512.gif)
![plc s7-300自學(xué)系列第五章_第3頁](http://file4.renrendoc.com/view/629ad3885a5cab551b7bb39c99e0d351/629ad3885a5cab551b7bb39c99e0d3513.gif)
![plc s7-300自學(xué)系列第五章_第4頁](http://file4.renrendoc.com/view/629ad3885a5cab551b7bb39c99e0d351/629ad3885a5cab551b7bb39c99e0d3514.gif)
![plc s7-300自學(xué)系列第五章_第5頁](http://file4.renrendoc.com/view/629ad3885a5cab551b7bb39c99e0d351/629ad3885a5cab551b7bb39c99e0d3515.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第五章S7系列程序結(jié)構(gòu)5.1S7-300的程序結(jié)構(gòu)5.2程序塊類型5.3用戶定義的塊5.1S7-300的程序結(jié)構(gòu)STEP7為設(shè)計程序提供三種方法,即線性化編程、模塊化編程和結(jié)構(gòu)化編程,如圖5.1?;谶@些方法,可以選者最合適與你的應(yīng)用程序設(shè)計方法。圖5.1STEP73種設(shè)計程序的方法5.1S7-300的程序結(jié)構(gòu)1、線性化編程線性化編程類似于硬件繼電器控制電路,整個用戶程序放在循環(huán)控制組織塊OB1(主程序)中,循環(huán)掃描時不斷地依次執(zhí)行OB1中的全部指令,如圖5.2。這種方式的程序結(jié)構(gòu)簡單,不涉及功能塊、功能、數(shù)據(jù)塊、局域變量和中斷等比較復(fù)雜的概念,分析起來一目了然。這種結(jié)構(gòu)是用于編寫一些規(guī)模較小,運行過程比較簡單的控制程序。由于所有的指令都在一個塊中,即使程序中的某些部分在大多數(shù)時候并不需要執(zhí)行,每個掃描周期都要執(zhí)行所有的指令,因此沒有有效地利用CPU。此外如果要求多次執(zhí)行相同或類似的操作,需要重復(fù)編寫程序。圖5.2線性編程5.1S7-300的程序結(jié)構(gòu)2、模塊化編程程序被分為不同的邏輯塊,每個塊包含完成某些任務(wù)的邏輯指令,如圖5.3。分塊程序有更大的靈活性,適用于比較復(fù)雜、規(guī)模較大的控制工程的程序設(shè)計。組織塊OB1(即主程序)中的指令決定在什么情況下調(diào)用哪一個塊,功能和功能塊(即子程序)用來完成不同的過程任務(wù)。被調(diào)用的塊執(zhí)行完后,返回到OB1中程序塊的調(diào)用點,繼續(xù)執(zhí)行OB1。圖5.3模塊化編程模塊化編程的程序被劃分為若干個塊,易于幾個人同時對一個項目編程。由于只是在需要時才調(diào)用有關(guān)的程序塊,提高了CPU的利用率。5.1S7-300的程序結(jié)構(gòu)3、結(jié)構(gòu)化編程結(jié)構(gòu)化編程將復(fù)雜的自動化任務(wù)分解為能夠反映過程的工藝、功能或可以反復(fù)使用的小任務(wù),這些任務(wù)由相應(yīng)的程序快(或稱邏輯塊)來表示,程序運行時所需的大量數(shù)據(jù)和變量存儲在數(shù)據(jù)塊中。結(jié)構(gòu)化程序比分塊程序有更大的靈活性、繼承性。適用于比較復(fù)雜、規(guī)模較大的控制工程的程序設(shè)計。某些程序塊可以用來實現(xiàn)相同或相似的功能。這些程序塊是相對獨立的,它們被OB1或別的程序塊調(diào)用,如圖5.4。圖5.4結(jié)構(gòu)化編程5.2程序塊類型
S7-300/400PLC的程序分系統(tǒng)程序和用戶程序。系統(tǒng)程序是協(xié)調(diào)PLC內(nèi)部事務(wù)的程序,與控制對象特定的任務(wù)無關(guān),在從經(jīng)銷商購買CPU硬件的時候,CPU里面本身就包含了系統(tǒng)程序。系統(tǒng)程序完成PLC的啟動/停止、I/O映像區(qū)的更新、用戶程序的調(diào)用、中斷的響應(yīng)、錯誤及通信處理等任務(wù)。用戶程序需要用戶使用STEP7編程軟件編寫程序,然后下載到CPU中,可以完成需要的特定控制任務(wù)。用戶程序包含用戶編寫的組織塊(OB)、FB、FC和系統(tǒng)提供的SFB(系統(tǒng)功能塊)與系統(tǒng)功能(SFC),被調(diào)用的塊是OB之外的邏輯塊。調(diào)用功能塊時需要為它指定一個背景塊,后者隨功能塊的調(diào)用而打開,在調(diào)用結(jié)束時自動關(guān)閉。圖5.5STEP7調(diào)用塊的過程示意圖,OB1調(diào)用FB1,F(xiàn)B1調(diào)用FC1,應(yīng)按下面的順序創(chuàng)建塊:FC1、FB1及背景數(shù)據(jù)塊OB1,即編程時被調(diào)用的塊應(yīng)該是已經(jīng)存在的。5.2程序塊類型圖5.5塊調(diào)用的分層結(jié)構(gòu)5.3用戶定義的塊STEP7將用戶編寫的程序和程序中所需要的數(shù)據(jù)放置在塊中,使單個的程序部件標(biāo)準(zhǔn)化。通過在塊內(nèi)或塊之間類似子程序的調(diào)用,使用戶程序結(jié)構(gòu)化,可以簡化程序組織,使程序易于修改、查錯和調(diào)試。塊結(jié)構(gòu)顯著增加了PLC程序的組織透明性、可理解性和易維護(hù)性。STEP7軟件中主要的各種塊的簡要說明見表5.1所示。表5.1邏輯塊和數(shù)據(jù)塊5.3.1組織塊(OB)
組織塊是CPU的操作系統(tǒng)與用戶程序的接口,由操作系統(tǒng)調(diào)用,用于控制掃描循環(huán)和中斷程序的執(zhí)行、PLC的啟動和錯誤處理等。OB與不同的CPU類型是相關(guān)的,某一型號的CPU支持哪些OB是確定的。例如,OB35和OB40可以在CPU315-2DP中使用,而OB36和OB41則不行。因此用戶只能編寫目標(biāo)CPU支持的OB。OB1是對應(yīng)于循環(huán)執(zhí)行的主程序的程序塊,它是STEP7程序的主干。其他大多數(shù)OB則對應(yīng)于不同的中斷處理程序(另外還有啟動程序和背景程序等非中斷類的OB)。與每一個OB緊密相連的是它對應(yīng)的類型和優(yōu)先級。OB的類型指出了它的功能,例如延時中斷、硬件中斷等;OB的優(yōu)先級則用于表明一個OB是否可以被另外一個OB中斷,優(yōu)先級較低的OB總是可以被優(yōu)先級較高的OB中斷。在S7系列CPU中,背景循環(huán)OB90的優(yōu)先級最低,其次就是OB1,它的優(yōu)先級是1,因此OB1通??偸强梢员黄渌腛B中斷。對于S7-300的CPU各個OB的優(yōu)先級都是固定的,用戶無法更改。5.3.1組織塊(OB)
SIMATICS7系列CPU的全部組織塊的資源及優(yōu)先權(quán)等級見表5.2。不同的CPU模板具有不同的功能,因此并不是任何CPU模板都具有表5.1所示的全部組織塊資源,如CPU312IFM只有OB1,OB40和OB100。表5.2組織塊5.3.1組織塊(OB)表5.2組織塊1、OB1(循環(huán)組織塊,又稱主程序)S7CPU的操作系統(tǒng)定期執(zhí)行OB1。當(dāng)操作系統(tǒng)完成啟動后,將啟動循環(huán)執(zhí)行OB1。在OB1中可以調(diào)用其他功能(FC、SFC)和功能塊(FB、SFB)。執(zhí)行OB1后,操作系統(tǒng)發(fā)送全局?jǐn)?shù)據(jù)。重新啟動OB1之前,操作系統(tǒng)會將過程映像輸出表寫入輸出模塊中、更新過程映像輸入表以及接收CPU的任何全局?jǐn)?shù)據(jù)。操作系統(tǒng)在運行期受監(jiān)視的所有OB模塊中,OB1的優(yōu)先級最低,也就是除OB90之外的所有OB塊均可中斷OB1的執(zhí)行。S7專門有監(jiān)視運行OB1的掃描時間的時間監(jiān)視器,最大掃描時間的默認(rèn)為150ms。用戶編程時可以使用SFC43“RE_TRIGR”來重新啟動時間監(jiān)視。如果用戶程序超出了OB1的最大掃描時間,則操作系統(tǒng)將調(diào)用OB80(時間錯誤OB塊),如果沒有發(fā)現(xiàn)OB80,則CPU將轉(zhuǎn)為STOP模式。除了監(jiān)視最大掃描時間外,還可以保證最小掃描時間。操作系統(tǒng)將延遲啟動新循環(huán)(將過程映像輸出表寫入輸出模塊中),直至達(dá)到最小掃描時間為止。在OB1中系統(tǒng)定義了如表5.3所示的本地數(shù)據(jù),其地址從L0.0~L19.7,地址從L20.0以上的本地數(shù)據(jù)允許用戶定義。5.3.1組織塊(OB)表5.3OB1中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB1_EV_CLASSBYTE0.00~3位=1事件等級;4~7位是標(biāo)識,=1表示OB1被激活OB1_SCAN_1BYTE1.0B#16#01:完成暖啟動B#16#02:完成熱啟動B#16#03:完成主循環(huán)B#16#04:完成冷啟動B#16#05:主站-保留站切換和停止上一主站之后新主站CPU的首個OB1循環(huán)OB1_PRIORITYBYTE2.0優(yōu)先級1OB1_OB_NUMBERBYTE3.0OB編號(01)OB1_RESERVERD_1BYTE4.0保留OB1_RESERVERD_2BYTE5.0保留OB1_PREV_CYCLEINT6.0上一次掃描的運行時間(ms)OB1_MIN_CYCLEINT8.0自上次啟動后的最小周期(ms)OB1_MAX_CYCLEINT10.0從上次啟動后的最大周期(ms)OB1_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME2、時間中斷組織塊(OB10~OB17)時間中斷組織塊可以單次運行,也可以定期運行:每分鐘、每小時、每天、每月、每個月末。對于每月執(zhí)行的時間中斷OB,只可將1、2、…、28日作為起始日期。要啟動時間中斷,必須先設(shè)置中斷,然后再將其激活。有以下4種可能的啟動方式:1)自動啟動時間中斷。一旦使用STEP7設(shè)置并激活了時間中斷,即自動啟動時間中斷;2)使用STEP7設(shè)置時間中斷,然后通過調(diào)用程序中的SFC30“ACT_TINT”來激活它;3)通過調(diào)用SFC28“SET_TINT”來設(shè)置時間中斷,然后通過調(diào)用SFC30“ACT_TINT”來激活它;4)使用SFC39~SFC42禁用或延遲和重新啟用時間中斷。由于時間中斷僅以指定的時間間隔發(fā)生,因此在執(zhí)行用戶程序期間,某些條件可能會影響OB的操作。表5.4列出了其中的一些條件,并說明了該條件對執(zhí)行時間中斷OB的影響。在OB10~OB17中系統(tǒng)定義了如表5.5(表中的符號以O(shè)B10為例)所示的本地數(shù)據(jù),其中地址從L0.0~L19.7,地址從L20.0以上的本地數(shù)據(jù)允許用戶定義。表5.4影響時間中斷OB的條件條件結(jié)果用戶程序調(diào)用SFC29(CAN_TINT)并取消時間中斷操作系統(tǒng)清除了時間中斷的啟動事件。如果需要執(zhí)行OB,必須再次設(shè)置啟動事件并再次調(diào)用OB之前激活它用戶程序試圖激活時間中斷OB,但未將OB加載到CPU中操作系統(tǒng)調(diào)用OB85.如果OB85尚未編程(裝載到CPU中),則CPU將轉(zhuǎn)為STOP模式當(dāng)同步或更正CPU的系統(tǒng)時鐘時,用戶提前設(shè)置了時間并跳過時間OB的啟動事件日期或時間操作系統(tǒng)調(diào)用OB80并對時間OB的編號和OB80中的啟動事件信息進(jìn)行編碼。隨后操作系統(tǒng)將運行一次時間OB,而不管本應(yīng)執(zhí)行此OB的次數(shù)。OB80的啟動事件信息給出了第一次跳過時間OB的DATE_AND_TIME當(dāng)同步或更正CPU的系統(tǒng)時鐘時,推后設(shè)置了時間以使OB的啟動事件日期或時間得以修復(fù)S7-400CPU和CPU318:如果在推后設(shè)置時鐘之前已激活了時間OB,則不會再次調(diào)用它。S7-300CPU:執(zhí)行時間OBCPU通過暖啟動或冷啟動運行有SFC組態(tài)的所有時間OB會被改回在STEP7中指定的組態(tài)。如果已為相應(yīng)的OB的單次啟動組態(tài)了時間中斷,使用STEP7對其進(jìn)行了設(shè)置,并將其激活,則當(dāng)所有組態(tài)的啟動時間為已過去的時間(相對于CPU的實時時鐘)時,會在暖啟動或冷重啟操作系統(tǒng)后調(diào)用一次OB當(dāng)發(fā)生下一時間間隔的啟動事件時,仍執(zhí)行時間OB操作系統(tǒng)調(diào)用OB80.如果OB80沒有編程,則CPU轉(zhuǎn)為STOP模式。如果裝載了OB80,則會首先執(zhí)行OB80和時間中斷OB,然后再執(zhí)行請求中斷表5.5OB10中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB10_EV_CLASSBYTE0.00~3位=1事件等級;4~7位是標(biāo)識,=1表示OB激活OB10_STRT_INFOBYTE1.0B#16#11:OB10的啟動請求(B#16#12:OB11的啟動請求)(B#16#18:OB17的啟動請求)OB10_PRIORITYBYTE2.0分配的優(yōu)先級,缺省值為2OB10_OB_NUMBERBYTE3.0OB編號(10~17)OB10_RESERVERD_1BYTE4.0保留OB10_RESERVERD_2BYTE5.0保留OB10_PREIOD_EXEWORD6.0OB以指定的時間間隔執(zhí)行
W#16#0000:單次W#16#0201:每分鐘一次W#16#0401:每小時一次W#16#1001:每天一次W#16#1201:每周一次W#16#1401:每月一次W#16#1801:每年一次W#16#2001:月末OB10_RESERVERD_3INT8.0保留OB10_RESERVERD_4INT10.0保留OB10_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME5.3.1組織塊(OB)【例5-1】使用STEP7設(shè)置并激活時間中斷。首先建立一個完整項目,如圖5.6所示,然后單擊項目中的“SIMATIC300(1)”,打開右邊的硬件圖表,如圖5.7所示,將自動彈出硬件組態(tài)畫面,如圖5.8所示,把電源和CPU等放到機(jī)架相應(yīng)的位置上。圖5.6建立一個項目并完成項目中的目錄5.3.1組織塊(OB)圖5.7打開硬件組態(tài)畫面
在硬件組態(tài)畫面,雙擊機(jī)架上的CPU,如圖5.8所示,將彈出CPU屬性畫面。在CPU屬性畫面點擊“時刻中斷”,打開時間中斷設(shè)置畫面,如圖5.9所示選擇“激活”,要求每分鐘執(zhí)行并寫上執(zhí)行OB10的日期和時間,圖中的開始日期時間是2008年10月2日10時00分,然后點擊“確定”。最后在硬件組態(tài)畫面點擊保存和編譯快捷圖標(biāo),如圖5.10所示完成保存和編譯。圖5.8硬件組態(tài)畫面圖5.9在CPU屬性欄設(shè)置OB10時間中斷5.3.1組織塊(OB)圖5.10把硬件組態(tài)信息編譯并保存
在管理畫面點擊“塊”,然后在右邊的目錄下點擊鼠標(biāo)右鍵,在彈出的畫面中點擊“插入新對象”,選擇添加“組織塊”,如圖5.11所示。在生成組織塊的過程中,選擇組織塊OB10及寫上附加信息,如圖5.12所示,然后點擊“確定”。5.3.1組織塊(OB)圖5.11在管理畫面插入OB105.3.1組織塊(OB)圖5.12在生成OB10過程中寫上附加信息
在管理畫面塊的目錄中雙擊OB10的圖標(biāo),打開OB10編程界面,如圖5.13所示。在OB10里編程如圖5.14所示的程序,然后保存。圖5.13在管理畫面打開OB10圖5.14在OB10里編寫的程序5.3.1組織塊(OB)在管理畫面的目錄塊中點擊“SIMATIC300(1)”,然后點擊下載快捷圖標(biāo),如圖5.15所示,把整個項目的信息下載到CPU中。圖5.15把整個項目(站)的信息下載到CPU中5.3.1組織塊(OB)最后把CPU工作方式選擇到運行模式,監(jiān)控OB10的程序狀態(tài),可以看到每分鐘MW10的數(shù)值會加1,如圖5.16所示。圖5.16在CPU運行狀態(tài)下監(jiān)控OB10的程序狀態(tài)5.3.1組織塊(OB)【例5-2】通過調(diào)用SFC28“SET_TINT”來設(shè)置時間中斷,然后通過調(diào)用SFC30“ACT_TINT”來激活它。這個例子沒看懂首先建立一個項目并完成項目中的目錄,然后進(jìn)行硬件配置并把硬件配置的信息保存并編譯。在管理畫面塊目錄中插入OB10,如圖5.17所示。在OB10的生成過程中,寫上附加信息,如圖5.18所示。圖5.17在管理畫面里插入OB105.3.1組織塊(OB)圖5.18在生成OB10的過程中寫上附加信息在管理畫面的塊目錄里打開OB10,如圖5.19所示。在OB10里編寫程序,如圖5.20所示,然后保存。圖5.19在管理畫面打開OB10圖5.20在OB10里編寫的程序5.3.1組織塊(OB)在管理畫面的塊目錄里打開OB1,如圖5.21所示。在OB1里編寫程序,如圖5.22所示,然后保存。圖5.21在管理畫面打開OB15.3.1組織塊(OB)5.3.1組織塊(OB)5.3.1組織塊(OB)5.3.1組織塊(OB)5.3.1組織塊(OB)在管理畫面的塊目錄中插入OB80并打開OB80。在OB80里編寫如圖5.23所示程序并保存。圖5.23在OB80里編寫的程序5.3.1組織塊(OB)圖5.24是完成OB1和OB80的程序后在管理畫面的塊目錄中的內(nèi)容。然后在管理畫面把整個目錄信息下載到CPU中。圖5.24管理畫面中塊的信息5.3.1組織塊(OB)
在調(diào)試時候重點監(jiān)控M103.2和M103.4的狀態(tài)。運行CPU,可以看到M103.4=1,表示OB10已經(jīng)下載到CPU,如圖5.25(a);當(dāng)接通M0.0時,可以看到M103.2=1,表示激活了OB10,并看到MW10每分鐘加3;當(dāng)接通M0.4時,看到M103.2=0,表示OB10已經(jīng)被取消激活,MW10停止加3,如圖5.25(b)。(a)5.3.1組織塊(OB)(b)圖5.25PLCSIM仿真畫面5.3.1組織塊(OB)3、延時中斷組織塊(OB20~OB23)S7提供多達(dá)4個在指定延遲后執(zhí)行的OB(OB20~OB23)。每個延時OB均可通過調(diào)用SFC32(SRT_DINT)來啟動。延遲時間是SFC32的一個輸入?yún)?shù)。當(dāng)用戶程序調(diào)用SFC32(SRT_DINT)時,需要提供OB編號、延遲時間和用戶專用的標(biāo)識符。經(jīng)過指定的延遲后,相應(yīng)的OB將會啟動??梢允褂肧FC33取消尚未啟動的延時中斷,可以使用SFC34訪問延時中斷組織塊的狀態(tài),可以使用SFC39~SFC42來禁用或延遲并重新使能延遲中斷。只有當(dāng)CPU處于RUN模式時才會執(zhí)行延時OB。暖啟動或冷啟動將清除延時OB的所有啟動事件。5.3.1組織塊(OB)延遲時間(單位為ms)和OB編號一起傳送給SFC32,時間到期后,操作系統(tǒng)將啟動相應(yīng)的OB。設(shè)置延時中斷,最基本的步驟是:調(diào)用SFC32(SRT_DINT),并將延時中斷OB作為用戶程序的一部分下載到CPU。如果發(fā)生了操作系統(tǒng)試圖啟動一個尚未裝載的OB,并且用戶在調(diào)用SFC32(SRT_DINT)時指定了其編號,或在完全執(zhí)行延時OB之前發(fā)生延時中斷的下一個啟動事件時,操作系統(tǒng)將調(diào)用異步錯誤OB。在OB20~OB23中定義了如表5.6(表中的符號以O(shè)B20為例)所示的本地數(shù)據(jù),其地址從L0.0~L19.7,地址從L20.0以上的本地數(shù)據(jù)允許用戶定義。表5.6OB20中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB20_EV_CLASSBYTE0.00~3位=1事件等級;4~7位是標(biāo)識,=1表示OB激活OB20_STRT_INFOBYTE1.0B#16#21:OB20的啟動請求(B#16#22:OB21的啟動請求)(B#16#23:OB22的啟動請求)(B#16#24:OB23的啟動請求)OB20_PRIORITYBYTE2.0分配的優(yōu)先級,缺省值OB20~OB23分別是3~6OB20_OB_NUMBERBYTE3.0OB編號(20~23)OB20_RESERVERD_1BYTE4.0保留OB20_RESERVERD_2BYTE5.0保留OB20_SIGNWORD6.0用戶ID:來自調(diào)用SFC32(SRT_DINT)的輸入?yún)?shù)SIGNOB20_DTIMETIME8.0已組態(tài)的延遲時間(單位為ms)OB20_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME5.3.1組織塊(OB)【例5-3】延時中斷組織塊例子:通過調(diào)用SFC32來設(shè)置延時中斷,通過調(diào)用SFC33來取消延時中斷。這個例子沒看懂首先建立完整的項目目錄,再完成硬件組態(tài)并編譯保存,如圖5.26所示。圖5.26完整硬件組態(tài)5.3.1組織塊(OB)在管理畫面的塊目錄中打開OB1,在OB1里編寫如圖5.27所示的程序并保存。5.3.1組織塊(OB)5.3.1組織塊(OB)圖5.27在OB1里編寫的程序在管理畫面的目錄中插入OB20,在OB20里編寫如圖5.28所示程序并保存;在管理畫面的塊目錄中插入OB85,在OB85里編寫如圖5.29所示程序并保存。完成OB1、OB20和OB85后管理畫面的塊目錄如圖5.30所示。圖5.28在OB20里編寫程序圖5.29在OB85里編寫的程序圖5.30完成OB1、OB20和OB85后管理畫面的塊目錄最后在管理畫面里把延時中斷的整個項目下載到CPU,調(diào)試時注意監(jiān)控M17.2和M17.4的狀態(tài)。當(dāng)把CPU扳動到運行模式時,可以看到M17.4=1,說明OB20已經(jīng)下載到CPU中。當(dāng)接通M0.1啟動延時中斷時,M17.2=1;當(dāng)延時時間到,Q0.0=1。當(dāng)接通M0.3取消延時中斷或延時時間到后,M17.2=0。5.3.1組織塊(OB)4、循環(huán)中斷組織塊(OB30~OB38)S7提供了9個循環(huán)中斷OB(OB30~OB38),可以指定固定時間間隔來中斷用戶程序。循環(huán)中斷OB的等距啟動時間是由時間間隔和相位偏移量決定的。用戶編寫程序時,必須確保每個循環(huán)中斷OB的運行時間遠(yuǎn)遠(yuǎn)小于其時間間隔。如果因時間間隔已到期,在預(yù)期的再次執(zhí)行前未完全執(zhí)行循環(huán)中斷OB,則啟動時間錯誤OB80,稍后將執(zhí)行導(dǎo)致錯誤的循環(huán)中斷。在編寫程序時如果有多個循環(huán)中斷OB,設(shè)置要求循環(huán)中斷的時間間隔又成整數(shù)倍,那么有可能會出現(xiàn)處理循環(huán)中斷的時間過長而引起超出掃描周期時間錯誤。為了避免這種情況,最好定義一個偏移量時間,偏移量時間務(wù)必要小于間隔時間。偏移量時間使循環(huán)間隔時間已到,延時偏移量的時間再循環(huán)中斷,偏移量時間不會影響循環(huán)中斷的周期。用戶編寫程序時可使用SFC39~SFC42來禁用或延遲,并重新啟動循環(huán)中斷。使用SFC39來取消激活循環(huán)中斷,使用SFC40用來激活循環(huán)中斷。在OB30~OB38中系統(tǒng)定義了如表5.7(表中的符號以O(shè)B35為例)所示的本地數(shù)據(jù),其地址從L0.0~L19.7,地址從L20.0以上的本地數(shù)據(jù)允許用戶定義。表5.7OB35中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB35_EV_CLASSBYTE0.0事件等級和標(biāo)識符B#16#11:中斷處于激活狀態(tài)OB35_STRT_INFOBYTE1.0B#16#30:具有特殊標(biāo)準(zhǔn)的循環(huán)中斷OB的請求(僅適用于H-CPU,且僅當(dāng)對其進(jìn)行了明確組態(tài)后)B#16#31:OB30的啟動請求B#16#39:OB38的啟動請求
OB35_PRIORITYBYTE2.0分配的優(yōu)先級,缺省值OB30~OB38分別是7~15OB35_OB_NUMBERBYTE3.0OB編號(30~38)OB35_RESERVERD_1BYTE4.0保留OB35_RESERVERD_2BYTE5.0保留OB35_PHASE_OFFSETWORD6.0相位偏移量(單位:ms)OB35_RESERVERD_3INT8.0保留OB35_EXC_FREQINT10.0時間間隔(單位為ms)OB35_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME5.3.1組織塊(OB)【例5-4】循環(huán)中斷組織塊例子:通過STEP7設(shè)置循環(huán)中斷。首先完成項目的所有目錄。接著在管理畫面打開硬件組態(tài)畫面。在硬件組態(tài)畫面,雙擊機(jī)架上的CPU,自動彈出CPU屬性設(shè)置畫面。在CPU屬性設(shè)置畫面打開周期性設(shè)置畫面,設(shè)置OB35循環(huán)中斷執(zhí)行時間為1000ms,如圖5.31所示,然后點擊確定。圖5.31完成CPU屬性中周期性中斷設(shè)置5.3.1組織塊(OB)在管理畫面的塊目錄里插入OB35,打開OB35編寫如圖5.32所示的程序并保存。圖5.32在OB35里編寫的程序最后在管理畫面把整個項目的信息下載到CPU中,運行PLC,監(jiān)控OB35程序狀態(tài),可以看到MW10的數(shù)字每一秒中加2,如圖5.33所示,表示OB35被激活了。5.3.1組織塊(OB)圖5.33運行CPU監(jiān)控OB35程序狀態(tài)5.3.1組織塊(OB)【例5-5】循環(huán)中斷組織塊例子:通過調(diào)用SFC40來設(shè)置循環(huán)中斷,通過調(diào)用SFC39來取消循環(huán)中斷。在循環(huán)中斷組織塊例【5-4】的基礎(chǔ)上,在管理畫面的塊目錄里打開OB1,并在OB1編寫如圖5.34所示程序,然后保存。圖5.34在OB1里編寫的程序最后在管理畫面把整個項目的信息下載到CPU中,運行PLC,監(jiān)控OB35程序狀態(tài),可以看到MW10的數(shù)值每秒鐘加2;當(dāng)接通M0.0時,監(jiān)控MW10的數(shù)值不再增加了,說明OB35循環(huán)中斷被取消激活了;當(dāng)接通M0.2時,可以看到MW10的數(shù)值又恢復(fù)了每秒鐘加2,說明OB35循環(huán)中斷被重新激活了。5.3.1組織塊(OB)5、硬件中斷組織塊(OB40~OB47)S7提供了8個獨立的硬件中斷,每一中斷都具有自己的OB。硬件中斷組織塊是對具有中斷能力的數(shù)字量信號模塊(SM)、通信處理(CP)和功能模塊(FM)信號變化進(jìn)行中斷響應(yīng)。對于具有中斷能力的數(shù)字信號模塊(SM),可以使用STEP7軟件在硬件組態(tài)設(shè)置硬件中斷,也可以使用SFC55~SFC57為模塊的硬件中斷分配參數(shù)來實現(xiàn)設(shè)置硬件中斷。對具有中斷能力的通信處理器(CP)和功能模塊(FM),可以使用STEP7軟件在硬件組態(tài)時按照向?qū)υ捒蛟O(shè)置相應(yīng)的參數(shù)來實現(xiàn)設(shè)置中斷。在OB40~OB47中系統(tǒng)定義了如表5.8(表中的符號以O(shè)B40為例。)所示的本地數(shù)據(jù),其地址從L0.0~L19.7,地址從L20.0以上的本地數(shù)據(jù)允許用戶定義。表5.8OB40中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB40_EV_CLASSBYTE0.0事件等級和標(biāo)識符B#16#11:中斷處于激活狀態(tài)OB40_STRT_INFOBYTE1.0B#16#41:通過中斷線1中斷B#16#42:通過中斷線2中斷(僅限S7-400)B#16#43:通過中斷線3中斷(僅限S7-400)B#16#44:通過中斷線4中斷(僅限S7-400)B#16#45:通過PC觸發(fā)中斷OB40_PRIORITYBYTE2.0分配的優(yōu)先級,缺省值OB40~OB47分別是16~23OB40_OB_NUMBERBYTE3.0OB編號(40~47)OB40_RESERVERD_1BYTE4.0保留OB40_IO_FLAGBYTE5.0輸入模塊:B#16#54輸出模塊:B#16#55OB40_MDL_ADDRWORD6.0觸發(fā)中斷的模塊的邏輯地址(字節(jié)為單位)OB40_POINT_ADDRINT8.0對于數(shù)字模塊:模塊上具有輸入狀態(tài)的位域(位0對應(yīng)于第一個輸入)可在給定模塊的說明中找到為模塊中的通道分配從OB40_POINT_ADDR起始的位。對于模擬模塊:位域,指出哪個通道已超出哪條限制對于CP或IM:模塊中斷狀態(tài)(與用戶程序無關(guān))OB35_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME5.3.1組織塊(OB)6、同步循環(huán)組織塊(OB61~OB65)同步循環(huán)中斷OB是通過循環(huán)中斷選擇在具有DP循環(huán)的同步循環(huán)中啟動的程序。OB61充當(dāng)同步循環(huán)中斷TSAL1的接口OB。可以將OB61的優(yōu)先級設(shè)置為0(取消選定OB)和2~26之間的數(shù)。在使用L或T命令直接訪問以及使用SFC14“DPRD_DAT”和SFC15“DPWR_DAT”時,請避免訪問已為其過程映像區(qū)分配到OB61~OB65的連接的I/O區(qū)域。在OB61~OB65中系統(tǒng)定義了如表5.9(表中的符號以O(shè)B61為例)所示的本地數(shù)據(jù),其地址從L0.0~L19.7,地址L20.0以上的本地數(shù)據(jù)允許用戶定義。5.3.1組織塊(OB)表5.9OB61中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB61_EV_CLASSBYTE0.0事件等級和標(biāo)識符B#16#11:中斷處于激活狀態(tài)OB61_STRT_INFBYTE1.0B#16#64:OB61的啟動請求B#16#65:OB62的啟動請求B#16#66:OB63的啟動請求B#16#67:OB64的啟動請求OB61_PRIORITYBYTE2.0分配的優(yōu)先級:缺省值為25OB61_OB_NUMBERBYTE3.0OB編號(61~64)OB61_RESERVERD_1BYTE4.0保留OB61_RESERVERD_2BYTE5.0保留OB61_GC_VIOLBOOL6.0GC錯誤OB61_FIRSTBOOL6.1啟動或停止?fàn)顟B(tài)后的首次使用5.3.1組織塊(OB)續(xù)表5.9OB61中系統(tǒng)定義的本地數(shù)據(jù)OB61_MISSED_EXECBYTE7.0自上次執(zhí)行OB61以來啟動OB61失敗的次數(shù)OB61_DP_IDBYTE8.0同步DP主站系統(tǒng)的DP主站系統(tǒng)IDOB61_RESERVERD_3BYTE9.0保留OB61_RESERVERD_4WORD10.0保留OB61_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME技術(shù)同步中斷OB(OB65)。技術(shù)同步中斷OB65僅適用于TechnologyCPU。通過技術(shù)同步中斷可選擇在更新技術(shù)塊的同時啟動程序。技術(shù)同步中斷OB在更新技術(shù)塊后啟動。技術(shù)同步中斷OB的優(yōu)先級固定設(shè)置為25,不能對其進(jìn)行更改。在OB65中系統(tǒng)定義了如表5.10所示的本地數(shù)據(jù),其地址從L0.0~L19.7,地址從L20.0以上的本地數(shù)據(jù)允許用戶定義。5.3.1組織塊(OB)表5.10OB65中系統(tǒng)定義的本地數(shù)據(jù)符號名稱數(shù)據(jù)類型地址說明OB65_EV_CLASSBYTE0.0事件等級和標(biāo)識符:B#16#11:進(jìn)入事件,事件等級1OB65_STRT_INFBYTE1.0B#16#6A:OB65的啟動請求OB65_PRIORITYBYTE2.0分配的優(yōu)先級:25(固定設(shè)置)OB65_OB_NUMBERBYTE3.0OB編號(65)OB65_RESERVERD_1BYTE4.0保留OB65_RESERVERD_2BYTE5.0保留OB65_RESERVERD_3BOOL6.0保留OB65_FIRSTBOOL6.1啟動后的首次使用OB65OB65_MISSED_EXECBYTE7.0自上次執(zhí)行OB65以來啟動OB65失敗的次數(shù)OB65_RESERVERD_4BYTE8.0保留OB65_RESERVERD_5BYTE9.0保留OB65_RESERVERD_6WORD10.0保留OB65_DATE_TIMEDATE_AND_TIME12.0調(diào)用OB時的DATE_AND_TIME5.3.1組織塊(OB)7、錯誤處理組織塊當(dāng)系統(tǒng)程序可以檢測下列錯誤:不正確的CPU功能、系統(tǒng)程序執(zhí)行中的錯誤、用戶程序中的錯誤和I/O中的錯誤。根據(jù)錯誤類型的不同,CPU設(shè)置為進(jìn)入STOP模式或調(diào)用一個錯誤處理OB。當(dāng)CPU檢測到錯誤時,會調(diào)用適當(dāng)?shù)慕M織塊,見表5.11。如果沒有相應(yīng)的錯誤處理OB,CPU將進(jìn)入STOP模式。用戶可以在錯誤處理OB中編寫如何處理這種錯誤的程序,以減小或消除錯誤的影響。為避免發(fā)生某種錯誤時CPU進(jìn)入停機(jī),可以在CPU中建立一個對應(yīng)的空的組織塊。用戶可以利用OB中的變量聲明表提供的信息來判別錯誤的類型。根據(jù)S7CPU檢測到并且用戶可以通過組織塊對其進(jìn)行處理的錯誤分為異步錯誤和同步錯誤。異步錯誤是與PLC的硬件或操作系統(tǒng)密切相關(guān)的錯誤,與程序執(zhí)行無關(guān)。異步錯誤的后果一般都比較嚴(yán)重。異步錯誤對應(yīng)的組織塊為OB70~OB73和OB80~OB87,有最高的優(yōu)先級。操作系統(tǒng)檢測到一個異步錯誤時,將啟動相應(yīng)的OB。5.3.1組織塊(OB)
同步錯誤是與執(zhí)行用戶程序有關(guān)的錯誤,程序中如果有不正確的地址區(qū)、錯誤的編號和錯誤的地址,都會出現(xiàn)同步錯誤,操作系統(tǒng)將調(diào)用同步錯誤OB。同步錯誤組織塊包括OB121用于對程序錯誤的處理和OB122用于處理模塊訪問錯誤。同步錯誤OB的優(yōu)先級與檢測到出錯的塊的優(yōu)先級一致。因此OB121和OB122可以訪問中斷發(fā)生時累加器和其他寄存器中的內(nèi)容,用戶程序可以用它們來處理錯誤。其中各錯誤處理組織塊的具體參數(shù)和功能介紹詳見第6章PLC故障診斷。OB號
錯誤類型
OB70
I/O冗余錯誤(僅H系列CPU)
25OB72
CPU冗余錯誤(僅H系列CPU)
28OB73
通信冗余錯誤(僅H系列CPU)
35OB80
時間錯誤
26OB81
電源錯誤
26/28
OB82
診斷中斷
OB83
插入/取出模塊中斷
OB84
CPU硬件故障
OB85
優(yōu)先級錯誤
OB86
機(jī)架故障或分布式I/O的站故障
OB87
通信錯誤
OB121
編程錯誤
引起錯誤的OB的優(yōu)先級
OB122
I/O訪問錯誤
表5.11錯誤處理組織塊5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
1、功能功能分用戶編寫的功能(FC)和系統(tǒng)預(yù)先定義的功能(SFC)兩種,功能都沒有存儲區(qū)。功能在程序分級結(jié)構(gòu)中位于組織塊的下面。為使一個功能被CPU處理,必須在程序分級結(jié)構(gòu)中的上一級調(diào)用它。FC和SFC里都有一個局域變量表和塊參數(shù)。局域變量表里面有:IN(輸入?yún)?shù))、OUT(輸出參數(shù))、IN_OUT(輸入/輸出參數(shù))、TEMP(臨時數(shù)據(jù))、RETURN(返回值RET_VEL)。IN(輸入?yún)?shù))只在功能和功能模塊中使用,是將數(shù)據(jù)傳遞到被調(diào)用的塊中進(jìn)行處理。OUT(輸出參數(shù))是將結(jié)果傳遞到調(diào)用塊中。IN_OUT(輸入/輸出參數(shù))是在功能和功能塊中使用,將數(shù)據(jù)傳遞到被調(diào)用塊中,在被調(diào)用塊中處理數(shù)據(jù)后,再將重被調(diào)用塊中發(fā)送的結(jié)果存儲在相同的變量中。TEMP(臨時數(shù)據(jù))是塊的本地數(shù)據(jù),并且在處理塊時將其存儲在本地數(shù)據(jù)堆棧(L堆棧)。關(guān)閉塊并完成處理后,臨時數(shù)據(jù)就變得不可再訪問。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
1)FC功能如果由用戶編寫,完成用戶期待的功能,這個功能為用戶功能。由于編程時需要很多標(biāo)準(zhǔn)的特定功能,西門子公司把一些標(biāo)準(zhǔn)的特定功能附加在STEP7的庫指令里面,供編程人員隨意調(diào)用,這些功能稱為庫指令功能或簡稱庫功能。因此FC功能分為用戶功能和庫功能下面舉例說明用戶功能FC的編程。【例5-6】編程一個啟動/停止功能(沒有使用參數(shù)傳遞)首先完善項目中的目錄,然后在管理畫面中點擊塊目錄,接著點擊菜單欄的“插入”→“S7塊”→“功能”,在塊目錄中插入一個功能(本例中插入FC10),如圖5.35所示。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.35在塊目錄中插入一個功能在生成功能過程中,向?qū)ё詣訌棾龉δ艿膶傩援嬅?,在功能屬性畫面里選擇功能的編號及其他附屬信息,如圖5.36所示,然后點擊“確定”,自動生成一個空白的功能在塊目錄里。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.36選擇塊的編號及附屬信息雙擊目錄塊里的FC10圖標(biāo),打開FC10的編程界面,然后在FC10里編寫完成啟動/停止功能的控制程序,如圖5.37所示。圖5.37在FC10里編寫完成啟動/停止功能的程序為使一個功能能夠被CPU處理,必須得在程序上分級結(jié)構(gòu)中的上一級調(diào)用它,本例在OB1里調(diào)用FC10,如圖5.38所示。根據(jù)控制功能的需要,可以有條件或無條件調(diào)用。最后把項目中的所有信息下載到CPU中即可。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.38在OB1里調(diào)用FC10在控制系統(tǒng)中有多個同樣的啟動/停止控制單元,那么需要調(diào)用多個功能來實現(xiàn)或在相同的功能編寫其他控制單元,這樣雖然比較啰嗦,但是還是可以實現(xiàn)。如果需要簡單的方法,使用例5-7的方法。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
【例5-7】編程一個啟動/停止功能(使用參數(shù)傳遞)首先完善項目中的目錄,并在塊目錄中插入一個功能(本例插入的是FC20),雙擊塊目錄里的FC20圖標(biāo),打開FC20的編程界面,然后在FC20里的局域變量表里定義輸入、輸出等符號參數(shù),如圖5.39所示,最后完成啟動/停止功能的邏輯程序,如圖5.40所示。圖5.39定義輸入、輸出等參數(shù)5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.40控制邏輯程序為了使一個功能能夠被CPU處理,必須在程序分級結(jié)構(gòu)中的上一級調(diào)用它,本例在OB1中調(diào)用FC20,如圖5.41所示。根據(jù)控制功能的需要,可以有條件或無條件調(diào)用。最后把項目中的所有信息下載到CPU中即可實現(xiàn)需要的控制。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.41在OB1里調(diào)用FC205.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
在控制系統(tǒng)中有多個同樣的啟動/停止控制單元,可以調(diào)用相同的一個功能(使用參數(shù)傳遞),在每個調(diào)用中寫上相應(yīng)的輸入/輸出就可以完成控制?!纠?-8】使用庫功能。實現(xiàn)任務(wù)是:比較兩個DATE_AND_TIME類型的變量,如果相等,則輸出一個高電平控制信號,否則輸出一個低電平控制信號。首先完善項目中的目錄,然后在管理畫面中雙擊塊目錄的OB1,打開OB1的編程界面,打開指令樹里的庫指令,雙擊“庫”→“stdlibs”→“iec”,然后把FC9EQ_DT拖拽到OB1指定的地方(本例是M0.0的右邊)。然后在FC9的輸入?yún)?shù)DT1和DT2里輸入DATE_AND_TIME類型的變量,在返回值里寫上M0.1,如圖5.42所示。最后保存到OB1。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.42在OB1里編寫的程序當(dāng)程序里調(diào)用了庫功能后,庫功能的代碼自動出現(xiàn)管理畫面的塊目錄里,如圖5.43所示的FC9,庫功能是不能編輯內(nèi)部程序的,都有保護(hù)所以看到塊目錄里的庫功能都帶上一把鎖的符號。同時庫功能的符號也會出現(xiàn)在S7程序的符號表里面。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.43調(diào)用庫功能后的塊目錄
把項目中所有的信息下載到CPU中,然后運行CPU,接通M0.0,在本例中可以看到M0.1=1。2)SFC系統(tǒng)功能是集成在STEP7中,完成特定功能。下面舉例說明用戶調(diào)用系統(tǒng)功能SFC的編程:使用SFC0“SET_CLK”(設(shè)定系統(tǒng)時鐘),可以設(shè)定CPU時鐘的時間和日期。調(diào)用SFC0會啟動時鐘,時鐘將從設(shè)定時間和設(shè)定日期開始運行。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
首先完善項目中的目錄,然后在管理畫面中雙擊塊目錄的OB1,打開OB1的編程界面。打開指令樹里面的庫指令,雙擊“庫”→“stdlibs”→“iec”,然后把FC3“DATEandTODtoDT”拖拽到OB1指定的地方;雙擊“庫”→“StandardLibrary”→“SystemFunctionBlocks”,然后把SFC0“SET_CLK”拖拽到OB1指定的地方,如圖5.44所示。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.44在OB1里編寫的程序然后在FC3“DATEandTODtoDT”、SFC0“SET_CLK”中寫上輸入和輸出參數(shù)并保存OB1。最后把整個項目信息下載到CPU中并運行,接通M0.0,可以監(jiān)控系統(tǒng)時間已經(jīng)更改為“2008年10月4日12:29”了。監(jiān)控系統(tǒng)時間的方法首先把STEP7的編程工具與CPU連接好,在OB1等的程序界面點擊菜單欄的“PLC”→“組件狀態(tài)”→“系統(tǒng)時間”,可以看到當(dāng)前CPU的大概時間。如果需要看到準(zhǔn)確的當(dāng)前系統(tǒng)時間,可以在系統(tǒng)時間畫面點擊“更新”,當(dāng)前系統(tǒng)時間即顯示出來。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
2、功能塊功能塊分用戶編寫的功能塊FB和系統(tǒng)預(yù)先定義的功能塊SFB兩種,功能塊都有存儲區(qū)。功能塊在程序分級結(jié)構(gòu)中位于組織塊下面。為使一個功能塊被CPU處理,必須在程序分級結(jié)構(gòu)中的上一級調(diào)用它。FB和SFB里都有一個局域變量表和塊參數(shù)。局域變量表里有:IN(輸入?yún)?shù))、OUT(輸出參數(shù))、IN_OUT(輸入/輸出參數(shù))、STAT(靜態(tài)參數(shù))、TMEP(臨時數(shù)據(jù))。IN(輸入?yún)?shù))只在功能和功能塊中使用,是將數(shù)據(jù)傳遞到被調(diào)用的塊中進(jìn)行處理。OUT(輸出參數(shù))是將結(jié)果傳遞到調(diào)用塊中。IN_OUT(輸入/輸出參數(shù))是在功能和功能塊中使用,是將數(shù)據(jù)傳遞到被調(diào)用塊中,在被調(diào)用塊中處理數(shù)據(jù)后,再將從被調(diào)用塊中發(fā)送的結(jié)果存儲在相同的變量中。STAT(靜態(tài)參數(shù))是存儲在該功能塊的背景數(shù)據(jù)塊中的本地數(shù)據(jù)。在下次處理功能塊之前,會一直保留存儲的數(shù)據(jù)。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
TEMP(臨時數(shù)據(jù))是塊的本地數(shù)據(jù),并且在處理塊時將其存儲在本地數(shù)據(jù)堆棧(L堆棧)。關(guān)閉塊并完成處理后,臨時數(shù)據(jù)就變得不可再訪問。下面舉例說明功能塊的編程?!纠?-9】完成一個星/三角啟動/停止功能(沒有使用參數(shù)傳遞)。在塊目錄中插入功能塊,在生成的功能塊的過程中需要選擇塊的編號及附加信息,如圖5.45所示。圖5.45選擇塊的編號及寫上附加信息5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
在塊目錄中可以查到當(dāng)前塊的詳細(xì)記錄,雙擊塊目錄中的FB10,在FB10里定義接口參數(shù),如圖5.46所示,然后編寫FB10的程序,如圖5.47所示。圖5.46在FB10中定義接口參數(shù)(定義背景數(shù)據(jù)塊的符號)5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.47在FB10中編寫的程序5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
在OB1編程界面里打開指令樹中功能塊的指令(注意,該功能塊的程序必須在這之前編寫完畢,否則會出現(xiàn)時間不一致的錯誤)并拖拽到程序期待的地方,如圖5.48所示,然后點擊FB10頂上的“???”位置,寫上背景數(shù)據(jù)塊。在生成背景數(shù)據(jù)塊的過程中會出現(xiàn)如圖5.49所示的對話框,點擊“是”確認(rèn),這樣FB10的背景數(shù)據(jù)塊就會出現(xiàn)在當(dāng)前的FB10頂上、管理界面的塊目錄中和符號表里。圖5.48寫上FB10的背景數(shù)據(jù)塊5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.49生成實例數(shù)據(jù)塊DB10可以打開管理界面的塊目錄查看到詳細(xì)的目錄,并雙擊DB10圖標(biāo),打開DB10查看詳細(xì)信息,如圖5.50所示。DB10的詳細(xì)信息是FB10接口參數(shù)中除臨時參數(shù)不會出現(xiàn)外,其他已經(jīng)在FB10接口參數(shù)區(qū)定義了的參數(shù)將出現(xiàn)在DB10背景數(shù)據(jù)塊里。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI)
圖5.50背景數(shù)據(jù)塊里的信息然后把項目中所有信息下載到CPU中并運行,當(dāng)接通M0.0時可以啟動水泵的星/三角單元,當(dāng)接通M0.1時,可以停止水泵的星/三角單元。當(dāng)接通M
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)班開班講話稿15篇
- 感恩活動總結(jié)(集錦15篇)
- 年會企劃方案(7篇)
- 第六單元導(dǎo)學(xué)案 統(tǒng)編版語文七年級上冊
- 學(xué)前教育老師如何做好校車安全工作
- 智研咨詢重磅發(fā)布:中國機(jī)場地面特種車輛行業(yè)供需態(tài)勢、市場現(xiàn)狀及發(fā)展前景預(yù)測報告
- 輻射源識別與超視距直接定位算法的研究
- 2025版能源行業(yè)數(shù)據(jù)采集與節(jié)能服務(wù)合同范本3篇
- 二零二五版住宅小區(qū)物業(yè)接管與維修基金協(xié)議3篇
- 二零二五年度旅游行業(yè)數(shù)據(jù)錄入與旅游體驗優(yōu)化服務(wù)協(xié)議3篇
- 醫(yī)保政策與健康管理培訓(xùn)計劃
- 無人化農(nóng)場項目可行性研究報告
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語試題(原卷版)
- 學(xué)生春節(jié)安全教育
- 2024-2025年校長在教研組長和備課組長會議上講話
- 高三日語一輪復(fù)習(xí)助詞「で」的用法課件
- 2024-2030年中國銣銫及其化合物行業(yè)深度調(diào)研及投資戰(zhàn)略分析報告
- 散貨物流行業(yè)市場調(diào)研分析報告
- 痛風(fēng)性關(guān)節(jié)炎中醫(yī)護(hù)理查房
- 廚房食材補貨方案
- 2024年重慶市中考數(shù)學(xué)試卷(AB合卷)【附答案】
評論
0/150
提交評論