0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是Modbus?Modbus能做什么?

冬至子 ? 來源:物聯(lián)網(wǎng)諸子?xùn)| ? 作者:諸子?xùn)| ? 2023-08-10 15:56 ? 次閱讀

我們先不要直接講Modbus協(xié)議,先聊聊家常,然后趁Modbus不注意,再去學(xué)它,就容易記住了。

Modbus協(xié)議,是1979年,Modicon公司發(fā)明的。而Modicon,也可以說就是現(xiàn)在的施耐德了。

別的設(shè)備支持不支持Modbus不知道,施耐德PLC肯定可以支持Modbus協(xié)議。

那時候網(wǎng)絡(luò),計算機都還不發(fā)達(dá),設(shè)備之間的通信,主要還是基于串口。

那Modbus協(xié)議發(fā)明主要是用來干嘛的呢。

那我們就先看Modicon是干嘛的。

Modicon公司是搞PLC的。那PLC又是什么呢。

接地氣地講,PLC是一種控制器,內(nèi)部可編程。反正就是工業(yè)領(lǐng)域生產(chǎn)非常重要的東西。

像PLC,傳感器等,就會有各種各樣的數(shù)據(jù),比如,門的開和關(guān),燈的亮和滅,溫度,濕度,流量,產(chǎn)量計數(shù),壓力,速度,位移等,各種各樣的數(shù)據(jù)。

往現(xiàn)在來說,你手機上有個APP,APP上有個按鈕,你一操作,你家的燈就開了。

在當(dāng)時來看,一臺控制器怎么知道另一臺控制器的數(shù)據(jù)呢。

總不能這么唐突的去要數(shù)據(jù)吧。

好,如果只是燈的開關(guān),可以用一根電線將兩個控制器接起來,十個開關(guān)就接十根線。

只要這根線有電,說明燈是亮的,線沒有電,燈就是滅的。

圖片

但溫度呢,總不能讓一個控制器靠近另一個控制器,你摸一下我燙不燙,冷不冷,渴不渴?

還有壓力值呢,總不能讓一個控制器去踩壓著另一個控制器的背,官人,你看這腳力合適不合適?

這不是有串口么,能不能把這些數(shù)據(jù),都通過這個串口來傳輸呢。

發(fā)明一種協(xié)議,然后可以在串口上進行數(shù)據(jù)交互,

圖片

真的是好辦法呀,這樣一來,對于主控制器來說,省事多了,就這么辦吧。

發(fā)明協(xié)議要有儀式感,我們總得給它起個名字吧。我們先開個會討論一下吧。

“要不我們就直接叫它Modicon Modbus吧”

“系不系傻,Modbus這個名字就是我們發(fā)明的,怎么能叫Modicon Modbus呢,再重新討論”

“首先這個是一種總線協(xié)議,肯定得以bus結(jié)尾吧?!?/p>

“嗯,沒錯,那就以bus結(jié)尾吧”

“叫Modicon-bus如何?”

“不行,得有我們老外的風(fēng)格,這名字一看就很中式?!?/p>

“取名字的前半部分?叫Modibus協(xié)議?”

“莫弟拔絲?讀著有點繞口吧?!?/p>

“Modbus呢,莫得拔絲,好寫又好記。”

“同意”

“同意”

“Good”

“大拇指,大拇指,大拇指”。

于是,偉大的Modbus協(xié)議的名字誕生了。

那這個協(xié)議要怎么用呢。

現(xiàn)在擺在面前有兩個設(shè)備,一個是主設(shè)備,一個是從控制器,主設(shè)備和從控制器通過串口接在一起了,所有的數(shù)據(jù)都在從控制器上了。

是從控制器主動把數(shù)據(jù)發(fā)給主設(shè)備呢,還是主設(shè)備來要數(shù)據(jù)呢。

如果是從控制器主動發(fā)數(shù)據(jù),但是好像不知道主設(shè)備到底要啥數(shù)據(jù)呢。

要不就設(shè)計為,由主設(shè)備主動發(fā)起請求來要數(shù)據(jù)。從控制器收到命令之后,再把相應(yīng)的數(shù)據(jù)返回。

所以, Modbus協(xié)議,就設(shè)計為一種基于主站主動請求的協(xié)議了 。

