帶你認識物聯網 Modbus 通訊協議 -- 補完計畫(三)

閱讀時間約 7 分鐘
Modbus Protocol

Modbus Protocol

在上一次的物聯網 Modbus 補完計畫(二)中,我們提到了 RTU 與 ASCII 兩種傳輸模式差異之處。接下來我們要繼續看第二個部分關於 Modbus TCP 的確認機制。

經過了兩次的補完計畫,不知道你是否又對物聯網 Modbus 協議有更進一步了解呢? 接下來我們繼續聊聊要補完計畫的第三部分。如果你有機會翻閱官網的 Modbus 協議白皮書的話,在第 6 頁的地方有提到 Modbus 有 4 個 Modbus 資料模型 (Data Model) ,在它的說明欄位告訴我們跟 I/O 系統與應用有關,然後,然後就沒有了!包含我自己,我相信第一次看到書上這段落的朋友也是一頭霧水?!這 4 個資料模型究竟要表達什麼意思? 所謂的對應 IO 系統具體指的又是甚麼?這次我們就來接著來說個明白吧。

I/O 就是輸入與輸出

所謂物聯網的 I/O 模組指的是把 Input/Output (輸入/輸出) 的數據通道集成起來的功能模塊,這些數據通道就是物聯網裝置們與世界溝通的介面。具備 IO 能力的物聯網裝置還蠻多元的,從構造相對簡單的 IO 卡、功能強一點 PLC (可程式化邏輯控制單元),強調高速通訊能力的 Controller (控制器) 以及強調平台化擴充能力強大 IPC(工業電腦) 等等… 。它們的硬體底層設計都與 x86 的電腦架構類似,有負責運算的晶片,負責存儲資料的記憶體。

教科書上習慣把電腦與人腦相互類比,這裡也稍微借用一下這個觀念,不妨暫時把 IO 模組想像成我們的手腳、眼耳鼻舌。我們來想一下當想要拿起一個桌上的蘋果時會發生甚麼事?首先,眼睛會接收到桌上的蘋果反射過來的光線(訊號輸入),大腦判斷並記住蘋果的位置、大小、距離等資訊後(CPU 計算 + 記憶體),接著開始伸手拿蘋果(訊號輸出)。物聯網裝置的 IO 模組運作慨念就像我們的手眼一樣,都是透過先訊號輸入,再用計算器計算,最後按照計算結果執行訊號輸出,我們可以肯定物聯網裝置就是虛擬世界與實體世界互動、也是資訊數位化的關鍵。

Data Model 本質是記憶體

物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。記憶體空間是一種抽象化的概念,就暫時把它視為類似於我們 building,一開始裡面都是連續的尚未分隔的空間,有點像剛蓋好的毛胚屋。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。按照 Modbus 白皮書的說明,Data Model 總共有 4 類,分別是 Discretes Inputs(讀取輸入), Coils(讀寫線圈), Input Registers(讀取輸入暫存器) 跟 Holding Registers(讀寫持有暫存器),按照數據處理的規模大小還可以區分為兩組 bit(位元)跟 Word(字),前面兩種負責bit 類型的資料,後面兩個負責字(Word, 2bytes) 等級以上的資料。

Modbus 4 Data Models

Modbus 4 Data Models

Discretes Inputs(讀取輸入)

Discretes Inputs 中文翻譯叫做讀取輸入,它只能處理 0 或 1 這類只有兩種資料變化數據並且要求資料輸入後只能「唯讀」,只能看不能改。所謂的兩種狀態的資料類型指的是 0 或 1,“有”或“沒有”,“開”與“關”等。在 DIgital IO 卡或是在 PLC 上都能看到處理這種訊號的通道叫做 Digital Input (DI),它會偵測輸入來源的電壓變化轉換成數值 (0 或 1) 寫入定義好的 Discretes Inputs 的記憶體區間裡面,接著上層應用系統就透過通訊下指令來取得資料。

電腦很會處理這種只要 1 個 bit 就能處理兩種狀態的資料,為了提高存儲效率還會把 8 個連續的 Discretes Input bits 集合成 1 個 byte 處理,對於 Digital IO 卡產品而言,本來 8 個 DI 通道 (DI0, DI1,… DI7),需要經過 8 次的問答才能得到,現在只要經過一次通訊就能拿回 8 個通道的數據,有效節省傳輸成本。

Coils(讀寫線圈)

