《C#上位機開發從門外到門內》2-4:Modbus協議

在這里插入圖片描述

文章目錄

  • 一、引言
  • 二、Modbus協議概述
    • 2.1 Modbus協議的起源與發展
    • 2.2 Modbus協議的基本特點
    • 2.3 應用領域
  • 三、Modbus通信原理詳解
    • 3.1 Modbus RTU原理
      • 3.1.1 數據幀結構
      • 3.1.2 數據傳輸與時序
      • 3.1.3 錯誤檢測
    • 3.2 Modbus TCP原理
      • 3.2.1 數據封裝
      • 3.2.2 通信機制
      • 3.2.3 與RTU模式的區別
  • 四、Modbus數據模型與寄存器、線圈
    • 4.1 線圈(Coils)與離散輸入(Discrete Inputs)
    • 4.2 寄存器
    • 4.3 功能碼解析
  • 五、讀寫寄存器/線圈操作解析
    • 5.1 讀操作原理
      • 5.1.1 讀寄存器
      • 5.1.2 讀線圈和離散輸入
    • 5.2 寫操作原理
      • 5.2.1 寫單個線圈/寄存器
      • 5.2.2 寫多個線圈/寄存器
    • 5.3 示例:讀寫操作的數據幀
      • 5.3.1 讀取保持寄存器
      • 5.3.2 寫單個寄存器
  • 六、實現Modbus主站上位機
    • 6.1 硬件與平臺選擇
    • 6.2 軟件架構設計
    • 6.3 開發語言與工具選擇
    • 6.4 驅動與中間件設計
  • 七、調試、測試與優化策略
    • 7.1 數據校驗與異常處理
    • 7.2 仿真測試與現場調試
    • 7.3 性能優化
  • 八、典型應用案例與實踐
    • 8.1 工業自動化監控系統
    • 8.2 智能樓宇與能源管理
  • 九、未來發展與總結
    • 9.1 Modbus協議的未來趨勢
    • 9.2 總結

在這里插入圖片描述

一、引言

在工業自動化、過程控制以及分布式監控系統中,數據的實時傳輸與可靠通信至關重要。作為工業領域中應用最為廣泛的通信協議之一,Modbus協議憑借其簡單、靈活和高效的特點,被廣泛用于PLC、傳感器、儀表及各類現場設備之間的數據交互。Modbus協議既有基于串行通信的RTU格式,也有基于以太網的TCP/IP格式,不同的傳輸方式滿足了不同應用場景下的需求。本文將從Modbus協議的基本原理入手,詳細解析Modbus RTU與Modbus TCP的數據傳輸機制、寄存器和線圈讀寫操作,并重點介紹如何實現Modbus主站上位機,包括硬件選擇、驅動設計、軟件開發及調試優化策略,旨在幫助讀者全面掌握Modbus協議的核心技術及實現方法。


在這里插入圖片描述

二、Modbus協議概述

2.1 Modbus協議的起源與發展

Modbus協議最早由Modicon(現施耐德電氣旗下品牌)于1979年推出,作為一種簡單而高效的主從通信協議,它被廣泛應用于PLC之間的控制和數據傳輸。隨著工業自動化和分布式控制系統的發展,Modbus協議不斷演進,逐漸從最初的串行通信標準(RTU/ASCII)擴展到基于以太網的Modbus TCP,使得其應用領域從傳統的工業現場拓展到了現代智能制造、物聯網和遠程監控等更廣泛的領域。
在這里插入圖片描述

2.2 Modbus協議的基本特點

Modbus協議具有以下幾個顯著特點:

  • 簡單易用: 協議本身結構簡單、實現成本低,無需復雜的握手過程;
  • 主從架構: 采用單主多從的通信方式,主站負責輪詢從站,從站在接收到命令后返回相應數據;
  • 靈活性強: 支持多種數據類型傳輸,包括線圈、離散輸入、保持寄存器和輸入寄存器;
  • 高可靠性: 通過CRC校驗(RTU格式)或TCP/IP自帶的錯誤檢測機制,確保數據傳輸的正確性;
  • 廣泛兼容: 由于其開放性和標準化,眾多廠商的設備均支持Modbus協議,便于系統集成和互聯互通。

2.3 應用領域