這樣所有的數(shù)據(jù)需求,全部為主設(shè)備進行管理和規(guī)劃,什么時候讀什么數(shù)據(jù)。

就這樣,有了Modbus協(xié)議之后,就解決了各控制器之間的數(shù)據(jù)交互問題。包括之后的HMI,電腦等設(shè)備,也都可以通過Modbus協(xié)議與PLC, 控制器進行數(shù)據(jù)讀取交互。

剛發(fā)明Modbus的時候,那時候主要還是使用串口通信。網(wǎng)絡(luò)還沒有完善的年代,想找一個支持以太網(wǎng)的PLC幾乎不現(xiàn)實。

當(dāng)然,后面隨著TCP/IP的發(fā)展,工業(yè)的進步,出現(xiàn)了網(wǎng)絡(luò)通信。Modbus也可以在以太網(wǎng)上通信了,在以太網(wǎng)上的通信,我們一般叫它Modbus TCP。

既然有TCP,就會有人問,那我能不能走UDP呢。

于是,Modbus UDP也就有了。

其實Modbus TCP和Modbus UDP的報文格式是一樣的。只不過一個走的是TCP,一個走的是UDP。

那串口的Modbus 叫什么名字呢。

一般來說,串口的Modbus 協(xié)議叫Modbus RTU協(xié)議。

RTU,也就是 Remote Terminal Unit。遠(yuǎn)程終端單元。

要知道,在上個世紀(jì)80年代,對于遠(yuǎn)程的概念,可不是像我們這樣天南地北的距離。

兩個設(shè)備,超過一米,都能叫遠(yuǎn)程了。

大概的意思就是,我人在門口,我能通過HMI或者主控制器,對房間里的溫度,燈等進行監(jiān)測和控制,就屬于遠(yuǎn)程操作了。

畢竟每一個事物的存在,都是有它的背景和依據(jù)的。

那為什么串口的協(xié)議,還會有Modbus ASCII協(xié)議呢。

這個我有點編不下去了,容我想一想。

一般來說,數(shù)據(jù)是由位組成的,然后由八個位組成一個字節(jié),兩個字節(jié)組成一個字。

而數(shù)據(jù)傳輸和存儲呢,最小單元為字節(jié)。

然后串口通信,它也很特殊,如果你要發(fā)一個字節(jié),還要加什么起始位,校驗位,停止位等湊夠一定條件,才能滿將一個字節(jié)發(fā)送出去。少一個位都不行。

那ASCII發(fā)明的的其中一個理由是,當(dāng)通信鏈路或者設(shè)備無法滿足RTU模式時,則使用ASCII模式。

我猜測呀,可能當(dāng)時某些特定用途的單片機CPU,在設(shè)計串口功能的時候,基于種種原因,要拋開起始位,校驗位,停止位之后,完了,少處理了一個位,留給數(shù)據(jù)位只有7個位了。

怎么辦呢,要把7個位改成8個位,芯片都推倒重新來,代價太大了。

難道這個芯片就不能用了么。有什么通信或數(shù)據(jù)只要7個位就夠了的?

還真巧,還真有的,那就是ASCII數(shù)據(jù)。

ASCII,也就是我們常說的字符數(shù)據(jù)。字符嘛,大小寫字母,加上一些常用字符,數(shù)量加起來少于127的。也就是用7個位就可以了。

那是不是可以發(fā)明一種ASCII通信協(xié)議,每一個數(shù)組只占7位。然后Modbus ASCII協(xié)議就出來了。

我們看一下Modbus協(xié)議大概有多少。

