【Zephyr電源與功耗專題】14_BMS電池管理算法(三重驗證機制實現高精度電量估算)

文章目錄

  • 前言
  • 一、算法系統框架設計介紹
    • 1.1:核心設計方式
    • 1.2:系統架構圖
    • 1.3:核心參數配置
  • 二、核心算法詳解
    • 2.1:硬件數據采集與濾波
    • 2.2:三重算法機制
      • 2.2.1:庫侖計法(電流積分)
      • 2.2.2:電壓查表法(絕對校準)
    • 2.3:理論計算法(異常檢測)
        • 2.3.1:電池等效電路模型:
        • 2.3.2:異常檢測機制:
        • 2.3.3:累積偏差補償
  • 三、數學模型(閉環反饋系統)
    • 3.1:穩態平衡條件
    • 3.2:收斂性數學證明
      • 3.2.1 迭代方程
      • 3.2.2:收斂條件
    • 3.3:收斂場景舉例
    • 3.4:數學平衡的物理意義
      • 3.4.1:能量守恒
      • 3.4.2:電荷守恒
    • 閉環模型總結:
  • 四、睡眠檢測機制
    • 睡眠檢測流程:
    • 4.1:睡眠狀態管理
      • 進入睡眠
      • 睡眠喚醒處理
      • 長時間休眠喚醒檢測機制
  • 五、算法特點與優勢分析
    • 5.1:三重驗證機制的優勢
      • 1. 高精度保證
      • 2. 魯棒性設計
      • 3. 工程實用性
    • 5.2:算法精度分析
  • 六、實際應用場景舉例
    • 6.1:正常放電場景
    • 6.2:充電場景
    • 6.3:電流偏差場景
  • 總結:


前言

在嵌入式設備中,準確的電池電量管理是用戶體驗的關鍵因素之一。傳統的單一電量估算方法往往存在精度不足、累積誤差等問題。本文將深入分析一種基于三重驗證機制的智能電池管理算法,該算法通過結合庫侖計法、電壓查表法和理論計算法,實現了高精度、高可靠性的電量管理。
電池管理算法的核心思想不管電池實際電流電壓如何跳動,均需要呈現一個合理穩定且接近實際電量給用戶看!!!

一、算法系統框架設計介紹

1.1:核心設計方式

該電池管理算法采用混合式電量估算方法,通過以下三個維度進行電量驗證

  1. 庫侖計法:基于電流積分的實時電量計算
  2. 電壓查表法:基于電壓-電量映射的絕對校準
  3. 理論計算法:基于歐姆定律的異常檢測與補償

1.2:系統架構圖

					┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐│   硬件數據采集   │    │   數據濾波處理   │    │   電量計算核心   ││                 │    │                 │    │                 ││ ? 電壓ADC采樣   │───?│ ? 10點移動平均  │───?│ ? 三重驗證機制  ││ ? 電流ADC采樣   │    │ ? 異常值檢測    │    │ ? 偏差補償算法  ││ ? 溫度傳感器    │    │ ? 數據平滑      │    │ ? 狀態自適應    │└─────────────────┘    └─────────────────┘    └─────────────────┘│                       │                       │▼                       ▼                       ▼┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐│   NV存儲管理    │    │   校準機制      │       │   異常處理       ││                 │    │                 │    │                 ││ ? 電量百分比    │    │ ? 定期校準      │       │ ? 電流偏差檢測    ││ ? 累積偏差      │    │ ? 長時間休眠    │       │ ? 備用方案       ││ ? 時間戳        │    │ ? 換電池檢測    │       │ ? 故障恢復      │└─────────────────┘    └─────────────────┘    └─────────────────┘

1.3:核心參數配置

