حساب اختيار آلية الرفع للرافعة الكهربائية ببايثون
نص برمجي بلغة Python لاختيار آلية الرفع للرافعة الكهربائية ينطلق من أربعة معاملات إدخال: سعة الرفع المقدرة Q، وسرعة الرفع v، وارتفاع الرفع H، وفئة التشغيل A، ليقوم تلقائيًا بحساب قوة المحرك (وفقًا لمعيار ISO 4301 / FEM 1.001)، ومطابقة نسبة التخفيض (JB/T 9008.1)، وتصميم أبعاد الأسطوانة، واختيار الحبل السلكي (GB/T 8918)، والتحقق من المكبح (عزم الكبح ≥ 1.5 ضعف عزم الحمل)، ليخرج في النهاية خطة اختيار متكاملة لآلية الرفع. يتضمن النص البرمجي وظيفة تصدير تقرير Excel، وهو مناسب للرافعات الكهربائية القياسية CD1/MD1 وسيناريوهات التخصيص غير القياسية.
يتطلب حساب اختيار آلية الرفع للرافعة الكهربائية مطابقة والتحقق من خمسة معاملات أساسية: قوة المحرك، ونسبة التخفيض، وأبعاد الأسطوانة، وقطر حبل السلك، وعزم دوران المكبح. الطريقة التقليدية تعتمد على مراجعة الأدلة اليدوية والحساب اليدوي والتصحيح بناءً على الخبرة، وهي طريقة تستغرق وقتًا طويلاً وعرضة للأخطاء، ولا تتيح مقارنة متعددة للبدائل بشكل فعّال. يقدم هذا المقال نصًا برمجيًا متكاملًا بلغة Python، حيث يُدخل المستخدم أربعة معاملات فقط — سعة الرفع، والسرعة، والارتفاع، وفئة التشغيل — ليقوم البرنامج تلقائيًا بحساب جميع معاملات الاختيار والتحقق من مطابقة كل مؤشر لمتطلبات المعايير الوطنية. وقد استُخدم هذا النص البرمجي داخليًا في كيلود للصناعات الثقيلة لاختيار أكثر من 20 رافعة كهربائية غير قياسية، وكان الانحراف بين نتائج الحساب والقياسات الفعلية أقل من 5%.
أساسيات حساب اختيار آلية الرفع
| بنود الحساب | المعادلة | شرح الرموز | المرجع |
|---|---|---|---|
| قوة المحرك | P = (Q+G0) x v / (6120 x eta) | Q-سعة الرفع(kg) G0-الوزن الذاتي (كجم) v-سرعة(m/min) eta-الكفاءة(0.85) | معيار ISO 4301 / FEM 1.001 |
| قطر حبل السلك | d_min = C x sqrt(F_max) | C-الاختيارمعامل(0.095) F_max-أقصى قوة شد(N) | GB/T 8918-2006 |
| قطر الأسطوانة | D ≥ h1 x h2 x d | h1-أسطوانةمعامل(16~25) h2-الحبلمعامل(1.0) d-قطر الحبل | معيار ISO 4301 / FEM 1.001 |
| أسطوانةالطول | 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) | معيار ISO 4301 / FEM 1.001 |
ثانيًا: سكربت الحساب بلغة بايثون (قابل للتشغيل الكامل)
2.1 فئة الحساب الأساسية
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ اختيار آلية الرفع للرافعة الكهربائية نوعأداة حسابية الإصدار: 2.0 المؤلف: كيلود المركز الفني المرجع: ISO 4301 / FEM 1.001, 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: """ حساب قوة محرك الرفع (ISO 4301 / FEM 1.001) 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: """حساب معاملات الأسطوانة (ISO 4301 / FEM 1.001 + 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: """تدقيق المكبح (ISO 4301 / FEM 1.001)""" 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
الأسئلة الشائعة
س: هل يمكن استخدام سكربت الحساب مباشرة في التصنيع والإنتاج؟
ج: السكربت مخصص لتصميم المخططات والاختيار الأولي، ودقة الحساب تلبي متطلبات مرحلة الاختيار (الانحراف <5%). ومع ذلك، عند الاستخدام الرسمي في التصنيع، يجب التحقق من المعاملات الفعلية للموردين بناءً على المحرك ومخفض السرعة والمكبح المختارة، وإصدار كشف حساب رسمي. معامل أمان الحبل السلكي في السكربت يُؤخذ بعين الاعتبار عند 4.5 (وفقًا لـ ISO 4301)، وإذا كان مستوى التشغيل أعلى من 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)، يُنصح بمراعاة ما يلي: ① تقريب قوة المحرك إلى الأعلى إلى القدرة القياسية؛ ② تقريب قطر الأسطوانة إلى الأعلى إلى المواصفات القياسية بناءً على القيمة المحسوبة؛ ③ بعد التوزيع على ثلاث مراحل، تأكيد نسبة التخفيض مع المورد للتأكد من إمكانية تصنيعها؛ ④ يُفضل اختيار منتجات المكبح من السلسلة القياسية لتقليل التكلفة وتقصير موعد التسليم.
المعايير القياسية الموصى بها
• JB/T 10220-2014 «مكبح للرافعات الكهربائية»
• JB/T 10221-2014 «أسطوانة للرافعات الكهربائية»
• FEM 1.001 «رافعات متحركة - آلية الرفع»