場(chǎng)實(shí)戰(zhàn)經(jīng)驗(yàn):從接線到安全聯(lián)鎖)
干這行久了你會(huì)發(fā)現(xiàn)剛?cè)胄?-3年的PLC工程師真正卡住大家的往往不是多復(fù)雜的算法也不是什么冷門協(xié)議棧而是一堆老師傅閉著眼都會(huì)、但新人壓根沒(méi)被系統(tǒng)講過(guò)的現(xiàn)場(chǎng)細(xì)節(jié)。編程軟件會(huì)用、梯形圖會(huì)寫不代表設(shè)備能跑得穩(wěn)。設(shè)備一報(bào)警客戶電話打到手機(jī)上你蹲在電柜前心里發(fā)毛這才是前三年最真實(shí)的日常。我這么多年帶過(guò)的工程師幾乎都有過(guò)這種階段。所以我把入行1-3年最值得記的實(shí)戰(zhàn)經(jīng)驗(yàn)整理了90條原本打算每天更新幾條今天不打散先把其中最要命的幾組揉成一篇長(zhǎng)文從接線物理層、掃描周期、通信排障一路聊到軸調(diào)試和安全聯(lián)鎖。這篇不是教科書是我在設(shè)備旁邊被磨出來(lái)的東西。1. 現(xiàn)場(chǎng)物理層接線、傳感器類型和屏蔽程序再對(duì)也架不住“硬件搗亂”很多新人出問(wèn)題第一反應(yīng)是打開(kāi)程序反復(fù)檢查邏輯結(jié)果問(wèn)題根本不在程序里。PLC這行有個(gè)不成文的規(guī)則先懷疑所有物理連接再懷疑程序。你寫得再漂亮的邏輯遇到一根虛接的線、一個(gè)配錯(cuò)的傳感器、一條貼著動(dòng)力線走的模擬量電纜照樣跑出讓人崩潰的現(xiàn)象。1.1 NPN/PNP傳感器配錯(cuò)輸入信號(hào)“有就像沒(méi)有”的典型現(xiàn)場(chǎng)曾經(jīng)有個(gè)設(shè)備調(diào)試現(xiàn)場(chǎng)新人小Z花了兩小時(shí)查一個(gè)氣缸到位信號(hào)程序監(jiān)視畫面里那個(gè)輸入點(diǎn)就是不變綠。他用萬(wàn)用表量傳感器輸出端一會(huì)兒有24V一會(huì)兒沒(méi)有感覺(jué)信號(hào)明明在變。最后我讓他去看PLC輸入端子的公共端接法再對(duì)照傳感器型號(hào)——傳感器是NPN輸出而PLC輸入模塊是PNP型的接線方式信號(hào)電平方向完全對(duì)不上。萬(wàn)用表能看到電壓跳變但PLC輸入采樣電路根本沒(méi)法正確識(shí)別。這里的基本原理其實(shí)不復(fù)雜NPN傳感器導(dǎo)通時(shí)輸出端被拉到低電平PNP傳感器導(dǎo)通時(shí)輸出端輸出高電平。PLC的輸入模塊分源型輸入和漏型輸入公共端接法決定了它到底需要高電平有效信號(hào)還是低電平有效信號(hào)。選型階段沒(méi)核對(duì)現(xiàn)場(chǎng)就只能臨時(shí)換傳感器、改接線或者加中間繼電器轉(zhuǎn)換耽誤半天工期。我的建議是項(xiàng)目前期做I/O點(diǎn)表時(shí)就把傳感器類型標(biāo)進(jìn)每一路備注里NPN還是PNP、兩線還是三線、輸出是常開(kāi)還是常閉全部寫清楚。到了現(xiàn)場(chǎng)先用萬(wàn)用表確認(rèn)傳感器供電是24V還是12V再測(cè)輸出狀態(tài)最后才對(duì)PLC端子不要直接憑經(jīng)驗(yàn)接。有一種更隱蔽的情況是常開(kāi)常閉選錯(cuò)。設(shè)備在原點(diǎn)時(shí)傳感器被擋鐵壓住你選了常開(kāi)程序里卻默認(rèn)它沒(méi)被壓住結(jié)果一啟動(dòng)直接報(bào)錯(cuò)。這種問(wèn)題排查起來(lái)很費(fèi)勁因?yàn)樾盘?hào)“看起來(lái)”是對(duì)的只是邏輯和機(jī)械位置沒(méi)對(duì)應(yīng)上。處理思路也一樣先確認(rèn)機(jī)械動(dòng)作狀態(tài)再對(duì)照程序里的有效信號(hào)狀態(tài)。1.2 端子松動(dòng)、冷壓頭和屏蔽層決定設(shè)備壽命的往往不是程序我見(jiàn)過(guò)最讓人哭笑不得的一次停機(jī)事故原因是PLC輸出端子的螺絲沒(méi)擰緊設(shè)備運(yùn)轉(zhuǎn)時(shí)震動(dòng)導(dǎo)致端子偶發(fā)接觸不良。輸出繼電器吸合了但負(fù)載接觸器線圈偶爾得電偶爾失電整個(gè)氣缸動(dòng)作像鬼畜一樣一頓一頓。客戶說(shuō)PLC壞了其實(shí)PLC委屈得很接線端子松了這件事拿把螺絲刀擰一圈就好但你在現(xiàn)場(chǎng)能排查一晚上?,F(xiàn)在我?guī)俗鲅矙z電柜里每排端子的螺絲擰緊一遍是固定動(dòng)作尤其是新裝設(shè)備運(yùn)行一周后熱脹冷縮帶出來(lái)的松動(dòng)太常見(jiàn)了。端子用冷壓端子壓好不用裸線直接鎖螺絲線徑和端子規(guī)格匹配寧可大一號(hào)也別湊合。還有一個(gè)經(jīng)常被忽略的細(xì)節(jié)是信號(hào)線和動(dòng)力線的布線隔離這在模擬量信號(hào)上體現(xiàn)得特別明顯。模擬量傳感器和變頻器驅(qū)動(dòng)同一臺(tái)電機(jī)如果4-20mA的信號(hào)線跟變頻器輸出線走同一個(gè)線槽變頻器一啟動(dòng)信號(hào)線就成了“天線”干擾直接被拽進(jìn)PLC模擬量輸入模塊畫面上一會(huì)跳大數(shù)字一會(huì)跳零。我之前處理過(guò)一條包裝線上的壓力信號(hào)抖動(dòng)查了半天最后把信號(hào)線從動(dòng)力線槽里單獨(dú)拉出來(lái)屏蔽層在PLC側(cè)單端接地問(wèn)題立刻消失。記住這句話屏蔽層必須單端接地兩端接地反而會(huì)形成地環(huán)路把干擾接得更牢。1.3 模擬量信號(hào)在變頻器啟動(dòng)時(shí)亂跳實(shí)時(shí)性不是靠程序補(bǔ)出來(lái)的模擬量信號(hào)在變頻器啟動(dòng)時(shí)亂跳很多人第一反應(yīng)是在PLC里加濾波把采樣值平均掉。濾波確實(shí)能讓畫面穩(wěn)定但它會(huì)讓實(shí)際響應(yīng)變慢精度也會(huì)打折。你要是做溫度控制慢幾秒可能問(wèn)題不大要是做張力控制或者壓力PID濾波帶來(lái)的滯后會(huì)把你逼瘋。正確思路是先把信號(hào)鏈路搞干凈再考慮軟件濾波。從傳感器、變送器到PLC模擬量模塊全程用屏蔽雙絞線屏蔽層單端接地盡量遠(yuǎn)離變頻器、電抗器和動(dòng)力電纜。穿過(guò)電柜壁的時(shí)候走專門的格蘭頭別讓信號(hào)線和動(dòng)力線從同一個(gè)孔進(jìn)。如果現(xiàn)場(chǎng)實(shí)在沒(méi)法分開(kāi)布線就在模擬量信號(hào)源端加隔離配電器把4-20mA信號(hào)隔離后再進(jìn)PLC。成本不高但能省掉夜里兩點(diǎn)被電話叫醒的麻煩。對(duì)新手來(lái)說(shuō)判斷是干擾還是信號(hào)真跳變有個(gè)土辦法把PLC切到停止模式用萬(wàn)用表毫安檔直接量模擬量輸入端子的電流如果電流本身就在跳那就不是程序能解決的問(wèn)題是信號(hào)鏈路臟。2. 掃描周期與程序結(jié)構(gòu)前三年寫代碼后三年還債最容易還在這上面程序結(jié)構(gòu)這件事剛?cè)胄袝r(shí)沒(méi)人覺(jué)得它重要能跑就行。但項(xiàng)目一多、設(shè)備一復(fù)雜爛結(jié)構(gòu)的成本就全部顯現(xiàn)出來(lái)了。我見(jiàn)過(guò)太多設(shè)備程序一個(gè)循環(huán)掃描周期里塞了上千條指令所有設(shè)備邏輯互相穿插像一團(tuán)毛線球。這不是寫代碼風(fēng)格的問(wèn)題是后面調(diào)試、維護(hù)、加裝功能時(shí)能不能活下來(lái)的問(wèn)題。2.1 I/O映像區(qū)為什么實(shí)際端子上有信號(hào)程序里讀到的卻不是新的PLC的工作方式不是“程序每一步都實(shí)時(shí)讀取輸入端子”。絕大多數(shù)中小型PLC在一個(gè)掃描周期里先把所有輸入端子的狀態(tài)讀進(jìn)內(nèi)存的輸入映像區(qū)然后CPU執(zhí)行用戶程序程序里讀到的輸入狀態(tài)全部來(lái)自這個(gè)映像區(qū)掃描周期結(jié)束再把輸出映像區(qū)統(tǒng)一刷新到物理輸出端子。也就是說(shuō)程序執(zhí)行過(guò)程中外部輸入信號(hào)發(fā)生了變化當(dāng)前掃描周期內(nèi)程序是“看不見(jiàn)”的要等下一個(gè)掃描周期才讀到。這個(gè)機(jī)制解釋了日常調(diào)試?yán)锍R?jiàn)的怪現(xiàn)象你用萬(wàn)用表量PLC輸入端明明是24V程序監(jiān)視里那個(gè)位卻還是0。如果那個(gè)輸入信號(hào)恰好是在程序掃描中途才翻轉(zhuǎn)的那當(dāng)前周期里它確實(shí)沒(méi)被采集。反過(guò)來(lái)程序里已經(jīng)把輸出置1了但實(shí)際輸出端子還維持上一個(gè)掃描周期的狀態(tài)因?yàn)檩敵鏊⑿逻€沒(méi)開(kāi)始。很多新手診斷故障時(shí)拿萬(wàn)用表量完端子就直接下結(jié)論說(shuō)PLC壞了其實(shí)是對(duì)掃描機(jī)制不熟悉。遇到這種“信號(hào)和邏輯對(duì)不上”的情況先問(wèn)自己一句我是不是看錯(cuò)了時(shí)刻脈沖信號(hào)捕捉則是另一個(gè)常見(jiàn)坑。有些快速脈沖信號(hào)比如編碼器或高速計(jì)數(shù)輸入掃描周期根本來(lái)不及響應(yīng)。這時(shí)候不能靠普通輸入點(diǎn)硬采要會(huì)用高速計(jì)數(shù)功能或中斷輸入把脈沖直接送入計(jì)數(shù)通道。對(duì)剛?cè)胄械耐形矣袀€(gè)建議遇到“偶爾丟信號(hào)”的輸入點(diǎn)不要只加大程序里的持續(xù)判斷先確認(rèn)這個(gè)模塊是否支持中斷或硬件計(jì)數(shù)再?zèng)Q定程序怎么寫。2.2 OB、FC、FB怎么分模塊化不是寫代碼時(shí)的儀式感早期PLC程序只有很簡(jiǎn)單的組織塊今天無(wú)論歐系還是日系PLC基本都支持功能塊、函數(shù)塊、中斷塊這類結(jié)構(gòu)。很多新人不習(xí)慣拆分一個(gè)主循環(huán)里把所有設(shè)備的自動(dòng)流程、報(bào)警處理、手動(dòng)操作全寫完。前期設(shè)備簡(jiǎn)單還行一旦中途加一臺(tái)設(shè)備、改一段工藝你就得在一千多行指令里找那幾行相關(guān)邏輯還不敢亂改怕順手牽羊把別的地方帶崩。我自己的習(xí)慣是把程序按設(shè)備域拆開(kāi)每個(gè)工位的邏輯單獨(dú)做成一個(gè)功能塊主循環(huán)里只做調(diào)用和狀態(tài)匯總手自動(dòng)切換單獨(dú)一塊報(bào)警處理和復(fù)位邏輯單獨(dú)一塊模擬量處理和PID控制單獨(dú)一塊。每個(gè)功能塊的輸入輸出接口定義清楚盡量不靠全局變量互相傳狀態(tài)能用參數(shù)傳的就用參數(shù)傳。這樣做有個(gè)直接好處現(xiàn)場(chǎng)排查時(shí)你只需要把目光鎖定在那個(gè)異常設(shè)備的塊上不需要翻遍整個(gè)程序。別人接手你的程序也不需要一邊猜一邊鼠標(biāo)懸停看變量注釋。功能塊和函數(shù)塊的區(qū)別也值得弄清楚。功能塊有背景數(shù)據(jù)塊能保存上一次掃描的狀態(tài)適合做電機(jī)控制、氣缸動(dòng)作這類有“記憶需求”的邏輯函數(shù)塊沒(méi)有獨(dú)立的背景數(shù)據(jù)存儲(chǔ)適合做純計(jì)算、純轉(zhuǎn)換比如工程單位換算、模擬量濾波。新人最容易犯的錯(cuò)是在函數(shù)塊里定義臨時(shí)變量保存中間狀態(tài)結(jié)果掃描周期結(jié)束變量值就丟了下一輪邏輯從頭再來(lái)時(shí)好時(shí)壞。凡是需要跨掃描周期保持的狀態(tài)一定要放進(jìn)功能塊的靜態(tài)變量或背景數(shù)據(jù)塊里不是隨手找個(gè)臨時(shí)變量就完事。2.3 定時(shí)器、臨時(shí)變量和“數(shù)據(jù)快照”的坑定時(shí)器看起來(lái)簡(jiǎn)單用起來(lái)坑不少。每種定時(shí)器都有精度和保持特性差異有的掉電歸零有的掉電保持當(dāng)前計(jì)時(shí)值。設(shè)備在斷電再上電之后如果定時(shí)器復(fù)位了可能導(dǎo)致該報(bào)警的沒(méi)報(bào)警不該啟動(dòng)的啟動(dòng)了。做安全相關(guān)邏輯時(shí)定時(shí)器一定要選帶保持功能的類型并且在復(fù)位條件里寫明白“什么時(shí)候允許清掉計(jì)時(shí)值”。還有一個(gè)掃描周期帶來(lái)的計(jì)時(shí)誤差如果定時(shí)器精度是10毫秒而你的掃描周期在20毫秒左右波動(dòng)那定時(shí)精度天然就鎖死在掃描周期這個(gè)量級(jí)上想靠定時(shí)器做高精度時(shí)間控制是不現(xiàn)實(shí)的。需要準(zhǔn)確到毫秒級(jí)的時(shí)間戳直接用PLC的實(shí)時(shí)時(shí)鐘或者專用定時(shí)功能?,F(xiàn)場(chǎng)我曾經(jīng)見(jiàn)過(guò)一排氣缸同步動(dòng)作新人用普通定時(shí)器做各氣缸啟動(dòng)延時(shí)氣缸多、掃描周期被拉長(zhǎng)后明顯能看到動(dòng)作一個(gè)接一個(gè)地“慢半拍”最后換成硬件時(shí)序控制才解決?!皵?shù)據(jù)快照”問(wèn)題我特別想強(qiáng)調(diào)。調(diào)試時(shí)把一批中間變量的“當(dāng)前值”截圖保存等設(shè)備運(yùn)行半小時(shí)后再對(duì)比截圖你會(huì)發(fā)現(xiàn)有些中間狀態(tài)已經(jīng)悄悄變了。PLC里變量多程序里各種條件環(huán)環(huán)相扣你不建立數(shù)據(jù)快照的習(xí)慣出了問(wèn)題連“之前哪個(gè)狀態(tài)不對(duì)”都說(shuō)不清楚。進(jìn)現(xiàn)場(chǎng)第一件事把關(guān)鍵輸入、輸出、報(bào)警變量的當(dāng)前值截圖存起來(lái)這比事后回憶可靠得多。3. 通信排障別急著抓包IP、線纜、站號(hào)比協(xié)議更容易翻車PLC通信故障十個(gè)里面至少六七個(gè)不是協(xié)議本身的問(wèn)題。新手上手就分析報(bào)文、看協(xié)議棧但實(shí)際現(xiàn)場(chǎng)里網(wǎng)線、水晶頭、IP地址、端口號(hào)、站號(hào)設(shè)置這些“土問(wèn)題”才是重災(zāi)區(qū)。排查順序搞反了效率低到自己懷疑人生。3.1 IP地址沖突設(shè)備時(shí)通時(shí)斷現(xiàn)場(chǎng)最典型的一課有一回客戶報(bào)障說(shuō)觸摸屏和PLC通訊經(jīng)常斷開(kāi)重啟一下又好過(guò)一陣又?jǐn)?。我過(guò)去一查網(wǎng)線沒(méi)問(wèn)題PLC也在正常運(yùn)行后來(lái)打開(kāi)觸摸屏的系統(tǒng)設(shè)置看了眼IP地址192.168.0.10再看PLC還是192.168.0.10。同一臺(tái)交換機(jī)上掛著兩個(gè)相同IP的設(shè)備不打架才怪。一個(gè)設(shè)備通了另一個(gè)設(shè)備就容易被踢下線看起來(lái)就是“隨機(jī)掉線”。這種問(wèn)題排查其實(shí)有固定套路把電腦接到同一臺(tái)交換機(jī)上用持續(xù)ping命令觀察然后一臺(tái)一臺(tái)拔設(shè)備拔到哪臺(tái)ping就穩(wěn)定了那臺(tái)就是沖突源。ping 192.168.0.10 -t為了不在現(xiàn)場(chǎng)重復(fù)踩這種坑我現(xiàn)在每個(gè)項(xiàng)目開(kāi)工前先做一張IP地址分配表包括設(shè)備名稱、IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、安裝位置。PLC、觸摸屏、變頻器、上位機(jī)、遠(yuǎn)程IO模塊全部登記清楚貼一張?jiān)陔姽耖T上。后來(lái)接手維護(hù)的人第一眼就知道哪臺(tái)設(shè)備是哪個(gè)地址不需要一個(gè)個(gè)登錄進(jìn)去翻。3.2 Modbus輪詢超時(shí)一個(gè)從站掉線整條總線陪葬串口通信里最常見(jiàn)的問(wèn)題不是收發(fā)不通而是“數(shù)據(jù)刷新突然變慢”?,F(xiàn)場(chǎng)某個(gè)從站設(shè)備壞了它不回復(fù)主站的請(qǐng)求但主站程序如果傻等它一段時(shí)間才超時(shí)整個(gè)輪詢周期就被拖住了。其他正常從站的數(shù)據(jù)等著轉(zhuǎn)發(fā)全部排隊(duì)觸摸屏上所有數(shù)據(jù)顯示都像卡了殼。這時(shí)候很多人的第一反應(yīng)是“是不是總線壞了”其實(shí)只要把壞從站的通信線斷開(kāi)其他數(shù)據(jù)立刻恢復(fù)流暢。針對(duì)這個(gè)問(wèn)題路由器、觸摸屏、上位機(jī)程序里都有超時(shí)參數(shù)和重試次數(shù)設(shè)置。正確做法是給每個(gè)從站單獨(dú)設(shè)置超時(shí)時(shí)間并且做“故障從站剔除”邏輯連續(xù)幾次無(wú)響應(yīng)就跳過(guò)它繼續(xù)輪詢后面的站同時(shí)報(bào)一個(gè)報(bào)警等它恢復(fù)后再重新納入輪詢。這樣單個(gè)設(shè)備故障不會(huì)殃及全車。新手調(diào)串口通信還有個(gè)更基礎(chǔ)的坑RS485的A、B兩根線接反。線接反了大多數(shù)從站是完全不通的但也有些設(shè)備會(huì)間歇性正常讓人誤以為是波特率或校驗(yàn)位問(wèn)題。先確認(rèn)A、B線序再查參數(shù)。3.3 三層倒序排查法從物理層開(kāi)始最后才碰協(xié)議前面說(shuō)了一堆“土問(wèn)題”我把自己常用的排查順序總結(jié)成一張表每次通信出問(wèn)題都按這個(gè)順序過(guò)一遍層級(jí)檢查項(xiàng)典型現(xiàn)象物理層網(wǎng)線、水晶頭、RS485 A/B接線、屏蔽層接地、線纜與動(dòng)力線間距完全不通、時(shí)通時(shí)斷、干擾誤碼配置層IP地址沖突、站號(hào)重復(fù)、波特率/數(shù)據(jù)位/校驗(yàn)位不一致單個(gè)站掉線、部分站時(shí)好時(shí)壞、數(shù)據(jù)亂碼協(xié)議層寄存器地址、數(shù)據(jù)類型、字節(jié)序、功能碼數(shù)據(jù)能通但數(shù)值明顯不對(duì)、讀寫不到目標(biāo)寄存器排查順序永遠(yuǎn)是從上往下物理層先排除再檢查配置最后才是抓包分析協(xié)議。有一次調(diào)試一個(gè)分布式IO從站現(xiàn)場(chǎng)工程師抓了一下午報(bào)文懷疑是協(xié)議版本問(wèn)題最后發(fā)現(xiàn)是網(wǎng)線水晶頭壓線的時(shí)候線序壓錯(cuò)了只要設(shè)備跑起來(lái)震動(dòng)一大就丟包。這個(gè)教訓(xùn)很值錢協(xié)議層的問(wèn)題通常穩(wěn)定且可復(fù)現(xiàn)物理層的問(wèn)題往往是“偶發(fā)”的。你看到故障一會(huì)兒有一會(huì)兒沒(méi)有先懷疑連接和干擾別急著跟協(xié)議較勁。4. 軸調(diào)試的三個(gè)關(guān)鍵參數(shù)回零、脈沖當(dāng)量、加減速少一個(gè)都不行PLC控制伺服或步進(jìn)電機(jī)入門看著不難給脈沖就能轉(zhuǎn)。但真正把軸調(diào)得穩(wěn)穩(wěn)當(dāng)當(dāng)回零、脈沖當(dāng)量、加減速時(shí)間這三個(gè)參數(shù)必須吃透。任何一個(gè)弄錯(cuò)設(shè)備要么走位不準(zhǔn)要么一開(kāi)機(jī)就撞機(jī)。4.1 脈沖當(dāng)量算錯(cuò)后面的精度都是心理安慰脈沖當(dāng)量的本質(zhì)是“一個(gè)脈沖對(duì)應(yīng)多少毫米或度的機(jī)械位移”。很多人覺(jué)得伺服驅(qū)動(dòng)器里設(shè)了電子齒輪比就完事了但PLC程序里也必須知道目標(biāo)位置對(duì)應(yīng)的脈沖數(shù)。舉個(gè)例子某臺(tái)設(shè)備由伺服電機(jī)直連絲桿絲桿導(dǎo)程10毫米伺服電機(jī)每轉(zhuǎn)需要10000個(gè)脈沖減速比1:1那么脈沖當(dāng)量就是10÷100000.001毫米/脈沖。你讓軸走到50毫米的位置PLC要輸出的就是50000個(gè)脈沖。如果在這里忘了算減速比比如減速比5:1實(shí)際計(jì)算就得把減速比乘進(jìn)去10÷(10000×5)0.0002毫米/脈沖再輸出同樣脈沖時(shí)機(jī)械位置就會(huì)差出好幾倍。這類錯(cuò)誤在設(shè)備調(diào)試時(shí)非常隱蔽因?yàn)檩S確實(shí)在動(dòng)只是走得遠(yuǎn)不對(duì)、近不對(duì)程序卻完全“正確”。我建議新人把脈沖當(dāng)量計(jì)算過(guò)程寫在程序注釋里包括導(dǎo)程、減速比、電機(jī)每轉(zhuǎn)脈沖數(shù)這樣以后回來(lái)看程序不用重新翻機(jī)械圖紙。調(diào)試時(shí)先用慢速、小距離試走再用千分表實(shí)際測(cè)量機(jī)械位移對(duì)比程序里的理論值。不要一上來(lái)就給大距離快速運(yùn)行不然算錯(cuò)了直接撞機(jī)。4.2 回零方式和零位信號(hào)位置誤差的源頭多半在這里設(shè)備的絕對(duì)位置從哪里來(lái)絕大多數(shù)情況下從回零開(kāi)始。如果用接近開(kāi)關(guān)或光電開(kāi)關(guān)做回零開(kāi)關(guān)開(kāi)關(guān)的安裝位置必須穩(wěn)固信號(hào)邊沿要干凈?;亓愠绦虿荒芤皇盏介_(kāi)關(guān)信號(hào)就急停因?yàn)闄C(jī)械慣性會(huì)讓軸沖出幾個(gè)毫米正確做法是先減速再低速爬行找開(kāi)關(guān)信號(hào)的穩(wěn)定沿如果伺服編碼器有Z相信號(hào)最好在Z相到來(lái)的那個(gè)位置作為最后零點(diǎn)這樣重復(fù)精度會(huì)高很多。回零方向也很容易踩坑。開(kāi)機(jī)回零時(shí)軸要先向開(kāi)關(guān)所在方向移動(dòng)如果程序里回零方向和設(shè)備實(shí)際方向相反軸就會(huì)朝限位那邊狂奔。正式設(shè)備上第一次回零我向來(lái)是把速度設(shè)成慢速手指放在急停上再按啟動(dòng)確認(rèn)方向?qū)α嗽儆谜K俣?。這不是膽小是保命?;亓阃瓿珊筮€要做一次軟限位校驗(yàn)確認(rèn)當(dāng)前位置沒(méi)有超過(guò)軟件允許范圍。4.3 加減速、軟限位和急停調(diào)機(jī)前必須先定下來(lái)加減速時(shí)間設(shè)置不合理步進(jìn)電機(jī)最容易丟步伺服電機(jī)最容易過(guò)沖報(bào)警。我之前調(diào)一臺(tái)轉(zhuǎn)盤設(shè)備加速時(shí)間設(shè)得太短每次啟動(dòng)都能聽(tīng)到明顯的機(jī)械撞擊聲轉(zhuǎn)盤到位還會(huì)彈一下。后來(lái)把加速時(shí)間從50毫秒放寬到300毫秒再配合S形加減速曲線設(shè)備立刻安靜了定位精度反而更好。這個(gè)經(jīng)驗(yàn)是加速時(shí)間不是越小越好縮小之前先問(wèn)自己機(jī)械剛性扛不扛得住。軟件限位是軸控制里絕對(duì)不能省的一層保護(hù)。PLC程序里寫清楚兩個(gè)軟限位值當(dāng)軸位置接近邊界時(shí)先減速報(bào)警越過(guò)邊界直接禁止運(yùn)動(dòng)輸出。軟限位千萬(wàn)不能只依賴驅(qū)動(dòng)器那邊萬(wàn)一上位機(jī)發(fā)了一個(gè)大位置指令驅(qū)動(dòng)器和PLC的限位判斷狀態(tài)不一致就可能出事。我見(jiàn)過(guò)一個(gè)項(xiàng)目PLC程序里完全沒(méi)做軟限位全靠驅(qū)動(dòng)器報(bào)警停住后來(lái)驅(qū)動(dòng)器參數(shù)被誤改了一次軸直接頂?shù)綑C(jī)械硬限位。從那以后我的軸控制程序里永遠(yuǎn)把軟限位放在最前面哪怕報(bào)警提示難看也絕不少寫。5. 聯(lián)鎖與安全設(shè)計(jì)設(shè)備可以慢但不能出事程序?qū)懙迷偾擅畎踩O(shè)計(jì)不到位一切等于零。尤其是正反轉(zhuǎn)、急停、運(yùn)行狀態(tài)下改程序這三件事入行頭三年最容易在這上面付出真金白銀的代價(jià)。5.1 正反轉(zhuǎn)互鎖程序里鎖了硬件回路還要鎖控制電機(jī)正反轉(zhuǎn)時(shí)PLC里的兩個(gè)輸出點(diǎn)必須做互鎖同一個(gè)時(shí)刻只能有一個(gè)輸出為ON這是程序?qū)用娴幕疽?。但程序互鎖不是全部。如果正轉(zhuǎn)接觸器和反轉(zhuǎn)接觸器都吸合了哪怕只是一瞬間三相電源就會(huì)短路接觸器的主觸點(diǎn)可以燒得粘在一起。硬件層面的做法是正轉(zhuǎn)接觸器的常閉觸點(diǎn)串進(jìn)反轉(zhuǎn)接觸器的線圈回路反轉(zhuǎn)接觸器的常閉觸點(diǎn)串進(jìn)正轉(zhuǎn)接觸器的線圈回路。這樣即使PLC程序出錯(cuò)、輸出點(diǎn)卡死硬件機(jī)械互鎖也能切斷另一路控制回路。做這類設(shè)備時(shí)一定要把“機(jī)械互鎖”當(dāng)作保底措施來(lái)看待。PLC輸出點(diǎn)有擊穿或者宕機(jī)的可能程序邏輯再嚴(yán)謹(jǐn)也只是軟件層面的概率事件。硬件互鎖多花幾根線但能把“燒接觸器”變成“不可能發(fā)生的事”。5.2 急停不能只活在PLC程序里要能物理切斷控制回路很多新人處理急停的方式是急停按鈕接到PLC輸入點(diǎn)程序里檢測(cè)到急停后就停掉運(yùn)動(dòng)輸出。這種做法問(wèn)題很大。PLC本身可能死機(jī)程序可能跑飛輸出模塊可能故障這些情況下光靠程序來(lái)響應(yīng)急停等于紙上談兵。真正的急?;芈窇?yīng)該做到急停按鈕直接切斷控制回路里關(guān)鍵接觸器和繼電器線圈的供電而不是等PLC來(lái)“減速停車”。急停按鈕通常帶機(jī)械鎖存功能按下去后不會(huì)自己彈回來(lái)必須旋轉(zhuǎn)或拉拔復(fù)位。急?;芈反釉谒形kU(xiǎn)運(yùn)動(dòng)的主接觸器線圈前方一旦急停觸發(fā)主接觸器直接掉電電機(jī)失去動(dòng)力。同時(shí)急停輸入點(diǎn)也接進(jìn)PLC讓程序感知急停狀態(tài)做后續(xù)的狀態(tài)復(fù)位和報(bào)警。關(guān)鍵是程序里要處理“急停復(fù)位后設(shè)備不能自動(dòng)重新啟動(dòng)”的邏輯一般需要操作員按一下復(fù)位按鈕再手動(dòng)啟動(dòng)。否則急停一復(fù)位電機(jī)瞬間又跑起來(lái)比急停本身還危險(xiǎn)。另外還有安全繼電器的問(wèn)題。如果設(shè)備涉及安全等級(jí)認(rèn)證急停、安全門這些都必須過(guò)安全繼電器PLC程序只能做邏輯配合不能替代安全回路。這個(gè)錢花不花我建議看設(shè)備有沒(méi)有人員接觸風(fēng)險(xiǎn)。裁切、沖壓、搬運(yùn)這類有擠壓風(fēng)險(xiǎn)的設(shè)備安全回路絕對(duì)不能省。5.3 現(xiàn)場(chǎng)改程序的三個(gè)鐵律備份、驗(yàn)證、記錄現(xiàn)場(chǎng)調(diào)試時(shí)改程序是常態(tài)但怎么改、改完怎么驗(yàn)證很多新人都比較隨便。最危險(xiǎn)的改法是在設(shè)備運(yùn)行狀態(tài)下直接修改邏輯甚至強(qiáng)制輸出。我理解有時(shí)候是客戶催得急但我見(jiàn)過(guò)太多次因?yàn)榕R時(shí)改一條指令設(shè)備突然動(dòng)作把模具打壞的事故。改程序前先按一下急停把設(shè)備切到手動(dòng)確認(rèn)所有運(yùn)動(dòng)軸處于安全位置然后再下載程序。下載完成后先空載模擬一遍確認(rèn)動(dòng)作順序符合預(yù)期再上工件試運(yùn)行。備份同樣不能省。每次修改前把當(dāng)前程序另存一份文件名帶上日期和修改內(nèi)容。調(diào)試現(xiàn)場(chǎng)環(huán)境亂一晚上可能反復(fù)改十幾次沒(méi)有版本管理手一滑就把改好的程序覆蓋了。我見(jiàn)過(guò)同事在凌晨改完程序忘了保存第二天設(shè)備上電還是老版本整個(gè)早上白白浪費(fèi)。養(yǎng)成這個(gè)習(xí)慣只需要五分鐘但它能避免的麻煩遠(yuǎn)超想象。記錄也重要。改了什么邏輯、為什么改、改了之后驗(yàn)證過(guò)什么動(dòng)作寫進(jìn)項(xiàng)目變更記錄表。短期看好像是增加工作量長(zhǎng)期看這是項(xiàng)目交接、售后維護(hù)、故障回溯最值錢的資料。懸而未決的問(wèn)題翻一翻變更記錄很多都能找到線索。這批內(nèi)容先寫到這剩下那幾十條里還有關(guān)于PLC選型、I/O點(diǎn)表規(guī)劃、HMI變量分組、程序注釋規(guī)范、故障診斷緩沖區(qū)怎么讀、在線監(jiān)視和強(qiáng)制輸出的正確姿勢(shì)這些我后續(xù)會(huì)按主題一批批放出來(lái)。說(shuō)句實(shí)在話入行前三年誰(shuí)沒(méi)在半夜被電話叫醒過(guò)。我直到現(xiàn)在還會(huì)在包里揣著一條網(wǎng)線、一個(gè)U盤和一個(gè)寫滿IP分配的筆記本。技術(shù)是一回事習(xí)慣是另一回事。這90條里一大半并不是什么“大招”而是把每個(gè)普通環(huán)節(jié)做對(duì)。希望今天的這些能幫你少熬幾個(gè)通宵。