#define MY_BAT_CAPACITY          460     // 電池容量 460mAh
#define BAT_CAPACITY_EQUAL_DIVISION 1.1  // 電池容量等分系數
#define BAT_IR                   0.5     // 系統等效內阻 0.5Ω
#define BAT_IR_WT                1.5     // 電池內阻加權系數
#define BAT_MIN_CURRENT          1.25    // 休眠時電流 1.25mA
#define SAMPLE_SIZE              10      // 采樣緩沖區大小

說明:

  • 電池各項參數由供應商提供
  • 確定各項參數需要均衡選擇
  • 休眠電流一般配置比實際大,以免實際電量耗盡死機 比 計算電量0%關機要提前。

二、核心算法詳解

2.1:硬件數據采集與濾波

數據采集:

// 定時器回調函數 (1秒周期)
static void cpus_pmu_timer_callback(void *priv)
{// 硬件ADC采樣pmu_manager_attr.vol_sampling = HAL_pmu_bat_volt_get();  // 電壓采樣pmu_manager_attr.cur_sampling = cpus_pmu_cur_get();     // 電流采樣// 數據濾波處理pmu_voltage_smooth(&pmu_manager_attr);                  // 電壓濾波pmu_current_smooth(&pmu_manager_attr);                  // 電流濾波// 電量計算pmu_percent_deal(&pmu_manager_attr);                    // 核心算法
}

移動平均濾波

// 10點移動平均濾波,有效抑制噪聲
uint16_t pmu_voltage_smooth(pmu_manager_attr_t *pmup)
{// 異常值檢測if((pmup->vol_sampling <= VOL_LOW_LIMIT) || (VOL_HIGH_LIMIT <= pmup->vol_sampling))return pmup->vol_buff_average;// 循環緩沖區更新pmup->vol_buff[pmup->vol_buff_i] = pmup->vol_sampling;pmup->vol_buff_i = (pmup->vol_buff_i + 1) % SAMPLE_SIZE;// 計算平均值uint32_t sum = 0;for(int i = 0; i < SAMPLE_SIZE; i++) {sum += pmup->vol_buff[i];}pmup->vol_buff_average = sum / SAMPLE_SIZE;return pmup->vol_buff_average;
}

2.2:三重算法機制

2.2.1:庫侖計法(電流積分)

if (cur_cal < cur - 5 || cur_cal > cur + 5) {Debug_printf(DISP_KEY_PMU, "電流偏差過大,cur_cal = %d, cur = %d, 播放音樂 = %d\r\n", cur_cal, cur, HAL_gpio_value_get(PIN_B16));cur = cur_cal;}diff_per =(float)diff_time * -cur / 36000 / MY_BAT_CAPACITY * BAT_CAPACITY_EQUAL_DIVISION;if (diff_per < 0) {diff_per = 0;}
}
// 公式分解:
// diff_time: 時間差(秒)
// -cur: 放電電流為負值
// 36000: 3600秒/小時 × 10(單位轉換)
// MY_BAT_CAPACITY: 電池容量460mAh
// BAT_CAPACITY_EQUAL_DIVISION: 容量等分系數1.1

說明:

  • 實時性好,響應速度快
  • 能準確反映瞬時電量變化
  • 適合動態負載場景
  • 存在累積誤差問題

2.2.2:電壓查表法(絕對校準)

// 電壓-電量映射表
#define BAT_LEVEL_10PERCENT_VOLT  3725  // 0-9%
#define BAT_LEVEL_20PERCENT_VOLT  3758  // 10-19%
#define BAT_LEVEL_30PERCENT_VOLT  3781  // 20-29%
// ... 更多閾值點// 電壓到電量百分比轉換
uint8_t pmu_v2p(uint16_t vol)
{if (vol >= BAT_LEVEL_100PERCENT_VOLT) return 100;if (vol >= BAT_LEVEL_90PERCENT_VOLT)  return 90;// ... 查表邏輯
}

分段線性插值算法

