專利名稱:一種多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及智慧校園、數(shù)字校園的一卡通領(lǐng)域的物聯(lián)網(wǎng)終端為多主方式的實(shí)時(shí)交易數(shù)據(jù)交換處理的應(yīng)用。
背景技術(shù):
近年來(lái),隨著物聯(lián)網(wǎng)終端與一卡通信息化建設(shè)的進(jìn)一步加快,智慧城市、智慧校園和數(shù)字化校園一卡通得到了廣泛的應(yīng)用。但是在物聯(lián)網(wǎng)終端遍及的當(dāng)今,各廠商對(duì)于物聯(lián)網(wǎng)終端總線方式通訊類的設(shè)備,均采用RS485或RS422,但是由于RS485或RS422總線自身控制的限制,其通信方式只能以主站輪詢的方式進(jìn)行,數(shù)據(jù)傳輸只能采用異步上傳,使得此類的物聯(lián)網(wǎng)終端在交易或身份認(rèn)證時(shí)不能實(shí)時(shí)到數(shù)據(jù)中心認(rèn)證,導(dǎo)致系統(tǒng)的實(shí)時(shí)性、可靠 性較差。因此各廠商只能通過(guò)增加中間網(wǎng)絡(luò)控制前置的方式。但是即使增加了網(wǎng)絡(luò)控制前置,只是增加了總線方式下可連接的網(wǎng)聯(lián)終端的數(shù)量,但是數(shù)據(jù)傳輸要通過(guò)網(wǎng)絡(luò)控制前置機(jī)中轉(zhuǎn),還是異步方式,不能實(shí)時(shí)到數(shù)據(jù)中心認(rèn)證。另外,RS485或RS422總線同絡(luò),還會(huì)因個(gè)別節(jié)點(diǎn)出現(xiàn)問(wèn)題,使得總線處于“死鎖”狀態(tài)。其主要技術(shù)瓶頸如下
I、數(shù)據(jù)交換采用異步交換,導(dǎo)致系統(tǒng)實(shí)時(shí)性、可靠性差。2、網(wǎng)絡(luò)中個(gè)別節(jié)點(diǎn)出現(xiàn)問(wèn)題,容易使得總線處于“死鎖”狀態(tài),導(dǎo)致系統(tǒng)可靠性差。
發(fā)明內(nèi)容
為了概括本發(fā)明的目的,在這里描述了本發(fā)明的某些方面、優(yōu)點(diǎn)和新穎特征。應(yīng)了解,無(wú)需所有這些方面、優(yōu)點(diǎn)和特征包含在任一特殊的實(shí)施例中。為了彌補(bǔ)現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法。從根本上改變傳統(tǒng)RS485或RS422總線以主站輪詢的方式。改由終端設(shè)備多主方式上送服務(wù)請(qǐng)求,提高網(wǎng)絡(luò)數(shù)據(jù)交互的速度,使交易或身份認(rèn)證直接到數(shù)據(jù)中心認(rèn)證。達(dá)到數(shù)據(jù)實(shí)時(shí)處理、白名單實(shí)時(shí)自動(dòng)更新的目的。為了達(dá)到上述目的,本發(fā)明提出了一種多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法
I、在硬件設(shè)計(jì)上,選用CAN總線技術(shù)替換原RS485或RS422總線網(wǎng)傳輸數(shù)據(jù),CAN (Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線訪問(wèn)優(yōu)先權(quán)(取決于報(bào)文標(biāo)識(shí)符)采用無(wú)損結(jié)構(gòu)的逐位仲裁方式競(jìng)爭(zhēng)向總線發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對(duì)通信數(shù)據(jù)進(jìn)行編碼,這可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這些特點(diǎn)使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。CAN總線通過(guò)CAN控制器接口芯片82C250的兩個(gè)輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會(huì)出現(xiàn)象RS-485網(wǎng)絡(luò)中,當(dāng)系統(tǒng)有錯(cuò)誤,出現(xiàn)多節(jié)點(diǎn)同時(shí)向總線發(fā)送數(shù)據(jù)時(shí),導(dǎo)致總線呈現(xiàn)短路,從而損壞某些節(jié)點(diǎn)的現(xiàn)象。而且CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)關(guān)閉輸出功能,以使總線上其他節(jié)點(diǎn)的操作不受影響,從而保證不會(huì)出現(xiàn)象在網(wǎng)絡(luò)中,因個(gè)別節(jié)點(diǎn)出現(xiàn)問(wèn)題,使得總線處于“死鎖”狀態(tài)。2、數(shù)據(jù)采集服務(wù)采用高效率的網(wǎng)絡(luò)I/O模型-I0CP,這是處理大量客戶端并發(fā)訪問(wèn)服務(wù)器常用的一種windows平臺(tái)下的架構(gòu)。IOCP是應(yīng)用程序使用線程池處理異步I/O請(qǐng)求的一種機(jī)制,事先開(kāi)好N個(gè)線程(N=CPU個(gè)數(shù)*2+2),存儲(chǔ)在線程池中。然后將所有的用戶請(qǐng)求都投遞到I/O端口上,然后N個(gè)工作線程逐一地從端口中取得用戶消息并加以處理。這樣既減少了線程的資源,又提高了線程的利用率。加速了上位機(jī)數(shù)據(jù)處理能力。保證數(shù)據(jù)實(shí)時(shí)交換處理。3、將數(shù)據(jù)采集服務(wù)架構(gòu)分成兩部分處理,分別為控制流和數(shù)據(jù)流,增加數(shù)據(jù)采集與交換的速度。
所述控制流是負(fù)責(zé)網(wǎng)絡(luò)IO部分,也就是從網(wǎng)絡(luò)讀取和發(fā)送數(shù)據(jù)。所述數(shù)據(jù)流是處理業(yè)務(wù)邏輯。通常情況下他們是分離的,網(wǎng)絡(luò)IO部分不需要管理業(yè)務(wù)邏輯具體做什么工作,而后者也不關(guān)心數(shù)據(jù)怎么得來(lái),怎么送到網(wǎng)絡(luò)上。兩者就是一個(gè)生產(chǎn)者消費(fèi)者關(guān)系。本著一個(gè)原則,讓生產(chǎn)者盡量的生產(chǎn)數(shù)據(jù)(即快速的收發(fā)數(shù)據(jù)),減少消費(fèi)者的消費(fèi)時(shí)間(業(yè)務(wù)處理時(shí)間縮短),即通信和業(yè)務(wù)的分離機(jī)制。通過(guò)將網(wǎng)絡(luò)IO收發(fā)數(shù)據(jù)用到的線程池和業(yè)務(wù)邏輯中用到的線程池分離,就是上面所說(shuō)的通信和業(yè)務(wù)的分離。通信建立特定線程用來(lái)收發(fā)數(shù)據(jù),業(yè)務(wù)邏輯線程將收到的數(shù)據(jù)進(jìn)行業(yè)務(wù)層面的分析處理,各自處理各自的業(yè)務(wù),就像工廠流水線上的工人,以使系統(tǒng)的產(chǎn)能最大化。增加數(shù)據(jù)采集與交換的速度。4、數(shù)據(jù)動(dòng)態(tài)訪問(wèn)采用連接池技術(shù)。對(duì)于一個(gè)復(fù)雜的數(shù)據(jù)庫(kù)(動(dòng)態(tài)庫(kù))訪問(wèn)的應(yīng)用,由于通信的每一次建立都需要一次完整的“握手”過(guò)程,其中就包含了大量的相應(yīng)等待時(shí)間,因此,對(duì)于連接的不當(dāng)使用會(huì)成為系統(tǒng)性能的巨大瓶頸。本發(fā)明采用連接池技術(shù),可以解決資源頻繁分配、釋放所造成的大量性能開(kāi)銷。在減少系統(tǒng)消耗的基礎(chǔ)上,可以增進(jìn)系統(tǒng)運(yùn)行環(huán)境的平穩(wěn)性(減少內(nèi)存碎片及臨時(shí)進(jìn)程或線程的數(shù)量)??梢允箶?shù)據(jù)庫(kù)(動(dòng)態(tài)庫(kù))連接得到復(fù)用。所述連接池是在初始化的過(guò)程中,已經(jīng)創(chuàng)建了若干個(gè)數(shù)據(jù)庫(kù)連接在池中備用。此時(shí)連接的初始化工作在系統(tǒng)初始化時(shí)已經(jīng)完成,這種事前預(yù)備機(jī)制能很好的將系統(tǒng)的性能開(kāi)銷“前移”,對(duì)于數(shù)據(jù)請(qǐng)求業(yè)務(wù)而言,直接利用現(xiàn)有的可用空閑連接,避免了連接數(shù)據(jù)庫(kù)連接的初始化和釋放過(guò)程的時(shí)間開(kāi)銷,從而縮短了系統(tǒng)整體相應(yīng)的時(shí)間。增加數(shù)據(jù)采集與交換的速度。5、在數(shù)據(jù)空間的管理上引用內(nèi)存池技術(shù),來(lái)管理系統(tǒng)內(nèi)存的獲取和釋放,防止大量客戶端并發(fā)訪問(wèn)服務(wù)器造成系統(tǒng)資源不足,降低內(nèi)存泄漏的風(fēng)險(xiǎn)。IOCP的服務(wù)器,其穩(wěn)定和高性能的基礎(chǔ)在于內(nèi)存的應(yīng)用,因?yàn)榉?wù)器需要頻繁申請(qǐng)釋放內(nèi)存用于接收數(shù)據(jù)和數(shù)據(jù)的處理。因此在數(shù)據(jù)空間的管理上,我們引入了“內(nèi)存池”的機(jī)制。所述內(nèi)存池,就是申請(qǐng)一大塊內(nèi)存,避免重復(fù)申請(qǐng)釋放。需要時(shí)從池中取出一塊內(nèi)存,用完后在放回池里。所以,在線程的安全問(wèn)題上,基于原子操做的SLIST系列函數(shù)剛好適用,因?yàn)槭窍冗M(jìn)后出的原則,所以可以盡可能的避免換頁(yè)。
本發(fā)明的有益效果本發(fā)明創(chuàng)造的一種多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法從硬件設(shè)計(jì)到軟件設(shè)計(jì)上采用多種創(chuàng)新,與業(yè)界485總線數(shù)據(jù)采集處理相比有以下明顯優(yōu)點(diǎn)
(1)用CAN總線技術(shù)替換原RS485或RS422總線網(wǎng)傳輸數(shù)據(jù)。CAN (Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。較之目前RS-485基于線構(gòu)建的分布式控制系統(tǒng)而言,基于CAN總線的分布式控制系統(tǒng)在以下方面具有明顯的優(yōu)越性
第一 CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線訪問(wèn)優(yōu)先權(quán)(取決于報(bào)文標(biāo)識(shí)符)采用無(wú)損結(jié)構(gòu)的逐位仲裁方式競(jìng)爭(zhēng)向總線發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對(duì)通信數(shù)據(jù)進(jìn)行編碼,這可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這些特點(diǎn)使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng),通信方式也只能以主站輪詢的方式進(jìn)行,系統(tǒng)的實(shí)時(shí)性、可靠性較差。 第二 CAN總線通過(guò)CAN控制器接口芯片82C250的兩個(gè)輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會(huì)出現(xiàn)象RS-485網(wǎng)絡(luò)中,當(dāng)系統(tǒng)有錯(cuò)誤,出現(xiàn)多節(jié)點(diǎn)同時(shí)向總線發(fā)送數(shù)據(jù)時(shí),導(dǎo)致總線呈現(xiàn)短路,從而損壞某些節(jié)點(diǎn)的現(xiàn)象。而且CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)關(guān)閉輸出功能,以使總線上其他節(jié)點(diǎn)的操作不受影響,從而保證不會(huì)出現(xiàn)象在網(wǎng)絡(luò)中,因個(gè)別節(jié)點(diǎn)出現(xiàn)問(wèn)題,使得總線處于“死鎖”狀態(tài)。第三CAN具有完善的通信協(xié)議,可由CAN控制器芯片及其接口芯片來(lái)實(shí)現(xiàn),從而
大大降低了系統(tǒng)的開(kāi)發(fā)難度,縮短了開(kāi)發(fā)周期,這些是只僅僅有電氣協(xié)議的RS-485所無(wú)法
比擬的。具體如下
權(quán)利要求
1.一種多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于它是以多個(gè)物聯(lián)網(wǎng)終端設(shè)備為節(jié)點(diǎn)組成的CAN總線,通過(guò)CAN轉(zhuǎn)以太網(wǎng),向上位機(jī)發(fā)送數(shù)據(jù)采集服務(wù)請(qǐng)求。
2.根據(jù)權(quán)利要求I所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于網(wǎng)絡(luò)中的各節(jié)點(diǎn)根據(jù)CAN總線訪問(wèn)優(yōu)先權(quán)采用無(wú)損結(jié)構(gòu)的逐位仲裁方式競(jìng)爭(zhēng)向CAN總線發(fā)送數(shù)據(jù)。
3.根據(jù)權(quán)利要求I所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于CAN總線通過(guò)CAN控制器接口芯片82C250的兩個(gè)輸出端CANH和CANL與物理總線相連,CANH端的狀態(tài)是高電平或懸浮狀態(tài),CANL端是低電平或懸浮狀態(tài)。
4.根據(jù)權(quán)利要求1、2或3所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于所述數(shù)據(jù)采集服務(wù)采用網(wǎng)絡(luò)I/O模型,使用線程池處理異步I/O請(qǐng)求,事先開(kāi)好N個(gè)線程(N=CPU個(gè)數(shù)*2+2),存儲(chǔ)在線程池中,然后將所有的用戶請(qǐng)求都投遞到I/O端口上,然后N個(gè)工作線程逐一地從端口中取得用戶消息并加以處理。
5.根據(jù)權(quán)利要求4所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于通過(guò)將網(wǎng)絡(luò)IO收發(fā)數(shù)據(jù)用到的線程池和業(yè)務(wù)邏輯中用到的線程池分離,通信建立特定線程用來(lái)收發(fā)數(shù)據(jù),業(yè)務(wù)邏輯線程將收到的數(shù)據(jù)進(jìn)行業(yè)務(wù)層面的分析處理,各自處理各自的業(yè)務(wù)。
6.根據(jù)權(quán)利要求1、2或3所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于所述數(shù)據(jù)采集服務(wù)分為兩部分進(jìn)行處理,來(lái)增加數(shù)據(jù)采集與交換的速度,這兩部分分別為控制流和數(shù)據(jù)流。
7.根據(jù)權(quán)利要求6所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于所述控制流是負(fù)責(zé)網(wǎng)絡(luò)IO部分,從網(wǎng)絡(luò)讀取和發(fā)送數(shù)據(jù);所述數(shù)據(jù)流是處理業(yè)務(wù)邏輯。
8.根據(jù)權(quán)利要求5或7所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于數(shù)據(jù)動(dòng)態(tài)訪問(wèn)采用連接池技術(shù),所述連接池是在初始化的過(guò)程中,已經(jīng)創(chuàng)建了若干個(gè)數(shù)據(jù)庫(kù)連接在池中備用,此時(shí)連接的初始化工作在系統(tǒng)初始化時(shí)完成,對(duì)于數(shù)據(jù)請(qǐng)求業(yè)務(wù)而言,直接利用現(xiàn)有的可用空閑連接,避免連接數(shù)據(jù)庫(kù)連接的初始化和釋放過(guò)程的時(shí)間開(kāi)銷。
9.根據(jù)權(quán)利要求5或7所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于在數(shù)據(jù)空間的管理上采用“內(nèi)存池”機(jī)制,所述內(nèi)存池,就是申請(qǐng)一大塊內(nèi)存,避免重復(fù)申請(qǐng)釋放,需要時(shí)從池中取出一塊內(nèi)存,用完后在放回池里。
10.根據(jù)權(quán)利要求9所述的多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,其特征在于所述內(nèi)存池包含block、list和pool三個(gè)結(jié)構(gòu)體,所述block結(jié)構(gòu)包含指向?qū)嶋H內(nèi)存空間的指針,向前和向后指針讓block能夠組成雙向鏈表;所述list結(jié)構(gòu)中free指針指向空閑內(nèi)存組成的鏈表,used指針指向程序使用中的內(nèi)存塊組成的鏈表,size值為內(nèi)存塊的大??;所述pool結(jié)構(gòu)記錄list鏈表的頭尾。
全文摘要
本發(fā)明公開(kāi)了一種多主總線網(wǎng)絡(luò)通訊實(shí)時(shí)交易數(shù)據(jù)交換實(shí)現(xiàn)方法,它是以多個(gè)物聯(lián)網(wǎng)終端設(shè)備為節(jié)點(diǎn)組成的CAN總線,通過(guò)CAN轉(zhuǎn)以太網(wǎng),向上位機(jī)發(fā)送數(shù)據(jù)采集服務(wù)請(qǐng)求。網(wǎng)絡(luò)中的各節(jié)點(diǎn)根據(jù)CAN總線訪問(wèn)優(yōu)先權(quán)采用無(wú)損結(jié)構(gòu)的逐位仲裁方式競(jìng)爭(zhēng)向CAN總線發(fā)送數(shù)據(jù)。數(shù)據(jù)采集服務(wù)采用高效率的網(wǎng)絡(luò)I/O模型-IOCP,其架構(gòu)分成兩部分處理,分別為控制流和數(shù)據(jù)流,增加數(shù)據(jù)采集與交換的速度。
文檔編號(hào)H04L12/40GK102811152SQ20121031591
公開(kāi)日2012年12月5日 申請(qǐng)日期2012年8月31日 優(yōu)先權(quán)日2012年8月31日
發(fā)明者王向前, 王向東 申請(qǐng)人:南京鑫三強(qiáng)科技實(shí)業(yè)有限公司