關于設備連接有人云的使用及modbus rtu協議,服務器端TCP調試設置

有人云調試

  • 調試過程
  • 問題
    • 1. 關于modbus rtu協議,實質上有三種
      • modbus基本原理
      • modbus 格式
    • 2. 關于modbus crc16通信校驗
    • 3. 關于在ubuntu阿里云服務器端,監聽網絡數據之調試mNetAssist

之前的一個項目,再拿出來回顧下。

調試過程

  1. 先 要在有人云,用手機號注冊一個服務賬號,官網顯示目前只支持手機號注冊。

  2. 再添加一個網關,一般的設備而言,選擇不添加SN方式。設置好后,會自動生成一個賬號和密碼在這里插入圖片描述
    這個是要配置到設備的GM5端的。

  3. 添加設備
    點擊【設備管理】—【設備列表】—【添加設備】,其他的設置都是比較簡單的,詳細可以參考官方文檔。這里重點說下,關聯設備模板,這個也是自己不是很理解的點。 --> 此步官方文檔說是為設備配置變量,添加點表。其表述如下:設備模板,它具備批量管理設備的通訊協議、采集方式、變量(點表)采集規則的能力。這里主要指的是modbusRTU標準的協議。所以得對這個協議了解下,詳見問題部分。
    這里要注意,設置 寄存器時的問題,和組態軟件是一樣的,都要將要設置的值+1。也就是實際協議用到值是減1,如讀寄存器功能碼為03,但要設置成04 ,起始地址為00,就要設置成01。

  4. 設置GM5模塊,通過程序來實現的話,主要就是設置這些選項

#define AT_HEART                  "AT+HEARTEN=ON"
#define AT_HEARTP                 "AT+HEARTTP=COM"
#define AT_HEARTDT                "AT+HEARTDT=773467"//w4g
#define AT_HEARTTM                "AT+HEARTTM=30"   //heart set#define AT_REG                    "AT+REGEN=ON"
#define AT_REGTP			      "AT+REGTP=CLOUD"
#define AT_CLOUD				  "AT+CLOUD=00052025000000000001,ZLEc9aUg"

問題

1. 關于modbus rtu協議,實質上有三種

Modbus RTU(Remote Terminal Unit 遠程終端單元):這種方式常采用RS-485做為物理層,一般利用芯片的串口實現數據報文的收發,報文數據采用二進制數據進行通信。
Modbus ASCII :報文使用 ASCII 字符。ASCII 格式使用縱向冗余校驗和。Modbus ASCII 報文由冒號 (“:”)開始 和換行符 (CR/LF) 結尾構成。
Modbus TCP,上面兩種支持串口,而Modbus TCP是最近開發的協議擴展,允許Modbus協議通過TCP / IP網絡傳輸。 通過網絡進行通信的固有延遲和其他方面,需要對如何保持請求和響應彼此同步進行一些修改,并確保不從從設備接收錯誤數據。

與Modbus RTU相比,Modbus TCP在PDU的包裝方式上有所不同。 包含PDU的TCP幀以2字節的MODBUS應用協議(MBAP)事務標識符開始,而不是從ID。 當TCP層處理該功能時,也不需要CRC執行錯誤檢查。
參照人家的寫的,多熟悉下。

modbus基本原理

由于要進行通信,所以要有傳輸數據的存儲區,線圈,表示的是位,而寄存器,表示的占16個位,數據,也就是說表示的是最小單位,至于為什么叫這些名字,主要是modbus最初就是為了解決電線多了之后亂的問題。

存儲區的范圍:5位標準地址(也有擴展到6位的),Y XXXX//第一位表示哪個存儲區,后面4位表示地址,表示類型的位,沒有2,這個是規定好的。也沒有0000這個地址,而是從0001開始
線圈寄存器(Coil Register)(輸出線圈)bool、00001 - 09999、可讀可寫
離散輸入寄存器(Discrete Input Register)(輸入線圈)bool、10001 - 19999、只讀
輸入寄存器(Input Register)16位值、30001 - 39999、只讀
保持寄存器(Holding Register)(輸出寄存器)16位值、40001 - 49999、可讀可寫
存儲區的概念僅是為了人與人之間交流,理解之用,實際協議使用的是后面的地址,因為前面根據功能碼可以判斷出讀、寫的類型

關于功能碼編碼問題:有兩種類型數據 寄存器和線圈 + 兩種操作 可讀可寫 + 寫兩種方式 一次是單個還是多個,也就是說總共有6種組合。讀輸出線圈 01 讀輸入線圈 02 讀輸出寄存器 03 讀輸入寄存器 04 寫單個線圈 05 寫單個寄存器06
寫多個輸出線圈 15 寫多個輸出寄存器 16(十進制表示)

