Modbus TCP 進階:基于以太網的遠程設備控制(一)

Modbus TCP 基礎回顧

**

在工業自動化領域,Modbus TCP 是一種廣泛應用的通信協議,它基于以太網,為設備之間的通信搭建了橋梁,實現了遠程設備的高效控制。Modbus TCP 是 Modbus 協議家族中的一員,它在傳統 Modbus 協議的基礎上,結合了 TCP/IP 協議的優勢,具備高速、穩定的數據傳輸能力。

Modbus TCP 采用客戶端 - 服務器模型進行通信。客戶端(主站)負責發起請求,比如讀取從設備的寄存器數據,或者向從設備寫入控制指令;服務器(從站)則響應客戶端的請求,執行相應的操作,并返回結果 。這種模型簡單而清晰,使得設備之間的通信有條不紊地進行。在實際應用中,一個客戶端可以與多個服務器進行通信,實現對不同設備的集中管理和控制。

在 Modbus TCP 通信中,數據是以特定的幀結構進行傳輸的。幀結構包含了 MBAP(Modbus 應用協議頭部)和 PDU(協議數據單元)兩部分。MBAP 頭部包含事務標識符(用于匹配請求和響應)、協議標識符(固定為 0,表示 Modbus 協議)、長度字段(指示后續數據的字節數)和單元標識符(標識從站設備)。PDU 則包含功能碼和數據字段,功能碼定義了具體的操作類型,比如讀保持寄存器、寫單個線圈等,數據字段則攜帶了具體的操作數據 。例如,當客戶端要讀取從站的某個寄存器數據時,請求幀中的功能碼會設置為讀寄存器的功能碼,數據字段會包含要讀取的寄存器起始地址和數量等信息。

Modbus TCP 使用 TCP 端口 502 進行通信,這是一個被廣泛認可和使用的默認端口 。通過以太網連接,設備之間可以實現長距離、高速率的數據傳輸,突破了傳統串口通信的距離和速度限制。比如在大型工廠中,分布在不同區域的設備可以通過 Modbus TCP 連接到同一個網絡,實現數據的實時交互和協同工作。

基于以太網的遠程控制原理剖析

(一)以太網通信基石

以太網是一種廣泛應用的局域網技術,它為 Modbus TCP 提供了通信的物理基礎。以太網的核心原理是通過物理層和數據鏈路層的協同工作,實現設備之間的數據傳輸。在物理層,以太網定義了多種傳輸介質,如雙絞線、光纖等,不同的傳輸介質對應著不同的傳輸速率和傳輸距離 。例如,常見的超五類雙絞線(Cat5e)通常支持 100Mbps 的傳輸速率,適用于一般的辦公網絡;而光纖則能夠提供更高的傳輸速率,如千兆以太網(1Gbps)甚至萬兆以太網(10Gbps),常用于數據中心等對帶寬要求較高的場景。

在數據鏈路層,以太網采用了 MAC(媒體訪問控制)地址來唯一標識網絡中的設備 。MAC 地址是一個 48 位的二進制數,通常以十六進制表示,如 “00:11:22:33:44:55”。當設備發送數據時,數據會被封裝成幀,幀中包含了源 MAC 地址和目標 MAC 地址,這樣數據就能準確地傳輸到目標設備。以太網還使用了 CSMA/CD(載波監聽多路訪問 / 沖突檢測)機制(早期以太網,現在全雙工模式下基本避免沖突)來解決多個設備同時訪問傳輸介質時可能產生的沖突問題 。當一個設備要發送數據時,它會先監聽傳輸介質,如果介質空閑,就開始發送數據;在發送數據的同時,設備還會檢測是否發生沖突,如果檢測到沖突,就會停止發送,并發送一個干擾信號,通知其他設備發生了沖突,然后等待一個隨機的時間后再次嘗試發送。

在工業自動化中,以太網的穩定性和高速率為遠程設備控制提供了堅實的通信基礎。它能夠確保大量的設備數據,如傳感器數據、設備狀態信息等,能夠快速、準確地傳輸到控制中心,為實時監控和控制提供了有力支持 。例如,在汽車制造工廠中,生產線上分布著大量的機器人、傳感器和控制器,它們通過以太網連接在一起,實現了生產過程的自動化控制和監控。一旦某個設備出現故障,相關的故障信息能夠迅速通過以太網傳輸到監控中心,工作人員可以及時采取措施進行處理,從而提高了生產效率和設備的可靠性。

