1. 程式人生 > >使用Top Server為Wonderware揭開Modbus暫存器定址的神祕面紗

使用Top Server為Wonderware揭開Modbus暫存器定址的神祕面紗

    從1979年開始,Modbus已經作為一種“開放式”協議使用,多年來各行各業對Modbus有許多不同的解釋。對於那些不同的Modbus解釋,有很多關於訪問資料的不同術語的困惑。在這篇文章中,我將逐步介紹Modbus定址的基礎知識,包括偏移如何發揮作用,以及它們如何影響在TOP Server for Wonderware應用程式中使用的地址。

    由於在世界各地幾乎有同樣多的不同裝置製造商在同時實現Modbus協議,因此裝置文件有時不清楚該為特定資料請求什麼數字地址。所以,本文的目的是為Modbus定址如何工作提供一個解釋,以便更容易理解如何使用

TOP Server訪問Modbus裝置中的資料。

Modbus地址的型別

當我們討論Modbus協議以及如何處理特定的資料位置時,通常有四種不同型別的Modbus地址:

     1.保持暫存器 - 具有讀/寫訪問許可權的16位地址(4xxxxx)

     2.內部暫存器 - 具有隻讀訪問許可權的16位地址(3xxxxx)

     3.輸入線圈 - 具有隻讀訪問許可權的1位(布林)地址(1xxxxx)

     4.輸出線圈 - 具有讀/寫訪問許可權的1位(布林)地址(0xxxxx)

由於某些裝置文件沒有提供對地址型別(如4xxxxx或保持暫存器)引用的Modbus地址的詳細列表,因此考慮根據特定地址包含的資料型別以及是否可以讀取和寫入或者僅能讀取來讀取Modbus地址是有意義的。

modbus 1

由於它們所代表的資料型別,您還可能會看到離散或數字地址的模擬或線圈暫存器。

偏移定址:4001和40001和400001之間有區別嗎?

正如我之前提到的,Modbus協議已經存在了幾十年,可以說是世界上最廣泛使用的裝置通訊協議。話雖如此,隨著Modbus協議的誕生,當記憶體大小不做出改變時,與目前可用的大量記憶體相比,70年代後期裝置上的記憶體總量很小。

在考慮TOP Server Modbus Suite是否與裝置相容時,最常見的問題之一是TOP Server是否支援特定的地址範圍。TOP Server支援的列出的地址範圍如下:

  • 保持暫存器-400001- 465536
  • 內部暫存器-300001- 365536
  • 輸入線圈 - 100001-165536
  • 輸出線圈 - 000001- 065536

對於許多裝置,支援的地址範圍遠小於此。例如,通過保持暫存器,在這樣的裝置中,4001的地址作為起始地址無法接近400001。那麼,鑑於這些資料,TOP Server如何聲稱對Modbus裝置有如此廣泛的支援?

事實上,TOP Server Modbus Suite支援4001,40001甚至400001。TOP Server支援所有Modbus地址,因為Modbus使用一種稱為偏移定址的定址。為了說明偏移地址的工作原理,請注意一下在上圖中,我們是怎麼將起始編號與地址的其餘部分分開的。

圖中的地址“4001”,有兩條我們感興趣的資訊:

   1.起始編號“4”表示應該從裝置請求什麼型別的地址。(保持暫存器 = 4)

   2.數字“001”表示應該從裝置請求哪個地址偏移。(偏移 = 1)

根據這些知識,我們將相同的原理應用於TOP Server支援的起始保持暫存器地址“400001”。

   1.我們的起始編號是“4”,這意味著我們要有保持暫存器。

   2.移除“4”後的剩餘數字是“00001”,其在數值上與“001”相同,並且表示相同的偏移量“1”。

請一定注意,許多Modbus裝置可能不支援TOP Server支援的所有資料偏移。為了避免在輸入此類裝置的地址時出現錯誤,TOP Server Modbus驅動程式會根據在地址欄位中輸入的內容“填充”地址(新增一個或多個數字)。 因此,TOP Server會自動在中間考慮“額外”的零,並根據需要填充地址。

對於所有不同的Modbus地址型別(內部暫存器 = 3,輸入線圈 = 1,輸出線圈 = 0),同樣的原則也適用。原因是Modbus在發出請求後傳送到Modbus裝置時不包含“400001”或“4001”。而只有地址偏移量作為命令的一部分和指定讀取或寫入操作的程式碼以及Modbus地址型別(保持暫存器等)一起傳送。

您需要什麼型別的Modbus地址?

確定在TOP Server中使用哪個地址的最簡單方法是確定您在裝置中訪問的是哪種地址:

1.您的文件指定特定的資料片段是模擬的(非布林/二進位制/離散 - 例如2,500或2.5689或58,535等),您具有對此資料的讀寫許可權:

  • 您需要訪問保持暫存器。
  • 您可以在文件指定的任何地址偏移的開頭新增“4”。

2.您的文件指定一段資料是模擬的,您只能讀取此資料:

  • 您需要訪問內部暫存器。
  • 您可以在文件指定的任何地址偏移的開頭新增“3”。

3.您的文件指定了布林/二進位制/離散值(如 開/關,真/假或0/1),您只具有對此地址的只讀訪問許可權:

  • 您需要訪問輸入線圈。
  • 您可以在文件指定的任何地址偏移的開頭新增“1”。

4.您的文件指定了布林/二進位制/離散值,您具有對此地址的讀寫許可權:

  • 您需要訪問輸出線圈
  • 您可以在文件指定的任何地址偏移的開頭新增“0”。

準備開始從您自己的Modbus裝置訪問資料了嗎?

             TOP Server OPC Server v6.6更新資訊                                TOP Server OPC Server v6.6試用版下載