modbus 格式

modbus主要采用主請求,從應答的方式,也就是主機要數據,其數據結構都是:

  1. 地址:1個字節 ,取值范圍是0-247,如果是0,就是主站廣播報文;如果是1-247,則有可能是主站請求或者從站應答。
  2. 功能碼:1個字節,也就是報文命令,代表主站對從站的操作,讀或者寫
  3. 數據:0~ 252個字節,數據字段,主請求報文,從應答報文會有所差異。也就是說假設抓取總線報文,如何區分是主站請求還是從站應答,則需要通過數據字段進行區分了。
  4. CRC校驗:2 個字節 采樣CRC16,16位循環冗余校驗。
    基本的讀取通信流程: 主機發送,寫其是一樣的
      第1 字節ARD : 從機地址碼(=001~254)
      第 2 字節03H : 讀寄存器值功能碼
      第3、4 字節 : 要讀的寄存器開始地址
      第5、6 字節 : 要讀的寄存器數量
      第7、8 字節 : 從字節1 到6 的CRC16 校驗和
      從機應答:
      第1 字節ARD : 從機地址碼(=001~254)
      第2 字節03H : 返回讀功能碼
      第3 字節 : 字節總數,字節計數
      第4~7 字節 : 寄存器數據
      第8、9 字節 : 從字節1 到7 的CRC16 校驗和

2. 關于modbus crc16通信校驗

 /***********************CRC查表法校驗*************************/// CRC 高位字節值表