uint8_t pmu_v2p(uint16_t volt)
{// 1. 查找電壓所在的區間for (i = 0; i < CV_TABLE_LEN; i++) {if (volt <= coulomp_voltage_table[i])break;}// 2. 線性插值計算percent = (float)(BAT_QUANTITY_STEP_PERCENT * i) + (float)(volt - base) / step;return (uint8_t)percent;
}

算法特點

  • 絕對精度高,無累積誤差
  • 適合靜態或準靜態場景
  • 可作為其他方法的校準基準
  • 受溫度影響較大

2.3:理論計算法(異常檢測)

2.3.1:電池等效電路模型:
    ┌─────────┐    ┌─────────┐│   OCV   │────│  R_int  │──── 負載│(開路電壓)│    │ (內阻)   │└─────────┘    └─────────┘
// 基于歐姆定律的理論電流計算
int32_t vout_to_iout(uint16_t vout, uint16_t v_base)
{int32_t x = vout - v_base;  // 電壓差if (pmu_manager_attr.vbus_status && pmu_manager_attr.charge_status) {// 充電狀態:使用加權內阻i = (int32_t)((x) / (BAT_IR * BAT_IR_WT));} else {// 放電狀態:使用標準內阻i = (int32_t)((x) / (BAT_IR));}return i;
}

說明:

  • 物理原理:電池等效為理想電壓源串聯內阻
  • 根據歐姆定律:I = (V_ocv - V_load) / R_internal
  • 通過理論電流與實際電流對比,檢測異常
2.3.2:異常檢測機制:
// 電流偏差檢測
cur_cal = vout_to_iout(pmup->vol_buff_average, pmu_p2v(pmup->percent));
if (cur_cal < cur - 5 || cur_cal > cur + 5) {Debug_printf(DISP_KEY_PMU, "電流偏差過大,cur_cal = %d, cur = %d\r\n", cur_cal, cur);cur = cur_cal;  // 使用理論電流替代測量電流
}
2.3.3:累積偏差補償
// 累積偏差雙向補償機制
if (pmup->de_accumulation < -0.1) {pmup->percent += 1;  // 電量增加1%pmup->de_accumulation += 0.1;
} else if (pmup->de_accumulation > 0.1) {pmup->percent -= 1;  // 電量減少1%pmup->de_accumulation -= 0.1;
}

補償機制優勢

  • 智能消耗:優先消耗相反方向的累積偏差
  • 精度提升:避免測量誤差的長期累積
  • 雙向平衡:充電和放電分別累積,相互補償

三、數學模型(閉環反饋系統)

3.1:穩態平衡條件

當系統達到穩態時,必須滿足以下平衡條件:
條件1:電流平衡

實際測量電流 ≈ 理論計算電流
即:|I_measured - I_calculated| ≤ 5mA

條件2:電壓平衡

實際測量電壓 ≈ 理論計算電壓
即:V_measured ≈ V_theoretical = pmu_p2v(percent)

條件3:累積偏差平衡

充電累積偏差 ≈ 放電累積偏差
即:in_accumulation ≈ de_accumulation

3.2:收斂性數學證明

3.2.1 迭代方程

設第n次迭代:

  • 實際電流:I_n
  • 理論電流:I_cal_n
  • 電量百分比:P_n
  • 實際電壓:V_n
  • 理論電壓:V_cal_n
迭代關系:
P_{n+1} = P_n + ΔP_n  (基于I_cal_n計算)
V_cal_{n+1} = pmu_p2v(P_{n+1})
I_cal_{n+1} = vout_to_iout(V_n, V_cal_{n+1})

3.2.2:收斂條件

收斂條件:當 |I_cal_{n+1} - I_n| ≈ 0mA (足夠小)時,系統達到穩態
收斂速度:取決于以下因素:
內阻精度:BAT_IR的準確性
電壓表精度:coulomp_voltage_table的準確性
采樣精度:ADC測量精度
負載穩定性:外部負載變化

3.3:收斂場景舉例

