什么是 Modbus?
Modbus 是由Modicon 于 1979 年發(fā)布的 Modicon 開(kāi)發(fā)的串行通信協(xié)議,用于其可編程邏輯控制器 (PLC)。簡(jiǎn)單來(lái)說(shuō),它是一種用于在電子設(shè)備之間通過(guò)串行線路傳輸信息的方法。請(qǐng)求信息的設(shè)備稱為 Modbus 主設(shè)備,提供信息的設(shè)備稱為 Modbus 從設(shè)備。再標(biāo)準(zhǔn)的 Modbus 網(wǎng)絡(luò)中,有一個(gè)主站和多達(dá) 247 個(gè)從站,每個(gè)從站都有一個(gè)從 1 到 247 的唯一從站地址。主站也可以將信息寫入從站。
Modbus有什么用途?
Modbus 是一種開(kāi)放協(xié)議,這意味著制造商可以免費(fèi)將其構(gòu)建到他們的設(shè)備中,而無(wú)需支付版稅。它已成為工業(yè)中的標(biāo)準(zhǔn)通信協(xié)議,是目前最常用的工業(yè)電子設(shè)備連接方式。它被許多行業(yè)的許多制造商廣泛使用。Modbus 通常用于將來(lái)自儀表和控制設(shè)備的信號(hào)傳輸回主控制器或數(shù)據(jù)收集系統(tǒng),例如測(cè)量溫度和濕度并將結(jié)果傳送到計(jì)算機(jī)的系統(tǒng)。Modbus 通常用于將監(jiān)控計(jì)算機(jī)與監(jiān)控和數(shù)據(jù)采集 (SCADA) 系統(tǒng)中的遠(yuǎn)程終端單元 (RTU) 連接起來(lái)。
Modbus是如何工作的?
Modbus 通過(guò)設(shè)備之間的串行線路傳輸。最簡(jiǎn)單的設(shè)置是用一根串行電纜連接兩個(gè)設(shè)備(主設(shè)備和從設(shè)備)上的串行端口。
數(shù)據(jù)以一系列 1 和 0 的形式發(fā)送,稱為位。每個(gè)位都作為電壓發(fā)送。零作為正電壓發(fā)送,一個(gè)作為負(fù)電壓發(fā)送。這些位發(fā)送得非???。典型的傳輸速度為 9600 波特(比特/秒)。
什么是十六進(jìn)制?
在解決問(wèn)題時(shí),查看正在傳輸?shù)膶?shí)際原始數(shù)據(jù)會(huì)很有幫助。長(zhǎng)的 1 和 0 字符串難以閱讀,因此這些位被組合并以十六進(jìn)制顯示。每個(gè) 4 位塊由0到F的 16 個(gè)字符之一表示。
每個(gè) 8 位塊(稱為一個(gè)字節(jié))由從00到FF的 256 個(gè)字符對(duì)之一表示。
數(shù)據(jù)如何存儲(chǔ)在標(biāo)準(zhǔn) Modbus 中?
信息以四個(gè)不同的表存儲(chǔ)在從設(shè)備中。兩個(gè)表存儲(chǔ)開(kāi)/關(guān)離散值(線圈)和兩個(gè)存儲(chǔ)數(shù)值(寄存器)。線圈和寄存器各有一個(gè)只讀表和讀寫表。每個(gè)表有 9999 個(gè)值。每個(gè)線圈或觸點(diǎn)都是 1 位,并分配了一個(gè)介于0000和270E之間的數(shù)據(jù)地址。每個(gè)寄存器為 1 個(gè)字 = 16 位 = 2 個(gè)字節(jié),并且數(shù)據(jù)地址介于0000和270E之間。
線圈/寄存器編號(hào)可以被認(rèn)為是位置名稱,因?yàn)樗鼈儾粫?huì)出現(xiàn)在實(shí)際消息中。數(shù)據(jù)地址用于消息中。例如,第一個(gè)保持寄存器,編號(hào) 40001,具有數(shù)據(jù)地址0000 。這兩個(gè)值之間的差異是偏移量。每個(gè)表都有不同的偏移量。1、10001、30001 和 40001。
從站 ID 是什么?
網(wǎng)絡(luò)中的每個(gè)從機(jī)都分配有一個(gè)從 1 到 247 的唯一單元地址。當(dāng)主機(jī)請(qǐng)求數(shù)據(jù)時(shí),它發(fā)送的第一個(gè)字節(jié)是從機(jī)地址。這樣每個(gè)從機(jī)在第一個(gè)字節(jié)之后就知道是否忽略該消息。
什么是Modbus功能碼?
主機(jī)發(fā)送的第二個(gè)字節(jié)是功能碼。這個(gè)數(shù)字告訴從機(jī)要訪問(wèn)哪個(gè)表以及是讀取還是寫入表。
什么是 Modbus 從零與從一的尋址?
在討論基于偏移的 Modbus 尋址時(shí),最后一個(gè)重要的細(xì)節(jié)是設(shè)備是否支持基于零或一的尋址。最初,從零開(kāi)始的尋址是 Modbus 的預(yù)期實(shí)現(xiàn)方式。但是,隨著時(shí)間的推移和 Modbus 作為一種開(kāi)放協(xié)議被如此廣泛地采用,某些設(shè)備制造商采用了一種稱為 one-based 尋址的概念。
從零開(kāi)始的尋址涉及從零開(kāi)始的內(nèi)存類型的第一個(gè)偏移量。因此,例如,如果您請(qǐng)求保持寄存器 400001,則實(shí)際的 Modbus 協(xié)議請(qǐng)求將為偏移量 0 的 FC 3。而 400002 將請(qǐng)求偏移量 1 的 FC 3,依此類推。
正如您可以想象的那樣,這可能會(huì)令人困惑。因此,一些制造商采用了一種稱為基于一的尋址的實(shí)現(xiàn)方式。對(duì)于從 1 開(kāi)始的尋址,偏移量與實(shí)際地址請(qǐng)求對(duì)齊。例如,如果您請(qǐng)求保持寄存器 1,則該請(qǐng)求仍然使用 FC 3,但用于偏移量 1。而 400002 將請(qǐng)求 FC 3 用于偏移量。