国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

現(xiàn)場總線協(xié)議轉(zhuǎn)換硬件架構(gòu)設(shè)計(jì)*

2022-04-19 10:49王雪迪時(shí)廣軼
電子技術(shù)應(yīng)用 2022年4期
關(guān)鍵詞:總線控制器錯(cuò)誤

王雪迪,王 博,時(shí)廣軼,嚴(yán) 偉

(北京大學(xué) 軟件與微電子學(xué)院,北京 102627)

0 引言

現(xiàn)場總線是20 世紀(jì)80 年代中期發(fā)展起來的通信、控制技術(shù),帶給20 世紀(jì)90 年代的工業(yè)控制領(lǐng)域一場革命。與其他工業(yè)領(lǐng)域的網(wǎng)絡(luò)相比,現(xiàn)場總線采用串行通信方式,具有穩(wěn)定性高、布網(wǎng)簡單、設(shè)備開發(fā)周期快等優(yōu)點(diǎn),迅速發(fā)展成為工業(yè)控制領(lǐng)域內(nèi)應(yīng)用最廣泛的通信網(wǎng)絡(luò)。

自現(xiàn)場總線出現(xiàn)以來,工業(yè)控制領(lǐng)域出現(xiàn)了多種現(xiàn)場總線標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)在出現(xiàn)之初都曾被廣泛應(yīng)用過,它們在不同的方面占據(jù)優(yōu)勢。隨著工業(yè)應(yīng)用場景的變化其他新型總線標(biāo)準(zhǔn)不斷出現(xiàn)。目前業(yè)內(nèi)大約存在著40種現(xiàn)場總線標(biāo)準(zhǔn),但絕大部分的市場份額被少數(shù)幾種總線標(biāo)準(zhǔn)占據(jù)。

目前現(xiàn)場總線出現(xiàn)的這種多種標(biāo)準(zhǔn)并存的現(xiàn)象,一方面是受到商業(yè)利益的驅(qū)使[1],另一方面還存在客觀上的原因。新應(yīng)用場景、新技術(shù)層出不窮,至今仍沒有一種現(xiàn)存的現(xiàn)場總線能夠滿足所有應(yīng)用要求,用戶不得不根據(jù)自己的需要選擇不同的總線設(shè)備。不同現(xiàn)場總線網(wǎng)絡(luò)間不可互相通信,所以多種總線標(biāo)準(zhǔn)并存勢必會大大降低系統(tǒng)的組態(tài)性和靈活性,增加系統(tǒng)的后續(xù)改造升級難度。由此可見,提出實(shí)現(xiàn)一種不同現(xiàn)場總線間的協(xié)議轉(zhuǎn)換架構(gòu),是一個(gè)具有較高使用價(jià)值的研究內(nèi)容,解決工業(yè)領(lǐng)域不同設(shè)備不同總線協(xié)議之間的通信問題,降低開發(fā)、組網(wǎng)成本。

國內(nèi)對協(xié)議轉(zhuǎn)換的研究與開發(fā)仍主要集中在現(xiàn)場總線網(wǎng)關(guān)的開發(fā),且大多采用通用嵌入式處理器實(shí)現(xiàn),協(xié)議轉(zhuǎn)換的實(shí)時(shí)性和確定性較差。戈瑞[2]實(shí)現(xiàn)了一種MODBUS 總線與CAN 總線的一對一的轉(zhuǎn)換器設(shè)計(jì),包括兩種總線協(xié)議數(shù)據(jù)的轉(zhuǎn)換和地址的互相尋址。轉(zhuǎn)換方案的硬件平臺采用DSP 和CAN 總線控制器實(shí)現(xiàn),PC 作為MODBUS 主站,另一個(gè)DSP 和51 單片機(jī)以及CAN 控制器作為兩個(gè)CAN 節(jié)點(diǎn)。DSP 芯片集成了CAN 總線控制器。莊乾成等[3]實(shí)現(xiàn)了以太網(wǎng)與現(xiàn)場總線CAN 協(xié)議的轉(zhuǎn)換,文獻(xiàn)中提到的協(xié)議轉(zhuǎn)換方案,是將CAN 總線幀中的數(shù)據(jù)或者以太網(wǎng)幀中的數(shù)據(jù)提取出來,再封裝進(jìn)目的協(xié)議幀中,沒有對網(wǎng)絡(luò)中的地址、錯(cuò)誤處理等部分進(jìn)行轉(zhuǎn)換。胥軍等[4]通過嵌入式的方式,采用ASPC2 專用PROFIBUS-DP 芯片實(shí)現(xiàn)了從PROFIBUS-DP 主站到MODBUS 從站的單向協(xié)議轉(zhuǎn)換。其中協(xié)議數(shù)據(jù)轉(zhuǎn)換方式是將MODBUS 的ADU 數(shù)據(jù)作為PROFIBUS-DP 數(shù)據(jù)鏈路層的DU 域從PROFIBUS-DP 發(fā)給轉(zhuǎn)換器,轉(zhuǎn)換器再將DU 中的數(shù)據(jù)ADU 取走發(fā)給MODBUS 從站,僅實(shí)現(xiàn)了協(xié)議數(shù)據(jù)的轉(zhuǎn)換。LOU GUOHUAN 等[5]進(jìn)行了PROFIBUS和CAN 協(xié)議之間的轉(zhuǎn)換,建立了統(tǒng)一的報(bào)文格式和地址編址。硬件平臺采用ARM9 單片機(jī)S3C2410 作為主控芯片,使用Linux 操作系統(tǒng)。文獻(xiàn)中對PROFIBUS 和CAN協(xié)議之間的轉(zhuǎn)換做了較為詳細(xì)的闡述,但是采用嵌入式操作系統(tǒng),協(xié)議轉(zhuǎn)換的實(shí)時(shí)性較差,且沒有對協(xié)議的錯(cuò)誤處理進(jìn)行轉(zhuǎn)換。RONG YIN 等[6]進(jìn)行了統(tǒng)一的協(xié)議數(shù)據(jù)處理,統(tǒng)一的數(shù)據(jù)幀中包括了da、sa、pr、fc 和df 共五段。設(shè)計(jì)了消息緩沖機(jī)制。一旦應(yīng)用層需要讀取現(xiàn)場設(shè)備的狀態(tài)數(shù)據(jù),就向網(wǎng)關(guān)發(fā)送讀取命令消息。硬件平臺采用ARM11 微處理器s3c6410 為核心,采用嵌入式的處理方式,實(shí)現(xiàn)協(xié)議數(shù)據(jù)轉(zhuǎn)換。