(二)Modbus TCP 協議深度解析

1. 協議架構

Modbus TCP 基于 TCP/IP 協議棧,它位于應用層,利用了 TCP 協議的可靠傳輸特性和 IP 協議的網絡尋址功能 。在 TCP/IP 協議棧中,網絡層的 IP 協議負責將數據包從源地址傳輸到目標地址,它通過路由選擇算法確定數據包的傳輸路徑;傳輸層的 TCP 協議則提供了可靠的、面向連接的通信服務,它通過三次握手建立連接,在數據傳輸過程中進行流量控制和差錯校驗,確保數據的完整性和順序性。

Modbus TCP 采用客戶端 - 服務器的通信模式 。客戶端是發起通信請求的設備,它通常是上位機,如監控計算機、SCADA( Supervisory Control And Data Acquisition,數據采集與監視控制系統)系統等;服務器是響應客戶端請求的設備,一般是現場的工業設備,如 PLC(可編程邏輯控制器)、智能儀表、傳感器等。當客戶端要與服務器進行通信時,首先會通過 TCP 協議與服務器建立連接,連接建立成功后,客戶端會向服務器發送請求報文,服務器接收到請求后,會解析請求報文,執行相應的操作,并返回響應報文給客戶端 。例如,客戶端向服務器發送讀取寄存器數據的請求,服務器在接收到請求后,會從相應的寄存器中讀取數據,然后將數據封裝在響應報文中返回給客戶端。

2. 數據傳輸與功能碼

在 Modbus TCP 中,數據是以特定的幀格式進行傳輸的 。幀由 MBAP 頭部和 PDU 組成。MBAP 頭部包含事務標識符、協議標識符、長度字段和單元標識符。事務標識符由客戶端生成,用于匹配請求和響應,確保客戶端能夠正確識別接收到的響應是對應哪個請求的;協議標識符固定為 0,表示 Modbus 協議;長度字段指示后續數據(包括單元標識符和 PDU)的字節數;單元標識符用于標識從站設備,如果是廣播通信,單元標識符通常設置為 0xFF 。

PDU 包含功能碼和數據字段。功能碼是 PDU 的關鍵部分,它定義了客戶端請求的具體操作類型 。常見的功能碼有:

  • 讀線圈(功能碼 01):用于讀取從站設備的線圈狀態(開關量),例如可以讀取某個閥門的開 / 關狀態 。假設客戶端要讀取從站地址為 1 的設備的第 10 個線圈狀態,請求幀中的功能碼為 01,數據字段中會包含起始線圈地址(如 0x0009,因為地址從 0 開始)和讀取的線圈數量(0x0001) 。
  • 讀離散輸入(功能碼 02):用于讀取從站設備的離散輸入狀態,離散輸入通常是外部的開關信號,如按鈕的按下 / 松開狀態 。例如,客戶端讀取從站地址為 2 的設備的前 10 個離散輸入狀態,功能碼為 02,數據字段包含起始離散輸入地址(0x0000)和讀取數量(0x000A) 。
  • 讀保持寄存器(功能碼 03):用于讀取從站設備的保持寄存器數據,保持寄存器可以存儲各種類型的數據,如溫度、壓力、流量等測量值 。比如,客戶端讀取從站地址為 3 的設備的從地址 0 開始的 5 個保持寄存器數據,功能碼為 03,數據字段包含起始寄存器地址(0x0000)和讀取數量(0x0005) 。
  • 寫單個線圈(功能碼 05):用于向從站設備的單個線圈寫入狀態,可實現對設備的控制,如控制電機的啟動 / 停止 。若客戶端要將從站地址為 4 的設備的第 5 個線圈設置為閉合狀態,功能碼為 05,數據字段包含線圈地址(0x0004)和寫入值(0xFF00 表示閉合,0x0000 表示斷開) 。
  • 寫單個保持寄存器(功能碼 06):用于向從站設備的單個保持寄存器寫入數據,例如設置設備的某個參數值 。例如,客戶端將從站地址為 5 的設備的第 8 個保持寄存器寫入值為 100 的數據,功能碼為 06,數據字段包含寄存器地址(0x0007)和寫入數據(0x0064) 。

Modbus TCP 進階技術要點

(一)通信效率優化秘籍

1. 網絡延遲與吞吐量優化策略

