《C#上位機開發從門外到門內》3-2::Modbus數據采集系統

在這里插入圖片描述

文章目錄

    • **1. 項目概述**
      • **1.1 項目背景**
      • **1.2 項目目標**
      • **1.3 技術棧**
    • **2. 系統架構設計**
      • **2.1 系統架構圖**
      • **2.2 模塊功能**
    • **3. 數據采集模塊實現**
      • **3.1 Modbus協議簡介**
      • **3.2 數據采集流程**
      • **3.3 代碼實現**
    • **4. 數據存儲模塊實現**
      • **4.1 數據庫設計**
      • **4.2 數據存儲流程**
      • **4.3 代碼實現**
        • **MySQL版本**
        • **InfluxDB版本**
    • **5. 數據可視化模塊實現**
      • **5.1 可視化工具選擇**
      • **5.2 可視化實現**
        • **ECharts示例**
        • **Grafana示例**
    • **6. 系統部署與測試**
      • **6.1 部署環境**
      • **6.2 測試流程**
    • **7. 總結**

在這里插入圖片描述

1. 項目概述

1.1 項目背景

Modbus是一種廣泛應用于工業自動化領域的通信協議,支持多種設備之間的數據傳輸。本項目旨在通過Modbus協議采集傳感器數據,并將采集到的數據進行存儲和可視化,以實現對工業設備的實時監控和數據分析。
在這里插入圖片描述

1.2 項目目標

  1. 通過Modbus協議采集傳感器數據。
  2. 將采集到的數據存儲到數據庫中。
  3. 實現數據的可視化展示,支持實時監控和歷史數據分析。

1.3 技術棧

  • 通信協議:Modbus RTU/TCP
  • 編程語言:Python(用于數據采集和存儲)
  • 數據庫:MySQL/InfluxDB(用于數據存儲)
  • 可視化工具:ECharts/Grafana(用于數據可視化)
  • 硬件設備:Modbus傳感器、RS485通信模塊、工業網關等。

2. 系統架構設計

在這里插入圖片描述

2.1 系統架構圖

+-------------------+       +-------------------+       +-------------------+
|                   |       |                   |       |                   |
|  Modbus傳感器     |<----->|  數據采集模塊     |<----->|  數據存儲模塊     |
|  (溫度、壓力等)   |       |  (Python腳本)     |       |  (MySQL/InfluxDB) |
|                   |       |                   |       |                   |
+-------------------+       +-------------------+       +-------------------+|                           ||                           |v                           v+-------------------+       +-------------------+|                   |       |                   ||  數據可視化模塊   |<----->|  用戶界面         ||  (ECharts/Grafana)|       |  (Web/移動端)     ||                   |       |                   |+-------------------+       +-------------------+

2.2 模塊功能

  1. 數據采集模塊

    • 通過Modbus協議與傳感器通信,采集溫度、壓力、流量等數據。
    • 支持Modbus RTU(RS485)和Modbus TCP兩種通信方式。
    • 實現數據的解析和格式化。
  2. 數據存儲模塊

    • 將采集到的數據存儲到MySQL或InfluxDB中。
    • 支持實時數據寫入和歷史數據查詢。
  3. 數據可視化模塊

    • 使用ECharts或Grafana實現數據的可視化展示。
    • 支持實時數據監控和歷史數據分析。
  4. 用戶界面

    • 提供Web或移動端界面,方便用戶查看數據和分析結果。

3. 數據采集模塊實現

在這里插入圖片描述

3.1 Modbus協議簡介

Modbus協議是一種主從式通信協議,支持以下功能碼:

  • 0x01:讀取線圈狀態
  • 0x03:讀取保持寄存器
  • 0x04:讀取輸入寄存器
  • 0x06:寫入單個保持寄存器

3.2 數據采集流程

  1. 初始化通信參數

    • 設置Modbus通信參數(波特率、數據位、停止位等)。
    • 配置傳感器地址和寄存器地址。
  2. 讀取傳感器數據

    • 使用Modbus功能碼讀取傳感器數據。
    • 解析返回的數據包,提取有效數據。
  3. 數據格式化

    • 將原始數據轉換為實際物理量(如溫度、壓力等)。
    • 添加時間戳和數據標簽。

3.3 代碼實現