綜合以上國內(nèi)外研究現(xiàn)狀,目前對于協(xié)議轉(zhuǎn)換工作的研究,大多只對協(xié)議數(shù)據(jù)做重新封裝,將協(xié)議數(shù)據(jù)放入目的協(xié)議幀中進(jìn)行轉(zhuǎn)發(fā),部分研究進(jìn)行了較深入的協(xié)議轉(zhuǎn)換,編制了統(tǒng)一的地址,定義了統(tǒng)一的報(bào)文格式。但絕大多數(shù)的研究工作都沒有對協(xié)議的錯(cuò)誤處理錯(cuò)誤響應(yīng)機(jī)制進(jìn)行轉(zhuǎn)換,協(xié)議的錯(cuò)誤處理錯(cuò)誤響應(yīng)機(jī)制在協(xié)議組成中是至關(guān)重要的一部分,它能保證總線網(wǎng)絡(luò)的正常運(yùn)行以及總線突發(fā)情況的正確及時(shí)處理,能夠極大地保障網(wǎng)絡(luò)的穩(wěn)定性,所以對協(xié)議的錯(cuò)誤處理錯(cuò)誤響應(yīng)機(jī)制的轉(zhuǎn)換,是協(xié)議轉(zhuǎn)換工作中重要的組成部分。其次絕大多數(shù)的研究工作采用的是嵌入式的處理方式,即由總線控制模塊和通用處理器組成,采用嵌入式軟件或基于Linux 操作系統(tǒng)的軟件平臺進(jìn)行協(xié)議轉(zhuǎn)換,受限于通用處理器的通用架構(gòu)和中斷處理等機(jī)制,以及操作系統(tǒng)的調(diào)度機(jī)制,總線協(xié)議幀接收以及轉(zhuǎn)換時(shí)間較長且不確定,協(xié)議轉(zhuǎn)換實(shí)時(shí)性較差,不能滿足工業(yè)4.0 對于通信實(shí)時(shí)性和確定性的要求。

1 協(xié)議轉(zhuǎn)換原理設(shè)計(jì)

1.1 協(xié)議轉(zhuǎn)換拓?fù)浣Y(jié)構(gòu)

本協(xié)議轉(zhuǎn)換方案支持三種協(xié)議的相互轉(zhuǎn)換,支持三種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):MODBUS 總線網(wǎng)絡(luò)、CAN 總線網(wǎng)絡(luò)、HART 總線網(wǎng)絡(luò)。三種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)有所不同。

1.1.1 MODBUS 總線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

當(dāng)整個(gè)網(wǎng)絡(luò)工作在MODBUS 總線網(wǎng)絡(luò)中時(shí),網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖1 所示。

圖1 MODBUS 總線網(wǎng)絡(luò)拓?fù)鋱D

整個(gè)網(wǎng)絡(luò)中只有1 個(gè)MODBUS 主設(shè)備,MODBUS 從設(shè)備以及CAN 節(jié)點(diǎn)設(shè)備、HART 從站,均是MODBUS 總線網(wǎng)絡(luò)的從設(shè)備。協(xié)議轉(zhuǎn)換器和其他MODBUS 從設(shè)備相同,通過MODBUS 物理層電路接入MODBUS 總線網(wǎng)絡(luò)中。協(xié)議轉(zhuǎn)換器通過CAN 總線的控制器和收發(fā)器與CAN 總線網(wǎng)絡(luò)連接;通過HART 總線的控制器和物理層電路與HART 總線網(wǎng)絡(luò)連接。

MODBUS 主設(shè)備可尋址網(wǎng)絡(luò)中的MODBUS 從設(shè)備以及CAN 節(jié)點(diǎn)設(shè)備、HART 從站設(shè)備。網(wǎng)絡(luò)中的CAN 節(jié)點(diǎn)設(shè)備、HART 從站設(shè)備轉(zhuǎn)接到MODBUS 總線網(wǎng)絡(luò)時(shí),只作為MODBUS 主設(shè)備的從站,可將MODBUS 主站請求的數(shù)據(jù)通過轉(zhuǎn)換器傳輸?shù)組ODBUS 總線網(wǎng)絡(luò)中。其中CAN 節(jié)點(diǎn)設(shè)備轉(zhuǎn)接到MODBUS 總線網(wǎng)絡(luò)時(shí),CAN 節(jié)點(diǎn)設(shè)備不可向其他CAN 節(jié)點(diǎn)和MODBUS 設(shè)備、HART 從站發(fā)送遙控幀請求數(shù)據(jù);HART 從站設(shè)備轉(zhuǎn)接到MODBUS 總線網(wǎng)絡(luò)時(shí),不可向其他HART 從站和CAN 節(jié)點(diǎn)、MODBUS從設(shè)備發(fā)送命令幀請求數(shù)據(jù)。

