本發明涉及通信網絡領域,尤其涉及一種Modbus通信網絡的網絡地址分配方法、從節點設備與通信系統。
背景技術:
Modbus是一種串行通訊協議,以其協議簡單、實施容易、性價比高、可靠性好等優點而獲得了越來越廣發的應用,成為工業領域通信協議標準,并且是工業電子設備之間相對常壓的連接方式。
Modbus網絡是一個主/從結構的網絡,其中有一個節點是主節點,其他使用Modbus協議參與通信的節點是從節點,該網絡中每一個從節點設備都有一個唯一的地址。
在網絡中,只有被指定為主節點的節點可以啟動一個命令,每一個Modbus命令都包含了打算執行的節點的設備地址并以廣播的方式向網絡中各從節點發布,各從節點需要根據命令中包含的設備地址判斷是否需要執行。因此,Modbus網絡中各從節點的地址設定就顯得尤為重要。
現有技術通過人工手動逐個地設置從機地址(如設置每臺從機的拔碼開關等方式),這樣做會需要專業人員操作從而增加系統成本且效率低下。
技術實現要素:
針對上述問題,本發明的目的在于提供一種Modbus通信網絡的網絡地址分配方法、從節點設備與通信系統,自動化地設置從機地址,提高設置從機的網絡地址的效率,減小系統成本。
為了實現上述目的,本發明一方面提供了一種Modbus通信網絡的網絡地址分配方法,包括:
從節點設備接收主節點設備發送的合法地址分配指令,并判斷本設備的網絡地址是否合法;其中,任一從節點設備的原始網絡地址屬于非法網絡地址;
從節點設備在判定本設備的網絡地址非法時進入延時搶占過程;其中,所述延時搶占過程的時長預先配置,且不同的從節點設備所配置的延時搶占過程的時長不同;
當在所述延時搶占過程中從節點設備沒有接收到其他從節點設備發送的分配成功通知消息時,所述從節點設備響應于所述延時搶占過程結束將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息。
優選地,所述合法地址分配指令包括第一地址分配指令;所述第一地址分配指令為所述主節點設備按照一定的時間間隔發送到各個從節點設備,且所述第一地址分配指令所記載的網絡地址為未被分配的合法網絡地址。
優選地,所述合法地址分配指令還包括第二地址分配指令;所述第二地址分配指令為所述主節點設備在檢測到有至少兩個從節點設備的網絡地址沖突時發送到各個從節點設備,且所述第二地址分配指令所記載的網絡地址為產生沖突的網絡地址;
所述方法還包括:
從節點設備在判定本設備的網絡地址合法時,判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時進入延時搶占過程;
當在所述延時搶占過程中從節點設備接收到其他從節點設備發送的分配成功通知消息時,從節點設備判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時將本設備的網絡地址設定為非法網絡地址。
優選地,所述方法還包括:
從節點設備接收主節點設備發送的地址沖突調整指令,并判斷本設備的網絡地址與產生沖突的網絡地址是否相同;所述地址沖突調整指令為所述主節點設備在檢測到有至少兩個從節點設備的網絡地址沖突時發送到各個從節點設備;所述地址沖突調整指令中記載了所述產生沖突的網絡地址;
從節點設備在判定本設備的網絡地址與所述產生沖突的網絡地址相同時,將本設備的網絡地址設定為非法網絡地址。
優選地,所述方法還包括:
從節點設備在上電時獲取其唯一物理編號;
從節點設備根據所述唯一物理編號以及預先配置的統一算法計算所述延時搶占過程的時長并存儲起來。
優選地,所述方法還包括:
從節點設備獲取用戶輸入的網絡地址設定指令;
從節點設備將本設備的網絡地址設定為所述網絡地址設定指令所要求設定的網絡地址。
本發明實施例另一方面還提供一種Modbus通信網絡中的從節點設備,包括:
分配指令接收模塊,用于接收主節點設備發送的合法地址分配指令,并判斷本設備的網絡地址是否合法;其中,任一從節點設備的原始網絡地址屬于非法網絡地址;
第一判定模塊,用于在判定本設備的網絡地址非法時進入延時搶占過程;其中,所述延時搶占過程的時長預先配置,且不同的從節點設備所配置的延時搶占過程的時長不同;
第一地址設定模塊,用于當在所述延時搶占過程中從節點設備沒有接收到其他從節點設備發送的分配成功通知消息時,所述從節點設備響應于所述延時搶占過程結束將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息。
優選地,所述合法地址分配指令包括第一地址分配指令;所述第一地址分配指令為所述主節點設備按照一定的時間間隔發送到各個從節點設備,且所述第一地址分配指令所記載的網絡地址為未被分配的合法網絡地址。
優選地,所述合法地址分配指令還包括第二地址分配指令;所述第二地址分配指令為所述主節點設備在檢測到有至少兩個從節點設備的網絡地址沖突時發送到各個從節點設備,且所述第二地址分配指令所記載的網絡地址為產生沖突的網絡地址;
所述從節點設備還包括:
第二判定模塊,用于在判定本設備的網絡地址合法時,判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時進入延時搶占過程;
第二設定模塊,用于當在所述延時搶占過程中接收到其他從節點設備發送的分配成功通知消息時,判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時將本設備的網絡地址設定為非法網絡地址。
優選地,所述從節點設備還包括:
調整指令接收模塊,用于接收主節點設備發送的地址沖突調整指令,并判斷本設備的網絡地址與產生沖突的網絡地址是否相同;所述地址沖突調整指令為所述主節點設備在檢測到有至少兩個從節點設備的網絡地址沖突時發送到各個從節點設備;所述地址沖突調整指令中記載了所述產生沖突的網絡地址;
從節點設備在判定本設備的網絡地址與所述產生沖突的網絡地址相同時,將本設備的網絡地址設定為非法網絡地址。
優選地,所述從節點設備還包括:
物理編號獲取模塊,用于在上電時獲取其唯一物理編號;
時長計算模塊,用于根據所述唯一物理編號以及預先配置的統一算法計算所述延時搶占過程的時長并存儲起來。
優選地,所述從節點設備還包括:
設定指令獲取模塊,用于獲取用戶輸入的網絡地址設定指令;
第四地址設定模塊,用于從節點設備將本設備的網絡地址設定為所述網絡地址設定指令所要求設定的網絡地址。
本發明實施例還提供一種Modbus通信系統,包括主節點設備以及若干個第一方面所述的從節點設備。
相比于現有技術,本發明實施例的有益效果在于:本發明實施例提供了一種Modbus通信網絡的網絡地址分配方法、從節點設備與通信系統,其中方法包括:從節點設備接收主節點設備發送的合法地址分配指令,并判斷本設備的網絡地址是否合法;從節點設備在判定本設備的網絡地址非法時進入延時搶占過程;當在所述延時搶占過程中從節點設備沒有接收到其他從節點設備發送的分配成功通知消息時,所述從節點設備響應于所述延時搶占過程結束將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息。在本發明實施例中,不同的從節點設備所配置的延時搶占過程的時長不同,使得延時搶占過程的時長最短的從節點設備首先“搶占”所述合法地址分配指令所記載的網絡地址,將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息,使得有且只有一臺從節點設備能“搶占”到所述合法地址分配指令所記載的網絡地址。本發明實施例能夠自動化地設置從機地址,無需人工逐一設置,在有新的從節點設備接入時自動分配網絡地址使從節點設備快速加入到總線中,大大地提高設置從機的網絡地址的效率,減小系統成本。
附圖說明
為了更清楚地說明本發明的技術方案,下面將對實施方式中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施方式,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例提供的一種Modbus通信網絡的網絡地址分配方法的流程示意圖;
圖2是本發明實施例提供的一種Modbus通信網絡中的從節點設備10的結構框圖;
圖3是本發明實施例提供的一種Modbus通信系統的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
請參閱圖1,其是本發明實施例提供的一種Modbus通信網絡的網絡地址分配方法的流程示意圖。所述Modbus通信網絡的網絡地址分配方法包括步驟S11~S13:
S11,從節點設備接收主節點設備發送的合法地址分配指令,并判斷本設備的網絡地址是否合法;其中,任一從節點設備的原始網絡地址屬于非法網絡地址;
所述原始網絡地址是指從節點設備的默認網絡地址,即從節點設備在第一次接入到Modbus通信網絡中所具有的網絡地址。由于任一從節點設備的原始網絡地址屬于非法網絡地址,即任一從節點設備在第一次接入到Modbus通信網絡中所具有的網絡地址都是非法的,需要按照本方法重新設定為合法網絡地址,因而本方法可以為新接入的從節點設備自動地分配網絡地址使從節點設備快速加入到總線中。
需要說明的是,這里所述的網絡地址的合法與非法是在通信協議中約定好的。例如,可以約定網絡地址范圍為【01H,F7H】之間的地址都屬于合法網絡地址,所有的合法網絡地址組成合法網絡地址群,則該范圍以外的地址都屬于非法網絡地址。主節點設備按照上述約定在合法地址分配指令中配置一個合法網絡地址,從節點設備也按照上述約定判斷本設備的網絡地址是否合法。
S12,從節點設備在判定本設備的網絡地址非法時進入延時搶占過程;其中,所述延時搶占過程的時長預先配置,且不同的從節點設備所配置的延時搶占過程的時長不同;
其中,所述延時搶占過程的時長配置方法可以是預先逐一配置的。
為了提高配置效率,在本實施例中所述延時搶占過程的時長配置方法采用以下的方式:
從節點設備在上電時獲取其唯一物理編號;
從節點設備根據所述唯一物理編號以及預先配置的統一算法計算所述延時搶占過程的時長并存儲起來。
由于從節點設備能夠很容易就獲取得到本設備的唯一物理編號,那么只需要在從節點設備內部寫入統一算法,從節點設備就能自動根據唯一物理編號以及統一算法來計算出本設備所對應的延時搶占過程的時長。此外,不同的從節點設備的唯一物理編號是唯一的,不同的從節點設備通過統一算法計算出來的延時搶占過程的時長也不同。
S13,當在所述延時搶占過程中從節點設備沒有接收到其他從節點設備發送的分配成功通知消息時,所述從節點設備響應于所述延時搶占過程結束將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息。
由于每個從節點設備都會經歷延時搶占過程,并且不同的從節點設備所經歷的時長不同,那么延時搶占過程的時長最短的從節點設備首先“搶占”所述合法地址分配指令所記載的網絡地址,將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息,使得有且只有一臺從節點設備能“搶占”到所述合法地址分配指令所記載的網絡地址。
優選地,所述合法地址分配指令包括第一地址分配指令;所述第一地址分配指令為所述主節點設備按照一定的時間間隔發送到各個從節點設備,且所述第一地址分配指令所記載的網絡地址為未被分配的合法網絡地址。
需要說明的是,這里所述的未被分配的合法網絡地址,是指在當前沒有任何一臺從節點設備占用的網絡地址。在步驟S13中,主節點設備接收到從節點設備發送的分配成功通知消息,并將被分配的網絡地址記錄下來,從而在合法網絡地址群中區分未被分配的合法網絡地址以及被分配了的合法網絡地址。為了避免將已被分配了的合法網絡地址又分配出去從而產生沖突,在本實施例中第一地址分配指令所記載的網絡地址為未被分配的合法網絡地址。
由于程序出錯或者人為原因會導致將兩臺從節點設備的網絡地址設置成相同的,從而產生網絡地址沖突,Modbus通信網絡出錯。為了解決網絡地址沖突的問題,在本發明的第一種實施方式中將產生沖突的網絡地址記載在合法地址分配指令中。
具體地,所述合法地址分配指令還包括第二地址分配指令;所述第二地址分配指令為所述主節點設備在檢測到有至少兩個從節點設備的網絡地址沖突時發送到各個從節點設備,且所述第二地址分配指令所記載的網絡地址為產生沖突的網絡地址;
所述方法還包括:
從節點設備在判定本設備的網絡地址合法時,判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時進入延時搶占過程;
當在所述延時搶占過程中從節點設備接收到其他從節點設備發送的分配成功通知消息時,從節點設備判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時將本設備的網絡地址設定為非法網絡地址。
此時,會搶占這個產生沖突的網絡地址的從節點設備有兩種:一種是本身的網絡地址是非法的,另一種是原來使用該產生沖突的網絡地址的從節點設備,并且第二種的從節點設備至少是兩臺。
為了更清楚地說明這種實施方式,以下舉例說明:
假設從節點設備1和從節點設備2的網絡地址沖突,共用了網絡地址X,并且從節點設備3的網絡地址是非法的。主節點設備檢測到從節點設備1和從節點設備2的網絡地址沖突,將記載了網絡地址X的合法地址分配指令廣播出去。從節點設備3的網絡地址是非法的所以參與“搶占”,而從節點設備1和從節點設備2的網絡地址與網絡地址X均相同,因而從節點設備1和從節點設備2也參與搶占。對于從節點設備1和從節點設備2來說,如果沒有搶占到網絡地址X,就將本設備的網絡地址設為非法網絡地址,在下次分配時再參與“搶占”,從而解決了從節點設備之間的網絡地址沖突的問題。
同樣為了解決了從節點設備之間的網絡地址沖突的問題,在第二種實施方式中,本方法還包括:
從節點設備接收主節點設備發送的地址沖突調整指令,并判斷本設備的網絡地址與產生沖突的網絡地址是否相同;所述地址沖突調整指令為所述主節點設備在檢測到有至少兩個從節點設備的網絡地址沖突時發送到各個從節點設備;所述地址沖突調整指令中記載了所述產生沖突的網絡地址;
從節點設備在判定本設備的網絡地址與所述產生沖突的網絡地址相同時,將本設備的網絡地址設定為非法網絡地址。
即直接將網絡地址沖突的從節點設備的網絡地址設置為非法網絡地址,在下次分配時再參與“搶占”。與第一種實施方式相比,在第一種實施方式中網絡地址沖突的從節點設備通過“搶占”產生沖突的網絡地址來解決網絡地址沖突的問題,而第二種實施方式則是直接將網絡地址沖突的從節點設備的網絡地址設置為非法網絡地址,這兩種實施方式都可以實現。
更優選地,所述方法還包括:
從節點設備獲取用戶輸入的網絡地址設定指令;
從節點設備將本設備的網絡地址設定為所述網絡地址設定指令所要求設定的網絡地址。用戶可以根據需要為某臺從節點設備配置指定的網絡地址。
為了執行上述的Modbus通信網絡的網絡地址分配方法,本發明實施例還提供了一種Modbus通信網絡中的從節點設備。請參閱圖2,其是本發明實施例提供的一種Modbus通信網絡中的從節點設備10的結構框圖,包括:
分配指令接收模塊11,用于接收主節點設備發送的合法地址分配指令,并判斷本設備的網絡地址是否合法;其中,任一從節點設備10的原始網絡地址屬于非法網絡地址;
第一判定模塊12,用于在判定本設備的網絡地址非法時進入延時搶占過程;其中,所述延時搶占過程的時長預先配置,且不同的從節點設備10所配置的延時搶占過程的時長不同;
第一地址設定模塊13,用于當在所述延時搶占過程中從節點設備10沒有接收到其他從節點設備10發送的分配成功通知消息時,所述從節點設備10響應于所述延時搶占過程結束將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備10發送所述分配成功通知消息。
優選地,所述合法地址分配指令包括第一地址分配指令;所述第一地址分配指令為所述主節點設備按照一定的時間間隔發送到各個從節點設備10,且所述第一地址分配指令所記載的網絡地址為未被分配的合法網絡地址。
為了解決網絡地址沖突的問題,在第一種實施方式中,所述合法地址分配指令還包括第二地址分配指令;所述第二地址分配指令為所述主節點設備在檢測到有至少兩個從節點設備10的網絡地址沖突時發送到各個從節點設備10,且所述第二地址分配指令所記載的網絡地址為產生沖突的網絡地址;
所述從節點設備10還包括:
第二判定模塊,用于在判定本設備的網絡地址合法時,判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時進入延時搶占過程;
第二設定模塊,用于當在所述延時搶占過程中接收到其他從節點設備10發送的分配成功通知消息時,判斷本設備的網絡地址與所述合法地址分配指令所記載的網絡地址是否相同,并在相同時將本設備的網絡地址設定為非法網絡地址。
為了解決網絡地址沖突的問題,在第二種實施方式中,所述從節點設備10還包括:
調整指令接收模塊,用于接收主節點設備發送的地址沖突調整指令,并判斷本設備的網絡地址與產生沖突的網絡地址是否相同;所述地址沖突調整指令為所述主節點設備在檢測到有至少兩個從節點設備10的網絡地址沖突時發送到各個從節點設備10;所述地址沖突調整指令中記載了所述產生沖突的網絡地址;
從節點設備10在判定本設備的網絡地址與所述產生沖突的網絡地址相同時,將本設備的網絡地址設定為非法網絡地址。
優選地,所述從節點設備10還包括:
物理編號獲取模塊,用于在上電時獲取其唯一物理編號;
時長計算模塊,用于根據所述唯一物理編號以及預先配置的統一算法計算所述延時搶占過程的時長并存儲起來。
優選地,所述從節點設備10還包括:
設定指令獲取模塊,用于獲取用戶輸入的網絡地址設定指令;
第四地址設定模塊,用于從節點設備10將本設備的網絡地址設定為所述網絡地址設定指令所要求設定的網絡地址。
需要說明的是,本發明實施例提供的一種Modbus通信網絡中的從節點設備10用于執行上述的Modbus通信網絡的網絡地址分配方法,兩者的工作原理和有益效果一一對應,因而不再贅述。
請參閱圖3,其是本發明實施例提供的一種Modbus通信系統的結構示意圖。所述Modbus通信系統包括主節點設備20以及若干個圖2實施例所示的從節點設備10。所述從節點設備10與所述主節點設備20之間通過總線連接。在圖3中雖然只用三個從節點設備10示意,但實際上從節點設備10的數量是不限制的。
相比于現有技術,本發明實施例的有益效果在于:本發明實施例提供了一種Modbus通信網絡的網絡地址分配方法、從節點設備與通信系統,其中方法包括:從節點設備接收主節點設備發送的合法地址分配指令,并判斷本設備的網絡地址是否合法;從節點設備在判定本設備的網絡地址非法時進入延時搶占過程;當在所述延時搶占過程中從節點設備沒有接收到其他從節點設備發送的分配成功通知消息時,所述從節點設備響應于所述延時搶占過程結束將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息。在本發明實施例中,不同的從節點設備所配置的延時搶占過程的時長不同,使得延時搶占過程的時長最短的從節點設備首先“搶占”所述合法地址分配指令所記載的網絡地址,將本設備的地址設定為所述合法地址分配指令所記載的網絡地址,并向所述主節點設備以及其他從節點設備發送所述分配成功通知消息,使得有且只有一臺從節點設備能“搶占”到所述合法地址分配指令所記載的網絡地址。本發明實施例能夠自動化地設置從機地址,無需人工逐一設置,在有新的從節點設備接入時自動分配網絡地址使從節點設備快速加入到總線中,大大地提高設置從機的網絡地址的效率,減小系統成本。
以上所揭露的僅為本發明一種較佳實施例而已,當然不能以此來限定本發明之權利范圍,本領域普通技術人員可以理解實現上述實施例的全部或部分流程,并依本發明權利要求所作的等同變化,仍屬于發明所涵蓋的范圍。
本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。