Modbus協議廣泛應用于:

  • 工業自動化與控制系統
  • 過程控制與監測系統
  • 能源管理與配電系統
  • 智能建筑與環境監控
  • 數據采集與遠程監控系統

三、Modbus通信原理詳解

Modbus協議主要分為兩種傳輸方式:Modbus RTUModbus TCP。兩者在數據封裝、傳輸媒介以及錯誤檢測機制上存在差異,但都遵循主從通信的基本原理。
在這里插入圖片描述

3.1 Modbus RTU原理

3.1.1 數據幀結構

Modbus RTU采用二進制格式進行數據傳輸,其數據幀通常包含以下幾個部分:

  • 地址域(Address): 1個字節,用于標識從站地址(范圍1~247);
  • 功能碼(Function Code): 1個字節,指示主站請求的操作類型(如讀/寫寄存器或線圈);
  • 數據域(Data): 可變長度,包含具體操作所需的地址、數據數量、寫入數據等信息;
  • CRC校驗(CRC Check): 2個字節,采用循環冗余校驗算法對數據進行校驗,以確保數據傳輸的完整性。

3.1.2 數據傳輸與時序

在RTU模式下,數據通過串行總線(RS-232/RS-485)傳輸。傳輸過程中,各個字節之間必須保持一定的間隔(通常為3.5個字符時間),以便接收設備能夠正確識別數據幀的開始和結束。主站首先發送命令數據幀,從站在收到后解析數據,并根據功能碼返回相應的響應數據幀。

3.1.3 錯誤檢測

Modbus RTU的數據幀末尾包含CRC校驗碼,通過預先設定的算法計算整個數據幀的校驗值,接收設備在接收數據后同樣進行CRC校驗,比對結果一致則認為數據無誤,否則丟棄該數據幀并可能觸發錯誤響應。

3.2 Modbus TCP原理

3.2.1 數據封裝

與RTU模式不同,Modbus TCP采用以太網作為傳輸介質,其數據幀封裝在TCP/IP數據包中。Modbus TCP數據幀由以下幾部分組成:

  • MBAP頭(Modbus Application Protocol Header): 固定7字節,包括事務標識符、協議標識符、數據長度以及單元標識符;
  • 功能碼與數據域: 與RTU模式類似,包含功能碼和相應數據內容,但不再需要CRC校驗,因為TCP/IP協議層自帶錯誤檢測機制。

3.2.2 通信機制

Modbus TCP基于面向連接的TCP協議進行數據傳輸,主站與從站之間通過建立TCP連接進行通信。建立連接后,主站發送封裝好的Modbus請求,目標從站在收到請求后解封裝MBAP頭并處理請求,最后返回響應數據。由于以太網通信的高速特性和TCP協議的可靠性保證,Modbus TCP在數據傳輸速度和穩定性上具有明顯優勢。

3.2.3 與RTU模式的區別

  • 傳輸介質: RTU模式基于串行總線,適用于近距離工業現場;而TCP模式利用以太網,支持長距離和遠程通信。
  • 數據封裝: RTU模式使用二進制幀和CRC校驗,而TCP模式則使用MBAP頭和TCP/IP自帶的校驗機制。
  • 網絡架構: Modbus TCP支持在局域網甚至互聯網內多主機通信,擴展性更強。

四、Modbus數據模型與寄存器、線圈

在這里插入圖片描述

Modbus協議的數據模型是其核心,主要包括以下幾種數據對象:

4.1 線圈(Coils)與離散輸入(Discrete Inputs)

  • 線圈(Coils): 用于表示開關量輸出,數據類型為單個位(0或1)。主站可通過功能碼對線圈進行讀寫操作。
  • 離散輸入(Discrete Inputs): 表示開關量輸入,只能讀取,不允許寫入,通常用于監測狀態。

4.2 寄存器

  • 保持寄存器(Holding Registers): 16位寄存器,用于存儲過程數據、設定值等,支持讀寫操作;
  • 輸入寄存器(Input Registers): 同樣為16位,只讀,用于傳感器采集數據等實時信息。

4.3 功能碼解析