1.1.2 CAN 總線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

當(dāng)整個(gè)網(wǎng)絡(luò)工作在CAN 總線網(wǎng)絡(luò)中時(shí),網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖2 所示。

圖2 CAN 總線網(wǎng)絡(luò)拓?fù)鋱D

協(xié)議轉(zhuǎn)換器和其他CAN 節(jié)點(diǎn)設(shè)備相同,通過CAN 收發(fā)器電路接入CAN 總線網(wǎng)絡(luò)中。協(xié)議轉(zhuǎn)換器通過MODBUS 控制器和物理層電路與MODBUS 總線網(wǎng)絡(luò)連接;通過HART 總線的控制器和物理層電路與HART 總線網(wǎng)絡(luò)連接。

CAN 總線網(wǎng)絡(luò)中的CAN 節(jié)點(diǎn)設(shè)備,可向MODBUS 從設(shè)備和HART 從站發(fā)送遙控幀請求數(shù)據(jù)。網(wǎng)絡(luò)中的MODBUS 從設(shè)備、HART 從站設(shè)備轉(zhuǎn)接到CAN 總線網(wǎng)絡(luò)時(shí),只作為CAN 總線網(wǎng)絡(luò)中的節(jié)點(diǎn),不可發(fā)送遙控幀請求數(shù)據(jù),可發(fā)送數(shù)據(jù)幀和錯(cuò)誤幀等其他幀類型。其中MODBUS從設(shè)備轉(zhuǎn)接到CAN 總線網(wǎng)絡(luò)時(shí),MODBUS 從設(shè)備不可向其他MODBUS 設(shè)備發(fā)送MODBUS 命令請求數(shù)據(jù);HART從站設(shè)備轉(zhuǎn)接到CAN 總線網(wǎng)絡(luò)時(shí),不可向其他HART 從站和發(fā)送命令幀請求數(shù)據(jù)。

1.1.3 HART 總線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

當(dāng)整個(gè)網(wǎng)絡(luò)工作在HART 總線網(wǎng)絡(luò)中時(shí),網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖3 所示。

圖3 HART 總線網(wǎng)絡(luò)拓?fù)鋱D

整個(gè)網(wǎng)絡(luò)中只有1 個(gè)HART 主站、1 個(gè)HART 第二主站,MODBUS 從設(shè)備以及CAN 節(jié)點(diǎn)設(shè)備均是HART 總線網(wǎng)絡(luò)的從站。協(xié)議轉(zhuǎn)換器和其他HART 從站相同,通過HART 物理層電路接入HART 總線網(wǎng)絡(luò)中。協(xié)議轉(zhuǎn)換器通過CAN 總線的控制器和收發(fā)器與CAN 總線網(wǎng)絡(luò)連接;通過MODBUS 總線的控制器和物理層電路與MODBUS總線網(wǎng)絡(luò)連接。

HART 主站可尋址網(wǎng)絡(luò)中的HART 從站以及CAN節(jié)點(diǎn)設(shè)備、MODBUS 從設(shè)備。網(wǎng)絡(luò)中的CAN 節(jié)點(diǎn)設(shè)備、MODBUS 從設(shè)備轉(zhuǎn)接到HART 總線網(wǎng)絡(luò)時(shí),只作為HART網(wǎng)絡(luò)的從站,可將HART 主站請求的數(shù)據(jù)通過轉(zhuǎn)換器傳輸?shù)紿ART 總線網(wǎng)絡(luò)中。其中CAN 節(jié)點(diǎn)設(shè)備轉(zhuǎn)接到HART 總線網(wǎng)絡(luò)時(shí),CAN 節(jié)點(diǎn)設(shè)備不可向其他CAN 節(jié)點(diǎn)和MODBUS 設(shè)備、HART 從站發(fā)送遙控幀請求數(shù)據(jù);MODBUS 從設(shè)備轉(zhuǎn)接到HART 總線網(wǎng)絡(luò)時(shí),不可向其他HART 從站和CAN 節(jié)點(diǎn)、MODBUS 從設(shè)備發(fā)送命令幀請求數(shù)據(jù)。

1.2 地址轉(zhuǎn)換

1.2.1 MODBUS 總線網(wǎng)絡(luò)

當(dāng)協(xié)議轉(zhuǎn)換器工作在MODBUS 總線網(wǎng)絡(luò)時(shí),則要求給每個(gè)CAN 節(jié)點(diǎn)設(shè)備和HART 從設(shè)備分配一個(gè)8 位地址,且符合MODBUS 總線協(xié)議地址要求。對于HART 設(shè)備,要求使用長地址,且每個(gè)長地址對應(yīng)一個(gè)MODBUS總線地址,此MODBUS 總線地址在整個(gè)MODBUS 總線網(wǎng)絡(luò)中唯一。對于CAN 設(shè)備,需要找到每個(gè)CAN 設(shè)備獨(dú)特的ID 號,獨(dú)特的ID 號表示只有本CAN 節(jié)點(diǎn)設(shè)備可接收的ID 幀數(shù)據(jù),其他CAN 設(shè)備不能接收此ID 幀數(shù)據(jù),如果CAN 總線設(shè)備沒有獨(dú)特的ID 號,則需要?jiǎng)?chuàng)建一個(gè)獨(dú)特的ID 號,專門用來被MODBUS 主設(shè)備尋址,然后將此ID 號對應(yīng)為一個(gè)MODBUS 總線地址。

1.2.2 CAN 總線網(wǎng)絡(luò)

CAN 設(shè)備沒有主從之分,而是通過總線幀中的仲裁段ID 進(jìn)行仲裁,以獲取總線發(fā)送權(quán)。CAN 節(jié)點(diǎn)通過發(fā)送遙控幀請求其他節(jié)點(diǎn)數(shù)據(jù),數(shù)據(jù)幀的優(yōu)先級要高于遙控幀。

