習(xí)五大常見誤區(qū):從接線到工藝的實(shí)戰(zhàn)避坑指南)
經(jīng)常有剛?cè)胄谢蛘呦朕D(zhuǎn)行的人問我PLC到底該怎么學(xué)。這個(gè)問題問多了之后我發(fā)現(xiàn)一個(gè)規(guī)律問的人其實(shí)已經(jīng)買了不少書存了不少網(wǎng)盤資料甚至看了不少教學(xué)視頻真正缺的不是學(xué)習(xí)資源而是一條有反饋、能驗(yàn)證、能積累的動手路徑。結(jié)合我這些年帶新人、做項(xiàng)目時(shí)見過的真實(shí)問題我想把大家最容易踩進(jìn)去的五個(gè)坑一次性說清楚。這篇內(nèi)容不會給你列一張長長的書單也不會讓你先從背指令開始而是會告訴你為什么有的人折騰半年還在原地踏步有的人三個(gè)月就能獨(dú)立改程序、查故障。如果你正在猶豫要不要買開發(fā)板或者軟件授權(quán)先別急著下單看完這篇再決定也不遲。1. 先把話說透你缺的不是資料是反饋回路1.1 “搜什么”往往暴露了你卡在哪我平時(shí)會留意很多PLC相關(guān)的搜索詞比如“S7-PLCSIM Advanced v5.0實(shí)例為什么啟動不了”“威倫通觸摸屏軟件上找不到匯川PLC驅(qū)動”“MCGS與信捷PLC怎么連”這類問題出現(xiàn)頻率非常高。這些搜索詞表面上是問軟件操作實(shí)際上暴露了一個(gè)共同的事實(shí)提問的人已經(jīng)進(jìn)入了實(shí)操環(huán)節(jié)但在某個(gè)具體環(huán)節(jié)上被卡住了又找不到人問。這其實(shí)是好現(xiàn)象說明你已經(jīng)在動手了。真正令人擔(dān)心的不是這類問題而是收藏了一堆“PLC編程入門基礎(chǔ)知識”視頻看倒是看了卻沒有打開過任何一款編程軟件也沒有接過一根線。從熱門搜索詞來看“西門子PLC輸入輸出接線”被搜得很多這本身就說明大家知道接線很重要但很多人只是搜了、存了并沒有真的拿一個(gè)開關(guān)、一個(gè)指示燈去驗(yàn)證一遍。1.2 學(xué)習(xí)目標(biāo)決定了你該怎么學(xué)我建議初學(xué)者把目標(biāo)拆成三個(gè)臺階第一看得見也就是能看懂PLC的輸入輸出接線知道傳感器和開關(guān)怎么進(jìn)燈和繼電器怎么出第二寫得動能用梯形圖或結(jié)構(gòu)化文本寫出啟保停、定時(shí)、計(jì)數(shù)這套基礎(chǔ)邏輯第三聯(lián)得上讓PLC和觸摸屏、變頻器、上位機(jī)通信起來有數(shù)據(jù)交換有畫面操作。如果沒有這三個(gè)臺階學(xué)習(xí)很容易走回“背知識點(diǎn)”的老路。很多人學(xué)了很久指令手冊快翻爛了但你把一個(gè)十字路口的紅綠燈控制要求放在他面前他還是不知道第一步該分幾個(gè)I/O點(diǎn)第二步該怎么處理時(shí)序關(guān)系。這不是因?yàn)樗慷且驗(yàn)樗麖膩頉]有建立過從“需求”到“程序”的翻譯能力而這種能力只有靠完成一個(gè)又一個(gè)真實(shí)的小項(xiàng)目才能練出來。2. 第一個(gè)坑硬盤里塞滿了教程卻連一個(gè)輸出點(diǎn)都沒點(diǎn)亮過2.1 收藏夾帶來的虛假滿足感我必須說一個(gè)比較扎心的事實(shí)下載資料和真正學(xué)會完全是兩回事。下載那一刻大腦會分泌一點(diǎn)“我在進(jìn)步”的信號但這只是收藏的快樂不是學(xué)習(xí)的結(jié)果。PLC是一門極度依賴反饋的工程技能你寫的程序到底對不對輸出點(diǎn)到底亮不亮電機(jī)到底轉(zhuǎn)不轉(zhuǎn)只有通電之后才能見分曉。我見過太多人電腦里存了幾十個(gè)G的課程視頻各種品牌的教學(xué)包全齊西門子、三菱、匯川、信捷一個(gè)不落。問他PLC掃描周期是怎么回事他答得上來讓他去現(xiàn)場接線、確認(rèn)一個(gè)漏型輸入是怎么通的他就開始犯怵。而這種犯怵會在面試和實(shí)際工作中被無限放大因?yàn)槊嬖嚬俨粫柲闶詹亓硕嗌儋Y料只會讓你畫出接線圖或者讓你說出某個(gè)輸入點(diǎn)不亮?xí)r怎么排查。2.2 動手第一步按圖點(diǎn)亮一盞燈真正有效的第一步極其簡單找一臺入門級PLC西門子S7-200 SMART也好三菱FX系列也好匯川Easy系列也好任何一個(gè)主流品牌都行然后完成一個(gè)最小系統(tǒng)。把24V電源接到PLC的L/M端把一個(gè)按鈕開關(guān)接到數(shù)字量輸入端子再把數(shù)字量輸出端子接到一個(gè)中間繼電器或者指示燈上。這里涉及一個(gè)新手最容易忽略的概念源型輸入和漏型輸入。西門子的S7系列大多數(shù)支持源型輸入也就是電流從模塊流入傳感器再從傳感器回到公共端而三菱的很多老型號默認(rèn)是漏型COM端接正極開關(guān)另一端接輸入端子。接線前先查清楚你的PLC型號是哪種接法這比背任何指令都重要。很多“輸入點(diǎn)不亮”的問題其實(shí)不是PLC壞了而是COM端沒接對或者傳感器和PLC的NPN、PNP類型不匹配。接好線之后下載一個(gè)最簡單的程序把I0.0的常開觸點(diǎn)直接驅(qū)動Q0.0輸出。強(qiáng)制I0.0或者按下按鈕注意觀察輸入點(diǎn)指示燈是否亮起輸出點(diǎn)指示燈是否跟隨。這一套動作做完你對PLC的信任感才算真正建立起來。以后不管多復(fù)雜的程序身體機(jī)制都明白PLC不是神秘的黑盒子不過是“讀到信號執(zhí)行邏輯再送去輸出”。2.3 老設(shè)備和老軟件別硬碰硬身邊有不少人在糾結(jié)三菱老款FX2系列怎么連接電腦搜索“fxgpwin win7_8_10_xp.zip”這類關(guān)鍵詞。這里給個(gè)建議老軟件對現(xiàn)代Windows系統(tǒng)的兼容性確實(shí)差不必和自己較勁。家里有舊電腦就裝個(gè)XP系統(tǒng)或者直接用虛擬機(jī)跑一個(gè)XP環(huán)境通信驅(qū)動選好串口或USB轉(zhuǎn)串口的COM口號一般都能解決。折騰老設(shè)備的重點(diǎn)不是炫技而是讓你明白做自動化控制很多時(shí)候軟件適配比程序本身還磨人這本身就是一種現(xiàn)場能力。3. 第二個(gè)坑把梯形圖當(dāng)普通編程寫完全忽略掃描周期3.1 程序里的每一行都是排隊(duì)過安檢很多有編程基礎(chǔ)的人學(xué)PLC時(shí)會覺得梯形圖太簡單了“無非就是與或非邏輯”。但是第一批栽跟頭的人往往也是這批人。PLC程序不是像網(wǎng)頁腳本那樣“響應(yīng)事件”運(yùn)行的它循著一個(gè)固定的周期一直循環(huán)讀入輸入映像區(qū)執(zhí)行用戶程序刷新輸出映像區(qū)再回到第一步。這個(gè)循環(huán)就是掃描周期S7-200 SMART默認(rèn)的循環(huán)時(shí)間往往只有幾毫秒但它依然是有順序、有時(shí)間概念的。不理解掃描周期最典型的問題就是對同一個(gè)輸出點(diǎn)重復(fù)使用線圈。有些初學(xué)者覺得我在程序前面讓Q0.0輸出一次程序后面再讓Q0.0輸出一次那它應(yīng)該“優(yōu)先響應(yīng)最后來的那個(gè)條件”。但實(shí)際上PLC執(zhí)行到第二個(gè)線圈時(shí)會直接覆蓋前一個(gè)線圈的結(jié)果。最終Q0.0亮不亮取決于程序里最后一次寫它的那行結(jié)果而不是“誰觸發(fā)了就保持住”。這種隱蔽的覆蓋問題在程序短的時(shí)候看不出來程序一長或者中間插入了跳轉(zhuǎn)指令就會出現(xiàn)“這里明明置位了輸出為啥老不對”的靈異現(xiàn)象。3.2 一個(gè)真實(shí)例子同樣的邏輯位置不同結(jié)果不同假設(shè)有這樣一個(gè)控制要求機(jī)器啟動后用一個(gè)定時(shí)器延時(shí)2秒再亮燈。你可能會這樣寫Network 1 Q0.0通過T37的常開觸點(diǎn)控制 T37 Q0.0 ----| |-----------( )---- Network 2 T37定時(shí)器線圈設(shè)定2秒 I0.0 T37 ----| |------(TON, 2s)----我把定時(shí)器線圈放在網(wǎng)絡(luò)2觸點(diǎn)判斷放在網(wǎng)絡(luò)1。結(jié)果就是當(dāng)T37計(jì)時(shí)到2秒的那一刻同一個(gè)掃描周期里網(wǎng)絡(luò)1先執(zhí)行它看到T37還沒“更新”成通的狀態(tài)所以Q0.0不會立刻變亮要等到下一個(gè)掃描周期T37的狀態(tài)才會被重新掃描到Q0.0才亮。差一個(gè)掃描周期在很多場合無所謂但在一些需要嚴(yán)格同步的設(shè)備上這種時(shí)序會讓你排查到懷疑人生。正確的方式是讓輸出判斷和定時(shí)器線圈的先后順序符合你的預(yù)期或者使用邊沿指令和中間變量讓置位和復(fù)位條件不再依賴掃描順序。理解這些之后你才算真正從“會寫指令”進(jìn)階到“會安排程序結(jié)構(gòu)”。3.3 入門指令到底該怎么學(xué)我建議的學(xué)習(xí)路線是這樣的先接觸點(diǎn)、線圈把與、或、非邏輯吃透然后用定時(shí)器和計(jì)數(shù)器做小練習(xí)比如紅綠燈閃爍再學(xué)傳送指令、比較指令處理數(shù)值然后再碰中斷、PID、通信這些進(jìn)階內(nèi)容。這條路線和很多課程大綱看起來差不多但關(guān)鍵差別在于每學(xué)一類指令都要給它匹配一個(gè)物理現(xiàn)象。學(xué)傳送指令就讓觸摸屏寫一個(gè)數(shù)PLC把它傳送到變頻器頻率學(xué)比較指令就用它做流量報(bào)警。指令是工具不是目的。背指令表就像背字典有需要時(shí)能查到會用就行真正值錢的是你看到一段程序能不能說清楚它背后的時(shí)序關(guān)系和聯(lián)鎖邏輯。4. 第三個(gè)坑只玩單機(jī)版PLC不碰觸摸屏、變頻器和SCADA4.1 現(xiàn)場里的PLC從來不是孤軍奮戰(zhàn)現(xiàn)在搜索“plc,scada如何與plc連接”的人越來越多了這其實(shí)是一個(gè)很好的信號說明大家開始意識到自動化項(xiàng)目里PLC只是大腦它要跟眼睛、手、腳配合才能干活。一個(gè)典型的柜子里PLC旁邊大概率站著觸摸屏下面一排變頻器或者伺服驅(qū)動器柜門外面掛著傳感器和執(zhí)行器。如果你只會在PC上模擬PLC程序不理解通信那你最多只能做程序里的一部分活離“獨(dú)立調(diào)試”還差得遠(yuǎn)。很多招聘要求里都寫著“熟悉Modbus、Profibus、Profinet等常用協(xié)議”原因就在這里。通信不是附加技能而是基本功。比如你用西門子PLC去控制一臺ABB變頻器可能就會搜索“ABB變頻器與西門子PLC”怎么連本質(zhì)上要做的就是把變頻器的通信參數(shù)設(shè)對然后讓PLC通過串口或以太網(wǎng)按Modbus RTU或Modbus TCP協(xié)議去讀寫變頻器的寄存器。4.2 從“讀變頻器轉(zhuǎn)速”開始把通信打通建議你的第一個(gè)通信練習(xí)就選變頻器因?yàn)榉答伜苤庇^PLC讀到轉(zhuǎn)速顯示到觸摸屏上你立刻能看到數(shù)據(jù)對不對。首先把變頻器的通信參數(shù)設(shè)置好。以ABB ACS510系列為例站地址設(shè)為1波特率9600或者19200協(xié)議校驗(yàn)方式選無校驗(yàn)或偶校驗(yàn)通信協(xié)議類型設(shè)為Modbus RTU。然后在PLC側(cè)配置主站和變頻器的站地址、波特率保持一致。接下來要查變頻器的寄存器手冊比如運(yùn)行頻率寄存器地址是40001那么你要寫的Modbus地址就是40001對應(yīng)的協(xié)議地址0000H。(* 西門子S7-200 SMART用Modbus RTU讀變頻器頻率示例 *) // 在初始化程序中 // MODBUS_CTRL: 設(shè)置9600波特率, 無校驗(yàn), 從站1 // MBUS_CTRL 模式 1, 波特率 9600, 校驗(yàn) 0, 從站 1 // 在輪詢程序中 // MODBUS_MSG: 讀取從站1的保持寄存器起始地址40001 // 數(shù)據(jù)長度1個(gè)字存到VB100開始的變量里 // 將VB100里讀到的原始值按變頻器量程比例換算為實(shí)際轉(zhuǎn)速通信失敗的時(shí)候不要急著改程序。先查物理鏈路串口線是不是交叉線以太網(wǎng)IP是不是在同一個(gè)網(wǎng)段再查參數(shù)一致性波特率、校驗(yàn)位、站地址一樣不一樣最后查寄存器地址映射是不是找錯(cuò)了功能碼。這三步能解決絕大多數(shù)連不上問題。很多人栽在第一步就是把PLC的COM口和變頻器的控制端子當(dāng)成普通電源線來理解忽略了RS485是A、B兩條線接反了是不會通的。4.3 觸摸屏和SCADA先學(xué)會連上再談畫畫面有網(wǎng)友問“威倫通觸摸屏軟件上怎么找不到匯川PLC的驅(qū)動”這種情況我遇到過不少次。威倫通的EBPro軟件默認(rèn)驅(qū)動列表只顯示它內(nèi)置支持的設(shè)備如果確實(shí)找不到對應(yīng)驅(qū)動通常有兩個(gè)解決方向一是在驅(qū)動管理里更新數(shù)據(jù)庫新版軟件會補(bǔ)充新設(shè)備驅(qū)動二是換個(gè)思路不用品牌專用驅(qū)動而是讓觸摸屏和PLC雙方都使用標(biāo)準(zhǔn)的Modbus協(xié)議通信這是最通用也最省事的做法。信捷XD系列連接觸摸屏?xí)r也是一樣MCGS組態(tài)軟件如果找不到信捷驅(qū)動走M(jìn)odbus通道往往比你去翻驅(qū)動更加穩(wěn)妥。SCADA和觸摸屏的本質(zhì)區(qū)別也值得搞清楚。觸摸屏是本地人機(jī)界面做按鈕、畫面、報(bào)警顯示SCADA是上位監(jiān)控系統(tǒng)重點(diǎn)在數(shù)據(jù)采集、歷史存儲、趨勢曲線和整個(gè)系統(tǒng)的調(diào)度。用C#或者組態(tài)軟件寫上位機(jī)去讀PLC時(shí)很多人會問“PLC讀取頻率多少合適”。我的建議做普通監(jiān)控輪詢周期設(shè)在100到500毫秒就很合適太短了會給PLC增加沒必要的通信負(fù)擔(dān)太長了你畫面上看到的數(shù)據(jù)就像幻燈片。這種輪詢間隔的控制正是SCADA工程經(jīng)驗(yàn)的一部分。4.4 通信聯(lián)不上時(shí)的通用排查鏈路這一套排查思路你以后會遇到無數(shù)次值得養(yǎng)成肌肉記憶先看指示燈PLC的通信口燈有沒有閃爍再看接線三線制傳感器、屏蔽線是否接地、串口線是否交叉再查參數(shù)站號、波特率、數(shù)據(jù)位、校驗(yàn)位最后用調(diào)試助手單獨(dú)測從站看從站本身回不回應(yīng)指令。如果從站單獨(dú)用調(diào)試軟件能通掛上PLC就不通那問題大概率出在PLC側(cè)的程序沒有正確初始化通信口或者輪詢頻率太快從站處理不過來。5. 第四個(gè)坑仿真器里跑得飛快真機(jī)卻點(diǎn)火不著5.1 仿真模擬的是邏輯不是物理世界PLCSIM、S7-PLCSIM這類仿真工具確實(shí)很好用它讓你不需要硬件也能驗(yàn)證程序邏輯。但我必須強(qiáng)調(diào)一句話仿真器把CPU邏輯模擬得很像卻把真實(shí)世界的一切都“隱去”了。你在仿真器里點(diǎn)一下鼠標(biāo)就是輸入信號可在現(xiàn)場輸入信號要經(jīng)過24V電源、傳感器、屏蔽線、端子排才能進(jìn)入輸入點(diǎn)輸出信號要經(jīng)過PLC的晶體管或繼電器再帶動外面的接觸器和電機(jī)。這就是為什么總有搜索詞問“S7-PLCSIM Advanced v5.0實(shí)例為什么啟動不了且沒有報(bào)錯(cuò)”的原因。仿真軟件本身的安裝環(huán)境就比真實(shí)PLC對系統(tǒng)要求更敏感缺少授權(quán)文件、Windows版本不在官方支持列表、運(yùn)行在虛擬機(jī)里沒開嵌套虛擬化、和舊版PLCSIM沖突都可能導(dǎo)致啟動過程卡住但又不彈出明確報(bào)錯(cuò)。這種體驗(yàn)其實(shí)變相提醒我們軟件工具永遠(yuǎn)只是輔助真機(jī)才是標(biāo)準(zhǔn)。把仿真器和真機(jī)放在一起看差別非常明顯我列了一個(gè)表對比項(xiàng)仿真器真實(shí)PLC輸入信號來源鼠標(biāo)操作或強(qiáng)制變量按鈕、傳感器、現(xiàn)場線路存在抖動和干擾輸出結(jié)果變量狀態(tài)變化必須驅(qū)動真實(shí)負(fù)載會面臨短路、過載掃描周期通常極快不受外部影響受程序復(fù)雜度和通信影響周期會波動錯(cuò)誤信息以軟件彈窗為主有模塊指示燈、診斷緩沖區(qū)、故障碼接線和公共端完全不涉及漏型源型接錯(cuò)、端子松動、信號地電位差都可能導(dǎo)致故障5.2 真機(jī)“沒報(bào)錯(cuò)但就是不運(yùn)行”的現(xiàn)場排查流程這種問題最讓人頭疼。PLC的RUN燈明明亮著SF燈也沒報(bào)警監(jiān)控程序狀態(tài)也正??奢敵鼍褪遣粍踊蛘咴O(shè)備就是不走。這時(shí)候千萬別急著改程序先按順序查幾件事第一步看CPU的運(yùn)行狀態(tài)和面板指示燈。如果RUN燈沒亮先查是否處在STOP狀態(tài)急?;芈贰踩T信號有沒有閉合很多PLC在硬件輸入模塊里設(shè)置了“外部急停信號沒到位就無法啟動”的隱藏條件這種邏輯不會報(bào)錯(cuò)但會卡住整個(gè)程序。第二步在線打開診斷緩沖區(qū)一條條讀事件。很多時(shí)候設(shè)備剛開電時(shí)發(fā)生過一次短暫供電跌落CPU可能重啟過程序沒有恢復(fù)運(yùn)行。這種現(xiàn)場記錄比你看程序時(shí)猜來猜去管用得多。第三步檢查I/O狀態(tài)。用萬用表量傳感器的供電有沒有24V量PLC輸入點(diǎn)對COM的電壓對不對再看輸入點(diǎn)指示燈亮不亮。觸摸屏上顯示的變量可以強(qiáng)制但是強(qiáng)制之前必須搞清楚這個(gè)強(qiáng)制的值是不是瞬間被程序邏輯覆蓋了我遇到過強(qiáng)制線圈條件結(jié)果程序里又復(fù)位掉的尷尬情況。第四步排查“導(dǎo)致PLC宕機(jī)”的外部因素。程序死循環(huán)、通信指令超時(shí)堵塞、模擬量模塊信號超量程、輸出點(diǎn)短路導(dǎo)致模塊過流都可能讓CPU看起來像是宕機(jī)了。有些老練的工程師會把外接負(fù)載先斷開單獨(dú)讓PLC跑一段空程序用這種“排除法”來確認(rèn)到底是負(fù)載問題還是程序問題。5.3 仿真練什么、不練什么仿真最適合練邏輯啟保停、紅綠燈時(shí)序、包裝線計(jì)數(shù)分流、電梯平層開門這些純邏輯場景用仿真器反復(fù)調(diào)參是完全值得的。但仿真練不了排障因?yàn)榕耪系膶ο蠛艽蟪潭仍谖锢韺用媸墙泳€、是電源、是接地、是屏蔽和干擾。我見過一個(gè)學(xué)員在仿真器里調(diào)一個(gè)PID回路調(diào)得頭頭是道到了現(xiàn)場卻發(fā)現(xiàn)傳感器信號在4到20毫安環(huán)路上跳得厲害根本原因就是屏蔽線單端接地沒做好變送器和PLC的電源還不是同一路。仿真器再先進(jìn)也教不了你這種問題。6. 第五個(gè)坑指令表背得溜拿到工藝照樣懵6.1 “電梯、紅綠燈、大棚灌溉、包裝線”才是真正的考試題如果你搜過PLC相關(guān)的學(xué)習(xí)資源大概也搜過“十字路口紅綠燈PLC程序”“PLC四層電梯控制程序”“基于西門子PLC大棚灌溉”“基于PLC的自動化包裝線控制系統(tǒng)設(shè)計(jì)”。這些才是真正的考試題因?yàn)樗鼈兌际枪に囼?qū)動型的項(xiàng)目。一個(gè)好的PLC程序從來不是把最復(fù)雜的指令堆上去而是把工藝需求理解透拆解成步驟再落實(shí)到每一個(gè)I/O點(diǎn)和每一段邏輯里。很多人學(xué)了很久掌握的指令不少但拿到一個(gè)“大棚灌溉”需求時(shí)依然會懵不知道水泵和電磁閥要占幾個(gè)輸出點(diǎn)不知道該用定時(shí)器按時(shí)段灌還是用濕度傳感器PID閉環(huán)灌更不知道缺水保護(hù)和過流保護(hù)應(yīng)該放在哪一段程序里。這就是只學(xué)指令、不學(xué)工藝的結(jié)果。舉個(gè)最經(jīng)典的“四層電梯”例子。電梯程序的難點(diǎn)不是你會不會用上升沿而是你要把“內(nèi)呼、外呼、上行優(yōu)先、平層、開門延時(shí)、超重保護(hù)、檢修模式”這些狀態(tài)理清楚。每一層是什么位置限位開關(guān)在哪轎廂門鎖信號怎么進(jìn)入安全回路這些和指令沒關(guān)系只和工藝流程有關(guān)。6.2 五步拆解任何工藝從包裝線說起我?guī)氯藭r(shí)經(jīng)常教他們一套拆解方法任何工藝都可以用這五步走完第一步把工藝的動作順序用文字寫清楚。比如一個(gè)包裝線產(chǎn)品到達(dá)傳感器A啟動擋停氣缸機(jī)械手抓取放到包裝位封口計(jì)數(shù)加一如果計(jì)數(shù)到20個(gè)啟動換箱提醒。第二步列出所有輸入輸出點(diǎn)給它們分配地址。傳感器A是I0.0啟動按鈕I0.1急停I0.2擋停氣缸Q0.0機(jī)械手夾緊Q0.1換箱指示燈Q0.2。第三步把動作順序翻譯成步驟或狀態(tài)。這就是常說的狀態(tài)機(jī)思想起步階段可以用中間繼電器M區(qū)來做步進(jìn)條件滿足才允許進(jìn)入下一步不滿足就停在那一步。第四步把所有保護(hù)條件補(bǔ)充進(jìn)去。急停必須優(yōu)先于一切動作氣缸兩端要有到位信號有手自動切換時(shí)手動模式必須繞過自動流程的某些步驟。第五步寫報(bào)警和復(fù)位邏輯。報(bào)警觸發(fā)后設(shè)備停在哪個(gè)狀態(tài)按鈕復(fù)位后從哪一步重啟這些都是工藝邏輯而不是“見字寫指令”能解決的。拿這個(gè)思路去看“PLC怎么設(shè)置時(shí)間到期自動停機(jī)”這個(gè)問題本質(zhì)也是工藝需求系統(tǒng)經(jīng)過累積運(yùn)行時(shí)間或者到了設(shè)定時(shí)刻發(fā)送停機(jī)指令鎖存停機(jī)狀態(tài)直到人工復(fù)位。用PLC內(nèi)部實(shí)時(shí)時(shí)鐘加上比較指令就能完成難的是你要想清楚停機(jī)時(shí)設(shè)備處于什么工況要不要先完成當(dāng)前動作再停車這些才是真正的前提。6.3 把安全互鎖和消抖當(dāng)成職業(yè)習(xí)慣最后一類不得不提就是安全邏輯。不是所有問題都能靠程序解決但程序至少不能制造危險(xiǎn)。工程上急停按下時(shí)輸出必須斷開安全門打開時(shí)運(yùn)行必須停止電機(jī)正反轉(zhuǎn)不能同時(shí)接通。這些互鎖邏輯必須寫進(jìn)程序里不能依賴操作員反應(yīng)。(* 電機(jī)正反轉(zhuǎn)安全互鎖示例 *) IF EmergencyStop THEN MotorForward : FALSE; MotorReverse : FALSE; ELSIF NOT SafetyDoorClosed THEN MotorForward : FALSE; MotorReverse : FALSE; ELSE MotorForward : StartForward AND NOT MotorReverse AND NOT Overload; MotorReverse : StartReverse AND NOT MotorForward AND NOT Overload; END_IF;這種代碼的結(jié)構(gòu)在PLC里再常見不過優(yōu)先級從安全條件開始一層層往下。新手容易犯的錯(cuò)誤是先寫運(yùn)行邏輯再補(bǔ)保護(hù)結(jié)果保護(hù)條件被運(yùn)行邏輯的賦值覆蓋了。記住一個(gè)原則安全條件永遠(yuǎn)放在不會被覆蓋的最前面輸出線圈在整個(gè)程序里盡量只出現(xiàn)一次。輸入信號的抖動處理也一樣重要。按鈕按下時(shí)由于機(jī)械觸點(diǎn)抖動PLC可能會在幾毫秒內(nèi)讀到多次通斷一次觸發(fā)變成多次執(zhí)行計(jì)數(shù)自然不準(zhǔn)。我習(xí)慣在程序里加一個(gè)十幾毫秒的延時(shí)確認(rèn)或者使用PLC自帶的輸入濾波時(shí)間設(shè)置讓信號穩(wěn)定后再參與邏輯。至于“AI生成PLC代碼”這件事我也想多說一句。AI工具確實(shí)能輔助生成結(jié)構(gòu)化文本或者幫你看一段梯形圖的邏輯關(guān)系但它不了解你的端子接了什么傳感器也不了解現(xiàn)場急停回路是否處于閉合狀態(tài)更不理解工藝?yán)锬切撘?guī)則的互相矛盾。可以把AI當(dāng)成一個(gè)幫你整理思路的助手但不能跳過接線、排障和工藝分析這些基本功。代碼生成不等于設(shè)備調(diào)試這也是為什么現(xiàn)場經(jīng)驗(yàn)永遠(yuǎn)值錢。7. 踩過這些坑之后我給自己定下的三條規(guī)矩第一個(gè)規(guī)矩先接線再寫程序哪怕只是接一個(gè)按鈕、一個(gè)燈也要在真機(jī)上跑一遍。沒有物理上的“通”和“斷”你對I/O的理解永遠(yuǎn)只是紙面上的。第二個(gè)規(guī)矩能去現(xiàn)場就不要只開仿真器。柜子里的PLC、觸摸屏、變頻器、傳感器它們之間靠的是電纜、端子排、通信線這些東西在仿真器里統(tǒng)統(tǒng)不存在而真正出問題的往往就是這些環(huán)節(jié)。第三個(gè)規(guī)矩拿到任何程序先問工藝再過指令。不管是電梯、紅綠燈、大棚灌溉還是包裝線先畫出動作時(shí)序列出I/O表標(biāo)明互鎖和報(bào)警然后再想用什么指令去實(shí)現(xiàn)。指令只是表達(dá)方式工藝才是你要解決的事情。說起來這些規(guī)矩也是我自己走了不少彎路才總結(jié)出來的。早些年我也囤過資料也迷信過仿真也在現(xiàn)場被一個(gè)跟不上時(shí)序的輸出折騰過一整天。后來發(fā)現(xiàn)學(xué)PLC沒有捷徑但確實(shí)有更聰明的方式那就是盡早給自己制造真實(shí)的反饋回路讓每一次接線、每一次通信失敗、每一次程序覆蓋都成為你能記住的知識點(diǎn)。希望這篇內(nèi)容能幫你少走幾步彎路把時(shí)間花在真正能提升能力的事情上。