一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,采用多級(jí)緩沖機(jī)制,將整個(gè)數(shù)據(jù)處理流程分為接收、分發(fā)、解析、存貯發(fā)送等多級(jí)操作,將CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文進(jìn)行傳輸,在分發(fā)階段,將不同類(lèi)型的CAN數(shù)據(jù)報(bào)文進(jìn)行區(qū)分,并交由不同的處理線(xiàn)程進(jìn)行并行解析,將應(yīng)用層數(shù)據(jù)對(duì)象存入嵌入式數(shù)據(jù)庫(kù),提升數(shù)據(jù)處理的可靠性。本發(fā)明實(shí)現(xiàn)了對(duì)大規(guī)模并發(fā)監(jiān)控?cái)?shù)據(jù)的實(shí)時(shí)采集和處理,可用于支持大型充電站中監(jiān)控系統(tǒng)的構(gòu)建。
【專(zhuān)利說(shuō)明】一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及充電機(jī)監(jiān)控?cái)?shù)據(jù)處理領(lǐng)域,特別是一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法。
【背景技術(shù)】
[0002]隨著電機(jī)、電池和電控等電動(dòng)汽車(chē)關(guān)鍵的技術(shù)的不斷突破和發(fā)展,以及面對(duì)日益攀升的油價(jià)和嚴(yán)峻的環(huán)境污染問(wèn)題,發(fā)展純電動(dòng)汽車(chē)產(chǎn)業(yè)已成為中國(guó)重要的產(chǎn)業(yè)政策。電動(dòng)公交車(chē)和出租車(chē)等公共交通工具已開(kāi)始在各大中型城市試點(diǎn)和投入運(yùn)營(yíng),配套的集中式充換電設(shè)施也相繼建成,截止2011年,全國(guó)范圍內(nèi)已建成電動(dòng)汽車(chē)充電站314座,充電樁
I.6萬(wàn)多個(gè)。根據(jù)“十二五”規(guī)劃,到2015年全國(guó)將建成由40萬(wàn)個(gè)充電樁、2000個(gè)充換電站構(gòu)成的網(wǎng)絡(luò)化供電體系。
[0003]為保障充換電設(shè)施提供可靠穩(wěn)定的能源供給服務(wù),數(shù)據(jù)采集必須滿(mǎn)足實(shí)時(shí)性要求,如果超時(shí),充電機(jī)狀態(tài)監(jiān)控就沒(méi)有意義,甚至?xí)斐沙潆娛鹿?。充電機(jī)監(jiān)控?cái)?shù)據(jù)并發(fā)量大,每臺(tái)充電機(jī)每秒發(fā)送大約1500個(gè)CAN (Controller Area Network)總線(xiàn)協(xié)議報(bào)文。隨著充電站建設(shè)規(guī)模的不斷擴(kuò)大,充電機(jī)的并發(fā)數(shù)據(jù)量將非常龐大,如何對(duì)大規(guī)模充電機(jī)數(shù)據(jù)進(jìn)行并發(fā)處理是本領(lǐng)域亟需研究的關(guān)鍵問(wèn)題之一。
[0004]當(dāng)前關(guān)于充電機(jī)數(shù)據(jù)采集處理方法側(cè)重于滿(mǎn)足數(shù)據(jù)的采集滿(mǎn)足功能需求,即研究數(shù)據(jù)的采集流程,最終實(shí)現(xiàn)在充電站內(nèi)的統(tǒng)一部署。發(fā)明專(zhuān)利(CN201110260277.4) “電動(dòng)汽車(chē)充電監(jiān)控系統(tǒng)的數(shù)據(jù)采集監(jiān)控方法”公開(kāi)了一種電動(dòng)汽車(chē)充電監(jiān)控系統(tǒng)的數(shù)據(jù)采集監(jiān)控方法。該方法首先讀取充電機(jī)狀態(tài)數(shù)據(jù),根據(jù)充電機(jī)狀態(tài)再讀取消費(fèi)數(shù)據(jù)和蓄電池?cái)?shù)據(jù),實(shí)現(xiàn)實(shí)時(shí)采集充電機(jī)工作數(shù)據(jù)的采集流程。但是,該方法沒(méi)有考慮大型充電站中大規(guī)模數(shù)據(jù)并發(fā)情況下,數(shù)據(jù)的并發(fā)傳輸、控制和處理方法,不能滿(mǎn)足大型充電站中數(shù)據(jù)處理的實(shí)時(shí)性要求。
[0005]總之,當(dāng)前方法不能解決大規(guī)模充電機(jī)接入環(huán)境下數(shù)據(jù)的實(shí)時(shí)處理問(wèn)題,至今還沒(méi)有公開(kāi)文獻(xiàn)涉充電機(jī)監(jiān)控?cái)?shù)據(jù)的并發(fā)處理方法,如何根據(jù)大型充電站中數(shù)據(jù)的大規(guī)模并發(fā)特點(diǎn),找到一種合理有效的大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問(wèn)題是,針對(duì)現(xiàn)有技術(shù)不足,提供一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,使得大型充電站中的數(shù)據(jù)并發(fā)處理得到有效的控制,保證數(shù)據(jù)的實(shí)時(shí)性,提升數(shù)據(jù)處理的可靠性。
[0007]為解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案是:一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,該方法為:
I)搭建包括CAN協(xié)議網(wǎng)關(guān)、通訊服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)端工作站的充電機(jī)數(shù)據(jù)處理系統(tǒng),通訊服務(wù)器通過(guò)以太網(wǎng)與CAN協(xié)議網(wǎng)關(guān)、客戶(hù)端工作站、數(shù)據(jù)庫(kù)服務(wù)器相連,CAN協(xié)議網(wǎng)關(guān)通過(guò)CAN總線(xiàn)接收充電機(jī)發(fā)送的CAN總線(xiàn)協(xié)議,并將所述CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文;數(shù)據(jù)庫(kù)服務(wù)器與客戶(hù)端工作站相連;所述通訊服務(wù)器內(nèi)包括對(duì)充電機(jī)監(jiān)控?cái)?shù)據(jù)實(shí)時(shí)并發(fā)處理的接收模塊、分發(fā)模塊、解析模塊、存儲(chǔ)模塊和發(fā)送模塊;
其中:
接收模塊包括:偵聽(tīng)CAN協(xié)議網(wǎng)關(guān)的連接請(qǐng)求的第一偵聽(tīng)線(xiàn)程;一個(gè)從TCP數(shù)據(jù)通信鏈路中接收來(lái)自CAN協(xié)議網(wǎng)關(guān)的CAN數(shù)據(jù)報(bào)文,并把所述CAN數(shù)據(jù)報(bào)文放入接收隊(duì)列的接收線(xiàn)程;
分發(fā)模塊即依據(jù)CAN數(shù)據(jù)報(bào)文頭中的用來(lái)標(biāo)識(shí)該報(bào)文類(lèi)型的參數(shù)組編號(hào),并將接收隊(duì)列中的CAN數(shù)據(jù)報(bào)文發(fā)送到與該參數(shù)組編號(hào)相對(duì)應(yīng)的處理隊(duì)列的分發(fā)線(xiàn)程;
解析模塊包括多個(gè)提取上述處理隊(duì)列的CAN數(shù)據(jù)報(bào)文進(jìn)行處理,并將應(yīng)用層數(shù)據(jù)對(duì)象放入應(yīng)用層數(shù)據(jù)緩沖隊(duì)列和歷史數(shù)據(jù)隊(duì)列中的不同優(yōu)先級(jí)別的處理線(xiàn)程;
存儲(chǔ)模塊包括嵌入式數(shù)據(jù)庫(kù)和將歷史數(shù)據(jù)隊(duì)列中的應(yīng)用層數(shù)據(jù)對(duì)象存儲(chǔ)到嵌入式數(shù)據(jù)庫(kù)中的存儲(chǔ)線(xiàn)程;
發(fā)送模塊包括:負(fù)責(zé)偵聽(tīng)來(lái)自客戶(hù)端工作站的客戶(hù)端數(shù)據(jù)請(qǐng)求,并將客戶(hù)端工作站發(fā)送的客戶(hù)端數(shù)據(jù)請(qǐng)求保存到客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列中的第二偵聽(tīng)線(xiàn)程;由多個(gè)從客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列中取出客戶(hù)端數(shù)據(jù)請(qǐng)求,并從應(yīng)用層數(shù)據(jù)緩沖隊(duì)列中取出所請(qǐng)求的應(yīng)用層數(shù)據(jù)對(duì)象,發(fā)送給客戶(hù)端工作站的服務(wù)線(xiàn)程組建的服務(wù)線(xiàn)程池;對(duì)服務(wù)線(xiàn)程池進(jìn)行調(diào)度管理的主管線(xiàn)程;
2)CAN協(xié)議網(wǎng)關(guān)從充電機(jī) 接收CAN總線(xiàn)協(xié)議,將CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文,并將CAN數(shù)據(jù)報(bào)文通過(guò)以太網(wǎng)傳送給通訊服務(wù)器;
3)通訊服務(wù)器對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行接收、分發(fā)、解析、發(fā)送和存儲(chǔ)。
[0008]所述步驟3)中,通訊服務(wù)器的對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行接收、分發(fā)、解析、發(fā)送和存儲(chǔ)的過(guò)程為:
1)接收模塊采用先來(lái)先服務(wù)的原則對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行流量控制和速度控制:第一偵聽(tīng)線(xiàn)程對(duì)CAN協(xié)議網(wǎng)關(guān)進(jìn)行監(jiān)聽(tīng),當(dāng)監(jiān)聽(tīng)到CAN數(shù)據(jù)報(bào)文后,由接收線(xiàn)程將CAN數(shù)據(jù)報(bào)文放入接收隊(duì)列隊(duì)尾;
2)若接收隊(duì)列已滿(mǎn),暫停接收?qǐng)?bào)文,此時(shí)收到的CAN數(shù)據(jù)報(bào)文將被丟棄,等待接收隊(duì)列有空單元時(shí)再接收?qǐng)?bào)文;若接收隊(duì)列不為空,分發(fā)模塊從接收隊(duì)列的隊(duì)尾元素中取出CAN數(shù)據(jù)報(bào)文,并將所述接收隊(duì)列的隊(duì)尾元素置空,以釋放接收隊(duì)列的空間,提取所述取出的CAN數(shù)據(jù)報(bào)文的參數(shù)組編號(hào),根據(jù)該編號(hào)將所述取出的CAN數(shù)據(jù)報(bào)文放入對(duì)應(yīng)的處理隊(duì)列中;
3)解析模塊中的處理線(xiàn)程根據(jù)優(yōu)先級(jí)別的高低提取相應(yīng)的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段;
4)解析所有的處理線(xiàn)程,得到應(yīng)用層數(shù)據(jù)對(duì)象,并把屬于充電機(jī)i和報(bào)文類(lèi)型j的應(yīng)用層對(duì)象L[i] [j]放入應(yīng)用層數(shù)據(jù)緩隊(duì)列,每解析完成一次,應(yīng)用層對(duì)象L[i] [j]更新一次;同時(shí)處理線(xiàn)程把應(yīng)用層對(duì)象L[i] [j]放入歷史數(shù)據(jù)隊(duì)列中;其中,KiSM,I ^ j ^ N ;Μ、N分別為充電機(jī)編號(hào)和報(bào)文參數(shù)組編號(hào)大?。?br>
5)若上述歷史數(shù)據(jù)隊(duì)列未滿(mǎn),則進(jìn)入6);若上述歷史數(shù)據(jù)隊(duì)列已滿(mǎn),則存儲(chǔ)模塊中的存儲(chǔ)線(xiàn)程將歷史數(shù)據(jù)隊(duì)列中的內(nèi)存數(shù)據(jù)寫(xiě)入嵌入式數(shù)據(jù)庫(kù)中,并將歷史數(shù)據(jù)隊(duì)列清空;數(shù)據(jù)庫(kù)服務(wù)器將嵌入式數(shù)據(jù)庫(kù)中的內(nèi)容寫(xiě)入充電機(jī)監(jiān)控?cái)?shù)據(jù)表中,進(jìn)入6 );6)發(fā)送模塊中的第二偵聽(tīng)線(xiàn)程偵聽(tīng)客戶(hù)端工作站請(qǐng)求,當(dāng)主管線(xiàn)程從第二偵聽(tīng)線(xiàn)程獲知客戶(hù)端工作站有數(shù)據(jù)請(qǐng)求時(shí),主管線(xiàn)程查看服務(wù)線(xiàn)程池中是否有睡眠狀態(tài)的服務(wù)線(xiàn)程,若有,取出一個(gè)睡眠中的服務(wù)線(xiàn)程,并將其喚醒進(jìn)入工作狀態(tài),被喚醒的服務(wù)線(xiàn)程根據(jù)客戶(hù)端數(shù)據(jù)請(qǐng)求中的充電機(jī)編號(hào)和參數(shù)組編號(hào),從應(yīng)用層數(shù)據(jù)緩沖隊(duì)列取出對(duì)應(yīng)的應(yīng)用層數(shù)據(jù)對(duì)象返回給客戶(hù)端工作站,該服務(wù)線(xiàn)程完成發(fā)送任務(wù)后返回服務(wù)線(xiàn)程池進(jìn)入睡眠狀態(tài);若沒(méi)有,服務(wù)線(xiàn)程池為空,則主管線(xiàn)程創(chuàng)建一個(gè)新的服務(wù)線(xiàn)程,新的服務(wù)線(xiàn)程根據(jù)客戶(hù)端數(shù)據(jù)請(qǐng)求中的充電機(jī)編號(hào)和參數(shù)組編號(hào),取出對(duì)應(yīng)的應(yīng)用層數(shù)據(jù)對(duì)象返回給客戶(hù)端工作站,新的服務(wù)線(xiàn)程完成發(fā)送任務(wù)后返回服務(wù)線(xiàn)程池進(jìn)入睡眠狀態(tài);
7)主管線(xiàn)程每隔一段時(shí)間t查詢(xún)服務(wù)線(xiàn)程池中是否有T時(shí)間不使用而超過(guò)睡眠時(shí)限T的服務(wù)線(xiàn)程,若有,則將T時(shí)間不使用而超過(guò)睡眠時(shí)限的服務(wù)線(xiàn)程銷(xiāo)毀,實(shí)現(xiàn)服務(wù)線(xiàn)程池大小的調(diào)整和優(yōu)化;其中,t < T ; 8)當(dāng)客戶(hù)端工作站請(qǐng)求非實(shí)時(shí)數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)服務(wù)器從充電機(jī)監(jiān)控?cái)?shù)據(jù)表中取出數(shù)據(jù)返回客戶(hù)端工作站;
9)若客戶(hù)端工作站從服務(wù)線(xiàn)程或數(shù)據(jù)庫(kù)服務(wù)器接收到數(shù)據(jù),則將數(shù)據(jù)顯示在用戶(hù)交互界面上。
[0009]與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明采用多級(jí)緩沖機(jī)制,整個(gè)數(shù)據(jù)處理流程分為接收、分發(fā)、解析、存貯發(fā)送等多級(jí)操作,并采用多線(xiàn)程和多級(jí)緩沖機(jī)制來(lái)提高數(shù)據(jù)處理的實(shí)時(shí)性;將CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文進(jìn)行傳輸,利用以太網(wǎng)傳輸速度快、并行處理程度高的特點(diǎn)解決了大規(guī)模充電機(jī)數(shù)據(jù)的實(shí)時(shí)接收問(wèn)題;在分發(fā)階段,將不同類(lèi)型的CAN數(shù)據(jù)報(bào)文進(jìn)行區(qū)分,并交由不同的處理線(xiàn)程進(jìn)行并行解析,提高了 CAN數(shù)據(jù)報(bào)文的解析效率;在CAN數(shù)據(jù)報(bào)文解析階段利用優(yōu)先級(jí)機(jī)制,保證了重要充電機(jī)數(shù)據(jù)處理的實(shí)時(shí)性;通過(guò)將應(yīng)用層數(shù)據(jù)對(duì)象存入嵌入式數(shù)據(jù)庫(kù),提升了數(shù)據(jù)處理的可靠性;本發(fā)明實(shí)現(xiàn)了對(duì)大規(guī)模并發(fā)監(jiān)控?cái)?shù)據(jù)的實(shí)時(shí)采集和處理,可用于支持大型充電站中監(jiān)控系統(tǒng)的構(gòu)建。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0010]圖I為本發(fā)明一實(shí)施例監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本發(fā)明一實(shí)施例實(shí)時(shí)并發(fā)充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法框架結(jié)構(gòu)圖;
圖3為圖2中充電機(jī)監(jiān)控?cái)?shù)據(jù)表的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0011]本發(fā)明的方法如下:
第一步,搭建充電機(jī)數(shù)據(jù)處理系統(tǒng),如圖I所示,系統(tǒng)由CAN協(xié)議網(wǎng)關(guān)、通訊服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)端工作站構(gòu)成。CAN協(xié)議網(wǎng)關(guān)是一種將CAN數(shù)據(jù)報(bào)文轉(zhuǎn)化為以太網(wǎng)報(bào)文的網(wǎng)絡(luò)硬件設(shè)備,常見(jiàn)的型號(hào)如周立功的CANET系列CAN-以太網(wǎng)轉(zhuǎn)換器,研煌的ACNET-600系列數(shù)據(jù)轉(zhuǎn)換設(shè)備。本發(fā)明所使用的CAN協(xié)議網(wǎng)關(guān)具有一個(gè)CAN接口和一個(gè)以太網(wǎng)接口,CAN協(xié)議網(wǎng)關(guān)的CAN接口通過(guò)CAN總線(xiàn)與K(1 ^ K ^ 10)臺(tái)充電機(jī)連接,以太網(wǎng)接口通過(guò)以太網(wǎng)與通訊服務(wù)器連接,將從充電機(jī)接收的CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文。通訊服務(wù)器是一臺(tái)安裝有充電機(jī)監(jiān)控?cái)?shù)據(jù)實(shí)時(shí)并發(fā)處理軟件的計(jì)算機(jī),通訊服務(wù)器通過(guò)以太網(wǎng)與CAN協(xié)議網(wǎng)關(guān)、客戶(hù)端工作站、數(shù)據(jù)庫(kù)服務(wù)器相連,通過(guò)socket (套接字)方式實(shí)現(xiàn)數(shù)據(jù)傳輸;通訊服務(wù)器的充電機(jī)數(shù)據(jù)實(shí)時(shí)并發(fā)處理軟件對(duì)從各CAN協(xié)議網(wǎng)關(guān)收到的CAN數(shù)據(jù)報(bào)文進(jìn)行分發(fā)、解析、存儲(chǔ)和發(fā)送,并將解析得到的應(yīng)用層數(shù)據(jù)對(duì)象發(fā)送給客戶(hù)端工作站和數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器是一臺(tái)安裝有Oracle數(shù)據(jù)庫(kù)軟件的計(jì)算機(jī),通過(guò)以太網(wǎng)與通訊服務(wù)器連接,負(fù)責(zé)存儲(chǔ)來(lái)自通訊服務(wù)器的解析完的應(yīng)用層數(shù)據(jù)對(duì)象??蛻?hù)端工作站是一臺(tái)安裝客戶(hù)端程序的計(jì)算機(jī),它一方面從通訊服務(wù)器接收解析完的應(yīng)用層數(shù)據(jù)對(duì)象進(jìn)行實(shí)時(shí)輸出和顯示,一方面從數(shù)據(jù)庫(kù)服務(wù)器中查詢(xún)解析完的非實(shí)時(shí)應(yīng)用層數(shù)據(jù)對(duì)象,并輸出和顯示。
[0012]圖2給出了本發(fā)明提供的實(shí)時(shí)并發(fā)充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法框架結(jié)構(gòu)圖。
[0013]充電機(jī)通訊服務(wù)器的充電機(jī)監(jiān)控?cái)?shù)據(jù)實(shí)時(shí)并發(fā)處理軟件由接收模塊,分發(fā)模塊,解析模塊,存儲(chǔ)模塊和發(fā)送模塊組成。
[0014]接收模塊包含一個(gè)偵聽(tīng)線(xiàn)程和一個(gè)接收線(xiàn)程。偵聽(tīng)線(xiàn)程偵聽(tīng)CAN協(xié)議網(wǎng)關(guān)的連接請(qǐng)求,如果收到CAN協(xié)議網(wǎng)關(guān)的連接請(qǐng)求,則與該CAN協(xié)議網(wǎng)關(guān)建立一個(gè)TCP數(shù)據(jù)通信鏈路;接收線(xiàn)程從TCP數(shù)據(jù)通信鏈路中接收來(lái)自CAN協(xié)議網(wǎng)關(guān)的CAN數(shù)據(jù)報(bào)文,并把CAN數(shù)據(jù)報(bào)文放入接收隊(duì)列。接收隊(duì)列為先入先出的緩沖隊(duì)列,該隊(duì)列為第一級(jí)緩沖隊(duì)列,隊(duì)列中的一個(gè)元素即為一個(gè)CAN數(shù)據(jù)報(bào)文。接收隊(duì)列長(zhǎng)度根據(jù)CAN數(shù)據(jù)報(bào)文的并發(fā)規(guī)模進(jìn)行配置,大于等于一個(gè)充電機(jī)的CAN數(shù)據(jù)報(bào)文最大并發(fā)量規(guī)模,通常一個(gè)充電機(jī)的CAN數(shù)據(jù)報(bào)文最大并發(fā)規(guī)模為500幀每秒,接收隊(duì)列長(zhǎng)度設(shè)置為500。
[0015]分發(fā)模塊是一個(gè)分發(fā)線(xiàn)程。分發(fā)線(xiàn)程依據(jù)CAN數(shù)據(jù)報(bào)文頭中的用來(lái)標(biāo)識(shí)該報(bào)文類(lèi)型的參數(shù)組編號(hào),將接收隊(duì)列中的CAN數(shù)據(jù)報(bào)文發(fā)送到與該參數(shù)組編號(hào)相對(duì)應(yīng)的處理隊(duì)列。處理隊(duì)列有N個(gè),均為先入先出的緩沖隊(duì)列,處理隊(duì)列為第二級(jí)緩沖隊(duì)列,處理隊(duì)列長(zhǎng)度等于接收隊(duì)列長(zhǎng)度,用于存放等待解析處理的CAN數(shù)據(jù)報(bào)文。處理隊(duì)列的數(shù)量N等于CAN數(shù)據(jù)報(bào)文的類(lèi)型數(shù)量,每個(gè)處理隊(duì)列對(duì)應(yīng)一種報(bào)文類(lèi)型,只接收具有指定參數(shù)組編號(hào)的報(bào)文。
[0016]解析模塊包含N個(gè)處理線(xiàn)程。每個(gè)線(xiàn)程負(fù)責(zé)對(duì)一個(gè)處理隊(duì)列的CAN數(shù)據(jù)報(bào)文進(jìn)行處理。一個(gè)處理線(xiàn)程從一個(gè)處理隊(duì)列中取出CAN數(shù)據(jù)報(bào)文,提取該報(bào)文類(lèi)型中的充電機(jī)電壓、充電機(jī)電流,蓄電池單體電壓、蓄電池單體溫度、蓄電池最高電壓、蓄電池最高溫度、蓄電池S0C、充電機(jī)事件、充電機(jī)故障、蓄電池基本信息監(jiān)測(cè)數(shù)據(jù),根據(jù)NB/T 33003-2010《電動(dòng)汽車(chē)非車(chē)載充電機(jī)監(jiān)控單元與電池管理系統(tǒng)通信協(xié)議》中定義的通訊規(guī)約對(duì)報(bào)文的數(shù)據(jù)字段進(jìn)行解析,得到應(yīng)用層數(shù)據(jù)對(duì)象,并放入應(yīng)用層數(shù)據(jù)緩沖隊(duì)列中。應(yīng)用層數(shù)據(jù)緩沖隊(duì)列存儲(chǔ)應(yīng)用層數(shù)據(jù)對(duì)象,是第三級(jí)緩沖隊(duì)列。應(yīng)用層數(shù)據(jù)緩沖隊(duì)列是一個(gè)二維數(shù)組L[M] [N],數(shù)組維度為充電機(jī)編號(hào)和報(bào)文參數(shù)組編號(hào),大小分別為M和N,數(shù)組元素為屬于同一充電機(jī)和同一參數(shù)組編號(hào)的應(yīng)用層數(shù)據(jù)對(duì)象,數(shù)組元素每?jī)擅胨⑿乱淮巍M瑫r(shí),處理線(xiàn)程還將應(yīng)用層數(shù)據(jù)對(duì)象放入歷史數(shù)據(jù)隊(duì)列中,歷史數(shù)據(jù)隊(duì)列采用指針鏈表的數(shù)據(jù)結(jié)構(gòu),隊(duì)列長(zhǎng)度設(shè)置為接收隊(duì)列長(zhǎng)度的4倍,可存儲(chǔ)一段時(shí)間的應(yīng)用層數(shù)據(jù)對(duì)象??紤]各類(lèi)CAN數(shù)據(jù)報(bào)文類(lèi)型的重要性和實(shí)時(shí)性的差異,將處理線(xiàn)程按優(yōu)先級(jí)由高到低的順序分為第一優(yōu)先級(jí)線(xiàn)程、第二優(yōu)先級(jí)線(xiàn)程和第三優(yōu)先級(jí)線(xiàn)程三類(lèi)。處理線(xiàn)程按照優(yōu)先級(jí)建立與處理隊(duì)列的映射關(guān)系,具體地,充電機(jī)電壓、充電機(jī)電流,充電機(jī)事件,蓄電池最高電壓、蓄電池最高溫度、蓄電池S0C、充電機(jī)故障這些實(shí)時(shí)性要求高的處理隊(duì)列對(duì)應(yīng)第一優(yōu)先級(jí)處理線(xiàn)程;蓄電池單體電壓和蓄電池單體溫度采集頻度不高的處理隊(duì)列對(duì)應(yīng)第二優(yōu)先級(jí)線(xiàn)程;蓄電池基本信息處理隊(duì)列則對(duì)應(yīng)第三優(yōu)先級(jí)線(xiàn)程。
[0017]存儲(chǔ)模塊包括一個(gè)存儲(chǔ)線(xiàn)程和一個(gè)嵌入式數(shù)據(jù)庫(kù)。存儲(chǔ)線(xiàn)程將歷史數(shù)據(jù)隊(duì)列中的應(yīng)用層數(shù)據(jù)對(duì)象存儲(chǔ)到嵌入式數(shù)據(jù)庫(kù)中,該嵌入式數(shù)據(jù)庫(kù)采用輕量型數(shù)據(jù)庫(kù)SQLite(《基于ARM-Linux的SQLite嵌入式數(shù)據(jù)庫(kù)技術(shù)》,《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》,2005年第4期)構(gòu)建。
[0018]發(fā)送模塊包括第二偵聽(tīng)線(xiàn)程,一個(gè)服務(wù)線(xiàn)程池和一個(gè)主管線(xiàn)程。第二偵聽(tīng)線(xiàn)程負(fù)責(zé)偵聽(tīng)來(lái)自客戶(hù)端工作站的客戶(hù)端數(shù)據(jù)請(qǐng)求,將客戶(hù)端工作站發(fā)送的客戶(hù)端數(shù)據(jù)請(qǐng)求保存到客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列中;客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列為先入先出的緩沖隊(duì)列,該隊(duì)列為第四級(jí)緩沖隊(duì)列,隊(duì)列長(zhǎng)度等于接收隊(duì)列長(zhǎng)度,隊(duì)列中的一個(gè)元素即為一個(gè)客戶(hù)端數(shù)據(jù)請(qǐng)求;服務(wù)線(xiàn)程池由多個(gè)服務(wù)線(xiàn)程組建,采用雙向鏈表結(jié)構(gòu)設(shè)計(jì),統(tǒng)一由一個(gè)主管線(xiàn)程進(jìn)行管理。主管線(xiàn)程負(fù)責(zé)對(duì)線(xiàn)程池進(jìn)行調(diào)度管理。當(dāng)主管線(xiàn)程從第二偵聽(tīng)線(xiàn)程獲得客戶(hù)端數(shù)據(jù)請(qǐng)求時(shí),從服務(wù)線(xiàn)程池中取出服務(wù)線(xiàn)程。服務(wù)線(xiàn)程從客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列中取出客戶(hù)端數(shù)據(jù)請(qǐng)求,并從應(yīng)用層數(shù)據(jù)緩沖隊(duì)列中取出所請(qǐng)求的應(yīng)用層數(shù)據(jù)對(duì)象,發(fā)送給客戶(hù)端工作站。
[0019]數(shù)據(jù)庫(kù)服務(wù)器是一臺(tái)安裝有Oracle數(shù)據(jù)庫(kù)的計(jì)算機(jī),在數(shù)據(jù)庫(kù)中主要構(gòu)建了一個(gè)充電機(jī)監(jiān)控?cái)?shù)據(jù)表。數(shù)據(jù)庫(kù)服務(wù)器通過(guò)以太網(wǎng)與通訊服務(wù)器連接,從存儲(chǔ)模塊的嵌入式數(shù)據(jù)庫(kù)中讀取應(yīng)用層數(shù)據(jù)對(duì)象,并將該數(shù)據(jù)存入充電機(jī)監(jiān)控?cái)?shù)據(jù)表中。充電機(jī)監(jiān)控?cái)?shù)據(jù)表每項(xiàng)有充電機(jī)ID,充電狀態(tài),充電方式,充電電量,充電電流,充電電壓,蓄電池單體溫度,蓄電池單體電壓,蓄電池最高電壓,蓄電池最高溫度10個(gè)域。客戶(hù)端工作站是安裝有客戶(hù)端軟件的計(jì)算機(jī),客戶(hù)端軟件主要包含數(shù)據(jù)請(qǐng)求模塊,數(shù)據(jù)接收模塊,用戶(hù)交互界面三個(gè)模塊。用戶(hù)交互界面負(fù)責(zé)接收用戶(hù)的查詢(xún)操作,并顯示接收的應(yīng)用層數(shù)據(jù)對(duì)象充電機(jī);數(shù)據(jù)請(qǐng)求模塊根據(jù)用戶(hù)的操作向通訊服務(wù)器或數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求所需的充電機(jī)監(jiān)控?cái)?shù)據(jù);數(shù)據(jù)接收模塊負(fù)責(zé)接收通訊服務(wù)器或數(shù)據(jù)庫(kù)服務(wù)器發(fā)送的應(yīng)用層數(shù)據(jù)對(duì)象充電機(jī),并將接收到的應(yīng)用層數(shù)據(jù)對(duì)象通過(guò)用戶(hù)交互界面進(jìn)行顯示。
[0020]第二步,CAN協(xié)議網(wǎng)關(guān)從充電機(jī)接收CAN總線(xiàn)協(xié)議,將CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文,并將CAN數(shù)據(jù)報(bào)文通過(guò)以太網(wǎng)傳送給通訊服務(wù)器。
[0021]第三步,由通訊服務(wù)器的數(shù)據(jù)實(shí)時(shí)并發(fā)處理軟件對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行接收、分發(fā)、解析、發(fā)送和存儲(chǔ)。
[0022]3. I接收模塊采用先來(lái)先服務(wù)的原則對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行流量控制和速度控制:第一偵聽(tīng)線(xiàn)程對(duì)CAN協(xié)議網(wǎng)關(guān)進(jìn)行監(jiān)聽(tīng),當(dāng)監(jiān)聽(tīng)到CAN數(shù)據(jù)報(bào)文后,由接收線(xiàn)程將CAN數(shù)據(jù)報(bào)文放入接收隊(duì)列隊(duì)尾,如果接收隊(duì)列已滿(mǎn),暫停接收?qǐng)?bào)文,此時(shí)收到的CAN協(xié)議報(bào)文將被丟棄,等待接收隊(duì)列有空單元時(shí)再接收?qǐng)?bào)文。
[0023]3. 2若接收隊(duì)列不為空,分發(fā)模塊的分發(fā)線(xiàn)程CAN數(shù)據(jù)報(bào)文從接收隊(duì)列的隊(duì)尾元素中取出CAN數(shù)據(jù)報(bào)文,并將該隊(duì)尾元素置空以釋放接收隊(duì)列的空間,提取報(bào)文的參數(shù)組編號(hào),根據(jù)該編號(hào)將CAN數(shù)據(jù)報(bào)文放入對(duì)應(yīng)的處理隊(duì)列中。
[0024]3. 3解析模塊中不同優(yōu)先級(jí)別的處理線(xiàn)程實(shí)現(xiàn)對(duì)處理隊(duì)列中CAN數(shù)據(jù)報(bào)文并發(fā)處理,第一優(yōu)先級(jí)處理線(xiàn)程得到最高的CPU使用權(quán),提取類(lèi)型為充電機(jī)電壓、充電機(jī)電流,充電機(jī)事件,蓄電池最高電壓、蓄電池最高溫度、蓄電池S0C、充電機(jī)故障的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段(與充電設(shè)施監(jiān)控?cái)?shù)據(jù)表中的不一致),第二優(yōu)先級(jí)處理線(xiàn)程得到較高的CPU使用權(quán),提取類(lèi)型為蓄電池單體電壓和蓄電池單體溫度的CAN數(shù)據(jù)報(bào)文數(shù)據(jù)字段,第三優(yōu)先級(jí)線(xiàn)程得到最低的CPU使用權(quán),提取類(lèi)型為蓄電池基本信息的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段,所有的線(xiàn)程均按照NB/T 33003-2010《電動(dòng)汽車(chē)非車(chē)載充電機(jī)監(jiān)控單元與電池管理系統(tǒng)通信協(xié)議》協(xié)議進(jìn)行解析,即進(jìn)行數(shù)據(jù)含義翻譯,得到應(yīng)用層數(shù)據(jù)對(duì)象,并把屬于充電機(jī)i和報(bào)文類(lèi)型j的應(yīng)用層對(duì)象L[i][j]( I ^ i ^ M, l<j<N)放入應(yīng)用層數(shù)據(jù)緩隊(duì)列,每解析完成一次,應(yīng)用層對(duì)象L[i][j]更新一次。同時(shí)處理線(xiàn)程把應(yīng)用層對(duì)象L[i][j]放入歷史隊(duì)列中。
[0025]3.4若歷史數(shù)據(jù)隊(duì)列未滿(mǎn),轉(zhuǎn)3. 5步,若歷史數(shù)據(jù)隊(duì)列已滿(mǎn),存儲(chǔ)模塊中的存儲(chǔ)線(xiàn)程將歷史數(shù)據(jù)隊(duì)列中的內(nèi)存數(shù)據(jù)寫(xiě)入嵌入式數(shù)據(jù)庫(kù)中,并將歷史數(shù)據(jù)隊(duì)列清空;數(shù)據(jù)庫(kù)服務(wù)器將嵌入式數(shù)據(jù)庫(kù)中的內(nèi)容寫(xiě)入充電設(shè)施監(jiān)控?cái)?shù)據(jù)表中,轉(zhuǎn)3 . 5步。
[0026]3. 5發(fā)送模塊中的第二偵聽(tīng)線(xiàn)程偵聽(tīng)客戶(hù)端數(shù)據(jù)請(qǐng)求,當(dāng)主管線(xiàn)程從第二偵聽(tīng)線(xiàn)程獲知客戶(hù)端有數(shù)據(jù)請(qǐng)求時(shí),主管線(xiàn)程查看服務(wù)線(xiàn)程池中是否有睡眠狀態(tài)的服務(wù)線(xiàn)程,若有,取出一個(gè)睡眠中的服務(wù)線(xiàn)程,將其喚醒進(jìn)入工作狀態(tài)服務(wù)線(xiàn)程根據(jù)客戶(hù)端數(shù)據(jù)請(qǐng)求中的充電機(jī)編號(hào)和參數(shù)組編號(hào),從層數(shù)據(jù)緩沖隊(duì)列取出對(duì)應(yīng)應(yīng)用層數(shù)據(jù)對(duì)象返回給客戶(hù)端,該服務(wù)線(xiàn)程完成發(fā)送任務(wù)后返回服務(wù)線(xiàn)程池進(jìn)入睡眠狀態(tài);若線(xiàn)程池中的線(xiàn)程全部用完,線(xiàn)程池為空,則主管線(xiàn)程創(chuàng)建一個(gè)新的服務(wù)線(xiàn)程,新的服務(wù)線(xiàn)程根據(jù)客戶(hù)端數(shù)據(jù)請(qǐng)求中的充電機(jī)編號(hào)和參數(shù)組編號(hào),取出對(duì)應(yīng)應(yīng)用層數(shù)據(jù)對(duì)象返回給客戶(hù)端,由新服務(wù)線(xiàn)程完成發(fā)送任務(wù)后返回服務(wù)線(xiàn)程池進(jìn)入睡眠狀態(tài);同時(shí),主管線(xiàn)程隔一段時(shí)間t (t=10秒)查詢(xún)服務(wù)線(xiàn)程池中是否有T (T=30秒)時(shí)間不使用而超過(guò)睡眠時(shí)限的線(xiàn)程,若有,則將T時(shí)間不使用而超過(guò)睡眠時(shí)限的線(xiàn)程銷(xiāo)毀以實(shí)現(xiàn)線(xiàn)程池大小的調(diào)整和優(yōu)化。
[0027]3. 6當(dāng)客戶(hù)端數(shù)據(jù)請(qǐng)求非實(shí)時(shí)數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)服務(wù)器從充電機(jī)監(jiān)控?cái)?shù)據(jù)表中取出數(shù)據(jù)返回客戶(hù)端。
[0028]3. 7若客戶(hù)端工作站的數(shù)據(jù)接收模塊從服務(wù)線(xiàn)程或數(shù)據(jù)庫(kù)服務(wù)器接收到數(shù)據(jù),則將數(shù)據(jù)顯示在用戶(hù)交互界面上。
[0029]圖3為圖2中充電機(jī)監(jiān)控?cái)?shù)據(jù)表的結(jié)構(gòu)圖,充電機(jī)監(jiān)控?cái)?shù)據(jù)表每項(xiàng)有充電機(jī)ID,充電狀態(tài),充電方式,充電電量,充電電流,充電電壓,蓄電池單體溫度,蓄電池單體電壓,蓄電池最聞電壓,畜電池最聞溫度10個(gè)域。
【權(quán)利要求】
1.一種面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,該方法為: . 1)搭建包括CAN協(xié)議網(wǎng)關(guān)、通訊服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)端工作站的充電機(jī)數(shù)據(jù)處理系統(tǒng),通訊服務(wù)器通過(guò)以太網(wǎng)與CAN協(xié)議網(wǎng)關(guān)、客戶(hù)端工作站、數(shù)據(jù)庫(kù)服務(wù)器相連,CAN協(xié)議網(wǎng)關(guān)通過(guò)CAN總線(xiàn)接收充電機(jī)發(fā)送的CAN總線(xiàn)協(xié)議,并將所述CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文;數(shù)據(jù)庫(kù)服務(wù)器與客戶(hù)端工作站相連;所述通訊服務(wù)器內(nèi)包括對(duì)充電機(jī)監(jiān)控?cái)?shù)據(jù)實(shí)時(shí)并發(fā)處理的接收模塊、分發(fā)模塊、解析模塊、存儲(chǔ)模塊和發(fā)送模塊; 其中: 接收模塊包括:偵聽(tīng)CAN協(xié)議網(wǎng)關(guān)的連接請(qǐng)求的第一偵聽(tīng)線(xiàn)程;一個(gè)從TCP數(shù)據(jù)通信鏈路中接收來(lái)自CAN協(xié)議網(wǎng)關(guān)的CAN數(shù)據(jù)報(bào)文,并把所述CAN數(shù)據(jù)報(bào)文放入接收隊(duì)列的接收線(xiàn)程; 分發(fā)模塊即依據(jù)CAN數(shù)據(jù)報(bào)文頭中的用來(lái)標(biāo)識(shí)該報(bào)文類(lèi)型的參數(shù)組編號(hào),并將接收隊(duì)列中的CAN數(shù)據(jù)報(bào)文發(fā)送到與該參數(shù)組編號(hào)相對(duì)應(yīng)的處理隊(duì)列的分發(fā)線(xiàn)程; 解析模塊包括多個(gè)提取上述處理隊(duì)列的CAN數(shù)據(jù)報(bào)文進(jìn)行處理,并將應(yīng)用層數(shù)據(jù)對(duì)象放入應(yīng)用層數(shù)據(jù)緩沖隊(duì)列和歷史數(shù)據(jù)隊(duì)列中的不同優(yōu)先級(jí)別的處理線(xiàn)程; 存儲(chǔ)模塊包括嵌入式數(shù)據(jù)庫(kù)和將歷史數(shù)據(jù)隊(duì)列中的應(yīng)用層數(shù)據(jù)對(duì)象存儲(chǔ)到嵌入式數(shù)據(jù)庫(kù)中的存儲(chǔ)線(xiàn)程; 發(fā)送模塊包括:負(fù)責(zé)偵聽(tīng)來(lái)自客戶(hù)端工作站的客戶(hù)端數(shù)據(jù)請(qǐng)求,并將客戶(hù)端工作站發(fā)送的客戶(hù)端數(shù)據(jù)請(qǐng)求保存到客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列中的第二偵聽(tīng)線(xiàn)程;由多個(gè)從客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列中取出客戶(hù)端數(shù)據(jù)請(qǐng)求,并從應(yīng)用層數(shù)據(jù)緩沖隊(duì)列中取出所請(qǐng)求的應(yīng)用層數(shù)據(jù)對(duì)象,發(fā)送給客戶(hù)端工作站的服務(wù)線(xiàn)程組建的服務(wù)線(xiàn)程池;對(duì)服務(wù)線(xiàn)程池進(jìn)行調(diào)度管理的主管線(xiàn)程; .2)CAN協(xié)議網(wǎng)關(guān)從充電機(jī)接收CAN總線(xiàn)協(xié)議,將CAN總線(xiàn)協(xié)議轉(zhuǎn)換成CAN數(shù)據(jù)報(bào)文,并將CAN數(shù)據(jù)報(bào)文通過(guò)以太網(wǎng)傳送給通訊服務(wù)器; .3)通訊服務(wù)器對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行接收、分發(fā)、解析、發(fā)送和存儲(chǔ)。
2.根據(jù)權(quán)利要求1所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述接收隊(duì)列長(zhǎng)度為500。
3.根據(jù)權(quán)利要求1或2所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述處理隊(duì)列為先入先出緩沖隊(duì)列,所述處理隊(duì)列長(zhǎng)度與所述接收隊(duì)列長(zhǎng)度相同。
4.根據(jù)權(quán)利要求1所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述應(yīng)用層數(shù)據(jù)對(duì)象獲取的方法為:從所述處理隊(duì)列中取出CAN數(shù)據(jù)報(bào)文,提取該CAN數(shù)據(jù)報(bào)文中的充電機(jī)電壓、充電機(jī)電流,蓄電池單體電壓、蓄電池單體溫度、蓄電池最高電壓、蓄電池最高溫度、蓄電池SOC、充電機(jī)事件、充電機(jī)故障、蓄電池基本信息監(jiān)測(cè)數(shù)據(jù),對(duì)所述CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段進(jìn)行解析,得到應(yīng)用層數(shù)據(jù)對(duì)象。
5.根據(jù)權(quán)利要求1所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述應(yīng)用層數(shù)據(jù)緩沖隊(duì)列是一個(gè)二維數(shù)組L[M] [N],所述數(shù)組維度為充電機(jī)編號(hào)和報(bào)文參數(shù)組編號(hào),大小分別為M和N,所述數(shù)組元素為屬于同一充電機(jī)和同一參數(shù)組編號(hào)的應(yīng)用層數(shù)據(jù)對(duì)象,所述數(shù)組中的元素每?jī)擅胨⑿乱淮巍?br>
6.根據(jù)權(quán)利要求1或2所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述歷史數(shù)據(jù)隊(duì)列采用指針鏈表的數(shù)據(jù)結(jié)構(gòu),所述歷史數(shù)據(jù)隊(duì)列長(zhǎng)度設(shè)置為所述接收隊(duì)列長(zhǎng)度的4倍,所述歷史數(shù)據(jù)隊(duì)列用于存儲(chǔ)應(yīng)用層數(shù)據(jù)對(duì)象。
7.根據(jù)權(quán)利要求1或2所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列為先入先出的緩沖隊(duì)列,所述客戶(hù)端數(shù)據(jù)請(qǐng)求隊(duì)列隊(duì)列長(zhǎng)度與所述接收隊(duì)列長(zhǎng)度相同。
8.根據(jù)權(quán)利要求1所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述步驟3)中,通訊服務(wù)器的對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行接收、分發(fā)、解析、發(fā)送和存儲(chǔ)的過(guò)程為: 1)接收模塊采用先來(lái)先服務(wù)的原則對(duì)CAN數(shù)據(jù)報(bào)文進(jìn)行流量控制和速度控制:第一偵聽(tīng)線(xiàn)程對(duì)CAN協(xié)議網(wǎng)關(guān)進(jìn)行監(jiān)聽(tīng),當(dāng)監(jiān)聽(tīng)到CAN數(shù)據(jù)報(bào)文后,由接收線(xiàn)程將CAN數(shù)據(jù)報(bào)文放入接收隊(duì)列隊(duì)尾; 2)若接收隊(duì)列已滿(mǎn),暫停接收?qǐng)?bào)文,此時(shí)收到的CAN數(shù)據(jù)報(bào)文將被丟棄,等待接收隊(duì)列有空單元時(shí)再接收?qǐng)?bào)文;若接收隊(duì)列不為空,分發(fā)模塊從接收隊(duì)列的隊(duì)尾元素中取出CAN數(shù)據(jù)報(bào)文,并將所述接收隊(duì)列的隊(duì)尾元素置空,以釋放接收隊(duì)列的空間,提取所述取出的CAN數(shù)據(jù)報(bào)文的參數(shù)組編號(hào),根據(jù)該編號(hào)將所述取出的CAN數(shù)據(jù)報(bào)文放入對(duì)應(yīng)的處理隊(duì)列中; 3)解析模塊中的處理線(xiàn)程根據(jù)優(yōu)先級(jí)別的高低提取相應(yīng)的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段; 4)解析所有的處理線(xiàn)程,得到應(yīng)用層數(shù)據(jù)對(duì)象,并把屬于充電機(jī)i和報(bào)文類(lèi)型j的應(yīng)用層對(duì)象L[i][j]放入應(yīng)用層數(shù)據(jù)緩隊(duì)列,每解析完成一次,應(yīng)用層對(duì)象L[i][j]更新一次;同時(shí)處理線(xiàn)程把應(yīng)用層對(duì)象L[i] [j]放入歷史數(shù)據(jù)隊(duì)列中;其中,KiSM,I ^ j ^ N ;Μ、N分別為充電機(jī)編號(hào)和報(bào)文參數(shù)組編號(hào)大??; 5)若上述歷史數(shù)據(jù)隊(duì)列未滿(mǎn),則進(jìn)入6);若上述歷史數(shù)據(jù)隊(duì)列已滿(mǎn),則存儲(chǔ)模塊中的存儲(chǔ)線(xiàn)程將歷史數(shù)據(jù)隊(duì)列中的內(nèi)存數(shù)據(jù)寫(xiě)入嵌入式數(shù)據(jù)庫(kù)中,并將歷史數(shù)據(jù)隊(duì)列清空;數(shù)據(jù)庫(kù)服務(wù)器將嵌入式數(shù) 據(jù)庫(kù)中的內(nèi)容寫(xiě)入充電機(jī)監(jiān)控?cái)?shù)據(jù)表中,進(jìn)入6 ); 6)發(fā)送模塊中的第二偵聽(tīng)線(xiàn)程偵聽(tīng)客戶(hù)端數(shù)據(jù)請(qǐng)求,當(dāng)主管線(xiàn)程從第二偵聽(tīng)線(xiàn)程獲知客戶(hù)端工作站有數(shù)據(jù)請(qǐng)求時(shí),主管線(xiàn)程查看服務(wù)線(xiàn)程池中是否有睡眠狀態(tài)的服務(wù)線(xiàn)程,若有,取出一個(gè)睡眠中的服務(wù)線(xiàn)程,并將其喚醒進(jìn)入工作狀態(tài),被喚醒的服務(wù)線(xiàn)程根據(jù)客戶(hù)端數(shù)據(jù)請(qǐng)求中的充電機(jī)編號(hào)和參數(shù)組編號(hào),從應(yīng)用層數(shù)據(jù)緩沖隊(duì)列取出對(duì)應(yīng)的應(yīng)用層數(shù)據(jù)對(duì)象返回給客戶(hù)端工作站,該服務(wù)線(xiàn)程完成發(fā)送任務(wù)后返回服務(wù)線(xiàn)程池進(jìn)入睡眠狀態(tài);若沒(méi)有,服務(wù)線(xiàn)程池為空,則主管線(xiàn)程創(chuàng)建一個(gè)新的服務(wù)線(xiàn)程,新的服務(wù)線(xiàn)程根據(jù)客戶(hù)端數(shù)據(jù)請(qǐng)求中的充電機(jī)編號(hào)和參數(shù)組編號(hào),取出對(duì)應(yīng)的應(yīng)用層數(shù)據(jù)對(duì)象返回給客戶(hù)端工作站,新的服務(wù)線(xiàn)程完成發(fā)送任務(wù)后返回服務(wù)線(xiàn)程池進(jìn)入睡眠狀態(tài); 7)主管線(xiàn)程每隔一段時(shí)間t查詢(xún)服務(wù)線(xiàn)程池中是否有T時(shí)間不使用而超過(guò)睡眠時(shí)限T的服務(wù)線(xiàn)程,若有,則將T時(shí)間不使用而超過(guò)睡眠時(shí)限的服務(wù)線(xiàn)程銷(xiāo)毀,實(shí)現(xiàn)服務(wù)線(xiàn)程池大小的調(diào)整和優(yōu)化;其中,t < T ; 8)當(dāng)客戶(hù)端工作站請(qǐng)求非實(shí)時(shí)數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)服務(wù)器從充電機(jī)監(jiān)控?cái)?shù)據(jù)表中取出數(shù)據(jù)返回客戶(hù)端工作站; 9)若客戶(hù)端工作站從服務(wù)線(xiàn)程或數(shù)據(jù)庫(kù)服務(wù)器接收到數(shù)據(jù),則將數(shù)據(jù)顯示在用戶(hù)交互界面上。
9.根據(jù)權(quán)利要求8所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述步驟3)中,解析模塊中的處理線(xiàn)程根據(jù)優(yōu)先級(jí)別的高低提取相應(yīng)的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段的過(guò)程為:第一優(yōu)先級(jí)處理線(xiàn)程得到最高的CPU使用權(quán),第一優(yōu)先級(jí)處理線(xiàn)程提取充電機(jī)電壓、充電機(jī)電流,充電機(jī)事件,蓄電池最高電壓、蓄電池最高溫度、蓄電池SOC、充電機(jī)故障的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段;第二優(yōu)先級(jí)處理線(xiàn)程得到較高的CPU使用權(quán),第二優(yōu)先級(jí)處理線(xiàn)程提取蓄電池單體電壓和蓄電池單體溫度的CAN數(shù)據(jù)報(bào)文數(shù)據(jù)字段;第三優(yōu)先級(jí)處理線(xiàn)程得到最低的CPU使用權(quán),第三優(yōu)先級(jí)處理線(xiàn)程提取蓄電池基本信息的CAN數(shù)據(jù)報(bào)文的數(shù)據(jù)字段。
10.根據(jù)權(quán)利要求8所述的面向大規(guī)模實(shí)時(shí)并發(fā)的充電機(jī)監(jiān)控?cái)?shù)據(jù)處理方法,其特征在于,所述步驟7)中,t=10秒,T=30秒。
【文檔編號(hào)】H02J13/00GK103491190SQ201310461578
【公開(kāi)日】2014年1月1日 申請(qǐng)日期:2013年9月30日 優(yōu)先權(quán)日:2013年9月30日
【發(fā)明者】田建偉, 黎曦, 漆文輝, 劉瀟瀟, 劉潔 申請(qǐng)人:國(guó)家電網(wǎng)公司, 國(guó)網(wǎng)湖南省電力公司電力科學(xué)研究院, 湖南省湘電試研技術(shù)有限公司