當(dāng)協(xié)議轉(zhuǎn)換器工作在CAN 總線網(wǎng)絡(luò)時(shí),應(yīng)為每個(gè)MODBUS 從設(shè)備和HART 從站分配一個(gè)固定的CAN ID號,同時(shí)規(guī)定這些ID 號只能用來尋址MODBUS 從設(shè)備和HART 從站,其他CAN 節(jié)點(diǎn)不能回復(fù)此ID 幀數(shù)據(jù),保證只有一個(gè)MODBUS 從設(shè)備或HART 從站回復(fù)此ID的協(xié)議幀。要求HART 采取長地址,也就是唯一地址,每一個(gè)長地址對應(yīng)一個(gè)CAN ID。

1.2.3 HART 總線網(wǎng)絡(luò)

當(dāng)協(xié)議轉(zhuǎn)換器工作在HART 網(wǎng)絡(luò)時(shí),則要求HART網(wǎng)絡(luò)使用長地址模式,由于HART 設(shè)備的長地址是設(shè)備廠商出場時(shí)所附有的唯一地址,因此本轉(zhuǎn)換模塊工作的HART 總線網(wǎng)絡(luò)中MODBUS 總線和CAN 總線設(shè)備的地址為虛擬HART 長地址,僅滿足在本HART 網(wǎng)絡(luò)內(nèi)唯一即可。對于網(wǎng)絡(luò)中的MODBUS 設(shè)備,需要將每個(gè)MODBUS 設(shè)備的地址對應(yīng)為一個(gè)HART 長地址;對于網(wǎng)絡(luò)中的CAN 設(shè)備,需要將每個(gè)CAN 設(shè)備獨(dú)特的ID 號對應(yīng)為一個(gè)HART 長地址。

1.3 協(xié)議幀轉(zhuǎn)換

本部分定義一種統(tǒng)一的數(shù)據(jù)幀結(jié)構(gòu),協(xié)議轉(zhuǎn)換模塊將接收到的各協(xié)議數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)幀格式進(jìn)行緩存,然后再將緩存的統(tǒng)一數(shù)據(jù)幀轉(zhuǎn)換為目標(biāo)協(xié)議的幀格式發(fā)送出去。兩種協(xié)議幀之間的轉(zhuǎn)換,可以采用一對一的轉(zhuǎn)換方式,但這樣做的缺點(diǎn)在于每增加一種新的總線形式都需要針對其他總線類型進(jìn)行新的轉(zhuǎn)換設(shè)計(jì),擴(kuò)展性和兼容性較差。所以本方案定義一種統(tǒng)一的數(shù)據(jù)幀格式,增加新的協(xié)議幀不需要再針對其他協(xié)議進(jìn)行轉(zhuǎn)換設(shè)計(jì),只需要將新的協(xié)議幀轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)幀格式。

統(tǒng)一的數(shù)據(jù)幀結(jié)構(gòu)如圖4 所示。

圖4 數(shù)據(jù)幀結(jié)構(gòu)圖

SAddr 代表源地址,DAddr 代表目的地址,Length 代表Data 字段長度,即字節(jié)數(shù)量;Timer_a 和Timer_b 用來存放時(shí)間戳信息,Type 表示原協(xié)議幀類型,Data 字段表示協(xié)議幀數(shù)據(jù)。

SAddr 和DAddr,如果原協(xié)議幀是CAN 總線協(xié)議幀,那么SAddr 和DAddr 均為CAN 協(xié)議幀中的ID 號;如果原協(xié)議幀是MODBUS 總線和HART 總線協(xié)議幀,那么SAddr 是發(fā)送協(xié)議幀的設(shè)備地址,DAddr 是目的地址。

Length,表示Data 字段的字節(jié)數(shù)量,長度為1 B。

Timer_a 和Timer_b,字段長度均為1 B,用于應(yīng)用層對鏈路層協(xié)議幀的實(shí)時(shí)性進(jìn)行控制,為了保證通信的實(shí)時(shí)性,應(yīng)在應(yīng)用層設(shè)計(jì)監(jiān)聽程序,對所有的數(shù)據(jù)請求、數(shù)據(jù)交換進(jìn)行監(jiān)聽與調(diào)度,利用此字段進(jìn)行時(shí)間約束。

Type,字段長度為1 B,表示原協(xié)議幀類型。

Data 為數(shù)據(jù)字段。如果原協(xié)議幀是MODBUS 總線協(xié)議幀,需要將MODBUS 總線協(xié)議幀的功能碼、數(shù)據(jù)段填入此Data 段。如果原協(xié)議幀是HART 總線協(xié)議幀,需要將HART 協(xié)議幀的命令字段、數(shù)據(jù)段填入此Data 段。如果原協(xié)議幀是CAN 總線協(xié)議幀,需要將CAN 協(xié)議幀的數(shù)據(jù)段填入此Data 段。

1.4 錯(cuò)誤通知轉(zhuǎn)換

1.4.1 協(xié)議轉(zhuǎn)換器工作在CAN 網(wǎng)絡(luò)狀態(tài)

當(dāng)網(wǎng)絡(luò)工作在CAN 總線網(wǎng)絡(luò)時(shí),一方面需要將MODBUS 從設(shè)備和HART 從站的錯(cuò)誤響應(yīng)轉(zhuǎn)換為CAN總線的錯(cuò)誤響應(yīng),另一方面,協(xié)議轉(zhuǎn)換器作為發(fā)送設(shè)備應(yīng)發(fā)出錯(cuò)誤通知和作為接收設(shè)備檢測總線錯(cuò)誤。