Modbus協議規定了多種功能碼,每種功能碼對應一種具體操作。例如:

  • 功能碼01(讀線圈狀態): 用于讀取從站輸出狀態;
  • 功能碼02(讀離散輸入): 用于讀取輸入狀態;
  • 功能碼03(讀保持寄存器): 用于讀取保持寄存器數據;
  • 功能碼04(讀輸入寄存器): 用于讀取輸入寄存器數據;
  • 功能碼05(寫單個線圈): 用于寫入單個線圈狀態;
  • 功能碼06(寫單個寄存器): 用于寫入單個保持寄存器;
  • 功能碼15(寫多個線圈): 用于同時寫入多個線圈狀態;
  • 功能碼16(寫多個寄存器): 用于同時寫入多個保持寄存器數據。

每個功能碼都有相應的數據格式要求和錯誤響應機制。當主站請求的操作發生錯誤時,從站會返回異常響應(如功能碼加上偏移值0x80),并在數據域中返回錯誤碼,提示出錯原因。


五、讀寫寄存器/線圈操作解析

在這里插入圖片描述

5.1 讀操作原理

5.1.1 讀寄存器

在Modbus中,讀取寄存器通常采用功能碼03(讀保持寄存器)和04(讀輸入寄存器)。主站發送請求時需要指定:

  • 起始寄存器地址:標識從哪一地址開始讀取;
  • 寄存器數量:說明需要讀取的數據個數。

從站在收到請求后,依次將所需寄存器的數據打包返回。返回的數據中,每個寄存器占用2個字節,數據排列順序按照大端或小端格式由雙方約定。

5.1.2 讀線圈和離散輸入

類似地,功能碼01和02用于讀取線圈和離散輸入的狀態。主站同樣需要指定起始地址和讀取數量,從站將多個二進制位打包成字節返回,通常最高位或最低位依照協議規定代表第一個線圈或離散輸入。

5.2 寫操作原理

5.2.1 寫單個線圈/寄存器

  • 寫單個線圈(功能碼05): 主站發送寫入請求時,指定線圈地址及要寫入的狀態(0或1),從站在執行完畢后返回回顯數據;
  • 寫單個寄存器(功能碼06): 主站指定寄存器地址和寫入的16位數據,從站執行后返回寫入的數據確認。

5.2.2 寫多個線圈/寄存器

  • 寫多個線圈(功能碼15): 主站請求中需明確寫入起始地址、寫入數量及后續的數據字節(每個線圈用1位表示,多余部分填充),從站返回寫入起始地址和數量確認;
  • 寫多個寄存器(功能碼16): 請求中包含起始地址、寄存器數量和后續每個寄存器的2字節數據,從站返回寫入的起始地址和數量。

在寫操作中,從站在收到請求后,會先驗證請求參數(如地址范圍、數據長度是否合理),若檢測到異常則返回異常響應,異常碼根據錯誤原因不同而各異。

5.3 示例:讀寫操作的數據幀

以Modbus RTU模式為例,下面展示兩個常見操作的數據幀示例:

5.3.1 讀取保持寄存器

假設主站需要讀取從站地址為05,從地址0x0010開始的3個保持寄存器,數據幀示例如下:

  • 地址域:0x05
  • 功能碼:0x03
  • 數據域:起始地址0x00 0x10,數量0x00 0x03
  • CRC校驗:由發送端根據前面數據計算出2字節CRC

從站返回的數據幀格式:

  • 地址域:0x05
  • 功能碼:0x03
  • 字節計數:0x06(3個寄存器,每個2字節)
  • 數據:寄存器內容共6字節
  • CRC校驗

5.3.2 寫單個寄存器

假設主站需要寫入從站地址為03,寫入保持寄存器地址0x0020,數據0x1234,則數據幀為:

  • 地址域:0x03
  • 功能碼:0x06
  • 數據域:寄存器地址0x00 0x20,寫入數據0x12 0x34
  • CRC校驗:2字節CRC

從站返回的回顯數據與請求完全一致,表示操作成功。


六、實現Modbus主站上位機

在這里插入圖片描述

作為Modbus系統中的“控制中心”,Modbus主站上位機負責發起數據請求、解析從站返回的數據,并將采集到的數據進行集中處理、顯示和存儲。下面介紹實現Modbus主站上位機的關鍵步驟和技術要點。

6.1 硬件與平臺選擇

