戰(zhàn)排查)
1. 為什么一個(gè)“模式切換”能直接影響整臺(tái)設(shè)備的節(jié)拍我去年調(diào)試過一臺(tái)三工位移栽設(shè)備伺服電機(jī)帶滾珠絲桿用的就是位置控制模式。最初控制程序里用PP模式每個(gè)工位發(fā)完目標(biāo)位置之后程序?yàn)榱瞬怀霈F(xiàn)“位置還沒到就接收下一條指令”的亂子死等狀態(tài)字里的“目標(biāo)到達(dá)”標(biāo)志結(jié)果一個(gè)完整循環(huán)跑下來要1.6秒而客戶給的節(jié)拍是1.2秒。后來我把同一個(gè)軸切到CSP模式目標(biāo)位置改成每個(gè)通信周期實(shí)時(shí)刷新定位完成后不再傻等到位信號(hào)直接進(jìn)入下一步動(dòng)作循環(huán)時(shí)間降到1.1秒左右。這件事讓我印象很深伺服電機(jī)的位置控制模式不是簡單地在驅(qū)動(dòng)器里填一個(gè)數(shù)字PP模式和CSP模式背后是兩套完全不同的運(yùn)動(dòng)控制思路。這篇文章就圍繞PP與CSP的比較展開適合兩類人看一類是剛接觸總線伺服、被一堆模式代碼和高頻詞匯繞暈的電氣工程師另一類是已經(jīng)在用PP模式但覺得設(shè)備響應(yīng)偏慢、想通過模式切換改善動(dòng)態(tài)性能的同行。1.1 位置控制模式不是“越高級越好”很多新人對位置控制模式有個(gè)誤解覺得帶“同步”兩個(gè)字的一定比“輪廓位置”高級。實(shí)際完全不是這么回事。位置控制模式要回答的核心問題是運(yùn)動(dòng)軌跡由誰來規(guī)劃由驅(qū)動(dòng)器根據(jù)一組參數(shù)自動(dòng)規(guī)劃并執(zhí)行那是PP由上位機(jī)在每一個(gè)通信周期把目標(biāo)位置發(fā)下來驅(qū)動(dòng)器只負(fù)責(zé)位置閉環(huán)執(zhí)行那是CSP。兩者沒有高下之分只有合不合適。PP模式下驅(qū)動(dòng)器是個(gè)會(huì)自己看地圖的“配送員”你告訴它目的地、期望速度和限速它自己規(guī)劃路線走過去CSP模式下上位機(jī)才是那個(gè)實(shí)時(shí)指揮的人每個(gè)周期告訴配送員“下一步走哪”配送員只負(fù)責(zé)執(zhí)行當(dāng)前這個(gè)瞬間的位置給定。1.2 這篇文章覆蓋的內(nèi)容結(jié)合我實(shí)際用過STM32通過RS485走M(jìn)odbus RTU控制伺服的經(jīng)歷也講PLC伺服控制程序里怎么做位置狀態(tài)機(jī)。后面會(huì)先拆解PP和CSP各自的工作原理再做一張對比表然后用三個(gè)排查案例說明最容易踩的坑最后給一套選型經(jīng)驗(yàn)。其中涉及的寄存器地址以遵循CiA 402協(xié)議的主流伺服為參考具體品牌會(huì)略有差異但排查思路和程序結(jié)構(gòu)是通用的。2. PP模式位置輪廓全部由驅(qū)動(dòng)器自動(dòng)生成2.1 PP模式的執(zhí)行邏輯一條指令走完一段運(yùn)動(dòng)PP模式全稱Profile Position中文常說輪廓位置模式。關(guān)鍵就在“輪廓”這兩個(gè)字。輪廓指的是速度曲線、位置曲線、加減速曲線。PP模式下控制器要做的就是給驅(qū)動(dòng)器發(fā)送目標(biāo)位置、目標(biāo)速度、加/減速度時(shí)間然后觸發(fā)一次運(yùn)動(dòng)。驅(qū)動(dòng)器收到之后內(nèi)部會(huì)生成一段完整的位移曲線常見的可以是梯形曲線也可以是S形曲線然后按照這個(gè)曲線自動(dòng)完成啟停和定位。這里有個(gè)容易忽略的點(diǎn)控制器不需要在每個(gè)周期更新位置因?yàn)镻P模式下位置給定是從驅(qū)動(dòng)器內(nèi)部“連續(xù)生成”的相當(dāng)于驅(qū)動(dòng)器自己拿了個(gè)秒表一邊走一邊更新位置環(huán)的參考點(diǎn)??刂破髦恍枰谟|發(fā)后等待結(jié)果。整個(gè)流程按狀態(tài)劃分大致是這樣驅(qū)動(dòng)器使能進(jìn)入準(zhǔn)備狀態(tài)。寫入工作模式PP對應(yīng)的模式代碼按CiA 402一般是1。寫目標(biāo)位置、目標(biāo)速度、加速度、減速度。控制字置觸發(fā)位啟動(dòng)這段運(yùn)動(dòng)。讀取狀態(tài)字確認(rèn)目標(biāo)到達(dá)標(biāo)志。如果需要走下一段先清除觸發(fā)位再更新目標(biāo)位置和速度重新觸發(fā)。PP模式的執(zhí)行模型是事件驅(qū)動(dòng)每發(fā)一條指令就必須等一個(gè)結(jié)果。好處是邏輯清晰、不容易出大錯(cuò)壞處是如果上位機(jī)沒有把狀態(tài)機(jī)設(shè)計(jì)好每段動(dòng)作之間會(huì)多出不少等待浪費(fèi)節(jié)拍就壓在“到位信號(hào)”上。2.2 Modbus RTU/485場景下的PP操作細(xì)節(jié)很多中小型設(shè)備是STM32或PLC通過RS485接口用Modbus RTU協(xié)議控制伺服。這種場景下做單軸定位PP模式幾乎是首選因?yàn)镸odbus本身是主從輪詢協(xié)議實(shí)時(shí)性一般做周期同步位置控制很吃力但做事件型的位置觸發(fā)則非常合適。以遵循CiA 402對象字典的伺服為例常用對象如下對象字典含義PP模式下作用0x6040控制字使能、觸發(fā)、急停等控制0x6041狀態(tài)字上報(bào)當(dāng)前位置狀態(tài)、報(bào)警、使能狀態(tài)0x6060工作模式寫1進(jìn)入PP模式0x6061當(dāng)前工作模式讀取伺服當(dāng)前實(shí)際模式0x607A目標(biāo)位置寫入目標(biāo)位置0x6081目標(biāo)速度寫入期望速度0x6083加速度定義加速時(shí)間或加速度0x6084減速度定義減速時(shí)間或減速度在Modbus映射到寄存器地址時(shí)不同品牌會(huì)把對象字典映射到不同的Modbus地址區(qū)這一點(diǎn)必須查對應(yīng)手冊。下面是一段STM32側(cè)的偽代碼手動(dòng)管理控制字觸發(fā)沿// 偽代碼PP模式觸發(fā)流程 servo_disable(); // 先復(fù)位控制字 write_reg(MODE_OD, 1); // 0x6060進(jìn)入PP模式 write_reg(TARGET_POS_OD, 50000); // 0x607A目標(biāo)位置 50000 脈沖 write_reg(TARGET_SPEED_OD, 3000); // 0x6081目標(biāo)速度 3000 脈沖/秒 write_reg(CTRLWORD_OD, 0x000F); // 使能等待觸發(fā) write_reg(CTRLWORD_OD, 0x001F); // bit4 置1產(chǎn)生觸發(fā)上升沿 while ((read_reg(STATUSWORD_OD) 0x0400) 0); // 等待狀態(tài)字 bit10 目標(biāo)到達(dá) write_reg(CTRLWORD_OD, 0x000F); // 清除觸發(fā)位準(zhǔn)備下一次注意控制字的bit4上升沿才是一次有效觸發(fā)。有些程序連續(xù)往控制字寫同一個(gè)值發(fā)現(xiàn)伺服沒反應(yīng)就是因?yàn)闆]有生成上升沿。觸發(fā)后還要給驅(qū)動(dòng)器留出幾個(gè)通信周期來確認(rèn)不要同一輪循環(huán)里又寫又清否則指令發(fā)不到位。2.3 PP模式的三個(gè)現(xiàn)實(shí)局限第一個(gè)局限是運(yùn)動(dòng)過程中改位置不靈活。雖然很多驅(qū)動(dòng)器支持“改變量目標(biāo)位置”或者“位置疊加”但本質(zhì)還是事件型修改不是連續(xù)軌跡。比如視覺系統(tǒng)在伺服運(yùn)動(dòng)過程中發(fā)現(xiàn)偏了一點(diǎn)想實(shí)時(shí)修正就很別扭只能等這段運(yùn)動(dòng)走完再發(fā)一段修正。第二個(gè)局限是多軸同步能力弱。PP模式每個(gè)軸各自規(guī)劃、各自執(zhí)行軸與軸之間沒有統(tǒng)一的同步時(shí)鐘。雖然可以用“同步觸發(fā)”讓幾個(gè)軸同時(shí)啟動(dòng)但一旦某個(gè)軸受到負(fù)載擾動(dòng)、加減速能力不同各軸的實(shí)際位置偏差是多少控制器并沒有一個(gè)強(qiáng)制的同步機(jī)制來兜底。第三個(gè)局限是程序把等待時(shí)間浪費(fèi)在狀態(tài)輪詢上。特別是PLC做伺服控制程序時(shí)如果每段都用“等待到位”再切下一段節(jié)拍完全由伺服動(dòng)作決定上位機(jī)很難通過優(yōu)化程序把它“搶”回來。這也是我在移栽設(shè)備上遇到的真實(shí)問題等一個(gè)到位信號(hào)經(jīng)常吃掉幾十到幾百毫秒。3. CSP模式每一個(gè)通信周期都實(shí)時(shí)刷新目標(biāo)位置3.1 CSP的原理位置參考值來自控制器CSP全稱Cyclic Synchronous Position周期同步位置模式CiA 402協(xié)議中模式代碼一般是8。它的設(shè)計(jì)思想是把運(yùn)動(dòng)軌跡生成完全放到控制器側(cè)??刂破靼凑展潭ǖ闹芷诶?ms、2ms或4ms通過實(shí)時(shí)總線向驅(qū)動(dòng)器發(fā)送一個(gè)目標(biāo)位置驅(qū)動(dòng)器在每個(gè)周期收到新的位置給定后更新位置環(huán)參考輸入同時(shí)把實(shí)際位置反饋給控制器。用前面配送員的比喻來說PP是給一個(gè)最終目的地然后各走各的CSP則是每個(gè)周期都告訴配送員下一小步怎么走。PP模式下控制器給的是一個(gè)“終點(diǎn)速度規(guī)劃參數(shù)”驅(qū)動(dòng)器自己完成中間所有的軌跡點(diǎn)計(jì)算CSP模式下控制器給的是“這一瞬間的位置”而且是連續(xù)不斷的位置序列。如果某個(gè)周期控制器沒發(fā)新數(shù)據(jù)驅(qū)動(dòng)器通常會(huì)按照設(shè)定的斷線行為停止或保持而不是繼續(xù)自己跑。3.2 PDO數(shù)據(jù)流與周期同步CSP真正強(qiáng)的地方在于“同步”。以用得最多的EtherCAT總線為例主站會(huì)在每個(gè)同步周期里同時(shí)向所有從站下發(fā)目標(biāo)位置所有伺服在同一個(gè)SYNC事件到來時(shí)鎖存輸入并更新輸出。這樣多臺(tái)伺服可以在納秒甚至亞微秒級誤差內(nèi)保持同步不會(huì)出現(xiàn)某臺(tái)軸已經(jīng)啟動(dòng)、另一臺(tái)軸還在等串口數(shù)據(jù)的情況。CSP模式下的數(shù)據(jù)通常包含這幾項(xiàng)通信上常放在PDO映射里控制字負(fù)責(zé)伺服使能和急停等。目標(biāo)位置每周期刷新。工作模式保證伺服處于CSP狀態(tài)。狀態(tài)字反饋報(bào)警和當(dāng)前狀態(tài)。實(shí)際位置反饋給控制器做閉環(huán)或顯示。有時(shí)候還會(huì)加一個(gè)位置偏移或速度前饋用來改善動(dòng)態(tài)跟隨精度??刂破髟谌蝿?wù)里要做的事不再是判斷“到位沒到位”而是按照一個(gè)固定的時(shí)間基準(zhǔn)算出下一拍的位置并發(fā)送。比如主軸節(jié)拍是1ms控制器就要在一個(gè)1ms定時(shí)中斷里執(zhí)行插補(bǔ)計(jì)算和總線發(fā)送。這個(gè)任務(wù)一旦被外部干擾打亂位置給定就會(huì)出現(xiàn)時(shí)間抖動(dòng)運(yùn)動(dòng)是否順滑直接受影響。3.3 CSP下控制器如何生成位置參考值這里可以稍微展開一點(diǎn)。CSP需要控制器具備插補(bǔ)能力最簡單的梯形速度規(guī)劃公式設(shè)每個(gè)通信周期時(shí)間為T目標(biāo)運(yùn)行速度為v單位為脈沖每秒。那么勻速階段每個(gè)周期的位置增量就是deltaPos v * T加速階段可以按加速度a計(jì)算v_current a * T; deltaPos v_current * T;減速階段類似反向遞減速度??刂破靼衙總€(gè)周期的deltaPos累加到當(dāng)前位置再寫入CSP目標(biāo)位置對象就生成了一條連續(xù)的位置軌跡。這個(gè)邏輯邏輯上不復(fù)雜難在周期要穩(wěn)定??刂破髅看稳蝿?wù)的實(shí)際執(zhí)行間隔如果是1ms±0.1ms那么在高速段位置曲線會(huì)出現(xiàn)肉眼可見的毛刺反應(yīng)到機(jī)械上就是抖動(dòng)和異響。3.4 CSP必須考慮的安全機(jī)制CSP不是“發(fā)了位置就不管”。通信一旦中斷伺服應(yīng)該進(jìn)入什么狀態(tài)大多數(shù)驅(qū)動(dòng)器支持配置通信丟失后保持當(dāng)前位置、立刻急停或按照最后給定速度停下來。這個(gè)必須根據(jù)設(shè)備安全要求提前設(shè)置不能靠默認(rèn)值。另外如果上位機(jī)崩潰總線停止發(fā)送伺服必須能自動(dòng)進(jìn)入安全停止?fàn)顟B(tài)否則會(huì)造成撞機(jī)。我在設(shè)備上通常會(huì)把CSP的“通信超時(shí)時(shí)間”設(shè)得很短比如低于10ms。一旦主站失聯(lián)伺服立刻報(bào)E類報(bào)警并停止寧可停機(jī)也不能讓軸亂跑。4. PP和CSP的核心差異軌跡規(guī)劃權(quán)、通信方式、同步機(jī)制4.1 一張表看清主要區(qū)別對比項(xiàng)PP模式CSP模式軌跡規(guī)劃者驅(qū)動(dòng)器控制器/主站指令更新方式事件型觸發(fā)一次走一段周期型每個(gè)周期刷新位置總線要求低Modbus RTU、RS485即可高EtherCAT等實(shí)時(shí)總線更合適多軸同步能力弱各軸各自執(zhí)行強(qiáng)統(tǒng)一同步事件鎖存運(yùn)動(dòng)中的位置修改不靈活需要重新觸發(fā)或改目標(biāo)靈活每周期都可以改變控制程序結(jié)構(gòu)狀態(tài)機(jī)等待到位再發(fā)下一段定時(shí)中斷或周期任務(wù)持續(xù)發(fā)送調(diào)試難度低參數(shù)少上手快高需要處理插補(bǔ)、周期、前饋典型應(yīng)用單軸定位、簡單移栽電子凸輪、飛剪、多軸插補(bǔ)很多人以為PP和CSP的區(qū)別只是“通信快不快”其實(shí)關(guān)鍵區(qū)別是“運(yùn)動(dòng)軌跡到底誰說了算”。PP把輪廓生成放在驅(qū)動(dòng)器里所以即使用了很慢的Modbus通信只要觸發(fā)指令發(fā)到位運(yùn)動(dòng)本身依然平滑CSP把輪廓生成放在控制器里通信快、周期穩(wěn)它才會(huì)平滑否則數(shù)據(jù)斷斷續(xù)續(xù)運(yùn)動(dòng)質(zhì)量反而不如PP。4.2 時(shí)序模型事件驅(qū)動(dòng)與周期驅(qū)動(dòng)PP的時(shí)序是“發(fā)一條、等一條、再發(fā)一條”像一個(gè)拿著單子逐個(gè)執(zhí)行任務(wù)的工人。每一步必須等到上一個(gè)動(dòng)作完成才能接下一個(gè)。即使驅(qū)動(dòng)器支持在運(yùn)動(dòng)中修改目標(biāo)位置整個(gè)編程模型依然是一系列離散命令。CSP的時(shí)序是“每個(gè)周期都在發(fā)位置”控制器和驅(qū)動(dòng)器之間是一條連續(xù)的數(shù)據(jù)流。控制器不需要專門等一個(gè)“到位”狀態(tài)因?yàn)檫\(yùn)動(dòng)到最后一段控制器自己會(huì)規(guī)劃減速在預(yù)期位置停止。整個(gè)定位過程是融合在連續(xù)位置序列里的最后一步只是序列自然結(jié)束。實(shí)際工程里這個(gè)差異會(huì)直接體現(xiàn)為節(jié)拍PP模式下最后一段減速到零、到位信號(hào)翻轉(zhuǎn)、控制器輪詢到狀態(tài)字、再下發(fā)下一步指令這幾段時(shí)間是串行的CSP模式下控制器本來就清楚自己發(fā)出去的最后一個(gè)位置是什么減速完成那一刻軸已經(jīng)到達(dá)控制器可以提前準(zhǔn)備好下一步動(dòng)作。4.3 程序結(jié)構(gòu)差異狀態(tài)機(jī)與周期任務(wù)PP模式下的程序通常是一個(gè)明顯的狀態(tài)機(jī)空閑、寫目標(biāo)、觸發(fā)、等待到位、完成。PLC里寫這類程序很順手SFC或梯形圖都行因?yàn)槊恳徊揭蕾嚿弦粋€(gè)狀態(tài)。CSP模式下的程序則是一個(gè)周期任務(wù)采集反饋、計(jì)算軌跡、下發(fā)目標(biāo)位置、讀取實(shí)際位置循環(huán)往復(fù)。控制器必須有一個(gè)可靠的時(shí)間基準(zhǔn)這往往意味著需要實(shí)時(shí)操作系統(tǒng)或中斷優(yōu)先級很高的定時(shí)任務(wù)。STM32做EtherCAT主站也能跑CSP但周期穩(wěn)定性需要仔細(xì)驗(yàn)證不是簡單點(diǎn)個(gè)定時(shí)器就夠的。5. 三個(gè)實(shí)戰(zhàn)排查位置指令發(fā)出去但不動(dòng)、CSP抖動(dòng)、到位信號(hào)反復(fù)跳變5.1 排查問題前先建立一個(gè)“通信正?!钡幕鶞?zhǔn)位置控制模式出問題最容易犯的錯(cuò)是上來就調(diào)PID。實(shí)際上很多問題出在更底層。第一步永遠(yuǎn)是確認(rèn)上位機(jī)和驅(qū)動(dòng)器之間的通信正常能在調(diào)試軟件或程序里穩(wěn)定讀到狀態(tài)字和實(shí)際位置。如果通信都斷斷續(xù)續(xù)后面所有分析都是空中樓閣。建立基準(zhǔn)之后再按“模式、使能、觸發(fā)、單位、周期”五個(gè)關(guān)鍵字逐個(gè)排查。模式指工作模式是否切到位使能指控制字是否滿足伺服運(yùn)行條件觸發(fā)指PP的觸發(fā)沿是否正確單位指位置、速度的單位換算是否一致周期指CSP的發(fā)送周期和同步時(shí)序是否正常。5.2 案例一STM32通過485控制伺服觸發(fā)后電機(jī)不動(dòng)有一臺(tái)設(shè)備用的是國產(chǎn)帶Modbus RTU的伺服STM32做主控。現(xiàn)象很典型用廠商調(diào)試軟件能正常點(diǎn)動(dòng)、能走PP模式但STM32跑同樣的流程伺服就是不動(dòng)連狀態(tài)字的“目標(biāo)到達(dá)”都不翻轉(zhuǎn)。最開始懷疑通信有問題但讀回來的狀態(tài)字和參數(shù)都正常。后來把發(fā)送指令間隔拉長用示波器對比指令幀才發(fā)現(xiàn)問題程序在同一個(gè)主循環(huán)里把控制字從0x001F立刻寫回0x000F中間只隔了一個(gè)Modbus讀寫周期。驅(qū)動(dòng)器在收到第一條觸發(fā)幀后還沒來得及處理緊接著又收到一條非觸發(fā)幀觸發(fā)沿被沖掉了。解決方法是觸發(fā)后至少等待50ms或一個(gè)完整通信周期再清除觸發(fā)位并且在下一次觸發(fā)前強(qiáng)制讀一遍狀態(tài)字確認(rèn)當(dāng)前狀態(tài)。從此之后我把PP觸發(fā)做成了一個(gè)小函數(shù)觸發(fā)位從置位到清零之間必須有延時(shí)再也不在這類問題上浪費(fèi)時(shí)間。這個(gè)案例里的經(jīng)驗(yàn)在PLC伺服控制程序里同樣適用。很多PLC程序用梯形圖一個(gè)掃描周期把所有線圈輸出做完觸發(fā)位和清除位剛好擠在同一個(gè)掃描周期驅(qū)動(dòng)器一樣識(shí)別不到上升沿。5.3 案例二CSP模式中高速抖動(dòng)實(shí)際位置曲線出現(xiàn)鋸齒另一個(gè)項(xiàng)目是用EtherCAT主站控制四臺(tái)伺服做滾圓運(yùn)動(dòng)CSP模式運(yùn)行。低速一切正常速度一上來電機(jī)就嗡嗡響機(jī)械振動(dòng)明顯。把目標(biāo)位置和實(shí)際位置的曲線抓出來看實(shí)際位置曲線在高速段明顯呈鋸齒狀。排查鏈路是這樣的先懷疑伺服增益把位置環(huán)增益降下來結(jié)果鋸齒依然在。再懷疑干擾屏蔽層重新接地問題沒變化。最后把主站記錄的“實(shí)際發(fā)送周期”拉出來發(fā)現(xiàn)任務(wù)循環(huán)節(jié)拍不是嚴(yán)格的1ms有時(shí)0.8ms有時(shí)1.3ms周期抖動(dòng)接近30%。CSP模式下位置增量是按期望速度計(jì)算的實(shí)際發(fā)送間隔一抖單位時(shí)間內(nèi)位置給定就不均勻電機(jī)自然每個(gè)月抖。處理方法是換了一個(gè)帶實(shí)時(shí)定時(shí)器的任務(wù)把CSP發(fā)送放到最高優(yōu)先級中斷里同時(shí)把位置單位重新?lián)Q算成伺服脈沖。這里還有個(gè)坑上位機(jī)用毫米做單位伺服軸單位是脈沖毫米轉(zhuǎn)脈沖的系數(shù)寫錯(cuò)了一個(gè)數(shù)量級導(dǎo)致每個(gè)周期位置增量過大機(jī)械沖擊明顯。修正單位換算后同樣的增益參數(shù)運(yùn)轉(zhuǎn)就順暢了。5.4 核查位置控制問題時(shí)的通用四板斧結(jié)合這兩個(gè)案例我總結(jié)出一套排查位置控制問題的順序不管PP還是CSP都適用。第一看狀態(tài)字和報(bào)警碼確認(rèn)伺服有沒有在報(bào)警或者未使能。第二看目標(biāo)位置和實(shí)際位置的實(shí)時(shí)曲線判斷是“沒收到指令”還是“收到指令但執(zhí)行不對”。第三查模式和控制字時(shí)序確認(rèn)模式切換完成、觸發(fā)沿有效、使能條件滿足。第四查單位和周期參數(shù)排除位置單位、速度單位、總線周期設(shè)置不一致的問題。按照這個(gè)順序排查大部分位置控制故障都能定位到具體環(huán)節(jié)。不要一上來就動(dòng)PID參數(shù)那只會(huì)把事情搞得更亂。6. 什么時(shí)候用PP、什么時(shí)候用CSP我的選型習(xí)慣6.1 按場景選擇的決策邏輯我自己的經(jīng)驗(yàn)是這么判斷的如果運(yùn)動(dòng)軌跡是“走一段、停一下、再走一段”例如點(diǎn)膠機(jī)的點(diǎn)間移動(dòng)、移栽機(jī)的抓放料、倉庫堆垛機(jī)的定點(diǎn)取放這類動(dòng)作節(jié)拍不高但邏輯判斷多用PP模式最穩(wěn)妥。這種場景用Modbus RTU或485通信完全夠用控制器負(fù)擔(dān)也小調(diào)試成本非常低。如果運(yùn)動(dòng)是連續(xù)的例如電子凸輪里的飛剪、追剪又或者是CNC插補(bǔ)幾個(gè)軸必須同時(shí)動(dòng)、速度不能中斷、軌跡必須吻合那幾乎只能選CSP。這種場景下軌跡連續(xù)性和軸間同步優(yōu)先級最高PP模式在結(jié)構(gòu)上就不適合硬用會(huì)造成多軸不同步或軌跡不準(zhǔn)。另外如果控制器里已經(jīng)有完整的軌跡規(guī)劃算法比如視覺引導(dǎo)的連續(xù)軌跡修正CSP能讓你每周期干預(yù)位置給定PP很難做到同等效果。還有一個(gè)折中選擇某些應(yīng)用單軸運(yùn)動(dòng)但動(dòng)態(tài)響應(yīng)要求高比如高速貼裝的Z軸上下動(dòng)作雖然動(dòng)作是“漲落”的點(diǎn)到點(diǎn)但節(jié)拍非??旒兇庥肞P加等待狀態(tài)輪詢會(huì)損失周期。這種情況可以用CSP控制器在規(guī)劃好落點(diǎn)后連續(xù)發(fā)送位置序列減少上位機(jī)“等信號(hào)”的時(shí)間。我調(diào)試的移栽設(shè)備最后就是走的這條路。6.2 成本與開發(fā)資源也是重要指標(biāo)CSP模式雖然能力強(qiáng)但代價(jià)是控制器側(cè)要有穩(wěn)定周期和總線主站開發(fā)量比PP大不少。如果公司現(xiàn)有的PLC沒有運(yùn)動(dòng)控制總線接口或者上位機(jī)程序里沒有實(shí)時(shí)任務(wù)經(jīng)驗(yàn)硬上CSP可能把簡單項(xiàng)目拖進(jìn)無底洞。反過來如果項(xiàng)目已經(jīng)部署了EtherCAT并且程序結(jié)構(gòu)是周期任務(wù)模式那新軸直接都用CSP反而比PP更合理因?yàn)橐粭l數(shù)據(jù)通路所有軸共用不必給每個(gè)軸寫一套狀態(tài)機(jī)。6.3 一個(gè)容易被忽略的“指令源選擇”問題最后說一個(gè)我踩過的坑把模式改成CSP后伺服依然走脈沖或面板點(diǎn)動(dòng)怎么都不按總線指令運(yùn)動(dòng)。后來發(fā)現(xiàn)有些伺服除了工作模式外還有單獨(dú)的“控制指令源”參數(shù)必須把指令源設(shè)為總線/通信。如果只改了模式代碼沒切指令源伺服根本不看總線上的目標(biāo)位置。這個(gè)細(xì)節(jié)在PP和CSP切換時(shí)非常常見。調(diào)試時(shí)改完模式建議順手讀一下當(dāng)前工作模式確認(rèn)伺服實(shí)際跑的模式和寫入的一致而不是只看程序里寫的是什么。我在實(shí)際項(xiàng)目里的習(xí)慣是新設(shè)備如果預(yù)算是常規(guī)成本、動(dòng)作以單軸定位為主我傾向PP加Modbus/485維護(hù)方便如果設(shè)備是多軸聯(lián)動(dòng)、節(jié)拍要求高、結(jié)構(gòu)上自帶總線主站我直接用CSP軌跡判斷全部放在控制器里。兩種模式各有擅長選之前想清楚“軌跡由誰規(guī)劃”這個(gè)根本問題就不會(huì)在設(shè)備現(xiàn)場被動(dòng)。