幫助文檔
modbus RTU 問題匯總解答
ModBus協(xié)議是應(yīng)用層報(bào)文傳輸協(xié)議(OSI模型第7層),它定義了一個(gè)與通信層無關(guān)的協(xié)議數(shù)據(jù)單元(PDU),即PDU=功能碼+數(shù)據(jù)域。
ModBus協(xié)議能夠應(yīng)用在不同類型的總線或網(wǎng)絡(luò)。對(duì)應(yīng)不同的總線或網(wǎng)絡(luò),Modbus協(xié)議引入一些附加域映射成應(yīng)用數(shù)據(jù)單元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三種通信方式:
1.以太網(wǎng),對(duì)應(yīng)的通信模式是MODBUSTCP。
2.異步串行傳輸(各種介質(zhì)如有線RS-232-/422/485/;光纖、無線等),對(duì)應(yīng)的通信模式是MODBUSRTU或MODBUSASCII。
3.高速令牌傳遞網(wǎng)絡(luò),對(duì)應(yīng)的通信模式是ModbusPLUS。
二、關(guān)于MODBUSRTU通訊協(xié)議的提問?
modbus 主要由站地址(一個(gè)字節(jié))+功能碼(一個(gè)字節(jié))+首地址(兩個(gè)字節(jié))+訪問字?jǐn)?shù)(兩個(gè)字節(jié))+校驗(yàn)碼(CRC16或LRC兩個(gè)字節(jié))總共8個(gè)字節(jié)組成。其實(shí)VB中編程很簡單從組建添加MSComm組建就行了,難的是校驗(yàn),
三、modbus、rtu、modbusrtu分別是什么?
modbus協(xié)議是工控行業(yè)的標(biāo)準(zhǔn)協(xié)議,前身為莫迪康所寫,現(xiàn)已被施奈德收購。
而modbus分為兩種協(xié)議:即串口協(xié)議(modbusrtu)和網(wǎng)口協(xié)議(modbustcp)協(xié)議,一般的工控機(jī)只支持rs232或者RS485的串口模式,這個(gè)時(shí)候工控機(jī)的協(xié)議棧里就只有modbusRTU協(xié)議,當(dāng)他從串口接收到數(shù)據(jù)時(shí),會(huì)直接根據(jù)報(bào)文中的數(shù)據(jù)進(jìn)行控制,如果需要用modbusTCP協(xié)議進(jìn)行傳輸,則需要使用帶有網(wǎng)口的PLC。
具體的幀格式如下:
modbusRTU 地址域功能碼數(shù)據(jù)差錯(cuò)校驗(yàn)
modbusTCP 目的地址協(xié)議id 長度單元號(hào)功能碼數(shù)據(jù)
簡單的說 tcp是由RTU加工而來的,而RTU則是另外一種概念,不包含在modus協(xié)議內(nèi),是工控行業(yè)對(duì)監(jiān)控設(shè)備的簡稱。
四、關(guān)于modbus_RTU協(xié)議主機(jī)發(fā)送的命令的一些問題
01 讀保持線圈狀態(tài)(Read coilstatus)
02 讀輸入線圈狀態(tài)(Readinput status)
03 讀保持寄存器(Readholding register)
04 讀輸入寄存器(Readinput register)
05 寫單個(gè)線圈(Forcesingle coil)
06 寫單個(gè)寄存器(Presetsingle register)
15 寫多個(gè)線圈(Forcemultiple coils)
16 寫多個(gè)寄存器(Presetmultiple registers)
這些都是什么意思
01 讀取邏輯線圈組狀態(tài)
02 讀取離散量線圈組狀態(tài)
03 讀取一個(gè)或多個(gè)保持寄存器的二進(jìn)制值
04 讀取一個(gè)或多個(gè)輸入寄存器的二進(jìn)制值
05 改變邏輯線圈狀態(tài)
06 改變單個(gè)寄存器的二進(jìn)制值
15 改變多個(gè)寄存器的二進(jìn)制值
16 指定多個(gè)操持寄存器的二進(jìn)制值
五、OPC轉(zhuǎn)modbusRTU 方式我現(xiàn)在有一個(gè)OPC服務(wù)器,里面很多tag,tag是AB里出來的,怎么將tag連到modbus?
Profibus、Fielbus、Modbus、CC-link等等是各中PLC硬件支持的通訊協(xié)議,這個(gè)是各廠商的硬件屬性一樣.只是現(xiàn)在計(jì)算機(jī)組態(tài)軟件都支持很多種協(xié)議的PLC.你理解反了。
Profibus、Fielbus、Modbus、CC-link這些協(xié)議,是一種通訊協(xié)議,一般不需要你去編程,就好象你使用計(jì)算機(jī),你不需要編寫IP協(xié)議一樣,只是要遵循它。
遵循的意思就是,你必須按照該廠家所支持的協(xié)議在PLC或者DCS硬件組態(tài)的時(shí)候按照該通訊協(xié)議設(shè)置硬件.其實(shí)這個(gè)很簡單.這里簡單指的是,你學(xué)編程,重點(diǎn)是編寫執(zhí)行控制的動(dòng)作的程序,硬件通訊協(xié)議不需要你自己動(dòng)手寫。
六、什么是modbusrtu master?
就是選RTU模式,因?yàn)镸ODBUS分為ASCII模式和RTU模式,MASER就是設(shè)置為主站,一般為PLC端,變頻器設(shè)為從站,還要注意主站和從站地址的設(shè)置。
七、Modbusrtu 為什么沒有開始和結(jié)束標(biāo)記?
由于Modbusrtu幀的每個(gè)字節(jié)是16進(jìn)制數(shù),數(shù)值范圍在00~FF,若像ModbusASCII那樣用02、03表示開始和結(jié)束標(biāo)記,則與數(shù)值2、3發(fā)生沖突,無法判斷其是標(biāo)記還是數(shù)值,無法數(shù)據(jù)解包。
八、modbustcp 到 rtu的轉(zhuǎn)換?
請(qǐng)仔細(xì)查看幀格式:
modbusRTU 地址域功能碼數(shù)據(jù)差錯(cuò)校驗(yàn)
modbusTCP 目的地址協(xié)議id 長度單元號(hào)功能碼數(shù)據(jù)
寫一個(gè)TCP轉(zhuǎn)RTU的程序放到設(shè)備里做modbus網(wǎng)橋即可
九、MODBUSRTU通訊線被燒?
用萬用表量一下出來的通訊線,電壓不超過5V應(yīng)該沒問題,一般不會(huì)燒東西,接的時(shí)候區(qū)分正和負(fù)。很多產(chǎn)品B是正,量一下看看。
十、觸摸屏modbusrtu怎么設(shè)置?
一般是通過宏指令自己編程實(shí)現(xiàn),當(dāng)然也有支持RTU的,在通訊類型菜單
十一、MODBUSRTU協(xié)議中浮點(diǎn)數(shù)是如何存儲(chǔ)讀到浮點(diǎn)數(shù)寄存器的數(shù)值如何轉(zhuǎn)換成所需的浮點(diǎn)數(shù)?
浮點(diǎn)數(shù)保存的字節(jié)格式如下:
地址 +0 +1 +2 +3
內(nèi)容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
這里S 代表符號(hào)位,1是負(fù),0是正
E 偏移127的冪,二進(jìn)制階碼=(EEEEEEEE)-127。
M24位的尾數(shù)保存在23位中,只存儲(chǔ)23位,最高位固定為1。此方法用最較少的位數(shù)實(shí)現(xiàn)了較高的有效位數(shù),提高了精度。零是一個(gè)特定值,冪是0尾數(shù)也是0。
浮點(diǎn)數(shù)-12.5作為一個(gè)十六進(jìn)制數(shù)0xC1480000保存在存儲(chǔ)區(qū)中,這個(gè)值如下:
地址 +0 +1 +2 +3
內(nèi)容0xC1 0x48 0x00 0x00
浮點(diǎn)數(shù)和十六進(jìn)制等效保存值之間的轉(zhuǎn)換相當(dāng)簡單。下面的例子說明上面的值-12.5如何轉(zhuǎn)換。浮點(diǎn)保存值不是一個(gè)直接的格式,要轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù),位必須按上面的浮點(diǎn)數(shù)保存格式表
所列的那樣分開,例如:
地址 +0 +1 +2 +3
格式 SEEEEEEE EMMM MMMM MMMM MMMM MMMM MMMM
二進(jìn)制11000001 01001000 00000000 00000000
十六進(jìn)制 C1 48 00 00
從這個(gè)例子可以得到下面的信息:
符號(hào)位是1 表示一個(gè)負(fù)數(shù) 冪是二進(jìn)制10000010或十進(jìn)制130,130減去127是3,就是實(shí)際的冪。 尾數(shù)是后面的二進(jìn)制數(shù)10010000000000000000000
在尾數(shù)的左邊有一個(gè)省略的小數(shù)點(diǎn)和1,這個(gè)1在浮點(diǎn)數(shù)的保存中經(jīng)常省略,加上一個(gè)1和小數(shù)點(diǎn)到尾數(shù)的開頭,得到尾數(shù)值如下:
1.10010000000000000000000
接著,根據(jù)指數(shù)調(diào)整尾數(shù).一個(gè)負(fù)的指數(shù)向左移動(dòng)小數(shù)點(diǎn).一個(gè)正的指數(shù)向右移動(dòng)小數(shù)點(diǎn).因?yàn)橹笖?shù)是3,尾數(shù)調(diào)整如下:
1100.10000000000000000000
結(jié)果是一個(gè)二進(jìn)制浮點(diǎn)數(shù),小數(shù)點(diǎn)左邊的二進(jìn)制數(shù)代表所處位置的2的冪,例如:1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。
小數(shù)點(diǎn)的右邊也代表所處位置的2的冪,只是冪是負(fù)的。例如:.100...表示(1*2^(-1))+(0*2^(-2))+(0*2^(-2))...=0.5。
這些值的和是12.5。因?yàn)樵O(shè)置的符號(hào)位表示這數(shù)是負(fù)的,因此十六進(jìn)制值0xC1480000表示-12.5。
十二、RS-485的設(shè)備,遵守MODBUS-RTU協(xié)議。怎樣用的電腦讀取信息?
用電腦的串口,接個(gè)485轉(zhuǎn)換器,接到設(shè)備的485接口,再找個(gè)串口軟件,根據(jù)設(shè)備資料上的寄存器地址發(fā)送modbus報(bào)文,modbus報(bào)文通過串口軟件發(fā)送啊,報(bào)文格式:0103 00 00 00 01 840A 讀寄存器命令。
十三、vbmodbus給modScan32rtu發(fā)送數(shù)據(jù)應(yīng)該怎么寫?
確定兩個(gè)軟件哪個(gè)是主,哪個(gè)是從。然后再確定通訊協(xié)議是RTU、ASCII還是TCP。如果是TCP,就用socket控件。RTU\ASCII就用COM控件。然后給對(duì)應(yīng)的口按照協(xié)議收發(fā)數(shù)并解析就可以了。
十四、ModBusRTU通訊協(xié)議與ModBus通訊協(xié)議有什么區(qū)別?
modbus 協(xié)議包括了MODBUSRTU
十五、modbusrtu通訊協(xié)議如何判斷超時(shí)?
設(shè)置一個(gè)標(biāo)志量用來表示是否超時(shí);再用一個(gè)定時(shí)器,定時(shí)時(shí)長為發(fā)送3.5個(gè)字符的時(shí)間(當(dāng)然為了保險(xiǎn)時(shí)間可以長一些);在定時(shí)器中置超時(shí)標(biāo)志;在串口中斷中每收到一個(gè)字節(jié)時(shí)定時(shí)器清零;主程序中根據(jù)超時(shí)標(biāo)志做相應(yīng)處理。
十六、如何理解MODBUS協(xié)議RTU模式中的1.5和3.5字符間隔?
發(fā)送兩幀數(shù)據(jù)之間要有一定的時(shí)間間隔,以保證接收方UART能夠區(qū)分。這個(gè)時(shí)間間隔在MODBUSRTU模式中要求是1.5和3.5字符間隔,也即是傳輸1.5和3.5個(gè)字符的時(shí)間,它與設(shè)置的通信參數(shù)有關(guān),計(jì)算為:
若串口通信參數(shù)設(shè)置為(注:開始位固定為1):數(shù)據(jù)位8,奇偶校驗(yàn)位1,停止位1,波特率9600bps,則傳輸一個(gè)字符(即1個(gè)字節(jié))的時(shí)間為:(1+8+1+1)/9600=0.00114583s=1.1454583ms
1.5字符間隔=1.5x1.1454583ms=1.71818745ms
3.5字符間隔=3.5x1.1454583ms=4.00910405ms
十七、MODBUSRTU 測(cè)試軟件?
推薦:modscan32 還有最新得mobus poll
十八、MODBUSRTU協(xié)議,上位機(jī)與儀表通信,讀寫數(shù)據(jù)都正確,為什么儀表掉電,寫入的參數(shù)又丟失了?怎么保存?
兩種可能:
1.如果在儀表上設(shè)置參數(shù)掉電后都保存不了的話,基本可以確定是儀表問題;
2.有些儀表寫入?yún)?shù)后還需要向固定的寄存器寫入確認(rèn)參數(shù),為了保證寫入?yún)?shù)真確,需要檢查儀表通信部分說明書。
-
水利遙測(cè)終端機(jī)TY511-X水利遙測(cè)終端機(jī)TY511-X集水文水資源、視頻數(shù)據(jù)采集和邏輯控制功能于一體的工業(yè)級(jí)網(wǎng)關(guān)型遙測(cè)終端機(jī),采用大容量存儲(chǔ)和高級(jí)路由等新型設(shè)計(jì)方... -
5G加密工業(yè)網(wǎng)關(guān)|TR323-A2計(jì)訊物聯(lián)5G加密工業(yè)網(wǎng)關(guān) TR323-A2,具備加密、認(rèn)證和數(shù)據(jù)防篡改能力,支持國密軟硬件加密,支持SM1、SM2、SM3、SM4算法,支持IPsec VPN加... -
雷達(dá)水位計(jì)計(jì)訊物聯(lián)雷達(dá)水位計(jì)采用先進(jìn)雷達(dá)波測(cè)距技術(shù),非接觸式精準(zhǔn)監(jiān)測(cè)水位變化,適用于河流、湖泊、水庫、城市管網(wǎng)、工業(yè)水池等多場(chǎng)景。無需接觸介... -
電磁流量計(jì)計(jì)訊物聯(lián)電磁流量計(jì),支持累積流量、瞬時(shí)流量、流速、流量百分比等高精度測(cè)量,低功耗長壽命,一體式以及分體式多場(chǎng)景高效安裝,主要應(yīng)用于... -
氣泡水位計(jì)計(jì)訊物聯(lián)氣泡水位計(jì),高精度、高可靠、高智能、免氣瓶、免測(cè)井、免維護(hù)、抗振動(dòng)、長壽命。適用于流動(dòng)水體、大中小河流、水庫、或者水體污染...
-
基于工業(yè)網(wǎng)關(guān)的充電樁遠(yuǎn)程運(yùn)維與監(jiān)控管理一體化解決方案廈門計(jì)訊物聯(lián)工業(yè)網(wǎng)關(guān)賦能充電樁遠(yuǎn)程運(yùn)維與監(jiān)控管理解決方案,通過工業(yè)網(wǎng)關(guān)實(shí)現(xiàn)充電樁的設(shè)備互聯(lián)、數(shù)據(jù)采集、邊緣計(jì)算與遠(yuǎn)程運(yùn)維,構(gòu)建全生命周期監(jiān)控管理體系,提升運(yùn)維效率與設(shè)備可 -
智慧化工園區(qū)平臺(tái)廈門計(jì)訊物聯(lián)化工園區(qū)環(huán)保智慧平臺(tái)是基于物聯(lián)網(wǎng)、大數(shù)據(jù)和云計(jì)算技術(shù)的綜合性管理平臺(tái),構(gòu)建起覆蓋大氣、水質(zhì)、土壤、危廢的全要素監(jiān)測(cè)網(wǎng)絡(luò),將園區(qū)管理、監(jiān)測(cè)、預(yù)警、應(yīng)急等功能集于 -
5G工業(yè)路由器園區(qū)無人配送車聯(lián)網(wǎng)解決方案計(jì)訊物聯(lián)5G工業(yè)路由器園區(qū)無人配送車聯(lián)網(wǎng)解決方案?過集成5G工業(yè)路由器、無人配送車、云端管理平臺(tái)和邊緣計(jì)算技術(shù),構(gòu)建一個(gè)高可靠、低延時(shí)、高帶寬的園區(qū)無人駕駛配送網(wǎng)絡(luò)。 -
環(huán)保用電監(jiān)管一體解決方案計(jì)訊物聯(lián)環(huán)保用電監(jiān)管一體解決方案通過實(shí)時(shí)監(jiān)測(cè)企業(yè)生產(chǎn)設(shè)施與治污設(shè)施的用電數(shù)據(jù),對(duì)企業(yè)污染治理設(shè)施運(yùn)行狀態(tài)的精準(zhǔn)監(jiān)控與動(dòng)態(tài)管理的系統(tǒng)性方案,實(shí)現(xiàn)環(huán)保合規(guī)監(jiān)管與能源高效管理 -
工業(yè)智能網(wǎng)關(guān)設(shè)備遠(yuǎn)程運(yùn)維解決方案計(jì)訊物聯(lián)工業(yè)網(wǎng)關(guān)設(shè)備遠(yuǎn)程運(yùn)維解決方案,實(shí)現(xiàn)了對(duì)工業(yè)設(shè)備的實(shí)時(shí)監(jiān)控、故障預(yù)警、遠(yuǎn)程診斷及優(yōu)化管理,顯著提升了運(yùn)維效率并降低了成本。它徹底改變了傳統(tǒng)工業(yè)現(xiàn)場(chǎng)設(shè)備“靠腿運(yùn)維、現(xiàn)

閩公網(wǎng)安備 35021102001331號(hào)