網絡延遲和吞吐量是影響 Modbus TCP 通信效率的關鍵因素 。網絡延遲指的是數據包從發送端傳輸到接收端所經歷的時間,它會導致數據傳輸的延遲,影響設備之間的實時交互。例如,在遠程監控系統中,如果網絡延遲過高,監控畫面可能會出現卡頓,操作人員無法及時獲取設備的實時狀態,從而影響對設備的控制和管理 。吞吐量則是指單位時間內成功傳輸的數據量,吞吐量較低會限制數據的傳輸速度,導致大量數據積壓,降低系統的整體性能 。

為了減少網絡延遲,提高吞吐量,可以采取以下方法:

  • 選用優質網絡設備:使用高性能的交換機、路由器等網絡設備,它們具備更快的處理速度和更大的緩存空間,能夠快速轉發數據包,減少數據包的排隊等待時間,從而降低網絡延遲 。比如,企業級的千兆交換機相比普通的百兆交換機,能夠提供更高的帶寬和更低的延遲,更適合工業自動化場景中大量數據的快速傳輸 。
  • 優化網絡拓撲:合理設計網絡拓撲結構,減少網絡中的中轉節點和不必要的網絡鏈路,縮短數據傳輸的物理路徑,降低信號衰減和干擾,進而減少網絡延遲 。例如,采用星型拓撲結構,所有設備都連接到中心交換機,這種結構簡單清晰,便于管理和維護,能夠有效提高網絡的可靠性和傳輸效率 。
  • 實施流量控制:通過設置合適的流量控制策略,如令牌桶算法、漏桶算法等,合理分配網絡帶寬,避免網絡擁塞,確保數據包能夠按照一定的速率發送和接收,提高吞吐量 。比如,當網絡中的數據流量過大時,流量控制機制可以限制某些設備的發送速率,優先保證關鍵設備的數據傳輸,從而維持網絡的穩定運行 。
  • 使用高速鏈路:選擇高速的網絡傳輸介質,如光纖,光纖具有帶寬高、損耗低、抗干擾能力強等優點,能夠提供更高的傳輸速率和更低的延遲,滿足工業自動化對數據傳輸速度和穩定性的要求 。在一些對數據傳輸要求極高的場景,如大型數據中心、高清視頻監控系統等,光纖已經成為主流的傳輸介質 。
2. 數據封裝與傳輸優化實踐

在 Modbus TCP 通信中,數據封裝與傳輸的優化對于提高通信效率至關重要 。

  • 設置合適 MTU 大小:MTU(最大傳輸單元)是指網絡設備能夠傳輸的最大數據包大小 。如果 MTU 設置過小,數據包會被分割成多個小片段進行傳輸,增加了傳輸的開銷和延遲;如果 MTU 設置過大,可能會導致數據包在傳輸過程中因網絡鏈路的限制而無法正常傳輸,需要進行分片和重組,同樣會影響傳輸效率 。因此,需要根據網絡環境和設備性能,合理設置 MTU 大小 。一般來說,以太網的默認 MTU 值為 1500 字節,但在一些特殊情況下,如通過 VPN 連接或者網絡中存在老舊設備時,可能需要適當調整 MTU 值 。可以通過網絡測試工具,如 ping 命令,來測試不同 MTU 值下的網絡性能,找到最佳的 MTU 設置 。例如,使用命令 “ping -l [數據包大小] -f [目標 IP 地址]”,其中 “-l” 參數指定數據包大小,“-f” 參數表示不允許數據包分片,通過逐步調整數據包大小并觀察 ping 命令的響應時間和丟包率,來確定合適的 MTU 值 。
  • 啟用 TCP 窗口縮放:TCP 窗口縮放是一種提高 TCP 性能的技術,它允許在 TCP 會話中使用較大的窗口尺寸,從而提高網絡的吞吐量 。在高延遲和高帶寬的網絡環境中,啟用 TCP 窗口縮放尤為重要 。例如,在跨地區的工業自動化系統中,數據需要經過長距離的網絡傳輸,延遲較高,此時啟用 TCP 窗口縮放可以使發送方能夠一次性發送更多的數據,減少數據傳輸的往返次數,提高數據傳輸效率 。在 Linux 系統中,可以通過修改系統參數 “net.ipv4.tcp_window_scaling” 來啟用 TCP 窗口縮放,將其值設置為 1 即可 。在 Windows 系統中,可以通過修改注冊表來啟用 TCP 窗口縮放,具體方法是在注冊表中找到 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”,新建一個 DWORD 值 “TcpWindowSize”,并設置合適的值(一般建議設置為 65535) 。

