器人PNS程序號(hào)選擇配置指南:從PLC通信到調(diào)試實(shí)戰(zhàn))
簡介這是面向FANUC機(jī)器人調(diào)試與運(yùn)維人員的PNS自動(dòng)運(yùn)行設(shè)置指導(dǎo)手冊(cè)專門解決多任務(wù)生產(chǎn)線中程序號(hào)選擇與自動(dòng)調(diào)用的配置難題。手冊(cè)以步驟化方式完整梳理PNS功能原理、系統(tǒng)登錄、機(jī)器人程序創(chuàng)建、3100等PNS參數(shù)設(shè)定、外部信號(hào)觸發(fā)啟動(dòng)等核心環(huán)節(jié)強(qiáng)調(diào)每個(gè)程序號(hào)須對(duì)應(yīng)有效且完整的作業(yè)程序并避免空號(hào)或重復(fù)號(hào)。結(jié)合多品種小批量生產(chǎn)、流水線作業(yè)、物料搬運(yùn)等典型場(chǎng)景說明如何通過預(yù)設(shè)程序號(hào)實(shí)現(xiàn)產(chǎn)品切換與動(dòng)作銜接從而減少人工干預(yù)、提升產(chǎn)線靈活性。資源為單個(gè)docx文檔整體約1.61MB除操作流程外還補(bǔ)充了安全區(qū)域確認(rèn)、系統(tǒng)狀態(tài)監(jiān)控、錯(cuò)誤代碼定位、故障排查步驟及人員培訓(xùn)維護(hù)建議便于現(xiàn)場(chǎng)按章查閱。目前已有977人學(xué)習(xí)下載適合電氣工程師、自動(dòng)化項(xiàng)目人員及機(jī)器人維護(hù)工程師作為PNS配置與排錯(cuò)的實(shí)操參考。 做機(jī)器人集成這幾年最常被現(xiàn)場(chǎng)問到的問題不是“怎么讓機(jī)器人動(dòng)起來”而是“怎么讓機(jī)器人自己動(dòng)起來”。FANUC機(jī)器人自動(dòng)運(yùn)行的核心環(huán)節(jié)之一就是PNSProgram Number Select程序號(hào)選擇模式——PLC把要運(yùn)行的程序號(hào)發(fā)給機(jī)器人機(jī)器人自動(dòng)執(zhí)行對(duì)應(yīng)的程序。這個(gè)功能在R-30iB、R-30iB Mate控制器上非常常見網(wǎng)上資料不少但大多只講參數(shù)開關(guān)不講完整配置思路和現(xiàn)場(chǎng)坑。我這次把一套可落地的PNS設(shè)置流程整理出來包括硬件接線、信號(hào)映射、系統(tǒng)參數(shù)、程序調(diào)度和安全時(shí)序適合正在做自動(dòng)化集成的電氣工程師、調(diào)試工程師參考也適合想遠(yuǎn)程啟動(dòng)PNS的新手按圖索驥。1. 先搞清楚PNS是什么別一上來就開配置頁P(yáng)NS的全稱是Program Number Select翻譯過來就是“程序號(hào)選擇”。在FANUC的自動(dòng)運(yùn)行生態(tài)里它不是單純指某一個(gè)按鈕或信號(hào)而是一整套聯(lián)動(dòng)機(jī)制外部控制器一般是PLC通過現(xiàn)場(chǎng)總線或硬接線把目標(biāo)程序號(hào)送到機(jī)器人控制器機(jī)器人控制器確認(rèn)號(hào)碼有效后把對(duì)應(yīng)的程序設(shè)為“待執(zhí)行狀態(tài)”然后再接收啟動(dòng)信號(hào)程序開始運(yùn)行。整個(gè)過程可以理解為PLC是“調(diào)度員”機(jī)器人是“執(zhí)行員”PNS是兩者之間的“任務(wù)單傳遞協(xié)議”。1.1 PNS和RSR兩種遠(yuǎn)程啟動(dòng)方式的差異很多人會(huì)把PNS和RSR搞混。RSRRobot Service Request遠(yuǎn)程啟動(dòng)請(qǐng)求解決的是“遠(yuǎn)程啟動(dòng)/停止某一個(gè)固定程序”的問題而PNS解決的是“遠(yuǎn)程選擇并啟動(dòng)任意一個(gè)程序”的問題。從名字也能看出來RSR的核心在“Request”PNS的核心在“Number Select”。我自己的選型經(jīng)驗(yàn)是如果產(chǎn)線只需要遠(yuǎn)程啟停同一個(gè)程序用RSR更省事如果一條線要切換多種工件、多種節(jié)拍流程那PNS才是對(duì)的。比如一個(gè)焊接工作站要兼容三款產(chǎn)品每個(gè)產(chǎn)品有不同的焊接路徑和參數(shù)那PLC就必須根據(jù)不同產(chǎn)品型號(hào)下發(fā)對(duì)應(yīng)程序號(hào)這種情況PNS幾乎是標(biāo)準(zhǔn)答案。選錯(cuò)模式后續(xù)改起來很麻煩PNS的配置量比RSR大不少但靈活性和擴(kuò)展性也好得多。1.2 PNS在自動(dòng)化產(chǎn)線中的典型位置一條典型的PNS自動(dòng)化產(chǎn)線里機(jī)器人不是“孤島”而是整個(gè)控制環(huán)路上的一個(gè)執(zhí)行節(jié)點(diǎn)。上層PLC負(fù)責(zé)總調(diào)度比如讀取傳感器、識(shí)別產(chǎn)品型號(hào)、判斷工位狀態(tài)當(dāng)PLC決定“該讓機(jī)器人干活了”就會(huì)把程序號(hào)通過總線發(fā)給機(jī)器人同時(shí)給一個(gè)啟動(dòng)信號(hào)機(jī)器人執(zhí)行完程序后通過UO信號(hào)回傳“完成”狀態(tài)PLC收到后再放行下一工位。這套環(huán)節(jié)看似簡單但里面有個(gè)關(guān)鍵點(diǎn)PNS通信節(jié)點(diǎn)在機(jī)器人控制柜內(nèi)部它對(duì)接的不是某個(gè)用戶程序而是FANUC控制器底層的程序選擇機(jī)制。如果你不了解這條鏈路現(xiàn)場(chǎng)碰到“信號(hào)通了但機(jī)器人不干活”就會(huì)一頭霧水。2. 開工前先盤硬件通信模塊、信號(hào)規(guī)劃與接線2.1 確認(rèn)控制器型號(hào)和通信協(xié)議PNS配置的第一步不是碰示教器而是先把硬件盤清楚。FANUC目前在產(chǎn)線上常見的控制器有R-30iB、R-30iB Mate老一點(diǎn)的R-J3、R-J31iB也能支持PNS但菜單和參數(shù)叫法略有差異。本文以R-30iB/Mate為例新老機(jī)型在思路上完全一致。通信協(xié)議的選擇則取決于你這條線用的什么PLC。FANUC支持DeviceNet、Profibus-DP、EtherNet/IP、CC-Link等主流現(xiàn)場(chǎng)總線控制柜里需要安裝對(duì)應(yīng)的通信從站模塊。如果現(xiàn)場(chǎng)沒有總線系統(tǒng)也可以直接用控制器的DI/DO硬接線但程序號(hào)位數(shù)一多布線量和點(diǎn)位開銷會(huì)直線上升。我建議能用總線就用總線后面擴(kuò)容、排查都方便。注意選通信模塊時(shí)不要只看型號(hào)還要確認(rèn)模塊的從站地址、波特率、數(shù)據(jù)長度這幾個(gè)參數(shù)。很多“信號(hào)沒反應(yīng)”的問題追根溯源都是PLC和機(jī)器人兩側(cè)的通信參數(shù)沒對(duì)齊。2.2 UI/UO信號(hào)怎么規(guī)劃才不會(huì)亂在FANUC的體系里UIUniversal Input是“來自PLC的指令”UOUniversal Output是“回給PLC的狀態(tài)”。PNS模式下程序號(hào)、啟動(dòng)、暫停、復(fù)位這些信號(hào)都通過UI進(jìn)入機(jī)器人機(jī)器人的運(yùn)行中、完成、故障、準(zhǔn)備就緒等狀態(tài)則通過UO反饋給PLC。動(dòng)手接線前我強(qiáng)烈建議先在電腦上做一張信號(hào)規(guī)劃表把每個(gè)UI/UO的含義、映射的總線地址、正常狀態(tài)值全部列出來。比如“UI[1]用于啟動(dòng)”“UO[3]用于程序完成反饋”“UO[5]用于急停狀態(tài)”。這張表既是你自己的調(diào)試依據(jù)也是日后甲方設(shè)備維護(hù)的救命文檔。信號(hào)方向功能類型場(chǎng)景說明UI輸入程序號(hào)選擇PLC將目標(biāo)程序號(hào)編碼后送入U(xiǎn)I輸入啟動(dòng)/暫停/復(fù)位控制機(jī)器人運(yùn)行狀態(tài)切換UO輸出運(yùn)行中/完成/故障PLC據(jù)此決定下一步動(dòng)作UO輸出當(dāng)前程序號(hào)回傳用于雙向確認(rèn)避免選錯(cuò)程序2.3 接線防坑三件事一是屏蔽層要單端接地不要兩端都接避免形成地環(huán)路二是信號(hào)線盡量遠(yuǎn)離動(dòng)力線纜尤其不要和變頻器輸出線走同一個(gè)線槽三是24V電源不要圖省事直接從機(jī)器人柜里亂拉先確認(rèn)模塊供電容量再?zèng)Q定是柜內(nèi)供電還是外部獨(dú)立電源。另外R-30iB的急?;芈肥请p通道設(shè)計(jì)接線時(shí)一定要保證所有急停觸點(diǎn)正常閉合?,F(xiàn)場(chǎng)經(jīng)常遇到“明明沒按急停但機(jī)器人報(bào)IMSTP輸入”的報(bào)警其實(shí)就是急停回路中間某個(gè)觸點(diǎn)松動(dòng)或者線斷了。這塊問題我后面第5章還會(huì)細(xì)說。3. R-30iB/Mate控制器PNS配置全流程3.1 打開系統(tǒng)配置里的PNS總開關(guān)硬件和信號(hào)規(guī)劃做完才輪到碰示教器。PNS配置的第一道開關(guān)藏在系統(tǒng)配置里按MENU進(jìn)入菜單選擇SYSTEM再進(jìn)Config配置頁找到Program Number Select這項(xiàng)把默認(rèn)的DISABLE改成ENABLE。這一步有幾個(gè)容易踩的坑一是很多控制器的Config頁面需要專家模式或管理員權(quán)限才能看到普通操作員賬戶進(jìn)去根本找不到這個(gè)選項(xiàng)二是改完這個(gè)參數(shù)后控制器會(huì)提示需要重啟不重啟不生效這是最常見的“改了跟沒改一樣”的原因三是改系統(tǒng)參數(shù)前最好先導(dǎo)出一份完整備份萬一改出一個(gè)奇怪的行為也好恢復(fù)。提示在配置頁里別只盯著Program Number Select這一項(xiàng)同一頁還有幾個(gè)和程序選擇機(jī)制相關(guān)的選項(xiàng)。如果項(xiàng)目里用到了外部程序選擇最好把這幾個(gè)選項(xiàng)一起看避免只改一處導(dǎo)致其他地方打架。3.2 UI/UO信號(hào)映射到現(xiàn)場(chǎng)總線PNS總開關(guān)打開并重啟后第二步是把UI/UO信號(hào)映射到具體的總線地址。操作路徑是MENU、I/O找到你安裝的通信模塊DeviceNet、Profibus等在I/O分配頁面里把UI[1]到UI[8]、UO[1]到UO[8]對(duì)應(yīng)到通信模塊的DI/DO地址。這一步的本質(zhì)是告訴FANUC控制器“PLC發(fā)過來的這個(gè)位代表的是UI哪個(gè)信號(hào)”。很多新手會(huì)問為什么不能讓PLC直接發(fā)一個(gè)數(shù)字到機(jī)器人內(nèi)存因?yàn)镕ANUC的PNS機(jī)制是靠這些UI/UO點(diǎn)來工作的系統(tǒng)不會(huì)主動(dòng)去解析某個(gè)寄存器里的數(shù)字除非你通過宏程序把外部數(shù)據(jù)讀進(jìn)來再轉(zhuǎn)換成程序號(hào)。所以UI/UO映射是PNS能跑起來的基礎(chǔ)。調(diào)試技巧第一次接線時(shí)先別接PLC直接在示教器的I/O監(jiān)控畫面里強(qiáng)制置位某個(gè)UI信號(hào)看機(jī)器人有沒有反應(yīng)。這樣能把問題分成兩段排查——先確認(rèn)機(jī)器人側(cè)信號(hào)鏈路通不通再接上PLC聯(lián)調(diào)。3.3 程序號(hào)與程序的對(duì)應(yīng)規(guī)則信號(hào)鏈路通了以后接下來要想清楚“程序號(hào)N到底對(duì)應(yīng)哪個(gè)程序”。這里有兩種常見實(shí)現(xiàn)方式我分別說優(yōu)缺點(diǎn)。第一種是依賴FANUC內(nèi)置的PNS機(jī)制讓控制器根據(jù)PLC發(fā)來的程序號(hào)直接去選對(duì)應(yīng)編號(hào)的程序。這種方式配置簡單如果程序名和編號(hào)能嚴(yán)格對(duì)上比如PNS號(hào)1對(duì)應(yīng)程序PROG_00012對(duì)應(yīng)PROG_0002直接就能用。但缺點(diǎn)是程序名一旦帶產(chǎn)品型號(hào)編號(hào)規(guī)則很容易亂排查時(shí)得拿著表去對(duì)特別費(fèi)勁。第二種是自建調(diào)度程序?qū)懸粋€(gè)主程序作為“調(diào)度入口”PNS號(hào)先落到某個(gè)寄存器或系統(tǒng)變量里主程序用SELECT語句根據(jù)號(hào)碼跳轉(zhuǎn)到對(duì)應(yīng)的子程序。我在現(xiàn)場(chǎng)更推薦這種方式因?yàn)檫壿嬐耆梢娫鰟h程序時(shí)只需要改主程序的跳轉(zhuǎn)表不用動(dòng)系統(tǒng)配置。! 主程序MAIN示例 R[1]$SBR[1].$PARAM[47] ! 讀取PNS程序號(hào)緩存 SELECT R[1] CASE 1 CALL PROG_PRODUCT_A ! 產(chǎn)品A流程 CASE 2 CALL PROG_PRODUCT_B ! 產(chǎn)品B流程 CASE 3 CALL PROG_PRODUCT_C ! 產(chǎn)品C流程 END SELECT注意上面這段只是示意。實(shí)際項(xiàng)目中PNS號(hào)來源可能是寄存器也可能是專用系統(tǒng)變量讀取方式要根據(jù)你的控制器版本和信號(hào)映射方式來定。關(guān)鍵思路是“號(hào)碼先落地主程序統(tǒng)一調(diào)度”。3.4 系統(tǒng)變量$SBR[n].$PARAM[47]與宏調(diào)度搜索技術(shù)社區(qū)經(jīng)常能看到有人問$SBR[n].$PARAM[47]這個(gè)變量怎么用。這其實(shí)是用宏/TP程序做PNS調(diào)度時(shí)常用到的一組系統(tǒng)變量本質(zhì)上是子程序參數(shù)區(qū)里的一個(gè)存儲(chǔ)位。常見玩法是PLC通過總線把程序號(hào)寫進(jìn)這個(gè)變量機(jī)器人主程序讀取出來做分支跳轉(zhuǎn)相當(dāng)于把FANUC內(nèi)置的PNS選擇機(jī)制繞過去自己做一套“軟PNS”調(diào)度。但用這套方案要特別注意編碼一致性。PLC發(fā)過來的程序號(hào)到底是二進(jìn)制還是BCD碼兩邊必須完全對(duì)齊否則你在示教器上看到的值和PLC發(fā)出的值會(huì)對(duì)不上。我們?cè)诂F(xiàn)場(chǎng)最快的一次排查程序號(hào)錯(cuò)位問題就是因?yàn)镻LC那邊默認(rèn)發(fā)了BCD機(jī)器人這邊按二進(jìn)制解析結(jié)果PLC想選3號(hào)程序機(jī)器人一直準(zhǔn)備跑7號(hào)程序。打印出原始十六進(jìn)制數(shù)據(jù)一對(duì)比問題立刻暴露。4. 自動(dòng)運(yùn)行的啟動(dòng)時(shí)序、安全策略與多程序調(diào)度4.1 一次完整的PNS啟動(dòng)時(shí)序PNS配置完成后真正考驗(yàn)人的是啟動(dòng)時(shí)序。一次規(guī)范完整的PNS自動(dòng)運(yùn)行應(yīng)該這樣走PLC把目標(biāo)程序號(hào)穩(wěn)定輸出到UI信號(hào)區(qū)并保持至少一個(gè)掃描周期。機(jī)器人控制器鎖存程序號(hào)確認(rèn)程序存在且允許運(yùn)行。PLC再發(fā)送啟動(dòng)信號(hào)START。機(jī)器人閉合伺服、開始執(zhí)行對(duì)應(yīng)程序。程序運(yùn)行結(jié)束機(jī)器人通過UO輸出“完成”信號(hào)。PLC收到完成信號(hào)后再?zèng)Q定是復(fù)位、切換到下一個(gè)程序還是繼續(xù)等待。這里最要緊的一個(gè)原則是先給程序號(hào)后給啟動(dòng)信號(hào)。如果兩個(gè)信號(hào)同時(shí)變化機(jī)器人可能在啟動(dòng)瞬間讀到上一個(gè)程序號(hào)輕則跑錯(cuò)程序重則造成安全事故。我在現(xiàn)場(chǎng)見過不止一次“并行下發(fā)”導(dǎo)致的詭異問題把啟動(dòng)時(shí)序錯(cuò)開后故障直接消失。4.2 遠(yuǎn)程模式下的安全回路配置PNS模式一旦啟用機(jī)器人就能脫離示教器被PLC遠(yuǎn)程啟動(dòng)這時(shí)候的安全策略必須比手動(dòng)示教模式更嚴(yán)格。急停雙回路、安全門、光幕這些外圍保護(hù)設(shè)施一定要接入安全繼電器或安全PLC不要圖省事只接普通繼電器。另外我建議在遠(yuǎn)程自動(dòng)運(yùn)行模式里增加一個(gè)速度倍率限制。調(diào)試期把程序運(yùn)行速度限制在比較保守的值跑順了再放開。再一個(gè)容易被忽略的點(diǎn)任何一次修改過PNS相關(guān)參數(shù)或程序后第一次合伺服、第一次自動(dòng)運(yùn)行都一定要有人站在急停按鈕旁邊盯著別一上來就全自動(dòng)跑。4.3 多程序調(diào)度的程序結(jié)構(gòu)建議程序多的時(shí)候最怕的是“改了一個(gè)程序帶到另一個(gè)程序”。我習(xí)慣把程序分成三層主調(diào)度程序、產(chǎn)品子程序、公共工具程序。主調(diào)度程序只做邏輯跳轉(zhuǎn)不寫具體動(dòng)作產(chǎn)品子程序只放該產(chǎn)品專屬的路徑和工藝參數(shù)公共工具程序統(tǒng)一處理報(bào)警、日志、信號(hào)復(fù)位這些通用功能。這樣分下來新增一個(gè)產(chǎn)品時(shí)只需要復(fù)制一個(gè)子程序模板改參數(shù)再在主調(diào)度里加一行CALL。除此之外我還會(huì)在程序開頭加一段“自檢邏輯”比如校驗(yàn)當(dāng)前PNS寄存器里的值是否等于PLC回傳的當(dāng)前程序號(hào)雙向確認(rèn)無誤后才開始走動(dòng)作。5. 高頻問題與排查經(jīng)驗(yàn)5.1 故障速查表PNS調(diào)試過程里遇到過的坑我整理成了一張速查表。絕大多數(shù)現(xiàn)場(chǎng)問題都能在下面這幾類里找到影子現(xiàn)象可能原因排查建議機(jī)器人不進(jìn)自動(dòng)模式PNS功能未使能或參數(shù)沒生效檢查Config中Program Number Select改完后必須重啟PLC發(fā)了程序號(hào)但機(jī)器人沒反應(yīng)信號(hào)映射沒對(duì)齊或總線通信斷開在示教器I/O監(jiān)控頁面看對(duì)應(yīng)DI/UI狀態(tài)是否變化程序號(hào)總是錯(cuò)位編碼方式不一致二進(jìn)制/BCD或位序反了兩端確認(rèn)編碼格式打印原始十六進(jìn)制值對(duì)比程序啟動(dòng)后瞬間報(bào)警急停類急停回路未閉合、安全輸入斷線檢查急停雙通道和端子接線排除虛接遠(yuǎn)程啟動(dòng)后運(yùn)行速度不對(duì)倍率信號(hào)被外部拉低或速度限制參數(shù)異常檢查UI中倍率選擇信號(hào)確認(rèn)自動(dòng)速度上限5.2 程序號(hào)錯(cuò)位這類“慢性病”怎么治程序號(hào)錯(cuò)位是最難復(fù)現(xiàn)、也最容易扯皮的問題。總結(jié)下來有三個(gè)高頻來源第一編碼格式不一致二進(jìn)制/BCD各說各話第二PLC掃描周期短于機(jī)器人信號(hào)鎖存周期號(hào)碼還沒穩(wěn)定就被刷新掉了所以啟動(dòng)信號(hào)必須晚于程序號(hào)至少一個(gè)周期第三寄存器被其他邏輯意外改寫這種情況多發(fā)生在宏程序里排查時(shí)先看當(dāng)前值再查是哪個(gè)任務(wù)在往里面寫。我處理這類問題的固定套路是先在PLC側(cè)把所有程序號(hào)做成一張常量表不允許手寫數(shù)字然后在機(jī)器人側(cè)加一段程序開始時(shí)的號(hào)碼校驗(yàn)邏輯最后把兩邊的原始值都打印出來對(duì)比。三層下來絕大多數(shù)錯(cuò)位問題都能定位到具體環(huán)節(jié)。5.3 幾條調(diào)試階段的心得第一先用硬線短接模擬UI信號(hào)把機(jī)器人側(cè)跑通再接PLC聯(lián)調(diào)。這樣做的好處是問題邊界清晰不用一上來就面對(duì)兩邊都是黑的局面。第二改PNS相關(guān)參數(shù)前一定用U盤做鏡像備份順帶把系統(tǒng)變量也導(dǎo)出來。第三驗(yàn)收時(shí)要讓PLC連續(xù)切換10次以上程序號(hào)反復(fù)驗(yàn)證鎖存穩(wěn)定性不能只跑一兩個(gè)循環(huán)就說“沒問題了”。另外我強(qiáng)烈建議在程序里用宏統(tǒng)一中轉(zhuǎn)外部信號(hào)不要直接在業(yè)務(wù)程序里判斷物理DI點(diǎn)。這個(gè)習(xí)慣能讓你在后期改I/O映射時(shí)只改一處而不是翻遍所有程序。我在現(xiàn)場(chǎng)的習(xí)慣是每臺(tái)機(jī)器人交付前都在程序里放一組“運(yùn)行自注釋”宏把PNS號(hào)、啟動(dòng)時(shí)間、完成時(shí)間寫到寄存器并輸出給上位機(jī)。這樣后面不管是設(shè)備報(bào)警還是產(chǎn)量對(duì)不上翻數(shù)據(jù)就能定位到是調(diào)度問題還是機(jī)器人問題。PNS設(shè)置本身不難真正體現(xiàn)水平的是配置思路和調(diào)試細(xì)節(jié)希望這篇整理能幫你少走幾趟現(xiàn)場(chǎng)。本文還有配套的精品資源點(diǎn)擊獲取