日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

电量模块MODBUS RTU寄存器解读

發布時間:2024/10/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 电量模块MODBUS RTU寄存器解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

---恢復內容開始---

最近在寫一個關于電量模塊的arduino lib,需要了解電量模塊的寄存器讀寫,涉及到硬件底層知識。

?

先復習一下計算機原理中有關位、字節和字的關系(來自google books)

?

  • 再來看電量模塊寄存器使用規約,先看通訊參數方面:

?

?

寄存器地址:0004H

默認值:  0105H

      0105H轉換成二進制為

                0000 0001 00000 0101

                [ ? ?ID ? ? ] ?[] ? ? ? [速率]

?  

      高八位0000 0001,表示該模塊的ID為01,如果為00,則表示為廣播地址;

      低字節的高2位00,表示為8N1

      低字節低四位0101(5),表示速率4800bps,不清楚手上的這款(JSY-MK-109 v1.0)是否支持更高的速率,JSY公司其它型號有支持06(9600bps)。

?

  • ?讀取電量參數

從上表可以看出,電量信息是從0048H地址開始的連續8個字節保存的,這跟程序中相應代碼正好印證:

1 Tx_Buffer[0]=Read_ID; 2 Tx_Buffer[1]=0x03; 3 Tx_Buffer[2]=0x00; 4 Tx_Buffer[3]=0x48; 5 Tx_Buffer[4]=0x00; 6 Tx_Buffer[5]=0x06; 7 crcnow.word16=chkcrc(Tx_Buffer,6); 8 Tx_Buffer[6]=crcnow.byte[1]; //CRC 9 Tx_Buffer[7]=crcnow.byte[0];

?

第一位是從機的地址;

第二位是功能碼03H,這是讀多個寄存器的功能碼;

第三、四位0048H,表示起始地址;

第五、六位0006H,表示數據長度,要讀取6個地址;

后面的位保存CRC校驗碼。

?

在arduino library中,read_data()中組成上面的命令,放入TX_Buffer[]數組,然后交給send_query()方法,通過串口發給485,再發給指定地址的從機,從機收到控制命令之后,會返回相應的數據,比如

?

?

另外,從下表可以看出,有兩組(四個)寄存器保存有功總電能數據,其中004BH、004CH是只讀,另外一組000CH、000DH是可讀寫的。

?

?

---恢復內容結束---

最近在寫一個關于電量模塊的arduino lib,需要了解電量模塊的寄存器讀寫,涉及到硬件底層知識。

?

先復習一下計算機原理中有關位、字節和字的關系(來自google books)

轉載于:https://www.cnblogs.com/ardypro/p/3457114.html

總結

以上是生活随笔為你收集整理的电量模块MODBUS RTU寄存器解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。