程鯤鵬,楊 杰,劉新輝,李有創(chuàng),戴 林,姜 耀
(1.江蘇遠(yuǎn)望儀器集團(tuán)有限公司技術(shù)部,江蘇 泰州 225508;2.江蘇科技大學(xué)機(jī)械工程學(xué)院,江蘇 鎮(zhèn)江 212003)
目前,電動(dòng)閥門已廣泛應(yīng)用于船舶、化工和航空等領(lǐng)域,主要用于控制氣體、水或其他腐蝕性介質(zhì)等類型流體的流動(dòng)[1]。傳統(tǒng)的電動(dòng)閥門控制系統(tǒng)主要使用PLC進(jìn)行遠(yuǎn)程控制,但PLC方案往往具有控制價(jià)格較高和不利于系統(tǒng)集成化等缺點(diǎn)[2-3]。根據(jù)項(xiàng)目實(shí)際需求,本文設(shè)計(jì)了一種面向開度型電動(dòng)閥門的低成本、網(wǎng)絡(luò)化控制系統(tǒng),主要應(yīng)用于浮船塢浮態(tài)的自動(dòng)控制。其中,控制芯片采用高性能單片機(jī)STM32以替代原PLC實(shí)現(xiàn)的開度控制及狀態(tài)顯示等功能,并使用CAN總線進(jìn)行組網(wǎng)通信。
本閥門控制系統(tǒng)基于CAN總線[4-5]進(jìn)行設(shè)計(jì),其拓?fù)浣Y(jié)構(gòu)如圖1所示,主要由上位機(jī)、CAN收發(fā)器和若干控制器節(jié)點(diǎn)3部分組成。上位機(jī)是系統(tǒng)的控制終端,負(fù)責(zé)各閥門開度指令的下達(dá)及其實(shí)際開度大小的監(jiān)測(cè)反饋??刂破鞴?jié)點(diǎn)即為本文所設(shè)計(jì)的下位機(jī)控制模塊,它能夠面向各閥門發(fā)出具體的操控指令,并對(duì)各閥門反饋的開度狀態(tài)進(jìn)行實(shí)時(shí)采集、顯示或上傳。系統(tǒng)采用了電源隔離型CAN收發(fā)器芯片ADM3053,以便整個(gè)CAN網(wǎng)絡(luò)中各節(jié)點(diǎn)在CAN協(xié)議控制器與物理層總線之間實(shí)現(xiàn)完全隔離,避免可能存在的多節(jié)點(diǎn)連帶損壞的風(fēng)險(xiǎn)。
圖1 CAN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
下位機(jī)閥門控制器的硬件組成如圖2所示。該控制器采用雙MCU架構(gòu),通過主、從MCU的合理分工,有效保障了控制系統(tǒng)的實(shí)時(shí)性及其控制精度。其中,主控制器采用STM32F105VCT6芯片,主要負(fù)責(zé)與上位機(jī)進(jìn)行CAN通信、閥門開度的閉環(huán)控制,以及對(duì)應(yīng)開關(guān)量輸入/輸出的管理;從控制器采用STM32F103RCT6, 主要負(fù)責(zé)閥門實(shí)際開度反饋電流信號(hào)的實(shí)時(shí)采集和OLED屏幕的顯示。
圖2 控制器總體框架
另外,邏輯控制芯片主要用于系統(tǒng)中相關(guān)開關(guān)量的I/O管理,主要涉及到:不同工作模式下的開/關(guān)閥輸出信號(hào)、閥門狀態(tài)反饋輸入信號(hào),通過撥碼開關(guān)實(shí)現(xiàn)的閥門延時(shí)操作設(shè)置或故障模擬設(shè)置、閥門控制器ID地址及CAN通信波特率設(shè)置等。
在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),要注意以下幾點(diǎn)要求:
a.閥門開度的控制。閥門使用4~20 mA電流信號(hào)進(jìn)行實(shí)際開度大小反饋。在閥門運(yùn)行過程中,采用了硬件電路濾波和軟件數(shù)字濾波相結(jié)合的方法,有效保障了反饋電流的高精度檢測(cè)。同時(shí),系統(tǒng)采用了模糊PID控制算法,有利于提高開度閥在工況條件發(fā)生變化時(shí)的控制精度。另外,系統(tǒng)設(shè)計(jì)有全開/全關(guān)到位反饋電路。
b.閥門的控制模式。根據(jù)項(xiàng)目實(shí)際需求,為了滿足不同應(yīng)用場(chǎng)合對(duì)開度閥提出的不同控制需求并便于系統(tǒng)調(diào)試,系統(tǒng)設(shè)計(jì)有3種不同控制方式:現(xiàn)場(chǎng)電控柜控制、現(xiàn)場(chǎng)模擬板控制、基于CAN總線的上位機(jī)遠(yuǎn)程控制。
c.故障報(bào)警。在閥門控制過程中,可能會(huì)遇到某些故障問題,所以系統(tǒng)設(shè)計(jì)有故障檢測(cè)功能,如常見的開、關(guān)到位故障。當(dāng)發(fā)出閥門操作指令后,若在規(guī)定的時(shí)間沒有接收到對(duì)應(yīng)的閥門開度反饋電流信號(hào),則立即啟動(dòng)閥門故障檢測(cè)程序。
d.抗干擾設(shè)計(jì)。本閥門控制器最終將安裝在船上,其實(shí)際工作環(huán)境難免會(huì)存在各類干擾。為提高系統(tǒng)的可靠性,MCU輸出端均采用了光耦隔離保護(hù),以避免外界干擾可能給單片機(jī)造成的損壞。
開度閥使用4~20 mA電流作為開度控制信號(hào),其輸出電路如圖3所示。此電路使用了TI公司的XTR111(U3)芯片,該芯片僅需在其VIN引腳輸入0~3 V的電壓,就能線性輸出0~20 mA電流。本文使用主控制器內(nèi)置的DAC直接輸出0~3 V電壓信號(hào),經(jīng)過上述轉(zhuǎn)換電路后得到輸出范圍為0~20 mA的電流信號(hào)。在保障閥門開度控制電流段4~20 mA的基礎(chǔ)上,可利用0~4 mA段進(jìn)行控制電路故障的判斷。
圖3 開度控制信號(hào)輸出電路
因?qū)﹂y門反饋的4~20 mA電流信號(hào)直接進(jìn)行采樣較為困難,故先利用1個(gè)150 Ω采樣電阻(R2)進(jìn)行I/V轉(zhuǎn)換,然后再通過電壓跟隨器OPA4171(U1)進(jìn)行輸出。BAS70-04TL1(U4)主要用于限幅保護(hù),使單片機(jī)A/D轉(zhuǎn)換輸入電壓不大于3.3 V,以預(yù)防因其可能超限而損壞單片機(jī)芯片。具體電路如圖4所示。
圖4 電流采集電路
如圖5所示,上位機(jī)通過CAN通信發(fā)送指令給主MCU,主控制器通過解析功能碼執(zhí)行不同的功能程序;主MCU使用PID模糊算法對(duì)控制參數(shù)進(jìn)行動(dòng)態(tài)調(diào)整后輸出對(duì)應(yīng)控制信號(hào)。從MCU通過內(nèi)置軟件濾波算法對(duì)開度反饋電流進(jìn)行實(shí)時(shí)檢測(cè),轉(zhuǎn)換為閥門開度值后通過OLED屏幕顯示出來,同時(shí)將其通過定義好的通信協(xié)議發(fā)送給主MCU。主MCU通過比較上位機(jī)發(fā)送來的預(yù)期開度與從MCU檢測(cè)到的實(shí)際開度的差值大小,給各閥門發(fā)出相應(yīng)的開/關(guān)控制信號(hào)。
圖5 閥門開度控制軟件流程
本文設(shè)計(jì)的控制器采用了模糊PID算法[6-7],其基本思想如圖6所示,程序代碼采用C語言編寫。
圖6 模糊PID控制基本原理
閥門通過檢測(cè)反饋電流大小獲取閥門實(shí)時(shí)開度值,計(jì)算此時(shí)實(shí)際開度與預(yù)期開度的偏差E以及當(dāng)前偏差與上一次偏差的變化率EC。首先,程序需要對(duì)E和EC進(jìn)行模糊化,開度偏差E的變化區(qū)間是0到100,需要將E的區(qū)間分成8個(gè)部分:(0~12.5)、(12.5~25.0)、(25.0~37.5)、(37.5~50.0)、(50.0~62.5)、(62.5~75.0)、(75.0~87.5)、(87.5~100.0)。然后將12.5、25.0、37.5、50.0、62.5、75.0、87.5分別用NB、NM、NS、ZO、PS、PM、PB表示。通過反饋電流值可以計(jì)算出當(dāng)前的E和EC,通過模糊規(guī)則表1可以判斷出它們的隸屬度。
表1 模糊規(guī)則表
在計(jì)算出輸出值的隸屬度后,將輸出值的假設(shè)區(qū)間4~20(對(duì)應(yīng)4~20 mA控制電流信號(hào))劃分為8個(gè)部分,即7個(gè)隸屬值NB、NM、NS、ZO、PS、PM、PB。根據(jù)隸屬度乘以相應(yīng)的隸屬值算出輸出值的解。
在本系統(tǒng)中,通過將模糊規(guī)則二維查詢表固化在單片機(jī)程序中,閥門控制器根據(jù)給定的模糊規(guī)則進(jìn)行模糊推理,最后對(duì)模糊參數(shù)進(jìn)行清晰化,即可輸出實(shí)時(shí)的閥門控制PID參數(shù)。
系統(tǒng)采用雙CAN通信冗余設(shè)計(jì),有效保障了上位機(jī)控制指令的高效、準(zhǔn)確傳遞,并利用CAN通信能主動(dòng)報(bào)錯(cuò)的優(yōu)勢(shì),以便在快速發(fā)現(xiàn)通信故障的基礎(chǔ)上通過雙CAN口的自動(dòng)切換,實(shí)現(xiàn)上、下位機(jī)之間可靠的遠(yuǎn)程通信。其中,控制器使用CAN_ID作為指令的識(shí)別碼,CAN_ID由(控制板序號(hào))+功能碼組成。例如:ID為0x_ _ 9(_ _為控制板的序號(hào),9為主CAN開度對(duì)應(yīng)的功能碼),主CAN收發(fā)器對(duì)4路閥門進(jìn)行開度操作,前4個(gè)字節(jié)分別對(duì)應(yīng)4個(gè)閥門的開閥動(dòng)作,后4個(gè)字節(jié)保留不使用,0x00表示開度為0%,0x64表示開度100%。通過設(shè)定不同的功能碼,控制器可以實(shí)現(xiàn)開度指令下達(dá)、實(shí)時(shí)狀態(tài)反饋和故障信息報(bào)警等功能。
此外,針對(duì)運(yùn)行過程中的故障,在程序中編寫了故障檢測(cè)機(jī)制??刂破鲗?duì)閥門執(zhí)行的開度指令進(jìn)行分析,通過計(jì)算得出閥門開到預(yù)期開度所需要的時(shí)間,如果超過限定時(shí)間3 s還未開到預(yù)期開度值,將會(huì)主動(dòng)觸發(fā)故障警報(bào),控制器通過CAN通信將故障指令發(fā)送給上位機(jī),通過這樣主動(dòng)檢測(cè)故障的方式,可以及時(shí)排除故障,避免事故的發(fā)生。
本文所設(shè)計(jì)的下位機(jī)控制器實(shí)物及其測(cè)試場(chǎng)景如圖7所示。通過對(duì)開度型電動(dòng)閥門QTA-15進(jìn)行開度控制測(cè)試,以檢驗(yàn)閥門控制器的控制精度及其工作穩(wěn)定性。實(shí)驗(yàn)時(shí),使用上位機(jī)通過CAN網(wǎng)絡(luò)發(fā)送開度功能對(duì)應(yīng)的ID功能碼(0x_ _ 9)以及需要進(jìn)行的開度值(0~100%)控制指令,使閥門開至指定開度值,并將閥門上顯示的實(shí)際開度值與預(yù)期開度值進(jìn)行對(duì)比分析。
圖7 控制系統(tǒng)性能測(cè)試
將閥門開度值按0(全關(guān))—100%(全開)—0(全關(guān))的測(cè)試順序進(jìn)行全周期內(nèi)的開/關(guān)閥測(cè)試,開度間隔為5%,其測(cè)得的某組實(shí)驗(yàn)數(shù)據(jù)如圖8所示。其中,開度誤差指實(shí)際開度值與預(yù)期開度值的絕對(duì)差值。
圖8 閥門控制誤差曲線
實(shí)驗(yàn)表明:采用模糊PID控制算法后,能夠使下位機(jī)對(duì)閥門的控制精度達(dá)到0.6%以內(nèi),可以滿足一般的現(xiàn)場(chǎng)工業(yè)控制需求[8];閥門開度誤差帶有隨機(jī)性,難以實(shí)現(xiàn)零偏差控制,這是由于控制器輸出的控制電流信號(hào)是在一定區(qū)間上下波動(dòng)的,閥門輸出電流采樣時(shí)也會(huì)存在隨機(jī)噪聲。另外,電機(jī)轉(zhuǎn)動(dòng)及執(zhí)行機(jī)構(gòu)存在的偏差同樣難以避免。故在閥門開度控制過程中,不宜過度追求零偏差控制,否則閥門會(huì)在預(yù)期開度值附近出現(xiàn)頻繁的開、關(guān)閥操作,這不利于保證閥門的使用壽命。
進(jìn)行重復(fù)性實(shí)驗(yàn)時(shí),將閥門開度從0直接開至50%,重復(fù)10次,測(cè)得的數(shù)據(jù)如表2所示。
表2 重復(fù)性實(shí)驗(yàn)數(shù)據(jù)
用貝塞爾法計(jì)算上述數(shù)據(jù)的標(biāo)準(zhǔn)差,可得
本文設(shè)計(jì)了一種基于CAN總線的網(wǎng)絡(luò)化開度閥控制系統(tǒng),彌補(bǔ)了傳統(tǒng)PLC控制方案價(jià)格高昂和可嵌入性差的缺陷,在所需開度閥數(shù)量較多的場(chǎng)合,可迅速擴(kuò)充其通道數(shù),從而實(shí)現(xiàn)多通道開度閥的網(wǎng)絡(luò)化控制;使用模糊PID進(jìn)行開度偏差控制,使閥門能夠迅速穩(wěn)定在指定開度值附近,并可在船舶載荷突變情況下依然具有良好的控制精度。目前,該控制系統(tǒng)已經(jīng)在某型散貨船上進(jìn)行了裝機(jī)測(cè)試,能夠滿足在浮船塢浮態(tài)控制系統(tǒng)中對(duì)泵艙壓載進(jìn)排水遙控閥的實(shí)際需求。