當(dāng)CAN 總線設(shè)備發(fā)送遙控幀,請求MODBUS 從設(shè)備和HART 從站數(shù)據(jù)時(shí),如果發(fā)送遙控幀的CAN 設(shè)備產(chǎn)生了位錯(cuò)誤、格式錯(cuò)誤,轉(zhuǎn)換模塊中的CAN 控制器在接收到此類錯(cuò)誤時(shí),不會將錯(cuò)誤的遙控幀轉(zhuǎn)換后發(fā)給MODBUS 從設(shè)備和HART 從站,同時(shí)按照CAN 協(xié)議規(guī)范向總線發(fā)送錯(cuò)誤通知。如果轉(zhuǎn)換模塊接收到遙控幀,檢測到總線上的遙控幀的填充錯(cuò)誤或CRC 錯(cuò)誤,轉(zhuǎn)換模塊的CAN 控制器產(chǎn)生錯(cuò)誤通知,不會將錯(cuò)誤的遙控幀轉(zhuǎn)換后發(fā)給MODBUS 從設(shè)備和HART 從站。如果CAN設(shè)備的遙控幀成功發(fā)送給MODBUS 從設(shè)備和HART 從站后,MODBUS 從設(shè)備和HART 從站回復(fù)錯(cuò)誤響應(yīng)給轉(zhuǎn)換模塊,轉(zhuǎn)換模塊將不會向CAN 設(shè)備發(fā)出錯(cuò)誤幀,這是由于CAN 協(xié)議的錯(cuò)誤通知均是在協(xié)議幀正在發(fā)送過程中進(jìn)行上報(bào),轉(zhuǎn)換模塊成功接收遙控幀后,不能再上報(bào)CAN 協(xié)議錯(cuò)誤通知。

如果MODBUS 從設(shè)備和HART 從站回復(fù)校驗(yàn)錯(cuò)誤,或HART 設(shè)備回復(fù)組幀錯(cuò)誤,那么轉(zhuǎn)換模塊將再次發(fā)送命令幀給MODBUS/HART 設(shè)備回復(fù),并設(shè)定最大重復(fù)次數(shù);如果MODBUS 從設(shè)備和HART 從站回復(fù)地址錯(cuò)誤,或MODBUS 設(shè)備回復(fù)非法功能錯(cuò)誤等其他應(yīng)用層錯(cuò)誤,那么轉(zhuǎn)換模塊將錯(cuò)誤響應(yīng)幀轉(zhuǎn)換為CAN 協(xié)議的ACK幀,將錯(cuò)誤信息放入data 字段,回復(fù)給CAN 設(shè)備。

如果CAN 設(shè)備的遙控幀成功發(fā)送給MODBUS 從設(shè)備和HART 從站后,MODBUS 從設(shè)備和HART 從站回復(fù)正確的響應(yīng)幀,轉(zhuǎn)換模塊將響應(yīng)幀進(jìn)行轉(zhuǎn)換后發(fā)送至CAN 總線上,如在發(fā)送過程中產(chǎn)生位錯(cuò)誤、格式錯(cuò)誤、ACK 錯(cuò)誤,轉(zhuǎn)換模塊將按照CAN 協(xié)議要求進(jìn)行錯(cuò)誤通知與重發(fā)操作,如果CAN 接收設(shè)備檢測到響應(yīng)幀的填充錯(cuò)誤、格式錯(cuò)誤、CRC 錯(cuò)誤,轉(zhuǎn)換模塊在檢測到錯(cuò)誤通知后進(jìn)行錯(cuò)誤響應(yīng)與重發(fā)操作。

1.4.2 協(xié)議轉(zhuǎn)換器工作在MODBUS 網(wǎng)絡(luò)狀態(tài)

當(dāng)協(xié)議轉(zhuǎn)換器工作在MODBUS 總線網(wǎng)絡(luò)時(shí),需要將CAN 節(jié)點(diǎn)和HART 從站的錯(cuò)誤響應(yīng)轉(zhuǎn)換為MODBUS 總線的異常響應(yīng)。當(dāng)MODBUS 主站發(fā)送的命令幀請求CAN 節(jié)點(diǎn)和HART 從站回復(fù)時(shí),如果轉(zhuǎn)換模塊接收到的命令幀CRC 校驗(yàn)錯(cuò)誤或奇偶校驗(yàn)錯(cuò)誤時(shí),轉(zhuǎn)換模塊不會將此幀數(shù)據(jù)轉(zhuǎn)換后發(fā)送至CAN 節(jié)點(diǎn)和HART 從站,同時(shí)轉(zhuǎn)換模塊回復(fù)異常響應(yīng)PDU 至MODBUS 主站設(shè)備。

如果轉(zhuǎn)換模塊接收到正確的MODBUS 主站命令PDU,轉(zhuǎn)換模塊將命令PDU 轉(zhuǎn)換后發(fā)送至CAN 節(jié)點(diǎn)和HART 從站,CAN 節(jié)點(diǎn)和HART 從站將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的鏈路層錯(cuò)誤,按照相應(yīng)協(xié)議要求,在CAN 節(jié)點(diǎn)和HART 從站和轉(zhuǎn)換模塊之間進(jìn)行錯(cuò)誤響應(yīng)與錯(cuò)誤處理,不會將錯(cuò)誤通知發(fā)送到MODBUS 網(wǎng)絡(luò)中;CAN 節(jié)點(diǎn)和HART 從站將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的應(yīng)用層錯(cuò)誤,轉(zhuǎn)換模塊將錯(cuò)誤碼轉(zhuǎn)換成MODBUS 協(xié)議中規(guī)定的錯(cuò)誤代碼,回復(fù)異常響應(yīng)PDU 至MODBUS 主站。

