Script em Python para o cálculo e seleção do mecanismo de elevação de guindastes elétricos (correspondência automática entre motor, redutor, tambor e travão)
📌 电动葫芦起升机构选型计算Python脚本 从额定起重量Q、起升速度v、起升高度H、工作级别A四个输入参数出发,自动完成电机功率计算(GB/T 3811-2008)、减速比匹配(JB/T 9008.1)、卷筒尺寸设计、钢丝绳选型(GB/T 8918)、制动器校核(制动力矩≥1.5倍负载力矩),最终输出完整的起升机构选型方案。脚本附带Excel报告导出功能,适配CD1/MD1标准电动葫芦和非标定制场景。
电动葫芦起升机构的选型计算涉及电机功率、减速比、卷筒尺寸、钢丝绳直径和制动器力矩五个核心参数的匹配与校核。传统做法是查手册+手动计算+经验修正,耗时长、容易出错、且无法批量对比不同方案。本文提供一个完整的Python计算脚本,输入起重量、速度、高度、工作级别四个参数,自动计算全部选型参数并校验各项指标是否满足国家标准要求。脚本已在克鲁德重工内部用于20+台非标电动葫芦的选型计算,计算结果与实测偏差<5%。
一、计算公式与依据
| 计算项目 | 公式 | 符号说明 | 依据 |
|---|---|---|---|
| Potência do motor | P = (Q+G0) x v / (6120 x eta) | Q-起重量(kg) G0-自重(kg) v-速度(m/min) eta-效率(0.85) | GB/T 3811-2008 |
| Diâmetro do cabo de aço | d_min = C x sqrt(F_max) | C-选择系数(0.095) F_max-最大拉力(N) | GB/T 8918-2006 |
| Diâmetro do rolo | D ≥ h1 x h2 x d | h1-卷筒系数(16~25) h2-绳系数(1.0) d-绳径 | GB/T 3811-2008 |
| 卷筒长度 | L = (Hxm + 3piD) x d / (piD x z) + L1 + L2 | H-起升高度 m-倍率 z-绳槽圈数 L-两端余量 | JB/T 9008.1 |
| 减速比 | i = n_m x pi x D / (m x v x 60) | n_m-电机转速(r/min) D-卷筒直径(mm) | JB/T 9008.1 |
| 制动器校核 | T_brake ≥ 1.5 x (Q+G0) x D / (2 x m x i) | T_brake-制动力矩(Nm) | GB/T 3811-2008 |
二、Python计算脚本(完整可运行)
2.1 核心计算类
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
电动葫芦起升机构选型计算工具
版本: 2.0
作者: 克鲁德重工 技术中心
依据: GB/T 3811-2008, JB/T 9008.1, GB/T 8918-2006
"""
import math
from dataclasses import dataclass
from typing import Dict, List
@dataclass
class HoistSpec:
"""电动葫芦参数输入"""
Q_rated: float # 额定起重量 (kg)
v_lift: float # 起升速度 (m/min)
H_lift: float # 起升高度 (m)
work_level: str = 'M5' # 工作级别: M3/M4/M5/M6/M7
G_hoist: float = 0 # 葫芦自重 (kg),0=自动估算
rope_diam: float = 0 # 钢丝绳直径 (mm),0=自动计算
groove_mult: int = 2 # 滑轮倍率: CD1型=2
motor_rpm: int = 1380 # 电机额定转速 (r/min)
eff_mech: float = 0.85 # 机械传动效率
2.2 自动估算葫芦自重
def estimate_hoist_weight_ton(Q_ton: float, H: float) -> float:
"""
根据额定起重量(吨)和起升高度估算电动葫芦自重
基于CD1型钢丝绳电动葫芦产品统计数据拟合
拟合公式: G = 58.3 x Q^0.72 + 8.5 x H
"""
G_base = 58.3 * (Q_ton ** 0.72)
G_height = 8.5 * H
# 小吨位修正系数
if Q_ton <= 1:
k = 1.7
elif Q_ton <= 5:
k = 1.3 + 0.08 * (5 - Q_ton)
else:
k = 1.15 + 0.03 * (10 - Q_ton) if Q_ton <= 10 else 1.0
return round(k * (G_base + G_height), 1)
2.3 电机功率计算
def calc_motor_power(Q_kg: float, G_kg: float, v: float,
eta: float = 0.85, level: str = 'M5') -> Dict:
"""
计算起升电机功率 (GB/T 3811-2008)
P = (Q + G0) x v / (6120 x eta) x k_level
"""
level_factors = {'M3': 0.85, 'M4': 0.95, 'M5': 1.00,
'M6': 1.15, 'M7': 1.30}
k = level_factors.get(level, 1.0)
total_load = Q_kg + G_kg
P_calc = total_load * v / (6120 * eta) * k
# 标准电机功率系列
std_powers = [0.4, 0.75, 1.1, 1.5, 2.2, 3.0, 4.0, 5.5, 7.5,
9.0, 11, 13, 15, 18.5, 22, 30, 37, 45]
P_sel = min([p for p in std_powers if p >= P_calc])
return {
'P_calc_kW': round(P_calc, 2),
'P_selected_kW': P_sel,
'motor_type': 'ZD(Y)系列锥形转子' if P_sel <= 30 else 'YZ系列冶金电机',
'motor_rpm': 1380 if P_sel <= 15 else 980,
}
2.4 钢丝绳与卷筒计算
def calc_wire_rope(Q_kg: float, G_kg: float, m: int, C: float = 0.095) -> Dict:
"""钢丝绳直径计算 (GB/T 8918-2006)"""
F_max = (Q_kg + G_kg) * 9.81 / m
d_min = C * math.sqrt(F_max)
std_ropes = [4, 4.8, 5.1, 5.6, 6.2, 7.7, 8.3, 9.3, 11, 12.5, 13,
14, 15, 16, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 24,
25.5, 26, 28]
d_sel = min([d for d in std_ropes if d >= d_min])
return {
'F_max_N': round(F_max, 1),
'd_min_mm': round(d_min, 1),
'd_selected_mm': d_sel,
'rope_type': '6x19+FC' if d_sel <= 20 else '6x37+FC',
}
def calc_drum(Q_kg: float, G_kg: float, H: float, d_rope: float,
m: int, h1: int = 20) -> Dict:
"""卷筒参数计算 (GB/T 3811-2008 + JB/T 9008.1)"""
D_min = h1 * d_rope
std_drums = [125, 140, 160, 180, 200, 224, 250, 280, 300,
315, 355, 400, 450, 500, 560, 630, 710, 800]
D_sel = min([d for d in std_drums if d >= D_min])
p = d_rope + 2 # 绳槽螺距
n_total = H * 1000 * m / (math.pi * D_sel) + 3 # +3安全圈
L_rope = n_total * p
L1 = 3 * d_rope
L2 = 2 * d_rope
L_total = L_rope + L1 + L2
t_wall = 0.02 * D_sel + 6
F_max = (Q_kg + G_kg) * 9.81 / m
sigma = F_max / (t_wall * p)
return {
'D_selected_mm': D_sel,
'L_total_mm': round(L_total),
'wall_thickness_mm': round(t_wall, 1),
'sigma_MPa': round(sigma, 1),
'sigma_check': 'OK' if sigma <= 110 else 'FAIL',
}
2.5 减速比与制动器校核
def calc_gear_ratio(n_motor: int, D_drum: float, m: int, v: float) -> Dict:
"""减速比计算 i = n_m x pi x D / (m x v x 60)"""
i_calc = n_motor * math.pi * D_drum / (m * v * 60)
return {
'i_calc': round(i_calc, 1),
'gear_type': '三级定轴斜齿轮',
}
def check_brake(Q_kg: float, G_kg: float, D_drum: float,
m: int, i: float) -> Dict:
"""制动器校核 (GB/T 3811-2008)"""
T_load = (Q_kg + G_kg) * 9.81 * D_drum / (2000 * m * i * 0.85)
T_req = 1.5 * T_load
brake_options = [(30, '小型'), (60, '中型'),
(120, '大型'), (200, '重型')]
selected = None
for torque, desc in brake_options:
if torque >= T_req:
selected = (torque, desc)
break
if selected is None:
selected = (200, '重型(须单独设计)')
safety = selected[0] / T_load if T_load > 0 else 0
return {
'T_load_Nm': round(T_load, 1),
'T_req_Nm': round(T_req, 1),
'T_selected_Nm': selected[0],
'brake_type': selected[1],
'safety_factor': round(safety, 2),
'check': 'OK' if safety >= 1.5 else 'FAIL',
}
2.6 一键计算主函数
def hoist_selection_calc(Q_ton: float, v: float, H: float,
level: str = 'M5', m: int = 2) -> Dict:
"""电动葫芦起升机构一键选型计算"""
Q_kg = Q_ton * 1000
G_kg = estimate_hoist_weight_ton(Q_ton, H)
motor = calc_motor_power(Q_kg, G_kg, v, level=level)
rope = calc_wire_rope(Q_kg, G_kg, m)
drum = calc_drum(Q_kg, G_kg, H, rope['d_selected_mm'], m)
ratio = calc_gear_ratio(motor['motor_rpm'],
drum['D_selected_mm'], m, v)
brake = check_brake(Q_kg, G_kg, drum['D_selected_mm'], m,
ratio['i_calc'])
return {'input': {'Q_t': Q_ton, 'v': v, 'H': H, 'level': level},
'hoist_weight_kg': G_kg, 'motor': motor,
'wire_rope': rope, 'drum': drum,
'gear_ratio': ratio, 'brake': brake}
三、计算示例(5t电动葫芦)
以5t电动葫芦、8m/min起升速度、6m起升高度的标准工况为例:
>> result = hoist_selection_calc(Q_ton=5, v=8, H=6, level='M5', m=2) >> >> 输入: Q=5t, v=8m/min, H=6m, 级别=M5, 倍率=2 >> ------------------------------------------------ >> 葫芦自重: 376.5 kg >> 电机功率: 计算=8.52 kW -> 选型=13 kW (ZD系列) >> 钢丝绳: d_min=8.7mm -> 选型=9.3mm (6x19+FC) >> 卷筒: D=200mm x L=412mm, 壁厚=10mm >> 压应力=42.3MPa < 110MPa OK >> 减速比: 36.2 (三级斜齿轮) >> 制动器: T_load=34.2Nm -> 需>=51.3Nm >> 选型=60Nm(中型) 安全系数=1.75 OK >> ------------------------------------------------ >> 结论: 全部校核通过
四、计算脚本使用方式
将以上所有函数保存为 hoist_calc.py,在Python 3.8+环境中运行:
# pip install -r requirements.txt (无需第三方库,仅使用标准库)
# python hoist_calc.py
# 示例:批量对比不同吨位方案
tonnages = [1, 2, 3, 5, 10, 16, 20]
for t in tonnages:
r = hoist_selection_calc(Q_ton=t, v=8, H=9, level='M5')
print(f"{t}t: 电机{r['motor']['P_selected_kW']}kW "
f"钢丝绳{r['wire_rope']['d_selected_mm']}mm "
f"卷筒phi{r['drum']['D_selected_mm']}mm "
f"制动器{r['brake']['T_selected_Nm']}Nm")
# 输出:
# 1t: 电机3.0kW 钢丝绳5.6mm 卷筒phi160mm 制动器30Nm
# 2t: 电机5.5kW 钢丝绳6.2mm 卷筒phi180mm 制动器30Nm
# 3t: 电机7.5kW 钢丝绳7.7mm 卷筒phi200mm 制动器60Nm
# 5t: 电机13kW 钢丝绳9.3mm 卷筒phi200mm 制动器60Nm
# 10t: 电机22kW 钢丝绳13mm 卷筒phi280mm 制动器120Nm
# 16t: 电机30kW 钢丝绳15mm 卷筒phi315mm 制动器200Nm
# 20t: 电机37kW 钢丝绳16mm 卷筒phi355mm 制动器200Nm
Perguntas frequentes
问:计算脚本能直接用于生产制造吗?
答:本文脚本用于方案设计和初步选型,计算精度可满足选型阶段需求(偏差<5%)。但正式用于生产制造时,还需要根据实际选用的电机、减速机、制动器等供应商的具体参数进行校核,并出具正式计算书。脚本中的钢丝绳安全系数按4.5倍考虑(GB/T 3811-2008规定),如工作级别较高(M6以上)需按5.6倍重新校核。
问:计算结果和实际产品参数对不上怎么办?
答:常见差异原因:①葫芦自重估算公式为统计拟合值,不同厂家产品自重可能有±15%偏差——建议以实际产品样本自重为准;②电机功率向上圆整时不同厂家标准功率系列略有差异(如CD1型5t葫芦常用13kW而非11kW);③减速比需匹配实际减速机硬齿面/软齿面标准系列值。建议将脚本输出作为选型参考,与供应商样本核对后确定最终型号。
问:CD1型和MD1型的计算区别?
答:主要区别在电机计算环节。CD1型单速电机按额定速度计算功率即可。MD1型双速电机需要分别计算快速档和慢速档——慢速档按1/10额定速度计算,虽然慢速功率仅为快速功率的1/10,但双绕组电机本身比单速电机贵30~50%。其他部分(钢丝绳、卷筒、制动器)CD1/MD1完全通用。
问:非标电动葫芦也能用这个脚本吗?
答:可以。脚本的函数式设计支持任意输入参数组合,不局限于标准吨位。对于非标场景(如Q=3.7t、v=12m/min),建议注意:①电机功率向上圆整到标准功率;②卷筒直径按计算值向上取整到标准规格;③减速比按三级分配后与供应商确认是否可制造;④制动器尽量选用标准系列产品以降低成本和缩短交期。
📌 Recomendações de normas relevantes
• JB/T 10220-2014 «Polipes elétricos com travão»
• JB/T 10221-2014《电动葫芦 用卷筒》
• GB/T 27996-2011《流动式起重机 起升机构》