(二)自定義功能碼拓展應用

1. 自定義功能碼原理

標準的 Modbus 功能碼雖然覆蓋了常見的數據讀寫、設備診斷等操作,但在實際的工業自動化應用中,由于不同設備的功能和需求各異,標準功能碼可能無法滿足所有的業務需求 。這時,自定義功能碼就發揮了重要作用 。自定義功能碼是 Modbus 協議中用于擴展標準功能碼的一種機制,它允許用戶根據特定應用需求來開發新的功能 。通過自定義功能碼,用戶可以實現一些標準功能碼無法完成的操作,如讀取特定設備的非標準寄存器數據、執行特定的設備控制算法等,從而增加了 Modbus 協議的靈活性和應用范圍 。

自定義功能碼的工作原理是在 Modbus 協議的框架內,用戶自行定義功能碼的值以及該功能碼對應的操作 。當客戶端發送包含自定義功能碼的請求時,服務器能夠識別該功能碼,并根據預先定義的規則執行相應的操作,然后將結果返回給客戶端 。例如,在一個智能工廠的設備管理系統中,為了實現對某臺特殊設備的能源消耗監測和分析,開發人員可以自定義一個功能碼,該功能碼用于讀取設備的實時能源消耗數據,并進行一些特定的計算和處理,然后將處理后的結果返回給上位機,以便管理人員進行分析和決策 。

2. 實現步驟與案例展示

以三菱 PLC 為例,介紹自定義功能碼的實現步驟 。

  • 第一步:確定需求和功能定義:明確需要實現的特殊功能,例如讀取設備的自定義狀態信息、執行特定的設備控制邏輯等 。根據功能需求,定義自定義功能碼的值,確保該值在 Modbus 協議的未使用功能碼范圍內 。假設我們要實現一個讀取三菱 PLC 特定區域內存數據的功能,自定義功能碼設置為 0x90 。
  • 第二步:編程實現功能邏輯:使用三菱 PLC 的編程軟件,如 GX Works2,編寫實現自定義功能的程序邏輯 。在程序中,根據自定義功能碼的值,編寫相應的代碼來處理請求 。例如,當接收到功能碼為 0x90 的請求時,程序會讀取特定內存區域的數據,并將數據打包成響應幀 。下面是一個簡單的示例代碼(以梯形圖語言為例):
 

// 假設自定義功能碼存儲在D100中

LD D100 = 0x90 // 判斷是否為自定義功能碼

JMP Z, NOT_CUSTOM_FUNCTION // 如果不是,跳轉到非自定義功能處理

// 自定義功能處理

// 讀取特定內存區域數據,假設數據存儲在D200 - D209

MOV D200, R0 // 將數據存儲到響應數據區

MOV D201, R1

// 依次類推,將D202 - D209的數據存儲到R2 - R9

// 構建響應幀,假設響應幀存儲在D300 - D310

MOV 0x90, D300 // 功能碼

// 將讀取的數據存儲到響應幀的相應位置

MOV R0, D301

MOV R1, D302

// 依次類推

JMP END_PROGRAM // 跳轉到程序結束

NOT_CUSTOM_FUNCTION:

// 非自定義功能處理,執行標準功能碼的操作

END_PROGRAM:

  • 第三步:配置 PLC 通信參數:確保 PLC 的網絡參數配置正確,包括 IP 地址、子網掩碼、網關等 。同時,需要設置 PLC 支持自定義功能碼的解析和處理 。在 GX Works2 中,可以在通信參數設置界面中進行相關配置,使 PLC 能夠識別并處理自定義功能碼的請求 。
  • 第四步:測試與驗證:使用 Modbus TCP 客戶端工具,如 Modbus Poll 等,向三菱 PLC 發送包含自定義功能碼的請求,驗證自定義功能是否正常工作 。在測試過程中,檢查響應數據是否正確,功能是否符合預期 。例如,使用 Modbus Poll 發送功能碼為 0x90 的請求,查看是否能夠正確讀取到 PLC 特定內存區域的數據,并與預期結果進行對比 。

