西門子PLC PPT學(xué)習(xí)教案
《西門子PLC PPT學(xué)習(xí)教案》由會(huì)員分享,可在線閱讀,更多相關(guān)《西門子PLC PPT學(xué)習(xí)教案(121頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、會(huì)計(jì)學(xué)1 STEP7為設(shè)計(jì)程序提供三種方法,即線性化編程、模塊化編程和結(jié)構(gòu)化編程,如圖5.1?;谶@些方法,可以選者最合適與你的應(yīng)用程序設(shè)計(jì)方法。圖5.1 STEP7 3種設(shè)計(jì)程序的方法第1頁/共121頁1、線性化編程 線性化編程類似于硬件繼電器控制電路,整個(gè)用戶程序放在循環(huán)控制組織塊OB1(主程序)中,循環(huán)掃描時(shí)不斷地依次執(zhí)行OB1中的全部指令,如圖5.2。 這種方式的程序結(jié)構(gòu)簡單,不涉及功能塊、功能、數(shù)據(jù)塊、局域變量和中斷等比較復(fù)雜的概念,分析起來一目了然。這種結(jié)構(gòu)是用于編寫一些規(guī)模較小,運(yùn)行過程比較簡單的控制程序。 由于所有的指令都在一個(gè)塊中,即使程序中的某些部分在大多數(shù)時(shí)候并不需要執(zhí)行
2、,每個(gè)掃描周期都要執(zhí)行所有的指令,因此沒有有效地利用CPU。此外如果要求多次執(zhí)行相同或類似的操作,需要重復(fù)編寫程序。圖5.2線性編程第2頁/共121頁2、模塊化編程 程序被分為不同的邏輯塊,每個(gè)塊包含完成某些任務(wù)的邏輯指令,如圖5.3。分塊程序有更大的靈活性,適用于比較復(fù)雜、規(guī)模較大的控制工程的程序設(shè)計(jì)。 組織塊OB1(即主程序)中的指令決定在什么情況下調(diào)用哪一個(gè)塊,功能和功能塊(即子程序)用來完成不同的過程任務(wù)。被調(diào)用的塊執(zhí)行完后,返回到OB1中程序塊的調(diào)用點(diǎn),繼續(xù)執(zhí)行OB1。圖5.3模塊化編程 模塊化編程的程序被劃分為若干個(gè)塊,易于幾個(gè)人同時(shí)對(duì)一個(gè)項(xiàng)目編程。由于只是在需要時(shí)才調(diào)用有關(guān)的程序
3、塊,提高了CPU的利用率。第3頁/共121頁3、結(jié)構(gòu)化編程 結(jié)構(gòu)化編程將復(fù)雜的自動(dòng)化任務(wù)分解為能夠反映過程的工藝、功能或可以反復(fù)使用的小任務(wù),這些任務(wù)由相應(yīng)的程序快(或稱邏輯塊)來表示,程序運(yùn)行時(shí)所需的大量數(shù)據(jù)和變量存儲(chǔ)在數(shù)據(jù)塊中。結(jié)構(gòu)化程序比分塊程序有更大的靈活性、繼承性。適用于比較復(fù)雜、規(guī)模較大的控制工程的程序設(shè)計(jì)。 某些程序塊可以用來實(shí)現(xiàn)相同或相似的功能。這些程序塊是相對(duì)獨(dú)立的,它們被OB1或別的程序塊調(diào)用,如圖5.4。圖5.4結(jié)構(gòu)化編程第4頁/共121頁 S7-300/400PLC的程序分系統(tǒng)程序和用戶程序。 系統(tǒng)程序是協(xié)調(diào)PLC內(nèi)部事務(wù)的程序,與控制對(duì)象特定的任務(wù)無關(guān),在從經(jīng)銷商購買
4、CPU硬件的時(shí)候,CPU里面本身就包含了系統(tǒng)程序。系統(tǒng)程序完成PLC的啟動(dòng)/停止、I/O映像區(qū)的更新、用戶程序的調(diào)用、中斷的響應(yīng)、錯(cuò)誤及通信處理等任務(wù)。 用戶程序需要用戶使用STEP7編程軟件編寫程序,然后下載到CPU中,可以完成需要的特定控制任務(wù)。用戶程序包含用戶編寫的組織塊(OB)、FB、FC和系統(tǒng)提供的SFB(系統(tǒng)功能塊)與系統(tǒng)功能(SFC),被調(diào)用的塊是OB之外的邏輯塊。調(diào)用功能塊時(shí)需要為它指定一個(gè)背景塊,后者隨功能塊的調(diào)用而打開,在調(diào)用結(jié)束時(shí)自動(dòng)關(guān)閉。圖5.5 STEP 7調(diào)用塊的過程示意圖,OB1調(diào)用FB1,F(xiàn)B1調(diào)用FC1,應(yīng)按下面的順序創(chuàng)建塊:FC1、FB1及背景數(shù)據(jù)塊OB1,
5、即編程時(shí)被調(diào)用的塊應(yīng)該是已經(jīng)存在的。第5頁/共121頁圖5.5塊調(diào)用的分層結(jié)構(gòu)第6頁/共121頁 STEP7將用戶編寫的程序和程序中所需要的數(shù)據(jù)放置在塊中,使單個(gè)的程序部件標(biāo)準(zhǔn)化。通過在塊內(nèi)或塊之間類似子程序的調(diào)用,使用戶程序結(jié)構(gòu)化,可以簡化程序組織,使程序易于修改、查錯(cuò)和調(diào)試。塊結(jié)構(gòu)顯著增加了PLC程序的組織透明性、可理解性和易維護(hù)性。STEP7軟件中主要的各種塊的簡要說明見表5.1所示。表5.1邏輯塊和數(shù)據(jù)塊第7頁/共121頁 組織塊是CPU的操作系統(tǒng)與用戶程序的接口,由操作系統(tǒng)調(diào)用,用于控制掃描循環(huán)和中斷程序的執(zhí)行、PLC的啟動(dòng)和錯(cuò)誤處理等。OB與不同的CPU類型是相關(guān)的,某一型號(hào)的CP
6、U支持哪些OB是確定的。例如,OB35和OB40可以在CPU315-2DP中使用,而OB36和OB41則不行。因此用戶只能編寫目標(biāo)CPU支持的OB。 OB1是對(duì)應(yīng)于循環(huán)執(zhí)行的主程序的程序塊,它是STEP7程序的主干。其他大多數(shù)OB則對(duì)應(yīng)于不同的中斷處理程序(另外還有啟動(dòng)程序和背景程序等非中斷類的OB)。與每一個(gè)OB緊密相連的是它對(duì)應(yīng)的類型和優(yōu)先級(jí)。OB的類型指出了它的功能,例如延時(shí)中斷、硬件中斷等;OB的優(yōu)先級(jí)則用于表明一個(gè)OB是否可以被另外一個(gè)OB中斷,優(yōu)先級(jí)較低的OB總是可以被優(yōu)先級(jí)較高的OB中斷。在S7系列CPU中,背景循環(huán)OB90的優(yōu)先級(jí)最低,其次就是OB1,它的優(yōu)先級(jí)是1,因此OB1
7、通常總是可以被其他的OB中斷。對(duì)于S7-300的CPU各個(gè)OB的優(yōu)先級(jí)都是固定的,用戶無法更改。第8頁/共121頁 SIMATIC S7系列CPU的全部組織塊的資源及優(yōu)先權(quán)等級(jí)見表5.2。 不同的CPU模板具有不同的功能,因此并不是任何CPU模板都具有表5.1所示的全部組織塊資源,如CPU312IFM只有OB1,OB40和OB100。表5.2 組織塊第9頁/共121頁表5.2 組織塊第10頁/共121頁1、OB1(循環(huán)組織塊,又稱主程序) S7 CPU的操作系統(tǒng)定期執(zhí)行OB1。當(dāng)操作系統(tǒng)完成啟動(dòng)后,將啟動(dòng)循環(huán)執(zhí)行OB1。在OB1中可以調(diào)用其他功能(FC、SFC)和功能塊(FB、SFB)。 執(zhí)行
8、OB1后,操作系統(tǒng)發(fā)送全局?jǐn)?shù)據(jù)。重新啟動(dòng)OB1之前,操作系統(tǒng)會(huì)將過程映像輸出表寫入輸出模塊中、更新過程映像輸入表以及接收CPU的任何全局?jǐn)?shù)據(jù)。 操作系統(tǒng)在運(yùn)行期受監(jiān)視的所有OB模塊中,OB1的優(yōu)先級(jí)最低,也就是除OB90之外的所有OB塊均可中斷OB1的執(zhí)行。 S7專門有監(jiān)視運(yùn)行OB1的掃描時(shí)間的時(shí)間監(jiān)視器,最大掃描時(shí)間的默認(rèn)為150ms。用戶編程時(shí)可以使用SFC43“RE_TRIGR”來重新啟動(dòng)時(shí)間監(jiān)視。如果用戶程序超出了OB1的最大掃描時(shí)間,則操作系統(tǒng)將調(diào)用OB80(時(shí)間錯(cuò)誤OB塊),如果沒有發(fā)現(xiàn)OB80,則CPU將轉(zhuǎn)為STOP模式。 除了監(jiān)視最大掃描時(shí)間外,還可以保證最小掃描時(shí)間。操作系統(tǒng)
9、將延遲啟動(dòng)新循環(huán)(將過程映像輸出表寫入輸出模塊中),直至達(dá)到最小掃描時(shí)間為止。 在OB1中系統(tǒng)定義了如表5.3所示的本地?cái)?shù)據(jù),其地址從L0.0L19.7,地址從L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第11頁/共121頁表5.3 OB1中系統(tǒng)定義的本地?cái)?shù)據(jù) 符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB1_EV_CLASSBYTE0.003位位=1事件等級(jí);事件等級(jí);47位是標(biāo)識(shí),位是標(biāo)識(shí),=1表示表示OB1被激活被激活OB1_SCAN_1BYTE1.0B#16#01:完成暖啟動(dòng)完成暖啟動(dòng) B#16#02:完成熱啟動(dòng)完成熱啟動(dòng)B#16#03:完成主循環(huán)完成主循環(huán) B#16#04:完成冷啟完
10、成冷啟動(dòng)動(dòng)B#16#05:主站主站-保留站切換和停止上一保留站切換和停止上一主站之后新主站主站之后新主站CPU的首個(gè)的首個(gè)OB1循環(huán)循環(huán)OB1_PRIORITYBYTE2.0優(yōu)先級(jí)優(yōu)先級(jí)1OB1_OB_NUMBERBYTE3.0OB編號(hào)(編號(hào)(01)OB1_RESERVERD_1BYTE4.0保留保留OB1_RESERVERD_2BYTE5.0保留保留OB1_PREV_CYCLEINT6.0上一次掃描的運(yùn)行時(shí)間(上一次掃描的運(yùn)行時(shí)間(ms)OB1_MIN_CYCLEINT8.0自上次啟動(dòng)后的最小周期(自上次啟動(dòng)后的最小周期(ms)OB1_MAX_CYCLEINT10.0從上次啟動(dòng)后的最大周期(
11、從上次啟動(dòng)后的最大周期(ms)OB1_DATE_TIMEDATE_AND_TIME12.0調(diào)用調(diào)用OB時(shí)的時(shí)的DATE_AND_TIME第12頁/共121頁2、時(shí)間中斷組織塊(OB10OB17) 時(shí)間中斷組織塊可以單次運(yùn)行,也可以定期運(yùn)行:每分鐘、每小時(shí)、每天、每月、每個(gè)月末。對(duì)于每月執(zhí)行的時(shí)間中斷OB,只可將1、2、28日作為起始日期。 要啟動(dòng)時(shí)間中斷,必須先設(shè)置中斷,然后再將其激活。有以下4種可能的啟動(dòng)方式:1) 自動(dòng)啟動(dòng)時(shí)間中斷。一旦使用STEP7設(shè)置并激活了時(shí)間中斷,即自動(dòng)啟動(dòng)時(shí)間中斷;2) 使用STEP7設(shè)置時(shí)間中斷,然后通過調(diào)用程序中的SFC30“ACT_TINT”來激活它;3)
12、通過調(diào)用SFC28“SET_TINT”來設(shè)置時(shí)間中斷,然后通過調(diào)用SFC30“ACT_TINT”來激活它;4) 使用SFC39SFC42禁用或延遲和重新啟用時(shí)間中斷。 由于時(shí)間中斷僅以指定的時(shí)間間隔發(fā)生,因此在執(zhí)行用戶程序期間,某些條件可能會(huì)影響OB的操作。表5.4列出了其中的一些條件,并說明了該條件對(duì)執(zhí)行時(shí)間中斷OB的影響。 在OB10OB17中系統(tǒng)定義了如表5.5(表中的符號(hào)以O(shè)B10為例)所示的本地?cái)?shù)據(jù),其中地址從L0.0L19.7,地址從L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第13頁/共121頁表5.4 影響時(shí)間中斷OB的條件條件條件 結(jié)果結(jié)果 用戶程序調(diào)用用戶程序調(diào)用SFC29(CA
13、N_TINT)并取消并取消時(shí)間中斷時(shí)間中斷 操作系統(tǒng)清除了時(shí)間中斷的啟動(dòng)事件。如果需要執(zhí)行操作系統(tǒng)清除了時(shí)間中斷的啟動(dòng)事件。如果需要執(zhí)行OB,必須再次必須再次設(shè)置啟動(dòng)事件并再次調(diào)用設(shè)置啟動(dòng)事件并再次調(diào)用OB之前激活它之前激活它 用戶程序試圖激活時(shí)間中斷用戶程序試圖激活時(shí)間中斷OB,但未,但未將將OB加載到加載到CPU中中操作系統(tǒng)調(diào)用操作系統(tǒng)調(diào)用OB85.如果如果OB85尚未編程(裝載到尚未編程(裝載到CPU中),則中),則CPU將轉(zhuǎn)為將轉(zhuǎn)為STOP模式模式當(dāng)同步或更正當(dāng)同步或更正CPU的系統(tǒng)時(shí)鐘時(shí),用的系統(tǒng)時(shí)鐘時(shí),用戶提前設(shè)置了時(shí)間并跳過時(shí)間戶提前設(shè)置了時(shí)間并跳過時(shí)間OB的啟動(dòng)事件日期或時(shí)間的
14、啟動(dòng)事件日期或時(shí)間操作系統(tǒng)調(diào)用操作系統(tǒng)調(diào)用OB80并對(duì)時(shí)間并對(duì)時(shí)間OB的編號(hào)和的編號(hào)和OB80中的啟動(dòng)事件信息中的啟動(dòng)事件信息進(jìn)行編碼。隨后操作系統(tǒng)將運(yùn)行一次時(shí)間進(jìn)行編碼。隨后操作系統(tǒng)將運(yùn)行一次時(shí)間OB,而不管本應(yīng),而不管本應(yīng)執(zhí)行此執(zhí)行此OB的次數(shù)。的次數(shù)。OB80的啟動(dòng)事件信息給出了第一次跳過的啟動(dòng)事件信息給出了第一次跳過時(shí)間時(shí)間OB的的DATE_AND_TIME當(dāng)同步或更正當(dāng)同步或更正CPU的系統(tǒng)時(shí)鐘時(shí),推的系統(tǒng)時(shí)鐘時(shí),推后設(shè)置了時(shí)間以使后設(shè)置了時(shí)間以使OB的啟動(dòng)事的啟動(dòng)事件日期或時(shí)間得以修復(fù)件日期或時(shí)間得以修復(fù)S7-400CPU和和CPU318:如果在推后設(shè)置時(shí)鐘之前已激活了時(shí)間:如果在
15、推后設(shè)置時(shí)鐘之前已激活了時(shí)間OB,則不會(huì)再次調(diào)用它。則不會(huì)再次調(diào)用它。S7-300CPU:執(zhí)行時(shí)間:執(zhí)行時(shí)間OBCPU通過暖啟動(dòng)或冷啟動(dòng)運(yùn)行通過暖啟動(dòng)或冷啟動(dòng)運(yùn)行有有SFC組態(tài)的所有時(shí)間組態(tài)的所有時(shí)間OB會(huì)被改回在會(huì)被改回在STEP7中指定的組態(tài)。如果已中指定的組態(tài)。如果已為相應(yīng)的為相應(yīng)的OB的單次啟動(dòng)組態(tài)了時(shí)間中斷,使用的單次啟動(dòng)組態(tài)了時(shí)間中斷,使用STEP7對(duì)其進(jìn)對(duì)其進(jìn)行了設(shè)置,并將其激活,則當(dāng)所有組態(tài)的啟動(dòng)時(shí)間為已過去行了設(shè)置,并將其激活,則當(dāng)所有組態(tài)的啟動(dòng)時(shí)間為已過去的時(shí)間(相對(duì)于的時(shí)間(相對(duì)于CPU的實(shí)時(shí)時(shí)鐘)時(shí),會(huì)在暖啟動(dòng)或冷重啟的實(shí)時(shí)時(shí)鐘)時(shí),會(huì)在暖啟動(dòng)或冷重啟操作系統(tǒng)后調(diào)用一次
16、操作系統(tǒng)后調(diào)用一次OB當(dāng)發(fā)生下一時(shí)間間隔的啟動(dòng)事件時(shí),當(dāng)發(fā)生下一時(shí)間間隔的啟動(dòng)事件時(shí),仍執(zhí)行時(shí)間仍執(zhí)行時(shí)間OB操作系統(tǒng)調(diào)用操作系統(tǒng)調(diào)用OB80.如果如果OB80沒有編程,則沒有編程,則CPU轉(zhuǎn)為轉(zhuǎn)為STOP模式。如模式。如果裝載了果裝載了OB80,則會(huì)首先執(zhí)行,則會(huì)首先執(zhí)行OB80和時(shí)間中斷和時(shí)間中斷OB,然后再,然后再執(zhí)行請(qǐng)求中斷執(zhí)行請(qǐng)求中斷第14頁/共121頁表5.5 OB10中系統(tǒng)定義的本地?cái)?shù)據(jù)符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB10_EV_CLASSBYTE0.003位位=1事件等級(jí);事件等級(jí);47位是標(biāo)識(shí),位是標(biāo)識(shí),=1表示表示OB激激活活OB10_STRT_INFO
17、BYTE1.0B#16#11:OB10的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求(B#16#12:OB11的啟動(dòng)請(qǐng)求)的啟動(dòng)請(qǐng)求)(B#16#18:OB17的啟動(dòng)請(qǐng)求)的啟動(dòng)請(qǐng)求)OB10_PRIORITYBYTE2.0分配的優(yōu)先級(jí),缺省值為分配的優(yōu)先級(jí),缺省值為2OB10_OB_NUMBERBYTE3.0OB編號(hào)(編號(hào)(1017)OB10_RESERVERD_1BYTE4.0保留保留OB10_RESERVERD_2BYTE5.0保留保留OB10_PREIOD_EXEWORD6.0OB以指定的時(shí)間間隔執(zhí)行以指定的時(shí)間間隔執(zhí)行W#16#0000:單次單次 W#16#0201:每分鐘一每分鐘一次次W#16#0401:每
18、小時(shí)一次每小時(shí)一次 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)用調(diào)用OB時(shí)的時(shí)的DATE_AND_TIME第15頁/共121頁【例5-1】使用STEP7設(shè)置并激活時(shí)間中斷。 首先建立一個(gè)完整項(xiàng)目,如圖5.6所示,然后單擊項(xiàng)目中的“SIMATIC300(1)”,打開右邊的硬件圖表,如圖5.7所
19、示,將自動(dòng)彈出硬件組態(tài)畫面,如圖5.8所示,把電源和CPU等放到機(jī)架相應(yīng)的位置上。圖5.6建立一個(gè)項(xiàng)目并完成項(xiàng)目中的目錄第16頁/共121頁圖5.7打開硬件組態(tài)畫面 在硬件組態(tài)畫面,雙擊機(jī)架上的CPU,如圖5.8所示,將彈出CPU屬性畫面。在CPU屬性畫面點(diǎn)擊“時(shí)刻中斷”,打開時(shí)間中斷設(shè)置畫面,如圖5.9所示選擇“激活”,要求每分鐘執(zhí)行并寫上執(zhí)行OB10的日期和時(shí)間,圖中的開始日期時(shí)間是2008年10月2日10時(shí)00分,然后點(diǎn)擊“確定”。最后在硬件組態(tài)畫面點(diǎn)擊保存和編譯快捷圖標(biāo),如圖5.10所示完成保存和編譯。第17頁/共121頁圖5.8硬件組態(tài)畫面圖5.9在CPU屬性欄設(shè)置OB10時(shí)間中斷第
20、18頁/共121頁圖5.10把硬件組態(tài)信息編譯并保存 在管理畫面點(diǎn)擊“塊”,然后在右邊的目錄下點(diǎn)擊鼠標(biāo)右鍵,在彈出的畫面中點(diǎn)擊“插入新對(duì)象”,選擇添加“組織塊”,如圖5.11所示。在生成組織塊的過程中,選擇組織塊OB10及寫上附加信息,如圖5.12所示,然后點(diǎn)擊“確定”。第19頁/共121頁圖5.11 在管理畫面插入OB10第20頁/共121頁圖5.12在生成OB10過程中寫上附加信息 在管理畫面塊的目錄中雙擊OB10的圖標(biāo),打開OB10編程界面,如圖5.13所示。在OB10里編程如圖5.14所示的程序,然后保存。第21頁/共121頁圖5.13在管理畫面打開OB10圖5.14在OB10里編寫的
21、程序第22頁/共121頁 在管理畫面的目錄塊中點(diǎn)擊“SIMATIC 300(1)”,然后點(diǎn)擊下載快捷圖標(biāo),如圖5.15所示,把整個(gè)項(xiàng)目的信息下載到CPU中。圖5.15把整個(gè)項(xiàng)目(站)的信息下載到CPU中第23頁/共121頁 最后把CPU工作方式選擇到運(yùn)行模式,監(jiān)控OB10的程序狀態(tài),可以看到每分鐘MW10的數(shù)值會(huì)加1,如圖5.16所示。圖5.16在CPU運(yùn)行狀態(tài)下監(jiān)控OB10的程序狀態(tài)第24頁/共121頁 【例5-2】通過調(diào)用SFC28“SET_TINT”來設(shè)置時(shí)間中斷,然后通過調(diào)用SFC30“ACT_TINT”來激活它。這個(gè)例子沒看懂 首先建立一個(gè)項(xiàng)目并完成項(xiàng)目中的目錄,然后進(jìn)行硬件配置并把
22、硬件配置的信息保存并編譯。在管理畫面塊目錄中插入OB10,如圖5.17所示。在OB10的生成過程中,寫上附加信息,如圖5.18所示。圖5.17在管理畫面里插入OB10第25頁/共121頁圖5.18在生成OB10的過程中寫上附加信息 在管理畫面的塊目錄里打開OB10,如圖5.19所示。在OB10里編寫程序,如圖5.20所示,然后保存。第26頁/共121頁圖5.19在管理畫面打開OB10圖5.20在OB10里編寫的程序第27頁/共121頁 在管理畫面的塊目錄里打開OB1,如圖5.21所示。在OB1里編寫程序,如圖5.22所示,然后保存。圖5.21在管理畫面打開OB1第28頁/共121頁第29頁/共
23、121頁第30頁/共121頁第31頁/共121頁第32頁/共121頁 在管理畫面的塊目錄中插入OB80并打開OB80。在OB80里編寫如圖5.23所示程序并保存。圖5.23 在OB80里編寫的程序第33頁/共121頁 圖5.24是完成OB1和OB80的程序后在管理畫面的塊目錄中的內(nèi)容。然后在管理畫面把整個(gè)目錄信息下載到CPU中。圖5.24 管理畫面中塊的信息第34頁/共121頁 在調(diào)試時(shí)候重點(diǎn)監(jiān)控M103.2和M103.4的狀態(tài)。運(yùn)行CPU,可以看到M103.4=1,表示OB10已經(jīng)下載到CPU, 如圖5.25(a);當(dāng)接通M0.0時(shí),可以看到M103.2=1,表示激活了OB10,并看到MW1
24、0每分鐘加3;當(dāng)接通M0.4時(shí),看到M103.2=0,表示OB10已經(jīng)被取消激活,MW10停止加3, 如圖5.25(b)。(a)第35頁/共121頁(b)圖5.25 PLCSIM仿真畫面第36頁/共121頁3、延時(shí)中斷組織塊(OB20OB23) S7提供多達(dá)4個(gè)在指定延遲后執(zhí)行的OB(OB20OB23)。每個(gè)延時(shí)OB均可通過調(diào)用SFC32(SRT_DINT)來啟動(dòng)。延遲時(shí)間是SFC32的一個(gè)輸入?yún)?shù)。 當(dāng)用戶程序調(diào)用SFC32(SRT_DINT)時(shí),需要提供OB編號(hào)、延遲時(shí)間和用戶專用的標(biāo)識(shí)符。經(jīng)過指定的延遲后,相應(yīng)的OB將會(huì)啟動(dòng)??梢允褂肧FC33取消尚未啟動(dòng)的延時(shí)中斷,可以使用SFC34訪
25、問延時(shí)中斷組織塊的狀態(tài),可以使用SFC39SFC42來禁用或延遲并重新使能延遲中斷。 只有當(dāng)CPU處于RUN模式時(shí)才會(huì)執(zhí)行延時(shí)OB。暖啟動(dòng)或冷啟動(dòng)將清除延時(shí)OB的所有啟動(dòng)事件。第37頁/共121頁 延遲時(shí)間(單位為ms)和OB編號(hào)一起傳送給SFC32,時(shí)間到期后,操作系統(tǒng)將啟動(dòng)相應(yīng)的OB。設(shè)置延時(shí)中斷,最基本的步驟是:調(diào)用SFC32(SRT_DINT),并將延時(shí)中斷OB作為用戶程序的一部分下載到CPU。 如果發(fā)生了操作系統(tǒng)試圖啟動(dòng)一個(gè)尚未裝載的OB,并且用戶在調(diào)用SFC32(SRT_DINT)時(shí)指定了其編號(hào),或在完全執(zhí)行延時(shí)OB之前發(fā)生延時(shí)中斷的下一個(gè)啟動(dòng)事件時(shí),操作系統(tǒng)將調(diào)用異步錯(cuò)誤OB。
26、在OB20OB23中定義了如表5.6(表中的符號(hào)以O(shè)B20為例)所示的本地?cái)?shù)據(jù),其地址從L0.0L19.7,地址從L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第38頁/共121頁表5.6 OB20中系統(tǒng)定義的本地?cái)?shù)據(jù)符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB20_EV_CLASSBYTE0.003位位=1事件等級(jí);事件等級(jí);47位是標(biāo)識(shí),位是標(biāo)識(shí),=1表示表示OB激活激活OB20_STRT_INFOBYTE1.0 B#16#21:OB20的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求(B#16#22:OB21的啟動(dòng)請(qǐng)求)的啟動(dòng)請(qǐng)求)(B#16#23:OB22的啟動(dòng)請(qǐng)求)的啟動(dòng)請(qǐng)求)(B#16#24:OB23的啟動(dòng)請(qǐng)
27、求)的啟動(dòng)請(qǐng)求)OB20_PRIORITYBYTE2.0分配的優(yōu)先級(jí),缺省值分配的優(yōu)先級(jí),缺省值OB20OB23分別是分別是36OB20_OB_NUMBERBYTE3.0OB編號(hào)(編號(hào)(2023)OB20_RESERVERD_1BYTE4.0保留保留OB20_RESERVERD_2BYTE5.0保留保留OB20_SIGNWORD6.0用戶用戶ID:來自調(diào)用:來自調(diào)用SFC32(SRT_DINT)的輸入?yún)?shù)的輸入?yún)?shù)SIGNOB20_DTIMETIME8.0已組態(tài)的延遲時(shí)間已組態(tài)的延遲時(shí)間 (單位為(單位為ms)OB20_DATE_TIMEDATE_AND_TIME12.0調(diào)用調(diào)用OB時(shí)的時(shí)的D
28、ATE_AND_TIME第39頁/共121頁 【例5-3】延時(shí)中斷組織塊例子:通過調(diào)用SFC32來設(shè)置延時(shí)中斷,通過調(diào)用SFC33來取消延時(shí)中斷。這個(gè)例子沒看懂 首先建立完整的項(xiàng)目目錄,再完成硬件組態(tài)并編譯保存,如圖5.26所示。圖5.26 完整硬件組態(tài)第40頁/共121頁 在管理畫面的塊目錄中打開OB1,在OB1里編寫如圖5.27所示的程序并保存。第41頁/共121頁第42頁/共121頁第43頁/共121頁第44頁/共121頁圖5.27 在OB1里編寫的程序 在管理畫面的目錄中插入OB20,在OB20里編寫如圖5.28所示程序并保存;在管理畫面的塊目錄中插入OB85,在OB85里編寫如圖5.
29、29所示程序并保存。完成OB1、OB20和OB85后管理畫面的塊目錄如圖5.30所示。 圖5.28在OB20里編寫程序 圖5.29在OB85里編寫的程序 第45頁/共121頁圖5.30完成OB1、OB20和OB85后管理畫面的塊目錄 最后在管理畫面里把延時(shí)中斷的整個(gè)項(xiàng)目下載到CPU,調(diào)試時(shí)注意監(jiān)控M17.2和M17.4的狀態(tài)。當(dāng)把CPU扳動(dòng)到運(yùn)行模式時(shí),可以看到M17.4=1,說明OB20已經(jīng)下載到CPU中。當(dāng)接通M0.1啟動(dòng)延時(shí)中斷時(shí),M17.2=1;當(dāng)延時(shí)時(shí)間到,Q0.0=1。當(dāng)接通M0.3取消延時(shí)中斷或延時(shí)時(shí)間到后,M17.2=0。第46頁/共121頁4、循環(huán)中斷組織塊(OB30OB38
30、) S7提供了9個(gè)循環(huán)中斷OB(OB30OB38),可以指定固定時(shí)間間隔來中斷用戶程序。循環(huán)中斷OB的等距啟動(dòng)時(shí)間是由時(shí)間間隔和相位偏移量決定的。 用戶編寫程序時(shí),必須確保每個(gè)循環(huán)中斷OB的運(yùn)行時(shí)間遠(yuǎn)遠(yuǎn)小于其時(shí)間間隔。如果因時(shí)間間隔已到期,在預(yù)期的再次執(zhí)行前未完全執(zhí)行循環(huán)中斷OB,則啟動(dòng)時(shí)間錯(cuò)誤OB80,稍后將執(zhí)行導(dǎo)致錯(cuò)誤的循環(huán)中斷。 在編寫程序時(shí)如果有多個(gè)循環(huán)中斷OB,設(shè)置要求循環(huán)中斷的時(shí)間間隔又成整數(shù)倍,那么有可能會(huì)出現(xiàn)處理循環(huán)中斷的時(shí)間過長而引起超出掃描周期時(shí)間錯(cuò)誤。為了避免這種情況,最好定義一個(gè)偏移量時(shí)間,偏移量時(shí)間務(wù)必要小于間隔時(shí)間。偏移量時(shí)間使循環(huán)間隔時(shí)間已到,延時(shí)偏移量的時(shí)間再循
31、環(huán)中斷,偏移量時(shí)間不會(huì)影響循環(huán)中斷的周期。 用戶編寫程序時(shí)可使用SFC39SFC42來禁用或延遲,并重新啟動(dòng)循環(huán)中斷。使用SFC39來取消激活循環(huán)中斷,使用SFC40用來激活循環(huán)中斷。 在OB30OB38中系統(tǒng)定義了如表5.7(表中的符號(hào)以O(shè)B35為例)所示的本地?cái)?shù)據(jù),其地址從L0.0L19.7,地址從L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第47頁/共121頁表5.7 OB35中系統(tǒng)定義的本地?cái)?shù)據(jù)符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB35_EV_CLASSBYTE0.0事件等級(jí)和標(biāo)識(shí)符事件等級(jí)和標(biāo)識(shí)符B#16#11:中斷處于激活狀態(tài)中斷處于激活狀態(tài)OB35_STRT_INFOBY
32、TE1.0B#16#30:具有特殊標(biāo)準(zhǔn)的循環(huán)中斷具有特殊標(biāo)準(zhǔn)的循環(huán)中斷OB的請(qǐng)求(僅的請(qǐng)求(僅適用于適用于H-CPU,且僅當(dāng)對(duì)其進(jìn)行了明確組態(tài),且僅當(dāng)對(duì)其進(jìn)行了明確組態(tài)后)后)B#16#31:OB30的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求B#16#39:OB38B#16#39:OB38的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求 OB35_PRIORITYBYTE2.0分配的優(yōu)先級(jí),缺省值分配的優(yōu)先級(jí),缺省值OB30OB38分別是分別是715OB35_OB_NUMBERBYTE3.0OB編號(hào)(編號(hào)(3038)OB35_RESERVERD_1BYTE4.0保留保留OB35_RESERVERD_2BYTE5.0保留保留OB35_PHASE
33、_OFFSETWORD6.0相位偏移量(單位:相位偏移量(單位:ms)OB35_RESERVERD_3INT8.0保留保留OB35_EXC_FREQINT10.0時(shí)間間隔時(shí)間間隔 (單位為(單位為ms)OB35_DATE_TIMEDATE_AND_TIME12.0調(diào)用調(diào)用OB時(shí)的時(shí)的DATE_AND_TIME第48頁/共121頁【例5-4】循環(huán)中斷組織塊例子:通過STEP7設(shè)置循環(huán)中斷。 首先完成項(xiàng)目的所有目錄。接著在管理畫面打開硬件組態(tài)畫面。 在硬件組態(tài)畫面,雙擊機(jī)架上的CPU,自動(dòng)彈出CPU屬性設(shè)置畫面。在CPU屬性設(shè)置畫面打開周期性設(shè)置畫面,設(shè)置OB35循環(huán)中斷執(zhí)行時(shí)間為1000ms,如
34、圖5.31所示,然后點(diǎn)擊確定。圖5.31完成CPU屬性中周期性中斷設(shè)置第49頁/共121頁 在管理畫面的塊目錄里插入OB35,打開OB35編寫如圖5.32所示的程序并保存。圖5.32 在OB35里編寫的程序 最后在管理畫面把整個(gè)項(xiàng)目的信息下載到CPU中,運(yùn)行PLC,監(jiān)控OB35程序狀態(tài),可以看到MW10的數(shù)字每一秒中加2,如圖5.33所示,表示OB35被激活了。第50頁/共121頁圖5.33 運(yùn)行CPU監(jiān)控OB35程序狀態(tài)第51頁/共121頁【例5-5】循環(huán)中斷組織塊例子:通過調(diào)用SFC40來設(shè)置循環(huán)中斷,通過調(diào)用SFC39來取消循環(huán)中斷。在循環(huán)中斷組織塊例【5-4】的基礎(chǔ)上,在管理畫面的塊目
35、錄里打開OB1,并在OB1編寫如圖5.34所示程序,然后保存。第52頁/共121頁圖5.34在OB1里編寫的程序 最后在管理畫面把整個(gè)項(xiàng)目的信息下載到CPU中,運(yùn)行PLC,監(jiān)控OB35程序狀態(tài),可以看到MW10的數(shù)值每秒鐘加2;當(dāng)接通M0.0時(shí),監(jiān)控MW10的數(shù)值不再增加了,說明OB35循環(huán)中斷被取消激活了;當(dāng)接通M0.2時(shí),可以看到MW10的數(shù)值 又恢復(fù)了每秒鐘加2,說明OB35循環(huán)中斷被重新激活了。第53頁/共121頁5、硬件中斷組織塊(OB40OB47) S7提供了8個(gè)獨(dú)立的硬件中斷,每一中斷都具有自己的OB。硬件中斷組織塊是對(duì)具有中斷能力的數(shù)字量信號(hào)模塊(SM)、通信處理(CP)和功能
36、模塊(FM)信號(hào)變化進(jìn)行中斷響應(yīng)。 對(duì)于具有中斷能力的數(shù)字信號(hào)模塊(SM),可以使用STEP7軟件在硬件組態(tài)設(shè)置硬件中斷,也可以使用SFC55SFC57為模塊的硬件中斷分配參數(shù)來實(shí)現(xiàn)設(shè)置硬件中斷。 對(duì)具有中斷能力的通信處理器(CP)和功能模塊(FM),可以使用STEP7軟件在硬件組態(tài)時(shí)按照向?qū)?duì)話框設(shè)置相應(yīng)的參數(shù)來實(shí)現(xiàn)設(shè)置中斷。 在OB40OB47中系統(tǒng)定義了如表5.8(表中的符號(hào)以O(shè)B40為例。)所示的本地?cái)?shù)據(jù),其地址從L0.0L19.7,地址從L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第54頁/共121頁表5.8 OB40中系統(tǒng)定義的本地?cái)?shù)據(jù)符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB
37、40_EV_CLASSBYTE0.0事件等級(jí)和標(biāo)識(shí)符事件等級(jí)和標(biāo)識(shí)符B#16#11:中斷處于激活狀態(tài)中斷處于激活狀態(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ā)中斷觸發(fā)中斷OB40_PRIORITYBYTE2.0分配的優(yōu)先級(jí),缺省值分配的優(yōu)先級(jí),缺省值OB40OB47分別是分別是1623OB40_OB_NU
38、MBERBYTE3.0OB編號(hào)(編號(hào)(4047)OB40_RESERVERD_1BYTE4.0保留保留OB40_IO_FLAGBYTE5.0輸入模塊:輸入模塊:B#16#54輸出模塊:輸出模塊:B#16#55OB40_MDL_ADDRWORD6.0觸發(fā)中斷的模塊的邏輯地址(字節(jié)為單位)觸發(fā)中斷的模塊的邏輯地址(字節(jié)為單位)OB40_POINT_ADDRINT8.0對(duì)于數(shù)字模塊:模塊上具有輸入狀態(tài)的位域(位對(duì)于數(shù)字模塊:模塊上具有輸入狀態(tài)的位域(位0對(duì)應(yīng)于對(duì)應(yīng)于第一個(gè)輸入)可在給定模塊的說明中找到為模塊中第一個(gè)輸入)可在給定模塊的說明中找到為模塊中的通道分配從的通道分配從OB40_POINT_A
39、DDR起始的位。起始的位。對(duì)于模擬模塊:位域,指出哪個(gè)通道已超出哪條限制對(duì)于模擬模塊:位域,指出哪個(gè)通道已超出哪條限制對(duì)于對(duì)于CP或或IM:模塊中斷狀態(tài)(與用戶程序無關(guān)):模塊中斷狀態(tài)(與用戶程序無關(guān))OB35_DATE_TIMEDATE_AND_TIME12.0調(diào)用調(diào)用OB時(shí)的時(shí)的DATE_AND_TIME第55頁/共121頁6、同步循環(huán)組織塊(OB61OB65) 同步循環(huán)中斷OB是通過循環(huán)中斷選擇在具有DP循環(huán)的同步循環(huán)中啟動(dòng)的程序。 OB61充當(dāng)同步循環(huán)中斷TSAL1的接口OB??梢詫B61的優(yōu)先級(jí)設(shè)置為0(取消選定OB)和226之間的數(shù)。在使用L或T命令直接訪問以及使用SFC14“D
40、PRD_DAT”和SFC15“DPWR_DAT”時(shí),請(qǐng)避免訪問已為其過程映像區(qū)分配到OB61OB65的連接的I/O區(qū)域。 在OB61OB65中系統(tǒng)定義了如表5.9(表中的符號(hào)以O(shè)B61為例)所示的本地?cái)?shù)據(jù),其地址從L0.0L19.7,地址L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第56頁/共121頁表5.9 OB61中系統(tǒng)定義的本地?cái)?shù)據(jù)符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB61_EV_CLASSBYTE0.0事件等級(jí)和標(biāo)識(shí)符事件等級(jí)和標(biāo)識(shí)符B#16#11:中斷處于激活狀中斷處于激活狀態(tài)態(tài)OB61_STRT_INFBYTE1.0B#16#64:OB61的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求B#16#65
41、:OB62的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求B#16#66:OB63的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求B#16#67:OB64的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求OB61_PRIORITYBYTE2.0分配的優(yōu)先級(jí):缺省值為分配的優(yōu)先級(jí):缺省值為25OB61_OB_NUMBERBYTE3.0OB編號(hào)(編號(hào)(6164)OB61_RESERVERD_1BYTE4.0保留保留OB61_RESERVERD_2BYTE5.0保留保留OB61_GC_VIOLBOOL6.0GC錯(cuò)誤錯(cuò)誤OB61_FIRSTBOOL6.1啟動(dòng)或停止?fàn)顟B(tài)后的首次使用啟動(dòng)或停止?fàn)顟B(tài)后的首次使用第57頁/共121頁續(xù)表5.9 OB61中系統(tǒng)定義的本地?cái)?shù)據(jù)OB61_MISSED
42、_EXECBYTE7.0自上次執(zhí)行自上次執(zhí)行OB61以來啟動(dòng)以來啟動(dòng)OB61失敗的次數(shù)失敗的次數(shù)OB61_DP_IDBYTE 8.0同步同步DP主站系統(tǒng)的主站系統(tǒng)的DP主站系統(tǒng)主站系統(tǒng)IDOB61_RESERVERD_3BYTE9.0保留保留OB61_RESERVERD_4WORD 10.0保留保留OB61_DATE_TIMEDATE_AND_TIME12.0調(diào)用調(diào)用OB時(shí)的時(shí)的DATE_AND_TIME 技術(shù)同步中斷OB(OB65)。技術(shù)同步中斷OB65僅適用于Technology CPU。通過技術(shù)同步中斷可選擇在更新技術(shù)塊的同時(shí)啟動(dòng)程序。技術(shù)同步中斷OB在更新技術(shù)塊后啟動(dòng)。技術(shù)同步中斷OB
43、的優(yōu)先級(jí)固定設(shè)置為25,不能對(duì)其進(jìn)行更改。 在OB65中系統(tǒng)定義了如表5.10所示的本地?cái)?shù)據(jù),其地址從L0.0L19.7,地址從L20.0以上的本地?cái)?shù)據(jù)允許用戶定義。第58頁/共121頁表5.10 OB65中系統(tǒng)定義的本地?cái)?shù)據(jù) 符號(hào)名稱符號(hào)名稱數(shù)據(jù)類型數(shù)據(jù)類型地址地址說明說明OB65_EV_CLASSBYTE0.0事件等級(jí)和標(biāo)識(shí)符:事件等級(jí)和標(biāo)識(shí)符:B#16#11:進(jìn)入事件,事件等級(jí)進(jìn)入事件,事件等級(jí)1OB65_STRT_INFBYTE1.0B#16#6A:OB65的啟動(dòng)請(qǐng)求的啟動(dòng)請(qǐng)求OB65_PRIORITYBYTE2.0分配的優(yōu)先級(jí):分配的優(yōu)先級(jí):25(固定設(shè)置)(固定設(shè)置)OB65_OB
44、_NUMBERBYTE3.0OB編號(hào)(編號(hào)(65)OB65_RESERVERD_1BYTE4.0保留保留OB65_RESERVERD_2BYTE5.0保留保留OB65_RESERVERD_3BOOL6.0保留保留OB65_FIRSTBOOL6.1啟動(dòng)后的首次使用啟動(dòng)后的首次使用OB65OB65_MISSED_EXECBYTE7.0自上次執(zhí)行自上次執(zhí)行OB65以來啟動(dòng)以來啟動(dòng)OB65失敗的次數(shù)失敗的次數(shù)OB65_RESERVERD_4BYTE8.0保留保留OB65_RESERVERD_5BYTE9.0保留保留OB65_RESERVERD_6WORD 10.0保留保留OB65_DATE_TIMED
45、ATE_AND_TIME12.0調(diào)用調(diào)用OB時(shí)的時(shí)的DATE_AND_TIME第59頁/共121頁7、錯(cuò)誤處理組織塊 當(dāng)系統(tǒng)程序可以檢測下列錯(cuò)誤:不正確的CPU功能、系統(tǒng)程序執(zhí)行中的錯(cuò)誤、用戶程序中的錯(cuò)誤和I/O中的錯(cuò)誤。根據(jù)錯(cuò)誤類型的不同,CPU設(shè)置為進(jìn)入STOP模式或調(diào)用一個(gè)錯(cuò)誤處理OB。 當(dāng)CPU檢測到錯(cuò)誤時(shí),會(huì)調(diào)用適當(dāng)?shù)慕M織塊,見表5.11。如果沒有相應(yīng)的錯(cuò)誤處理OB,CPU將進(jìn)入STOP模式。用戶可以在錯(cuò)誤處理OB中編寫如何處理這種錯(cuò)誤的程序,以減小或消除錯(cuò)誤的影響。 為避免發(fā)生某種錯(cuò)誤時(shí)CPU進(jìn)入停機(jī),可以在CPU中建立一個(gè)對(duì)應(yīng)的空的組織塊。用戶可以利用OB中的變量聲明表提供的信息
46、來判別錯(cuò)誤的類型。 根據(jù)S7 CPU檢測到并且用戶可以通過組織塊對(duì)其進(jìn)行處理的錯(cuò)誤分為異步錯(cuò)誤和同步錯(cuò)誤。 異步錯(cuò)誤是與PLC的硬件或操作系統(tǒng)密切相關(guān)的錯(cuò)誤,與程序執(zhí)行無關(guān)。異步錯(cuò)誤的后果一般都比較嚴(yán)重。異步錯(cuò)誤對(duì)應(yīng)的組織塊為OB70OB73和OB80OB87,有最高的優(yōu)先級(jí)。操作系統(tǒng)檢測到一個(gè)異步錯(cuò)誤時(shí),將啟動(dòng)相應(yīng)的OB。第60頁/共121頁 同步錯(cuò)誤是與執(zhí)行用戶程序有關(guān)的錯(cuò)誤,程序中如果有不正確的地址區(qū)、錯(cuò)誤的編號(hào)和錯(cuò)誤的地址,都會(huì)出現(xiàn)同步錯(cuò)誤,操作系統(tǒng)將調(diào)用同步錯(cuò)誤OB。 同步錯(cuò)誤組織塊包括OB121用于對(duì)程序錯(cuò)誤的處理和OB122用于處理模塊訪問錯(cuò)誤。同步錯(cuò)誤OB的優(yōu)先級(jí)與檢測到出錯(cuò)的
47、塊的優(yōu)先級(jí)一致。因此OB121和OB122可以訪問中斷發(fā)生時(shí)累加器和其他寄存器中的內(nèi)容,用戶程序可以用它們來處理錯(cuò)誤。 其中各錯(cuò)誤處理組織塊的具體參數(shù)和功能介紹詳見第6章PLC故障診斷。第61頁/共121頁OBOB號(hào)號(hào) 錯(cuò)誤類型錯(cuò)誤類型 OB70OB70 I/OI/O冗余錯(cuò)誤(僅冗余錯(cuò)誤(僅H H系列系列CPUCPU) 2525OB72OB72 CPUCPU冗余錯(cuò)誤(僅冗余錯(cuò)誤(僅H H系列系列CPUCPU) 2828OB73OB73 通信冗余錯(cuò)誤(僅通信冗余錯(cuò)誤(僅H H系列系列CPUCPU) 3535OB80OB80 時(shí)間錯(cuò)誤時(shí)間錯(cuò)誤 2626OB81OB81 電源錯(cuò)誤電源錯(cuò)誤 26/28
48、26/28 OB82OB82 診斷中斷診斷中斷 OB83OB83 插入插入/ /取出模塊中斷取出模塊中斷 OB84OB84 CPUCPU硬件故障硬件故障 OB85OB85 優(yōu)先級(jí)錯(cuò)誤優(yōu)先級(jí)錯(cuò)誤 OB86OB86 機(jī)架故障或分布式機(jī)架故障或分布式I/OI/O的站故障的站故障 OB87OB87 通信錯(cuò)誤通信錯(cuò)誤 OB121OB121 編程錯(cuò)誤編程錯(cuò)誤 引起錯(cuò)誤的引起錯(cuò)誤的OBOB的優(yōu)先級(jí)的優(yōu)先級(jí) OB122OB122 I/OI/O訪問錯(cuò)誤訪問錯(cuò)誤 表5.11 錯(cuò)誤處理組織塊第62頁/共121頁1、功能 功能分用戶編寫的功能(FC)和系統(tǒng)預(yù)先定義的功能(SFC)兩種,功能都沒有存儲(chǔ)區(qū)。功能在程序分級(jí)
49、結(jié)構(gòu)中位于組織塊的下面。為使一個(gè)功能被CPU處理,必須在程序分級(jí)結(jié)構(gòu)中的上一級(jí)調(diào)用它。FC和SFC里都有一個(gè)局域變量表和塊參數(shù)。局域變量表里面有:IN(輸入?yún)?shù))、OUT(輸出參數(shù))、IN_OUT(輸入/輸出參數(shù))、TEMP(臨時(shí)數(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é)果存儲(chǔ)在相同的變量中。 TEMP(臨時(shí)數(shù)據(jù))是塊的本地?cái)?shù)據(jù),并且在處理塊
50、時(shí)將其存儲(chǔ)在本地?cái)?shù)據(jù)堆棧(L堆棧)。關(guān)閉塊并完成處理后,臨時(shí)數(shù)據(jù)就變得不可再訪問。第63頁/共121頁 1)FC功能如果由用戶編寫,完成用戶期待的功能,這個(gè)功能為用戶功能。由于編程時(shí)需要很多標(biāo)準(zhǔn)的特定功能,西門子公司把一些標(biāo)準(zhǔn)的特定功能附加在STEP7的庫指令里面,供編程人員隨意調(diào)用,這些功能稱為庫指令功能或簡稱庫功能。因此FC功能分為用戶功能和庫功能 下面舉例說明用戶功能FC的編程。 【例5-6】編程一個(gè)啟動(dòng)/停止功能(沒有使用參數(shù)傳遞) 首先完善項(xiàng)目中的目錄,然后在管理畫面中點(diǎn)擊塊目錄,接著點(diǎn)擊菜單欄的“插入”“S7塊”“功能”,在塊目錄中插入一個(gè)功能(本例中插入FC10),如圖5.35所
51、示。 第64頁/共121頁圖5.35在塊目錄中插入一個(gè)功能 在生成功能過程中,向?qū)ё詣?dòng)彈出功能的屬性畫面,在功能屬性畫面里選擇功能的編號(hào)及其他附屬信息,如圖5.36所示,然后點(diǎn)擊“確定”,自動(dòng)生成一個(gè)空白的功能在塊目錄里。第65頁/共121頁圖5.36選擇塊的編號(hào)及附屬信息 雙擊目錄塊里的FC10圖標(biāo),打開FC10的編程界面,然后在FC10里編寫完成啟動(dòng)/停止功能的控制程序,如圖5.37所示。第66頁/共121頁圖5.37 在FC10里編寫完成啟動(dòng)/停止功能的程序 為使一個(gè)功能能夠被CPU處理,必須得在程序上分級(jí)結(jié)構(gòu)中的上一級(jí)調(diào)用它,本例在OB1里調(diào)用FC10,如圖5.38所示。根據(jù)控制功能的
52、需要,可以有條件或無條件調(diào)用。最后把項(xiàng)目中的所有信息下載到CPU中即可。5.3.2功能、功能塊和數(shù)據(jù)塊(FC、SFC、FB、SFB和DB、DI) 第67頁/共121頁圖5.38在OB1里調(diào)用FC10 在控制系統(tǒng)中有多個(gè)同樣的啟動(dòng)/停止控制單元,那么需要調(diào)用多個(gè)功能來實(shí)現(xiàn)或在相同的功能編寫其他控制單元,這樣雖然比較啰嗦,但是還是可以實(shí)現(xiàn)。如果需要簡單的方法,使用例5-7的方法。第68頁/共121頁【例5-7】編程一個(gè)啟動(dòng)/停止功能(使用參數(shù)傳遞)首先完善項(xiàng)目中的目錄,并在塊目錄中插入一個(gè)功能(本例插入的是FC20),雙擊塊目錄里的FC20圖標(biāo),打開FC20的編程界面,然后在FC20里的局域變量表
53、里定義輸入、輸出等符號(hào)參數(shù),如圖5.39所示,最后完成啟動(dòng)/停止功能的邏輯程序,如圖5.40所示。圖5.39定義輸入、輸出等參數(shù)第69頁/共121頁圖5.40控制邏輯程序 為了使一個(gè)功能能夠被CPU處理,必須在程序分級(jí)結(jié)構(gòu)中的上一級(jí)調(diào)用它,本例在OB1中調(diào)用FC20,如圖5.41所示。根據(jù)控制功能的需要,可以有條件或無條件調(diào)用。最后把項(xiàng)目中的所有信息下載到CPU中即可實(shí)現(xiàn)需要的控制。第70頁/共121頁圖5.41在OB1里調(diào)用FC20第71頁/共121頁 在控制系統(tǒng)中有多個(gè)同樣的啟動(dòng)/停止控制單元,可以調(diào)用相同的一個(gè)功能(使用參數(shù)傳遞),在每個(gè)調(diào)用中寫上相應(yīng)的輸入/輸出就可以完成控制。 【例5
54、-8】使用庫功能。實(shí)現(xiàn)任務(wù)是:比較兩個(gè)DATE_AND_TIME類型的變量,如果相等,則輸出一個(gè)高電平控制信號(hào),否則輸出一個(gè)低電平控制信號(hào)。 首先完善項(xiàng)目中的目錄,然后在管理畫面中雙擊塊目錄的OB1,打開OB1的編程界面, 打開指令樹里的庫指令,雙擊“庫”“stdlibs” “iec”,然后把FC9 EQ_DT拖拽到OB1指定的地方(本例是M0.0的右邊)。 然后在FC9的輸入?yún)?shù)DT1和DT2里輸入DATE_AND_TIME類型的變量,在返回值里寫上M0.1,如圖5.42所示。最后保存到OB1。第72頁/共121頁圖5.42在OB1里編寫的程序 當(dāng)程序里調(diào)用了庫功能后,庫功能的代碼自動(dòng)出現(xiàn)管
55、理畫面的塊目錄里,如圖5.43所示的FC9,庫功能是不能編輯內(nèi)部程序的,都有保護(hù)所以看到塊目錄里的庫功能都帶上一把鎖的符號(hào)。同時(shí)庫功能的符號(hào)也會(huì)出現(xiàn)在S7程序的符號(hào)表里面。第73頁/共121頁圖5.43調(diào)用庫功能后的塊目錄 把項(xiàng)目中所有的信息下載到CPU中,然后運(yùn)行CPU,接通M0.0,在本例中可以看到M0.1=1。2)SFC系統(tǒng)功能是集成在STEP7中,完成特定功能。 下面舉例說明用戶調(diào)用系統(tǒng)功能SFC的編程:使用SFC0“SET_CLK”(設(shè)定系統(tǒng)時(shí)鐘),可以設(shè)定CPU時(shí)鐘的時(shí)間和日期。調(diào)用SFC0會(huì)啟動(dòng)時(shí)鐘,時(shí)鐘將從設(shè)定時(shí)間和設(shè)定日期開始運(yùn)行。第74頁/共121頁 首先完善項(xiàng)目中的目錄,
56、然后在管理畫面中雙擊塊目錄的OB1,打開OB1的編程界面。打開指令樹里面的庫指令,雙擊“庫”“stdlibs” “iec”,然后把FC3“DATE and TOD to DT”拖拽到OB1指定的地方;雙擊“庫”“Standard Library” “System Function Blocks”,然后把SFC 0“SET_CLK”拖拽到OB1指定的地方,如圖5.44所示。第75頁/共121頁第76頁/共121頁圖5.44在OB1里編寫的程序 然后在FC3“DATE and TOD to DT”、SFC0“SET_CLK”中寫上輸入和輸出參數(shù)并保存OB1。最后把整個(gè)項(xiàng)目信息下載到CPU中并運(yùn)行,
57、接通M0.0,可以監(jiān)控系統(tǒng)時(shí)間已經(jīng)更改為“2008年10月4日12:29”了。 監(jiān)控系統(tǒng)時(shí)間的方法首先把STEP7的編程工具與CPU連接好,在OB1等的程序界面點(diǎn)擊菜單欄的“PLC” “組件狀態(tài)”“系統(tǒng)時(shí)間”,可以看到當(dāng)前CPU的大概時(shí)間。如果需要看到準(zhǔn)確的當(dāng)前系統(tǒng)時(shí)間,可以在系統(tǒng)時(shí)間畫面點(diǎn)擊“更新”,當(dāng)前系統(tǒng)時(shí)間即顯示出來。第77頁/共121頁2、功能塊 功能塊分用戶編寫的功能塊FB和系統(tǒng)預(yù)先定義的功能塊SFB兩種,功能塊都有存儲(chǔ)區(qū)。功能塊在程序分級(jí)結(jié)構(gòu)中位于組織塊下面。為使一個(gè)功能塊被CPU處理,必須在程序分級(jí)結(jié)構(gòu)中的上一級(jí)調(diào)用它。 FB和SFB里都有一個(gè)局域變量表和塊參數(shù)。局域變量表里有
58、:IN(輸入?yún)?shù))、OUT(輸出參數(shù))、IN_OUT(輸入/輸出參數(shù))、STAT(靜態(tài)參數(shù))、TMEP(臨時(shí)數(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é)果存儲(chǔ)在相同的變量中。 STAT(靜態(tài)參數(shù))是存儲(chǔ)在該功能塊的背景數(shù)據(jù)塊中的本地?cái)?shù)據(jù)。在下次處理功能塊之前 ,會(huì)一直保留存儲(chǔ)的數(shù)據(jù)。第78頁/共121頁 TEMP(臨時(shí)數(shù)據(jù))是塊的本地?cái)?shù)據(jù),并且在處理塊時(shí)將其存儲(chǔ)在本地?cái)?shù)據(jù)堆棧(L堆
59、棧)。關(guān)閉塊并完成處理后,臨時(shí)數(shù)據(jù)就變得不可再訪問。 下面舉例說明功能塊的編程。 【例5-9】完成一個(gè)星/三角啟動(dòng)/停止功能(沒有使用參數(shù)傳遞)。 在塊目錄中插入功能塊,在生成的功能塊的過程中需要選擇塊的編號(hào)及附加信息,如圖5.45所示。圖5.45選擇塊的編號(hào)及寫上附加信息第79頁/共121頁 在塊目錄中可以查到當(dāng)前塊的詳細(xì)記錄,雙擊塊目錄中的FB10,在FB10里定義接口參數(shù),如圖5.46所示,然后編寫FB10的程序,如圖5.47所示。圖5.46在FB10中定義接口參數(shù)(定義背景數(shù)據(jù)塊的符號(hào))第80頁/共121頁第81頁/共121頁第82頁/共121頁圖5.47在FB10中編寫的程序第83頁
60、/共121頁 在OB1編程界面里打開指令樹中功能塊的指令(注意,該功能塊的程序必須在這之前編寫完畢,否則會(huì)出現(xiàn)時(shí)間不一致的錯(cuò)誤)并拖拽到程序期待的地方,如圖5.48所示,然后點(diǎn)擊FB10頂上的“?”位置,寫上背景數(shù)據(jù)塊。在生成背景數(shù)據(jù)塊的過程中會(huì)出現(xiàn)如圖5.49所示的對(duì)話框,點(diǎn)擊“是”確認(rèn),這樣FB10的背景數(shù)據(jù)塊就會(huì)出現(xiàn)在當(dāng)前的FB10頂上、管理界面的塊目錄中和符號(hào)表里。 圖5.48寫上FB10的背景數(shù)據(jù)塊第84頁/共121頁圖5.49生成實(shí)例數(shù)據(jù)塊DB10 可以打開管理界面的塊目錄查看到詳細(xì)的目錄,并雙擊DB10圖標(biāo),打開DB10查看詳細(xì)信息,如圖5.50所示。DB10的詳細(xì)信息是FB10
61、接口參數(shù)中除臨時(shí)參數(shù)不會(huì)出現(xiàn)外,其他已經(jīng)在FB10接口參數(shù)區(qū)定義了的參數(shù)將出現(xiàn)在DB10背景數(shù)據(jù)塊里。第85頁/共121頁圖5.50背景數(shù)據(jù)塊里的信息 然后把項(xiàng)目中所有信息下載到CPU中并運(yùn)行,當(dāng)接通M0.0時(shí)可以啟動(dòng)水泵的星/三角單元,當(dāng)接通M0.1時(shí),可以停止水泵的星/三角單元。當(dāng)接通M1.0時(shí)可以啟動(dòng)油泵的星/三角單元,當(dāng)接通M1.1時(shí),可以停止油泵的星/三角單元。第86頁/共121頁 【例5-10】完成一個(gè)星/三角啟動(dòng)功能(使用參數(shù)傳遞) 在塊目錄中插入功能塊FB10,然后在塊目錄里插入數(shù)據(jù)塊。在數(shù)據(jù)塊生成功能塊的過程中需要選擇塊的編號(hào)(本例是DB10)及附加信息,如圖5.51所示,特
62、別注意這時(shí)需要選擇“實(shí)例DB”并指明屬于哪一個(gè)功能塊(本例是FB10)。這里的“實(shí)例DB”習(xí)慣稱為背景數(shù)據(jù)塊或背景DB。利用同樣的方法插入DB11,也選擇“實(shí)例DB”并指明屬于哪一種功能塊(本例是FB10)。圖5.51選擇數(shù)據(jù)塊的編號(hào)及附加信息第87頁/共121頁 使用這種方法生成的背景數(shù)據(jù)塊也會(huì)出現(xiàn)在管理界面的塊目錄和符號(hào)表里。在塊目錄中可以查看到當(dāng)前塊的詳細(xì)目錄,如圖5.52所示。圖5.52查看塊目錄里的詳細(xì)目錄 打開圖5.52中的FB10,定義接口參數(shù),如圖5.53所示。在管理畫面里點(diǎn)擊“S7程序”雙擊“符號(hào)”圖標(biāo),可以打開全局符號(hào)表,如圖5.54所示,在全局符號(hào)表里可以編輯全局符號(hào)。然
63、后在FB10里編寫控制邏輯程序,如圖5.55所示,注意FB10里的控制程序全部使用FB10的局域變量參數(shù),如果使用全局變量,實(shí)現(xiàn)不了本例中的控制功能。第88頁/共121頁圖5.53 在FB10里定義接口參數(shù)第89頁/共121頁圖5.54定義符號(hào)信息表第90頁/共121頁圖5.55 在FB10里編寫邏輯控制程序 第91頁/共121頁 然后編寫調(diào)用FB10的程序,本例在OB1里調(diào)用FB10,如圖5.56所示程序。圖5.55在OB1里編寫的程序 第92頁/共121頁 在管理畫面的塊目錄里打開DB10。打開的方法是雙擊塊目錄里的DB10,自動(dòng)彈出數(shù)據(jù)塊的參數(shù)分配方式對(duì)話框,點(diǎn)擊“是”,默認(rèn)以“數(shù)據(jù)視圖
64、”方式打開數(shù)據(jù)塊,如圖5.56所示。圖5.56可以監(jiān)控和改變數(shù)據(jù)塊當(dāng)前值的界面(數(shù)據(jù)視圖)第93頁/共121頁 在圖5.56所示“數(shù)據(jù)視圖”界面中可以編輯數(shù)據(jù)塊的當(dāng)前值以及在線監(jiān)控?cái)?shù)據(jù)塊,并可以將當(dāng)前值下載至PLC,無需下載整個(gè)塊。 例如改變圖5.56所示DB10里面的“shi_jian”的當(dāng)前值:點(diǎn)擊DB10中名稱為“shi_jian”的“實(shí)際值”一欄并改寫實(shí)際值為“S5T#4S”,然后點(diǎn)擊菜單欄的“數(shù)據(jù)塊”“保存”,這樣就把DB10的“shi_jian”當(dāng)前值改為“S5T#4S”了。 例如監(jiān)控圖5.56所示DB10里的數(shù)據(jù)塊:首先STEP7編程設(shè)備與CPU連線,點(diǎn)擊菜單欄的“調(diào)試”“監(jiān)控”
65、,即可以看到DB10里的數(shù)據(jù)塊的當(dāng)前值。 在管理畫面的塊目錄里可以使用同樣的方法打開DB11,編輯當(dāng)前值及在線監(jiān)控。 在圖5.56中點(diǎn)擊菜單欄“查看”“說明視圖”,可以查看到數(shù)據(jù)塊里定義的數(shù)據(jù),在說明視圖中不能編輯和監(jiān)控當(dāng)前值,如圖5.57所示。再點(diǎn)擊菜單欄“查看”“數(shù)據(jù)視圖”,可以從說明視圖切換到數(shù)據(jù)視圖。第94頁/共121頁圖5.57 不能監(jiān)控和改變數(shù)據(jù)塊當(dāng)前值的界面(說明視圖)第95頁/共121頁 最后把項(xiàng)目中所有信息下載到CPU中并運(yùn)行,當(dāng)接通M0.0時(shí)可以啟動(dòng)水泵的星/三角單元,當(dāng)接通M0.1時(shí),可以停止水泵星/三角單元。圖5.58是使用PLCSIM的測試畫面。圖5.58 使用PLC
66、SIM的測試畫面第96頁/共121頁 【例5-11】完成一個(gè)星/三角單元的啟動(dòng)/停止功能(使用多重背景數(shù)據(jù)) 在塊目錄中插入FB10,然后雙擊塊目錄中的FB10,打開FB10編輯界面,定義FB10的接口參數(shù),如圖5.59所示。圖5.59 定義FB10接口參數(shù)第97頁/共121頁 在FB10里面使用局域變量編寫星/三角單元啟動(dòng)/停止功能邏輯程序,如圖5.60所示,并保存。圖5.60 在FB10里編寫的邏輯控制程序第98頁/共121頁 在管理畫面的塊目錄里插入多背景功能塊,在插入功能塊的過程中自動(dòng)彈出功能塊屬性對(duì)話框,如圖5.61所示,選擇“FB1”和“多實(shí)例能力”,也就是習(xí)慣說的“多背景功能”,如果需要可以填寫其他的附屬信息。圖5.61 新插入功能塊的屬性畫面第99頁/共121頁 在管理畫面的塊目錄里插入多背景功能塊的數(shù)據(jù)塊,在插入數(shù)據(jù)塊的過程中自動(dòng)彈出數(shù)據(jù)塊屬性對(duì)話框,如圖5.62所示,選擇“DB1”和“實(shí)例DB”,也就是習(xí)慣說的“背景數(shù)據(jù)塊”,并指明屬于FB1的背景數(shù)據(jù)塊,如果需要可以填寫其他的附屬信息。圖5.62背景數(shù)據(jù)塊的屬性畫面第100頁/共121頁 使用這種方法生成的功能塊及
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- there-to-be-和there-being
- 《計(jì)算機(jī)應(yīng)用基礎(chǔ)教程》第9課:Excel數(shù)據(jù)運(yùn)算與分析
- 銷售人員培訓(xùn)(建議)
- 高層建筑的工程風(fēng)險(xiǎn)簡析及案例
- 第二課時(shí)常見的酸
- 加工中心維護(hù)與保養(yǎng)
- 2013課用3表意不明不合邏輯
- 《美容院運(yùn)營模式》PPT課件
- 妊娠和系統(tǒng)性紅斑狼瘡ppt課件
- 耦合電感的串聯(lián)與并聯(lián)
- 珠寶四大類行業(yè)介紹
- 合同能源管理培訓(xùn)資料
- 工程公司檔案管理培訓(xùn)20138
- 高一家長會(huì)課件PPT
- 教育精品:課題2如何正確書寫化學(xué)方程式