• <cite id="uwv89"></cite>
      1. 亚洲综合小综合中文字幕,国产久爱免费精品视频,精品国产品香蕉在线,国产午夜精品在人线播放,精品一二三四区在线观看,国产成人无码免费看视频软件 ,色欲久久人妻内射,午夜在线观看成人av
        13660355656
        級別: 探索解密
        精華主題: 0
        發(fā)帖數(shù)量: 88 個
        工控威望: 119 點
        下載積分: 9997 分
        在線時間: 133(小時)
        注冊時間: 2021-03-19
        最后登錄: 2025-08-20
        查看13660355656的 主題 / 回貼
        樓主  發(fā)表于: 2021-05-12 14:17
        1.    Modbus是一種單主站的主/從通信模式。Modbus網(wǎng)絡上只能有一個主站存在,主站在 Modbus網(wǎng)絡上沒有地址,從站的地址范圍為 0 - 247,其中 0 為廣播地址,從站的實際地址范圍為 1 - 247。 Modbus通信標準協(xié)議可以通過各種傳輸方式傳播,如 RS232C、RS485、光纖、無線電等。
        2.    Modbus具有兩種串行傳輸模式,ASCII 和 RTU。它們定義了數(shù)據(jù)如何打包、解碼的不同方式。支持 Modbus 協(xié)議的設備一般都支持 RTU 格式。通信雙方必須同時支持上述模式中的一種。
            
        3.    上面說的是官話,下面是我說的大白話:    
        4.    modbus協(xié)議也只是通訊協(xié)議的一種,沒什么神秘的,通訊協(xié)議包括兩個方面:    
        5.    一、通訊格式,即: 波特率,檢驗方式,數(shù)據(jù)位,停止位
        6.    波特率:一秒鐘傳送的位數(shù),也就是通訊速率;比如波特率為9600,即,一秒種可以傳送9600個位數(shù),位的概念看下面的數(shù)據(jù)位介紹
        7.    校驗方式:奇校驗或偶校驗或無校驗,目的是判斷傳輸過程中是否有錯誤!它只是用于判斷一個字符(比如八個位或是七個位組成一個字符)傳輸是否有錯誤。但是它并不能完全能夠判斷傳輸是否有錯。比如偶校驗,在檢驗送八個“11111111”時,如果到達接收方,由于干擾而變成了“10111101”,“1”的個數(shù)仍然是偶數(shù),接收方就判斷不出來傳送的字符已經(jīng)錯誤!
        8.    數(shù)據(jù)位:傳輸一個字符由幾個位組成,計算機的基本單位就是“位”,其值非“0”即“1”,又如傳送A,定義通訊格式時,是定義的八位,其傳送的數(shù)據(jù)可能就是:00001010;
        9.    停止位:傳輸一個字符有幾個停止位,用于判斷某個字符是否傳輸結(jié)束,以便開始接收下一個字符。    
        10.    通訊格式的作用是規(guī)范發(fā)送方與接收方的傳輸格式,如果雙方通訊格式不一樣,接收方就不可能正確判斷發(fā)送方發(fā)來的東西是什么。
        11.    比如,接收方設置的波特率是10(一秒只接收十個位)位,而發(fā)送方的波特率是20(一秒發(fā)送二十個位),那么發(fā)送方一秒種發(fā)送的20個字符,接收方就不可能都收到,只能接收到10個,造成通訊出錯。
        12.    校驗方式:雙方校驗方式不一樣,就沒有一個統(tǒng)一的標準認定傳輸是否有錯誤。
        13.    數(shù)據(jù)位,接收方設定的七位,即它接收到七個位就認為是一個字符,而實際發(fā)送方設定的是八位,那么接收方認定的字符與發(fā)送方發(fā)送的字符就不一樣了。
        14.    ***參與通訊的雙方設定的通訊格式必須一樣的!!
        15.    二、通訊規(guī)范(這個詞是我自己定義的,不能引用,會被人笑話的)
        16.    通訊格式只是保證接收方正確地接收到發(fā)送方傳輸過來的每一個字符(實際如上所述,檢驗方式并不能保證完全正確,還要靠通訊規(guī)范中的校驗和計算來驗證整體正確性,下面會繼續(xù)說明),那么接收到的整串字符做什么用呢,就要靠通訊規(guī)范了
        17.    MODBUS的通訊規(guī)范很簡單!
        18.    先說ASCII方式:
        19.    ASCII方式發(fā)送時的規(guī)范定義如下:
        20.    起始符 +  設備地址   +  功能代碼   +   數(shù)據(jù)  +   校驗   +  結(jié)束符    
             1\起始符:    接收到一串字符,總要知道這串字符從哪個地方開始吧,這就是起始符的作用,接收方不管以前收到多少個字符。當接收到起始符時,以前的字符就不再理它了,從起始符開始分析以后的字符!  MODBUS的ASCII方式起始符是一個冒號  “:”
            2\設備地址:
            前面說過,MODBUS是單主站的主/從通信模式,一個主站下面可以接十多個從站。大家都掛在一條線,如果沒有一個設備地址,就不知道是發(fā)給哪個從站的,大家都回應的話,這條線上的信號就亂七八糟了,主站也不知道接收到的是什么了。所以,設這么一個設備地址,告訴是給那個從站的。只要這個從站回答,其他的閉嘴!“二號,請您回答,其他人就不要吱聲了。”
        廣播地址(0)是命令式的,不要求從站回答的。“都聽著,晚上全體到我家喝酒去,不去者死,散會!”
        設備地址是要求兩個字符,比如發(fā)給2號站,則是“02”
        現(xiàn)在的組合是“:02”
        3\功能代碼:
        •    1
        告訴從站應該做什么,比如讀數(shù)據(jù)的命令是“3”,從站接收到這個命令,再根據(jù)下面數(shù)據(jù)要求的具體地址,把具體地址的數(shù)據(jù)返回給主站。
        功能代碼也是要求兩個字符,比如讀命令3,則是“03”
        現(xiàn)在的組合是“:0203“

        4\數(shù)據(jù):
        1、告訴從站具體的元件通訊地址,寫入到哪里,從哪里讀。如讀變頻器的設定頻率的通訊地址是00A0
        元件的通訊地址要求是四個字符,如果控制器的元件地址不足四個字符,則在前面補0,比如元件通訊地址是A0,則在前面補足兩個0:“00A0”
        2、數(shù)據(jù)又有可能包括您要讀取的字節(jié)數(shù)( 有的控制器是字數(shù)),比如連續(xù)讀取PLC的兩個十六位寄存器,其字節(jié)數(shù)為四個,則是“0004”。您看出來了吧,讀取個數(shù)也是要求四個字符,不足四個,前面補零
        現(xiàn)在的組合是“:020300A00004“
        3、而當您要實現(xiàn)寫入功能時,數(shù)據(jù)又可能包括寫入的數(shù)據(jù),比如寫入一個十六位寄存器的值,則要包括是寫入的數(shù)值,如“0D98”
        現(xiàn)在的組合是“:020600A00D98“ 06是單個寄存器的寫入命令
        4、當連續(xù)寫入多個寄存器時,這個數(shù)據(jù)包括的內(nèi)容又不一樣,它可能是:
        寄存器通訊地址(四個字符) +字數(shù)(四個字符)+字節(jié)數(shù)(兩個字符)+ 要寫入的數(shù)值
        您看亂了嗎?沒關系的,等您拿到具體控制器時,此控制器的通訊說明上會告訴您此數(shù)據(jù)都包括什么內(nèi)容,以什么樣的格式排列!您一定為我上面四點中的可能字樣而生氣,您認為講解就應該講解的具體,而不是可能什么又可能什么!
        這又要重復說明一下MODBUS的通訊規(guī)范,
        起始符 + 設備地址 + 功能代碼 + 數(shù)據(jù) + 校驗 + 結(jié)束符
        MODBUS是一種標準通訊協(xié)議,這種標準定義了上面紅色字符的通訊規(guī)范,除了數(shù)據(jù)項,其他的都是固定字符個數(shù)。
        數(shù)據(jù)呢,因為功能代碼的不同,其包含的內(nèi)容也不同!所以我只好說可能包含這個,可能包含那個。您無須擔心此數(shù)據(jù)變來變?nèi)ィ斐山邮辗讲恢廊绾畏治觥=邮辗皆诮邮盏焦δ艽a時,就已經(jīng)知道此數(shù)據(jù)包含多少個字符了!
        1.    5\檢驗和:
        2.    前面說過,通訊格式里的校驗方式并不能保證每個字符都正確,所以這里就把所有字符的值加在一起,其和(檢驗值)傳給接收方,接收再把接收到的字符的值加在一起,與發(fā)送方傳送過來的檢驗值比較,如果相等,就算接收正確了。
        3.    "這種方式極大地提高了傳輸?shù)目煽啃裕WC了傳輸?shù)捻樌M行,為傳輸事業(yè)做出了巨大貢獻"
        4.    這樣的描述讓您想到了什么?假話唄,檢驗只是提高了校驗的可靠性。并不能完全判斷傳輸是否正確。想要最大限度的提高傳輸?shù)目煽啃裕ㄓ凶畲笙薅鹊亟档透蓴_!于是產(chǎn)生了232,485,422傳輸方式,他們的區(qū)別就在于傳輸?shù)目煽啃裕?br />1+2+3=6 3+2+1=6 這兩個字符串的作用肯定是不一樣的!但是其校驗和是一樣的,如果在傳輸過程中,由于干擾,1變3,3變1,根據(jù)校驗和的計算,接收方并不知道由于干擾而造成傳輸錯誤,此時,或是出現(xiàn)通訊錯誤,或是出現(xiàn)通訊混亂。
        如,命令碼03,由于干擾而變成了30,此時校驗和是一樣的,而MODBUS并沒有30這個命令碼,接收不認識,于是出現(xiàn)通訊錯誤。
        再如,讀變頻器的設定頻率通訊地址是0001,由于干擾而變成了0010,此時校驗和是一樣的,但是通訊地址卻變了,變頻器就可能返回的是其他數(shù)據(jù),造成通訊混亂!
        校驗字符是要求兩個字符,如果計算結(jié)果超過兩個字符,則取后兩位!
        **參加校驗計算的字符是起始符與校驗符之間的字符串(不含起始符與校驗符)
        現(xiàn)在的組合是“:02030A000004FB“ (假設校驗和為FB)
        02030A000004參加校驗和計算
        6\結(jié)束符:
        •    1
        接收到一串字符,總要知道在那個地方結(jié)束吧,這就是結(jié)束符的作用,接收方不管以后還會收到多少個字符。當接收到結(jié)束符時,以后再接收的字符就算是下一輪的東西了,從起始符到結(jié)束符之間的字符就是它要分析的字符! MODBUS的ASCII方式結(jié)束符是— Chr(13)+Chr
        (10)
        現(xiàn)在的組合是“:02030A000004FB“+ Chr(13)+Chr
        (10)
        至此,ASCII方式的發(fā)送就完成了,控制器接收到此串字符后,根據(jù)MODBUS協(xié)議定義的通訊規(guī)范分析此串字符的作用,然后返回相應的字符!
        注意:發(fā)送的字符都是以十六進制數(shù)表示!
        控制器返回的字符根據(jù)命令的不同而不同,此處不好講解,在下面具體例子中會有說明!
        1.    再說RTU方式:
        2.    RTU方式發(fā)送時的規(guī)范定義如下:
        3.    至少3.5個字符傳輸時間的停頓間隔時間標定消息的開始  設備地址  + 功能代碼+   數(shù)據(jù)  +   校驗  +  至少3.5個字符傳輸時間的停頓間隔時間標定了消息的結(jié)束  
        4.    其他的就不用說了,與ASCII方式一樣的作用,唯獨這3.5個字符的時間搞暈了很多人,實際我也不敢太解釋,大致說一下吧,您就當聽著玩,比如通訊格式是9600,E,8,1
        5
        .    波特率是做什么的?一秒傳輸多少個位(比如一秒傳送9600個位),一個字符是多少個位呢?通訊格式已經(jīng)標定了(7個位或是8個位),那3.5個字符的傳送時間就好算了吧:
        3.5*11(或10)=39個位(35個位),傳3.5個字符需要的時間是:39/9600=4毫秒。
        不是說八位嘛,怎么乘11,記住了,還有一個起始位,奇或偶的校驗位(無奇偶校驗,則沒有此位),停止位(兩個停止位就是2了。)
        如9600,N,8,2為11個位,
        9600,N,7,1.為9個位
        就是說,您得保證發(fā)送字符串的連續(xù)性,中間停頓時間超過4毫秒,接收方就認為您已經(jīng)發(fā)送完了這組消息,開始處理了。這就是至少3.5個字符傳輸時間的停頓間隔時間標定了消息的結(jié)束的含義
        如果您發(fā)送的太連續(xù),下一組消息與上一組消息之間的間隔時間沒超過4毫秒,接收方就認為這些字符是一組消息,按一組消息去處理。所以,您發(fā)送結(jié)束一組命令后,必須間隔4毫秒才能發(fā)送下一組命令. 這就是至少3.5個字符傳輸時間的停頓間隔時間標定消息的開始的含義
        至此我的大白話結(jié)束,有什么錯誤,請您批評,多謝!
        1.    通訊協(xié)議實際也就是這回事,任何一個協(xié)議都大同小異。通訊格式,通訊規(guī)范兩種而已。
        2.    您如果愿意,也可以自己定義一個通訊規(guī)范,用PLC或是VB語言按照您自己定義的這個規(guī)范處理,如果可靠性超過modbus,那您的通訊規(guī)范就是最流行的了!
        我經(jīng)常問某些產(chǎn)品推廣人員,“您設備的通訊協(xié)議是什么”,他回答:“232”或是“485”。今天您看了上面這些大白話,請您就不要再這樣回答了。
        Modbus通信標準協(xié)議可以通過各種傳輸方式傳播,如 RS232C、RS485、光纖、無線電等。
        “232”或是“485”只是一種線路傳輸方式,與協(xié)議是無關的!232傳輸抗干擾性差,485傳輸抗干擾相對強。
        MODBUS做為一種標準的協(xié)議,應用于各種PLC,控制器,儀表。這些儀表或是控制器應用中,元件的通訊地址肯定是不一樣了;各個命令碼的各部分組成的意義也許也會不同;
        但是,它一定會遵守MODBUS的協(xié)議規(guī)范。即,每個命令碼的組成一定符合MODBUS的規(guī)范!一樣不多,一樣不少!
        下面針對某種支持MODBUS協(xié)議的控制器,說一下具體的讀/寫例子
        1\ 讀某控制器的十五個寄存器值,發(fā)送的字符串是:(ASCII方式)
        “: 01031000000FDD”+ Chr(13)+Chr
        (10)
        起始符“:” + 站號(01) + 讀命令(03)+ 起始寄存器通訊地址(1000)+ 字數(shù)(15;轉(zhuǎn)換成十六進制000F)+ 校驗和(DD)+ 結(jié)束符
        控制器返回的字符數(shù)是71個
        起始符“:” + 站號(01) + 讀命令(03)+ 字數(shù)(0F)+ 60個數(shù)據(jù)字符(一個寄存器是4個,一共十五個) + 校驗和(DD)+ 結(jié)束符(兩個)
        2\ 分別向某控制器兩個寄存器寫入數(shù)值,發(fā)送的字符串是:(ASCII方式)
        “: 01101000000204”+ 寫入的數(shù)值(8個字符)+ 校驗和 + Chr(13)+Chr
        (10)
        起始符“:” + 站號(01) + 寫命令(10)+ 起始寄存器通訊地址(1000)+ 字數(shù)(2;轉(zhuǎn)換成十六進制0002)+ 字節(jié)數(shù)(04) + 校驗和(因為寫入數(shù)值是變化的,需要得經(jīng)過計算得出校驗和)+ 結(jié)束符
        控制器返回的字符數(shù)是17個
        起始符“:” + 站號(01) + 寫命令(10)+ 起始寄存器通訊地址(1000)+ 字數(shù)(02)+ 錯誤碼(2個) + 校驗和(DD)+ 結(jié)束符(兩個)
        *錯誤碼,當通訊正確時是什么,通訊錯誤時是什么,具體控制器會有說明
        讀其他儀表的某值時,參照上述讀的規(guī)范,也就是更改一下起始寄存器通訊地址、字數(shù)、校驗和(校驗和是編制程序塊自動計算的。)
        要讀多個儀表的同一個檢測值更簡單,更改站號就可以了。
        本帖最近評分記錄:
      2. 下載積分:+1(勤工儉學) 好貼好貼!

        主站蜘蛛池模板: 国产亚洲精品第一综合| 97人妻精品一区二区三区| 不卡视频在线一区二区三区| 国产免费无遮挡吃奶视频| 亚洲精品熟女一区二区| 久久精品国产一区二区三| 中文字幕一区二区三区麻豆| 性男女做视频观看网站| 亚洲精品久久一区二区三区四区| 色综合久久精品亚洲国产| 亚洲欧美人成电影在线观看| 三上悠亚日韩精品二区| 欧美亚洲精品中文字幕乱码 | 国产高清无遮挡内容丰富| 在线播放深夜精品三级| 欧美精品一区二区三区中文字幕| 日韩av一区二区精品不卡| 国产精品大片中文字幕| 国产360激情盗摄全集| 久久夜色精品久久噜噜亚| 天天综合亚洲色在线精品| 一本高清码二区三区不卡| 亚洲国产精品午夜福利| 精品熟女日韩中文十区| 国产99精品成人午夜在线| 国语自产精品视频在线看| 国产亚洲综合另类色专区| 好爽毛片一区二区三区四| 成人特黄特色毛片免费看 | 蜜芽久久人人超碰爱香蕉| 亚洲精品国产综合麻豆久久99| 国产四虎永久免费观看| 无码国内精品人妻少妇| 国产午夜三级一区二区三| 亚洲精品午夜国产VA久久成人 | 亚洲国产精品日韩av专区| 亚洲色精品VR一区二区三区| 精品一区二区三区女性色| 亚洲av成人在线一区| 亚洲国产成人无码av在线播放 | 亚洲精品第一区二区三区|