何謂Modbus RTU?
Modbus RTU(Remote Terminal Unit)是一種用於串行通信的通信協議,常用於自動化和監控系統中,用於在不同設備之間傳輸數據。這種通信協議被廣泛應用於工業自動化領域,包括工廠自動化、建築自動化、能源管理系統、環境監控等領域。
Modbus RTU的特點包括:
串行通信:Modbus RTU使用串行通信,通常是RS-232或RS-485通信介面,因此它適用於長距離通信。
簡單而高效:協議設計簡單,易於實現,因此廣泛應用於各種設備和控制系統中。
主從架構:通常,Modbus通信由主站(Master)發起,並向從站(Slave)發送指令。從站接收指令並回應主站的請求。
支持不同功能碼:Modbus RTU支持多種功能碼,包括讀取數據、寫入數據、控制操作等,可滿足不同的應用需求。
CRC校驗:為了確保通信的可靠性,Modbus RTU使用CRC(循環冗餘檢查)校驗來驗證數據的完整性,防止數據損壞。
數據格式:Modbus RTU使用二進制格式表示數據,因此通常需要使用Modbus RTU通信協議轉換器來與計算機進行通信。
總的來說,Modbus RTU是一個廣泛應用的工業通信協議,用於實現自動化控制和監控系統之間的數據交換。它的簡單性和可靠性使其在工業領域中受到廣泛使用。
事前步驟
以下我們先以仁拓科技推出的溫溼度感測器(RS485)來進行測試,在開始之前需要有幾個步驟要事先進行準備:
確保有轉接器以及驅動程式已安裝:首先當你拿到產品後,要先知道因為他是485的介面,因此我們需要將他接到電腦才能夠進行設定。而這時候就需要一個485轉USB的轉接器。在使用485轉USB轉接器時,確保您的電腦已安裝相關的驅動程式。您可能需要在轉接器的製造商網站上下載並安裝正確的驅動程式。
確認Modbus地址:將產品接上電腦後我們可以打開廠商附贈或是自己找出的Modbus設定工具,它可以讓你去針對PROTOCAL的設定進行變更。並且確認此設備的Modbus地址。在設定工具中,檢查產品的Modbus地址是非常重要的,因為它決定了您的設備如何在Modbus通信中識別自己。確保它與您的設備的實際Modbus地址匹配。
了解功能碼:找出產品包裝中的說明文件,並且針對PROTOCAL的頁面進行閱讀。而這就像是鑰匙和鎖頭一樣,需要有相同契合的尺寸才能夠打開門。因此對於Modbus來說這又是最重要的一環。
了解鮑率及COM:打開產品文件,裡面會提到需要填入的BAUD RATE,指的是有效數據訊號調變載波的速率,而COM的數字就要看USB進入電腦後,在裝置管理員中的序號為多少,一併填入設定工具中。
鑰匙與寶藏
當我們啟動設定工具時,通常會看到兩個重要的欄位,它們是目標字串和計算結果。這兩個欄位之間的互動有點像使用一把特殊的「鑰匙」來打開一把鎖。
首先,目標字串就像是您依據產品文件中提供的信息所輸入的「鑰匙」。它是一串特定的字符或數字序列,代表了您希望設備執行的操作或查詢的內容。目標字串是您向設備傳遞指令或請求的方式,就像將鑰匙插入鎖中一樣。
而計算結果則是當您確保目標字串是正確的「鑰匙」後,所獲得的開鎖結果。這是一串16進位的數字,每一個欄位都有其特定的含義,就像打開了一把鎖後所獲得的寶藏。這些數字代表了您所需的信息,例如溫度數據或其他設備信息。
簡而言之,目標字串是您提供給設備的指令或請求的描述,而計算結果是您從設備獲得的實際信息。這個過程就像使用正確的鑰匙打開一扇門,讓您可以訪問所需的資訊或執行特定的操作。每個16進位數字都是一個謎底的一部分,讓您更深入地理解和掌握您的設備。
例如在仁拓的溫度感測器文件中,定義的讀取設備位置溫溼度值的詢問幀為以下圖示:
這時我們就要在Modbus設定工具中的第一欄打入01 03 00 00 00 02 ,第二個欄位及會出現相對應的應答幀,也就是溫濕度的數值,以此例來說,就是:01 03 04 01 E6 FF 9F
後面的校驗碼是甚麼呢?
而後兩位的校驗碼是一個自動計算的檢查碼,在Modbus RTU通訊協議中,CRC(循環冗餘檢查)校驗碼是一個自動計算的檢查碼,用於驗證通信中的數據的完整性。通常,Modbus RTU通訊協議將指令前面的字節(包括地址、功能碼、溫溼度數值等)進行CRC計算,然後將計算出的CRC校驗碼附加到消息的末尾。
當接收方收到消息時,它也會執行相同的CRC計算,並將計算結果與接收到的CRC校驗碼進行比較。如果計算出的CRC校驗碼與接收到的CRC校驗碼相符,則認為消息未被損壞,並且可以進一步處理該消息。如果校驗失敗,則可能需要重試通信或發出錯誤警告。
因此,CRC校驗碼確實用於確保Modbus RTU通信中的數據完整性,並且它是一個自動計算的檢查碼,用於確保通信的可靠性。
透過應答幀來計算溫溼度數值
溫度計算的方法我們以第5點的溫溼度值應答幀為例:
溫度計算:如果溫度低於0℃,則溫度數據以補數的形式上傳。讓我們來計算溫度: a. 溫度數據:FF9F(十六進位) b. 將FF9F轉換為十進位:FF9F(十六進位)= -97(十進位) c. 溫度 = -97 / 10 = -9.7℃ 因此,溫度是-9.7℃。
濕度計算: 濕度數據是1E6(十六進位)。 a. 將1E6轉換為十進位:1E6(十六進位)= 486(十進位) b. 濕度 = 486 / 10 = 48.6%RH 因此,濕度是48.6% 相對濕度(RH)。
簡單來說,根據回應幀中的數據,可以將溫度數據轉換為十進位,然後將其除以10,以獲得溫度(℃)。同樣地,將濕度數據轉換為十進位,然後除以10,以獲得相對濕度(%RH)的值。這樣,能夠更容易地理解和解釋溫溼度數據的含義。
怎麼更改設備的鮑率呢?
當您想要更改一組溫溼度感測器的設置,例如將通信速率(BAUD RATE)從4800更改為9600,以及更改每個感測器的地址,這是一個簡單的解釋:
更改通信速率:通信速率是數據在通信線路上的傳輸速度。要將通信速率從4800改為9600,您需要向每個感測器發送一個特定的命令,這稱為詢問幀。在該詢問幀中,您需要指定新的通信速率的數字代碼。例如,將01改為02表示9600的速率。發送這個詢問幀後,感測器將以新的速率進行通信。
2. 設定工具的設定:請注意,當您更改通信速率或感測器地址時,您也需要將設定工具
的通信速率和詢問幀中的地址相應地調整。這樣,設定工具才能正確地與感測器進行通
信。
我們可以看到,若我們想要將4800改為9600,就需要在串列傳輸速率值內容那欄,將01改為02,因此這時我們在詢問幀輸入01 06 07 D1 00 02即可。
如何避免設備混淆呢?
當您有多台溫溼度感測器,並且希望區分它們以避免混淆,您可以更改每個感測器的地址。以下是更簡單易懂的解釋:
更改感測器地址:每個感測器都需要一個獨一無二的地址,就像每個房子都有不同的地址一樣。這樣,您可以準確地識別每個感測器。要更改感測器的地址,您需要使用特定的命令,這稱為詢問幀。在詢問幀中,您指定一個新的地址,以便感測器知道它的新身份。
調整設定工具:重要的是要記住,當您更改感測器的地址時,您還需要確保您的設定工具的設置與新地址相匹配。這意味著您需要將設定工具的詢問幀中的地址第一個欄位改為新的地址。
總之,通過更改每個感測器的地址,您可以輕鬆地將它們區分開來,避免混淆。同時,請確保您的設定工具的設置與感測器的設置相符,包括地址和通信速率,以確保正確的通信和數據收集。這有助於更好地管理多個溫度和濕度感測器。
這時就去產品文件看相關的詢問幀:01 06 07 D0 00 02
若是更改成功,應答幀就會回應:02 06 07 D0 00 02
但要記得,更改了BAUD RATE就需要再重新將設定工具的BAUD RATE重新設定再連線,而重新設定了地址,就必須將詢問幀第一欄的01改為你設定的數字。
例如查詢溫溼度值時,我們若已將地址改為02,則日後的詢問都需要:
01 03 00 00 00 02 → 02 03 00 00 00 02
Commenti