1.4.3 協(xié)議轉(zhuǎn)換器工作在HART 網(wǎng)絡(luò)狀態(tài)

當(dāng)協(xié)議轉(zhuǎn)換器工作在HART 總線網(wǎng)絡(luò)時(shí),需要將CAN節(jié)點(diǎn)和MODBUS 從設(shè)備的錯(cuò)誤響應(yīng)轉(zhuǎn)換為HART 總線的錯(cuò)誤響應(yīng)。當(dāng)HART 主站發(fā)送的命令幀請求CAN 節(jié)點(diǎn)和MODBUS 從設(shè)備回復(fù)時(shí),如果轉(zhuǎn)換模塊接收到的命令幀奇偶校驗(yàn)錯(cuò)誤,轉(zhuǎn)換模塊不會將此幀數(shù)據(jù)轉(zhuǎn)換后發(fā)送至CAN 節(jié)點(diǎn)和MODBUS 從設(shè)備,同時(shí)轉(zhuǎn)換模塊回復(fù)異常響應(yīng)幀至HART 主站設(shè)備。

如果轉(zhuǎn)換模塊接收到正確的HART 主站命令PDU,轉(zhuǎn)換模塊將命令PDU 轉(zhuǎn)換后發(fā)送至CAN 節(jié)點(diǎn)和MODBUS從設(shè)備,CAN 節(jié)點(diǎn)和MODBUS 從設(shè)備將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的鏈路層錯(cuò)誤,按照相應(yīng)協(xié)議要求,在CAN 節(jié)點(diǎn)和MODBUS 從設(shè)備和轉(zhuǎn)換模塊之間進(jìn)行錯(cuò)誤響應(yīng)與錯(cuò)誤處理,不會將錯(cuò)誤通知發(fā)送到HART網(wǎng)絡(luò)中;CAN 節(jié)點(diǎn)和MODBUS 從設(shè)備將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的應(yīng)用層錯(cuò)誤,轉(zhuǎn)換模塊將錯(cuò)誤碼轉(zhuǎn)換成HART 協(xié)議中規(guī)定的錯(cuò)誤代碼,回復(fù)錯(cuò)誤響應(yīng)PDU 至HART 主 站。

1.5 總線速度匹配

本部分主要解決兩個(gè)傳輸速率差距較大的總線網(wǎng)絡(luò)之間的通信問題。當(dāng)傳輸速率高的總線網(wǎng)絡(luò)向速率低的網(wǎng)絡(luò)發(fā)送命令請求數(shù)據(jù)時(shí),此時(shí)兩個(gè)網(wǎng)絡(luò)傳輸速率差距較大,應(yīng)答設(shè)備通過速率較低的網(wǎng)絡(luò)接收和發(fā)送應(yīng)答幀,發(fā)出命令的設(shè)備可能會出現(xiàn)等待應(yīng)答超時(shí)的錯(cuò)誤。

當(dāng)網(wǎng)絡(luò)工作在HART 網(wǎng)絡(luò)狀態(tài)時(shí),由于HART 網(wǎng)絡(luò)傳輸速率最低,傳輸速率為1 200 b/s,HART 主站向CAN節(jié)點(diǎn)和MODBUS 從設(shè)備發(fā)送命令時(shí),不會出現(xiàn)等待超時(shí)的錯(cuò)誤。

當(dāng)網(wǎng)絡(luò)工作在MODBUS 網(wǎng)絡(luò)狀態(tài)時(shí),傳輸速率可選較低的9 600 b/s。MODBUS 主設(shè)備向CAN 節(jié)點(diǎn)設(shè)備發(fā)送命令時(shí),由于CAN 總線的傳輸速率最高可達(dá)1 Mb/s,因此不會出現(xiàn)等待超時(shí)錯(cuò)誤;MODBUS 主設(shè)備向HART 從站發(fā)送命令時(shí),經(jīng)計(jì)算,即使HART 網(wǎng)絡(luò)的傳輸速率為9 600 b/s,也能滿足MODBUS 總線協(xié)議要求的應(yīng)答間隔低于3.5 個(gè)字符時(shí)間,所以不會出現(xiàn)等待超時(shí)錯(cuò)誤。

當(dāng)網(wǎng)絡(luò)工作在CAN 網(wǎng)絡(luò)狀態(tài),如果CAN 網(wǎng)絡(luò)的傳輸速率是最高的1 Mb/s,則與其他兩種總線傳輸速率差距很大,但是由于CAN 總線協(xié)議只規(guī)定了鏈路層傳輸規(guī)范,沒有定義應(yīng)答超時(shí)的錯(cuò)誤機(jī)制。為解決此狀態(tài)下的總線速度不匹配問題,可采取以下兩種方式:(1)在CAN 網(wǎng)絡(luò)上定義的應(yīng)用層,其應(yīng)答間隔定義時(shí)長能滿足總線速度差異產(chǎn)生的傳輸間隔。采用這種方式,缺點(diǎn)是整個(gè)網(wǎng)絡(luò)的通信效率較低,浪費(fèi)了CAN 網(wǎng)絡(luò)的傳輸帶寬;優(yōu)點(diǎn)是開發(fā)難度較小。(2)采取異步數(shù)據(jù)緩存的方法。在總線網(wǎng)絡(luò)空閑階段,轉(zhuǎn)換模塊不斷向HART/MODBUS 設(shè)備請求關(guān)鍵數(shù)據(jù),轉(zhuǎn)換模塊將此數(shù)據(jù)預(yù)存到緩沖區(qū)內(nèi),并不斷刷新,當(dāng)CAN 設(shè)備請求HART/MODBUS設(shè)備的數(shù)據(jù)時(shí),可將緩沖區(qū)內(nèi)預(yù)存的數(shù)據(jù)回復(fù)給CAN 設(shè)備。采用這種方式,優(yōu)點(diǎn)是能夠及時(shí)響應(yīng)CAN 設(shè)備的請求,傳輸效率高,缺點(diǎn)是請求的數(shù)據(jù)類型受限,這是由于在總線空閑期間,轉(zhuǎn)換模塊不斷向HART/MODBUS 設(shè)備請求的數(shù)據(jù),并不能覆蓋所有的設(shè)備數(shù)據(jù)類型,如果不斷請求所有的設(shè)備數(shù)據(jù)類型,會占用較大的緩沖區(qū)空間。

