油圧シリンダの推力計算|押し側・引き側の受圧面積とPython実装

油圧シリンダの選定では、「このシリンダが何kNの力を出せるか」を計算する必要があります。

基本となる関係は単純で、F=pA

です。

ここで、

  • F:推力
  • p:シリンダに作用する圧力
  • A:有効受圧面積

です。

Parkerの油圧シリンダ技術資料でも、シリンダ出力は圧力と有効ピストン面積から求めるものとして示されています。

しかし複動片ロッドシリンダでは、押し側と引き側で受圧面積が異なります。

この違いを理解していないと、引き側推力を過大評価する可能性があります。

目次

圧力と面積から力が生じる

圧力は、単位面積あたりに作用する力です。

したがって、p=AF​

であり、変形すると、F=pA

となります。

SI単位で、p[Pa]A[m2]

を使用すれば、F[N]

が得られます。

油圧設計では圧力にMPa、寸法にmmを使うことが多いため、単位換算を含めて扱う必要があります。

押し側の受圧面積

シリンダがロッドを押し出す方向では、通常はピストン全面が圧力を受けます。

シリンダ内径をDとすると、ピストン面積は、Ap​=4πD2​

です。

したがって理論押し推力は、Fpush​=pAp​

つまり、Fpush​=p4πD2​

となります。

引き側ではロッド面積を差し引く

ロッド側ではピストン全面を使用できません。

ロッドが占める面積を差し引いた環状面積が有効受圧面積になります。

ロッド径をdとすると、ロッド断面積は、Ar​=4πd2​

です。

したがってロッド側の有効面積は、Aa​=Ap​−Ar​

となります。

展開すると、Aa​=4π​(D2−d2)

です。

引き側の理論推力は、Fpull​=pAa​

なので、Fpull​=p4π​(D2−d2)

となります。

このため、同じ圧力でも一般的な片ロッドシリンダでは、Fpull​<Fpush​

となります。

Parkerのシリンダ資料でも、押し側と引き側の力を区別して選定する考え方が示されています。

MPaとmmを使うと計算しやすい

機械設計では、

  • 圧力:MPa
  • 寸法:mm
  • 力:NまたはkN

を使うことがあります。

ここで、1 MPa=1 N/mm2

なので、圧力をMPa、面積をmm²で入力すると、F[N]=p[MPa]×A[mm2]

と直接計算できます。

たとえば、p=10 MPaA=1000 mm2

なら、F=10×1000F=10000 N

つまり、F=10 kN

です。

単位換算を簡潔にできるため、機械設計用の計算ロジックでは便利な組み合わせです。

計算例

シリンダ条件を、

  • 内径:D=50 mm
  • ロッド径:d=30 mm
  • 圧力:p=10 MPa

とします。

ピストン面積

Ap​=4π502​

より、Ap​≈1963.5 mm2

です。

押し側推力

Fpush​=10×1963.5

なので、Fpush​≈19635 N

つまり、Fpush​≈19.6 kN

です。

ロッド面積

Ar​=4π302​

より、Ar​≈706.9 mm2

です。

引き側有効面積

Aa​=1963.5−706.9Aa​≈1256.6 mm2

です。

したがって引き側推力は、Fpull​=10×1256.6Fpull​≈12566 N

つまり、Fpull​≈12.6 kN

です。

同じ10 MPaでも、

  • 押し:約19.6 kN
  • 引き:約12.6 kN

となります。

ロッド面積が差し引かれることによる違いです。

barで計算するときの換算

メーカー資料ではbarが使用されることもあります。

Parkerのメートル系シリンダ資料では、F=10000PA​

として、

  • F:kN
  • P:bar
  • A:mm²

を使用する式が示されています。

これは、1 bar=0.1 MPa

であることから導けます。

たとえば10 MPaは100 barです。

単位系を混在させると10倍、1000倍といった誤差につながるため、計算プログラムでは単位を明示した方が安全です。

理論推力と実推力は同じではない

ここまで求めた値は圧力と有効面積から計算した理論推力です。

実機では、その値がそのまま負荷へ伝達されるとは限りません。

考慮すべき要因には、

  • シール摩擦
  • ガイド部摩擦
  • 背圧
  • 配管圧力損失
  • シリンダ姿勢
  • 外部荷重
  • 横荷重
  • 機構側の摩擦

などがあります。

特にロッド側に戻り圧力が存在する場合、単純に供給圧力だけから推力を計算すると過大評価になります。

両側に圧力がある場合

ピストン側圧力をp1​、ロッド側圧力をp2​とします。

押し方向の圧力による正味の力は、F=p1​Ap​−p2​Aa​

です。

つまりロッド側の圧力は、押し方向に対して逆向きの力として作用します。

たとえば戻り配管に背圧がある場合、p2​>0

なので、F<p1​Ap​

となります。

したがって実際の回路計算では、

供給圧力
↓
ピストン側作用力

戻り圧力
↓
ロッド側反力

差
↓
正味推力

として考える必要があります。

必要推力からシリンダ内径を逆算する

シリンダ選定では「内径から推力」だけでなく、「必要推力から必要内径」を求めることもあります。

押し側について、F=p4πD2​

なので、D2=πp4F​

したがって、D=πp4F​​

です。

