邵鵬程,姜智銳,杜國(guó)斌,顧開(kāi)祥
(上海中廣核工程科技有限公司 新產(chǎn)品研發(fā)部,上海,200241)
在風(fēng)電行業(yè)中有CANBus、EtherCat、ProfiBus等豐富的總線形式,其中風(fēng)電主控系統(tǒng)中還是廣泛應(yīng)用了RS-232、RS-485等串行通信形式[1]。其根本原因就是這些串行通信的兼容性較好、簡(jiǎn)單易用、成本低廉,能夠提供簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)以及點(diǎn)對(duì)多點(diǎn)的以字節(jié)為單位的通信[2]。
以2021年風(fēng)機(jī)控制器改造的某1.5MW樣機(jī)為例,主要外圍設(shè)備及所用通信方式如表1所示,可見(jiàn)串口通信在老舊風(fēng)機(jī)中使用頻率極高。
表1 某1.5MW機(jī)型主控系統(tǒng)外圍設(shè)備通訊方式
串口通信也有一些不足,其通信雙方波特率等各項(xiàng)通訊參數(shù)匹配程度要求嚴(yán)格,常用的RS485是半雙工通信方式,可能出現(xiàn)總線沖突情況。因此在風(fēng)機(jī)控制器與串口設(shè)備適配過(guò)程中,常出現(xiàn)誤碼、斷幀以及通信丟包等情況。由于現(xiàn)場(chǎng)通信設(shè)備種類較多,故障現(xiàn)象和體現(xiàn)形式各異,因此在應(yīng)用過(guò)程中一旦出現(xiàn)通信問(wèn)題常常需要投入大量的精力進(jìn)行故障定位分析。因此本文以工業(yè)現(xiàn)場(chǎng)中風(fēng)機(jī)控制器與串口設(shè)備通信幾項(xiàng)問(wèn)題作為分析案例,對(duì)串口通信問(wèn)題的現(xiàn)象及、原因和排查分析方法進(jìn)行了歸納和總結(jié),形成一般性的串口問(wèn)題定位方法。本文基于風(fēng)機(jī)主控改造過(guò)程中風(fēng)機(jī)控制器與各類串口設(shè)備的通信問(wèn)題解決的成功經(jīng)驗(yàn),建立并提出了串口通信問(wèn)題定位的系統(tǒng)流程及方法,可以為后續(xù)風(fēng)機(jī)控制器配套及主控系統(tǒng)改造過(guò)程中,串口設(shè)備通信問(wèn)題的分析定位提供系統(tǒng)流程及方法。
串口通信是風(fēng)機(jī)控制器與外部設(shè)備進(jìn)行數(shù)據(jù)交換最常用方式。常見(jiàn)的串口協(xié)議包括RS-232、RS-485和RS-422,協(xié)議規(guī)定了串口通信的接口電路的電氣特性,包括傳輸方式、有效正負(fù)電平值等[3]。串口通信按位(bit)發(fā)送和接收字節(jié)。
串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的設(shè)備,這些參數(shù)必須匹配[4]:
(1)波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。工業(yè)現(xiàn)場(chǎng)常用波特率9600、19200、38400等,高波特率常常用于放置的很近的儀器間的通信。
(2)數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn)ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。
(3)停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸在線定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。
(4)奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶數(shù)個(gè)或者奇數(shù)個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。
在風(fēng)機(jī)控制器與串口設(shè)備適配過(guò)程中由于串口通信異常而導(dǎo)致的現(xiàn)場(chǎng)故障現(xiàn)象可謂是五花八門,如表2所示。
表2 風(fēng)機(jī)控制器適配問(wèn)題中串口通訊問(wèn)題
故障現(xiàn)象概況起來(lái)有以下幾類:
(1)通信中斷、超時(shí);
(2)數(shù)據(jù)幀中軟心跳超時(shí);
(3)被控制設(shè)備動(dòng)作執(zhí)行滯后;
(4)各類通信故障字故障;
(5)被控設(shè)備狀態(tài)機(jī)跳轉(zhuǎn)異常,等等。
雖然現(xiàn)象各異但是實(shí)際對(duì)于串口通信而言基本可以歸因于表3所示的幾種基本串口故障類型。
表3 基本故障及可能原因
在通過(guò)故障現(xiàn)象確定故障類型后最耗費(fèi)人力和時(shí)間的是定位故障側(cè)以及故障的根本原因?;谏鲜鲲L(fēng)機(jī)主控改造過(guò)程中各類串口設(shè)備的通信問(wèn)題解決的成功經(jīng)驗(yàn),本文歸納了一套方便串口通信問(wèn)題分析定位的一般性系統(tǒng)流程和通用性方法。
在排查工作開(kāi)展前首先確認(rèn)連接器無(wú)斷路,并根據(jù)屏蔽接地和結(jié)構(gòu)件連接規(guī)范對(duì)物理鏈路進(jìn)行確認(rèn)。如果物理連接有異常,則首先完成連接件的替換和緊固。由物理鏈路斷開(kāi)導(dǎo)致的問(wèn)題后續(xù)分析中不再展開(kāi)。
在處理了多項(xiàng)串口通信故障后,發(fā)現(xiàn)故障分析定位的手段和步驟有許多共同之處。串口通信問(wèn)題分析定位的一般步驟可以分為:收集故障信息,建立研究對(duì)象模型,根據(jù)系統(tǒng)繪制故障樹(shù),總線數(shù)據(jù)監(jiān)聽(tīng),進(jìn)行故障分析定位。
圖1 串口通信問(wèn)題分析一般步驟
主控系統(tǒng)涉及范圍較廣,報(bào)出的故障形態(tài)多樣與實(shí)際故障點(diǎn)相去甚遠(yuǎn),對(duì)于控制器適配和調(diào)試工作造成很大的壓力,因此首先需要根據(jù)報(bào)出的故障碼,通過(guò)應(yīng)用程序內(nèi)的故障邏輯確立研究對(duì)象,并將研究對(duì)進(jìn)行簡(jiǎn)化。
一般可以將風(fēng)機(jī)中串口通信問(wèn)題的研究對(duì)象抽象為“風(fēng)機(jī)控制器-通信鏈路-被控對(duì)象”的點(diǎn)對(duì)點(diǎn)模型。通常風(fēng)機(jī)控制器作為主站,設(shè)備作為從站。主站一般會(huì)按照一個(gè)既定周期發(fā)出數(shù)據(jù),數(shù)據(jù)內(nèi)容基于設(shè)備商自定義的協(xié)議,風(fēng)機(jī)運(yùn)行時(shí)控制器會(huì)根據(jù)應(yīng)用程序切換數(shù)據(jù)內(nèi)容。
通過(guò)建立研究對(duì)象模型可以從復(fù)雜的主控系統(tǒng)中將故障相關(guān)的通信對(duì)象獨(dú)立成一個(gè)小系統(tǒng),僅考慮這個(gè)小系統(tǒng)內(nèi)部的通信機(jī)制和各項(xiàng)因素,縮小故障定位范圍。
圖2 控制器與串口設(shè)備點(diǎn)對(duì)點(diǎn)通信示意圖
結(jié)合通訊模型的故障形式可以繪制故障樹(shù)。
表4 故障樹(shù)對(duì)應(yīng)故障排查方法
圖3 點(diǎn)對(duì)點(diǎn)串口通信問(wèn)題故障樹(shù)
3.3.1 總線監(jiān)聽(tīng)
當(dāng)串口通信故障發(fā)生時(shí),最直接有效的定位手段就是對(duì)串行總線數(shù)據(jù)進(jìn)行監(jiān)聽(tīng),一般采用示波器和上位機(jī)串口助手進(jìn)行監(jiān)聽(tīng)。
對(duì)于點(diǎn)對(duì)點(diǎn)通信系統(tǒng),可從串行總線上并接一路監(jiān)聽(tīng)線到調(diào)試電腦和示波器端,進(jìn)行數(shù)據(jù)監(jiān)聽(tīng)。
示波器可以觀察總線上信號(hào)質(zhì)量,獲取準(zhǔn)確的信號(hào)波形,上位機(jī)串口助手可以解析數(shù)據(jù)包內(nèi)容,兩者結(jié)合再根據(jù)通信雙方應(yīng)答協(xié)議可以對(duì)發(fā)送數(shù)據(jù)內(nèi)容的準(zhǔn)確性分析。
圖4 監(jiān)測(cè)方法示意圖
對(duì)于示波器獲取的波形信號(hào)可以關(guān)注以下幾點(diǎn):
波形電平和質(zhì)量;數(shù)據(jù)響應(yīng)時(shí)長(zhǎng);數(shù)據(jù)包字節(jié)間隔;有無(wú)雜波干擾。
上位機(jī)串口助手能夠?qū)⒖偩€信號(hào)解析為數(shù)據(jù)內(nèi)容,在了解設(shè)備廠家定義的通信協(xié)議后可以確定監(jiān)聽(tīng)到的數(shù)據(jù)包來(lái)源是哪個(gè)設(shè)備,以及是否存在誤碼。對(duì)于抓包數(shù)據(jù)分析可以關(guān)注以下幾點(diǎn):
(1)主站是否按預(yù)期周期發(fā)起請(qǐng)求,數(shù)據(jù)是否完整,是否存在誤碼或斷幀;
(2)被控設(shè)備應(yīng)答時(shí)間,從站是否及時(shí)響應(yīng)數(shù)據(jù);
(3)在持續(xù)監(jiān)測(cè)過(guò)程中是否有偶發(fā)的通信中斷;
(4)從站響應(yīng)數(shù)據(jù)是否完整是否存在誤碼或斷幀情況。
3.3.2 模擬收發(fā)
使用上位機(jī)對(duì)通信設(shè)備進(jìn)行模擬收發(fā)是確認(rèn)通訊雙方設(shè)備是否處于正常通信狀態(tài)的有效手段,可以進(jìn)一步縮小排查對(duì)象的范圍。但是模擬收發(fā)沒(méi)法進(jìn)行高頻收發(fā)。即使擁有應(yīng)用程序,使用上位機(jī)控制風(fēng)機(jī)控制器進(jìn)行收發(fā),由于程序中某些執(zhí)行條件無(wú)法滿足,模擬收發(fā)還是無(wú)法進(jìn)行協(xié)議內(nèi)容的自動(dòng)切換,無(wú)法模擬通訊系統(tǒng)的動(dòng)態(tài)通信過(guò)程。
圖5 模擬收發(fā)設(shè)備連接
基于故障樹(shù)并可以按以下流程逐層對(duì)串口通信故障進(jìn)行分析和定位。A層對(duì)象包括風(fēng)機(jī)控制器、串口設(shè)備及物理連接鏈路,通過(guò)A層定位可確定故障對(duì)象縮小排除范圍。B層對(duì)象為A層對(duì)象下屬可能失效部分,通過(guò)B層定位可以初步完成故障原因定位。
通過(guò)故障樹(shù)結(jié)合排查總線監(jiān)聽(tīng)和模擬收發(fā)等排查方法基本上可以將故障所在范圍逐級(jí)減小,最終實(shí)現(xiàn)故障的定位。
圖6 串口通信問(wèn)題定位分析流程圖
現(xiàn)場(chǎng)案例2變槳控制異響
使用風(fēng)機(jī)控制器對(duì)變槳系統(tǒng)進(jìn)行調(diào)槳控制時(shí)會(huì)有異響,能通過(guò)執(zhí)行機(jī)構(gòu)運(yùn)行的聲音明顯分辨出調(diào)槳過(guò)程中速度快慢不勻的情況。
由于被控對(duì)象變槳系統(tǒng)是動(dòng)態(tài)執(zhí)行機(jī)構(gòu),在實(shí)驗(yàn)室靜態(tài)環(huán)境中無(wú)法構(gòu)建出動(dòng)態(tài)通信交互過(guò)程,為了直觀定位和驗(yàn)證問(wèn)題解決,協(xié)調(diào)了一套帶輪轂的變槳系統(tǒng)作為測(cè)試環(huán)境。
連接參數(shù)如下:
電平規(guī)范:RS485;
數(shù)據(jù)位:8位;
起始/停止位:各1位;
“天津消費(fèi)者品牌意識(shí)日益強(qiáng)烈,品牌形象與品牌文化越來(lái)越成為消費(fèi)者選購(gòu)商品時(shí)的重要影響因素,良好的品牌背書、獨(dú)特的品牌定位在市場(chǎng)競(jìng)爭(zhēng)中占據(jù)有利地位,這也是天津在酒業(yè)京津冀一體化中的重要基礎(chǔ)。明年的全國(guó)秋季糖酒會(huì)將在天津舉辦,這也是近年來(lái)糖酒會(huì)首次落戶北方,到時(shí)候歡迎大家到天津來(lái)!”天津市釀酒工業(yè)協(xié)會(huì)秘書長(zhǎng)李躍華在論壇互動(dòng)環(huán)節(jié)中的意外“爆料”,令在場(chǎng)企業(yè)家、經(jīng)銷商和媒體們興奮不已。
波特率:19200。
(1)確定系統(tǒng)對(duì)象
研究的對(duì)象系統(tǒng)為風(fēng)機(jī)控制器和變槳系統(tǒng)(變槳控制器加上執(zhí)行機(jī)構(gòu)),風(fēng)機(jī)控制器每80ms發(fā)送一條槳角控制指令,變槳系統(tǒng)根據(jù)指令執(zhí)行變槳,并回復(fù)指令。
(2)繪制故障樹(shù)
由于涉及執(zhí)行機(jī)構(gòu),故障樹(shù)中增加執(zhí)行機(jī)構(gòu)故障可能性。基于該系統(tǒng)結(jié)合故障現(xiàn)象,制作故障樹(shù)。
(3)通訊系統(tǒng)外故障排除
通過(guò)替換原控制器進(jìn)行調(diào)槳對(duì)比,未發(fā)現(xiàn)調(diào)槳過(guò)程中有速度不勻的異響,結(jié)合業(yè)主反饋的樣機(jī)的風(fēng)機(jī)變槳系統(tǒng)維護(hù)過(guò)程中未見(jiàn)異常,由此排除變槳執(zhí)行機(jī)構(gòu)端的故障。
A層定位
圖7 變槳異響故障樹(shù)
在故障系統(tǒng)中進(jìn)行總線監(jiān)聽(tīng),總線數(shù)據(jù)顯示控制器收發(fā)周期為160ms與預(yù)期通訊周期80ms不符。從站收到數(shù)據(jù)后回復(fù)數(shù)據(jù)時(shí)間在25ms左右,數(shù)據(jù)包未見(jiàn)斷幀現(xiàn)象。因此A層定位故障應(yīng)處于風(fēng)機(jī)控制器側(cè)。
圖8 總線監(jiān)聽(tīng)數(shù)據(jù)
B層故障定位
①風(fēng)機(jī)控制器硬件檢查
首先在實(shí)驗(yàn)室環(huán)境中使用測(cè)試用例對(duì)風(fēng)機(jī)控制器硬件模塊進(jìn)行模擬收發(fā)測(cè)試,模塊485通信模式下數(shù)據(jù)收發(fā)正常,無(wú)異常現(xiàn)象。控制器硬件無(wú)異常
②串口參數(shù)檢查
程序中設(shè)置串口參數(shù)與通訊要求一致。
③串口收發(fā)函數(shù)排查
調(diào)槳速率不均勻考慮兩方面原因,一方面是主控程序邏輯運(yùn)算后的調(diào)槳角度是否均勻,另一方面主控計(jì)算出的調(diào)槳角度對(duì)外通信需要調(diào)用風(fēng)機(jī)控制器庫(kù)函數(shù),若庫(kù)函數(shù)調(diào)用不當(dāng)會(huì)出現(xiàn)丟包情況。經(jīng)排查,程序中write函數(shù)調(diào)用方法與控制器串口發(fā)送特性不匹配導(dǎo)致丟包。
(4)原因分析
由函數(shù)調(diào)用機(jī)制可知,在應(yīng)用程序中中第一次執(zhí)行write函數(shù)體時(shí),CPU雖然已經(jīng)將數(shù)據(jù)發(fā)送出去了,但是仍至少要再執(zhí)行一次函數(shù)體才能完成底層發(fā)送流程。因此若按原應(yīng)用程序代碼中使用80ms計(jì)時(shí)器標(biāo)志位控制write函數(shù)體執(zhí)行會(huì)導(dǎo)致50%嚴(yán)重丟包。
若出現(xiàn)嚴(yán)重丟包,則調(diào)槳的角度梯度平滑性會(huì)受影響,預(yù)計(jì)會(huì)導(dǎo)致變槳過(guò)程中出現(xiàn)卡頓速度不勻等情況。
圖9
(5)實(shí)驗(yàn)驗(yàn)證
調(diào)整應(yīng)用程序中串口發(fā)送函數(shù)用法后再次通過(guò)總線數(shù)據(jù)抓包,串口數(shù)據(jù)發(fā)送周期滿足控制要求,變槳執(zhí)行機(jī)構(gòu)無(wú)異響。
圖10 修改發(fā)送函數(shù)調(diào)用方法后數(shù)據(jù)
(6)分析結(jié)論
綜上所述,變槳系統(tǒng)調(diào)槳速率不均勻的直接原因?yàn)椋L(fēng)機(jī)控制器與變槳控制器之間通信丟包導(dǎo)致調(diào)槳步長(zhǎng)拉長(zhǎng),而通信丟包是由于應(yīng)用程序?qū)ile_Write庫(kù)函數(shù)的調(diào)用方法不當(dāng)。
本文通過(guò)梳理串口通信標(biāo)準(zhǔn),基于風(fēng)機(jī)主控改造過(guò)程中風(fēng)機(jī)控制器與各類串口設(shè)備的通信問(wèn)題解決的成功經(jīng)驗(yàn),提出了串口通信問(wèn)題定位的一般性流程及方法。經(jīng)過(guò)實(shí)踐,根據(jù)該流程及方法,可提升串口通信問(wèn)題的定位分析效率,節(jié)約現(xiàn)場(chǎng)工程師調(diào)試時(shí)間。