from pymodbus.client.sync import ModbusSerialClient as ModbusClient# 初始化Modbus客戶端
client = ModbusClient(method='rtu', port='/dev/ttyUSB0', baudrate=9600, timeout=1)# 連接傳感器
if client.connect():print("Connected to sensor")# 讀取保持寄存器(功能碼0x03)response = client.read_holding_registers(address=0, count=2, unit=1)if not response.isError():# 解析數據raw_value = response.registers[0]temperature = raw_value / 10.0  # 假設數據需要除以10print(f"Temperature: {temperature}°C")else:print("Error reading data")# 關閉連接client.close()
else:print("Failed to connect to sensor")

4. 數據存儲模塊實現

在這里插入圖片描述

4.1 數據庫設計

  1. MySQL表結構

    CREATE TABLE sensor_data (id INT AUTO_INCREMENT PRIMARY KEY,sensor_id VARCHAR(50) NOT NULL,value FLOAT NOT NULL,timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
    );
    
  2. InfluxDB數據結構

    • Measurement:sensor_data
    • Tags:sensor_id
    • Fields:value
    • Timestamp:自動生成

4.2 數據存儲流程

  1. 連接數據庫

    • 使用Python的MySQL或InfluxDB客戶端庫連接數據庫。
  2. 寫入數據

    • 將采集到的數據插入到數據庫中。

4.3 代碼實現

MySQL版本
import mysql.connector# 連接MySQL數據庫
db = mysql.connector.connect(host="localhost",user="root",password="password",database="sensor_db"
)# 插入數據
cursor = db.cursor()
sql = "INSERT INTO sensor_data (sensor_id, value) VALUES (%s, %s)"
values = ("sensor_1", 25.3)
cursor.execute(sql, values)
db.commit()
print("Data inserted")
InfluxDB版本
from influxdb import InfluxDBClient# 連接InfluxDB
client = InfluxDBClient(host='localhost', port=8086, database='sensor_db')# 寫入數據
json_body = [{"measurement": "sensor_data","tags": {"sensor_id": "sensor_1"},"fields": {"value": 25.3}}
]
client.write_points(json_body)
print("Data written to InfluxDB")

5. 數據可視化模塊實現

在這里插入圖片描述

5.1 可視化工具選擇

  1. ECharts

    • 適用于Web端實時數據展示。
    • 支持折線圖、柱狀圖、儀表盤等多種圖表類型。
  2. Grafana

    • 適用于歷史數據分析和監控。
    • 支持多種數據源(如InfluxDB、MySQL)。

5.2 可視化實現

ECharts示例
<!DOCTYPE html>
<html>
<head><script src="https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js"></script>
</head>
<body><div id="chart" style="width: 600px; height: 400px;"></div><script>var chartDom = document.getElementById('chart');var myChart = echarts.init(chartDom);var option = {xAxis: {type: 'time'},yAxis: {type: 'value'},series: [{data: [],type: 'line'}]};myChart.setOption(option);// 模擬實時數據更新setInterval(function () {var now = new Date();var value = Math.random() * 100;option.series[0].data.push([now, value]);myChart.setOption(option);}, 1000);</script>
</body>
</html>
Grafana示例
  1. 配置InfluxDB數據源。
  2. 創建儀表盤,添加折線圖面板。
  3. 設置查詢語句:
    SELECT "value" FROM "sensor_data" WHERE "sensor_id" = 'sensor_1'
    

6. 系統部署與測試

在這里插入圖片描述

6.1 部署環境

  • 硬件:工業網關、Modbus傳感器、RS485通信模塊。
  • 軟件:Python 3.8、MySQL/InfluxDB、ECharts/Grafana。

6.2 測試流程

  1. 數據采集測試
    • 驗證傳感器數據是否正確采集。
  2. 數據存儲測試
    • 驗證數據是否成功寫入數據庫。
  3. 可視化測試
    • 驗證數據是否實時展示在圖表中。

7. 總結

在這里插入圖片描述

本項目通過Modbus協議實現了傳感器數據的采集、存儲和可視化,為工業設備的實時監控和數據分析提供了完整的解決方案。通過模塊化設計和靈活的技術選型,系統具有良好的擴展性和可維護性,能夠滿足不同場景的需求。

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

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

相關文章

Carto 無盡旅圖 for Mac v1.0.7.6 (51528)冒險解謎游戲 支持M、Intel芯片