場景:

  • 電流傳感器突然出現偏差或更換電池
  • 與上一塊電池斷電時記錄的電壓相差較大
初始狀態:
- 實際電流:100mA
- 理論電流:100mA
- 電量:50%
- 實際電壓:3800mV
- 理論電壓:3859mV第1次迭代(電流傳感器偏差+20mA):
- 實際電流:120mA (傳感器偏差)
- 理論電流:100mA
- 偏差:|120-100| = 20mA > 5mA
- 系統使用理論電流:100mA
- 電量更新:基于100mA計算第2次迭代:
- 實際電流:120mA (傳感器仍有偏差)
- 理論電流:基于新電量重新計算
- 如果新理論電流接近120mA,則偏差減小第N次迭代:
- 實際電流:120mA
- 理論電流:≈120mA
- 偏差:|120-120| = 0mA < 5mA
- 系統達到穩態

3.4:數學平衡的物理意義

3.4.1:能量守恒

累積偏差平衡:
充電累積 = 放電累積
∫I_charge dt ≈ ∫I_discharge dt

3.4.2:電荷守恒

累積偏差平衡:
充電累積 = 放電累積
∫I_charge dt ≈ ∫I_discharge dt

閉環模型總結:

這個電池管理系統是一個閉環反饋系統:
收斂機制:即使初始電流偏差很大,通過多次迭代反饋,系統會逐漸調整電量百分比,使得理論電流接近實際電流,最終達到穩態平衡。

四、睡眠檢測機制

睡眠檢測流程:

系統進入睡眠↓
硬件睡眠檢測 (RTC狀態)↓
軟件睡眠檢測 (timer_status)↓
執行 drv_pmu_suspend()├── 關閉ADC└── 記錄睡眠時間↓
系統喚醒↓
執行 drv_pmu_resume()├── 啟用ADC├── 計算睡眠時間├── 計算理論電量消耗└── 判斷是否需要喚醒↓
執行 timer_long_time_not_active()├── 判斷休眠時間│   ├── <24小時:理論計算模式│   └── >24小時:重新校準模式├── 更新電量百分比└── 發送電量變化事件

4.1:睡眠狀態管理

進入睡眠

static int drv_pmu_suspend(struct cdev *dev)
{HAL_pmu_adc_enable(false);  // 關閉ADC以節省功耗return 0;
}

睡眠喚醒處理

static int drv_pmu_resume(struct cdev *dev)
{uint32_t diff_time = (uint32_t)(HAL_get_timestamp()/1000 - pmu_manager_attr.update_time);float diff_per = 0;HAL_pmu_adc_enable(true);  // 重新啟用ADC// 計算睡眠期間的電量消耗diff_per = (float)diff_time * BAT_MIN_CURRENT / 36000 / MY_BAT_CAPACITY * BAT_CAPACITY_EQUAL_DIVISION;// 判斷是否掉電累計1%。若是:喚醒系統進行電量更新if (diff_per + pmu_manager_attr.de_accumulation - pmu_manager_attr.in_accumulation > 1) {cpus_OAL_timer_activate(&pmu_manager_attr.pmu_suspend_timer, cpus_OAL_TIMER_AUTO_ACTIVATE);}return 0;
}

長時間休眠喚醒檢測機制