2 協(xié)議轉(zhuǎn)換硬件架構(gòu)設(shè)計(jì)

協(xié)議轉(zhuǎn)換的硬件架構(gòu)設(shè)計(jì)圖5 所示。

圖5 現(xiàn)場總線協(xié)議轉(zhuǎn)換硬件架構(gòu)圖

協(xié)議轉(zhuǎn)換部分共包括rec_buffer、tran_buffer、addr_conver、frame_conver、error_conver、discriminator 共6 個(gè)模塊;filedbus_controller 模塊是三種總線控制器模塊;apb_reg和intr 模塊為本硬件架構(gòu)的配置模塊。

2.1 filedbus_controller 模塊

此模塊中集成了3 種總線協(xié)議控制器,用來接收來自總線物理層的協(xié)議串行數(shù)據(jù)。當(dāng)filedbus_controller 模塊接收到總線物理層上的數(shù)據(jù),需要將物理層的串行數(shù)據(jù)轉(zhuǎn)化為字節(jié)數(shù)據(jù),并將字節(jié)數(shù)據(jù)存入到rec_buffer 中。其中MODBUS 總線協(xié)議幀輸出地址域、功能碼和數(shù)據(jù)字段,不輸出CRC 校驗(yàn)字段;CAN 總線協(xié)議幀輸出仲裁段的11 bit CAN ID、控制端的4 bit DLC(數(shù)據(jù)長度)和數(shù)據(jù)段;HART 總線協(xié)議幀輸出定界符、地址段、擴(kuò)展字段、DLL 載荷段(command、octet count、data)。

2.2 緩存模塊

rec_buffer 模塊、tran_buffer 模塊完成的是總線協(xié)議幀的緩存工作,2 個(gè)緩存模塊均采用異步FIFO 實(shí)現(xiàn),F(xiàn)IFO寬度是1 B,深度為256 B,之所以將FIFO 深度設(shè)計(jì)為256 B,是因?yàn)槿N協(xié)議幀幀長最長是256 B,而CAN 總線協(xié)議和HART 總線協(xié)議的協(xié)議幀中均有數(shù)據(jù)長度或者幀長度字段,所以需要預(yù)先緩存整個(gè)協(xié)議幀,才能獲得實(shí)際的數(shù)據(jù)長度或者幀長度。rec_buffer 模塊緩存接收到的上游原始協(xié)議幀數(shù)據(jù),tran_buffer 模塊緩存協(xié)議轉(zhuǎn)換后的協(xié)議幀數(shù)據(jù)。

2.3 addr_conver 模塊

此模塊主要完成的是協(xié)議轉(zhuǎn)換中的協(xié)議地址轉(zhuǎn)換工作。模塊內(nèi)含有一個(gè)地址映射表,此地址映射表中含有原協(xié)議網(wǎng)絡(luò)地址和目標(biāo)協(xié)議網(wǎng)絡(luò)地址的映射關(guān)系,表格可通過外部總線維護(hù)。

映射表中的每一項(xiàng)的前半部分是原協(xié)議幀的地址,后半部分是目標(biāo)協(xié)議地址。由于不同的協(xié)議轉(zhuǎn)換,其原協(xié)議幀地址和目標(biāo)協(xié)議地址長度均不相同,因此,需要根據(jù)轉(zhuǎn)換判斷模塊輸出的指示信號,進(jìn)行地址轉(zhuǎn)換查找。

2.4 frame_conver 模塊

frame_conver 模塊原理圖如圖6 所示,模塊內(nèi)含有6個(gè)不同的轉(zhuǎn)換電路模塊,根據(jù)選擇信號,來判斷原協(xié)議幀將進(jìn)入哪個(gè)轉(zhuǎn)換電路模塊。選擇信號由4 bit 位寬的信號組成,高2 bit 用來表示原數(shù)據(jù)幀總線類型,低2 bit用來表示目標(biāo)總線類型,數(shù)據(jù)分配器將依據(jù)此信號進(jìn)行數(shù)據(jù)分配。

圖6 frame_conver 模塊原理圖

當(dāng)MODBUS 總線協(xié)議幀向CAN 總線協(xié)議和HART總線協(xié)議轉(zhuǎn)換時(shí),MODBUS 總線協(xié)議幀中的命令字段和數(shù)據(jù)字段需填到CAN 總線協(xié)議幀或HART 總線協(xié)議幀的數(shù)據(jù)字段;當(dāng)CAN 總線協(xié)議幀向MODBUS 總線協(xié)議和HART 總線協(xié)議轉(zhuǎn)換時(shí),CAN 總線協(xié)議幀中的數(shù)據(jù)字段填到MODBUS 總線協(xié)議幀或HART 總線協(xié)議幀的數(shù)據(jù)字段;當(dāng)HART 總線協(xié)議幀向MODBUS 總線協(xié)議轉(zhuǎn)換時(shí),HART 總線協(xié)議幀中的命令字段填到MODBUS 總線協(xié)議幀中的命令字段,數(shù)據(jù)字段填到MODBUS 總線協(xié)議幀的數(shù)據(jù)字段,當(dāng)HART 總線協(xié)議幀向CAN 總線協(xié)議轉(zhuǎn)換時(shí),HART 總線協(xié)議幀中的命令字段和數(shù)據(jù)字段填到CAN 總線協(xié)議幀的數(shù)據(jù)字段。

