器應(yīng)用)
1. 項(xiàng)目概述從“點(diǎn)動”到“聯(lián)動”的基石如果你剛接觸西門子S7-200 SMART PLC面對編程軟件里那一排排指令圖標(biāo)感覺像在看天書那太正常了。我剛開始學(xué)的時候也覺得這些“基本指令”不就是些開關(guān)、線圈嗎能有多復(fù)雜但真正上手做項(xiàng)目從最簡單的電機(jī)啟停到復(fù)雜的流水線聯(lián)鎖控制我才深刻體會到所謂“高級”的PLC程序其骨架和血肉恰恰就是這些最基礎(chǔ)的指令搭建起來的。S7-200 SMART PLC的基本指令就是這套控制邏輯的“單詞”和“語法”不把它們吃透后續(xù)學(xué)習(xí)功能指令、通信、運(yùn)動控制就像在沙地上蓋樓隨時可能崩塌。這個內(nèi)容就是為你系統(tǒng)拆解這些構(gòu)成所有PLC程序核心邏輯的基本指令。它面向的是所有工控領(lǐng)域的初學(xué)者、從其他品牌PLC比如三菱、歐姆龍轉(zhuǎn)過來的工程師或者那些雖然會用但想深究其底層邏輯的從業(yè)者。我們將不局限于手冊上的簡單描述而是結(jié)合真實(shí)的電氣控制場景比如如何用一個按鈕實(shí)現(xiàn)“點(diǎn)動自鎖”如何用計時器做一個精準(zhǔn)的延時報警如何用計數(shù)器統(tǒng)計產(chǎn)品數(shù)量并自動停機(jī)。我會把我在調(diào)試中踩過的坑、那些手冊上不會寫的細(xì)節(jié)以及如何靈活組合這些指令解決實(shí)際問題的思路都揉碎了講給你聽。掌握了它們你就能真正理解PLC程序是如何“思考”和“執(zhí)行”的而不僅僅是照貓畫虎地寫幾行梯形圖。2. 核心邏輯觸點(diǎn)、線圈與邏輯“流”在深入每條指令之前我們必須先建立PLC程序執(zhí)行的核心世界觀。這不同于計算機(jī)編程的“順序執(zhí)行”PLC遵循的是“循環(huán)掃描”機(jī)制。你可以把它想象成一個不知疲倦的巡查員在每個掃描周期內(nèi)它會從頭到尾、從左到右地讀取你的梯形圖程序根據(jù)輸入端子的實(shí)際狀態(tài)通/斷來更新程序中所有觸點(diǎn)的狀態(tài)然后根據(jù)邏輯運(yùn)算結(jié)果去驅(qū)動輸出線圈最后將輸出線圈的狀態(tài)一次性更新到實(shí)際的輸出端子上去。這個過程周而復(fù)始。在這個世界里最基本的兩個元素就是“觸點(diǎn)”和“線圈”。觸點(diǎn)代表“條件”它可以是外接的物理按鈕、傳感器信號在PLC內(nèi)部的映射我們稱為“輸入映像寄存器I”也可以是程序內(nèi)部中間運(yùn)算的結(jié)果內(nèi)部輔助繼電器M、定時器觸點(diǎn)T、計數(shù)器觸點(diǎn)C等。線圈代表“動作”它最終會驅(qū)動一個外部的繼電器、接觸器、指示燈或者改變一個內(nèi)部狀態(tài)位。所有的基本指令都是圍繞如何組織“觸點(diǎn)”來控制“線圈”而展開的。其核心邏輯是“能流”概念在梯形圖中想象有一條“能量流”從左母線電源正極流向右側(cè)。只有當(dāng)連接到一個線圈的所有路徑上觸點(diǎn)構(gòu)成的邏輯條件全部滿足即“能流”能夠暢通無阻地流到線圈時這個線圈才會被“通電”或置位。理解了這個“能流”模型再看梯形圖就會豁然開朗。2.1 位邏輯指令控制世界的“開”與“關(guān)”位邏輯指令是構(gòu)建一切邏輯的基礎(chǔ)它直接操作布爾量Bit0或1。S7-200 SMART的位邏輯指令非常豐富但核心可以歸納為以下幾類。2.1.1 標(biāo)準(zhǔn)觸點(diǎn)與輸出指令這是最基礎(chǔ)的“開關(guān)”邏輯。常開觸點(diǎn)LD A O相當(dāng)于一個常開按鈕。當(dāng)它對應(yīng)的位狀態(tài)為“1”時觸點(diǎn)閉合“能流”通過。LDLoad用于一個邏輯行的開始AAnd用于串聯(lián)連接OOr用于并聯(lián)連接。常閉觸點(diǎn)LDN AN ON相當(dāng)于一個常閉按鈕。當(dāng)它對應(yīng)的位狀態(tài)為“0”時觸點(diǎn)閉合“能流”通過。N表示取反。這是PLC編程中極易出錯的地方一定要根據(jù)實(shí)際物理設(shè)備的常態(tài)如停止按鈕通常常閉接入來正確選擇使用常開還是常閉觸點(diǎn)進(jìn)行編程。輸出線圈最直接的賦值操作。當(dāng)“能流”到達(dá)時將對應(yīng)的輸出點(diǎn)Q或內(nèi)部位M置為“1”“能流”斷開時則復(fù)位為“0”。它是最簡單的“瞬時”動作。實(shí)操心得很多新手會混淆物理設(shè)備的常開/常閉接法與程序內(nèi)部觸點(diǎn)的常開/常閉使用。一個黃金法則是在程序中盡量使用“正邏輯”思維。即你希望設(shè)備動作的條件成立時對應(yīng)的觸點(diǎn)狀態(tài)應(yīng)為“1”。例如一個物理接為常閉的停止按鈕平時導(dǎo)通按下斷開在PLC輸入點(diǎn)上按下時得到的是“0”。如果你在程序里用常開觸點(diǎn)I0.1去判斷停止那么永遠(yuǎn)判斷不到因?yàn)榘粹o沒按時I0.10觸點(diǎn)不通按下時I0.10觸點(diǎn)還是不通。正確的做法是使用常閉觸點(diǎn)I0.1這樣平時I0.10常閉觸點(diǎn)導(dǎo)通允許運(yùn)行按下時I0.10常閉觸點(diǎn)依然導(dǎo)通錯了這里是個關(guān)鍵點(diǎn)對于LDN I0.1它檢查的是I0.1的值是否為0為0則觸點(diǎn)閉合。所以無論按不按只要I0.1是0它就通。這顯然不對。真正的關(guān)鍵在于物理常閉按鈕接入在PLC輸入映像寄存器里常態(tài)是1按下瞬間是0。所以程序里應(yīng)該用常開觸點(diǎn)I0.1來檢測這個“1”是否變?yōu)椤?”。記住程序觸點(diǎn)類型的選擇取決于你希望邏輯在什么條件下導(dǎo)通而不是簡單對應(yīng)物理觸點(diǎn)。2.1.2 置位S與復(fù)位R指令這是實(shí)現(xiàn)“自鎖”、“保持”功能的核心比輸出線圈更常用。置位指令S當(dāng)“能流”接通時將指定的位可以是1個位也可以是一段連續(xù)的位置為“1”并保持即使“能流”后續(xù)斷開該位也保持為“1”除非被復(fù)位指令清零。復(fù)位指令R當(dāng)“能流”接通時將指定的位或連續(xù)位置為“0”并保持。這是實(shí)現(xiàn)“啟保停”電路的靈魂。一個典型的電機(jī)控制邏輯如下啟動按鈕常開I0.0按下產(chǎn)生一個脈沖“能流”。此能流通過后執(zhí)行S Q0.0, 1將電機(jī)輸出Q0.0置位為1并保持電機(jī)運(yùn)行。停止按鈕常閉接入程序用常開I0.1按下時執(zhí)行R Q0.0, 1將Q0.0復(fù)位為0電機(jī)關(guān)閉。這里不需要自鎖觸點(diǎn)因?yàn)镾/R指令本身就具有保持功能。但通常我們還會串聯(lián)熱繼電器信號I0.2常閉等保護(hù)條件。2.1.3 邊沿檢測指令在實(shí)際工程中我們經(jīng)常需要捕捉一個信號從0到1上升沿或從1到0下降沿的瞬間變化用于只執(zhí)行一次的動作比如計數(shù)、啟動一個單次流程。上升沿檢測EU在S7-200 SMART的梯形圖LAD中它體現(xiàn)為觸點(diǎn)上的一個“P”標(biāo)識。當(dāng)該觸點(diǎn)前的邏輯運(yùn)算結(jié)果從0變?yōu)?時它會產(chǎn)生一個寬度為一個掃描周期的脈沖“能流”。下降沿檢測ED在LAD中體現(xiàn)為觸點(diǎn)上的一個“N”標(biāo)識。當(dāng)邏輯結(jié)果從1變?yōu)?時產(chǎn)生一個單掃描周期脈沖。注意事項(xiàng)邊沿檢測指令在PLC的一個掃描周期內(nèi)只有效一次。如果你用在一個持續(xù)為1的條件后面它只會在第一個掃描周期產(chǎn)生脈沖之后即使條件一直滿足也不會再產(chǎn)生。這是實(shí)現(xiàn)“單按鈕啟?!钡裙δ艿年P(guān)鍵。另外邊沿檢測指令要使用內(nèi)部位M作為存儲位來記憶上一個掃描周期的狀態(tài)以供比較。在編程時軟件通常會幫你自動生成這個存儲位但你需要知道它的原理。2.1.4 取反與立即指令取反觸點(diǎn)NOT將它所在的邏輯路徑的“能流”狀態(tài)取反。前面通它后面就斷前面斷它后面就通。慎用因?yàn)槿菀鬃屵壿嬜兊没逎?。立即指令I(lǐng)包括立即輸入LDI,AI,OI和立即輸出I。它們不經(jīng)過輸入/輸出映像寄存器的緩沖直接讀取物理輸入點(diǎn)或驅(qū)動物理輸出點(diǎn)。這能減少I/O延遲但會輕微增加掃描周期時間且不能頻繁使用。通常用于需要極快響應(yīng)的關(guān)鍵安全信號但絕大多數(shù)普通應(yīng)用不需要。2.2 定時器指令讓PLC擁有“時間感”定時器是自動化中實(shí)現(xiàn)延時、定時、脈沖發(fā)生等功能的核心。S7-200 SMART提供了三種類型的定時器理解它們的區(qū)別至關(guān)重要。2.2.1 定時器的工作機(jī)理所有定時器都有兩個關(guān)鍵要素預(yù)設(shè)值PT和當(dāng)前值ET。預(yù)設(shè)值是你設(shè)定的時間目標(biāo)單位可以是1ms、10ms或100ms當(dāng)前值是一個從0開始遞增的寄存器。當(dāng)定時器的使能條件滿足時當(dāng)前值開始按時間基增量累加。根據(jù)當(dāng)前值與預(yù)設(shè)值的關(guān)系以及定時器類型會產(chǎn)生不同的輸出行為。2.2.2 三種定時器詳解類型梯形圖符號工作特點(diǎn)典型應(yīng)用場景TON接通延時定時器TON Txx, PT使能端IN接通后當(dāng)前值開始增加。當(dāng)當(dāng)前值 預(yù)設(shè)值時定時器位被置位1。使能端斷開時定時器位立即復(fù)位0當(dāng)前值清零。電機(jī)啟動后延時開啟風(fēng)扇報警信號持續(xù)一定時間后再確認(rèn)。TOF斷開延時定時器TOF Txx, PT使能端IN接通時定時器位立即置位1當(dāng)前值清零。當(dāng)使能端從接通變?yōu)閿嚅_時當(dāng)前值開始增加。當(dāng)當(dāng)前值 預(yù)設(shè)值后定時器位才復(fù)位0。照明燈在按下關(guān)閉按鈕后延時熄滅設(shè)備停機(jī)后潤滑泵繼續(xù)運(yùn)行一段時間。TONR保持型接通延時定時器TONR Txx, PT使能端接通當(dāng)前值累加。使能端斷開當(dāng)前值保持不像TON那樣清零。下次使能端再接通當(dāng)前值從保持值繼續(xù)累加。只有當(dāng)當(dāng)前值 預(yù)設(shè)值時定時器位才置位。定時器位一旦置位只能用復(fù)位指令R將其復(fù)位同時當(dāng)前值清零。累計設(shè)備的總運(yùn)行時間需要多次間隔時間累加才能觸發(fā)的動作。2.2.3 定時器使用中的坑時間基準(zhǔn)與預(yù)設(shè)值范圍每個定時器編號如T37都固定了時間基準(zhǔn)1ms, 10ms, 100ms。例如T37是100ms定時器。預(yù)設(shè)值PT是一個整數(shù)實(shí)際定時時間 PT × 時間基準(zhǔn)。T37的PT設(shè)為50則定時時間為5秒。務(wù)必查閱手冊確認(rèn)編號對應(yīng)的基準(zhǔn)。定時器精度定時器在當(dāng)前掃描周期結(jié)束時更新當(dāng)前值。如果使能條件在一個掃描周期中間發(fā)生變化這個周期內(nèi)的計時可能不準(zhǔn)確。對于精度要求高的短延時考慮使用定時中斷。TONR的復(fù)位這是最容易忘記的。如果你用TONR做了一個累計運(yùn)行時間的功能在達(dá)到預(yù)設(shè)值觸發(fā)動作后一定要記得在某個條件如復(fù)位按鈕下用R Txx, 1指令將其復(fù)位否則它的位將一直為1當(dāng)前值也不再變化。2.3 計數(shù)器指令PLC的“記憶”與“統(tǒng)計”計數(shù)器用來累計輸入脈沖的次數(shù)。S7-200 SMART主要有兩種計數(shù)器。2.3.1 CTU加計數(shù)器邏輯每當(dāng)加計數(shù)輸入CU端檢測到一個上升沿從0到1計數(shù)器的當(dāng)前值CV就加1。當(dāng)當(dāng)前值 預(yù)設(shè)值PV時計數(shù)器位C被置位1。復(fù)位輸入R端為1時計數(shù)器位被復(fù)位當(dāng)前值清零。應(yīng)用產(chǎn)品數(shù)量統(tǒng)計當(dāng)計數(shù)值達(dá)到設(shè)定值如一箱24瓶時計數(shù)器位置1觸發(fā)裝箱或停止信號。2.3.2 CTD減計數(shù)器邏輯每當(dāng)減計數(shù)輸入CD端檢測到一個上升沿當(dāng)前值CV就減1。當(dāng)當(dāng)前值 0時計數(shù)器位C被置位。裝載輸入LD端為1時計數(shù)器位被復(fù)位同時將預(yù)設(shè)值PV裝載到當(dāng)前值CV中。應(yīng)用倒計數(shù)應(yīng)用如預(yù)置工位數(shù)量每完成一個工位減1減到0時表示所有工位完成。2.3.3 CTUD加/減計數(shù)器這是功能最全的計數(shù)器擁有CU、CD、R、LD四個輸入端。它可以實(shí)現(xiàn)加、減計數(shù)并在達(dá)到上下限時停止計數(shù)。常用于需要雙向計數(shù)的場合如倉庫物料進(jìn)出庫管理。實(shí)操心得計數(shù)器的輸入信號必須是脈沖信號。如果你連接的是一個持續(xù)為1的信號每個掃描周期它都會檢測到上升沿導(dǎo)致當(dāng)前值飛速增加完全失控。通常我們需要將物理的持續(xù)信號如傳感器檢測到物體通過邊沿檢測指令EU轉(zhuǎn)換成脈沖再送給計數(shù)器的CU端。例如一個光電傳感器I0.3檢測到產(chǎn)品I0.3會從0變1并保持。如果直接連到CTU CU每個掃描周期都會計數(shù)。正確做法是LD I0.3EULD(或A)CTU C0, 24。這樣只有產(chǎn)品經(jīng)過的瞬間計一次數(shù)。3. 指令組合與經(jīng)典電路解析單獨(dú)理解指令只是第一步真正的功力體現(xiàn)在如何將它們組合起來解決實(shí)際控制問題。下面我們分析幾個最經(jīng)典的電路。3.1 經(jīng)典“啟保?!彪娐返亩嘀貙?shí)現(xiàn)這是電機(jī)控制的基石有多種實(shí)現(xiàn)方式體現(xiàn)了不同的編程思想。3.1.1 使用輸出線圈自鎖這是最教科書式的方法但實(shí)際工程中較少直接使用因?yàn)樗焕谀K化和狀態(tài)保持。網(wǎng)絡(luò)1 LD I0.0 // 啟動按鈕常開 O Q0.0 // 自鎖觸點(diǎn) AN I0.1 // 停止按鈕常閉接入程序用常開 Q0.0 // 電機(jī)輸出缺點(diǎn)如果Q0.0在程序別處被復(fù)位自鎖會失效。且狀態(tài)無法在PLC斷電再上電后保持除非使用有記憶功能的存儲區(qū)。3.1.2 使用置位/復(fù)位指令推薦這是工業(yè)中最主流、最清晰的方法。網(wǎng)絡(luò)1啟動 LD I0.0 // 啟動按鈕 S Q0.0, 1 // 置位電機(jī)輸出 網(wǎng)絡(luò)2停止 LD I0.1 // 停止按鈕 R Q0.0, 1 // 復(fù)位電機(jī)輸出 網(wǎng)絡(luò)3過載保護(hù) LD I0.2 // 熱繼電器常閉信號斷開表示過載 R Q0.0, 1 // 過載時復(fù)位電機(jī)優(yōu)點(diǎn)邏輯清晰啟動、停止、故障條件獨(dú)立成塊互不干擾。狀態(tài)明確易于維護(hù)和調(diào)試。3.1.3 使用上升沿與異或邏輯實(shí)現(xiàn)“單按鈕啟停”這是一個經(jīng)典的邏輯練習(xí)題常用于空間受限、只有一個按鈕的場合。網(wǎng)絡(luò)1用中間位存儲按鈕上升沿 LD I0.0 EU M0.0 // M0.0是一個單掃描周期的脈沖 網(wǎng)絡(luò)2實(shí)現(xiàn)啟停切換核心 LD M0.0 A Q0.0 R Q0.0, 1 // 如果當(dāng)前是運(yùn)行狀態(tài)(Q0.01)則復(fù)位 LD M0.0 AN Q0.0 S Q0.0, 1 // 如果當(dāng)前是停止?fàn)顟B(tài)(Q0.00)則置位這個邏輯巧妙地利用了Q0.0自身的狀態(tài)作為判斷條件結(jié)合按鈕脈沖M0.0實(shí)現(xiàn)了按一次啟動、再按一次停止的功能。理解這個電路對掌握邊沿和邏輯組合非常有幫助。3.2 時間控制電路星三角降壓啟動這是一個結(jié)合了定時器的典型電機(jī)控制應(yīng)用。主電路需要三個接觸器主接觸器、星型接觸器、三角型接觸器。PLC程序需要控制它們按順序動作。按下啟動按鈕主接觸器Q0.0和星型接觸器Q0.1得電電機(jī)星型啟動。同時啟動一個TON定時器例如T37設(shè)為6秒。6秒后定時器位T37置位其常閉觸點(diǎn)斷開切斷星型接觸器Q0.1其常開觸點(diǎn)閉合接通三角型接觸器Q0.2電機(jī)轉(zhuǎn)入三角型運(yùn)行。停止按鈕或過載信號可同時切斷Q0.0、Q0.1、Q0.2。關(guān)鍵點(diǎn)必須在程序中加入電氣互鎖和軟件互鎖。電氣上星型和三角型接觸器必須有機(jī)械互鎖或電氣互鎖觸點(diǎn)防止同時吸合短路。軟件上在Q0.1和Q0.2的輸出邏輯中必須串聯(lián)對方的常閉觸點(diǎn)形成雙重保護(hù)。網(wǎng)絡(luò)1啟動及主接觸器 LD I0.0 //啟動 O M0.0 //自鎖位 AN I0.1 //停止 AN I0.2 //過載 M0.0 //運(yùn)行狀態(tài)保持 Q0.0 //主接觸器 網(wǎng)絡(luò)2星型啟動及定時 LD M0.0 AN T37 //定時未到 AN Q0.2 //軟件互鎖三角型未運(yùn)行 Q0.1 //星型接觸器 TON T37, 60 //100ms基準(zhǔn)*606秒 網(wǎng)絡(luò)3三角型運(yùn)行 LD M0.0 A T37 //定時到 AN Q0.1 //軟件互鎖星型已斷開 Q0.2 //三角型接觸器3.3 計數(shù)與聯(lián)動流水線產(chǎn)品裝箱控制假設(shè)一條流水線每通過24個產(chǎn)品打包一箱然后暫停5秒等待換箱。光電傳感器I0.3檢測產(chǎn)品每個產(chǎn)品產(chǎn)生一個脈沖。使用加計數(shù)器CTU C0, 24進(jìn)行計數(shù)。當(dāng)C0的位為1計滿24個時觸發(fā)以下動作置位打包裝置動作Q0.3。啟動一個5秒的定時器TON T38, 50假設(shè)100ms基準(zhǔn)。復(fù)位計數(shù)器C0為下一箱計數(shù)做準(zhǔn)備注意復(fù)位時機(jī)可在打包動作開始時或定時結(jié)束后。定時器T38到時復(fù)位打包裝置R Q0.3, 1流水線繼續(xù)運(yùn)行。這里涉及了計數(shù)器觸發(fā)定時器定時器控制輸出的聯(lián)動邏輯。需要注意計數(shù)器復(fù)位的時機(jī)如果復(fù)位過早可能丟失正在計數(shù)的脈沖如果復(fù)位過晚可能影響下一箱的起始計數(shù)。通??梢栽诖虬鼊幼鲉雍罅⒓椿蛏宰餮訒r復(fù)位計數(shù)器。4. 編程實(shí)戰(zhàn)從梯形圖到語句表S7-200 SMART的編程軟件STEP 7-Micro/WIN SMART支持梯形圖LAD、語句表STL和功能塊圖FBD。理解LAD與STL的對應(yīng)關(guān)系能加深你對指令執(zhí)行邏輯的理解。4.1 一個完整的小項(xiàng)目傳送帶控制控制要求按下啟動按鈕I0.0傳送帶電機(jī)Q0.0運(yùn)行。傳送帶末端有光電傳感器I0.1檢測物品到達(dá)。物品到達(dá)后延時2秒推動氣缸Q0.1動作將物品推出。氣缸動作1秒后自動縮回。按下停止按鈕I0.2或急停I0.3所有動作立即停止。梯形圖程序?qū)崿F(xiàn)網(wǎng)絡(luò)1主啟停控制 LD I0.0 //啟動 O M10.0 //運(yùn)行狀態(tài)自鎖 AN I0.2 //停止 AN I0.3 //急停 M10.0 //系統(tǒng)運(yùn)行標(biāo)志 網(wǎng)絡(luò)2傳送帶控制 LD M10.0 Q0.0 //傳送帶運(yùn)行 網(wǎng)絡(luò)3檢測到物品啟動延時 LD M10.0 A I0.1 //光電檢測到 TON T37, 20 //100ms定時器定時2秒 網(wǎng)絡(luò)4延時到推出氣缸 LD T37 //2秒到 S Q0.1, 1 //推出氣缸 TON T38, 10 //啟動1秒定時器 網(wǎng)絡(luò)51秒到縮回氣缸并復(fù)位流程 LD T38 //1秒到 R Q0.1, 1 //縮回氣缸 R T37, 1 //復(fù)位2秒定時器重要 R T38, 1 //復(fù)位1秒定時器關(guān)鍵點(diǎn)分析M10.0作為系統(tǒng)總使能標(biāo)志簡化了停止和急停邏輯。網(wǎng)絡(luò)3中TON T37的使能條件是M10.0和I0.1同時成立。這意味著只有系統(tǒng)運(yùn)行且檢測到物品時才計時。網(wǎng)絡(luò)5中在縮回氣缸的同時必須復(fù)位T37和T38。如果不復(fù)位T37下一次檢測到物品時由于T37的位已經(jīng)是1且當(dāng)前值已到達(dá)預(yù)設(shè)值將無法再次啟動2秒延時對于TON使能端斷開才會復(fù)位當(dāng)前值和位。這是一個非常常見的調(diào)試陷阱。4.2 程序調(diào)試與監(jiān)控技巧寫好程序只是第一步下載到PLC后的調(diào)試才是重頭戲。STEP 7-Micro/WIN SMART的“程序狀態(tài)監(jiān)控”和“狀態(tài)圖表”功能是你的得力助手。4.2.1 程序狀態(tài)監(jiān)控在線后點(diǎn)擊“監(jiān)控”按鈕梯形圖中通路的觸點(diǎn)會變藍(lán)線圈得電也會變藍(lán)。這能直觀地看到程序的執(zhí)行流程。對于定時器和計數(shù)器你可以看到當(dāng)前值CV的實(shí)時變化。這是排查邏輯錯誤最直接的方法。4.2.2 狀態(tài)圖表對于需要同時觀察或強(qiáng)制修改多個變量I, Q, M, V, T, C等的狀態(tài)狀態(tài)圖表更高效。你可以添加需要監(jiān)視的地址并在線查看其當(dāng)前值。在調(diào)試時你可以通過“強(qiáng)制”功能給某個輸入點(diǎn)如I0.0強(qiáng)制賦值為1來模擬按鈕按下的效果而無需實(shí)際去接線和操作物理按鈕。但強(qiáng)制功能要慎用特別是輸出點(diǎn)強(qiáng)制前務(wù)必確認(rèn)設(shè)備處于安全狀態(tài)。4.2.3 交叉引用在修改大型程序時使用“交叉引用”功能可以快速查找到某個地址如Q0.0在程序的所有使用位置。這對于理清邏輯、避免重復(fù)賦值沖突至關(guān)重要。5. 常見問題與深度避坑指南在實(shí)際項(xiàng)目和教學(xué)中我總結(jié)了新手最容易踩的以下幾個坑這里集中解答。5.1 為什么我的定時器/計數(shù)器不工作檢查使能條件定時器TON/TOF的IN端計數(shù)器CTU的CU端是否確實(shí)有從0到1的“能流”用狀態(tài)監(jiān)控看一下。檢查復(fù)位條件TONR和計數(shù)器是否被意外復(fù)位R端為1CTUD的LD端是否被意外置位掃描周期問題使能條件在一個掃描周期內(nèi)變化太快可能無法被捕捉。考慮使用邊沿檢測后的脈沖去觸發(fā)。地址沖突是否在程序其他地方重復(fù)使用了同一個定時器/計數(shù)器編號對其進(jìn)行了操作5.2 雙線圈輸出問題這是PLC編程的大忌。絕對禁止在程序的多個網(wǎng)絡(luò)中對同一個輸出線圈如Q0.0進(jìn)行賦值。因?yàn)镻LC按順序掃描最后一個網(wǎng)絡(luò)對Q0.0的賦值結(jié)果會覆蓋前面的所有結(jié)果導(dǎo)致邏輯混亂。解決方法是對于同一個輸出設(shè)備其控制邏輯集中在一個網(wǎng)絡(luò)內(nèi)或者使用中間標(biāo)志位M進(jìn)行邏輯整合最后在一個網(wǎng)絡(luò)里統(tǒng)一輸出。5.3 如何實(shí)現(xiàn)上電初始化很多設(shè)備要求PLC上電后進(jìn)入一個確定的初始狀態(tài)如所有氣缸縮回電機(jī)停止??梢允褂肧M0.1僅第一個掃描周期為1的特殊存儲器位來觸發(fā)初始化程序段。網(wǎng)絡(luò)1上電初始化 LD SM0.1 // 上電第一個掃描周期接通 R Q0.0, 10 // 復(fù)位Q0.0開始的連續(xù)10個輸出點(diǎn) MOVW 0, VW0 // 將0傳送到字地址VW0清零數(shù)據(jù)5.4 急停處理邏輯急停I0.3的處理至關(guān)重要必須安全、直接、可靠。通常采用“硬線接入軟件冗余”的方式。在編程上急停信號應(yīng)作為常閉觸點(diǎn)串聯(lián)在關(guān)鍵輸出如所有電機(jī)、氣缸的控制邏輯中或者使用急停信號直接復(fù)位所有相關(guān)的輸出標(biāo)志位。確保無論程序運(yùn)行到哪一步急停都能立即使設(shè)備進(jìn)入安全狀態(tài)。5.5 關(guān)于“掉電保持”普通的輸出位Q和中間位M在PLC斷電后狀態(tài)會丟失。如果某些狀態(tài)需要記住如設(shè)備運(yùn)行模式、累計產(chǎn)量中間值需要使用具有掉電保持功能的存儲區(qū)在S7-200 SMART中通常是V存儲區(qū)變量存儲器。你可以在系統(tǒng)塊中設(shè)置V區(qū)的掉電保持范圍。對于需要保持的定時器當(dāng)前值或計數(shù)器當(dāng)前值可以考慮在每次掃描時將其傳送到V區(qū)上電后再從V區(qū)讀回。掌握基本指令就像學(xué)會了武功的扎馬步和基本拳腳。它們看似簡單枯燥但每一個細(xì)節(jié)都蘊(yùn)含著PLC工作的核心哲學(xué)。我建議你不要滿足于讓程序“跑起來”而是多問幾個“為什么”為什么這里要用常閉觸點(diǎn)這個定時器不復(fù)位會怎樣這個計數(shù)器用上升沿和直接用信號有什么區(qū)別多動手模擬多利用監(jiān)控功能觀察程序的實(shí)際運(yùn)行過程把這些指令的“脾氣”摸透。當(dāng)你再看到復(fù)雜的生產(chǎn)線程序時你會發(fā)現(xiàn)它們無非是這些基本指令精妙組合而成的交響樂。打好這個基礎(chǔ)后面學(xué)習(xí)數(shù)據(jù)操作、流程控制、通信等高級功能時你會感到無比順暢。