Coil 中文翻譯叫做線圈,原意是電線繞圈後的電子元件,具體的可以先簡單想成就像牆壁上的一個電燈開關。在 Digital IO 卡上看到的 DO (Digital Output) 或是 PLC 上的 Y 點位都是,這些 DO 通道可以接受上層系統的指令來決定自己的開關狀態。 Coils 也是處理 1 個 bit 的資料型態與 Discretes Inputs 的差別是 Coils 的數值是可以被讀寫的,上層系統可以按照需求來改寫 DO 的對應的 Coils 數值。假設我們在某一張 Digital IO 卡的第一個 DO 通道上並接了一個 LED 電泡,只要對所在的記憶體位址寫入 1 或 0 就能打開裡面的繼電器開關,做到遠程控制電燈開關的效果了。

Input Registers (讀取輸入暫存器)

在計算機裡的 Registers 就是暫存器。Input 的意思跟前面的 Discretes Input 一樣,都具備「唯讀輸入」意思。相對 Discretes Input 跟 Coil 是處理只有兩種型態的資料,Input Registers 跟 Output registers 就可以運用在類比 Analog 輸入與輸出的資料處理上。類比的訊號例如自然界的光線、溫度、壓力、電波等電腦無法直接處理,必須量測到還要經過取樣才能進來電腦裡,產品的 Input Registers 大小會影響到要存儲的數據量與精度,在 IO 卡上或 PLC 上負責接收類比訊號的通道是 Analog Input (AI)。另外,由於 Input register 具備唯讀特性,所以也會被廠商設計用來存放產品資訊,例如產品的名稱、韌體版本、出廠日期等基本資訊。

Holding Registers (讀寫持有暫存器)

看到這裡你大概也猜到 Holding register 的用途了,跟 Input Register 類似可以處理 Analog Output 是一塊可以讀寫記憶體空間。類比訊號輸出的過程與訊號上述的類比訊號輸入相反,必須提供要輸出類比訊號的特徵給裝置的 Holding Register 裏面,例如電壓範圍、頻率等。負責數位轉類比的元件看到後就會知道要如何盡可能地還原出我們想要的類比訊號。為什麼會說盡可能?因為連續的訊號對數位裝置來說可以被視為解析度無限大的訊號,數位訊號都是取樣過跟原始的類比訊號相比永遠會有落差,所以在類比訊號重建的時候就得靠演算技術來"猜測"兩點之間的樣子。一斑而言取樣率越高、算法越好輸出的類比訊號自然就會更漂亮,比較不會有刺刺的感覺。

Signal Transformation, data source

Signal Transformation, data source

小結論

簡單來說,在 Modbus 協議規範的 4 個 Data Model 都是 4 種不同用途的記憶體暫存器,都是物聯網裝置與上層系統的數據緩衝區(Buffer)。而 Modbus 協會不能把話說死,只能白皮書給出的是一個設計指導原則讓廠商來 follow,所以並沒有嚴格規定一定要在哪個記憶體位置放置哪一種資料,讓廠商們按照自己的產品需求規劃暫存器的記憶體空間,所以廠商就算要把 1 bit 的資料放到 1 byte 裡面來處理是沒問題。對於我們使用者來說,只要能確定知道自己想讀寫的數據放在哪個暫存器位址就可以了。


