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