下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、PLC程序家族的故事 1程序家族有哪些成員? PLC的控制程序一般由主程序、子程序和中斷程序組成。西門子的S7-300/400將子程序分為功能(Function,或稱為函數(shù))和功能塊(Function Block)。 在每一個掃描循環(huán)周期,CPU都要調(diào)用一次主程序,用戶程序必須有一個并且只能有一個主程序。小型控制系統(tǒng)可以只有主程序。 中斷程序用于快速響應(yīng)中斷事件。在中斷事件發(fā)生時,CPU將停止執(zhí)行當(dāng)時正在處理的程序或任務(wù),去執(zhí)行用戶編寫的中斷程序。執(zhí)行完中斷程序后,繼續(xù)執(zhí)行被暫停執(zhí)行的程序或任務(wù)。 2哪些情況需要使用子程序? 當(dāng)系統(tǒng)規(guī)模很大、控制要求復(fù)雜時,如果將全部控制任務(wù)放在主程序中,主程
2、序?qū)浅?fù)雜,既難以調(diào)試,也難以閱讀。使用子程序可以將程序分成容易管理的小塊,使程序結(jié)構(gòu)簡單清晰,易于調(diào)試、查錯和維護(hù)。 子程序也可以用于需要多次反復(fù)執(zhí)行相同任務(wù)的地方,只需要編寫一次子程序,別的程序在需要的時候多次調(diào)用它,而無需重寫該程序。 3怎樣調(diào)用子程序? 主程序可以調(diào)用子程序,子程序也可以嵌套調(diào)用別的子程序。嵌套調(diào)用的層數(shù)是有限制的,例如S7-200的最大嵌套深度為8級。執(zhí)行完子程序后,返回調(diào)用它的程序中的調(diào)用指令的下一條指令。 4每個掃描周期都會執(zhí)行子程序嗎? 子程序的調(diào)用可以是有條件的,在被調(diào)用期間,每個掃描周期都要執(zhí)行一次被調(diào)用的子程序。調(diào)用條件不滿足時不會執(zhí)行子程序中的指令,
3、因此使用子程序可以減少掃描循環(huán)時間。 5停止調(diào)用子程序后,子程序中的線圈處于什么狀態(tài)? 停止調(diào)用子程序后,不再執(zhí)行子程序中的指令。子程序中線圈對應(yīng)的編程元件如果沒有受到別的程序的控制,將保持子程序最后一次執(zhí)行后的狀態(tài)不變。即使控制這些線圈的觸點(diǎn)的狀態(tài)變化,該線圈對應(yīng)的元件的狀態(tài)也不會變化,因為這時根本就沒有執(zhí)行子程序中的指令。 6怎樣實現(xiàn)子程序的無條件調(diào)用? 有的PLC的子程序調(diào)用指令不能直接接到左側(cè)的垂直“電源”線上,需要通過觸點(diǎn)電路來控制是否調(diào)用子程序,即子程序的調(diào)用是有條件的??梢杂靡恢睘镺N的特殊位元件(例如S7-200的SM0.0或FX系列的M8000)的常開觸點(diǎn)來實現(xiàn)子程序的無條件
4、調(diào)用。不同品牌的PLC的子程序大致可以分為兩種,一種子程序沒有輸入、輸出參數(shù)和局部變量,另一種則有。 1什么是全局變量和局部變量? 以西門子的S7-200為例,輸入I、輸出Q、變量存儲器V、內(nèi)部存儲器位M、定時器T、計數(shù)器C等屬于全局變量,可以在符號表中為全局變量定義符號名。程序組織單元(Program Organizational Unit)簡稱為POU,包括主程序、子程序和中斷程序。每個POU均有自己的64字節(jié)局部變量,局部變量用L(Local)來表示,局部變量只能在它所在的POU中使用。與此相反,全局變量可以在各POU中使用。 2局部變量有哪些類型? 子程序可以使用下列局部變量:1) T
5、EMP (臨時變量)是暫時保存在局部數(shù)據(jù)區(qū)中的變量。只有在執(zhí)行該P(yáng)OU時,定義的臨時變量才被使用,POU執(zhí)行完后,不再保存臨時變量的數(shù)值。主程序和中斷程序的局部變量表中只有TEMP變量。2) IN(輸入?yún)?shù))由調(diào)用它的POU提供的傳入子程序的輸入?yún)?shù)。 3) OUT(輸出參數(shù))是子程序的執(zhí)行結(jié)果,它被返回給調(diào)用它的POU。4) IN_OUT(輸入_輸出參數(shù))的初始值由調(diào)用它的POU傳送給子程序,并用同一變量將子程序的執(zhí)行結(jié)果返回給調(diào)用它的POU。 主程序和中斷程序的局部變量表中只有臨時變量TEMP。 3子程序的輸入、輸出參數(shù)有什么作用?具有輸入、輸出參數(shù)和局部變量的子程序易于實現(xiàn)結(jié)構(gòu)化編程,對
6、于長期生產(chǎn)同類設(shè)備或生產(chǎn)線的廠家尤為有用。編程人員為設(shè)備的各部件或工藝功能編寫了大量的通用的子程序。即使不知道子程序的內(nèi)部代碼,只要知道子程序的功能和輸入、輸出參數(shù)的意義,就可以用它們快速“組裝”出滿足不同的用戶要求的控制程序。就好像可以用數(shù)字集成電路芯片組成復(fù)雜的數(shù)字電路一樣。 如果子程序沒有輸入、輸出參數(shù),這種子程序沒有明確的軟件接口,使用起來很不方便。 4局部變量有什么優(yōu)點(diǎn)? 1) 子程序如果沒有局部變量,它和調(diào)用它的程序之間只能通過全局變量來交換數(shù)據(jù),子程序內(nèi)部也只能使用全局變量。將它移植到別的項目時,需要對各POU使用的全局變量作統(tǒng)一安排,以保證不會出現(xiàn)地址沖突。當(dāng)程序很復(fù)雜,子程序
7、很多時,這種地址分配是很花時間的。如果子程序有局部變量,并且在子程序中只使用局部變量,不使用全局變量,因為與其他POU沒有地址沖突,不作任何改動,就可以將子程序移植到別的項目中去。 為了減少移植子程序的工作量,在子程序中應(yīng)盡量避免使用全局變量和全局符號。 2) 如果使用局部變量表中的臨時變量(TEMP),同一片物理存儲器可以在不同的程序中重復(fù)使用。 下面以S7-200為例,介紹子程序的編程和調(diào)用的過程。 1創(chuàng)建子程序 生成項目時,自動生成一個子程序。打開程序編輯器,執(zhí)行“編輯”菜單中的命令“插入”“子程序”,將自動生成和打開新的子程序。 2生成局部變量 名為“模擬量計算”的子程序如下圖所示,在
8、該子程序的局部變量表中,定義了3個輸入(IN)參數(shù),一個輸出(OUT)參數(shù),和名為“暫存1”的臨時(TEMP)變量。局部變量表最左邊的一列是自動分配的每個變量在局部存儲器(L)中的地址。 3編寫子程序的梯形圖 局部變量表的下面是程序區(qū)(見上圖),輸入?yún)?shù)“轉(zhuǎn)換值”是來自模擬量輸入模塊的與模擬量成正比的轉(zhuǎn)換值,輸出參數(shù)“模擬值”是計算出的對應(yīng)的模擬量(例如壓力、溫度等)的工程值。子程序中變量名稱前的“#”表示該變量是局部變量,它是編程軟件自動添加的,輸入局部變量時不用輸入“#”號。特殊存儲器位SM0.0的常開觸點(diǎn)總是閉合。 4子程序的調(diào)用 可以在主程序、其他子程序或中斷程序中調(diào)用子程序,調(diào)用子程
9、序時將執(zhí)行子程序中的指令,直至子程序結(jié)束,然后返回調(diào)用它的程序中該子程序調(diào)用指令的下一條指令之處。 創(chuàng)建子程序后,在上圖左邊指令樹最下面的“調(diào)用子程序”文件夾中自動生成剛創(chuàng)建的子程序“模擬量計算”對應(yīng)的圖標(biāo)。 在梯形圖程序中插入子程序調(diào)用指令時,首先打開主程序,顯示出需要調(diào)用子程序的網(wǎng)絡(luò)。打開指令樹最下面的“調(diào)用子程序”文件夾,用鼠標(biāo)左鍵按住需要調(diào)用的子程序圖標(biāo),將它“拖”到程序編輯器中需要的位置。放開左鍵,子程序塊便被放置在該位置。 子程序方框中左邊的“轉(zhuǎn)換值”等是在子程序“模擬量計算”的變量聲明表中定義的輸入?yún)?shù),右邊的“模擬值”是輸出參數(shù)。它們被稱為子程序的形式參數(shù),簡稱為形參,形參在子
10、程序內(nèi)部的程序中使用。調(diào)用子程序時,需要為每個形參指定實際的參數(shù)(簡稱為實參),例如為形參“轉(zhuǎn)換值”指定的實參為模擬量輸入字AIW2(見上圖)。 子程序調(diào)用指令中的實參的有效操作數(shù)為存儲器地址、常量、全局符號和調(diào)用指令所在的POU中的局部變量,不能指定被調(diào)用子程序中的局部變量。 CPU調(diào)用子程序時,輸入?yún)?shù)被復(fù)制到子程序的局部存儲器,子程序執(zhí)行完后,從局部存儲器復(fù)制輸出參數(shù)到指定的輸出參數(shù)地址。 西門子S7-300/400的子程序分為功能(Function)和功能塊(Function Block)。 1功能(FC) 功能是用戶編寫的沒有固定的存儲區(qū)的程序塊,其臨時變量存儲在局部數(shù)據(jù)堆棧中,功能
11、執(zhí)行結(jié)束后,不再保存這些數(shù)據(jù)??梢杂霉蚕頂?shù)據(jù)區(qū)來存儲那些在功能執(zhí)行結(jié)束后需要保存的數(shù)據(jù)。 功能與S7-200的子程序的局部變量基本上相同(見下圖)。與S7-200的子程序相比,其局部變量多了個返回值(RET_VAL)。返回值實際上屬于輸出參數(shù)。 2參數(shù)類型 用于塊之間傳送數(shù)據(jù)的形式參數(shù)可以定義為12種基本數(shù)據(jù)類型、5種復(fù)雜數(shù)據(jù)類型(見上圖),也可以為塊之間傳送數(shù)據(jù)的形式參數(shù)定義下列的參數(shù)類型: 1)Timer或Counter:指定執(zhí)行塊時要使用的定時器或計數(shù)器。例如定義功能中的輸入變量TON1的數(shù)據(jù)類型為Timer,兩次調(diào)用功能時分別設(shè)置TON1的實參為T5和T6。 2)塊:指定用作輸入或輸出
12、的特定塊。例如定義某個輸入變量的數(shù)據(jù)類型為Block_FB,在調(diào)用塊時指定塊地址(例如FB 3)作為實參。 3)POINTER:指針是變量的地址而不是變量的值。POINTER參數(shù)類型的形參應(yīng)為地址,例如P#M50.0。在STEP 7中,指針也可以用地址作實參 (例如M 50.0)。 4)ANY:用于將任意的數(shù)據(jù)類型傳遞給聲明的形參。ANY可用于實參的數(shù)據(jù)類型未知,或?qū)崊⒖梢允褂萌我鈹?shù)據(jù)類型的情況。例如P#DB2.DBX50.0 BYTE 10表示DB 2中的DBB50DBB59。ANY也可以用地址作實參,例如DB2.DBW30和Q12.5,但是只能指向一個變量。 5)UDT:用戶自定義的數(shù)據(jù)類
13、型。 3功能塊(FB) 功能塊是用戶編寫的有自己的存儲區(qū)(背景數(shù)據(jù)塊)的程序塊,功能塊的輸入、輸出變量和靜態(tài)變量(STAT)存放在指定的背景數(shù)據(jù)塊 (DI) 中,臨時變量存儲在局部數(shù)據(jù)堆棧中。功能塊執(zhí)行完后,背景數(shù)據(jù)塊中的數(shù)據(jù)不會丟失,但是不會保存局部數(shù)據(jù)堆棧中的數(shù)據(jù)。 4背景數(shù)據(jù)塊背景數(shù)據(jù)塊是專門指定給某個功能塊(FB)使用的數(shù)據(jù)塊,它是FB專用的工作存儲區(qū)。 背景數(shù)據(jù)塊用來保存FB的實參和靜態(tài)數(shù)據(jù),背景數(shù)據(jù)塊中的數(shù)據(jù)是自動生成的。它們是功能塊的變量聲明表中的數(shù)據(jù)(不包括臨時變量)。調(diào)用功能塊時應(yīng)指定對應(yīng)的背景數(shù)據(jù)塊。 5功能與功能塊的區(qū)別 FB和FC均為用戶編寫的子程序,局部變量表中均有I
14、N、OUT、IN_OUT和TEMP變量。FC的返回值Ret_Val實際上屬于輸出參數(shù)。下面是FC和FB的區(qū)別: 1)功能塊有背景數(shù)據(jù)塊,功能沒有背景數(shù)據(jù)塊。 2)只能在功能內(nèi)部訪問它的局部變量。其他邏輯塊可以訪問功能塊的背景數(shù)據(jù)塊中的變量。 3)功能沒有靜態(tài)變量(STAT),功能塊有保存在背景數(shù)據(jù)塊中的靜態(tài)變量。 功能如果有執(zhí)行完后需要保存的數(shù)據(jù),只能存放在全局變量(例如共享數(shù)據(jù)塊和M區(qū))中,但是這樣會影響功能的可移植性。如果功能或功能塊的內(nèi)部不使用全局變量,只使用局部變量,不需要作任何修改,就可以將它們移植到其他項目。如果塊的內(nèi)部使用了全局變量,在移植時需要考慮每個塊使用的全局變量是否會與別
15、的塊產(chǎn)生地址沖突。 4)功能塊的局部變量(不包括TEMP)有初始值,功能的局部變量沒有初始值。調(diào)用功能時應(yīng)給所有的形參指定實參。 調(diào)用功能塊時可以不設(shè)置某些輸入、輸出參數(shù)的實參,此時這些參數(shù)將使用背景數(shù)據(jù)塊中的初始值。 1中斷與中斷程序 有很多PLC內(nèi)部或外部的事件是隨機(jī)發(fā)生的,例如外部開關(guān)量輸入信號的上升沿或下降沿、通信事件、高速計數(shù)器的當(dāng)前值等于設(shè)定值和定時中斷等,事先并不知道這些事件何時發(fā)生,但是它們出現(xiàn)時需要盡快地處理它們,PLC用中斷來快速處理上述事件。 例如電力系統(tǒng)出現(xiàn)故障時,可能引發(fā)多個斷路器相繼跳閘。為了分析故障的起因,需要及時準(zhǔn)確記錄事故發(fā)生的時間??梢杂糜布袛鄟硗瓿蛇@一任
16、務(wù)。 由于PLC的掃描工作方式,普通定時器的定時誤差很大,定時時間到了也不能馬上去處理要作的事情??梢杂枚〞r中斷來實現(xiàn)高精度定時,在定時時間到時CPU自動調(diào)用定時中斷程序。 在出現(xiàn)一個中斷事件時,當(dāng)前正在執(zhí)行的程序在當(dāng)前指令執(zhí)行完后被停止執(zhí)行(被中斷),操作系統(tǒng)將會調(diào)用一個用戶編寫的分配給該事件的中斷程序(S7-300/400稱為組織塊)。中斷程序被執(zhí)行完后,被暫停執(zhí)行的程序?qū)谋恢袛嗟牡胤介_始繼續(xù)執(zhí)行。這一過程不受PLC掃描工作方式的影響,因此使PLC能迅速響應(yīng)中斷事件。換句話說,中斷程序不是在每次掃描循環(huán)中處理,而是在需要時才被及時地處理。 2中斷的優(yōu)先級 中斷事件有不同的優(yōu)先級,高優(yōu)先級
17、的中斷程序可以中斷低優(yōu)先級的中斷程序。 如果在執(zhí)行中斷程序時,又檢測到一個中斷請求,CPU將比較兩個中斷源的中斷優(yōu)先級。如果優(yōu)先級相同,按照產(chǎn)生中斷請求的先后次序進(jìn)行處理。如果后者的優(yōu)先級比正在執(zhí)行的中斷源的優(yōu)先級高,將中止當(dāng)前正在處理的中斷程序,改為調(diào)用較高優(yōu)先級的中斷源的中斷程序,這種處理方式稱為中斷程序的嵌套調(diào)用。 3中斷的控制 不是所有的用戶都需要PLC的中斷功能,用戶一般也不需要處理所有的中斷事件,因此允許用戶用指令來控制是否需要中斷和需要哪些中斷。 S7-200的中斷允許指令EI允許處理中斷事件。至于需要處理哪些中斷事件,需要單獨(dú)設(shè)置。禁止中斷指令DI禁止處理所有的中斷事件。 S7-200進(jìn)入RUN模式時自動禁止中斷,在RUN模式執(zhí)行中斷允許指令后,各中斷事件發(fā)生時是否會執(zhí)行中斷程序,取決于是否執(zhí)行了該中斷事件的中斷連接指令A(yù)TCH。 中斷分離指令DTCH用來斷開某個中斷事件與中斷程序之間的聯(lián)系,從而禁止單個中斷事件。4編寫中斷程序應(yīng)注意的問題 因為不能預(yù)知系統(tǒng)何時調(diào)用中斷程序,為了避免在中斷程序中改寫其他程序使用的存儲器,在中斷程序中應(yīng)盡量使用局部變量。 應(yīng)優(yōu)化中斷程序,使中斷程序盡量短小,以減少中斷程序的執(zhí)行時間,減少
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年金融機(jī)構(gòu)間協(xié)議存款結(jié)算服務(wù)合同3篇
- 2025年度個人資產(chǎn)反擔(dān)保業(yè)務(wù)合同范本3篇
- 二零二五版旅游度假村客房租賃與管理服務(wù)協(xié)議4篇
- 二零二五年度門店合伙人員工招聘與培訓(xùn)協(xié)議4篇
- 二零二五版門衛(wèi)人員夜間值班安全協(xié)議2篇
- 全國醫(yī)療機(jī)構(gòu)感染監(jiān)測網(wǎng) -2024全球感染預(yù)防與控制報告
- 新建農(nóng)溝施工方案
- 2025年度金融產(chǎn)品銷售會議服務(wù)合同范本3篇
- 二零二五年度智能倉儲物流系統(tǒng)開發(fā)與應(yīng)用合同4篇
- 2025年度個人藝術(shù)品鑒定與評估合同書(專家團(tuán)隊版)4篇
- 生活垃圾焚燒發(fā)電廠摻燒一般工業(yè)固廢和協(xié)同處置污泥項目環(huán)評資料環(huán)境影響
- 軟件開發(fā)年終工作總結(jié)課件
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 現(xiàn)場勘察制度
- 2024年山東省煙臺市中考英語試題含解析
- 專項14-因式分解-專題訓(xùn)練(50道)
- 四年級簡便運(yùn)算100道大全及答案
- 黔東南南苗族侗族自治州黃平縣2024年數(shù)學(xué)三年級第一學(xué)期期末考試試題含解析
- 科研倫理審查與違規(guī)處理考核試卷
- 安平縣2024年小升初必考題數(shù)學(xué)檢測卷含解析
- 小學(xué)四年級數(shù)學(xué)奧數(shù)題100題附答案(完整版)
評論
0/150
提交評論