計與調(diào)試)
簡介本資源是一套基于西門子S7-1200 PLC實現(xiàn)的六層電梯控制系統(tǒng)完整工程文件面向自動化、電氣工程及相關(guān)專業(yè)初學者與實踐者解決電梯邏輯控制建模、多樓層召喚響應(yīng)、平層定位、開關(guān)門協(xié)同及安全保護等核心問題。壓縮包共34個文件含6個XML配置文件用于設(shè)備組態(tài)與通信參數(shù)、5個DEL與CFS文件系統(tǒng)數(shù)據(jù)塊與符號表支持、1個.tis項目結(jié)構(gòu)文件及多個.plf、.idx、.db等TIA Portal工程必需的底層編譯與索引文件整體大小為638KB結(jié)構(gòu)符合標準S7-1200項目組織規(guī)范。已有513人學習下載可直接導入TIA Portal V15及以上版本進行編譯、仿真與硬件下載。讀者將獲得可運行的梯形圖/ST混合邏輯程序、完整的PLC地址分配表、樓層信號采集與狀態(tài)機控制流程、以及包含UserFiles、PEData、XRef等模塊的成熟工程目錄結(jié)構(gòu)是理解工業(yè)級電梯控制邏輯與PLC工程化開發(fā)的優(yōu)質(zhì)實操范例。 從學生時代的課程設(shè)計開始一直到后來做真實的三層、六層甚至高層電梯改造“基于PLC的六層電梯控制程序S7-1200”基本上是繞不開的經(jīng)典題目。去年整理硬盤的時候我翻出自己這套用博途TIA Portal寫的S7-1200六層電梯控制程序順手重新打開工程跑了一遍仿真發(fā)現(xiàn)核心邏輯放到今天依然通用只是當年踩過的那些坑、總結(jié)出來的調(diào)試方法現(xiàn)在再回頭看更清晰了。這篇就把整個設(shè)計思路、I/O分配、程序架構(gòu)、實操步驟和排查經(jīng)驗完整拆開講不管你是準備PLC課程設(shè)計、畢業(yè)設(shè)計還是初學者接了電梯改造項目都能拿來直接參考。1. 項目概述電梯控制程序到底要解決什么問題1.1 電梯控制的核心是“調(diào)度”而不是“動作”很多新手第一次接觸電梯控制第一反應(yīng)是糾結(jié)“怎么讓電機轉(zhuǎn)起來”實際上PLC控制電梯和變頻器控制電機是兩回事。在標準電梯改造中六層電梯的拖動電機一般由變頻器帶動PLC根本不需要直接輸出PID調(diào)速信號它只負責決定“往上還是往下”“到第幾層?!薄伴T開多久”。也就是說PLC站在調(diào)度層采集各種按鈕和傳感器信號通過邏輯判斷產(chǎn)生方向指令、停層指令、開關(guān)門指令再把這些指令輸出到接觸器、繼電器或變頻器讓對方去執(zhí)行。所以六層電梯控制程序的核心本質(zhì)上是三個邏輯問題呼叫如何登記、方向如何判定、到站如何停車開關(guān)門。把這三個問題想透了程序怎么寫都不會亂。1.2 為什么選S7-1200做六層電梯六層電梯的開關(guān)量點位大概在40點以內(nèi)輸入約25到30點輸出約10到15點這個規(guī)模用西門子S7-1200來跑非常舒服。S7-1200的CPU自帶14DI/10DO配合一個SM 1221數(shù)字量輸入模塊或者SM 1223數(shù)字量混合模塊點位完全夠用硬件成本不高。編程軟件TIA Portal博途是現(xiàn)在西門子的主流環(huán)境比Step 7老界面友好太多支持梯形圖、SCL、FBD初學和學習工控的人上手快。集成以太網(wǎng)口下載調(diào)試方便網(wǎng)線一插就能在線監(jiān)控變量、強制信號比老式MPI/DP電纜體驗好一個時代。后續(xù)如果要接上位機C#、LabVIEW、Java讀數(shù)據(jù)或者Profinet遠程從站S7-1200都是現(xiàn)成支持不用換平臺。從課程設(shè)計和工程應(yīng)用兩個角度來說S7-1200都是“性價比很高的選擇”。有些學校教材還在用200SMART或三菱FX系列做電梯那也很好只是我下面講的具體組態(tài)和指令會以S7-1200博途為準。1.3 六層電梯系統(tǒng)整體構(gòu)成整套控制系統(tǒng)可以分為三個部分信號輸入側(cè)、PLC控制器、執(zhí)行輸出側(cè)。信號輸入側(cè)包括轎廂內(nèi)選層按鈕1到6層共6個、廳外召喚按鈕1層只有上召6層只有下召中間2到5層有上召和下召共10個、每層平層開關(guān)/樓層感應(yīng)開關(guān)共6個用于判斷轎廂當前到哪一層、門鎖信號、開關(guān)門到位信號、超載信號、急停信號、檢修模式信號。執(zhí)行輸出側(cè)包括上行接觸器、下行接觸器、開門繼電器、關(guān)門繼電器、樓層顯示驅(qū)動、方向指示燈、到站提示鈴。這樣一個系統(tǒng)輸入點位可以做到26到30個輸出點位10到14個。所以我建議CPU選擇1214C DC/DC/DC再擴展一塊SM 1221 DI 16或者用SM 1223的8DI/8DO組合。后者雖然模塊多一塊但能讓輸出冗余更充裕。2. 硬件搭建與I/O信號分配2.1 輸入信號梳理不能只數(shù)按鈕把輸入信號列出來這一步看著簡單實際上一錯后面全亂。很多初學者拿到的參考圖紙里I/O表寫得七零八落照著接線后程序怎么調(diào)都別扭大部分問題出在平層信號和門區(qū)信號的處理上。六層電梯最常用的樓層檢測方案是在井道內(nèi)每層安裝一個感應(yīng)開關(guān)或隔磁板轎廂側(cè)面安裝一個平層感應(yīng)器。轎廂經(jīng)過哪一層哪一層的信號就有效PLC據(jù)此判斷當前樓層。注意這個信號不是“持續(xù)保持”的轎廂離開該層后信號就消失所以程序中必須用當前樓層記憶機制運行到某層時把當前樓層號更新并保持直到下一次更新。還有一種方案是接近開關(guān)加計數(shù)用高速計數(shù)器HSC統(tǒng)計脈沖算樓層但六層電梯用不到這么復(fù)雜每個樓層一個感應(yīng)點最簡單可靠。內(nèi)呼和外呼按鈕就更直接了內(nèi)呼6個外呼10個1層上召、6層下召、2到5層上下召各一全部為自復(fù)位按鈕接到PLC數(shù)字量輸入點。這些按鈕在程序中要用置位/復(fù)位方式“記住”不能被瞬時的按鈕脈沖沖掉所以要登記和消號。下面是我實際項目中常用的一組I/O分配參考你可以直接用PLC地址信號名稱說明I0.0~I0.5內(nèi)呼1~6層按鈕轎廂內(nèi)選層I0.61層上召喚廳外呼梯上I0.7、I1.0、I1.12/3/4層上召喚廳外呼梯上I1.25層上召喚廳外呼梯上I1.32層下召喚廳外呼梯下I1.4、I1.5、I2.03/4/5層下召喚廳外呼梯下I2.16層下召喚廳外呼梯下I2.2~I2.71~6層平層開關(guān)井道樓層感應(yīng)I3.0門鎖信號所有廳門轎門閉合I3.1開門到位信號開門機反饋I3.2關(guān)門到位信號開門機反饋I3.3超載信號超載開關(guān)I3.4急停信號常閉串入I3.5檢修/慢車模式檢修時強制低速Q(mào)0.0上行接觸器控制電機正向Q0.1下行接觸器控制電機反向Q0.2開門繼電器開門機動作Q0.3關(guān)門繼電器關(guān)門機動作Q0.4樓層顯示ABCD編碼個位Q0.5樓層顯示BBCD編碼Q0.6樓層顯示CBCD編碼Q1.0上行方向燈指示上行Q1.1下行方向燈指示下行Q1.2到站鈴/蜂鳴器到站提醒這張表不是死的。比如平層開關(guān)數(shù)量、外呼接線順序都可以根據(jù)現(xiàn)場調(diào)整但有一個原則必須保證所有輸入點中急停、門鎖、上下行接觸器這類安全相關(guān)信號必須接常閉邏輯也就是線路斷開時PLC讀到的必須是“停車條件不滿足”而不是“允許運行”。這樣一旦斷線電梯停在原處而不是瘋跑。2.2 輸出側(cè)執(zhí)行機構(gòu)接觸器互鎖是保命項輸出側(cè)最核心的是上行接觸器和下行接觸器。這兩個接觸器任何時刻只能有一個吸合否則主回路短路輕則跳閘重則燒變頻器。程序里當然要做互鎖即上行條件滿足時強制復(fù)位下行輸出下行條件滿足時強制復(fù)位上行輸出但程序互鎖不等于物理互鎖。在電氣回路上同樣必須用接觸器輔助觸點做硬件互鎖KM1的常閉觸點串聯(lián)在KM2線圈回路里KM2的常閉觸點串聯(lián)在KM1線圈回路里。這是我反復(fù)強調(diào)的程序只是軟邏輯硬件才是保命底線。開門和關(guān)門繼電器也是一樣不能同時輸出。雖然開門機和關(guān)門機在物理上通常自帶限位但PLC在邏輯上還是要做到二選一而且要有“關(guān)門途中再次開門”的處理。至于樓層顯示最省輸出的方式是用BCD碼輸出3個輸出點Q0.4、Q0.5、Q0.6組合代表1到6層二進制再接一個BCD到七段碼的譯碼器驅(qū)動數(shù)碼管。這樣比直接給七段碼輸出省一半以上的點。有些項目直接用觸摸屏顯示樓層號那就更省了PLC只需把當前樓層號放到一個整型變量里。2.3 接線實操注意強弱電混裝最容易出問題電梯控制柜里既有220VAC的接觸器、變壓器又有24VDC的傳感器和PLC接線時最忌諱強電和弱點捆在一起走線槽。我在現(xiàn)場吃過虧PLC輸入信號線跟接觸器線走同一根扎帶接觸器一吸合PLC的AI/AO信號亂跳。后來改成強弱電分離輸入信號用屏蔽雙絞線傳感器和PLC電源用一個獨立的DC24V開關(guān)電源問題才消失。另外S7-1200數(shù)字量輸入默認是漏型接法也就是NPN傳感器接法公共端M接DC24V負極。如果你現(xiàn)場用的是PNP型傳感器在自動化行業(yè)很常見要么選源型輸入接法要么用中間繼電器轉(zhuǎn)接。這個接錯了指示燈不亮但信號一直沒進來排查起來特別浪費時間。3. 核心控制邏輯設(shè)計與程序架構(gòu)3.1 程序架構(gòu)用OB、FB、DB把邏輯拆干凈S7-1200的程序不建議全部堆在OB1里做六層電梯雖然邏輯不算復(fù)雜但把功能拆開后期調(diào)試、改型號、換樓層數(shù)都會方便很多。我習慣這樣分程序塊功能OB1主循環(huán)調(diào)用下列所有功能FC1輸入去抖與呼叫登記FC2當前樓層識別與樓層記憶FC3目標樓層匯總與方向決策FC4停層判斷與開關(guān)門控制FC5顯示輸出與指示FB1電梯主控狀態(tài)機可選進階用DB1電梯運行數(shù)據(jù)區(qū)當前層、目標層、呼叫數(shù)組等OB1作為主程序去調(diào)用各個FC看起來多了一層但實際上每個功能的代碼量都不大而且能獨立測試。尤其是方向決策和停層判斷這兩塊單獨拉出來寫出現(xiàn)問題時不至于在幾百行梯形圖里翻。3.2 樓層識別從輸入信號到當前樓層號樓層識別雖然不復(fù)雜但處理不好會出現(xiàn)樓層亂跳。我用一個整型變量CurrentFloor存儲當前樓層類型Int。當每一層的平層開關(guān)信號有效時把這個樓層號寫入CurrentFloor。梯形圖或SCL里寫法是IF #FloorSensor[1] THEN #CurrentFloor : 1; ELSIF #FloorSensor[2] THEN #CurrentFloor : 2; ELSIF #FloorSensor[3] THEN #CurrentFloor : 3; ELSIF #FloorSensor[4] THEN #CurrentFloor : 4; ELSIF #FloorSensor[5] THEN #CurrentFloor : 5; ELSIF #FloorSensor[6] THEN #CurrentFloor : 6; END_IF;這看著簡單但實際工程中會出現(xiàn)一種情況電梯運行速度太快PLC掃描周期長結(jié)果經(jīng)過中間某一層時該層平層開關(guān)的脈沖剛好被掃描周期漏掉導致樓層顯示跳到兩層之外。解決方法是在接近預(yù)定??繕菍訒r提前減速讓轎廂以慢車速度通過平層區(qū)這樣每次掃描都能穩(wěn)定捕捉到每層信號。如果在純開關(guān)量方案里沒有變頻器減速配合那就在程序里多做幾次采樣確認或者用高速計數(shù)方式捕捉但一般電梯調(diào)試時首車都會調(diào)慢車。3.3 呼叫登記與消號用置位/復(fù)位別用自鎖內(nèi)呼和外呼按鈕都是瞬時脈沖按下1秒松開PLC必須在松開后依然“記得”這個呼叫。初學者最容易想到的是自鎖電路用按鈕接通一個中間繼電器Q再用Q的常開觸點保持回路。這個在PLC里完全可以做但更推薦用置位/復(fù)位SR因為清晰、不容易出錯。以1層內(nèi)呼為例梯形圖邏輯是網(wǎng)絡(luò)1I0.0按下有效則 SET #CallInside[1]網(wǎng)絡(luò)2當電梯到達1層且開門到位時滿足消號條件則 RESET #CallInside[1]這樣每個呼叫按鈕就對應(yīng)一個Bool變量登記就是置位到達消號就是復(fù)位。外呼同理只是外呼還得分上行呼叫和下行呼叫。有個細節(jié)值得注意廳外呼叫按鈕不像內(nèi)呼到站后要不要消號要看電梯運行方向。比如電梯正在上行5層有人按了上召電梯到達5層??窟@時候上召消號沒問題。但如果5層有人按下召而電梯正在上行會先經(jīng)過5層不停因為不順路這時下召不能被消掉必須等電梯下行到達5層再消。這就是順向截梯規(guī)則中的“方向性消號”。3.4 方向決策順向截梯算法方向決策是整個電梯控制程序中最有含金量的部分。六層電梯雖然規(guī)模小但算法邏輯和三十層電梯是同一個套路。我的做法是構(gòu)造兩個數(shù)組內(nèi)呼數(shù)組CallInside[1..6]、外呼上召數(shù)組CallUp[1..6]、外呼下召數(shù)組CallDown[1..6]。這里注意1層沒有下召6層沒有上召但數(shù)組下標統(tǒng)一沒用的地方置FALSE即可。上行決策電梯當前處于停止狀態(tài)或者正在上行過程中。如果當前是停止狀態(tài)只要存在任何一個目標樓層高于當前樓層就進入上行狀態(tài)。如果電梯正在上行任何高于當前樓層的有效呼叫內(nèi)呼上召下召都可以被納入目標范圍但這些呼叫要分優(yōu)先級順向的呼叫對上行來說上召是順路內(nèi)呼也是順路優(yōu)先響應(yīng)下行召喚只在它位于電梯當前行駛方向前方時才會被“順路”帶上否則要等下一次下行。下行決策同理反向處理。在實際的純PLC梯形圖里我不會寫太多復(fù)雜的循環(huán)多用比較和置位。比如用MaxFloor變量保存當前方向上“最遠目標樓層”。找到所有高于當前層的有效呼叫取最大值作為本次上行的“終點層”。電梯向上運行過程中只要CurrentFloor等于某個有效目標樓層就停層。到達終點層后再判斷是否有反方向的呼叫如果有就換向下行如果沒有電梯停在終點層待機。用SCL寫這段邏輯會更直觀// 搜索上方向最遠目標樓層 #HighestTarget : #CurrentFloor; FOR #i : #CurrentFloor 1 TO 6 DO IF #CallInside[#i] OR #CallUp[#i] OR #CallDown[#i] THEN #HighestTarget : #i; END_IF; END_FOR; // 存在高于當前層的目標則輸出上行 IF #HighestTarget #CurrentFloor THEN #DirectionUp : TRUE; ELSE #DirectionUp : FALSE; END_IF;注意這個FOR循環(huán)在OB1里執(zhí)行沒有壓力六層循環(huán)周期極短整個PLC掃描周期也就幾毫秒完全不影響實時性。3.5 停層與開關(guān)門控制別忽略平層精度電梯運行到了目標樓層怎么停下來不是一到位就立即開門而是要經(jīng)過“平層檢測→減速停車→開門繼電器動作→開門到位→延時→關(guān)門繼電器動作→關(guān)門到位→運行準備”這一整個流程。門聯(lián)鎖是電梯里最重要的一環(huán)電梯運行前門鎖信號必須有效I3.0為TRUE表示所有廳門和轎門都已閉合運行過程中如果門鎖信號突然消失程序必須立刻斷開上下行輸出讓電梯急停。這個邏輯要用硬件回路和程序雙重保證。開門延時一般設(shè)5到8秒具體看現(xiàn)場客流量。延時可以用S7-1200的TON定時器。關(guān)門過程中要判斷關(guān)門到位信號如果一定時間內(nèi)門沒關(guān)到位要能再次開門重新關(guān)這是最基礎(chǔ)的防夾邏輯。真實電梯還有光幕或安全觸板但六層電梯教學項目里可以用“開門到位信號斷開”來簡單模擬。3.6 顯示與指示BCD顯示和方向燈當前樓層號送到顯示輸出時要把CurrentFloor整數(shù)轉(zhuǎn)換成BCD輸出。如果需要用Q0.4、Q0.5、Q0.6三位輸出表示1到6層可以寫成#DisplayBCD : #CurrentFloor; // 1~6 #Out_A : #DisplayBCD.0; // 位0 #Out_B : #DisplayBCD.1; // 位1 #Out_C : #DisplayBCD.2; // 位2上行/下行方向指示燈直接由方向標志驅(qū)動。到站鈴可以在平層完成的瞬間輸出一個0.5秒脈沖用TON實現(xiàn)。4. 博途實操從建工程到在線調(diào)試4.1 新建項目與硬件組態(tài)打開TIA Portal新建項目設(shè)備里選擇S7-1200對應(yīng)的CPU型號。我手頭版本如果是V15及以上基本都能選到1214C DC/DC/DC固件版本一般選V4.x。建完CPU后添加SM 1221數(shù)字量輸入模塊16點或SM 1223模塊。組態(tài)界面上可以看到每個I/O點的地址自動分配。建議在組態(tài)里把設(shè)備名稱、IP地址先設(shè)置好比如IP設(shè)為192.168.0.10這樣后面仿真和下載不容易混亂。注意博途不同版本打開同版本工程也會有系統(tǒng)提示需要升級的情況。老版本工程用新版本打開會彈出“項目升級”提示確認即可。但如果你的工程是V18做的V15是打不開的這一點下載別人工程前一定先確認版本。4.2 程序編寫先搭變量表再寫邏輯寫程序前我強烈建議先建好全局變量表PLC tags。把I0.0、Q0.0這些實際地址和語義名稱綁定好后面寫梯形圖全是看名字不會寫錯地址。我的習慣是輸入信號統(tǒng)一命名In_InnerCall_1F、In_UpCall_3F、In_FloorSensor_5F、In_DoorLock輸出信號統(tǒng)一命名Out_MotorUp、Out_MotorDown、Out_DoorOpen、Out_DoorClose程序內(nèi)部變量統(tǒng)一放DBCurrentFloor、DirectionUp、CallInside數(shù)組等然后OB1里依次調(diào)用FC1到FC5。FC1里寫輸入去抖用S7-1200自帶的輸入延時濾波器或者簡單用TON做20ms去抖。FC2做樓層識別FC3做方向決策FC4做停層開關(guān)門FC5做顯示輸出。這里給一個FC3方向決策的簡化SCL參考方便你理解整體邏輯// 先復(fù)位方向輸出 #Out_MotorUp : FALSE; #Out_MotorDown : FALSE; // 上行條件有高于當前層的目標 #DirUpReq : FALSE; FOR #i : #CurrentFloor 1 TO 6 DO IF #CallInside[#i] OR #CallUp[#i] OR #CallDown[#i] THEN #DirUpReq : TRUE; END_IF; END_FOR; // 下行條件有低于當前層的目標 #DirDownReq : FALSE; FOR #i : 1 TO #CurrentFloor - 1 DO IF #CallInside[#i] OR #CallUp[#i] OR #CallDown[#i] THEN #DirDownReq : TRUE; END_IF; END_FOR; // 互鎖輸出 IF #DirUpReq AND NOT #DirDownReq THEN #Out_MotorUp : TRUE; ELSIF #DirDownReq AND NOT #DirUpReq THEN #Out_MotorDown : TRUE; ELSE // 上下方向同時有請求按當前所處位置順序處理 // 簡單做法優(yōu)先運行當前方向一致的一側(cè) END_IF;這段代碼還可以再優(yōu)化但作為六層電梯的第一版已經(jīng)能跑。真正投入現(xiàn)場前一定要在仿真里反復(fù)測試邊界情況。4.3 使用PLCSIM仿真驗證S7-1200在博途V15及以上版本可以使用S7-PLCSIM仿真。仿真啟動后把程序下載到虛擬PLC然后在“仿真PLC”里手動改變輸入變量狀態(tài)來模擬按鈕信號、平層開關(guān)信號。好處是不需要真實硬件課程設(shè)計答辯前完全可以跑通整個流程。我測試邏輯的時候一般按這個順序在1層模擬按下6層內(nèi)呼按鈕觀察方向輸出是否上行、樓層顯示是否變化。把2到5層平層開關(guān)依次短暫置位模擬電梯經(jīng)過觀察CurrentFloor是否更新遞增。到了6層觀察是否消號、是否開門到位。在6層模擬按下2層外呼下召觀察電梯是否反向下降、2層是否消號。測試門鎖斷開電梯運行中把In_DoorLock復(fù)位看上下行輸出是否立刻斷開。如果仿真中這5步全部通過程序的基本功能就沒大問題。4.4 下載與在線調(diào)試仿真通過后連接真實PLC。用網(wǎng)線連接電腦和CPU博途中選擇“在線訪問”設(shè)置PG/PC接口為對應(yīng)網(wǎng)卡。設(shè)置PLC的IP地址保證電腦和PLC在同一網(wǎng)段。下載硬件組態(tài)和程序。下載完成后把CPU切換到RUN模式。在線監(jiān)控打開監(jiān)控表把所有I/O變量和關(guān)鍵中間變量都拉出來實時看狀態(tài)變化。調(diào)試現(xiàn)場要注意首次上電前斷開主回路只給PLC送電先檢查輸入信號采集是否正確。逐個按下按鈕看對應(yīng)的輸入變量是否置位。如果輸入信號沒反應(yīng)優(yōu)先查線路、查公共端別急著改程序。輸入部分確認沒問題后再接通主回路用檢修模式低速點動檢查電機轉(zhuǎn)向是否與方向指令一致。5. 常見問題與排查技巧實錄5.1 輸入抖動導致呼叫反復(fù)觸發(fā)按鈕和繼電器觸點按下過程會有機械抖動PLC可能一個按鈕按下去同一信號在0.1秒內(nèi)跳變數(shù)次。結(jié)果就是內(nèi)呼按一下樓層顯示亂跳或者消號瞬間又被再次登記。解決方法是給每個按鈕信號加20ms左右的去抖用TON定時器或讀取輸入濾波器參數(shù)。S7-1200的DI模塊可以在組態(tài)里直接設(shè)置數(shù)字量輸入濾波時間0.1ms到20ms可選調(diào)試時設(shè)成6.4ms或10ms即可。5.2 電梯運行中樓層數(shù)跳變或丟失最常見原因是平層開關(guān)信號在PLC掃描周期內(nèi)有效時間太短剛好被漏掉。典型場景是快車速度過快轎廂經(jīng)過一層時的信號持續(xù)時間小于一個掃描周期。解決思路校核電梯快車速度必要時加裝提前減速信號雙平層開關(guān)方案。在程序里用“多周期確認”邏輯平層信號連續(xù)兩個掃描周期有效才更新樓層號。確認平層開關(guān)的常開/常閉接法有沒有和程序反了。5.3 門鎖斷開后電梯還在運行這個現(xiàn)象一旦出現(xiàn)必須停線檢查。不僅是程序問題很可能硬件回路里門鎖觸點沒串進運行接觸器回路。我調(diào)試時遇到過一種情況門鎖信號接的是PLC的輸入點但是接觸器吸合回路里沒有串門鎖觸點結(jié)果門鎖一斷PLC程序雖然輸出了停車但接觸器仍然保持吸合電梯繼續(xù)走。所以安全回路必須硬接線串到接觸器控制回路不能只靠PLC邏輯。這也是我一直強調(diào)的“程序互鎖≠物理互鎖”。問題現(xiàn)象可能原因排查順序按鈕按下無反應(yīng)公共端接錯、傳感器類型不對先查硬件接線再看PLC在線信號電梯到達樓層不停平層信號沒掃到、目標樓層判斷錯誤檢查平層信號狀態(tài)和CurrentFloor變化上下行同時輸出程序互鎖缺失、輸出點短路立刻斷電檢查硬件互鎖樓層顯示亂跳輸入抖動、平層開關(guān)離得太近加濾波、檢查安裝間距關(guān)門后無法運行門鎖信號沒到、關(guān)門到位沒延時監(jiān)控門鎖和關(guān)門到位信號時序仿真正?,F(xiàn)場不行干擾、接線、電源地不干凈檢查屏蔽接地、強弱電分槽5.4 電梯停在中間樓層沒有任何呼叫時亂跑電梯沒有呼叫時應(yīng)停在當前樓層不動。如果出現(xiàn)亂跑多半是方向決策邏輯里“請求信號”沒有被正確清零。例如外呼按鈕信號置位后電梯到了一層的上召消號但程序里忘復(fù)位對應(yīng)的CallUp[1]導致呼叫一直存在。所以調(diào)試時要把每一個置過的呼叫變量在合適時機都復(fù)位并且用監(jiān)控表跟蹤呼叫數(shù)組的狀態(tài)。5.5 博途版本、固件與工程兼容性問題熱詞里有人問“博途V18支持S7-1200 CPU1211C所有版本固件嗎”這里統(tǒng)一回復(fù)一下博途V18對S7-1200系列的支持是全面的1211C、1214C這些型號都支持但不代表所有老固件都能直接下載。CPU固件V4.x基本沒問題個別V2.0/V3.0的老版本可能需要升級固件后才能在V18工程里使用。下載別人做的程序包時先確認對方是哪個博途版本V15還是V16還是V18版本差太多一般打不開或需要升級升級前先備份工程。另外S7-1200和S7-200 SMART的工程文件不互通用200SMART的梯形圖不能直接拖到S7-1200里運行知識點可以遷移但程序要重建。6. 擴展思考從六層電梯到群控和上位機完成六層電梯控制后如果想往深走有兩個方向我特別推薦一個是多電梯群控。兩部電梯同時工作需要對前后門、召回、閑梯??孔稣{(diào)度核心仍然是方向決策和呼叫分配但要把“呼叫歸屬”做出來內(nèi)呼只能由當前轎廂響應(yīng)外呼則需要根據(jù)哪部梯更順路來分配。可以用S7-1200之間的Profinet通信或者I/O交換來實現(xiàn)這是我做過最有趣的控制擴展。另一個是上位機數(shù)據(jù)采集。通過S7-1200的以太網(wǎng)口上位機用C#、Java或LabVIEW可以讀取PLC里的當前樓層、運行方向、故障信號做成電梯監(jiān)控界面。S7-1200支持S7協(xié)議通信上位機輪詢讀取DB里的數(shù)據(jù)PLC端不需要額外編程只要把要監(jiān)控的數(shù)據(jù)放到全局DB并保證可訪問狀態(tài)即可。這部分和當前熱門的工業(yè)物聯(lián)網(wǎng)采集是同一個思路很多初學者從電梯項目入門再拓展到上位機正好形成完整的工控知識閉環(huán)。在折騰這套六層電梯程序的過程中我最大的感受是電梯控制這個題目雖然看起來簡單但能把呼叫登記、方向判斷、停車開關(guān)門這些邏輯做到穩(wěn)、不沖突、不丟信號需要非??b密的思路這也是很多公司招聘PLC工程師時喜歡拿電梯當面試題的原因。你把它做完一遍再回頭看那些機械手、分揀線、運動控制的程序很多套路是相通的。本文還有配套的精品資源點擊獲取