在實現Modbus主站時,常見的平臺包括:

  • 工業PC或嵌入式Linux系統: 適用于需要連接多種設備并運行復雜上層應用的場合;
  • Windows系統: 借助Modbus庫及驅動,也可以實現工業監控軟件;
  • 單片機或嵌入式系統: 在簡單的控制系統中也可充當Modbus主站,但通常需要額外的通信接口擴展(如RS-485轉USB模塊)。

硬件平臺應具備穩定的串口或以太網接口,并考慮系統抗干擾能力、實時性及擴展性。

6.2 軟件架構設計

實現Modbus主站上位機通常包括以下幾個層次:

  • 通信底層: 負責串口或以太網接口的初始化、數據發送與接收。對于Modbus RTU,通常采用串口驅動和RS-485收發器;對于Modbus TCP,則利用Socket編程建立TCP連接。
  • 協議解析層: 根據Modbus協議格式,對接收到的數據進行幀拆解、CRC校驗及數據提取,同時將上層請求封裝成對應的數據幀發送出去。
  • 應用層: 實現具體的數據處理邏輯,如周期性輪詢、報警處理、數據記錄及用戶界面交互。上位機常通過圖形化界面實時顯示設備狀態,并支持數據日志和遠程控制功能。

6.3 開發語言與工具選擇

常用的開發語言包括C/C++、C#、Java以及Python。以Python為例,可以利用pymodbus庫快速搭建Modbus主站;而在C/C++環境下,通常需要使用串口/Socket API配合現成的Modbus庫(如libmodbus)來完成開發。下面給出一個簡單的Python示例代碼,展示如何通過Modbus TCP與從站通信:

from pymodbus.client.sync import ModbusTcpClient# 建立Modbus TCP連接
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()# 讀取保持寄存器,從地址0x0010開始讀取3個寄存器
response = client.read_holding_registers(16, 3, unit=1)
if not response.isError():print("Holding Registers:", response.registers)
else:print("Error reading registers")# 寫單個寄存器,寫入地址0x0020,數值0x1234
write_response = client.write_register(32, 0x1234, unit=1)
if not write_response.isError():print("Write successful")
else:print("Write error")client.close()

該示例展示了如何建立Modbus TCP連接、讀取和寫入寄存器。實際開發中,還需增加異常處理、超時控制及日志記錄等機制。

6.4 驅動與中間件設計

對于基于RTU的Modbus主站,軟件需直接操作串口,通常包括以下步驟:

  • 串口初始化: 設置波特率、校驗位、停止位及數據位;
  • 數據發送與接收: 利用中斷或輪詢方式接收串口數據,并將接收到的數據按照Modbus幀格式進行解析;
  • CRC校驗: 每次數據發送前計算CRC,接收時校驗CRC以確保數據完整性;
  • 狀態管理: 設計狀態機來處理不同通信狀態,如等待、超時、異常重傳等。

基于TCP的Modbus主站則需借助Socket編程,建立可靠的TCP連接后進行數據傳輸,通常利用線程或異步IO技術實現高效數據處理。


七、調試、測試與優化策略

在這里插入圖片描述

在開發Modbus主站上位機的過程中,調試與測試至關重要。以下是幾條常見的調試與優化策略:

7.1 數據校驗與異常處理

  • CRC校驗: 在RTU模式下,務必驗證每個數據幀的CRC值,確保傳輸過程中無誤;
  • 超時機制: 設置合理的超時閾值,防止因通信故障導致系統卡死;
  • 異常響應處理: 針對從站返回的異常響應碼,設計詳細的錯誤日志記錄,并適當進行重傳處理。

7.2 仿真測試與現場調試

  • 仿真工具: 利用Modbus仿真軟件模擬從站響應,提前驗證主站通信邏輯;
  • 現場調試: 利用邏輯分析儀、示波器等硬件工具捕捉實際通信波形,檢查信號質量和時序問題;
  • 參數調整: 根據現場噪聲、通信距離等因素,適當調整波特率、串口配置及超時設置。

7.3 性能優化

  • 異步與多線程: 在數據量大、響應時間要求高的應用中,采用異步IO或多線程設計,提高通信效率;
  • 緩存與隊列機制: 合理設置數據緩存和隊列,防止數據丟失或處理延遲;
  • 日志記錄與監控: 實時記錄通信日志,建立監控機制,便于后期優化和故障排查。