游戲介紹 《Carto》源于英文"Cartographer"&#xff08;制圖師&#xff09;&#xff0c;卡朵不慎墜入未知世界。這里蜿蜒曲折&#xff0c;地形豐富。作為制圖師卡朵&#xff0c;你將用你自己的神秘力量&#xff0c;操縱地圖顛覆世界&#xff0c;將其翻轉、拼合。當世…

點擊劫持詳細透析

點擊劫持&#xff08;Clickjacking&#xff09;是一種前端安全攻擊手段&#xff0c;攻擊者通過視覺欺騙誘導用戶在不知情的情況下點擊隱藏的頁面元素&#xff0c;從而執行非預期的操作。以下是攻擊過程的詳細說明&#xff1a; 攻擊過程步驟 攻擊者構造惡意頁面 創建一個惡意網頁…

OpenAI--Agent SDK簡介

項目概述 OpenAI Agents SDK 是一個輕量級但功能強大的框架&#xff0c;用于構建多智能體工作流。它主要利用大語言模型&#xff08;LLM&#xff09;&#xff0c;通過配置智能體、交接、護欄和跟蹤等功能&#xff0c;實現復雜的工作流管理。以下是對其各個部分運行過程和代碼流…

【】序列操作

A. Tower 彭教授建造了 n n n 個不同高度的積木塔。其中 i i i 個塔的高度為 a i a_i ai? 。 壽教授不喜歡這些塔&#xff0c;因為它們的高度太隨意了。他決定先移除其中的 m m m 個&#xff0c;然后執行下面的一些操作&#xff08;或不執行&#xff09;&#xff1a; 選…

QwQ-32B 模型結構

QwQ-32B 是一種基于 Transformer 架構 的大型語言模型&#xff08;LLM&#xff09;&#xff0c;由阿里巴巴的 Qwen 團隊開發&#xff0c;專注于推理任務。以下是其核心結構和技術特點&#xff1a; 1. 基礎架構 Transformer 結構&#xff1a;QwQ-32B 采用多層 Transformer 架構…

【Linux】:自定義協議(應用層)

朋友們、伙計們&#xff0c;我們又見面了&#xff0c;本期來給大家帶來應用層自定義協議相關的知識點&#xff0c;如果看完之后對你有一定的啟發&#xff0c;那么請留下你的三連&#xff0c;祝大家心想事成&#xff01; C 語 言 專 欄&#xff1a;C語言&#xff1a;從入門到精通…

【C++】二叉樹和堆的鏈式結構

本篇博客給大家帶來的是用C語言來實現堆鏈式結構和二叉樹的實現&#xff01; &#x1f41f;&#x1f41f;文章專欄&#xff1a;數據結構 &#x1f680;&#x1f680;若有問題評論區下討論&#xff0c;我會及時回答 ??歡迎大家點贊、收藏、分享&#xff01; 今日思想&#xff…

鴻蒙保姆級教學

鴻蒙&#xff08;HarmonyOS&#xff09;是華為推出的一款面向全場景的分布式操作系統&#xff0c;支持手機、平板、智能穿戴、智能家居、車載設備等多種設備。鴻蒙系統的核心特點是分布式架構、一次開發多端部署和高性能。以下是從入門到大神級別的鴻蒙開發深度分析&#xff0c…

關于Docker是否被淘汰虛擬機實現連接虛擬專用網絡Ubuntu 22.04 LTS部署Harbor倉庫全流程

1.今天的第一個主題&#xff1a; 第一個主題是關于Docker是否真的被K8S棄用&#xff0c;還是可以繼續兼容&#xff0c;因為我們知道在去年的時候&#xff0c;由于不可控的原因&#xff0c;docker的所有國內鏡像源都被Ban了&#xff0c;再加上K8S自從V1.20之后&#xff0c;宣布…

八股學習-JUC java并發編程

本文僅供個人學習使用&#xff0c;參考資料&#xff1a;JMM&#xff08;Java 內存模型&#xff09;詳解 | JavaGuide 線程基礎概念 用戶線程&#xff1a;由用戶空間程序管理和調度的線程&#xff0c;運行在用戶空間。 內核線程&#xff1a;由操作系統內核管理和調度的線程&…

遺傳算法+四模型+雙向網絡!GA-CNN-BiLSTM-Attention系列四模型多變量時序預測

