車間的14個(gè)同一品牌變頻器(安川)使用modbus rtu控制啟停并調(diào)速(運(yùn)行環(huán)境cpu414-5h,pcs7 v8,編程方式stl+cfc,cp341+驅(qū)動(dòng)狗)。
//===============================================================================
//接到任務(wù)
接到任務(wù)的時(shí)候就發(fā)牢騷了,就不應(yīng)該使用modbus這么慢的通訊方式,原因如下:
1.這些都是輸送帶和物料泵在工藝中比較重要,速度調(diào)節(jié)慢了就會(huì)造成物料堵塞,并且某兩條輸送帶還有緊急減速。
2.調(diào)速電機(jī),調(diào)速就有pid回路,pid的輸出值必須等到輪詢到該站點(diǎn)時(shí)才能寫入該變頻器,這是很明顯的滯后 。
3.如果有一個(gè)站通訊故障,modbus功能塊會(huì)不停的嘗試連接直到看門狗時(shí)間到,這對(duì)輪詢來說是個(gè)致命打擊。
4.變頻器數(shù)量多,且有一用一備,電機(jī)不僅有故障狀態(tài)還有l(wèi)ocal狀態(tài)和備用的情況,modbus輪詢到這個(gè)地方的時(shí)候該怎么處理?
5.變頻器狀態(tài)字節(jié)不連續(xù)(安川變頻器,modbus讀回的頻率和電流以及變頻器端子輸入信號(hào)狀態(tài)相隔的字節(jié)數(shù)比較遠(yuǎn))可能一個(gè)站點(diǎn)需要兩次讀取,不僅占用輪詢時(shí)間還會(huì)導(dǎo)致編程復(fù)雜。
以上!所有麻煩!都是!因?yàn)?!modbus rtu !慢!
//===============================================================================
//冷靜下來,仔細(xì)分析應(yīng)對(duì)措施
牢騷發(fā)完該干活了,仔細(xì)分析后,編程可以采取以下有效手段:
1.根據(jù)cp341現(xiàn)場(chǎng)柜子與mcc(馬達(dá)控制中心)之間的距離,波特率完全可以使用19200
2.一用一備的電機(jī)業(yè)主將備用電機(jī)只有用時(shí)才上電。modbus肯定訪問不到,因此上位機(jī)上做了一個(gè)面板,每個(gè)站都可以選擇是否在輪詢時(shí)讀寫該站點(diǎn)沒有上電的備用電機(jī)當(dāng)然勾選讀寫的時(shí)候跳過該站。
3.modbus輪詢導(dǎo)致的執(zhí)行滯后的時(shí)間如果能有效控制在一定范圍內(nèi),pid參數(shù)合理的調(diào)整是可以彌補(bǔ)這個(gè)缺陷的。
4.操作員或系統(tǒng)自動(dòng)控制選擇的某個(gè)站點(diǎn)的變頻器啟停,將被優(yōu)先讀寫。原因有2:
a. 某些電機(jī)連鎖后需要立即停機(jī)。
b. 手動(dòng)啟停也可以讓操作員不必等待輪詢的時(shí)間。
5.cp341的參數(shù)里可以設(shè)置看門狗的時(shí)間。盡可能短,并且要保證不會(huì)低于正常收發(fā)的時(shí)間。
6.記錄每個(gè)站點(diǎn)收發(fā)的錯(cuò)誤次數(shù),錯(cuò)誤超過設(shè)定值的時(shí)候報(bào)警!操作可以在面板選擇跳過站, 操作員可以電機(jī)打至local模式控制。
7.編程采用stl變址尋址,盡可能縮短代碼。
//==============================================================================
//到達(dá)現(xiàn)場(chǎng)后
懷著忐忑不安的心情,到了現(xiàn)場(chǎng)布置dp,以太網(wǎng)電纜,打點(diǎn),單體運(yùn)行,對(duì)傳感器數(shù)值,終于有了可以modbus任性輪詢的條件了,但是結(jié)果很糟糕,modbus輪詢一周期接近10秒!!?。?!沒法一起玩耍了。情況峰會(huì)路轉(zhuǎn)在一次調(diào)整cfc運(yùn)行組周期后,將modbus的相關(guān)程序扔進(jìn)ob1后,輪詢縮短到了4.5秒。接著分析:
1.實(shí)際情況證明modbus程序cfc在ob1中執(zhí)行后,輪詢時(shí)間會(huì)大幅提高,雖然ob1的某些時(shí)間段內(nèi)執(zhí)行程序的時(shí)間會(huì)高于ob35的100ms(414-5h的最快掃描周期100ms) ,但是總體平均時(shí)間大大的小于100ms,建議以后大家不在萬不得已不要在ob1里寫程序 。西門子建議不讓這樣。
2.現(xiàn)場(chǎng)調(diào)pid時(shí)證明pid曲線呈接近式樣的比較符合現(xiàn)場(chǎng)的情況。
3.舍棄了一個(gè)讀回?cái)?shù)據(jù),因?yàn)樵趍odbus內(nèi)存區(qū)距離特別遠(yuǎn)。記得當(dāng)時(shí)是4個(gè)需要的數(shù)據(jù)分布在3段內(nèi)存里,輪詢到該站時(shí),1,2讀一次,3段讀一次。最后舍棄了第3段。這樣處理后時(shí)間縮短至了2.幾秒,除了緊急減速那個(gè)有點(diǎn)勉強(qiáng)外,都能處理過來。
現(xiàn)場(chǎng)還有其它的modbus通訊,cp341讀取現(xiàn)場(chǎng)的溫度巡檢儀,modbus slave給其它廠家的dcs提供運(yùn)行數(shù)據(jù)和設(shè)備狀態(tài)等(modbus轉(zhuǎn)tcp網(wǎng)關(guān))。大家都喜歡modbus rtu的開放低成本,也很怕modbus rtu的龜速帶來的風(fēng)險(xiǎn)。