たとえば必要理論推力が30 kN、使用圧力が10 MPaなら、F=30000 N

として、D=π×104×30000​​

より、D≈61.8 mm

となります。

ただし、これは必要な理論内径です。

実際の選定では標準ボア径、必要余裕、ロッド座屈、取付条件、ストローク、速度、使用圧力なども確認します。

Parkerも、必要力からボアを選ぶだけでなく、圧縮荷重を受けるピストンロッドについてロッド選定を行うよう案内しています。

Pythonで推力を計算する

計算式を関数化すると、Web計算ツールや機器選定ロジックへ再利用できます。

from math import pi


def cylinder_areas(
    bore_mm: float,
    rod_mm: float,
) -> tuple[float, float]:
    if bore_mm <= 0:
        raise ValueError("シリンダ内径は0より大きい必要があります")

    if rod_mm < 0:
        raise ValueError("ロッド径は0以上である必要があります")

    if rod_mm >= bore_mm:
        raise ValueError("ロッド径はシリンダ内径より小さい必要があります")

    piston_area = pi * bore_mm**2 / 4
    annulus_area = pi * (bore_mm**2 - rod_mm**2) / 4

    return piston_area, annulus_area


def cylinder_force(
    pressure_mpa: float,
    area_mm2: float,
) -> float:
    if pressure_mpa < 0:
        raise ValueError("圧力は0以上である必要があります")

    return pressure_mpa * area_mm2


piston_area, annulus_area = cylinder_areas(
    bore_mm=50,
    rod_mm=30,
)

push_force_n = cylinder_force(
    pressure_mpa=10,
    area_mm2=piston_area,
)

pull_force_n = cylinder_force(
    pressure_mpa=10,
    area_mm2=annulus_area,
)

print(push_force_n / 1000)
print(pull_force_n / 1000)

およそ、

19.63
12.57

kNとなります。

正味推力も関数化できる

両室の圧力を考慮するなら、

def net_extension_force(
    bore_mm: float,
    rod_mm: float,
    cap_pressure_mpa: float,
    rod_pressure_mpa: float,
) -> float:
    piston_area, annulus_area = cylinder_areas(
        bore_mm,
        rod_mm,
    )

    return (
        cap_pressure_mpa * piston_area
        - rod_pressure_mpa * annulus_area
    )

のようにできます。

ここでは摩擦をまだ含めていません。

つまり、

幾何形状
↓
受圧面積
↓
圧力による理論力
↓
背圧補正
↓
摩擦等の補正
↓
使用可能推力

と段階を分けて設計できます。

この分離は計算ロジックを検証するときにも有効です。

データ構造として保持する

シリンダ計算を再利用するなら、寸法と単位を構造化できます。

{
  "bore": {
    "value": 50,
    "unit": "mm"
  },
  "rod": {
    "value": 30,
    "unit": "mm"
  },
  "cap_pressure": {
    "value": 10,
    "unit": "MPa"
  },
  "rod_pressure": {
    "value": 0.5,
    "unit": "MPa"
  }
}

計算結果も、

{
  "piston_area_mm2": 1963.5,
  "annulus_area_mm2": 1256.6,
  "theoretical_push_force_kn": 19.6
}

のように構造化できます。

こうしておけば、同じ計算ロジックをPython、Webアプリ、API、Excel出力などから共有できます。

推力だけでシリンダを選定しない

必要推力を満たしたとしても、シリンダ選定が完了したわけではありません。

少なくとも、

  • 使用圧力
  • 内径
  • ロッド径
  • ストローク
  • ロッド座屈
  • 取付形式
  • 横荷重
  • 作動速度
  • 必要流量
  • クッション
  • 使用温度
  • 作動油
  • シール仕様

などを確認する必要があります。

実際のメーカー製品にも、使用圧力、ボア径、ロッド径、ストローク、速度など複数の制約があります。たとえばParkerのMA3シリーズでも、ボア、ロッド径、最大ストローク、伸長・収縮時推力、速度、使用圧力などが個別に仕様化されています。

したがって、F=pA

はシリンダ選定の入口であり、選定全体そのものではありません。

まとめ

油圧シリンダの基本推力は、F=pA

で求められます。

押し側の受圧面積は、Ap​=4πD2​

です。

片ロッドシリンダの引き側では、Aa​=4π​(D2−d2)

となります。

したがって、Fpush​=pAp​Fpull​=pAa​

です。

さらに実際の回路では背圧があるため、F=p1​Ap​−p2​Aa​

のように両側の圧力を考える必要があります。

重要なのは「圧力×面積」という式だけを覚えることではなく、

シリンダ寸法
↓
有効受圧面積
↓
各室圧力
↓
理論推力
↓
背圧・摩擦
↓
必要余裕
↓
シリンダ選定

という計算構造として理解することです。

この構造まで分離しておけば、手計算だけでなく、Python計算、Webツール、機器選定ロジックへ発展させられます。

参考情報

Parker Series HMI Metric Hydraulic Cylinders — Theoretical Push and Pull Forces 

Parker Mobile Cylinders — Hydraulic Theory 

参考になったらシェアしてください
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

機械設計・油圧・CAD・Python・AIなど、ものづくりに関わる技術を扱っています。工学知識を整理・構造化し、設計や自動化に再利用できる形へ変えていくことを目指しています。

目次