2.5 error_conver 模塊

此模塊主要完成原協(xié)議幀無錯(cuò)誤的被轉(zhuǎn)發(fā)至目標(biāo)協(xié)議設(shè)備后,目標(biāo)協(xié)議設(shè)備回復(fù)的協(xié)議幀出現(xiàn)錯(cuò)誤,此時(shí)的轉(zhuǎn)換工作。

當(dāng)網(wǎng)絡(luò)工作在MODBUS 總線網(wǎng)絡(luò)時(shí),CAN 節(jié)點(diǎn)和HART 從站將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的鏈路層錯(cuò)誤,按照相應(yīng)協(xié)議要求,在CAN 節(jié)點(diǎn)和HART從站和轉(zhuǎn)換模塊之間進(jìn)行錯(cuò)誤響應(yīng)與錯(cuò)誤處理,不會將錯(cuò)誤通知發(fā)送到MODBUS 網(wǎng)絡(luò)中;HART 從站將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的應(yīng)用層錯(cuò)誤,本模塊需要將HART 總線協(xié)議定義的錯(cuò)誤碼轉(zhuǎn)換為MODBUS總線協(xié)議規(guī)定的異常響應(yīng)碼,然后將錯(cuò)誤幀發(fā)送給filedbus_controller 模塊中的MODBUS 總線控制器。

當(dāng)網(wǎng)絡(luò)工作在HART 總線網(wǎng)絡(luò)時(shí),MODBUS 總線從設(shè)備將響應(yīng)幀發(fā)送至轉(zhuǎn)換模塊的過程中產(chǎn)生的應(yīng)用層錯(cuò)誤,本模塊需要將MODBUS 總線協(xié)議定義的一場響應(yīng)碼轉(zhuǎn)換為HART 總線協(xié)議規(guī)定的錯(cuò)誤碼,然后將此錯(cuò)誤碼發(fā)送給filedbus_controller 模塊中的HART 總線控制器。

3 仿真驗(yàn)證

圖7 展示了MODBUS 總線協(xié)議傳輸測試,由仿真圖可以看出MODBUS 總線控制器數(shù)據(jù)收發(fā)正常,波特率配置、奇偶校驗(yàn)配置正常,能進(jìn)行正??偩€通信。

圖7 MODBUS 總線協(xié)議仿真圖

圖8 展示了HART 總線協(xié)議傳輸測試,由仿真圖可以看出HART 總線控制器數(shù)據(jù)收發(fā)正常,中斷產(chǎn)生正常,能進(jìn)行正常的總線通信。

圖8 HART 總線協(xié)議仿真圖

FPGA 原型驗(yàn)證原理圖如圖9 所示,本現(xiàn)場總線協(xié)議轉(zhuǎn)換器內(nèi)集成了三種總線控制器,所以僅需要連接三種總線的物理層芯片,即可接入到三種總線網(wǎng)絡(luò)中。

圖9 FPGA 原型驗(yàn)證原理圖

圖9 展示的是轉(zhuǎn)換器工作在MODBUS 總線網(wǎng)絡(luò)中,MODBUS 物理層采用的是RS232 芯片,轉(zhuǎn)換器通過RS232接入到MODBUS 總線網(wǎng)絡(luò)中,MODBUS 主站向MODBUS總線網(wǎng)絡(luò)發(fā)送協(xié)議幀尋址CAN 節(jié)點(diǎn)或者HART 從設(shè)備,轉(zhuǎn)換器通過RS232 接收MODBUS 總線協(xié)議幀,然后將轉(zhuǎn)換后的協(xié)議幀通過CAN 收發(fā)器和HART 調(diào)制解調(diào)電路發(fā)送至相應(yīng)的總線網(wǎng)絡(luò)中,CAN 節(jié)點(diǎn)和HART 從設(shè)備在相應(yīng)的總線網(wǎng)絡(luò)中接收轉(zhuǎn)換后的協(xié)議幀。

4 結(jié)論

本文介紹了MODBUS 總線、CAN 總線和HART 總線三種總線協(xié)議之間的轉(zhuǎn)換原理,并依據(jù)此轉(zhuǎn)換原理,設(shè)計(jì)了一種現(xiàn)場總線協(xié)議轉(zhuǎn)換硬件架構(gòu),硬件架構(gòu)集成有總線控制器、協(xié)議轉(zhuǎn)換器以及配置模塊。采用硬件電路并行處理總線數(shù)據(jù),進(jìn)行總線協(xié)議幀轉(zhuǎn)換,仿真驗(yàn)證表明實(shí)現(xiàn)了三種總線協(xié)議的轉(zhuǎn)換,轉(zhuǎn)換時(shí)間短且具有確定性。

猜你喜歡
總線控制器錯(cuò)誤
在錯(cuò)誤中成長
工商業(yè)IC卡控制器改造為物聯(lián)網(wǎng)控制器實(shí)踐
PLC可編程控制器相關(guān)外置的選擇計(jì)算研究
一種基于CAN總線的誤碼測試方法
CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
不犯同樣錯(cuò)誤
基于CAN總線的水下通信系統(tǒng)設(shè)計(jì)
模糊PID控制器設(shè)計(jì)及MATLAB仿真
寶馬F02車總線系統(tǒng)
Freescale公司的可編程電磁閥控制器MC33816