void timer_long_time_not_active(void)
{uint32_t diff_time = (uint32_t)(HAL_get_timestamp()/1000 - pmu_manager_attr.update_time);float diff_per = 0;uint8_t old_percent = pmu_manager_attr.percent;static uint32_t last_mode = 0;pmu_manager_attr.update_time += diff_time;Debug_printf(DISP_KEY_PMU, "pmu_timer_activate = %d\r\n", diff_time);if (diff_time < 1000*60*60*24) {  // 小于24小時// 使用理論計算進行電量更新theoretical_calculation_mode();} else {  // 大于24小時// 重新采樣校準recalibration_mode();}
}

五、算法特點與優勢分析

5.1:三重驗證機制的優勢

1. 高精度保證

  • 庫侖計法:提供實時動態響應
  • 電壓查表法:提供絕對精度校準
  • 理論計算法:提供異常檢測和補償

2. 魯棒性設計

  • 多重異常檢測:電流偏差、電壓范圍、累積誤差
  • 狀態感知處理:充電/放電狀態自適應
  • 故障恢復機制:長時間休眠自動校準

3. 工程實用性

  • 系統等效內阻:包含電池+PMU+PCB+連接器總內阻
  • 實際測量點:基于硬件ADC測量位置設計
  • 狀態相關參數:充電/放電使用不同內阻值

5.2:算法精度分析

數據類型獲取方式精度響應時間用途
實際電壓ADC采樣硬件精度實時主要測量數據
實際電流ADC采樣硬件精度實時主要測量數據
理論電壓查表計算1%計算時間參考基準
理論電流歐姆定律依賴內阻模型計算時間偏差檢測
計算電壓反向計算依賴電流精度計算時間校準驗證

六、實際應用場景舉例

6.1:正常放電場景

當前電量: 50%
理論開路電壓: 3859mV (pmu_p2v(50))
實際端電壓: 3800mV (ADC測量)
系統等效內阻: 0.5Ω
理論電流 = (3800 - 3859) / 0.5 = -118mA (放電)
電量變化量 = 1秒 × (-118mA) / 36000 / 460mAh × 1.1 = -0.008%

6.2:充電場景

當前電量: 50%
理論開路電壓: 3859mV
實際端電壓: 3900mV (充電器提供)
系統等效內阻: 0.75Ω (充電時加權)
理論電流 = (3900 - 3859) / 0.75 = 55mA (充電)
電量變化量 = 1秒 × 55mA / 36000 / 460mAh × 1.1 = 0.004%

6.3:電流偏差場景

實際測量電流: 120mA
理論計算電流: 118mA
偏差: |120 - 118| = 2mA < 5mA (正常范圍)
實際測量電流: 150mA
理論計算電流: 118mA
偏差: |150 - 118| = 32mA > 5mA (異常)
處理: 使用理論電流118mA進行電量計算

特別說明:

  • 即計算電流差過大,但最后會恢復到差距較小的穩態(變閉環)

總結:

本文深入分析了一種基于三重驗證機制的智能電池(BMS)管理算法,這種算法設計在嵌入式系統中是一個相對完善的電池電量管理方案,平衡了精度、實時性和計算復雜度,為類似應用提供了有價值的參考,其核心在于:

  • 過濾電壓、電流跳動等情況
  • 為用戶提供穩定可觀的電量變化情況
  • 閉環算法使得計算電量靠近實際電量
  • 將電壓分為110份,避免電池低電而計算電量未到0就關機的情況
  • 睡眠時自動進行校準

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

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

相關文章

Python網絡與多任務編程:TCP/UDP實戰指南

Python網絡與多任務編程&#xff1a;TCP/UDP實戰指南 一、網絡編程 1.1 前言 網絡編程是現代軟件開發中不可或缺的一部分&#xff0c;它使得不同設備之間的數據交換成為可能。Python提供了強大的標準庫來支持各種網絡編程需求。 1.1.1 IP地址簡介 IP地址是互聯網上設備的唯一標…

Android8 binder源碼學習分析筆記(四)——ServiceManager啟動

前文回顧&#xff1a; Android8 binder源碼學習分析筆記&#xff08;三&#xff09;&#xff1a; https://blog.csdn.net/g_i_a_o_giao/article/details/151365630?spm1001.2014.3001.5502 Android8 binder源碼學習分析筆記&#xff08;二&#xff09;&#xff1a; https://…

Redis 大 Key 與熱 Key:生產環境的風險與解決方案

&#x1f525; Redis 大 Key 與熱 Key&#xff1a;生產環境的風險與解決方案 文章目錄&#x1f525; Redis 大 Key 與熱 Key&#xff1a;生產環境的風險與解決方案&#x1f9e0; 一、問題定義與識別&#x1f4a1; 什么是大 Key&#xff1f;&#x1f525; 什么是熱 Key&#xff…

C++算法題中的輸入輸出形式(I/O)

本文主要幫助刷leetcode題型快速適應完整帶輸入輸出的題&#xff08;機試、考試、比賽等&#xff09;接收能用cin就用cin 。cin 自動分割單詞 的特性&#xff08;cin 讀取字符串時會自動跳過空格 / 換行&#xff0c;將連續非空格字符作為一個 “單詞”&#xff09;一、單組輸入…

【左程云算法09】棧的入門題目-最小棧

目錄 棧的入門題目-最小棧 代碼演示 視頻鏈接 算法講解015【入門】棧的入門題目-最小棧 Leecode155 棧的入門題目-最小棧 實現一個getmin方法&#xff08;高效方法&#xff0c;即不用遍歷&#xff09;&#xff0c;希望能實現O&#xff08;1&#xff09; 做法&#xff1a…

Grafana與Prometheus實戰

&#x1f31f;Grafana的Dashboard的權限管理 創建團隊 創建用戶 設置團隊權限 &#x1f31f;Prometheus啟用https及認證功能 自建ca的證書 準備證書目錄 mkdir /app/tools/prometheus-2.53.4.linux-amd64/certs cd /app/tools/prometheus-2.53.4.linux-amd64/certs生成ca的…

FPGA交通燈設計報告(源碼+管腳約束+實物圖+設計報告)

基于FPGA的交通燈設計 摘要 本設計采用FPGA技術實現了一個智能交通燈控制系統。系統以Verilog HDL為設計語言,在FPGA平臺上實現了交通燈的自動控制、數碼管倒計時顯示、緊急情況處理等功能。通過合理的狀態機設計和模塊化編程,系統具有良好的實時性、可靠性和可擴展性,能夠…

技術論文分析分析論文《計算機病毒判定專家系統原理與設計》思考其在游戲中的應用

論文原文的引言主要有兩大部分的內容&#xff1a;介紹計算機病毒&#xff0c;明確本文使用的病毒分類方式&#xff1b;分析傳統計算機病毒檢測存在的弊端。對于計算機病毒的定義&#xff0c;文中給出的定義比較嚴謹&#xff0c;我自己查了一下現在百度百科的定義&#xff0c;兩…

《Unity項目實戰:動態加載引發的顯存危機全鏈路排查與重構實踐》

從動態光影那流光溢彩、仿佛賦予虛擬世界真實質感的絢麗效果—這得益于Unity引擎強大的HDRP管線對光照路徑的精準模擬,到物理引擎驅動的物體碰撞精準到毫厘的物理反饋—依托Unity Physics模塊對剛體動力學的毫秒級計算,再到能夠依據不同設備性能自動適配的畫質表現—通過Unit…

智慧水庫綜合管理系統平臺御控物聯網解決方案

一、行業背景與痛點分析水庫作為防洪、灌溉、供水、發電及生態保護的核心基礎設施&#xff0c;其管理效率直接關系到區域水資源安全與可持續發展。然而&#xff0c;傳統水庫管理模式存在四大核心痛點&#xff1a;數據孤島嚴重&#xff1a;水位、雨量、水質、設備狀態等數據分散…

使用nvm安裝Node.js18以下報錯解決方案——The system cannot find the file specified.

使用 nvm 安裝 Node.js 18以下 報錯解決方案 在前端開發過程中&#xff0c;常常需要針對不同項目切換 Node.js 版本。nvm&#xff08;Node Version Manager&#xff09;是最常用的工具。但最近在嘗試安裝 Node.js 14 版本時&#xff0c;遇到了奇怪的錯誤。 問題描述 使用 nv…

在Excel和WPS表格中快速復制上一行內容

有的時候我們在Excel和WPS表格中想復制上一行對應單元格、連續區域或整行的內容&#xff0c;只需要在當前行拖動鼠標左鍵選中相關區域&#xff0c;然后按CtrlD鍵即可將上一行對應位置的內容復制過來——需要注意的是&#xff0c;如果當前行有數據&#xff0c;這些數據會直接被覆…

408學習之c語言(遞歸與函數)

今天主要學習了遞歸與函數的相關內容&#xff0c;下面將我今天所學知識與所寫代碼分享給大家 遞歸核心要點 遞歸三要素 基準條件&#xff08;明確終止條件&#xff09; 遞歸調用&#xff08;逐步分解問題&#xff09; 收斂性&#xff08;確保每次遞歸都向基準條件靠近&#xff…

swVBA自學筆記016、Solidworks API Help 幫助文檔的(三大版塊)

目錄1. Namespace (命名空間) 版塊2. Interface (接口) 版塊3. Members (接口成員) 版塊4、總結關系5、如果你感覺上面說的過于簡單&#xff0c;請往下看!6、示例鏈接→SOLIDWORKS API Help 20197、需要注意的是&#xff0c;帶“I”的對象表示&#xff1a;接口1. Namespace (命…

通俗易懂地講解JAVA的BIO、NIO、AIO

理解Java的I/O模型&#xff08;BIO、NIO、AIO&#xff09;對于構建高性能網絡應用至關重要 &#x1f9e0; 通俗理解&#xff1a;快遞站的故事 想象一個快遞站&#xff1a; ? BIO&#xff1a;就像快遞站為每一個包裹都安排一位專員。專員從接到包裹到處理完&#xff08;簽收、…

LabVIEW 泵輪檢測系統

在汽車行業&#xff0c;泵輪作為液力變矩器關鍵部件&#xff0c;其質量檢測極為重要。傳統手工檢測泵輪效率低且誤差大&#xff0c;為此構建基于 LabVIEW 與西門子硬件結合的泵輪檢測系統。 應用場景 聚焦汽車零部件生產車間&#xff0c;對泵輪總成進行出廠前檢測。在液力變矩…

2025年8月月賽 T2 T3

一. 七天假日 T2原思路&#xff1a;直接計算左右括號的數量&#xff0c;然后直接輸出他們的差改進思路&#xff1a; 用d值記錄截止到當前位置&#xff0c;還需要多少個右括號可以滿足非法要求cur&#xff1a;截止到當前位置&#xff0c;已經有多少個右括號sum是右括號位置的前綴…

數據結構----棧的順序存儲(順序棧)

棧的特點&#xff1a;先進后出棧的操作&#xff1a;用數組進行存儲&#xff08;1&#xff09;初始化&#xff1a;//棧 typedef struct {int *data;//指針模擬分配數組int top;//棧“頂”指針 }Stack; //初始化 Stack InitStack(){Stack s;//給數組分配空間s.data (int*)malloc…

React Hooks原理深度解析與高級應用模式

React Hooks原理深度解析與高級應用模式 引言 React Hooks自16.8版本引入以來&#xff0c;徹底改變了我們編寫React組件的方式。然而&#xff0c;很多開發者僅僅停留在使用層面&#xff0c;對Hooks的實現原理和高級應用模式了解不深。本文將深入探討Hooks的工作原理、自定義Hoo…

兼職網|基于SpringBoot和Vue的蝸牛兼職網(源碼+數據庫+文檔)

項目介紹 : SpringbootMavenMybatis PlusVue Element UIMysql 開發的前后端分離的蝸牛兼職網&#xff0c;項目分為管理端和用戶端和企業端。 項目演示: 基于SpringBoot和Vue的蝸牛兼職網 運行環境: 最好是java jdk 1.8&#xff0c;我們在這個平臺上運行的。其他版本理論上也可…