---
# System prepended metadata

title: 研究紀錄(3/4月)

---

# 研究紀錄(3/4月)
[toc]
# 20240301 研究紀錄
## 分析問題

![image](https://hackmd.io/_uploads/Bkn69Vy6a.png)

---
# 20240307 研究紀錄
## 解決方法
### 將配流盤留下，並且以第一根活塞進行分析

1. 分割模型及命名
![image](https://hackmd.io/_uploads/ryyfnSvT6.png)

2. 生成活塞及命名
    * 活塞

   ![image](https://hackmd.io/_uploads/ByE-VIwpa.png)
    * 進出口端

    ![image](https://hackmd.io/_uploads/HkhpPmh6a.png)

    * 配流盤
    
    ![image](https://hackmd.io/_uploads/SkMQdXh6a.png)
---

# 20240311 研究紀錄

3. 設定
    * 設定接觸面
    ![image](https://hackmd.io/_uploads/S1wmc7hTT.png)
    ![image](https://hackmd.io/_uploads/Sk7BcQ3Tp.png)
    
---
## PV46分析

1. 分割模型及命名
    * inlet
    ![image](https://hackmd.io/_uploads/Hkd_k9366.png)

    * outlet
    ![image](https://hackmd.io/_uploads/r1GcJ92pp.png)

    * piston
    ![image](https://hackmd.io/_uploads/SJN2kqna6.png)

    * valve_plate
   ![image](https://hackmd.io/_uploads/rJx2THr0p.png)


    
# 20240312 研究紀錄

2. 生成活塞及命名
    * 活塞

   ![image](https://hackmd.io/_uploads/H1I80Ua6p.png)
    * 進出口端

     ![image](https://hackmd.io/_uploads/SyIujvTTT.png)

    * 配流盤
    
    ![image](https://hackmd.io/_uploads/Byt5jwaTa.png)

![image](https://hackmd.io/_uploads/By9JRvTT6.png)

---
# 20240313 研究紀錄
3. 設定
    * 配流盤及活塞的接觸面
    ![image](https://hackmd.io/_uploads/SJDcdaC66.png)

    * 配流盤及進出口接觸面
    ![image](https://hackmd.io/_uploads/HyL3dTCaT.png)
    * 偵查點
    1. 第一跟活塞底部
    ![image](https://hackmd.io/_uploads/ryxTVqTA6T.png)
    2. 出口配流盤
    ![image](https://hackmd.io/_uploads/SJhVoTRpT.png)
    ![image](https://hackmd.io/_uploads/SkctsaCpp.png)
    3. 進口端配流盤
    ![image](https://hackmd.io/_uploads/rknHh6ApT.png)
    ![image](https://hackmd.io/_uploads/B1EOhpRpT.png)

    * 限制條件
    1. 進口壓力
    ![image](https://hackmd.io/_uploads/By50ER0Ta.png)

    2. 出口壓力
    ![image](https://hackmd.io/_uploads/HyNeSAR6p.png)
## 分析解答
![image](https://hackmd.io/_uploads/B1w81_tAp.png)
![image](https://hackmd.io/_uploads/Hkf_7uKA6.png)
# 20240321 研究紀錄
## 第22校內會議紀錄
* 下次的進度
    * 將PV46模型加入油膜
 
# 20240326 研究紀錄
## pumplinx

## matlab
### 進度:先跑過並且了解中間的程序
* 範例一
    ![image](https://hackmd.io/_uploads/B10aGxgy0.png)
 :::info
:information_source: </font><font face="標楷體" size=4.5>  此範例顯示了一個典型的動力裝置，由**馬達透過柔性傳動裝置和洩壓閥驅動的固定排量幫浦**組成。 可變節流孔充當系統的負載。  馬達模型使用理想角速度來源模組。 **軸上的負載降低了速度，滑差係數為 1.2 (rad/s)/Nm，導致馬達的空載速度為 188 rad/s**。 泵浦驅動軸上的負載由扭矩感測器測量。 假設馬達和幫浦之間的軸是穩定的，並使用==旋轉彈簧和阻尼器==進行模擬。   模擬從可變節流孔打開開始，這會導致輸出壓力較低且進入系統的流量最大。 **孔口在 0.5 秒時開始關閉，並在約 2.75 秒時完全關閉。 輸出壓力逐漸增加直至達到 75e5 Pa，並透過洩壓閥維持在該水平。 3.2 秒後，閥門開始打開，系統回到初始狀態。**</font>
:::

```mermaid
graph 
輸入無負載的速度給馬達-->馬達帶動柱塞泵並且加裝感測器跟最終數據進行數據比較 --加裝負載及雙向-->柱塞泵並且出口連接油壓缸 --接上洩壓閥將多餘油送到油箱-->油壓缸連接Scope進行數據比對
```

```#include "統整數據"
% Code to plot simulation results from sh_pump_fixed_disp
%% Plot Description:
%
% The plots below show how flow rates vary in the system as the orifice is
% closed.  All of the fluid exiting the pump goes through the orifice at
% the start.  As the orifice is closed, flow gradually ends up being
% diverted through the pressure relief valve.  Flow resumes through the
% orifice as it reopens.

% Copyright 2015 The MathWorks, Inc.

% Generate simulation results if they don't exist
if ~exist('simlog_sh_pump_fixed_disp', 'var')
    sim('sh_pump_fixed_disp')
end

% Reuse figure if it exists, else create new figure
if ~exist('h1_sh_pump_fixed_disp', 'var') || ...
        ~isgraphics(h1_sh_pump_fixed_disp, 'figure')
    h1_sh_pump_fixed_disp = figure('Name', 'sh_pump_fixed_disp');
end
figure(h1_sh_pump_fixed_disp)
clf(h1_sh_pump_fixed_disp)
% 生成模擬結果：首先，它檢查是否存在名為 simlog_sh_pump_fixed_disp 的變數，
% 如果不存在，則通過運行 sh_pump_fixed_disp 模型來生成模擬結果。
% 創建或重複使用圖形窗口：接下來，它檢查是否存在名為 h1_sh_pump_fixed_disp 的圖形變數，
% 以及該變數是否代表一個有效的圖形窗口。如果不存在或者該變數不是有效的圖形窗口，則通過創建一個新的圖形窗口來初始化 h1_sh_pump_fixed_disp 變數。然後，它清除該圖形窗口以確保它是一個空白的圖形。

---
% Get simulation results
simlog_t = simlog_sh_pump_fixed_disp.Pump.flow_rate.series.time;
simlog_pumpq = simlog_sh_pump_fixed_disp.Pump.flow_rate.series.values('m^3/s');
simlog_prvq = simlog_sh_pump_fixed_disp.Pressure_Relief_Valve.flow_rate.series.values('m^3/s');
simlog_orifq = simlog_sh_pump_fixed_disp.Orifice.flow_rate.series.values('m^3/s');
simlog_orifS = simlog_sh_pump_fixed_disp.Orifice.S.series.values('m');
temp_orifInitO = str2num(get_param([bdroot '/Orifice'],'x_0'));
temp_orifw = str2num(get_param([bdroot '/Orifice'],'w'));
% 將從模擬結果中獲取的相關數據存儲到變數中。具體來說：
%simlog_t 存儲了時間序列數據，表示模擬運行的時間。
%simlog_pumpq 存儲了泵的流量數據序列，以立方米每秒（m^3/s）為單位。
%simlog_prvq 存儲了壓力釋放閥的流量數據序列，以立方米每秒（m^3/s）為單位。
%simlog_orifq 存儲了節流孔的流量數據序列，以立方米每秒（m^3/s）為單位。
%simlog_orifS 存儲了節流孔的開口面積（S）數據序列，以米（m）為單位。
%使用 get_param 函數獲取節流孔模型的初始開口值和寬度值。
%這些值被轉換為數值並存儲在temp_orifInitO 和 temp_orifw 變數中。

---
% Plot results
simlog_handles(1) = subplot(2, 1, 1);
plot(simlog_t, simlog_orifq, 'LineWidth', 1)
hold on
plot(simlog_t, simlog_pumpq, 'LineWidth', 1)
plot(simlog_t, simlog_prvq, 'LineWidth', 1)
hold off
grid on
title('Flow Rates in System')
ylabel('Flow Rate (m^3/s)')
legend({'Orifice','Pump','Pressure Relief Valve'},'Location','Best');

simlog_handles(2) = subplot(2, 1, 2);
plot(simlog_t, max(temp_orifInitO+simlog_orifS,0)*temp_orifw*1e6,'LineWidth', 1);
grid on
title('Orifice Opening')
ylabel('Area (mm^2)')
xlabel('Time (s)')

linkaxes(simlog_handles, 'x')
%第一個子圖：

%創建了一個 2x1 的 subplot，並選擇了第一個子圖。
%使用 plot 函數在第一個子圖中繪製了三條曲線
simlog_orifq（節流孔流量）、%simlog_pumpq（泵流量）和 simlog_prvq（壓力重釋閥流量）。
%hold on 和 hold off 函數用於保持和取消保持圖形的當前狀態，以便在同一個圖形上繪製多個曲線。
%使用 grid on 函數添加網格線。
%設置了圖形的標題、y軸標籤和圖例。
%第二個子圖：

%創建了一個 2x1 的 subplot，並選擇了第二個子圖。
%使用 plot 函數在第二個子圖中繪製了 temp_orifInitO+simlog_orifS 乘以 temp_orifw 的結果。
%使用 grid on 函數添加網格線。
%設置了圖形的標題、y軸標籤和x軸標籤。
%最後，使用 linkaxes 函數將兩個子圖的x軸連接在一起，以便它們在時間上保持一致。

---
% Remove temporary variables
clear simlog_t simlog_handles 
clear simlog_pumpq simlog_motorq simlog_orifS simlog_orifq simlog_prvq 
clear temp_orifInitO temp_orifw 
%simlog_t：模擬時間數據。
%simlog_handles：用於存儲子圖軸的句柄。
%simlog_pumpq：與泵流量相關的模擬數據。
%simlog_orifS：與節流孔相關的模擬數據。
%simlog_orifq：節流孔流量的模擬數據。
%simlog_prvq：壓力重釋閥流量的模擬數據。
%temp_orifInitO：節流孔的初始開啟度。
%temp_orifw：節流孔的寬度。
```
1. **對於Fluid Properties**
    * Hydraulic fluid index:流體的性質
    * System temperature:整個迴路的溫度
    * relative amount of trapped air:相對於空氣的滯留量
    * viscosity derating factor:黏度降額係數
    * pressure below absolute zero:壓力低於絕對零 --> error/warning

* </font><font face="標楷體" color="blue" size=3>此區塊為特定迴路中組裝的所有組件分配工作流體。迴路偵測是自動執行的，如果該區塊透過液壓方式連接到至少一個迴路組件，則該區塊被視為迴路的一部分。該模組提供多種流體可供選擇。自訂流體分配有 Simscape 基礎庫中的自訂液壓流體塊。如果液壓油和自訂液壓油塊均未連接到迴路，則指派自訂液壓油塊的預設屬性。</font>

2. **對於pump**
:::info
:information_source: </font><font face="標楷體" size=4.5> 恆定體積排量的泵，該泵向液壓液體網路提供機械能。 它考慮了洩漏流量和摩擦扭矩造成的損失。 根據軸的旋轉，泵浦可以正向和反向運作。 它也可以作為驅動軸的馬達運作。**連接 P 和 T 是分別與幫浦出口和入口相關的液壓保存埠。 連接 S 是與幫浦驅動軸相關的機械旋轉保護埠。 正方向是從端口 T 到端口 P。這意味著如果軸 S 沿正方向旋轉，泵會將流體從 T 傳輸到 P。**</font>
:::

* modeling option有三個選項可以選
    1. input efficiencies(輸入效率)通常指定了在模型中使用的==泵的效率==，這涉及到泵將輸入能量轉換為輸出能量的效率。通常情況下，泵的輸入效率是由壓縮機或液壓設備的製造商提供的，它可能會隨著==操作條件（例如壓力、流量、溫度等）而變化==。在模型中，你可以將輸入效率視為一個參數，根據泵的特性曲線或實際測試數據來設置它。==輸入效率的值通常在 0 到 1 之間==，表示能量轉換的率。==一個效率為 1 的泵表示所有輸入的能量都被完全轉換為輸出能量，而效率小於 1 則表示有一部分能量被損失或轉化為其他形式的能量（例如熱能）。==
    2. input losses(輸入損失)
        * pressure gain threhold for pump-motor transition:<br>泵浦-馬達轉換的壓力增益閾值
        * angular velocity threhold for pump-motor transition:<br>泵浦-馬達轉換的角速度閾值
        * operating beyond the pump mode:<br>檢查是否超出泵浦模式運行
        * lower side pressure violating minimum valid condition:<br>檢查下側壓力是否違反最低有效條件
    3. analytical or tabulated data（分析数据）
        * 如果选择使用分析数据，通常意味着你使用的是一种数学模型来描述泵的性能。这种模型可能基于泵的设计参数、流体力学原理、物理特性等，通过一系列方程式来计算泵的输出特性，如流量、压力、效率等。这种方法适用于对泵性能有较深理解的情况，或者有足够的背景知识来建立泵的数学模型。
    3. Tabulated Data（表格化数据）
        * 如果选择使用表格化数据，通常意味着你准备了一组实验数据或者从厂商提供的数据表格中获取了泵的性能曲线。这些数据通常以表格形式提供，包括不同工况下的流量、压力、效率等参数。在模型中，你可以直接输入这些数据，Simulink 将根据输入的数据进行插值计算，从而模拟泵的性能。这种方法适用于对泵的数学模型不太了解或者没有足够的实验数据来建立数学模型的情况。

        * 主要的功能
:::success
displacement:位移量
leakage and friction parameterization:洩漏和摩擦參數化
Nominal shaft angular velocity:標稱軸角速度
Nominal pressure gain:公稱壓力增益
Nominal kinematic viscosity:運動黏度
Nominal fluid density:流體密度
Volumetic efficiency at nominal condition:條件下的容積效率
no load torque:空載扭力
Fiction torque vs. pressure gain coefficient:摩擦扭力與壓力增益係數
:::
3. **對於油壓缸**
:::info
:information_source: </font><font face="標楷體" size=4.5> **連接 A 和 B 分別保留與孔口入口和出口相關的液壓端口。連接S是一個實體訊號端口**，透過它輸入閥芯位移。 塊正方向是從連接埠 A 到連接埠 B。**連接埠 S 處的正訊號開啟或關閉孔口，取決於孔口方向參數的值**。</font>
:::
* 主要的功能
:::success
Flow discharge coefficient:流量係數
Leakage area:洩漏面積
Laminar flow pressure ratio:層流壓力比
:::

4. **對於馬達**
    ![image](https://hackmd.io/_uploads/rkl56r9WyC.png)

    1. velocity source: 此塊代表**理想的角速度源**，在其端子處產生與物理輸入訊號成比例的==速度差==。該源是理想的，因為假定它的**功率足以維持指定的速度**，而不管施加在系統上的扭矩如何。==連接 R 和 C 是機械旋轉保護埠==。 端口==S是實體訊號端口==，透過此端口施加驅動源的控制訊號。 **==相對速度確定為 W = W_R - W_C==**，其中 W_R 和 W_C 分別是端子 **R 和 C 的絕對角速度**
    
    2. Torque Sensor: 該塊代表**理想的扭矩感測器**，即將通過感測器的變數轉換為具有指定==比例係數的與扭矩成比例的控制訊號==。 此感測器非常理想，因為它沒有考慮慣性、摩擦、延遲、能耗等因素。**連接 R 和 C 是機械旋轉保護端口**，用於將感測器連接到正在監控扭矩的線路。 ==連接T是輸出測量結果的實體訊號連接埠==。 感測器正方向是從端口R到端口C。

# 20240328 研究紀錄
* 範例二
    ![image](https://hackmd.io/_uploads/B1YsreQkC.png)
:::info
:information_source: </font><font face="標楷體" size=4.5> 由變速馬達驅動的閉路液壓執行器。 執行器被佈置為一個封閉系統，具有兩個補給閥（止回閥）和一個用作補給儲液器的彈簧蓄能器。 馬達速度由命令執行器位置與實際執行器位置之間的差異控制。 執行器抵抗彈簧、阻尼器和時變負載。</font>
:::


```mermaid
graph 
輸入油壓缸的理想的位移量-->輸入角速度來源給柱塞泵--柱塞泵連接洩壓器到油壓缸多餘油送到油箱 -->柱塞泵並且出口連接油壓缸 -->油壓缸帶動負載進行位移-->將位移量跟當前輸入的位移量進行比對
```
# 20240331 研究紀錄
1. **對於理想位移量**
![image](https://hackmd.io/_uploads/S1n9rWDJC.png)
確認後將最大值和最小值輸入在PS saturation在帶動角速度來源(跟前一個範例的motor一樣)
2. 對於pump
:::info
:information_source: </font><font face="標楷體" size=4.5> 恆定體積排量的泵，該泵向液壓液體網路提供機械能。 它考慮了洩漏流量和摩擦扭矩造成的損失。 根據軸的旋轉，泵浦可以正向和反向運作。 它也可以作為驅動軸的馬達運作。**連接 P 和 T 是分別與幫浦出口和入口相關的液壓保存埠。 連接 S 是與幫浦驅動軸相關的機械旋轉保護埠。 正方向是從端口 T 到端口 P。這意味著如果軸 S 沿正方向旋轉，泵會將流體從 T 傳輸到 P。**</font>
:::

* modeling option有三個選項可以選
    1. input efficiencies(輸入效率)通常指定了在模型中使用的==泵的效率==，這涉及到泵將輸入能量轉換為輸出能量的效率。通常情況下，泵的輸入效率是由壓縮機或液壓設備的製造商提供的，它可能會隨著==操作條件（例如壓力、流量、溫度等）而變化==。在模型中，你可以將輸入效率視為一個參數，根據泵的特性曲線或實際測試數據來設置它。==輸入效率的值通常在 0 到 1 之間==，表示能量轉換的率。==一個效率為 1 的泵表示所有輸入的能量都被完全轉換為輸出能量，而效率小於 1 則表示有一部分能量被損失或轉化為其他形式的能量（例如熱能）。==
    2. input losses(輸入損失)
        * pressure gain threhold for pump-motor transition:<br>泵浦-馬達轉換的壓力增益閾值
        * angular velocity threhold for pump-motor transition:<br>泵浦-馬達轉換的角速度閾值
        * operating beyond the pump mode:<br>檢查是否超出泵浦模式運行
        * lower side pressure violating minimum valid condition:<br>檢查下側壓力是否違反最低有效條件
    3. analytical or tabulated data（分析数据）
        * 如果选择使用分析数据，通常意味着你使用的是一种数学模型来描述泵的性能。这种模型可能基于泵的设计参数、流体力学原理、物理特性等，通过一系列方程式来计算泵的输出特性，如流量、压力、效率等。这种方法适用于对泵性能有较深理解的情况，或者有足够的背景知识来建立泵的数学模型。
    3. Tabulated Data（表格化数据）
        * 如果选择使用表格化数据，通常意味着你准备了一组实验数据或者从厂商提供的数据表格中获取了泵的性能曲线。这些数据通常以表格形式提供，包括不同工况下的流量、压力、效率等参数。在模型中，你可以直接输入这些数据，Simulink 将根据输入的数据进行插值计算，从而模拟泵的性能。这种方法适用于对泵的数学模型不太了解或者没有足够的实验数据来建立数学模型的情况。

        * 主要的功能
:::success
displacement:位移量
leakage and friction parameterization:洩漏和摩擦參數化
Nominal shaft angular velocity:標稱軸角速度
Nominal pressure gain:公稱壓力增益
Nominal kinematic viscosity:運動黏度
Nominal fluid density:流體密度
Volumetic efficiency at nominal condition:條件下的容積效率
no load torque:空載扭力
Fiction torque vs. pressure gain coefficient:摩擦扭力與壓力增益係數
:::
3. **對於油壓缸**
:::info
:information_source: </font><font face="標楷體" size=4.5> **連接 A 和 B 分別保留與孔口入口和出口相關的液壓端口。連接S是一個實體訊號端口**，透過它輸入閥芯位移。 塊正方向是從連接埠 A 到連接埠 B。**連接埠 S 處的正訊號開啟或關閉孔口，取決於孔口方向參數的值**。</font>
:::
* 主要的功能
:::success
Flow discharge coefficient:流量係數
Leakage area:洩漏面積
Laminar flow pressure ratio:層流壓力比
:::
4. **關於負載**
此範例的負載較為複雜，負載跟彈簧阻尼並聯
```#include "component force"

% S 是一個輸入變數，代表外部施加在系統上的力或力矩。在這個範例中，它是一個大小為 0、單位為牛頓的力。
inputs
    S = { 0, 'N' }; % S:bottom
end


%C 和 R 是系統的節點（nodes）。在這裡，C 和 R 都是轉換節點（translational），表示它們允許位移。
nodes
    C = foundation.mechanical.translational.translational; % C:bottom
    R = foundation.mechanical.translational.translational; % R:top
end


%v 和 f 是系統的變量。v 表示速度，單位為米每秒，而 f 表示力，單位為牛頓。在這裡，它們都被初始化為 0。
variables(Access = protected)
    v = { 0, 'm/s' };       % Velocity
    f = { 0, 'N' };         % Force
end
%f : R.f -> C.f; 定義了一個分支（branch），將節點 R 上的 f（即 R.f）連接到節點 C 上的 f（即 C.f）。這表示兩個節點之間存在一個連接，該連接傳遞了力。
branches
    f : R.f -> C.f;
end


%v == C.v - R.v; 表示系統中的速度 v 等於節點 C 上的速度減去節點 R 上的速度。這個方程式描述了節點之間的相對運動。
f == -S; 表示系統中的力 f 等於外部施加的力 S 的相反值。這個方程式描述了系統中施加的力。
equations
    v == C.v - R.v;
    f == -S;
end

end
```
![image](https://hackmd.io/_uploads/SkVEqbwJR.png)

---
### 範例二結果
![image](https://hackmd.io/_uploads/r14t3bvk0.png)
實際的位移量及理想位移量非常接近
1. 位移量及pump的體積流率
![image](https://hackmd.io/_uploads/SyQKpbvkR.png)
2. 油壓缸的壓力及應力
![image](https://hackmd.io/_uploads/rkpaabPyA.png)

# 20240415 研究紀錄
## pumplinx 問題解決
1. 活塞盡量不要使用最大壓縮及最小壓縮的活塞
![image](https://hackmd.io/_uploads/rJ4Z-w9gR.png)

2. 必須切割出配流盤
![image](https://hackmd.io/_uploads/BJHGWPcgC.png)

3. 轉檔問題
![image](https://hackmd.io/_uploads/rykV-D5lA.png)

# 20240417 研究紀錄
:::danger
* 因為壓力及流量計算錯誤，所以進行設定上的修改，並且將接觸面的網格進行加密

:::

1. 接觸面加密
* 進出口和配流盤接觸面加密
![image](https://hackmd.io/_uploads/r1pbxrpgC.png)
* 活塞和配流盤接觸面加密
![image](https://hackmd.io/_uploads/rktjlSTeR.png)

3. 加精度計算方法
![image](https://hackmd.io/_uploads/HyEzfSaxR.png)
:::spoiler
* 因為增加精度，所以將first order upwind改成second order upwind
* Linear Solver:線性求解器公差值越小，精度越高。 線性解算器公差值越小，代價是掃描次數越多，計算時間越長。 在某些情況下，增加的精度並不值得額外的花費。 如果目標收斂標準值太小，求解器可能無法達到，在這種情況下，解法將走完允許的全部掃描次數。 預設線性求解器公差為 0.1。
* 因為運算上要迭代要花上到必較多所以在Time Steps/piston Rotation比較少
:::

# 20240430 研究紀錄
1. 增加洩壓閥
![image](https://hackmd.io/_uploads/ry9JfMAb0.png)
:::spoiler
該塊將液壓溢流閥表示為基於數據表的模型。 當閥門入口壓力低於閥門預設壓力時，閥門保持關閉狀態。 當達到預設壓力時，值控制元件被迫離開其底座，從而在入口和出口之間形成通道。 一些流體通過該孔口轉移到儲罐，從而降低入口處的壓力。 如果該流量不夠且壓力繼續升高，則面積進一步增加，直到控制元件達到其最大值。
:::

![image](https://hackmd.io/_uploads/BkchMMA-A.png)

* Maximum passage area:最大通過面積
<br>==數值越小離理論值誤差越大==
* valve pressure setting:閥門壓力設定

* valve regulation range:閥門調節範圍

* flow discharge coefficient:流量係數

* Leakage area:洩漏面積

* laminar flow pressure ratio:層流壓力比