實際應用案例:在一個自動化生產線中,有一臺三菱 PLC 控制著關鍵設備的運行 。為了實現對設備的精細化管理和故障預測,需要獲取設備的一些內部狀態信息,這些信息無法通過標準功能碼獲取 。通過自定義功能碼,開發人員實現了讀取設備運行時間、累計工作次數、關鍵部件溫度等信息的功能 。上位機通過發送自定義功能碼的請求,能夠實時獲取這些信息,并進行數據分析和處理 。當設備運行時間達到一定閾值或者關鍵部件溫度過高時,系統會及時發出警報,提醒維護人員進行檢查和維護,有效提高了設備的可靠性和生產效率 。

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

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

相關文章

linux魔術字定位踩內存總結

0,數據被改寫時我們需要怎么定位,我們首先需要確認數據是邏輯上被改寫還是踩內存被改寫的。 1,當數據被踩時,也就是出現數據異常時,并且可以穩定復現時,我們確認時踩固定內存時,我們可以使用魔術字定位問題。 代碼舉例查看確認。 #include <stdio.h> #include…

淺談Docker Kicks in的應用

正因為傳統部署的麻煩&#xff0c;我們希望減少整個安裝過程&#xff0c;將其簡單化&#xff0c;以下介紹兩個思路&#xff1a; 思路一&#xff1a;安裝 Docker 后安裝 Ghost&#xff0c;并且直接暴露 80 端口&#xff0c;此時所有請求由 Docker 內的 Express 服務器處理&…

【Rust + Actix Web】現代后端開發:從零構建高并發 Web 應用

目錄 項目概述環境準備項目創建與依賴配置系統架構設計核心代碼實現1. 數據庫模型 (src/models.rs)2. 應用狀態管理 (src/state.rs)3. 核心業務邏輯 (src/handlers.rs)4. 主應用入口 (src/main.rs) 高并發優化策略1. 異步處理模型2. 連接池配置優化3. 緩存策略設計 性能測試結果…

2025java面試題整理通俗易懂好記

一、Java 基礎 1. JVM 相關 Q&#xff1a;什么情況下會發生棧內存溢出&#xff1f; A&#xff1a;就像食堂打飯窗口前排隊&#xff0c;隊伍太長&#xff08;方法調用層級太深&#xff09;&#xff0c;或者每個人占的位置太大&#xff08;局部變量太多&#xff09;&#xff0c;…

內存分配算法(系統分配算法~應用常見算法)

一、內存碎片 內部碎片與外部碎片 內部碎片&#xff1a;指已分配給進程但未被實際利用的內存空間&#xff0c;屬于??已分配內存內部的浪費??。 外部碎片&#xff1a;內存中??零散分布的空閑小空間??&#xff0c;總量足夠但無法合并為大塊以滿足連續內存請求。 內部碎…

緩解停車難的城市密碼:4G地磁檢測器如何重構車位資源分配

城市停車難&#xff0c;是困擾車主和管理者的雙重痛點。尋找車位耗時耗力&#xff0c;人工計時收費易生糾紛&#xff0c;傳統管理模式效率低下。而 4G地磁檢測器 的出現&#xff0c;正悄然改變這一局面。它如同埋入城市道路的“感知神經元”&#xff0c;通過4G地磁檢測器 的精準…

【網工|查缺補漏】存儲與RAID技術①