unsigned char code auchCRCHi[260] = { 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
0x81, 0x40, 0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697033.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697033.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697033.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

家的情感記憶:如何用壁紙講述你的墻故事?

1、方小童在線工具集 網址: 方小童 該網站是一款在線工具集合的網站,目前包含PDF文件在線轉換、隨機生成美女圖片、精美壁紙、電子書搜索等功能,喜歡的可以趕緊去試試!

HarmonyOS—使用預覽器查看應用/服務效果

DevEco Studio為開發者提供了UI界面預覽功能,可以查看應用/服務的UI界面效果,方便開發者隨時調整界面UI布局。預覽器支持布局代碼的實時預覽,只需要將開發的源代碼進行保存,就可以通過預覽器實時查看應用/服務運行效果&#xff0c…

探索分布式強一致性奧秘:Paxos共識算法的精妙之旅

提到分布式算法,就不得不提 Paxos 算法,在過去幾十年里,它基本上是分布式共識的代名詞,因為當前一批常用的共識算法都是基于它改進的。比如,Fast Paxos 算法、Cheap Paxos、Raft 算法等。 由萊斯利蘭伯特(L…

Spring6學習技術|AOP

學習材料 尚硅谷Spring零基礎入門到進階,一套搞定spring6全套視頻教程(源碼級講解) AOP AOP(Aspect Oriented Programming)是一種設計思想,是軟件設計領域中的面向切面編程,它是面向對象編程的…

AIDL的工作原理與使用示例 跨進程通信 遠程方法調用RPC

AIDL的介紹與使用 AIDL(Android Interface Definition Language)是Android中用于定義客戶端和服務端之間通信接口的一種接口定義語言。它允許你定義客戶端和服務的通信協議,用于在不同的進程間或同一進程的不同組件間進行數據傳遞。AIDL通過…

深入探討YUV圖像處理:理論原理與OpenCV實踐

文章目錄 導言YUV模型的原理使用OpenCV處理YUV圖像1. 讀取YUV圖像2. 將YUV圖像轉換為RGB圖像3. 將RGB圖像轉換為YUV圖像 結語 導言 導言: 在圖像處理領域,YUV色彩模型因其對亮度和色度的分離而被廣泛使用,特別在視頻編碼和實時通信中發揮了巨…

算法項目(3)—— 從零實現KNN、樸素貝葉斯垃圾郵件分類

本文包含什么? 項目運行的方式項目代碼,自己實現KNN算法以及樸素貝葉斯算法.代碼介紹運行有問題? csdn上后臺隨時售后.項目說明 本文主要是自己從0實現KNN算法以及樸素貝葉斯算法.然后使用英文垃圾郵件數據集進行垃圾郵件分類.常見的代碼均調用sklearn庫來實現,本文自行實現…

AI推介-大語言模型LLMs論文速覽(arXiv方向):2024.01.01-2024.01.10

1.Pre-trained Large Language Models for Financial Sentiment Analysis 標題:用于金融情感分析的預訓練大型語言模型 author:Wei Luo, Dihong Gong date Time:2024-01-10 paper pdf:http://arxiv.org/pdf/2401.05215v1 摘要: 金融情感分析是指將金融文本內容劃分…

從零學習Linux操作系統第二十八部分 shell腳本中的執行流控制

一、什么是執行流、循環執行流 執行流:改變執行順序,使之更方便操作者 循環執行流:根據腳本是執行流再某一個狀態下進行循環執行,進行多次執行后再往下走(for語句) for語句 作用 為循環執行動作 for語句…

opencv判斷灰化情況

目的 先說說理論: 在圖像處理中,用RGB三個分量(R:Red,G:Green,B:Blue),即紅、綠、藍三原色來表示真彩色,R分量,G分量,B分…

LeetCode LCR 055.二叉搜索樹迭代器

實現一個二叉搜索樹迭代器類BSTIterator ,表示一個按中序遍歷二叉搜索樹(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 類的一個對象。BST 的根節點 root 會作為構造函數的一部分給出。指針應初始化為一個不存在…

vue實現拖拽(vuedraggable)

實現效果: 左側往右側拖動,右側列表可以進行拖拽排序。 安裝引用: npm install vuedraggable import draggable from vuedraggable 使用: data數據: componentList: [{groupName: 考試題型,children: [{componentType: danxua…

SQLite 的使用

SQLite 是一個輕量級、自包含和無服務器的關系型數據庫管理系統(RDBMS),廣泛應用于嵌入式系統、移動應用程序和小中型網站。它易于創建、需要的配置較少,并且提供了用于管理和操作數據的強大功能集。本文,我們將帶領你…

電路設計(26)——交通信號燈的multism仿真

1.功能要求 使用數字芯片設計一款交通信號燈,使得: 主干道的綠燈時間為60S,紅燈時間為45S 次干道的紅燈時間為60S,綠燈時間為45S 主、次干道,綠燈的最后5S內,黃燈閃爍 使用數碼管顯示各自的倒計時時間。 按…

【CMake】(5)搜索文件

方法1:使用aux_source_directory命令 aux_source_directory命令用于查找指定目錄下的所有源文件,并將文件列表存儲到一個變量中。這種方法簡單易用,適合于源文件位于單一目錄下的情況。 基本語法如下: aux_source_directory(<dir> <variable>)<dir>:…

openssl3.2 - 編譯 - zlib.dll不要使用絕對路徑

文章目錄 openssl3.2 - 編譯 - 編譯時的動態庫zlib.dll不要使用絕對路徑概述測試zlib特性在安裝好的目錄中是否正常筆記70-test_tls13certcomp.t80-test_cms.t對測試環境的猜測從頭再編譯測試安裝一次測試一下隨便改變位置的openssl用到zlib時是否好使測試一下隨便改變位置的op…

Docker Nginx 負載均衡搭建(服務宕機-配置高可用) - 附(Python案例,其它語言同理)

目錄 一 . 概要 1. 什么是負載均衡 2. 負載均衡有哪些優勢&#xff1f; &#xff08;1&#xff09;應用程序可用性 &#xff08;2&#xff09;應用程序可擴展性 &#xff08;3&#xff09;應用程序安全 &#xff08;4&#xff09;應用程序性能 3 . Nginx負載均衡調度策…

Java高級 / 架構師 場景方案 面試題(二)

1.雙十一億級用戶日活統計如何用 Redis快速計算 在雙十一這種億級用戶日活統計的場景中&#xff0c;使用Redis進行快速計算的關鍵在于利用Redis的數據結構和原子操作來高效地統計和計算數據。以下是一個基于Redis的日活統計方案&#xff1a; 選擇合適的數據結構&#xff1a; …

核密度分析

一.算法介紹 核密度估計&#xff08;Kernel Density Estimation&#xff09;是一種用于估計數據分布的非參數統計方法。它可以用于多種目的和應用&#xff0c;包括&#xff1a; 數據可視化&#xff1a;核密度估計可以用來繪制平滑的密度曲線或熱力圖&#xff0c;從而直觀地表…

【DOCKER】隨手記

目錄 1. 安裝1.1 LINUX1.2 Windows 2. 常用配置2.1 普通權限運行2.2 開機自啟動2.3 3 更換Docker鏡像源2.4 更改默認存儲位置 3. 顯示帶UI的軟件4. 基于DOCKER的服務4.1 FTP4.2 Portainer4.3 Watchtower4.4 SiYuan4.5 GitLab4.5.1 創建容器4.5.2 克隆路徑問題4.5.3 獲取默認密碼…