本發(fā)明具體涉及數(shù)據(jù)交互領(lǐng)域,具體涉及一種用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法及其嵌入式設(shè)備。
背景技術(shù):
隨著國家經(jīng)濟技術(shù)的發(fā)展和人們生活水平的提高,電能已經(jīng)成為了人們?nèi)粘I钪斜夭豢缮俚亩文茉粗唬o人們的生產(chǎn)和生活帶來了無盡的便利。
因此,隨著電能的普及,電能質(zhì)量的監(jiān)測也越發(fā)顯得重要。多回路電能質(zhì)量監(jiān)測設(shè)備以其能夠同時監(jiān)測多路電能信號的優(yōu)勢,一經(jīng)上市便得到了市場的廣泛認可,在電能質(zhì)量監(jiān)測行業(yè)中占據(jù)了舉足輕重的位置。
但是,目前市面上的多回路電能質(zhì)量產(chǎn)品中,往往數(shù)據(jù)運算量大,整個系統(tǒng)設(shè)計通常會有一個管理cpu(主控單元)進行數(shù)據(jù)的管理,而涉及到運算則有一顆強大的運算cpu(測控單元)完成數(shù)據(jù)的運算,而運算后的數(shù)據(jù)文件最大達到兆級,存儲于測控單元的sd卡上。如果要將每個測控單元的數(shù)據(jù)都傳輸給主控單元那通信壓力太大,另外也要準備一個大容量存儲介質(zhì)實現(xiàn)數(shù)據(jù)的存儲,增加成本。主控單元和測控單元的數(shù)據(jù)交互則是該產(chǎn)品的設(shè)計關(guān)鍵。目前市場上嵌入式系統(tǒng)組網(wǎng)方式大多采用hpi總線、can總線、spi、串口、以太網(wǎng)、無線等通信方式實現(xiàn)數(shù)據(jù)的交互。hpi總線、抗干擾能力差,工業(yè)產(chǎn)品的emc要求苛刻。spi較為適合一對一通信,而多機通信的時候,由于布板原因,信號線路較長,導(dǎo)致抗干擾能力下降。uart的傳輸速率最快才20kbps,速度達不到要求。can總線和無線考慮到成本,需要外擴芯片,成本較高,而can總線傳輸速率最快才1mbps,因此也未能滿足要求。以上通信方式均未能滿足分布式存儲要求,只能實現(xiàn)數(shù)據(jù)的交互。而以太網(wǎng)的速度和抗干擾性均能滿足要求,成熟的nfs(網(wǎng)絡(luò)文件系統(tǒng))也滿足分布式存儲要求。但是嵌入式系統(tǒng)mac是有限的,也需要外擴芯片滿足要求,成本上也難滿足要求。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的之一在于提供一種能夠快速完成主控單元和測控單元之間的數(shù)據(jù)交互、而且抗干擾能力強、成本低廉的用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法
本發(fā)明的目的之二在于提供一種包括所述用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法的嵌入式設(shè)備。
本發(fā)明提供的這種用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法,包括如下步驟:
s1.采用usbhub芯片作為主控單元和測控單元之間數(shù)據(jù)交互的硬件接口芯片;
s2.將主控單元作為usbhost接口、測控單元作為usbdevice接口,分別接入usbhub芯片;
s3.當測控單元接入usbhub的端口時,加載自身的id號,同時根據(jù)id號完成自身的ip配置,并建立nfs服務(wù)端;
s4.當主控單元檢測到測控單元接入usbhub后,根據(jù)測控單元接入的usbhub的端口號完成主控單元自身的ip配置,并運行nfs客戶端;
s5.主控單元作為nfs客戶端,從作為nfs服務(wù)端的測控單元獲取相應(yīng)的共享數(shù)據(jù),實現(xiàn)共享數(shù)據(jù)的本地存儲和異地共享。
所述的用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法及其嵌入式設(shè)備,還包括如下步驟:
s6.當有新的測控單元接入usbhub芯片時,重復(fù)步驟s3~s5完成多回路電能質(zhì)量監(jiān)測設(shè)備的內(nèi)部數(shù)據(jù)交互。
步驟s1所述的usbhub芯片為1擴7的型號為usb2517的usbhub芯片。
所述的主控單元作為usbhost接口時,主控單元的內(nèi)核版本為linux3.15.10,同時還需加載內(nèi)核的cdcethernetsupport為動態(tài)模塊,并加載usbnet.ko。
所述的測控單元作為usbdevice接口時,測控單元的內(nèi)核版本為linux3.3.0,同時要需加載內(nèi)核的usbgadget驅(qū)動,打開cdcethernetsuppout選項,并加載usbnet.ko。
步驟s3所述的測控單元加載自身的id號,同時根據(jù)id號完成自身的ip配置,并建立nfs服務(wù)端,具體為當測控單元接入usbhub端口后,測控單元自動加載ip識別驅(qū)動并運行對應(yīng)腳本,腳本根據(jù)自身的id號完成測控單元自身的ip配置,同時建立nfs服務(wù)端,將共享信息進行共享。
步驟s4所述的主控單元根據(jù)測控單元接入的usbhub的端口號完成主控單元自身的ip配置,并運行nfs客戶端,具體為主控單元識別有測控單元接入usbhub后,自動加載usb驅(qū)動并運行對應(yīng)腳本,腳本根據(jù)對應(yīng)的usbhub端口號完成主控單元自身的ip配置,同時運行nfs客戶端,將測控單元共享的信息掛載到本地目錄下。
本發(fā)明還提供了一種嵌入式設(shè)備,該嵌入式設(shè)備包括了所述的用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法。
本發(fā)明提供的這種用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法及其嵌入式設(shè)備,通過usbhub及其nfs系統(tǒng)完成內(nèi)部數(shù)據(jù)的交互,可以大大節(jié)省本地存儲空間,實現(xiàn)數(shù)據(jù)的互聯(lián)互通,實現(xiàn)了數(shù)據(jù)的離散分布且相對集中的共享方式,使得當有一個測控單元存儲介質(zhì)損壞時,可以很方便的更換,不影響其它測控單元的存儲數(shù)據(jù),而且基于usb的nfs設(shè)計,替代了傳統(tǒng)的基于以太網(wǎng)的nfs,在不需要外擴mac的情況下,既保證的傳輸速度,又提高了emc抗干擾能力,還實現(xiàn)了所有流程動態(tài)加載,全自動化流程,不要手動配置,實現(xiàn)了一主多從機制,根據(jù)需要測控單元數(shù)量靈活配置。usbdevice即插即用,方便日后維護。
附圖說明
圖1為本發(fā)明的方法流程圖。
具體實施方式
如圖1所示為本發(fā)明的方法流程圖:本發(fā)明提供的這種用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法,包括如下步驟:
s1.采用1擴7的型號為usb2517的usbhub芯片作為主控單元和測控單元之間數(shù)據(jù)交互的硬件接口芯片;
s2.將主控單元作為usbhost接口、測控單元作為usbdevice接口,分別接入usbhub芯片;
主控單元的內(nèi)核版本為linux3.15.10,同時還需加載內(nèi)核的cdcethernetsupport為動態(tài)模塊,并加載usbnet.ko;測控單元的內(nèi)核版本為linux3.3.0,同時要需加載內(nèi)核的usbgadget驅(qū)動,打開cdcethernetsuppout選項,并加載usbnet.ko;
s3.當測控單元接入usbhub的端口時,加載自身的id號,同時根據(jù)id號完成自身的ip配置,并建立nfs服務(wù)端;具體為當測控單元接入usbhub端口后,測控單元自動加載ip識別驅(qū)動并運行對應(yīng)腳本,腳本根據(jù)自身的id號完成測控單元自身的ip配置,同時建立nfs服務(wù)端,將共享信息進行共享;
在具體實施時,當測控單元插入后,根據(jù)gpio狀態(tài),通過一個字節(jié)的低三位狀態(tài)決定插入usbhub的哪個端口。例如001,既插入usbhub的第一個端口,此時udevd接收到內(nèi)核發(fā)送來的uevent信號,根據(jù)對應(yīng)規(guī)則,在/dev/下面產(chǎn)生名為base的設(shè)備名稱,規(guī)則如下:
action=="add",kernel=="base",run+="/etc/udev/scripts/ipconfig-usb0.sh"
同時啟動id識別驅(qū)動,驅(qū)動能正確讀取001狀態(tài),并且運行ipconfig-usb0.sh腳本,腳本完成ip的配置工作:ifconfigusb0222.111.$id.138。完成上述步驟后,測控單元會建立nfs服務(wù)端,步驟為:portmap>exportfs>rpc.statd>rpc.nfsd2>rpc.mountd;其中exportfs為加載需要共享的目錄文件,方法為:
/media/sdcard*(rw,fsid=2,sync,no_subtree_check,no_root_squash);
至此,測控單元的工作已經(jīng)完成;
s4.當主控單元檢測到測控單元接入usbhub后,根據(jù)測控單元接入的usbhub的端口號完成主控單元自身的ip配置,并運行nfs客戶端;具體為主控單元識別有測控單元接入usbhub后,自動加載usb驅(qū)動并運行對應(yīng)腳本,腳本根據(jù)對應(yīng)的usbhub端口號完成主控單元自身的ip配置,同時運行nfs客戶端,將測控單元共享的信息掛載到本地目錄下;
在具體實施時,當主控單元識別到測控單元接入后,此時udevd接收到內(nèi)核發(fā)送來的uevent信號,根據(jù)對應(yīng)規(guī)則,在/dev/目錄下面產(chǎn)生名為usbnet0的設(shè)備名稱,規(guī)則如下:
action=="add",kernels=="1-2.1:1.0",name="usbnet0",run+="/etc/udev/scripts/ipconfig-usb.sh0"
同運行腳本,將對應(yīng)的id號0傳遞給ipconfig-usb.sh腳本。腳本完成配置ip工作:ifconfigusbnet$id222.111.$id.45,同時也將id號傳入nfs配置腳本,將步驟3建立的共享目錄共享到本地目錄下,方法為:
mount-tnfs-onolock,soft,timeo=2,retrans=1,bg222.111.$id.138:/media/sdcard/media/nfs$id/sd;
s5.主控單元作為nfs客戶端,從作為nfs服務(wù)端的測控單元獲取相應(yīng)的共享數(shù)據(jù),實現(xiàn)共享數(shù)據(jù)的本地存儲和異地共享;
至此完成了所有操作。主控單元的根文件系統(tǒng)下/media/nfs$id/sd下就會看見測控單元/media/sdcard目錄下的所有數(shù)據(jù);
s6.當有新的測控單元接入usbhub芯片時,重復(fù)步驟s3~s5完成多回路電能質(zhì)量監(jiān)測設(shè)備的內(nèi)部數(shù)據(jù)交互。
而本發(fā)明提供的這種用于一主多從式網(wǎng)絡(luò)的數(shù)據(jù)交互方法,可以用于各種嵌入式設(shè)備和包括一主多從式網(wǎng)絡(luò)的設(shè)備,包括但不限于各類型的計量儀表(比如電能表、水表、燃氣表、熱量表等)、電能管理終端、配電終端、電能質(zhì)量監(jiān)控設(shè)備、電網(wǎng)自動化終端、采集終端、集中器、數(shù)據(jù)采集器、計量儀表、手抄器、故障指示器等。