指南)
1. 項目緣起與整體方案設計1.1 為什么選H5U加EtherCAT這套組合匯川H5U這臺PLC在小型自動化設備里出鏡率很高本體自帶EtherCAT主站口不用額外插模塊就能掛總線伺服這一點對成本敏感的產線改造項目來說非常關鍵。我最早接觸H5U是在一條包裝線上原來用的是脈沖控制四軸聯(lián)動的時候接線一大堆調試時稍微有點干擾就丟脈沖后來換成EtherCAT總線方案一根網線串起四臺伺服接線量直接砍掉大半定位精度也穩(wěn)了。EtherCAT本身是實時工業(yè)以太網協(xié)議采用主從架構主站發(fā)送數據幀經過每個從站時從站芯片在數據幀“路過”的瞬間就把自己的數據讀寫完成不需要整幀接收再處理所以循環(huán)周期可以做到很短。H5U作為主站典型循環(huán)周期能跑到1ms甚至更低對于大多數點位控制和速度控制場景完全夠用。AutoShop是匯川自家的編程軟件把EtherCAT組態(tài)、軸配置、功能塊調用都集成在一個界面里不用在多個工具之間來回切換這是它比一些通用方案省心的地方。這套方案適合誰如果你手上有H5U要控制匯川SV660系列或者其他支持EtherCAT的伺服做位置控制或者速度控制那這篇內容基本可以照著走。就算你用的是別的品牌伺服只要支持標準EtherCAT協(xié)議組態(tài)思路也是一樣的區(qū)別主要在PDO映射和對象字典的細節(jié)上。1.2 整體控制架構拆解整個系統(tǒng)的數據流是這樣的AutoShop里配置好EtherCAT網絡掃描到從站伺服然后建立軸對象軸對象通過PDO過程數據對象和伺服驅動器交換數據。主站每個循環(huán)周期發(fā)一次過程數據里面包含控制字、目標位置、目標速度這些從站返回狀態(tài)字、實際位置、實際速度這些。程序里調用運動控制功能塊功能塊把指令翻譯成PDO數據主站硬件負責發(fā)出去。位置控制和速度控制的區(qū)別在于工作模式。位置模式走的是CSP循環(huán)同步位置或者PP輪廓位置模式速度模式走的是CSV循環(huán)同步速度或者PV輪廓速度模式。H5U的軸配置里可以直接選模式選完之后PDO映射會自動調整不需要手動去改對象字典這是AutoShop比較人性化的一點。提示EtherCAT組態(tài)之前先把伺服的站號設好。匯川伺服默認站號是1如果掛多臺每臺都要改站號不能重復。站號一般在伺服面板里改改完斷電重啟才生效。2. 硬件接線與軟件環(huán)境準備2.1 硬件清單與接線要點先列一下需要的東西。PLC用H5U任意型號只要帶EtherCAT口就行一般本體上標著“EtherCAT”的那個網口就是。伺服方面匯川SV660N或者SV670N都支持EtherCAT選型的時候注意看型號里有沒有“N”后綴有N的才是總線型。電機按實際負載選選型手冊里根據扭矩和轉速查就行這里不展開。接線就簡單了H5U的EtherCAT口接到第一臺伺服的IN口第一臺伺服的OUT口接到第二臺伺服的IN口依次串下去。最后一臺的OUT口空著或者接終端電阻。網線用標準超五類屏蔽網線長度別超過100米實際項目里一般幾米到十幾米完全沒問題。注意EtherCAT網線一定要用屏蔽線屏蔽層要可靠接地。我遇到過因為網線沒屏蔽導致通訊偶發(fā)丟幀的情況換了屏蔽線立馬就好了。另外伺服的動力線和編碼器線盡量遠離通訊線走線槽里分開走減少干擾。電源方面H5U用24V直流供電伺服主回路根據電機功率接三相或單相交流控制回路也是24V。上電順序建議先給伺服控制電再給PLC電最后給伺服主電這樣避免上電瞬間通訊異常。2.2 AutoShop軟件安裝與工程創(chuàng)建AutoShop在匯川官網可以下載安裝過程沒什么坑一路下一步就行。裝完之后打開新建工程選擇對應的PLC型號H5U系列選“H5U”就行。工程建好之后左邊項目樹里能看到“EtherCAT配置”這一項雙擊進去就是總線組態(tài)界面。軟件版本建議用比較新的老版本可能不支持某些伺服型號的XML文件。匯川伺服的EtherCAT XML文件ESI文件在官網下載或者隨伺服附帶的光盤里都有AutoShop組態(tài)的時候需要加載這個文件才能識別到伺服。如果掃描不到從站八成是ESI文件沒裝或者版本不對。2.3 EtherCAT從站掃描與組態(tài)在EtherCAT配置界面里點“掃描”按鈕軟件會自動掃描總線上掛的從站。掃描之前確保PLC和伺服都上電網線接好。掃描到之后從站會出現(xiàn)在列表里顯示站號、名稱、版本這些信息。掃描到從站之后需要把從站添加到組態(tài)里。選中從站點“添加”然后配置PDO映射。AutoShop一般會自動加載默認的PDO映射對于位置和速度控制默認映射通常就夠用了。如果不夠用可以手動添加對象比如要讀伺服的實際扭矩就得把扭矩對象加到輸入PDO里。配置項位置模式速度模式工作模式CSP或PPCSV或PV控制字0x60400x6040狀態(tài)字0x60410x6041目標位置0x607A不適用目標速度0x60FF0x60FF實際位置0x60640x6064實際速度0x606C0x606C這張表是核心PDO映射就是圍繞這些對象來的。位置模式下重點看0x607A和0x6064速度模式下重點看0x60FF和0x606C。控制字和狀態(tài)字兩種模式都要用控制字用來使能、啟動、停止狀態(tài)字用來讀伺服當前狀態(tài)。3. 軸配置與功能塊編程實操3.1 建立軸對象與參數設置組態(tài)完從站之后下一步是建立軸對象。在項目樹里找到“運動控制”或者“軸配置”新建一個軸綁定到剛才組態(tài)的EtherCAT從站。一個從站對應一個軸幾臺伺服就建幾個軸。軸參數里幾個關鍵項要設對。一個是“軸類型”選“總線軸”或者“EtherCAT軸”不同版本叫法可能不一樣。另一個是“單位換算”這個很重要要把脈沖數換算成毫米或者度。比如伺服編碼器是23位一圈是8388608個脈沖絲杠導程是10mm那一個脈沖對應的距離就是10除以8388608約等于0.00000119mm。在軟件里填好“每轉脈沖數”和“每轉距離”軟件會自動算。提示單位換算設錯了位置就會差一個比例系數。調試的時候先用手動模式走一段固定距離量一下實際走了多少反推一下比例對不對。這個步驟別省省了后面程序里怎么調都調不準。速度參數方面要設最大速度、加減速時間這些。最大速度根據電機額定轉速和機械結構算加減速時間根據負載慣量來一般先設個保守值調試的時候再優(yōu)化。3.2 位置控制功能塊的使用AutoShop里位置控制常用的功能塊有MC_Power、MC_MoveAbsolute、MC_MoveRelative、MC_MoveVelocity、MC_Stop這些跟PLCopen標準運動控制功能塊是一致的。用起來跟西門子、三菱的類似學過其他品牌的話上手很快。MC_Power是使能功能塊Enable引腳給TRUE軸就使能了。使能之后Status引腳變TRUEBusy變FALSE表示軸準備好了。如果使能不了看Error引腳和ErrorID常見原因是伺服沒上電、通訊沒建立、或者伺服有報警沒復位。MC_MoveAbsolute是絕對定位給定目標位置、速度、加減速功能塊執(zhí)行完Done引腳變TRUE。Execute引腳用上升沿觸發(fā)觸發(fā)一次走一次。目標位置是絕對坐標相對于原點。原點怎么定可以用回零功能塊MC_Home也可以用伺服自己的原點開關?;亓惴绞皆谳S參數里選有找Z相信號、找原點開關加Z相、直接設當前位置為零點等幾種。MC_MoveRelative是相對定位走的是相對于當前位置的距離。Execute上升沿觸發(fā)走完Done變TRUE。相對定位適合那種不需要知道絕對位置、只走固定距離的場景比如送料、推料。MC_MoveVelocity是速度控制功能塊給定速度值軸就按這個速度一直轉直到收到停止指令或者觸發(fā)其他條件。Direction引腳控制方向0是正轉1是反轉。這個功能塊在速度模式下用位置模式下也能用但底層實現(xiàn)不一樣。3.3 速度控制功能塊的使用速度控制比位置控制簡單一些核心就是MC_MoveVelocity。使能軸之后調用MC_MoveVelocity給個速度值軸就轉起來了。速度值單位是用戶單位每秒比如mm/s或者度/s取決于軸參數里的單位換算。速度模式下如果要讀實際速度用MC_ReadActualVelocity功能塊輸出就是當前速度。要讀實際位置用MC_ReadActualPosition速度模式下位置也會變只是不控制位置而已。速度控制的一個典型應用是收放卷。收卷軸用速度模式根據卷徑變化調整速度保持線速度恒定。這時候需要實時讀卷徑算目標速度然后寫給MC_MoveVelocity。卷徑怎么算可以用超聲波測距也可以用編碼器算看具體機械結構。注意速度模式下切換方向的時候最好先減速到零再反向直接反向對機械沖擊很大。我見過直接反向把聯(lián)軸器擰斷的案例減速時間設長一點讓電機有個緩沖。3.4 功能塊調用順序與狀態(tài)機設計功能塊不能亂調要有順序。典型的狀態(tài)機是這樣的先MC_Power使能等Status為TRUE然后判斷是位置模式還是速度模式位置模式調MC_MoveAbsolute或MC_MoveRelative速度模式調MC_MoveVelocity運行過程中監(jiān)控Error和Status要停的時候調MC_Stop或者把速度給零。每個功能塊的Execute引腳都要用上升沿觸發(fā)不能一直給TRUE否則功能塊會反復執(zhí)行。用PLC的上升沿指令比如上升沿觸點或者功能塊自帶的Execute上升沿檢測。AutoShop里功能塊的Execute引腳本身就是上升沿有效的給一個掃描周期的脈沖就行。狀態(tài)機用梯形圖或者ST語言寫都行。梯形圖直觀適合邏輯簡單的場景ST語言適合復雜邏輯寫起來緊湊。我一般用ST寫狀態(tài)機用CASE語句分狀態(tài)每個狀態(tài)里調對應的功能塊清晰好維護。4. 調試過程與常見問題排查4.1 通訊建立與軸使能調試第一次調試先別急著寫程序先把通訊和使能調通。上電之后在AutoShop的EtherCAT配置界面看從站狀態(tài)正常應該是“OP”狀態(tài)如果是“INIT”或者“PREOP”說明通訊沒建立。檢查網線、站號、ESI文件這三個是最常見的原因。通訊正常之后在軸配置界面點“使能”按鈕看伺服能不能使能。使能成功的話伺服面板上會顯示“run”或者類似的指示。如果使能失敗看錯誤碼匯川伺服的錯誤碼手冊里有常見的有編碼器故障、過載、欠壓這些。使能之后用手動模式點動一下看電機轉不轉方向對不對速度對不對。手動模式在軸配置界面里有給個速度值點正轉反轉電機應該按預期轉動。如果方向反了改軸參數里的方向取反或者改伺服參數里的方向。4.2 位置控制精度問題排查位置控制最常見的問題是定位不準。原因可能有幾個一是單位換算錯了這個前面說過用手動模式驗證二是機械間隙絲杠或者齒輪有間隙反向的時候會有偏差這個靠程序補償或者機械調整三是伺服增益沒調好定位的時候有超調或者振蕩用AutoShop的伺服調試工具調增益。還有一個容易被忽略的是原點偏移?;亓阒笤c位置和機械零點可能差一點可以在軸參數里設原點偏移量補償這個差值。偏移量怎么定回零之后手動走到機械零點讀當前位置把這個值填到偏移量里。提示調試位置精度的時候用千分表或者激光測距儀量實際位置別靠眼睛看。眼睛看誤差至少0.5mm千分表能到0.01mm差別很大。4.3 速度控制穩(wěn)定性問題排查速度控制常見的問題是速度波動。原因可能是負載變化、增益不夠、或者速度指令本身在變。如果是負載變化導致的調大速度環(huán)增益或者加前饋補償。如果是速度指令在變檢查程序里速度值的來源是不是有干擾或者計算錯誤。速度模式下還有一個問題是低速爬行。電機在很低的速度下轉不平穩(wěn)一頓一頓的。這是伺服低速特性決定的可以調小速度環(huán)積分時間或者用位置模式代替速度模式位置模式低速性能通常更好。問題現(xiàn)象可能原因排查方法解決措施通訊不上網線、站號、ESI檢查接線和站號換屏蔽網線改站號重裝ESI軸使能失敗伺服報警、通訊未建立看伺服面板和錯誤碼復位報警檢查通訊狀態(tài)定位不準單位換算、機械間隙手動模式驗證改換算參數機械調整速度波動增益、負載變化監(jiān)控速度曲線調增益加前饋低速爬行伺服低速特性低速測試調積分時間改位置模式這張表是我調試時總結的基本上覆蓋了八成以上的問題。遇到問題先查表查不到再深入分析。4.4 實操心得與避坑經驗說幾個我踩過的坑。第一個是ESI文件版本匯川伺服不同批次的ESI文件可能不一樣用錯了版本組態(tài)會報錯。解決辦法是每次都用隨伺服附帶的ESI文件別圖省事用舊的。第二個是PDO映射默認映射有時候不夠用比如要讀扭矩默認映射里沒有。這時候要手動加加完之后要重新下載組態(tài)不然不生效。加PDO的時候注意輸入輸出別搞反了輸入是從站到主站輸出是主站到從站。第三個是循環(huán)周期H5U的EtherCAT循環(huán)周期設太小了CPU負載高設太大了響應慢。一般1ms到4ms之間根據軸數和程序復雜度調。軸多、程序復雜就設大一點軸少、要求高就設小一點。第四個是接地EtherCAT通訊對干擾敏感接地不好容易丟幀。PLC和伺服的PE端子都要可靠接地接地電阻小于4歐姆。網線屏蔽層兩端都要接地別只接一端。5. 程序優(yōu)化與擴展應用5.1 程序結構優(yōu)化建議程序寫大了之后要分模塊。我一般把軸控制封裝成功能塊每個軸一個功能塊實例輸入輸出用結構體這樣主程序里看起來很清爽。功能塊內部處理使能、定位、速度、停止這些邏輯外部只需要給指令和讀狀態(tài)。狀態(tài)機用ST寫每個軸一個CASE語句狀態(tài)包括Idle、PowerOn、Homing、Moving、Stopping、Error。狀態(tài)之間用條件跳轉比如PowerOn狀態(tài)等Status為TRUE就跳到IdleIdle狀態(tài)收到定位指令就跳到MovingMoving狀態(tài)等Done為TRUE就跳回Idle。Error狀態(tài)處理錯誤錯誤清除后跳回Idle。提示功能塊實例要放在靜態(tài)變量區(qū)別放在臨時變量區(qū)否則每個掃描周期都重新初始化狀態(tài)保持不住。這個坑我踩過調了半天才發(fā)現(xiàn)是變量類型的問題。5.2 多軸同步與插補應用H5U支持多軸同步可以做簡單的插補。比如XY平臺走直線兩個軸同時動保持速度比例。用MC_MoveLinearAbsolute功能塊給定終點坐標和速度兩個軸會自動協(xié)調。插補精度取決于循環(huán)周期和伺服響應周期越小精度越高。多軸同步的難點是軸之間的耦合。比如一個軸是主軸另一個是從軸從軸位置跟隨主軸。這種用電子齒輪或者電子凸輪功能H5U支持這些。電子齒輪就是從軸速度等于主軸速度乘以一個比例比例可以實時改。電子凸輪是從軸位置是主軸位置的函數函數關系用凸輪表定義。5.3 與上位機通訊和數據采集H5U本身支持Modbus TCP和EtherNet/IP可以和上位機通訊。上位機讀PLC的數據包括軸狀態(tài)、實際位置、實際速度、報警信息這些。寫數據可以改速度、改目標位置、啟動停止。數據采集用PLC的變量記錄功能或者上位機輪詢。輪詢周期別太快100ms到500ms就行太快了PLC通訊負載高。要高速采集的話用PLC內部的高速記錄功能先存到PLC內存再批量傳給上位機。5.4 后續(xù)擴展方向這套方案后續(xù)可以擴展的地方不少。比如加視覺視覺定位之后把坐標給PLCPLC控制軸走到位置?;蛘呒恿刈x伺服扭矩做力位混合控制。再或者加安全功能接安全PLC或者安全繼電器做安全停止。EtherCAT本身也支持更多從站類型除了伺服還可以掛IO模塊、編碼器模塊、閥島這些。H5U的EtherCAT主站能力有限掛太多從站循環(huán)周期會變長一般掛十幾二十個從站沒問題再多就要考慮換更高級的PLC了。我個人在實際操作中的體會是這套方案最大的優(yōu)勢是省心。接線省心組態(tài)省心編程也省心。AutoShop把很多底層細節(jié)封裝好了不用去啃EtherCAT協(xié)議棧也不用去記對象字典選好模式調好參數就能跑。當然省心的代價是靈活性差一點有些特殊需求可能實現(xiàn)不了但對于大多數常規(guī)應用來說完全夠用了。