八、典型應用案例與實踐

在這里插入圖片描述

為了更好地理解Modbus主站上位機的實現,下面介紹兩個典型的應用案例:

8.1 工業自動化監控系統

在一套大型自動化生產線中,多個PLC和傳感器通過Modbus RTU方式接入中央上位機。上位機通過串口和RS-485總線輪詢各個從站設備,實時獲取生產數據、設備狀態和報警信息。系統軟件中:

  • 數據解析模塊 根據功能碼和數據幀格式提取溫度、壓力、轉速等關鍵數據;
  • 界面顯示模塊 采用圖形化界面展示實時數據,并支持歷史數據查詢和趨勢分析;
  • 報警處理模塊 根據異常數據觸發報警,及時通知維護人員采取措施。

8.2 智能樓宇與能源管理

在智能樓宇系統中,電能計量儀表、空調控制器等設備通常支持Modbus TCP協議,上位機通過以太網連接多個設備,集中監控各區域能耗數據。系統特點包括:

  • 網絡通信: 利用TCP/IP協議實現跨樓宇、跨區域的數據采集;
  • 數據集中處理: 通過數據庫存儲和實時分析,對能耗數據進行統計和優化控制;
  • 遠程管理: 管理人員可以通過遠程上位機實時監控設備狀態、調整控制參數,實現節能降耗。

在這些實際案例中,Modbus協議憑借其開放性、互操作性和穩定性,為各類自動化系統提供了高效的數據傳輸解決方案。


九、未來發展與總結

在這里插入圖片描述

9.1 Modbus協議的未來趨勢

隨著工業物聯網(IIoT)和智能制造的不斷發展,Modbus協議雖然歷史悠久,但依然煥發出新的生命力。未來的發展趨勢主要體現在:

  • 混合通信模式: 結合RTU和TCP的優勢,實現串行和以太網的無縫互聯;
  • 安全性提升: 隨著網絡攻擊風險的增加,未來Modbus TCP可能引入加密、認證機制,提升系統安全性;
  • 標準化與互聯互通: 隨著工業標準的統一,Modbus協議將進一步與其他工業通信標準(如PROFINET、EtherCAT等)互聯互通,實現數據共享和綜合管理;
  • 嵌入式與云平臺: 越來越多的上位機系統將嵌入于云平臺,實現遠程監控、大數據分析和智能決策。

9.2 總結

本文詳細介紹了Modbus協議的基本原理及應用實現方法,主要內容包括:

  • Modbus協議概述: 回顧了Modbus協議的發展歷史、基本特點和廣泛應用的領域;
  • RTU與TCP原理解析: 分析了Modbus RTU的幀結構、時序要求、CRC校驗,以及Modbus TCP在MBAP頭封裝、TCP/IP傳輸機制等方面的特點;
  • 寄存器與線圈讀寫: 詳細說明了Modbus數據模型中線圈、離散輸入、保持寄存器和輸入寄存器的定義,重點解析了常見的讀寫操作和功能碼;
  • 實現Modbus主站上位機: 從硬件平臺選擇、通信接口配置、驅動程序設計到上層應用開發,提供了完整的實現方案和示例代碼;
  • 調試與優化策略: 介紹了數據校驗、超時機制、仿真測試以及現場調試等關鍵技術,幫助開發人員確保系統的高效、穩定運行;
  • 典型案例分析: 通過工業自動化監控系統和智能樓宇能源管理系統的應用實例,展示了Modbus協議在實際項目中的廣泛應用和技術優勢。

通過對Modbus協議全方位的講解,讀者可以深入理解Modbus RTU和Modbus TCP的核心原理,掌握寄存器和線圈的讀寫操作細節,并獲得實現Modbus主站上位機的完整技術路線和開發經驗。無論是在初步了解Modbus協議的理論基礎,還是在具體項目中實現數據采集與設備控制,本文均提供了詳細的技術參考和實踐指導。

總之,Modbus協議以其開放、標準和高可靠性的優勢,成為工業通信領域中不可或缺的一部分。隨著技術的發展和應用場景的不斷拓展,Modbus協議將繼續演化和完善,為工業自動化、智能制造和物聯網應用提供更強大的數據通信支持與互聯互通能力。

