cq9电子·(中国)官方网站

  • 技術服務
    24小時提供高效率、高質量的技術支持

    modbus RTU 问题汇总解答

    时间:2018-03-29 17:50:32來源:本站原創
      一、ModBusRTU通訊協議與ModBus通訊協議有什麽區別?

      ModBus協議是應用層報文傳輸協議(OSI模型第7層),它定義了一個與通信層無關的協議數據單元(PDU),即PDU=功能碼+數據域。

      ModBus協議能夠應用在不同類型的總線或網絡。對應不同的總線或網絡,Modbus協議引入一些附加域映射成應用數據單元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三種通信方式:

      1.以太網,對應的通信模式是MODBUSTCP。

      2.異步串行傳輸(各種介質如有線RS-232-/422/485/;光纖、無線等),對應的通信模式是MODBUSRTU或MODBUSASCII。

      3.高速令牌傳遞網絡,對應的通信模式是ModbusPLUS。

      二、關于MODBUSRTU通訊協議的提問?

      modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验,

      三、modbus、rtu、modbusrtu分別是什麽?

      modbus協議是工控行業的標准協議,前身爲莫迪康所寫,現已被施奈德收購。

      而modbus分爲兩種協議:即串口協議(modbusrtu)和網口協議(modbustcp)協議,一般的工控機只支持rs232或者RS485的串口模式,這個時候工控機的協議棧裏就只有modbusRTU協議,當他從串口接收到數據時,會直接根據報文中的數據進行控制,如果需要用modbusTCP協議進行傳輸,則需要使用帶有網口的PLC。

      具體的幀格式如下:

      modbusRTU 地址域功能码数据差错校验

      modbusTCP 目的地址协议id 长度单元号功能码数据

      简单的说 tcp是由RTU加工而来的,而RTU则是另外一种概念,不包含在modus协议内,是工控行业对监控设备的简称。

      四、關于modbus_RTU協議主機發送的命令的一些問題

      01 读保持线圈状态(Read coilstatus)

      02 读输入线圈状态(Readinput status)

      03 读保持寄存器(Readholding register)

      04 读输入寄存器(Readinput register)

      05 写单个线圈(Forcesingle coil)

      06 写单个寄存器(Presetsingle register)

      15 写多个线圈(Forcemultiple coils)

      16 写多个寄存器(Presetmultiple registers)

      這些都是什麽意思

      01 读取逻辑线圈组状态

      02 读取离散量线圈组状态

      03 读取一个或多个保持寄存器的二进制值

      04 读取一个或多个输入寄存器的二进制值

      05 改变逻辑线圈状态

      06 改变单个寄存器的二进制值

      15 改变多个寄存器的二进制值

      16 指定多个操持寄存器的二进制值

     五、OPC转modbusRTU 方式我现在有一个OPC服务器,里面很多tag,tag是AB里出来的,怎么将tag连到modbus?

      Profibus、Fielbus、Modbus、CC-link等等是各中PLC硬件支持的通訊協議,這個是各廠商的硬件屬性一樣.只是現在計算機組態軟件都支持很多種協議的PLC.你理解反了。

      Profibus、Fielbus、Modbus、CC-link這些協議,是一種通訊協議,一般不需要你去編程,就好象你使用計算機,你不需要編寫IP協議一樣,只是要遵循它。

      遵循的意思就是,你必須按照該廠家所支持的協議在PLC或者DCS硬件組態的時候按照該通訊協議設置硬件.其實這個很簡單.這裏簡單指的是,你學編程,重點是編寫執行控制的動作的程序,硬件通訊協議不需要你自己動手寫。

      六、什么是modbusrtu master

      就是選RTU模式,因爲MODBUS分爲ASCII模式和RTU模式,MASER就是設置爲主站,一般爲PLC端,變頻器設爲從站,還要注意主站和從站地址的設置。

      七、Modbusrtu 为什么没有开始和结束标记

      由于Modbusrtu幀的每個字節是16進制數,數值範圍在00~FF,若像ModbusASCII那樣用02、03表示開始和結束標記,則與數值2、3發生沖突,無法判斷其是標記還是數值,無法數據解包。

      八、modbustcp 到 rtu的转换

      請仔細查看幀格式:

      modbusRTU 地址域功能码数据差错校验

      modbusTCP 目的地址协议id 长度单元号功能码数据

      寫一個TCP轉RTU的程序放到設備裏做modbus網橋即可

      九、MODBUSRTU通訊線被燒?

      用万用表量一下出来的通讯线,电压不超过5V应该没问题,一般不会烧东西,接的时候区分正和负。很多産品B是正,量一下看看。

      十、觸摸屏modbusrtu怎麽設置?

      一般是通過宏指令自己編程實現,當然也有支持RTU的,在通訊類型菜單

     十一、MODBUSRTU協議中浮點數是如何存儲讀到浮點數寄存器的數值如何轉換成所需的浮點數?

      浮點數保存的字節格式如下:

      地址 +0 +1 +2 +3

      内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM

      这里S 代表符号位,1是负,0是正

      E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。

      M24位的尾數保存在23位中,只存儲23位,最高位固定爲1。此方法用最較少的位數實現了較高的有效位數,提高了精度。零是一個特定值,冪是0尾數也是0。

      浮點數-12.5作爲一個十六進制數0xC1480000保存在存儲區中,這個值如下:

      地址 +0 +1 +2 +3

      内容0xC1 0x48 0x00 0x00

      浮點數和十六進制等效保存值之間的轉換相當簡單。下面的例子說明上面的值-12.5如何轉換。浮點保存值不是一個直接的格式,要轉換爲一個浮點數,位必須按上面的浮點數保存格式表

      所列的那樣分開,例如:

      地址 +0 +1 +2 +3

      格式 SEEEEEEE EMMM MMMM MMMM MMMM MMMM MMMM

      二进制11000001 01001000 00000000 00000000

      十六进制 C1 48 00 00

      從這個例子可以得到下面的信息:

      符号位是1 表示一个负数 幂是二进制10000010或十进制130,130减去127是3,就是实际的幂。 尾数是后面的二进制数10010000000000000000000

      在尾數的左邊有一個省略的小數點和1,這個1在浮點數的保存中經常省略,加上一個1和小數點到尾數的開頭,得到尾數值如下:

      1.10010000000000000000000

      接著,根據指數調整尾數.一個負的指數向左移動小數點.一個正的指數向右移動小數點.因爲指數是3,尾數調整如下:

      1100.10000000000000000000

      結果是一個二進制浮點數,小數點左邊的二進制數代表所處位置的2的冪,例如:1100表示

      (1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。

      小數點的右邊也代表所處位置的2的冪,只是冪是負的。例如:.100...表示(1*2^(-1))+(0*2^(-2))+(0*2^(-2))...=0.5。

      這些值的和是12.5。因爲設置的符號位表示這數是負的,因此十六進制值0xC1480000表示-12.5。

      十二、RS-485的設備,遵守MODBUS-RTU協議。怎樣用的電腦讀取信息?

      用电脑的串口,接个485转换器,接到设备的485接口,再找个串口软件,根据设备资料上的寄存器地址发送modbus报文,modbus报文通过串口软件发送。ㄎ母袷:0103 00 00 00 01 840A 读寄存器命令。

      十三、vbmodbus給modScan32rtu發送數據應該怎麽寫?

      確定兩個軟件哪個是主,哪個是從。然後再確定通訊協議是RTU、ASCII還是TCP。如果是TCP,就用socket控件。RTU\ASCII就用COM控件。然後給對應的口按照協議收發數並解析就可以了。

      十四、ModBusRTU通訊協議與ModBus通訊協議有什麽區別?

      modbus 协议包括了MODBUSRTU

      十五、modbusrtu通訊協議如何判斷超時?

      設置一個標志量用來表示是否超時;再用一個定時器,定時時長爲發送3.5個字符的時間(當然爲了保險時間可以長一些);在定時器中置超時標志;在串口中斷中每收到一個字節時定時器清零;主程序中根據超時標志做相應處理。

      十六、如何理解MODBUS協議RTU模式中的1.5和3.5字符間隔?

      發送兩幀數據之間要有一定的時間間隔,以保證接收方UART能夠區分。這個時間間隔在MODBUSRTU模式中要求是1.5和3.5字符間隔,也即是傳輸1.5和3.5個字符的時間,它與設置的通信參數有關,計算爲:

      若串口通信參數設置爲(注:開始位固定爲1):數據位8,奇偶校驗位1,停止位1,波特率9600bps,則傳輸一個字符(即1個字節)的時間爲:(1+8+1+1)/9600=0.00114583s=1.1454583ms

      1.5字符間隔=1.5x1.1454583ms=1.71818745ms

      3.5字符間隔=3.5x1.1454583ms=4.00910405ms

      十七、MODBUSRTU 测试软件?

      推荐:modscan32 还有最新得mobus poll

     十八、MODBUSRTU協議,上位機與儀表通信,讀寫數據都正確,爲什麽儀表掉電,寫入的參數又丟失了?怎麽保存?

      兩種可能:

      1.如果在儀表上設置參數掉電後都保存不了的話,基本可以確定是儀表問題;

      2.有些儀表寫入參數後還需要向固定的寄存器寫入確認參數,爲了保證寫入參數真確,需要檢查儀表通信部分說明書。

    计讯物联——物联网産品与行业解决方案提供商 申請樣機
    相關方案Relevant Solutions
    All Rights Reserved 廈門cq9电子官方网站物聯科技有限公司版權所有 閩ICP備15001895號 闽公网安备 35021102001331号
    【网站地图】【sitemap】