国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

服務器資訊|IT/互聯網|云計算|區塊鏈|軟件資訊|操作系統|手機數碼|百科知識|免費資源|頭條新聞|

服務器之家 - 新聞資訊 - 操作系統 - 基于OpenHarmony 系統通過Modbus協議讀取設備數據

基于OpenHarmony 系統通過Modbus協議讀取設備數據

2023-07-04 17:09未知服務器之家 操作系統

想了解更多關于開源的內容,請訪問: 本站開源基礎軟件社區 Modbus簡介 原文鏈接: 鏈接 Modbus是一種串行通信協議,是Modicon公司(現在的施耐德電氣Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發表。Modbus已經成

基于OpenHarmony 系統通過Modbus協議讀取設備數據

想了解更多關于開源的內容,請訪問:

本站開源基礎軟件社區

Modbus簡介

原文鏈接:鏈接

Modbus是一種串行通信協議,是Modicon公司(現在的施耐德電氣Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發表。Modbus已經成為工業領域通信協議的業界標準(De facto),并且現在是工業電子設備之間常用的連接方式。

Modbus RTU(Remote Terminal Unit 遠程終端單元):這種方式常采用RS-485做為物理層,一般利用芯片的串口實現數據報文的收發,報文數據采用二進制數據進行通信。

Modbus TCP/IP 或 Modbus TCP:這是一種 Modbus 變體版本,使用 TCP/IP 網絡進行通信,通過 502 端口進行連接。報文不需要校驗和計算,因為以太網底層已經實現了CRC32 數據完整性校驗

Modbus RTU

地址:取值范圍是0-247,如果是0,就是主站廣播報文;如果是1-247,則有可能是主站請求或者從站應答。

功能碼:也就是報文命令,代表主站對從站的操作,讀或者寫。

數據:數據字段,主請求報文,從應答報文會有所差異。也就是說假設抓取總線報文,如何區分是主站請求還是從站應答,則需要通過數據字段進行區分了。

CRC校驗:采樣CRC16,16位循環冗余校驗。

部分功能碼解析

1、功能碼 –讀線圈狀態

  • 主機發送:01 01 00 01 00 08 6C 0C
  • 從機回復: 01 01 01 2F 10 54
  • 主機解析:01 地址(設備ID)
01  功能碼;

            00 01  代表查詢的起始線圈地址,即從0001線圈開始查詢。

            00 08 查詢線圈數量。

            6C 0C 循環冗余校驗。

從機解析:01 地址(設備ID)。

01  功能碼;

            01  代表后面數據的字節數。

            2F    讀取以0001線圈開始的8個線圈的狀態。0x2F二進制為00101111,對應狀態為1111                         0100

            10 54 循環冗余校驗。

2、功能碼 –-讀離散輸入寄存器

功能:讀離散輸入寄存器,位操作,可讀單個或多個,類似功能碼0X01。

3、功能碼 –-讀保持寄存器的值

  • 主機發送:01 03 00 01 00 01 D5 CA
  • 從機回復: 01 03 02 00 01 79 84
  • 主機解析:01 地址(設備ID)
03  功能碼;

            00 01  代表查詢的起始寄存器地址,即從0001寄存器開始查詢。

            00 01 查詢寄存器數量。

            D5 CA 循環冗余校驗。

從機解析:01 地址(設備ID)。

03  功能碼;

            02  代表后面數據的字節數。

            00 01 查詢0001寄存器的值。

            79 84 循環冗余校驗。

4、功能碼 –-讀輸入寄存器

功能:讀輸入寄存器,字節操作,可讀單個或多個,類似功能碼0X03。

5、功能碼 –-寫單個保持寄存器

功能:對單個線圈進行寫操作,位操作,只能寫一個。寫入0xFF00表示將線圈置為ON,寫入0x0000表示將線圈置為OFF,其它值無效。

主機發送數據:從站地址+功能碼+寄存器起始地址+數據值+校驗碼

    從站應答數據:從站地址+功能碼+寄存器地址+寫入值+校驗碼

6、功能碼 –-寫單個保持寄存器

  • 主機發送:01 06 00 02 00 01 E9 CA
  • 從機回復: 01 06 00 02 00 01 E9 CA
  • 主機解析:01 地址(設備ID)
06  功能碼;

            00 02  代表待寫入的起始寄存器地址,即從0002寄存器開始寫數據。

            00 01 寫入的寄存器的值。即給0002寄存器寫入0001

            E9 CA 循環冗余校驗。

從機解析:01 地址(設備ID)。

06  功能碼;

            02  代表后面數據的字節數。

            00 01 查詢0001寄存器的值。

            E9 CA 循環冗余校驗。

7、功能碼 –-寫多個線圈狀態

  • 主機發送:01 0F 00 01 00 07 01 6B B2 B9
  • 從機回復: 01 0F 00 01 00 07 45 C9
  • 主機解析:01 地址(設備ID)
0F  功能碼;

            00 01  代表待寫入的起始線圈地址,即從0001線圈開始寫數據。

            00 07 待寫入的線圈的數量。

            01 后面寫入數據的字節數。

            6B寫入寄存器的值,即11010110。二進制01101011

            B2 B9 循環冗余校驗。

從機解析:01 地址(設備ID)。

0F  功能碼;

            00 01  代表待寫入的起始線圈地址,即從0001線圈開始寫數據。

            00 07 待寫入的線圈的數量。

            45 C9 循環冗余校驗。

8、功能碼 – 寫多個保持寄存器

  • 主機發送:01 10 00 04 00 03 06 00 01 00 00 00 01 5B 55
  • 從機回復: 01 10 00 04 00 03 C1 C9
  • 主機解析:01 地址(設備ID)
10  功能碼;

            00 04  代表待寫入的起始寄存器地址,即從0004寄存器開始寫數據。

            00 03 待寫入的寄存器的數量。

            06 后面寫入數據的字節數。

         0001,0000,0001寫入寄存器的值。即給0004,0005,0006寄存器分別寫入0001,0000,0001

            5B 55 循環冗余校驗。

從機解析:01 地址(設備ID)。

10  功能碼;

            00 04  代表待寫入的起始寄存器地址,即從0004寄存器開始寫數據。

            00 03 待寫入的的寄存器的值。即給0004,0005,0006寄存器分別寫入0001,0000,0001

            C1 C9 循環冗余校驗。

在OpenHarmony上面使用Modbus

原文鏈接:鏈接

加入Modbus C++庫libmodbus

適配文件在當前目錄下的cpp文件夾中。

庫文件:

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

c文件:

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

把上面文件加入編譯:

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

Modbus TCP

配置Modbus信息

設置IP和端口號以及DeviceID。

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

設置數據地址和長度。

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

把測試代碼執行起來

引入測試代碼庫。

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

初始化Modbus連接。

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

讀取數據。

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

運行調試

基于OpenHarmony 系統通過Modbus協議讀取設備數據基于OpenHarmony 系統通過Modbus協議讀取設備數據-開源基礎軟件社區

Modbus RTU

Modbus RTU主要是通過RS485或者232接口讀取數據的modbus協議。

libmodbus庫函數解析

功能碼函數:

函數

功能嗎

modbus_read_registers

03

modbus_read_input_registers

04

modbus_read_bits

01

modbus_read_input_bits

02

modbus數據轉換函數

函數

轉換內容

modbus_get_float_abcd

獲取浮點數ABCD

modbus_set_float_abcd

設置浮點數ABCD

想了解更多關于開源的內容,請訪問:

本站開源基礎軟件社區

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产91 | 91欧美激情一区二区三区成人 | 国产片性视频免费播放 | 亚洲综合国产 | 高清免费毛片 | 久久久久网站 | 国产精品久久久久久久久久东京 | 亚洲精品日韩激情在线电影 | 激情国产 | 中文在线一区二区 | 97伦理片 | 毛片网站大全 | 超级碰在线视频 | 精品久久久一区 | 欧美大片免费高清观看 | 成人日韩在线观看 | 91国产视频在线 | 日韩精品免费观看 | 国产不卡精品视频 | 91综合国产| 免费毛片网站 | 中文字幕视频三区 | 欧美激情视频一区二区三区不卡 | 狠狠干欧美 | www中文字幕在线观看 | 黄色一区二区三区 | 亚洲乱码国产乱码精品精的特点 | 久久精品在线 | 中文字幕欧美日韩 | 国产精品99久久 | 精品久久久网站 | 夜夜摸夜夜操 | 免费在线看a | 久久99精品国产.久久久久 | 久久精品国产99 | 日韩精品一区在线 | 国产区在线观看 | 求av网址| 色婷婷综合久久久中字幕精品久久 | 一区二区三区久久 | 成人片免费视频 |