在這里插入圖片描述

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

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

相關文章

觀成科技:?加密C2框架Platypus流量分析

一、工具介紹 Platypus 是一款支持多會話的交互式反向 Shell 管理器。在實際的滲透測試中,為了解決 Netcat/Socat 等工具在文件傳輸、多會話管理方面的不足,該工具在多會話管理的基礎上增加了在滲透測試中能更好發揮作用的功能(如:交互式 Sh…

OpenBMC:BmcWeb 處理http請求

OpenBMC:BmcWeb 讀取http請求頭-CSDN博客 介紹了,在讀取完http頭后,將調用Connection::handle處理http請求 1.Connection::handle void handle() {...req = std::make_shared<crow::Request>(parser->release(), reqEc);...req->session = userSession;accept …

MySQL事務深度解析:ACID特性、隔離級別與MVCC機制

引言 在數據庫系統中&#xff0c;?事務是保障數據一致性與完整性的核心機制。MySQL通過ACID特性、多級隔離策略和MVCC&#xff08;多版本并發控制&#xff09;實現了高性能與高可靠性的平衡。本文將從底層原理出發&#xff0c;系統解析事務的四大特性、隔離級別的實現邏輯&am…

WireShark自動抓包

背景 異常流量檢測是當前保護網絡空間安全的重要檢測方法。 對流量的研究&#xff0c;首先需要在系統中進行抓包&#xff0c;并對包進行分析。 這里對WireShark自動抓包進行簡要介紹。 操作步驟 1、選擇“捕獲”>“選項”。 2、在Input下&#xff0c;選擇要抓包的網絡接…

Android 自定義View之底部導航欄

文章目錄 Android 自定義View之底部導航欄概述代碼定義TabIndex定義Tab定義TabView定義NavigationBarFragmentSwitchHelper管理類使用 源碼下載 Android 自定義View之底部導航欄 概述 封裝一個通用的底部導航欄控件。 代碼 定義TabIndex Retention(AnnotationRetention.SOU…

西門子S7-1200 PLC遠程調試技術方案(巨控GRM532模塊)

三步快速實現遠程調試 硬件部署 準備西門子S7-1200 PLC、巨控GRM552YW-C模塊及編程電腦。GRM552YW-C通過網口與PLC連接&#xff0c;支持4G/5G/Wi-Fi/有線網絡接入&#xff0c;無需復雜布線。 軟件配置 安裝GVCOM3配置軟件&#xff0c;注冊模塊&#xff08;輸入唯一序列號與密…

上下文學習思維鏈COTPrompt工程

一、上下文學習 上下文學習強調在學習過程中考慮問題所處的上下文環境。 1.1 上下文學習的分類 零樣本&#xff08;Zero-Shot&#xff09;上下文學習單樣本&#xff08;One-Shot&#xff09;上下文學習少樣本&#xff08;Few-Shot&#xff09;上下文學習 1.2 示例選擇方法 …

node.js-WebScoket心跳機制(服務器定時發送數據,檢測連接狀態,重連)

1.WebScoket心跳機制是&#xff1f; 基于上一篇文章&#xff0c;WebScoket在瀏覽器和服務器間完成一次握手&#xff0c;兩者間創建持久性連接&#xff0c;并進行雙向數據連接。node.js-node.js作為服務器&#xff0c;前端使用WebSocket&#xff08;單個TCP連接上進行全雙工通訊…

若依RuoYi-Cloud-Plus微服務版(完整版)前后端部署

一.目標 在瀏覽器上成功登錄進入 二.源碼下載 后端源碼&#xff1a;前往Gitee下載頁面(https://gitee.com/dromara/RuoYi-Cloud-Plus)下載解壓到工作目錄。 前端源碼&#xff1a; 前往Gitee下載頁面(https://gitee.com/JavaLionLi/plus-ui)下載解壓到工作目錄。 文檔地址&a…

Nginx 多協議代理功能(Nginx Multi Protocol Proxy Function)

前言 Nginx 作為高性能的反向代理和負載均衡工具&#xff0c;廣泛應用于 HTTP 和 HTTPS 協議的代理。但你知道嗎&#xff1f;Nginx 還可以代理其他協議&#xff0c;比如 TCP 和 UDP&#xff01;這些功能讓它在多協議支持方面表現出色&#xff0c;可以用于數據庫代理、流媒體服…

MistralAI挑戰DeepSeek:開源模型能否顛覆行業巨頭

在2025年&#xff0c;世界移動通信大會的展臺上&#xff0c;MistralAI的創始人ArthurMensch對著鏡頭&#xff0c;露出了溫和的笑容。不過他隨后講出的話&#xff0c;就仿佛一顆重磅炸彈&#xff0c;在AI領域引發了巨大的動蕩——他們即將推出的開源模型&#xff0c;據傳能夠超越…

代碼隨想錄第五十二天| 101.孤島的總面積 102.沉沒孤島 103.水流問題 104.建造最大島嶼

孤島的總面積 題目描述 給定一個由 1&#xff08;陸地&#xff09;和 0&#xff08;水&#xff09;組成的矩陣&#xff0c;島嶼指的是由水平或垂直方向上相鄰的陸地單元格組成的區域&#xff0c;且完全被水域單元格包圍。孤島是那些位于矩陣內部、所有單元格都不接觸邊緣的島…

八叉樹地圖的原理與實現

八叉樹與體素圖 八叉樹地圖 八叉樹地圖是可變分辨率的三維柵格地圖&#xff0c;可以自由調整分辨率&#xff0c;如下所示&#xff1a; 根據點云的數量或密度決定每個葉子方塊是否被占據 體素圖 體素就是固定分辨率的三維柵格地圖&#xff0c;如下所示&#xff1a; 根據點云…

最節省服務器,手搓電子證書查詢系統

用戶預算150元&#xff0c;想要一個最簡單證書查詢系統。前臺能查詢證書、后臺管理員能登錄能修改密碼&#xff0c;證書能夠手動輸入修改刪除、批量導入導出刪除數據、查詢搜索。能夠兼容蘋果、安卓、PC三端瀏覽器&#xff0c;最后幫忙部署到云服務器上。 用戶預算不多&#xf…

什么是全棧?

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點下班 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 &#x1f4c3;文章前言 &#x1f537;文章均為學習工…

作物移栽機器人的結構設計的介紹

作物移栽機器人的結構設計是一個復雜的機械與電子結合的系統工程&#xff0c;單純用代碼來實現整個結構設計是不現實的&#xff0c;因為結構設計更多涉及到機械結構、硬件選型等物理層面的內容。不過&#xff0c;我們可以通過代碼來模擬作物移栽機器人的部分功能&#xff0c;例…

【文獻閱讀】SPRec:用自我博弈打破大語言模型推薦的“同質化”困境

&#x1f4dc;研究背景 在如今的信息洪流中&#xff0c;推薦系統已經成為了我們生活中的“貼心小助手”&#xff0c;無論是看電影、聽音樂還是購物&#xff0c;推薦系統都在努力為我們提供個性化的內容。但這些看似貼心的推薦背后&#xff0c;其實隱藏著一個嚴重的問題——同質…

使用1Panel一鍵搭建WordPress網站的詳細教程(全)

嘿&#xff0c;各位想搭建自己網站的朋友們&#xff01;今天我要跟大家分享我用1Panel搭建WordPress網站的全過程。說實話&#xff0c;我之前對服務器運維一竅不通&#xff0c;但通過這次嘗試&#xff0c;我發現原來建站可以這么簡單&#xff01;下面是我的親身經歷和一些小技巧…

本地fake server,

C# 制作的系統級tcp 重定向&#xff0c;整個系統只要有訪問指定url&#xff0c;返回自定義內容到訪問端。不局限在瀏覽器單一方面。 再者請理解這個圖的含金量&#xff0c;服務器down機都可以模擬。 用途那就太多了&#xff0c;當然很多用途都不正當。嘿嘿 如果你很想要源代…

設計模式之美

UML建模 統一建模語言&#xff08;UML&#xff09;是用來設計軟件的可視化建模語言。它的語言特點是簡單 統一 圖形化 能表達軟件設計中的動態與靜態信息。 UML的分類 動態結構圖&#xff1a; 類圖 對象圖 組件圖 部署圖 動態行為圖&#xff1a; 狀態圖 活動圖 時序圖 協作…