一種兼容Modbus協議的BACnet協議棧的數據處理方法及系統與流程
2023-06-25 08:46:02 2

本發明涉及網絡通信技術領域,具體而言,涉及一種兼容modbus協議的bacnet協議棧的數據處理方法及系統。
背景技術:
modbus是osi模型第7層上的應用層報文傳輸協議,它在連接至不同類型總線或網絡的設備之間提供客戶機/伺服器通信。串行鏈路modbus通常使用主從技術,即僅一設備(主設備)能初始化傳輸(查詢或控制)。
目前,bacnetip是開放的樓宇設備自動控制網絡數據通信協議。隨著internet在通信領域的發展,控制網絡與internet的互聯已是必然趨勢。但現有技術中還未能將這兩種協議進行相互自由轉換,使得控制網絡與internet的互聯存在通信障礙。
技術實現要素:
本發明實施例提供了一種兼容modbus協議的bacnet協議棧的數據處理方法及系統,能夠使得modbus協議和bacnet協議進行自由轉換。
為實現上述目的,本發明實施例一方面提供一種兼容modbus協議的bacnet協議棧的數據處理方法,所述方法包括:上位機對bacnet協議棧進行讀寫屬性操作時,向網際網路上發送一幀udp數據幀;所述bacnet協議棧接收所述udp數據幀後,將所述udp數據幀中的對象id解析為modbus數據幀中的設備地址和起始地址,並將所述udp數據幀中的當前值解析為所述modbus數據幀中的數據長度和有效數據;所述bacnet協議棧將解析後的信息發送至modbus庫;所述modbus庫以modbus數據幀的格式將解析後的信息發送至各個機組處。
進一步地,所述udp數據幀中的對象id包括參數偏移和設備偏移;相應地,將所述udp數據幀中的對象id解析為modbus數據幀中的設備地址和起始地址包括:
將所述對象id中的參數偏移賦值給所述modbus數據幀中的起始地址,並將所述對象id中的設備偏移賦值給所述modbus數據幀中的設備地址。
進一步地,將所述udp數據幀中的當前值解析為所述modbus數據幀中的數據長度和有效數據包括:
將所述udp數據幀中的當前值作為所述modbus數據幀中的有效數據,並將所述udp數據幀中的當前值所處數據的長度作為所述modbus數據幀中的數據長度。
進一步地,所述modbus庫以modbus數據幀的格式將解析後的信息發送至各個機組處包括:所述modbus庫以modbus數據幀的格式將解析後的信息發送至485總線上,以使得機組通過所述485總線接收並解析modbus數據幀中攜帶的信息;相應地,所述方法還包括:所述機組將所述上位機請求的信息以modbus數據幀的格式發送到485總線;所述modbus庫通過所述485總線接收所述modbus數據幀,基於所述modbus數據幀中的設備地址和起始地址,解析得到udp數據幀的對象id,並根據所述modbus數據幀中的數據長度和有效數據解析得到udp數據幀中的當前值;所述modbus庫將解析得到的信息傳給bacnet協議棧,以使得所述bacnet協議棧將所述解析得到的信息以udp數據幀的格式發送到網際網路上;所述上位機通過網絡設備從網際網路中獲取所述udp數據幀。
進一步地,基於所述modbus數據幀中的設備地址和起始地址,解析得到udp數據幀的對象id包括:
將所述modbus數據幀中的設備地址賦值給所述對象id中的設備偏移,並將所述modbus數據幀中的起始地址賦值給所述對象id中的參數偏移;其中,所述對象id中的設備類型、機型系列以及對象類型由使用modbus協議的機組的機型預先約定。
進一步地,根據所述modbus數據幀中的數據長度和有效數據解析得到udp數據幀中的當前值包括:
根據所述起始地址和數據長度,確定預設參數在有效數據中的目標地址;
將所述目標地址處的數據值賦值給所述udp數據幀中的當前值。
本申請還提供一種兼容modbus協議的bacnet協議棧的數據處理系統,所述系統包括上位機、bacnet協議棧、modbus庫以及機組,其中:所述上位機,用於對所述bacnet協議棧進行讀寫屬性操作時,向網際網路上發送一幀udp數據幀;所述bacnet協議棧,用於接收所述udp數據幀後,將所述udp數據幀中的對象id解析為modbus數據幀中的設備地址和起始地址,並將所述udp數據幀中的當前值解析為所述modbus數據幀中的數據長度和有效數據;將解析後的信息發送至所述modbus庫;所述modbus庫,用於以modbus數據幀的格式將解析後的信息發送至各個機組處。
進一步地,所述udp數據幀中的對象id包括參數偏移和設備偏移;相應地,所述bacnet協議棧包括:
id轉換單元,用於將所述對象id中的參數偏移賦值給所述modbus數據幀中的起始地址,並將所述對象id中的設備偏移賦值給所述modbus數據幀中的設備地址。
進一步地,所述bacnet協議棧還包括:
數據轉換單元,用於將所述udp數據幀中的當前值作為所述modbus數據幀中的有效數據,並將所述udp數據幀中的當前值所處數據的長度作為所述modbus數據幀中的數據長度。
進一步地,所述modbus庫以modbus數據幀的格式將解析後的信息發送至485總線上,以使得機組通過所述485總線接收並解析modbus數據幀中攜帶的信息;相應地,所述機組還用於將所述上位機請求的信息以modbus數據幀的格式發送到485總線;所述modbus庫還用於通過所述485總線接收所述modbus數據幀,基於所述modbus數據幀中的設備地址和起始地址,解析得到udp數據幀的對象id,並根據所述modbus數據幀中的數據長度和有效數據解析得到udp數據幀中的當前值;將解析得到的信息傳給bacnet協議棧,以使得所述bacnet協議棧將所述解析得到的信息以udp數據幀的格式發送到網際網路上;所述上位機還用於通過網絡設備從網際網路中獲取所述udp數據幀。
由上可見,本申請通過bacnet協議棧對網際網路中的udp數據幀進行解析,可以將udp數據幀中的對象id和當前值分別解析為modbus數據幀中的設備地址、起始地址、數據長度和有效數據,從而能夠將bacnet數據幀轉換為modbus數據幀,從而使得機組能夠解析出上位機發出的信息。此外,通過modbus庫對modbus數據幀進行解析,可以將modbus數據幀轉換為bacnet數據幀,從而可以實現這兩種協議之間的自由轉換,消除了控制網絡與internet的互聯之間存在的通信障礙。
附圖說明
構成本申請的一部分的附圖用來提供對本發明的進一步理解,本發明的示意性實施例及其說明用於解釋本發明,並不構成對本發明的不當限定。在附圖中:
圖1為本申請中mobus協議與bacnet協議之間的轉換架構圖;
圖2為本申請中數據轉換的示意圖;
圖3為本申請中id轉換的示意圖;
圖4為本申請中數據轉換的示意圖。
具體實施方式
為了使本技術領域的人員更好地理解本申請中的技術方案,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都應當屬於本申請保護的範圍。
本申請提供一種兼容modbus協議的bacnet協議棧的數據處理方法,所述方法包括:
s1:上位機對bacnet協議棧進行讀寫屬性操作時,向網際網路上發送一幀udp數據幀;
s2:所述bacnet協議棧接收所述udp數據幀後,將所述udp數據幀中的對象id解析為modbus數據幀中的設備地址和起始地址,並將所述udp數據幀中的當前值解析為所述modbus數據幀中的數據長度和有效數據;
s3:所述bacnet協議棧將解析後的信息發送至modbus庫;
s4:所述modbus庫以modbus數據幀的格式將解析後的信息發送至各個機組處。
其中,所述modbus協議是由modicon(現為施耐德電氣公司的一個品牌)在1979年發明的,是全球第一個真正用於工業現場的總線協議。所述bacnet協議(樓宇自動控制網絡數據通訊協議,adatacommunicationprotocolforbuildingautomationandcontrolnetworks)是由美國暖通、空調和製冷工程師協會組織的標準項目委員會135p歷經八年半時間開發的。
在本實施方式中,所述udp(userdatagramprotocol,用戶數據報協議)數據幀中的對象id包括參數偏移和設備偏移;相應地,將所述udp數據幀中的對象id解析為modbus數據幀中的設備地址和起始地址包括:
將所述對象id中的參數偏移賦值給所述modbus數據幀中的起始地址,並將所述對象id中的設備偏移賦值給所述modbus數據幀中的設備地址。
在本實施方式中,將所述udp數據幀中的當前值解析為所述modbus數據幀中的數據長度和有效數據包括:
將所述udp數據幀中的當前值作為所述modbus數據幀中的有效數據,並將所述udp數據幀中的當前值所處數據的長度作為所述modbus數據幀中的數據長度。
在本實施方式中,所述modbus庫以modbus數據幀的格式將解析後的信息發送至各個機組處包括:所述modbus庫以modbus數據幀的格式將解析後的信息發送至485總線上,以使得機組通過所述485總線接收並解析modbus數據幀中攜帶的信息;相應地,所述方法還包括:所述機組將所述上位機請求的信息以modbus數據幀的格式發送到485總線;所述modbus庫通過所述485總線接收所述modbus數據幀,基於所述modbus數據幀中的設備地址和起始地址,解析得到udp數據幀的對象id,並根據所述modbus數據幀中的數據長度和有效數據解析得到udp數據幀中的當前值;所述modbus庫將解析得到的信息傳給bacnet協議棧,以使得所述bacnet協議棧將所述解析得到的信息以udp數據幀的格式發送到網際網路上;所述上位機通過網絡設備從網際網路中獲取所述udp數據幀。
在本實施方式中,基於所述modbus數據幀中的設備地址和起始地址,解析得到udp數據幀的對象id包括:
將所述modbus數據幀中的設備地址賦值給所述對象id中的設備偏移,並將所述modbus數據幀中的起始地址賦值給所述對象id中的參數偏移;其中,所述對象id中的設備類型、機型系列以及對象類型由使用modbus協議的機組的機型預先約定。
在本實施方式中,根據所述modbus數據幀中的數據長度和有效數據解析得到udp數據幀中的當前值包括:
根據所述起始地址和數據長度,確定預設參數在有效數據中的目標地址;
將所述目標地址處的數據值賦值給所述udp數據幀中的當前值。
具體地,modbus協議數據請求幀主要由設備地址、功能碼、起始地址、數據長度和crc校驗五部分組成,其中設備地址和起始地址主要用來標示參數地址,定位參數數據位置,功能碼用於識別數據功能類型,數據長度指此次所要讀取的數據長度。
modbus協議數據響應幀主要由設備地址、功能碼、字節個數、有效數據和crc校驗五部分組成,其中設備地址也是用來標示參數地址,定位參數數據,功能碼用於識別數據功能類型,字節個數指有效數據的字節數,有效數據就是所讀取的參數數據。
bacnet對象主要由對象id(objectid)、當前值(presentvalue)、對象名稱(objectname)等內容組成,其中presentvalue包含模擬數據、開關量、多態數據等多種數據類型得數據值,objectname由字符串組成,對象id由32bits組成,可以分成參數偏移、設備偏移、設備類型、機型系列、對象類型五段。
請參閱圖1至圖4,上位機對bacnet協議棧進行讀寫屬性操作,向網際網路上發送一幀udp數據幀,當bacnet協議棧通過各種網絡設備接收到這一幀udp數據後進行解析,通過數據轉換邏輯處理算法將相關信息傳給modbus庫,modbus庫以modbus幀格式發送到485總線上,機組接收485總線數據,解析出相應的信息。
機組將上位機想要的信息以modbus幀格式發送到485總線,modbus庫解析機組發送上來的modbus幀,通過數據轉換邏輯處理算法將相關信息傳給bacnet協議棧,bacnet協議棧又將相關信息以udp格式發送到網際網路,udp數據通過各種網絡設備傳回到上位機。
在本實施方式中,在進行id轉換時,modbus幀中的設備地址和起始地址是用來標示參數地址,定位參數數據位置的,因此就得到了有效數據的機組編號和參數編號,而bacnet對象id的參數偏移和設備偏移兩段正好也是標示參數地址,定位參數數據位置的,故而,直接將modbus幀中的設備地址和起始地址賦給bacnet對象id的參數偏移和設備偏移。
在本實施方式中,bacnet對象id的其他三段設備類型、機型系列、對象類型是針對使用modbus協議的機組機型提前約定好的,因此參數偏移、設備偏移、設備類型、機型系列、對象類型五段組成bacnet對象id值。
在本實施方式中,在進行數據轉換時,通過id轉換算法得到了有效數據的起始位置,根據數據長度和參數偏移值即可定位某個參數在有效數據中的地址。將此地址中的數據值賦給presentvalue即可。
在本實施方式中,通過bacnet協議配置modbus參數實施方案如下:
1、初始化乙太網口,為上位機提供bacnet數據寫入接口;
2、上位機通過bacnetip協議寫入modbus配置參數(包含但不限於標準幀、波特率、採樣點、極性等modbus參數);
3、程序內部收到配置信息後,初始化485硬體接口;
4、控制器初始化完畢,通過485接口接收或等待bacnetip數據指令;
在本實施方式中,通過bacnet協議寫入modbus數據實施方案如下:
1、上位機通過bacnetip協議寫入id的數據(presentvalue、objectname、其它屬性);
2、程序保存對象id的objectname;
3、程序得到bacnetid,通過id轉換算法解析得到modbus設備地址和起始地址;
4、程序得到presentvalue,通過數據轉換算法解析得到modbus有效數據;
5、程序拼接modbus設備地址、起始地址和data得到需要發送的modbus數據報文;
6、程序將modbus報文發送到485總線上;
在本實施方式中,通過bacnet協議讀取485數據實施方案如下:
1、通過上述初始化後,485接口電路接收485總線數據(設備地址、起始地址和data);
2、程序通過id轉換算法解析modbus設備地址和起始地址得到objectid;
3、程序通過數據轉換算法解析modbusdata得到presentvalue;
4、程序建立objectid、presentvalue、objectname及其它屬性關係,得到一個bacnet對象;
5、程序通過下發的bacnetip查詢數據包得到id值;
6、程序通過得到的id值返回需要查詢的數據。如:presentvalue、objectname及其它屬性。
本申請還提供一種兼容modbus協議的bacnet協議棧的數據處理系統,所述系統包括上位機、bacnet協議棧、modbus庫以及機組,其中:
所述上位機,用於對所述bacnet協議棧進行讀寫屬性操作時,向網際網路上發送一幀udp數據幀;
所述bacnet協議棧,用於接收所述udp數據幀後,將所述udp數據幀中的對象id解析為modbus數據幀中的設備地址和起始地址,並將所述udp數據幀中的當前值解析為所述modbus數據幀中的數據長度和有效數據;將解析後的信息發送至所述modbus庫;
所述modbus庫,用於以modbus數據幀的格式將解析後的信息發送至各個機組處。
在本實施方式中,所述udp數據幀中的對象id包括參數偏移和設備偏移;相應地,所述bacnet協議棧包括:
id轉換單元,用於將所述對象id中的參數偏移賦值給所述modbus數據幀中的起始地址,並將所述對象id中的設備偏移賦值給所述modbus數據幀中的設備地址。
在本實施方式中,所述bacnet協議棧還包括:
數據轉換單元,用於將所述udp數據幀中的當前值作為所述modbus數據幀中的有效數據,並將所述udp數據幀中的當前值所處數據的長度作為所述modbus數據幀中的數據長度。
在本實施方式中,所述modbus庫以modbus數據幀的格式將解析後的信息發送至485總線上,以使得機組通過所述485總線接收並解析modbus數據幀中攜帶的信息;相應地,所述機組還用於將所述上位機請求的信息以modbus數據幀的格式發送到485總線;所述modbus庫還用於通過所述485總線接收所述modbus數據幀,基於所述modbus數據幀中的設備地址和起始地址,解析得到udp數據幀的對象id,並根據所述modbus數據幀中的數據長度和有效數據解析得到udp數據幀中的當前值;將解析得到的信息傳給bacnet協議棧,以使得所述bacnet協議棧將所述解析得到的信息以udp數據幀的格式發送到網際網路上;所述上位機還用於通過網絡設備從網際網路中獲取所述udp數據幀。
由上可見,本申請通過bacnet協議棧對網際網路中的udp數據幀進行解析,可以將udp數據幀中的對象id和當前值分別解析為modbus數據幀中的設備地址、起始地址、數據長度和有效數據,從而能夠將bacnet數據幀轉換為modbus數據幀,從而使得機組能夠解析出上位機發出的信息。此外,通過modbus庫對modbus數據幀進行解析,可以將modbus數據幀轉換為bacnet數據幀,從而可以實現這兩種協議之間的自由轉換,消除了控制網絡與internet的互聯之間存在的通信障礙。
顯然,本領域的技術人員應該明白,上述的本發明實施例的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,並且在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟,或者將它們分別製作成各個集成電路模塊,或者將它們中的多個模塊或步驟製作成單個集成電路模塊來實現。這樣,本發明實施例不限制於任何特定的硬體和軟體結合。
以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明實施例可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。