1.jpg

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2545

    文章

    50445

    瀏覽量

    751067
  • 單片機
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631990
  • PLC控制
    +關(guān)注

    關(guān)注

    9

    文章

    251

    瀏覽量

    27237
  • RTU
    RTU
    +關(guān)注

    關(guān)注

    0

    文章

    403

    瀏覽量

    28598
  • ModBus通信
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    2541
收藏 人收藏

    評論

    相關(guān)推薦

    什么是MODBUS?Modbus通信協(xié)議以及行業(yè)中使用的Modbus類型。

    MODBUS
    電子學(xué)習(xí)
    發(fā)布于 :2023年02月07日 21:10:35

    Modbus協(xié)議介紹

    MODBUS
    橙群微電子
    發(fā)布于 :2023年02月21日 12:14:06

    modbus

    `問題:(1) 什么是Modbus通信協(xié)議?(2) 在LabVIEW中需要安裝什么軟件可以進行Modbus通信?(3) 客戶經(jīng)常詢問的一個問題:在我的理解中Modbus的地址形式應(yīng)該是40202
    發(fā)表于 04-24 14:42

    LABVIEW的MODBUS庫,MODBUS學(xué)習(xí)入門必備

    LABVIEW的MODBUS庫,MODBUS學(xué)習(xí)入門必備
    發(fā)表于 02-23 19:02

    Modbus測試工具 :Modbus Poll,Modbus Slave

    Modbus測試工具 :Modbus Poll,Modbus Slave
    發(fā)表于 02-25 10:38

    Modbus TCP轉(zhuǎn)Modbus RTU的實現(xiàn)

    使用ZLSN2040、NETCOM2040實現(xiàn)Modbus TCP到Modbus RTU的轉(zhuǎn)化。1.Modbus TCP與Modbus RTU  M
    發(fā)表于 08-10 10:04

    modbus詳解

    Modbus協(xié)議使用的是主從通訊技術(shù),即由主設(shè)備主動查詢和操作從設(shè)備。一般將主控設(shè)備方所使用的協(xié)議稱為Modbus Master,從設(shè)備方使用的協(xié)議稱為Modbus Slave。典型的主設(shè)備包括
    發(fā)表于 11-25 23:49

    什么是Modbus協(xié)議?如何寫穩(wěn)定的Modbus代碼?

    什么是Modbus協(xié)議?Modbus協(xié)議有哪些分類?使用Modbus時有哪些注意事項?如何寫穩(wěn)定的Modbus代碼?
    發(fā)表于 07-02 06:54

    什么是ModBus?ModBus如何實現(xiàn)通信?

    什么是ModBus?ModBus如何實現(xiàn)通信?
    發(fā)表于 09-26 09:28

    Modbus是什么?Modbus協(xié)議有哪些優(yōu)點

    Modbus是什么?Modbus協(xié)議有哪些優(yōu)點?Modbus協(xié)議包括哪些?
    發(fā)表于 09-30 08:40

    請問CH32V103的CRC校驗能做modbus_RTU的CRC校驗嗎?

    CH32V103的CRC校驗能做modbus_RTU的CRC校驗嗎?使用要注意哪些呢?
    發(fā)表于 05-16 07:50

    Modbus on AT32 MCU

    Modbus on AT32 MCU前言本應(yīng)用筆記介紹了如何將FreeMODBUS協(xié)議棧移植到AT32F43x單片機方法。本文檔提供的源代碼演示了使用Modbus的應(yīng)用程序。單片機作為Modbus
    發(fā)表于 07-26 20:22

    如何快速實現(xiàn)Modbus RTU和Modbus TCP協(xié)議轉(zhuǎn)換?

    Modbus協(xié)議是工業(yè)現(xiàn)場串口設(shè)備之間常用的連接方式,其中最常見的就是Modbus RTU和Modbus TCP兩種。許多工廠需要將現(xiàn)場各種不同型號設(shè)備的數(shù)據(jù)都能夠通過一個上位機軟件或者設(shè)備觸摸屏
    發(fā)表于 08-18 18:36

    modbus TCP和modbus RTU有什么區(qū)別?

    modbus TCP和modbus RTU有什么區(qū)別
    發(fā)表于 10-09 06:20

    什么是modbus?modbus庫如何移植到ARM開發(fā)板上?如何使用測試程序?

    網(wǎng)絡(luò)上關(guān)于modbus 介紹的文章非常多,還有專門介紹modbus 的書籍,這些資料大家都可以利用起來,但是在這一小節(jié)中,作者希望幫助大家理解modbus 的本質(zhì),modbus 到底是
    發(fā)表于 09-07 14:34 ?27次下載
    什么是<b class='flag-5'>modbus</b>?<b class='flag-5'>modbus</b>庫如何移植到ARM開發(fā)板上?如何使用測試程序?