遺傳算法四模型雙向網絡&#xff01;GA-CNN-BiLSTM-Attention系列四模型多變量時序預測 目錄 遺傳算法四模型雙向網絡&#xff01;GA-CNN-BiLSTM-Attention系列四模型多變量時序預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 基于GA-CNN-BiLSTM-Attention、CNN-BiL…

Linux怎樣源碼安裝Nginx

1. 安裝必要的依賴 在編譯 Nginx 之前&#xff0c;你需要安裝一些必要的依賴包&#xff0c;像編譯工具和庫文件等。以 CentOS 系統為例&#xff0c;可借助yum命令來安裝&#xff1a; bash sudo yum install -y gcc pcre-devel zlib-devel openssl-devel要是使用的是 Ubuntu 系…

【入門初級篇】報表基礎操作與功能介紹

【入門初級篇】報表的基本操作與功能介紹 視頻要點 &#xff08;1&#xff09;報表組件的創建 &#xff08;2&#xff09;指標組件的使用&#xff1a;一級、二級指標操作演示 &#xff08;3&#xff09;表格屬性設置介紹 &#xff08;4&#xff09;圖表屬性設置介紹 &#xff0…

【新能源汽車“心臟”賦能:三電系統研發、測試與應用匹配的恒壓恒流源技術秘籍】

新能源汽車“心臟”賦能&#xff1a;三電系統研發、測試與應用匹配的恒壓恒流源技術秘籍 在新能源汽車蓬勃發展的浪潮中&#xff0c;三電系統&#xff08;電池、電機、電控&#xff09;無疑是其核心驅動力。而恒壓源與恒流源&#xff0c;作為電源管理的關鍵要素&#xff0c;在…

在線JSON格式校驗工具站

在線JSON校驗格式化工具&#xff08;Be JSON&#xff09;在線,JSON,JSON 校驗,格式化,xml轉json 工具,在線工具,json視圖,可視化,程序,服務器,域名注冊,正則表達式,測試,在線json格式化工具,json 格式化,json格式化工具,json字符串格式化,json 在線查看器,json在線,json 在線驗…

圖片黑白處理軟件推薦

圖片黑白二值化是一款小巧實用的圖片處理軟件&#xff0c;軟件大小僅268K。 它的操作極其簡單&#xff0c;用戶只需將需要處理的圖片直接拖入軟件&#xff0c;就能實現圖片漂白效果。 從原圖和處理后的圖片對比來看&#xff0c;效果顯著。這種圖片漂白處理在打印時能節省墨水&a…

【AI知識】常見的優化器及其原理:梯度下降、動量梯度下降、AdaGrad、RMSProp、Adam、AdamW

常見的優化器 梯度下降&#xff08;Gradient Descent, GD&#xff09;局部最小值、全局最小值和鞍點凸函數和非凸函數動量梯度下降&#xff08;Momentum&#xff09;自適應學習率優化器AdaGrad&#xff08;Adaptive Gradient Algorithm&#xff09;?RMSProp&#xff08;Root M…

1.5.5 掌握Scala內建控制結構 - 異常處理

本次實戰聚焦于Scala內建控制結構中的異常處理機制。通過具體案例演示了如何使用try-catch-finally結構來處理程序運行中可能出現的異常情況。在try塊中調用可能拋出異常的方法&#xff0c;catch塊則根據不同異常類型進行捕獲并處理&#xff0c;finally塊則無論是否發生異常都會…

信息系統運行管理員教程4--信息系統軟件運維

第四章 信息系統軟件運維 信息系統軟件是信息系統運行的核心&#xff0c;其運維的目的是保證信息系統軟件能正常而可靠地運行&#xff0c;并能使系統不斷得到改善和提高&#xff0c;以充分發揮作用。 第1節 信息系統軟件運維概述 1.信息系統軟件運維的概念 信息系統軟件運維…

以光盤讀寫系統演示面向對象設計的原則與方法

面向對象設計&#xff08;OOD&#xff09;是軟件開發中的核心方法&#xff0c;強調通過對象、類、繼承、封裝和多態等概念來構建系統。以下是面向對象設計的原則、方法及常用技術手段&#xff1a; 一、面向對象設計原則&#xff08;SOLID原則&#xff09; 單一職責原則&#x…