14會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
我們在上一篇文章聊到了測試左移所需的 8 大能力中的前面 4 個,包含學習研究、反應回饋、作戰計畫、追溯管理的能力,這四個能力也是我們平常工作與生活上遇到困難時的解決問題的核心能力,建議還沒看過第一篇的朋友,可以先回第一篇了解一下。那麼接下來我們要就繼續聊聊測試左移的另外四個能力。
當我們有往左邊看並且嘗試為每一個開發階段設置一個檢查站來把關的想法時,就有了思考方向。原則上所有設計階段的驗證都要通過才能進入量產,因此只要中間有卡關,就不能放行進入下一個階段。
Modbus TCP 可視為一種 Modbus 分支,是跑在實體通訊介面 TCP/IP 上的 Modbus 通訊協議,TCP/IP 就是我們熟悉的網路。現代的網路讓我們的電腦、手機與其他可以上網等裝置連上互聯網,每一個網路上的裝置都被分配一個不同的 IP 位址,這是網路上用來識別每一台裝置的機制
以前當 RD 在開發系統產品的時候需要控制很多硬體設備,韌體工程師有說硬體控制可以走自定義的通訊格式,需要搭配一張指令對照表,按表組成命令下給終端設備,設備們接收到正確的指令後才會做出正確的回應(對於不認識的指令,設備會只會已讀不回!)
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
我們在上一篇文章聊到了測試左移所需的 8 大能力中的前面 4 個,包含學習研究、反應回饋、作戰計畫、追溯管理的能力,這四個能力也是我們平常工作與生活上遇到困難時的解決問題的核心能力,建議還沒看過第一篇的朋友,可以先回第一篇了解一下。那麼接下來我們要就繼續聊聊測試左移的另外四個能力。
當我們有往左邊看並且嘗試為每一個開發階段設置一個檢查站來把關的想法時,就有了思考方向。原則上所有設計階段的驗證都要通過才能進入量產,因此只要中間有卡關,就不能放行進入下一個階段。
Modbus TCP 可視為一種 Modbus 分支,是跑在實體通訊介面 TCP/IP 上的 Modbus 通訊協議,TCP/IP 就是我們熟悉的網路。現代的網路讓我們的電腦、手機與其他可以上網等裝置連上互聯網,每一個網路上的裝置都被分配一個不同的 IP 位址,這是網路上用來識別每一台裝置的機制
以前當 RD 在開發系統產品的時候需要控制很多硬體設備,韌體工程師有說硬體控制可以走自定義的通訊格式,需要搭配一張指令對照表,按表組成命令下給終端設備,設備們接收到正確的指令後才會做出正確的回應(對於不認識的指令,設備會只會已讀不回!)
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
無聊的時候,除了看看緯來日本台有什麼新玩意兒,我也會打開劇串流平台,看看有沒有什麼有趣的。上週百般無聊,其實也不能說無聊,應該說:是覺得事情都很無趣,因為事情還挺多,只是都不想做,能推的通通不二話,直接往後推。
Thumbnail
UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了
Thumbnail
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
Thumbnail
聊到 Serial 通訊就一定會提到 COM Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格
Thumbnail
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
Thumbnail
感謝謐時光心理諮商所及張力尤臨床心理師的邀請,至桃園市向各位心理師夥伴分享我在醫學中心從事失智症照護工作的相關經驗。
Thumbnail
Figma是一個主要用來設計網頁的矢量設計軟件,與Wordpress,Shopify, Webflow等不同,Figma做出來的並不是實際的網站,而是一個雛型(Prototype)。 那你或許會想:“為什麼不直接使用類似Wordpress的工具呢?’’ 試想想以下這一個情況: 你用Wordpress
Thumbnail
近期台灣各地區,可以看見夾娃娃機台再度如雨後春筍般出現。只是,這次除了不同於店面的完整度外,還有機台的內容物:是零食而不再是娃娃!
Thumbnail
從短篇文中教你認識會計之四大財務報表 在會計學當中,有固定之四大正式報表,分別為「資產負債表」、「綜合損益表」、「權益變動表」以及「現金流量表」,今天帶大家簡單認識會計當中的四大財務報表分別要帶給大家何種資訊價值。 資產負債表,又稱財務狀況表,從名字就可得知,其主要表達的資訊即一家公司在「某一時點」
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
無聊的時候,除了看看緯來日本台有什麼新玩意兒,我也會打開劇串流平台,看看有沒有什麼有趣的。上週百般無聊,其實也不能說無聊,應該說:是覺得事情都很無趣,因為事情還挺多,只是都不想做,能推的通通不二話,直接往後推。
Thumbnail
UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了
Thumbnail
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
Thumbnail
聊到 Serial 通訊就一定會提到 COM Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格
Thumbnail
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
Thumbnail
感謝謐時光心理諮商所及張力尤臨床心理師的邀請,至桃園市向各位心理師夥伴分享我在醫學中心從事失智症照護工作的相關經驗。
Thumbnail
Figma是一個主要用來設計網頁的矢量設計軟件,與Wordpress,Shopify, Webflow等不同,Figma做出來的並不是實際的網站,而是一個雛型(Prototype)。 那你或許會想:“為什麼不直接使用類似Wordpress的工具呢?’’ 試想想以下這一個情況: 你用Wordpress
Thumbnail
近期台灣各地區,可以看見夾娃娃機台再度如雨後春筍般出現。只是,這次除了不同於店面的完整度外,還有機台的內容物:是零食而不再是娃娃!
Thumbnail
從短篇文中教你認識會計之四大財務報表 在會計學當中,有固定之四大正式報表,分別為「資產負債表」、「綜合損益表」、「權益變動表」以及「現金流量表」,今天帶大家簡單認識會計當中的四大財務報表分別要帶給大家何種資訊價值。 資產負債表,又稱財務狀況表,從名字就可得知,其主要表達的資訊即一家公司在「某一時點」