本發明涉及通信技術領域,具體涉及一種基于主從模式下通信協議的通信方法及裝置。
背景技術:
Modbus協議是工業中應用很廣的一種通信協議,TCP/IP協議是網絡中覆蓋率極高的通信協議。
Modbus TCP/IP協議可實現工業以太網數據交換。結合了以上兩種協議的長處,實現了傳輸距離更長、傳輸數據能力更強、而且利用了通用網絡部件達到了實施價格低廉的目的。目前也已經得到了工業中應用的廣泛認可。
目前,modbus TCP/IP在網口通訊中主要是按照類似modbus協議的一主多從模式,也就是一個主機多個從機的模式,一般是從機向主機發送請求、然后主機應答、主機廣播、主機點名等方式。圖1是現有技術中工業設備之間組網模式示意圖,如圖1所示,通信網絡構建的兩部分:服務器和客戶機。通信過程:客戶機向服務器發送請求,建立通信。服務器一直處于監聽狀態。
技術實現要素:
有鑒于此,本發明實施例提供了一種基于主從模式下通信協議的通信方法及裝置,以解決現有技術中MODBUS TCP/IP主機和MODBUS TCP/IP從機之間不能相互讀數據和寫數據的問題。
為此,本發明實施例提供了如下技術方案:
根據第一方面,本發明實施例提供了一種基于主從模式下通信協議的通信方法,應用于基于主從模式下通信協議的節點,包括:接收監聽信息;根據所述監聽信息將節點狀態設置為服務器狀態。
可選地,根據所述監聽信息將節點狀態設置為服務器狀態之后,還包括:從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。
可選地,從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量包括:獲取第一指示信息,其中,所述第一指示信息用于指示讀取數據的起始地址和讀取數據的長度;根據所述第一指示信息從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。
根據第二方面,本發明實施例還提供了一種基于主從模式下通信協議的通信方法,應用于基于主從模式下通信協議的節點,包括:獲取目標服務器的地址;根據所述目標服務器的地址連接至所述目標服務器,將節點狀態設置為客戶機狀態。
可選地,將節點狀態設置為客戶機狀態之后,還包括:從所述目標服務器讀取開關量和/或模擬量;和/或,向所述目標服務器發送開關量和/或模擬量。
可選地,從所述目標服務器讀取開關量和/或模擬量包括:獲取第二指示信息,其中,所述第二指示信息用于指示讀取數據的起始地址和讀取數據的長度;根據所述第二指示信息從所述目標服務器讀取開關量和/或模擬量;和/或,向所述目標服務器發送開關量和/或模擬量包括:獲取第三指示信息,其中,所述第三指示信息用于指示發送數據的起始地址和發送數據的長度;根據所述第三指示信息向所述目標服務器發送開關量和/或模擬量。
可選地,所述主從模式下通信協議為MODBUS TCP/IP協議。
根據第三方面,本發明實施例還提供了一種基于主從模式下通信協議的通信裝置,應用于基于主從模式下通信協議的節點,包括:接收模塊,用于接收監聽信息;第一設置模塊,用于根據所述監聽信息將節點狀態設置為服務器狀態。
可選地,所述裝置還包括:第一讀取模塊,用于在所述第一設置模塊在根據所述監聽信息將節點狀態設置為服務器狀態之后,從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。
可選地,所述第一讀取模塊包括:第一獲取單元,用于獲取第一指示信息,其中,所述第一指示信息用于指示讀取數據的起始地址和讀取數據的長度;第一讀取單元,用于根據所述第一指示信息從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。
根據第四方面,本發明實施例還提供了一種基于主從模式下通信協議的通信裝置,應用于基于主從模式下通信協議的節點,包括:獲取模塊,用于獲取目標服務器的地址;第二設置模塊,用于根據所述目標服務器的地址連接至所述目標服務器,將節點狀態設置為客戶機狀態。
可選地,所述裝置還包括:第二讀取模塊,用于在所述第二設置模塊將節點狀態設置為客戶機狀態之后,從所述目標服務器讀取開關量和/或模擬量;和/或,發送模塊,用于在所述第二設置模塊將節點狀態設置為客戶機狀態之后,向所述目標服務器發送開關量和/或模擬量。
可選地,所述第二讀取模塊包括:第二獲取單元,用于獲取第二指示信息,其中,所述第二指示信息用于指示讀取數據的起始地址和讀取數據的長度;第二讀取單元,用于根據所述第二指示信息從所述目標服務器讀取開關量和/或模擬量;和/或,發送模塊包括:第三獲取單元,用于獲取第三指示信息,其中,所述第三指示信息用于指示發送數據的起始地址和發送數據的長度;發送模塊,用于根據所述第三指示信息向所述目標服務器發送開關量和/或模擬量。
可選地,所述主從模式下通信協議為MODBUS TCP/IP協議。
本發明實施例技術方案,具有如下優點:
1.本發明實施例提供了一種基于主從模式下通信協議的通信方法及裝置,應用于基于主從模式下通信協議的節點,接收監聽信息,根據監聽信息將節點狀態設置為服務器狀態,例如,在基于主從模式下通信協議的客戶機在接收到監聽信息之后,將該客戶機設置為服務器狀態,從而使得該客戶機同時具備了服務器的功能,進而使得基于主從模式下通信協議的多個節點之間可以相互讀數據和寫數據。
2.本發明實施例提供了一種基于主從模式下通信協議的通信方法及裝置,應用于基于主從模式下通信協議的節點,獲取目標服務器的地址,根據目標服務器的地址連接至目標服務器,將節點狀態設置為客戶機狀態,例如,在基于主從模式下通信協議的服務器獲取到目標服務器的地址之后,連接至該目標服務器,將該服務器設置為客戶機狀態,從而使得該服務器同時具備了客戶機的功能,進而使得基于主從模式下通信協議的多個節點之間可以相互讀數據和寫數據。
附圖說明
為了更清楚地說明本發明具體實施方式或現有技術中的技術方案,下面將對具體實施方式或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施方式,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是現有技術中工業設備之間組網模式示意圖;
圖2是根據本發明實施例的基于主從模式下通信協議的通信方法的一個流程圖;
圖3是根據本發明實施例的工業設備之間組網模式示意圖;
圖4是根據本發明實施例的基于主從模式下通信協議的通信方法的另一個流程圖;
圖5是根據本發明實施例的節點界面示意圖;
圖6是根據本發明實施例的基于主從模式下通信協議的通信裝置的一個結構框圖;
圖7是根據本發明實施例的基于主從模式下通信協議的通信裝置的一個結構框圖。
具體實施方式
下面將結合附圖對本發明的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
在本發明的描述中,需要說明的是,術語“中心”、“上”、“下”、“左”、“右”、“豎直”、“水平”、“內”、“外”等指示的方位或位置關系為基于附圖所示的方位或位置關系,僅是為了便于描述本發明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構造和操作,因此不能理解為對本發明的限制。此外,術語“第一”、“第二”、“第三”僅用于描述目的,而不能理解為指示或暗示相對重要性。
在本發明的描述中,需要說明的是,除非另有明確的規定和限定,術語“安裝”、“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,還可以是兩個元件內部的連通,可以是無線連接,也可以是有線連接。對于本領域的普通技術人員而言,可以具體情況理解上述術語在本發明中的具體含義。
此外,下面所描述的本發明不同實施方式中所涉及的技術特征只要彼此之間未構成沖突就可以相互結合。
實施例1
在本實施例中提供了一種基于主從模式下通信協議的通信方法,應用于基于主從模式下通信協議的節點,圖2是根據本發明實施例的基于主從模式下通信協議的通信方法的一個流程圖,如圖2所示,該流程包括如下步驟:
步驟S201:接收監聽信息;
步驟S202:根據該監聽信息將節點狀態設置為服務器狀態。例如,在基于主從模式下通信協議的客戶機在接收到監聽信息之后,將該客戶機設置為服務器狀態,從而使得該客戶機同時具備了服務器的功能,進而使得基于主從模式下通信協議的多個節點之間可以相互讀數據和寫數據。
通過上述步驟,在接收到監聽信息的情況下,將基于主從模式下通信協議的節點設備為服務器狀態,從而使得基于主從模式下通信協議的節點同時具備了服務器和客戶機的功能,每個節點作為服務器可以監聽其他各節點的數據、作為客戶機訪問其他各個節點進行數據的讀寫,實現了無主通信,即多主多從的通信方式,方便了實現了各個工業設備之間的數據讀和寫。
圖3是根據本發明實施例的工業設備之間組網模式示意圖,如圖3所示,每個節點做了兩部分融合:既有服務器功能又有客戶機功能。每個節點作為服務器可以監聽其他各節點的數據、作為客戶機訪問其他各個節點進行數據的讀寫。
在將節點狀態設置為服務器狀態之后,該節點就可以從客戶機讀取數據了,在一個可選實施例中,從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量,從而方便、快捷的獲取到了其他節點的開關量和/或模擬量。
在節點讀取其他節點的開關量和/或模擬量時,在一個可選實施例中,首先獲取第一指示信息,其中,第一指示信息用于指示讀取數據的起始地址和讀取數據的長度,根據第一指示信息從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。從而通過該第一指示信息,可以獲取到想要獲取的開關量和/或模擬量。
在另一個可選實施例中,還提供了另一種基于主從模式下通信協議的通信方法,應用于基于主從模式下通信協議的節點,圖4是根據本發明實施例的基于主從模式下通信協議的通信方法的另一個流程圖,如圖4所示,該流程包括如下步驟:
步驟S401,獲取目標服務器的地址;
步驟S402,根據目標服務器的地址連接至目標服務器,將節點狀態設置為客戶機狀態。
通過上述步驟,在獲取到目標服務器的地址時,連接至該目標服務器,將節點狀態設置為客戶機狀態,例如,在基于主從模式下通信協議的服務器獲取到目標服務器的地址之后,連接至該目標服務器,將該服務器設置為客戶機狀態,從而使得基于主從模式下通信協議的節點同時具備了服務器和客戶機的功能,每個節點作為服務器可以監聽其他各節點的數據、作為客戶機訪問其他各個節點進行數據的讀寫,實現了無主通信,即多主多從的通信方式,方便了實現了各個工業設備之間的數據讀和寫。
在一個可選實施例中,將節點狀態設置為客戶機狀態之后,從目標服務器讀取開關量和/或模擬量。在另一個可選實施例中,將節點狀態設置為客戶機狀態之后,向目標服務器發送開關量和/或模擬量。從而在多個節點之間可完成開關量和/或模擬量的交互。
各個節點為了按照需求讀取或者發送開關量和/或模擬量,在一個可選實施例中,獲取第二指示信息,其中,第二指示信息用于指示讀取數據的起始地址和讀取數據的長度,根據第二指示信息從目標服務器讀取開關量和/或模擬量。在另一個可選實施例中,獲取第三指示信息,其中,第三指示信息用于指示發送數據的起始地址和發送數據的長度,根據第三指示信息向目標服務器發送開關量和/或模擬量。
上述主從模式下通信協議可以包括多種通信協議,例如可以為MODBUS TCP/IP協議。
下面結合圖5對同時具備服務器和客戶機功能的節點進行描述。
整個系統是在Linux環境下的Qt平臺所完成。下面通過具體界面來介紹一下通信過程和整體功能。圖5上半部分是作為服務器的部分,圖5下半部分是作為客戶機的部分。
(1)服務器部分:
首先點擊左上角的listen,使自身處于監聽狀態。
Serverip部分是服務器自身的ip地址,可以通過右上角的位置進行ip地址的設置更新。
服務器自身的開關量和模擬量可以通過update bit和update word來更新數據。更新的數據顯示在input status和input registers里面。
服務器的右半部分兩個窗體:coil status和holding registers。是用來接收客戶機發來的開關量和模擬量數據的。
(2)客戶機部分:
首先作為客戶機的部分,如界面所示是整個界面的下半區。左上角可以設置要連接的服務器地址,然后點擊connect進行連接。Read onlymode和read write mode是可選擇的,前者作用是選擇了讀取目標服務器的開關量,后者作用是選擇了讀取目標服務器的模擬量。
左半區有兩個窗體:read status和read registers。前者是讀取來的目標服務器的開關量,后者是讀取來的目標服務器的模擬量。兩個窗體都有start addr和bit count,其作用分別是設置讀取數據的起始地址和設置讀取數據的長度。get bit是開始獲取目標服務器開關量的指令鍵,get word是開始獲取目標服務器模擬量的指令鍵。
右半區有兩個窗體:coil status和holding registers。前者是客戶機要發送給目標服務器的開關量數據,后者是客戶機要發送給目標服務器的模擬量數據。可以通過update bit來更新前者的數據,通過update word來更新后者的數據。兩個窗體都有start addr和bit count,其作用分別是設置發送數據的起始地址和設置發送數據的長度。Send bit是開始發送開關量的指令鍵,send word是開始發送模擬量的指令鍵。
以上就是根據設計的界面來對單個節點的介紹,簡單說明就是各個節點自身既是服務器又是客戶機,它可以獲取其它節點發來的數據,也可以讓其它節點讀取自己的數據,并且各節點自身的ip和要連接的ip都可以進行設置。
作為客戶機部分在設置要連接的目標服務器的ip時,多個節點可以連接同一個目標服務器也可以不同,比較靈活。
實施例2
在本實施例中還提供了一種基于主從模式下通信協議的通信裝置,該裝置用于實現上述實施例及優選實施方式,已經進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能并被構想的。
本發明實施例提供了一種基于主從模式下通信協議的通信裝置,應用于基于主從模式下通信協議的節點,如圖6所示,包括:接收模塊61,用于接收監聽信息;第一設置模塊62,用于根據該監聽信息將節點狀態設置為服務器狀態。
可選地,該裝置還包括:第一讀取模塊,用于在第一設置模塊62在根據該監聽信息將節點狀態設置為服務器狀態之后,從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。
可選地,第一讀取模塊包括:第一獲取單元,用于獲取第一指示信息,其中,第一指示信息用于指示讀取數據的起始地址和讀取數據的長度;第一讀取單元,用于根據第一指示信息從基于主從模式下通信協議的客戶機讀取開關量和/或模擬量。
上述各個模塊的更進一步的功能描述與上述對應實施例相同,在此不再贅述。
實施例3
在本實施例中還提供了另一種基于主從模式下通信協議的通信裝置,該裝置用于實現上述實施例及優選實施方式,已經進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能并被構想的。
上述各個模塊的更進一步的功能描述與上述對應實施例相同,在此不再贅述。
本發明實施例還提供了另一種基于主從模式下通信協議的通信裝置,應用于基于主從模式下通信協議的節點,如圖7所示,包括:獲取模塊71,用于獲取目標服務器的地址;第二設置模塊72,用于根據目標服務器的地址連接至目標服務器,將節點狀態設置為客戶機狀態。
可選地,該裝置還包括:第二讀取模塊,用于在該第二設置模塊72將節點狀態設置為客戶機狀態之后,從目標服務器讀取開關量和/或模擬量;和/或,發送模塊,用于在第二設置模塊72將節點狀態設置為客戶機狀態之后,向目標服務器發送開關量和/或模擬量。
可選地,該第二讀取模塊包括:第二獲取單元,用于獲取第二指示信息,其中,第二指示信息用于指示讀取數據的起始地址和讀取數據的長度;第二讀取單元,用于根據第二指示信息從目標服務器讀取開關量和/或模擬量;和/或,發送模塊包括:第三獲取單元,用于獲取第三指示信息,其中,該第三指示信息用于指示發送數據的起始地址和發送數據的長度;發送模塊,用于根據該第三指示信息向該目標服務器發送開關量和/或模擬量。
可選地,該主從模式下通信協議為MODBUS TCP/IP協議。
上述各個模塊的更進一步的功能描述與上述對應實施例相同,在此不再贅述。
本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,上述實施例僅僅是為清楚地說明所作的舉例,而并非對實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發明創造的保護范圍之中。