乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      自控系統(tǒng)的Modbus協(xié)議詳細(xì)講解,帶你走進(jìn)工業(yè)通訊里的精彩世界

       龍之吻6iinxl8c 2019-07-19

      一、基礎(chǔ)知識(shí):

      1、什么是Modbus

      Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個(gè)品牌)在1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議。

      Modbus通訊協(xié)議常見于第三方設(shè)備的通訊,如DCS讀取PLC的數(shù)據(jù)、智能儀表(流量計(jì)、分析儀等設(shè)備)的數(shù)據(jù),需要用到Modbus協(xié)議,通常分為3類,Modbus RTU 和Modbus TCP/IP、Modbus ASCII;

      2、主--從結(jié)構(gòu):

      主設(shè)備查詢

      查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量。錯(cuò)誤檢測(cè)域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。

      從設(shè)備回應(yīng)

      如果從設(shè)備產(chǎn)生正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):像寄存器值或狀態(tài)。如果有錯(cuò)誤發(fā)生,功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。錯(cuò)誤檢測(cè)域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。

      每個(gè)MODBUS幀都包括地址域 功能域 數(shù)據(jù)域 錯(cuò)誤檢測(cè)域

      3、Modbus的三種通信協(xié)議:

      Modbus協(xié)議分為三種通信方式:Modbus RTU、Modbus ASCII以及Modbus TCP。

      首先,Modbus TCP的通信格式和Modbus RTU非常相似,唯一的差別只是Modbus RTU最后帶兩個(gè)字節(jié)的CRC校驗(yàn),而Modbus TCP沒(méi)有。

      其次,Modbus ASCII的通信格式與Modbus RTU其實(shí)“神合貌離”,就是把Modbus RTU的每一個(gè)字節(jié)(例如:27H)高四位(2)和低四位(7)拆分為兩個(gè)字節(jié),并以ASCII碼的方式表現(xiàn)出來(lái)(32 37),再給命令幀分別加上起始符和結(jié)束符便可以,當(dāng)然Modbus RTU和Modbus ASCII的校驗(yàn)的方式不同,這里暫不詳述,所以同一條命令用Modbus RTU方式和Modbus ASCII方式表現(xiàn)出來(lái),雖然在命令長(zhǎng)度的上有很大的區(qū)別,但其實(shí)際表達(dá)的意思卻是一樣。

      4、RTU方式:

      幀定界:MODBUS RTU方式下,每?jī)蓚€(gè)字符之間發(fā)送或者接收的時(shí)間間隔不能超過(guò)1.5倍 字符傳輸時(shí)間。如果兩個(gè)字符時(shí)間間隔超過(guò)了3.5倍的字符傳輸時(shí)間,規(guī)約就認(rèn)為一幀數(shù)據(jù)已經(jīng)接收,新的一幀數(shù)據(jù)傳輸開始。

      備注:NPort與MGate產(chǎn)品的區(qū)別就在于,MGate在每幀報(bào)文的之后,增加了3.5倍的字符傳輸時(shí)間,而NPort則沒(méi)有。

      5、ASCII方式:

      幀定界:

      “:”幀起始 “CR LF” 幀結(jié)束

      ASCII方式用兩個(gè)ASCII字符表示一個(gè)8位數(shù)據(jù),比如16進(jìn)制的3A用字符“3”和字符“A”表示。

      6、Modbus TCP

      Modbus TCP數(shù)據(jù)幀包含報(bào)文頭、功能代碼和數(shù)據(jù)3個(gè)部分:

      MBAP報(bào)文頭(MBAP:Modbus Application Protocol,Modbus應(yīng)用協(xié)議)分4個(gè)域,共7個(gè)字節(jié):

      自注:這里的客戶端、服務(wù)器端是指TCP的Client、Server端。

      二、MGate說(shuō)明:

      1、通信模式

      1)MGate配置文件中:

      Modbus采用主從結(jié)構(gòu),只有兩種模式:Master和Slave

      RTU/ASCII Slave:PC作為Master主,裝置作為Slave從;

      RTU/ASCII Master:PC作為Slave從,裝置作為Master主;

      RTU與ASCII的區(qū)別:

      a)校驗(yàn):

      RTU:CRC(循環(huán)冗長(zhǎng)校驗(yàn));

      ASCII:LRC(縱向冗長(zhǎng)校驗(yàn));

      校驗(yàn)碼用于檢查信息的完整性;

      b)消息格式不同:

      RTU:消息中每個(gè)字節(jié)(8Bit)包含2個(gè)4Bit的十六進(jìn)制字符,優(yōu)點(diǎn):同樣波特率下,比ASCII傳送更多的數(shù)據(jù);

      ASCII:消息中每個(gè)字節(jié)(8Bit)都作為一個(gè)ASCII碼(2個(gè)十六進(jìn)制字符)發(fā)生,優(yōu)點(diǎn):字符發(fā)送的時(shí)間間隔可達(dá)到1秒而不產(chǎn)生錯(cuò)誤;

      2)說(shuō)明手冊(cè)中:

      兩種通信模式:

      A)以太網(wǎng)Master串口Slave:

      Modbus TCP可支持同時(shí)16個(gè)連接,串口支持RS-232和RS-422/485,其中RS-232和RS-422僅能連一個(gè)設(shè)備,RS-485可連接31個(gè)設(shè)備;

      B)串口Master以太網(wǎng)Slave:

      可支持32個(gè)Modbus TCP slave設(shè)備;

      三、實(shí)測(cè):

      1、結(jié)構(gòu):

      筆記本電腦網(wǎng)口→MB3480-筆記本→UPort 1150;

      2、UPort 1150設(shè)置:

      默認(rèn)為RS-232方式,注意設(shè)置為RS-485(也可為RS-232),方法:

      “控制面板”→“設(shè)備管理器”→

      3、MB3480的設(shè)置:

      1)主從模式的設(shè)定:以PC端作為Master、裝置作為Slave為例;

      2)設(shè)置串口狀態(tài):

      3)ID映射:

      說(shuō)明:

      a)Modbus TCP通信標(biāo)準(zhǔn)端口號(hào)為502,所有的端口號(hào)都是502,串口通過(guò)ID好識(shí)別;

      b)ID表中設(shè)置情況:

      1~5:Port1;

      6~10:Port2;

      c)從站偏移量:可不設(shè),以下為例子,假定偏移量為3;

      4、使用的軟件:

      前提說(shuō)明:

      兩套軟件:

      軟件一:自己在網(wǎng)上找的Modbus Poll和Modbus Slave,注意:

      Modbus Poll:只作為Master(主端)(TCP Master和RTU Master都用它);

      Modbus Slave:只作為Slave(從端)(TCP Slave和RTU Slave都用它);

      軟件二:使用的ModScan32和ModSim32,注意:

      ModScan32:只作為Master(主端)(TCP Master和RTU Master都用它);

      ModSim32:只作為Slave(從端)(TCP Slave和RTU Slave都用它);

      軟件一:

      Modbus Poll(用于TCP Master)

      Modbus Slave(用于串口的Slave)

      1)打開Modbus Slave:

      選擇“Connectiong”

      注意:UPort 1150映射為主機(jī)的COM2口,使用這里選擇Port2;

      ID號(hào):1;功能碼:3

      2)打開Modbus Poll:

      選擇“Connection”,端口號(hào)為502;

      ID號(hào):1;功能碼:3;

      3)注意事項(xiàng):

      a)Modbus Poll和Modbus Slave設(shè)置的ID號(hào)、功能碼必須一致;

      b)通信成功的判斷:

      可從Modbus Poll軟件本身、MGate Manager的“監(jiān)控”來(lái)觀察;

      注意:Mdobus Slave軟件無(wú)法判斷連接是否成功;

      通信成功的界面:

      Modbus Poll:Tx值不斷增加,Err值為0(Err指響應(yīng)的返回值);

      MGate Manager→“監(jiān)控”:

      通信不成功的界面:

      比如:將Modbus Slave的連接斷開,則Modbus Poll會(huì)報(bào)錯(cuò):

      正確的連接,則Err=0;

      MGate Manager→“監(jiān)控”:

      圖中:TCP Req、RTU Req(通過(guò)MB3480轉(zhuǎn)發(fā)到RTU串口的),沒(méi)有Resp。

      c)其他功能鍵的使用:

      Modbus Poll:

      Read/Write Definition:可設(shè)置ID號(hào)、功能碼、地址;

      Reset Counters:充值計(jì)數(shù)器;

      其中:地址可自定義,但是Modbus Poll和Modbus Slave的地址設(shè)置都要一致;

      Modbus Slave:

      Slave Definition:可設(shè)置ID號(hào)、功能碼、地址;

      軟件二:

      ModScan32:用于TCP Master;

      ModSim32:用于RTU Slave;

      1)打開ModSim32軟件:網(wǎng)上有下載,或留下聯(lián)系郵箱,看都后發(fā)給各位;

      打開“ModSim32.exe”即可;

      “File”→“New”:

      “Connection”→“Port2”→UPort 1150在筆記本上映射的端口號(hào)為COM;

      2)打開ModScan32軟件:

      直接打開目錄,點(diǎn)擊“ModScan32.exe”即可;

      “Connection”→“Remote TCP/IP Server”:

      3)注意事項(xiàng):

      a)ModScan32和ModSim32的Address(地址)、Device Id(ID號(hào))、MODBUS Point Type(功能碼,為3)設(shè)置必須一致,其中:

      ID號(hào):Port1為1~5;

      功能碼:為3;

      Address:可自己設(shè)定,只要ModScan32和ModSim32的一致就可以了;

      b) 連接不成功的界面:

      比如:將Address一個(gè)設(shè)置為“0001”,另一個(gè)設(shè)置為“0100”,則會(huì)連接不成功,如下界面:

      而ModSim32則不會(huì)有報(bào)錯(cuò)信息;

      錯(cuò)誤一:出現(xiàn)“**MODBUS Message TIME-OUT**”,如果正確的連接,則沒(méi)有這行報(bào)錯(cuò);

      錯(cuò)誤二:Number of Polls的值一直在增加,而Valid Slave Responses的值不變,這說(shuō)明TCP Master一直發(fā)送請(qǐng)求,卻一直沒(méi)有得到回應(yīng);

      當(dāng)正確連接后,點(diǎn)擊“Reset Ctrs”后,這個(gè)計(jì)數(shù)值就會(huì)清零,重新累計(jì),出現(xiàn)的數(shù)據(jù)應(yīng)該是Number of Polls與Valid Slave Responses一致;

      c)當(dāng)修改設(shè)置后,參數(shù)會(huì)自動(dòng)執(zhí)行,不要重啟軟件或按鍵;

      d)如果所有設(shè)置都正確,但是連接卻還是報(bào)錯(cuò),這種情況下,只要將ModScan32和ModSim32軟件重新開啟就可以了,因?yàn)檫@個(gè)軟件是沒(méi)有經(jīng)過(guò)注冊(cè)的;

      5、監(jiān)控和數(shù)據(jù)報(bào)文:

      1)一個(gè)完整的輪詢過(guò)程:

      TCP Req(TCP請(qǐng)求)→轉(zhuǎn)為RTU Req(RTU請(qǐng)求)→RTU Resp(RTU回應(yīng))→TCP Resp(TCP回應(yīng));

      2)報(bào)文內(nèi)容:

      MBAP報(bào)頭格式:

      MBAP包含7個(gè)字節(jié):

      01 00:處理標(biāo)識(shí)ID,取決于設(shè)備的類型,取值一般為0000到FFFF;

      00 00:協(xié)議ID,0=Modbus協(xié)議;

      00 06:后面跟隨的字節(jié)個(gè)數(shù)(包含從設(shè)備ID號(hào)),此例:后面跟隨了6個(gè)字節(jié);

      01:從設(shè)備的ID號(hào);

      MBAP:

      00 0D:13---后面跟隨13個(gè)字節(jié);

      6、較深入的報(bào)文內(nèi)容:

      1)Modbus Poll向多個(gè)寄存器發(fā)送數(shù)據(jù)的報(bào)文分析:

      a)Modbus Poll中的設(shè)置:

      雙擊紅框部分,界面:

      Value中填入要發(fā)送的數(shù)據(jù),注意:這是十進(jìn)制,對(duì)于“監(jiān)控”中是十六進(jìn)制;

      Slave ID:Port所接從設(shè)備的ID;

      Address:這是寄存器地址,第1個(gè)是0,第2個(gè)是1……;

      b)多寄存器報(bào)文分析:

      監(jiān)控中看到的數(shù)據(jù):

      分析:

      第一組:

      i)TCP Req:TCP發(fā)送請(qǐng)求;

      時(shí)間 數(shù)據(jù)

      0.000 03 36 00 00 00 06 01 03 00 00 00 0A

      MBAP解析:

      03 36:處理標(biāo)識(shí)ID;

      00 00:協(xié)議ID,0=Mdobus;

      00 06:后面跟隨的字節(jié)個(gè)數(shù);

      01:從設(shè)備ID;

      ii)RTU Req:通過(guò)MB3480轉(zhuǎn)換到串口的請(qǐng)求;

      時(shí)間 數(shù)據(jù)

      0.000 01 03 00 00 00 0A C5 CD

      01 03是從設(shè)備的站號(hào)和設(shè)備ID;

      00 00是Modbus起始地址;

      00 0A是Modbus寄存器個(gè)數(shù) ;

      C5 CD是CRC校驗(yàn)碼;

      注意:i)與ii)的起始地址、寄存器個(gè)數(shù)是一樣的;ii)在i)的基礎(chǔ)上,去掉了MBAP報(bào)頭,并且增加了CRC校驗(yàn)碼;

      iii)RTU Resp:從串口RTU回應(yīng)的數(shù)據(jù);

      時(shí)間 數(shù)據(jù)

      0.090 01 03 14 00 0F 00 10 00 11 00 12 00 00 00 00 00 00 00 00 00 00

      一共10個(gè)寄存器:

      00 0F:表示15;

      00 10:表示16;

      00 11:表示17;

      00 12:表示18;

      其余寄存器為00,沒(méi)有發(fā)送數(shù)據(jù);

      注意:第i)、ii)是請(qǐng)求,沒(méi)有具體數(shù)據(jù),只有寄存器起始地址和寄存器個(gè)數(shù);

      第iii)、iv)開始回應(yīng)數(shù)據(jù);

      iv)TCP Resp:通過(guò)MB3480轉(zhuǎn)到TCP的回應(yīng)數(shù)據(jù);

      時(shí)間 數(shù)據(jù)

      0.090 03 36 00 00 00 17 01 03 14 00 0F 00 10 00 11 00 12 00 00 00

      注意:第iv)的MBAP報(bào)頭與i)的報(bào)頭是一樣的;

      第二組:

      與第一組一樣,需要注意的:

      MBAP報(bào)頭不同;起始地址、寄存器個(gè)數(shù),甚至校驗(yàn)碼都是一樣的;

      2)ModScan32向多個(gè)寄存器發(fā)送數(shù)據(jù)的報(bào)文:

      4001:<00000> 第一個(gè)寄存器,發(fā)送的數(shù)據(jù)是0;

      4001:<00000> 第二個(gè)寄存器,發(fā)送的數(shù)據(jù)是0;

      ……

      點(diǎn)擊<00000>,出現(xiàn)界面:

      4001寄存器的地址是:1;

      4002寄存器的地址是:2;

      Value:要發(fā)送的數(shù)據(jù);

      3)使用Modbos Poll和Modbus Slave模擬RTU Master:

      a)通信結(jié)構(gòu):

      RUT串口 → MB3480(192.168.127.254)→ PC(192.168.127.108)

      b)MGate Manager:

      操作模式:設(shè)置為“RTU主站模式”(RTU Master);

      串口狀態(tài)設(shè)置:

      從站ID映射的設(shè)置:

      注意:當(dāng)Port 1的操作模式設(shè)置為“RTU主站模式”時(shí),從站ID映射列表中就沒(méi)有了Port1的從站設(shè)備ID號(hào),為什么?因?yàn)檫@時(shí)的Port1是作為Master(發(fā)起端),TCP端是作為響應(yīng)端,這就是Modbus的主從結(jié)構(gòu)。界面如下:

      設(shè)置遠(yuǎn)程TCP從站IP:“新增”即可。

      b)Modbus Poll:

      注意:此時(shí)連接的是串口端,作為Master(主);

      c)Modbus Slave:

      注意:此時(shí)連接的是TCP端,作為Slave(從);

      d)通信成功:

      報(bào)文分析:

      第一組:

      0.000 RTU Req ---RTU主動(dòng)發(fā)起請(qǐng)求;

      0.000 TCP Req ---通過(guò)MB3480,轉(zhuǎn)發(fā)Req請(qǐng)求;

      0.010 TCP Resp ---TCP返回響應(yīng) ;

      0.010 RTU Resp ---通過(guò)MB3480,轉(zhuǎn)發(fā)RTU響應(yīng);


      下篇文章我們將對(duì)報(bào)文的數(shù)據(jù)解析,感謝你的觀看!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多