魏列江, 安貞嬛, 李健偉, 趙保才, 毛飛鴻, 強(qiáng) 彥,3
(1.蘭州理工大學(xué) 能源與動(dòng)力工程學(xué)院, 甘肅 蘭州 730050;2.中國(guó)北方車輛研究所 車輛傳動(dòng)重點(diǎn)實(shí)驗(yàn)室, 北京 100072; 3.東南大學(xué) 能源與環(huán)境學(xué)院, 江蘇 南京 211189)
智能工程機(jī)械采用智能多路閥控制多個(gè)執(zhí)行機(jī)構(gòu),獲得多執(zhí)行機(jī)構(gòu)的協(xié)同聯(lián)動(dòng)[1]。傳統(tǒng)控制方法是采用分布式控制,即各聯(lián)閥控制器單獨(dú)完成閥內(nèi)參數(shù)閉環(huán)控制,由于受現(xiàn)場(chǎng)安裝空間、工作環(huán)境和成本所限,內(nèi)置在閥中的閥控制器功能單一、實(shí)現(xiàn)復(fù)雜優(yōu)化控制算法困難、各聯(lián)閥控制結(jié)果實(shí)時(shí)交互性差,難以滿足智能工程機(jī)械中多執(zhí)行機(jī)構(gòu)精準(zhǔn)快速協(xié)同聯(lián)動(dòng)的要求[2]。隨著現(xiàn)代嵌入式計(jì)算機(jī)可靠性和性能的大幅提升,采用一臺(tái)功能強(qiáng)大的整機(jī)控制器控制所有智能閥的集中控制模式[3],更易實(shí)現(xiàn)智能多路閥的協(xié)同聯(lián)動(dòng)控制算法,方便全局監(jiān)測(cè)模式,閥控制器只做閥內(nèi)參數(shù)采集、存取、傳輸和功率放大,通過CAN總線與整機(jī)控制器進(jìn)行數(shù)據(jù)交互,可極大簡(jiǎn)化閥控制器功能,實(shí)現(xiàn)閥控制器標(biāo)準(zhǔn)化構(gòu)建,提高多執(zhí)行機(jī)構(gòu)協(xié)調(diào)控制的快速性和柔性[4]。但是,在集中控制模式下,整機(jī)控制器完成各聯(lián)閥的閉環(huán)控制并集中管理,且在集中控制模式下,閥控制器只做閥內(nèi)參數(shù)采集、存取、傳輸和功率放大,通過CAN總線與整機(jī)控制器進(jìn)行數(shù)據(jù)交互,極大簡(jiǎn)化閥控制器功能,實(shí)現(xiàn)閥控制器的標(biāo)準(zhǔn)化,提高多執(zhí)行機(jī)構(gòu)協(xié)調(diào)控制的快速性和柔性[5]。采用集中控制方案中的反饋參數(shù)均需通過CAN總線由閥控制器發(fā)送至整機(jī)控制器中,整機(jī)控制器需要快速接受、存取和處理大量數(shù)據(jù),采用傳統(tǒng)順序緩沖區(qū)存取數(shù)據(jù)的方法往往會(huì)造成較大延時(shí),導(dǎo)致控制性能下降甚至失效[6]。
國(guó)內(nèi)對(duì)CAN總線展開的研究有:杜峰等[7]在負(fù)載率固定的情況下,分析對(duì)CAN總線數(shù)據(jù)傳輸延時(shí)的問題并提出一種改善延時(shí)的方案,減少長(zhǎng)延時(shí)的數(shù)據(jù)包數(shù)量,但忽略了傳輸過程中CAN控制器和軟件產(chǎn)生的延時(shí);董權(quán)威等[8]在自主水下航行器中率先使用了CAN總線的分布式控制系統(tǒng)設(shè)計(jì)方案,將自主水下航行器的功能分部到不同的控制節(jié)點(diǎn)中,但是未考慮CAN總線通信錯(cuò)誤對(duì)控制系統(tǒng)的影響;金振華[9]提出將CAN總線技術(shù)應(yīng)用至分布式數(shù)控系統(tǒng)中,改進(jìn)數(shù)控系統(tǒng),但是未考慮在實(shí)時(shí)性要求較高的應(yīng)用場(chǎng)合中,分布式控制系統(tǒng)由于數(shù)據(jù)傳輸產(chǎn)生延時(shí),導(dǎo)致分布式控制系統(tǒng)不穩(wěn)定的問題。
綜上所述,將CAN總線應(yīng)用至閥控系統(tǒng)中雖已取得一定程度的研究,但研究人員往往將CAN總線作為數(shù)據(jù)傳輸?shù)氖侄?并未考慮CAN總線進(jìn)行數(shù)據(jù)傳輸時(shí),數(shù)據(jù)存取環(huán)節(jié)給控制系統(tǒng)帶來的不利影響,無法保證實(shí)時(shí)控制系統(tǒng)中各控制節(jié)點(diǎn)的可靠性[10]。為實(shí)現(xiàn)智能工程機(jī)械各執(zhí)行機(jī)構(gòu)的協(xié)同聯(lián)動(dòng)控制,可采用智能多路閥的控制算法在整機(jī)控制器內(nèi)集中實(shí)現(xiàn),整機(jī)控制器與各聯(lián)多路閥之間采用CAN總線實(shí)現(xiàn)數(shù)據(jù)交互,當(dāng)數(shù)據(jù)量較大時(shí),因CAN總線進(jìn)行數(shù)據(jù)存取環(huán)節(jié)造成的延遲會(huì)嚴(yán)重影響控制性能,甚至造成控制失效[11]。提出整機(jī)控制器采用環(huán)形緩沖區(qū)代替?zhèn)鹘y(tǒng)的順序緩沖區(qū)的解決方案,通過檢測(cè)環(huán)形緩沖區(qū)是否存在未寫入數(shù)據(jù)的空白區(qū)域,將CAN總線傳輸?shù)亩嗦烽y參數(shù)依次寫入空白緩沖區(qū),顯著提高CAN總線中數(shù)據(jù)存取環(huán)節(jié)的速度,從而減少CAN總線進(jìn)行數(shù)據(jù)傳輸時(shí)的延時(shí)時(shí)長(zhǎng)。
分布式控制在實(shí)現(xiàn)智能閥控制時(shí),由于閥控制器性能所限,速度慢、協(xié)調(diào)難,因此直接實(shí)現(xiàn)協(xié)同控制難度大[12]。為提高執(zhí)行機(jī)構(gòu)的協(xié)同控制,提出整機(jī)控制器集中控制模式,由整機(jī)控制器承擔(dān)網(wǎng)絡(luò)通信處理,接受采集數(shù)據(jù)、計(jì)算數(shù)據(jù)處理[13]。由整機(jī)控制器產(chǎn)生控制指令并下傳給控制系統(tǒng)中的閥控制器節(jié)點(diǎn),閥根據(jù)指令執(zhí)行動(dòng)作,傳感器采集現(xiàn)場(chǎng)實(shí)時(shí)數(shù)據(jù),將數(shù)據(jù)上傳給整機(jī)控制器,整機(jī)控制器功能強(qiáng)大,擴(kuò)展性強(qiáng),同時(shí)可將閥控制器標(biāo)準(zhǔn)化、功能單一化[14]。但是,采用整機(jī)控制器集中控制模式存在通信數(shù)據(jù)量大的問題,應(yīng)著重考慮數(shù)據(jù)量的傳輸快速性[15],減少數(shù)據(jù)傳輸過程中的延時(shí),本研究在整機(jī)控制器處設(shè)置環(huán)形緩沖區(qū),減少接收存儲(chǔ)環(huán)節(jié)帶來的延時(shí)問題,以此減輕CAN總線延時(shí)問題。
采用CAN總線進(jìn)行數(shù)據(jù)交互的集中式智能閥系統(tǒng)結(jié)構(gòu)如圖1所示,整機(jī)控制器將指令信號(hào)分解為多路閥A聯(lián)、多路閥B聯(lián)、…、多路閥N聯(lián)的給定信號(hào),閥控制器1、2、…、n接收到給定信號(hào)后,產(chǎn)生PWM信號(hào)控制比例電磁鐵帶動(dòng)先導(dǎo)閥閥芯,液壓油通過先導(dǎo)閥閥口進(jìn)入主閥芯,產(chǎn)生的液壓力克服彈簧力、液動(dòng)力、摩擦力推動(dòng)主閥運(yùn)動(dòng)[16],在每聯(lián)導(dǎo)閥、主閥處裝設(shè)傳感器(如圖1中傳感器1.1、傳感器1.2、…傳感器n.1、傳感器n.2),完成對(duì)導(dǎo)閥、主閥實(shí)時(shí)狀態(tài)信息的采集,采集到的實(shí)時(shí)信息進(jìn)入閥控制器完成A/D轉(zhuǎn)換后,閥控制器通過CAN總線向整機(jī)控制器發(fā)送導(dǎo)閥、主閥的實(shí)時(shí)狀態(tài)信息,整機(jī)控制器對(duì)比指令信號(hào)與各路閥實(shí)時(shí)狀態(tài)信息的偏差后,統(tǒng)一完成各個(gè)閥芯的閉環(huán)控制,最終實(shí)現(xiàn)整機(jī)控制器的閉環(huán)控制[17]。
圖1 整機(jī)控制器集中控制的多路閥系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of multi way valve system under centralized control of complete machine controller
分析該系統(tǒng)時(shí),將閥控制器、導(dǎo)閥、主閥共同作為被控對(duì)象,輸入信號(hào)是整機(jī)控制器發(fā)送的指令信號(hào),輸出為主閥的位移,傳感器采集主閥的實(shí)時(shí)位移信息,通過CAN總線作為反饋通道發(fā)送數(shù)據(jù)至整機(jī)控制器,經(jīng)整機(jī)控制器中的協(xié)同控制策略實(shí)現(xiàn)對(duì)反饋信號(hào)的補(bǔ)償,以達(dá)到預(yù)期控制需求[18]。經(jīng)過上述等效,以多路閥內(nèi)部某一聯(lián)主閥的位移閉環(huán)控制為例,其等效結(jié)構(gòu)如圖2所示。
圖2 一聯(lián)多路閥等效控制結(jié)構(gòu)Fig.2 Equivalent control structure of one way multi way valve
將一聯(lián)主閥的給定位移與其他主閥的實(shí)際位移結(jié)果進(jìn)行運(yùn)算,其運(yùn)算結(jié)果作為該閥控制器的位移給定信號(hào),整個(gè)閉環(huán)控制系統(tǒng)由于依賴CAN總線進(jìn)行信息傳遞,不可避免會(huì)帶來延時(shí)問題,通信延時(shí)過大會(huì)造成閉環(huán)控制系統(tǒng)紊亂,影響控制系統(tǒng)的性能指標(biāo),如超調(diào)量、響應(yīng)時(shí)間等,導(dǎo)致多路閥系統(tǒng)的協(xié)同控制能力下降、操作性能下降[19]。
將一聯(lián)主閥給定位移與其他主閥的實(shí)際位移結(jié)果進(jìn)行運(yùn)算,其運(yùn)算結(jié)果作為該閥控制器的給定信號(hào),整個(gè)閉環(huán)控制系統(tǒng)由于依賴CAN總線進(jìn)行信息傳遞,不可避免會(huì)帶來延時(shí)問題, 通信延時(shí)過大會(huì)造成閉環(huán)控制系統(tǒng)紊亂,影響控制系統(tǒng)的性能指標(biāo),如超調(diào)量、響應(yīng)時(shí)間等,導(dǎo)致多路閥系統(tǒng)的協(xié)同控制能力下降、操作性能下降。
整機(jī)控制器采用PID控制,其控制框圖如圖3所示,R(k)為工控機(jī)發(fā)出的目標(biāo)位移,T(k)為整機(jī)控制器的控制特性,即控制器計(jì)算得到的閥芯目標(biāo)位移;τsc(k)為第k個(gè)控制周期內(nèi),傳感器到控制器的通信延時(shí);τcs(k)為第k個(gè)控制周期內(nèi),控制器到傳感器的通信延時(shí)。Y(k)為主閥的實(shí)際位移,G(k)為導(dǎo)閥—主閥的傳遞函數(shù)模型,表征目標(biāo)位移輸入電信號(hào)到主閥位移輸出的響應(yīng)特性。
圖3 一聯(lián)多路閥控制框圖Fig.3 Block diagram of one way multi way valve control
先導(dǎo)閥傳遞函數(shù)為:
(1)
式中,Ku—— 比例電磁鐵電流-力增益
R—— 比例電磁鐵等效電阻
KL—— 先導(dǎo)閥彈簧剛度
ω0—— 先導(dǎo)閥二階震蕩環(huán)節(jié)固有頻率
ξ0—— 阻尼關(guān)系
Ks—— 動(dòng)生反電動(dòng)勢(shì)系數(shù)
Ksp—— 作用在銜鐵上的機(jī)械彈簧剛度
KL—— 閥芯穩(wěn)態(tài)液動(dòng)力剛度
主閥傳遞函數(shù)為:
(2)
式中,Kq—— 零位流量增益
A—— 主閥芯有效作用面積
M—— 主閥芯質(zhì)量
V0—— 主閥上下兩端容積平均值
Kc—— 零位壓力流量系數(shù)
Cep—— 閥外泄漏系數(shù)
βv—— 主閥黏性阻尼系數(shù)
βe—— 有效體積彈性模量
Ksm—— 穩(wěn)態(tài)液動(dòng)力系數(shù)
Km—— 主彈簧剛度
G(k)為導(dǎo)閥輸入驅(qū)動(dòng)電壓信號(hào)(V) —主閥輸出位移(m)的前向通道傳遞函數(shù):
(3)
通常來說,在設(shè)計(jì)階段,系統(tǒng)期望的性能指標(biāo)是按照無通信延時(shí)的情況來設(shè)計(jì)的,此時(shí)系統(tǒng)控制率和系統(tǒng)輸出為[19]:
T0(k)=F(e(k))=F(R(k)-Y(k))
(4)
(5)
式中,T0(k) —— 第k個(gè)控制周期內(nèi),期望控制指令
e(k) —— 第k個(gè)控制周期內(nèi),期望輸出誤差
在實(shí)際的系統(tǒng)中,由于存在通信延時(shí),系統(tǒng)的系統(tǒng)控制率和系統(tǒng)輸出為:
T(k)=F(e(k))=F(R(k)-Y(k-τsc(k))-
Y1(k-τcs(k))…-Yn(k-
τcs(k)))
(6)
(7)
式中,τsc(k) —— 第k個(gè)控制周期內(nèi),傳感器到控制器的通信延時(shí)
τcs(k) —— 第k個(gè)控制周期內(nèi),控制器到傳感器的通信延時(shí)
將式(5)和式(7)對(duì)比可見,控制指令的延時(shí)導(dǎo)致控制作用時(shí)間變短,在[kTc,(k+τcs(k))Tc]時(shí)間內(nèi),實(shí)際控制指令為上一周期T(k-1)的控制指令,[((k+τcs(k))Tc,(k+1)Tc]時(shí)間內(nèi),實(shí)際控制指令為這一周期T(k)的控制指令。CAN通信網(wǎng)絡(luò)中信息傳遞分為周期信息和非周期信息,周期性信息以傳感器采集信息值為主,定時(shí)向整機(jī)控制器發(fā)送自身設(shè)備狀態(tài)的信息,將周期信息中出現(xiàn)的延時(shí)考慮為常量且此延時(shí)小于一個(gè)采樣周期,簡(jiǎn)化分析多路閥反饋系統(tǒng)中出現(xiàn)的延時(shí),在反饋環(huán)節(jié)產(chǎn)生延時(shí)Tdelay的閉環(huán)控制系統(tǒng)的傳遞函數(shù)為[20]:
(8)
Tdelay由以下幾個(gè)通信延時(shí)環(huán)節(jié)組成,分別為:
Tdelay=Tsource+Tframe+Tts+Trev+Tsink
(9)
式中,Tsource—— 整機(jī)控制器對(duì)數(shù)據(jù)發(fā)送打包所用的時(shí)間
Tframe—— 數(shù)據(jù)幀進(jìn)入緩沖區(qū)等待發(fā)送直到消息發(fā)送完成所用的時(shí)間
Tts—— 數(shù)據(jù)傳輸時(shí)間,此處為數(shù)據(jù)幀在雙絞線介質(zhì)中傳輸所用的時(shí)間
Trev—— 解包產(chǎn)生的時(shí)間,此處為閥控制器對(duì)CAN總線傳輸來的數(shù)據(jù)幀進(jìn)行解釋、計(jì)算、執(zhí)行所用的時(shí)間,當(dāng)數(shù)據(jù)量即傳輸周期固定時(shí),以上各部分的延時(shí)可以視為確定值
Tsink—— 將數(shù)據(jù)讀入整機(jī)控制器處緩沖區(qū)所用的時(shí)間,如果CAN通信網(wǎng)絡(luò)中流量過大,則會(huì)出現(xiàn)擁塞,致使排隊(duì)時(shí)間無法預(yù)測(cè),成為傳輸時(shí)延不確定性的主要因素,因此降低數(shù)據(jù)幀將數(shù)據(jù)讀入主控芯片緩沖區(qū)所用的時(shí)間Tsink是很有必要的[21]
本研究將著重考慮Tsink,顯著提高CAN總線數(shù)據(jù)存取環(huán)節(jié)的速度,從而減少CAN總線進(jìn)行數(shù)據(jù)傳輸時(shí)的延時(shí)時(shí)長(zhǎng)。
在波特率為250 Kbps的CAN通信網(wǎng)絡(luò)中,以考慮在反饋部分引入延時(shí)環(huán)節(jié)的多路閥系統(tǒng)仿真狀態(tài)如圖4所示,橫坐標(biāo)表示為時(shí)間(s),縱坐標(biāo)表示為主閥閥芯位移(mm),將τsc分別設(shè)置為0, 0.15, 0.25 ms,反饋環(huán)節(jié)的延時(shí)時(shí)間過大時(shí),將嚴(yán)重影響多路閥系統(tǒng)的穩(wěn)定性,出現(xiàn)震蕩問題,因此在多路閥系統(tǒng)中應(yīng)極力縮短CAN通信帶來的延時(shí)問題,以提高響應(yīng)時(shí)間。現(xiàn)引入CAN通信的控制網(wǎng)絡(luò)中常忽略軟件產(chǎn)生的延時(shí),但真實(shí)的情況是,若對(duì)數(shù)據(jù)處理不妥當(dāng),軟件延時(shí)會(huì)出現(xiàn)數(shù)據(jù)接收與數(shù)據(jù)處理速度的不匹配,從而造成數(shù)據(jù)幀延遲甚至丟失,甚至引起液壓控制系統(tǒng)的不穩(wěn)定甚至失效。因此考慮在多路閥集中式控制系統(tǒng)中引入環(huán)形緩沖區(qū)減少延時(shí)。
圖4 反饋環(huán)節(jié)引入延時(shí)對(duì)多路閥系統(tǒng)的影響Fig.4 Influence of time delay of feedback link on multi way valve system
對(duì)于順序緩沖區(qū),只有將存入順序緩沖區(qū)的數(shù)據(jù)全部讀取完畢后,才能繼續(xù)接收數(shù)據(jù),這種結(jié)構(gòu)對(duì)于海量數(shù)據(jù)量高速傳輸下的多路閥系統(tǒng)是不能容忍的[22]。較順序緩沖區(qū),環(huán)形緩沖區(qū)面對(duì)多路閥協(xié)同控制通信網(wǎng)絡(luò)具有較強(qiáng)的適應(yīng)性,通過檢測(cè)頭指針與尾指針的位置來判斷是否存在未寫入數(shù)據(jù)的空白區(qū)域。當(dāng)頭指針與尾指針不相等時(shí),表明緩沖區(qū)內(nèi)存在未寫入數(shù)據(jù)的區(qū)域,可以向整機(jī)控制器內(nèi)置的緩沖區(qū)內(nèi)寫入各聯(lián)主閥的位移信號(hào),在接收數(shù)據(jù)的同時(shí),處理器可從緩沖區(qū)讀取數(shù)據(jù),數(shù)據(jù)接收與數(shù)據(jù)發(fā)送過程互不影響。
此外在判斷環(huán)形隊(duì)列緩沖區(qū)為空還是滿時(shí),是通過判斷整機(jī)控制器內(nèi)置的環(huán)形緩沖區(qū)的頭、尾指針是否相等來實(shí)現(xiàn)的,具體操作為:
假設(shè)整機(jī)控制器內(nèi)置的環(huán)形緩沖區(qū)數(shù)組長(zhǎng)度為size,R為寫入指針,W為讀出指針。
讀指針>寫指針,存入的數(shù)據(jù)為R-W;
寫指針>讀指針,存入的數(shù)據(jù)為size-(W-R);
寫指針=讀指針,存入的數(shù)據(jù)為size。
整機(jī)控制器內(nèi)置環(huán)形緩沖區(qū)具體實(shí)現(xiàn)流程如圖5所示,環(huán)形緩沖區(qū)的讀、寫兩個(gè)指針頻繁在操作,要避免讀、寫指針的誤操作導(dǎo)致緩沖區(qū)數(shù)據(jù)誤修改,因此環(huán)形緩沖區(qū)內(nèi)的數(shù)據(jù)保護(hù)非常重要。環(huán)形緩沖區(qū)的大小設(shè)計(jì)是非常重要的一個(gè)環(huán)節(jié)。若內(nèi)存設(shè)置過小,會(huì)覆蓋掉尚未發(fā)送出去的數(shù)據(jù),導(dǎo)致數(shù)據(jù)丟失;若內(nèi)存設(shè)置太大,則耗費(fèi)嵌入式處理器有限內(nèi)存資源,不利于其他部分代碼的編寫。因此,設(shè)計(jì)合理大小的緩沖區(qū)非常關(guān)鍵,需要對(duì)環(huán)形緩沖區(qū)內(nèi)存空間進(jìn)行設(shè)置[23]。
圖5 整機(jī)控制器內(nèi)置環(huán)形緩沖區(qū)實(shí)現(xiàn)流程Fig.5 Realization process of built-in ring buffer of machine controller
整機(jī)控制器存取一條信息中所需要的最大內(nèi)存空間(位數(shù))為:
σ=[(11(ID)+64(DATA))]
(10)
整機(jī)控制器的存儲(chǔ)器是以1 Bytes即8 bit為單位設(shè)計(jì)的,所以式(10)中的bit數(shù)要向上取整成8的整數(shù),11取整成16,得到環(huán)形緩沖區(qū)最小內(nèi)存空間應(yīng)為:
σ=2+8=10
(11)
整機(jī)控制器環(huán)形緩沖區(qū)只需存取指令信號(hào)、各聯(lián)閥芯的位移信號(hào),為便于計(jì)算,每條信息都以存取報(bào)文的最大內(nèi)存空間進(jìn)行計(jì)算,故整機(jī)控制器緩沖區(qū)大小應(yīng)為10 Bytes數(shù)據(jù)的倍數(shù)。
整機(jī)控制器數(shù)據(jù)存取采用環(huán)形緩沖區(qū)實(shí)現(xiàn),算法如圖6所示。
圖6 環(huán)形緩沖區(qū)算法實(shí)現(xiàn)Fig.6 Implementation of ring buffer algorithm
同樣的測(cè)試環(huán)境下分別對(duì)比整機(jī)控制器內(nèi)置順序緩沖區(qū)緩存處理方法和本研究所提出的整機(jī)控制器內(nèi)置環(huán)形緩沖區(qū)緩存處理方法進(jìn)行實(shí)驗(yàn)對(duì)比[20],以研究?jī)陕?lián)多路閥為例,其測(cè)試的環(huán)境如表1所示。
表1 測(cè)試環(huán)境Tab.1 Testing environment
多路閥系統(tǒng)內(nèi)部通信實(shí)驗(yàn)原理圖如圖7所示。
圖7 多路閥系統(tǒng)內(nèi)部通信實(shí)驗(yàn)原理圖Fig.7 Schematic diagram of internal communication experiment of multi way valve system
由圖7可知,整機(jī)控制器發(fā)送指令信號(hào)至整機(jī)控制器,通過整機(jī)控制器發(fā)送給定信號(hào)至各聯(lián)閥內(nèi)部的閥控制器,同時(shí)將主閥處的位移信號(hào)通過CAN總線發(fā)送給整機(jī)控制器,在這里使用隨機(jī)數(shù)模擬采集到的閥控制器的位移信號(hào)做實(shí)時(shí)數(shù)據(jù), 將閥控制器隨機(jī)生成的數(shù)據(jù)通過CAN總線網(wǎng)絡(luò)發(fā)送給整機(jī)控制器[24],以此對(duì)比順序緩沖區(qū)存取和環(huán)形緩沖區(qū)存取兩種數(shù)據(jù)處理方式的代碼效率和內(nèi)存效率,驗(yàn)證所提方法的有效性。
依據(jù)本研究提出環(huán)形緩沖區(qū)的設(shè)計(jì),完成了面向智能多路閥高速CAN通信數(shù)據(jù)環(huán)形緩存技術(shù)的程序開發(fā),并進(jìn)行實(shí)驗(yàn)驗(yàn)證,實(shí)驗(yàn)裝置如圖8所示,其中直流穩(wěn)壓電源提供+24 V直流電壓,采用CANTest完成對(duì)多路閥內(nèi)部的閥控制器進(jìn)行數(shù)據(jù)收發(fā)測(cè)試及記錄,Keil uVision 5.14完成程序代碼效率及內(nèi)存效率數(shù)據(jù)的測(cè)試。分別將緩沖區(qū)內(nèi)存設(shè)置為40 Bytes(CAN總線一幀數(shù)據(jù)存入緩沖區(qū)所占用內(nèi)存為10 Bytes),分別驗(yàn)證順序緩沖區(qū)和環(huán)形緩沖區(qū)存取數(shù)據(jù)的代碼效率和內(nèi)存效率。
1.上位機(jī) 2.直流穩(wěn)壓電源 3.某聯(lián)多路閥閥控制器1 4.某聯(lián)多路閥閥控制器2 5.USB&CAN分析儀 6.整機(jī)控制器圖8 實(shí)驗(yàn)裝置實(shí)驗(yàn)圖Fig.8 Experimental drawing of experimental device
本研究在整機(jī)控制器的程序設(shè)計(jì)中引入環(huán)形緩沖區(qū)的函數(shù)為ringbuff_write、ringbuff_read;使用順序緩沖區(qū)的讀寫函數(shù)為fifo_push、fifo_pop,編譯后代碼量如圖9、圖10所示。可見整機(jī)控制器程序內(nèi),環(huán)形緩沖區(qū)的使用較傳統(tǒng)隊(duì)列指令較少。
圖9 順序緩沖區(qū)編譯后代碼量Fig.9 Compiled code amount of sequential queue
圖10 環(huán)形隊(duì)列編譯后代碼量Fig.10 Compiled code amount of ring queue
整機(jī)控制器的程序中的主函數(shù)部分,對(duì)以上兩種緩沖區(qū)的讀取和接收進(jìn)行測(cè)試,為使覆蓋率達(dá)100%,分別寫入緩沖區(qū)100次,讀出緩沖區(qū)100次,得到執(zhí)行程序所用時(shí)間和執(zhí)行效率如圖11~圖14所示。
圖11 順序緩沖區(qū)覆蓋率達(dá)100%程序所用時(shí)間Fig.11 Time taken for program with 100% sequential queue coverage
圖12 環(huán)形隊(duì)列覆蓋率達(dá)100%程序所用時(shí)間Fig.12 Time taken for program with 100% ring queue coverage
圖13 順序緩沖區(qū)覆蓋率達(dá)100%程序執(zhí)行效率Fig.13 Sequential queue coverage reaches 100% program execution efficiency
圖14 環(huán)形隊(duì)列覆蓋率達(dá)100%程序執(zhí)行效率Fig.14 Circular queue coverage reaches 100% program execution efficiency
對(duì)比實(shí)驗(yàn)數(shù)據(jù)可知,分別采用整機(jī)控制器內(nèi)置緩沖區(qū)采用環(huán)形緩沖區(qū)、順序緩沖區(qū)進(jìn)行對(duì)比,得出:每接收100個(gè)數(shù)據(jù),順序緩沖區(qū)所用時(shí)間為0.85 ms,環(huán)形緩沖區(qū)所用時(shí)間為0.45 ms,每發(fā)送100個(gè)數(shù)據(jù),順序緩沖區(qū)所用時(shí)間為0.79 ms,環(huán)形緩沖區(qū)所用時(shí)間為0.45 ms,每讀取、接收100個(gè)主閥位移數(shù)據(jù),順序緩沖區(qū)所用時(shí)間為1.64 ms,環(huán)形緩沖區(qū)所用時(shí)間為0.9 ms,使用環(huán)形緩沖區(qū)所用時(shí)間縮短了43.75%,可實(shí)現(xiàn)多路閥內(nèi)部閥控制器之間更高效率的數(shù)據(jù)傳遞。
根據(jù)對(duì)緩沖區(qū)讀寫指針的操作規(guī)定,整機(jī)控制器數(shù)據(jù)讀出的速度應(yīng)小于主閥位移數(shù)據(jù)寫入的速度,設(shè)置分別數(shù)據(jù)輸出流與輸入流之差(Vout-Vin)分別為1200, 2400 Bytes/s時(shí)[25],整機(jī)控制器內(nèi)置緩沖區(qū)采用環(huán)形緩沖區(qū)、順序緩沖區(qū)的利用率與寫入緩沖區(qū)的數(shù)據(jù)關(guān)系如圖15所示。由圖15可知,橫坐標(biāo)為緩沖區(qū)現(xiàn)有的數(shù)據(jù)量,縱坐標(biāo)表示為緩沖區(qū)利用率,數(shù)據(jù)輸出流與輸入流之差不影響整機(jī)控制器內(nèi)置環(huán)形緩沖區(qū)的內(nèi)存效率,環(huán)形緩沖區(qū)的利用率最終均達(dá)到99.00%,而采用整機(jī)控制器內(nèi)置順序緩沖區(qū)的緩存效率根據(jù)數(shù)據(jù)輸出流與輸入流之差的不同會(huì)受到影響,數(shù)據(jù)輸出流與輸入流之差分別為2400 Bytes/s時(shí),順序緩沖區(qū)最大利用率為57.14%,數(shù)據(jù)輸出流與輸入流之差分別為1200 Bytes/s時(shí),緩沖區(qū)利用率最大為42.47%,在輸出流與輸入流之差在速率相同的情況下,且代碼未完全覆蓋環(huán)形緩沖區(qū),此時(shí)數(shù)據(jù)輸出流與輸入流之差為定值時(shí),整機(jī)控制器內(nèi)置環(huán)形緩沖區(qū)利用率上升速率略大于順序緩沖區(qū)的方式。
圖15 隊(duì)列與順序緩沖區(qū)內(nèi)存效率測(cè)試圖Fig.15 Memory efficiency test chart of circular queue and sequential queue
本研究提出整機(jī)控制器內(nèi)置環(huán)形緩沖區(qū)的集中控制模式,整機(jī)控制器直接控制每聯(lián)多路閥并完成閉環(huán)控制,通過對(duì)該模式進(jìn)行代碼效率及內(nèi)存效率的測(cè)試,試驗(yàn)結(jié)果表明該模式具有以下特點(diǎn):
(1) 在CAN總線數(shù)據(jù)傳輸過程中,在整機(jī)控制器程序內(nèi)部設(shè)置環(huán)形緩沖區(qū),環(huán)形緩沖區(qū)中存儲(chǔ)各閥控制器的實(shí)時(shí)數(shù)據(jù)及整機(jī)控制器的給定信號(hào),每次接收并發(fā)送100個(gè)數(shù)據(jù)所用的時(shí)間比順序緩沖區(qū)節(jié)省了43.75%,有效減少多數(shù)據(jù)存取環(huán)節(jié)帶來接收存儲(chǔ)延時(shí),從而減少了CAN總線進(jìn)行數(shù)據(jù)傳輸時(shí)的延時(shí)時(shí)長(zhǎng)。
(2) 通過對(duì)算法內(nèi)存效率進(jìn)行測(cè)試,結(jié)果表明使用環(huán)形緩沖區(qū)的最大內(nèi)存利用率為99.00%,遠(yuǎn)高于順序緩沖區(qū)的最大利用率。在代碼未完全覆蓋環(huán)形緩沖區(qū)且數(shù)據(jù)輸入流與輸出流之差為定值時(shí),環(huán)形緩沖區(qū)利用率上升速率略大于順序緩沖區(qū)的方式。
為集中式高速數(shù)據(jù)處理接口提供通用方案,具有一定的應(yīng)用價(jià)值和實(shí)際意義,可被廣泛應(yīng)用于各種類型的高速數(shù)據(jù)傳輸?shù)南到y(tǒng)中。