目錄 ■存儲基礎 ▲存儲系統層次結構 ▲存儲介質選擇 ▲硬盤接口 ■傳統RAID技術 ▲RAID數據組織及存取方式 ▲RAID熱備與重構 ▲常用RAID技術 ■RAID2.0技術 ▲RAID2.0技術優勢 ■網絡存儲體系DAS/NAS/SAN ▲DAS (Direct Attached Storage) ▲FC SAN (Fiber Chan…

ESP官網的使用手冊網址

LED Control (LEDC) — Arduino-ESP32 2.0.14 documentation (readthedocs-hosted.com) 中文網站&#xff1a;紅外遙控 (RMT) - ESP32 - — ESP-IDF 編程指南 v5.4.2 文檔 (espressif.com)

網絡基礎知識與代理配置

網絡基礎知識 OSI七層模型與協議對應 OSI層功能典型協議應用層網絡服務接口&#xff0c;為應用程序提供網絡服務HTTP, HTTPS, FTP, SMTP, DNS, Telnet, SSH表示層數據格式化、代碼轉換、數據加密解密SSL/TLS, JPEG, GIF, ASCII, 壓縮算法會話層建立、管理和終止會話連接NetBI…

Windows 疑難雜癥集 - MsMpEng.exe 磁盤占用率持續高占

本系列記錄日常使用中遇到的一些問題及處理方法。系統環境為 Windows 10&#xff0c;但可能也適用于 Windows11&#xff0c;甚至也會包含部分 Windows7 等老系統環境。 有的時候感覺系統異常卡頓&#xff0c; CtrlShiftEsc 打開任務管理器&#xff0c;看到某個磁盤居然IO達到了…

《UE5_C++多人TPS完整教程》學習筆記40 ——《P41 裝備(武器)姿勢(Equipped Pose)》

本文為B站系列教學視頻 《UE5_C多人TPS完整教程》 —— 《P41 裝備&#xff08;武器&#xff09;姿勢&#xff08;Equipped Pose&#xff09;》 的學習筆記&#xff0c;該系列教學視頻為計算機工程師、程序員、游戲開發者、作家&#xff08;Engineer, Programmer, Game Develop…

【HarmonyOS】鴻蒙使用倉頡編程入門

【HarmonyOS】鴻蒙使用倉頡編程入門 一、前言 倉頡&#xff0c;是華為自研的一款面向全場景智能的新一代編程語言&#xff0c;是為鴻蒙量身打造的全場景智能應用編程語言&#xff0c;作為鴻蒙生態中的重要組成部分&#xff0c;旨在支持鴻蒙系統下的全場景應用開發 &#xff0…

2.3.1 Nginx Web服務器安全加固

文章目錄 一、試題及考試說明二、操作步驟1. 啟動Nginx服務2. 隱藏站點 Response Header 里的Web服務版本信息&#xff08;見下總圖&#xff09;3. 隱藏站點 Response Header 里的X-Powered-By 字段&#xff08;見下總圖&#xff09;4. Nginx訪問日志存放位置修改為/opt/bak/ac…

紅色背景政府當講PPT模版

政府黨建PPT模版&#xff0c;慶國慶PPT模版&#xff0c;國慶節PPT模版 紅色背景政府當講PPT模版&#xff1a;https://pan.quark.cn/s/a6f484905430

JavaScript對象(Object)常用操作

創建對象 //使用對象字面量、構造函數或者Object.create()方法來創建對象// 對象字面量 const person {name: John,age: 30,hobbies: [reading, swimming] };// 構造函數 function Car(make, model) {this.make make;this.model model; } const myCar new Car(Toyota, Cor…

Java面試寶典:基礎一

?? 1. Java跨平臺原理&#xff08;字節碼文件與JVM&#xff09; 核心機制&#xff1a; Java源程序&#xff08;.java&#xff09;編譯為與平臺無關的字節碼文件&#xff08;.class&#xff09;&#xff0c;而非直接生成機器碼。字節碼由**Java虛擬機&#xff08;JVM&#xf…

uniapp微信小程序:editor組件placeholder字體樣式修改

一、問題描述 微信小程序editor組件的placeholder字體默認為斜體字&#xff0c;官方對此沒有屬性可以設置它的樣式&#xff0c;并且直接在組件上設置樣式也是無效的。 二、解決方案 通過審查節點&#xff1a; 可以看到editor的placeholder其實是在一個偽元素上。 在頁面或者…

PhoneRescue 4.3綠色版!解決iPhone數據丟失、系統崩潰等場景

目錄 一、引言二、軟件介紹1. 研發背景與定位2. 兼容性與技術優勢 三、功能介紹1. 數據恢復功能&#xff08;核心痛點解決方案&#xff09;2. 系統修復功能3. 數據管理輔助 四、軟件特色1. 操作極簡&#xff0c;零技術門檻2. 安全可靠&#xff0c;零數據風險3. 高效精準&#x…

Vue 快速入門

一、Vue是什么 Vue是一款用于構建用戶界面的漸進式的JavaScript框架。 官網&#xff1a;Vue.js - 漸進式 JavaScript 框架 | Vue.js 其核心特性包括&#xff1a; 響應式數據綁定&#xff1a;通過 Vue 的響應式系統&#xff0c;數據變化會自動反映到視圖&#xff0c;減少手動 D…

JAVA-JWT

JWT簡介 JSON Web Token&#xff08;JWT&#xff09;是一個非常輕巧的規范&#xff0c;這個規范允許我們使用 JWT 在用戶和服務器之間傳遞安全可靠的信息。一個 JWT 實際上就是一個字符串&#xff0c;它由三部分組成&#xff0c;頭部、載荷與簽名。前兩部分需要經過 Base64 編…