SEW减速机参数查询 2-2 实践

2024-04-17 13:44

本文主要是介绍SEW减速机参数查询 2-2 实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先说说结论:在不和SEW官方取得沟通之前,你几乎无法直接通过查阅SEW官方文档得到相关减速机的所有技术参数:比如轴的模数和齿数,轴承的参数。我在周一耗费了一个上午,最终和SEW方面确认后才知晓相关技术参数需要凭借销售合同查询。不过,也把我做的搜集和尝试列在后面。

前面的参数查询里,漏掉了一种减速机,就是行星齿轮减速机。这个产品的故障频点需要另行分析。

1.一个失败的尝试 

案例一 Gear reducer 32.38:1 ST77DT100L4-KS 二手价 290刀
这个减速机是在bing.com上搜索"SEW gearbox ratio 35.5 tag",随机找到一个铭牌:
 

注意sn = 890036862.08.07.001

1.1 SEW资料库的资料全集:

首先在SEW资料库里找到,因为有序列号。

https://www.sew-eurodrive.cn/os/dud/?tab=productdata&country=CN&language=zh_cn1

1.1.1 产品参数:

从产品参数页面可以知道:

  • 变速比32.38
  • 460V/60Hz的电压是美标电机
Catalog designationST77DT100L4-KS
Product data 
Serial number                       890036862.08.07.001
Gear ratio                          32.38
Output speed                        52
Mounting position                   M4B
Shaft diameter                      NP-NS
Terminal box position               0
Cable entry at terminal box         X
Output torque (lb-in)               5375
Service factor                      1.7
Motor power                         5
Motor voltage                       230YY/460Y
Frequency                           60
Wiring diagram                      DT79
Rated current                       13.6/6.8
KVA Code                            G
Thermal class                       F
Other                               CB@0, CE X, Bore Size=1 5/8  
Weight on request

2.原始资料搜集和故障频点计算.py程序(片段)

频点计算部分可以自动进行。我现在的做法是使用.json搜集相关信息,然后使用python自动计算,请参见附录A,附录B.

最终我们需要计算出相关的故障频点有多少,分别隶属于哪根轴,哪个齿轮,那个轴承。在故障发生后,还需要反向查询这个故障频点表,来搜索出可能出问题的故障源。这个过程,无需人工参与,是可以自动计算的。

附录A 机械设备相关振动配置信息搜集(.json)

仅仅是一个示例

{"author": "fengxh","desc": "产品的一级参数录入,注意不要混入任何可以自动计算的结果","json_format": "1.0","created": "Apr16,2024","last_modify": "Apr16,2024","CAD_file": "xxxxx.pdf","unit": {"engine": {"type": "xxxx","manualfacture": "xxxx","PinKw": 30,"type_rpm": 730},"gearbox": {"type": "xxxxx","ratio": 75.577,"shaft_in": {"desc": "变速箱输入轴","memo": "输入轴 - 一个外齿轮,一个输入大齿轮,一个输出小齿轮,2个轴承","gear": [{"type": -1,"memo": "外齿轮","module": -1,"tooth": -1},{"type": -1,"memo": "输入大齿轮","module": -1,"tooth": -1},{"type": -1,"memo": "输出小齿轮","module": -1,"tooth": -1}],"bearing": [{"type": -1,"memo": "动力端轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1},{"type": -1,"memo": "随动轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1}]},"shaft_inter": [{"sn": 1,"desc": "变速箱二级输入轴","memo": "中间轴 - 一个输入大齿轮,一个输出小齿轮,2个轴承","gear": [{"type": -1,"memo": "输入大齿轮","module": -1,"tooth": -1},{"type": -1,"memo": "输出小齿轮","module": -1,"tooth": -1}],"bearing": [{"type": -1,"memo": "动力端轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1},{"type": -1,"memo": "随动轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1}]},{"sn": 2,"desc": "变速箱三级输入轴","memo": "中间轴 - 一个输入大齿轮,一个输出小齿轮,2个轴承","gear": [{"type": -1,"memo": "输入大齿轮","module": -1,"tooth": -1},{"type": -1,"memo": "输出小齿轮","module": -1,"tooth": -1}],"bearing": [{"type": -1,"memo": "动力端轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1},{"type": -1,"memo": "随动轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1}]}],"shaft_out": {"desc": "变速箱输出轴","memo": "输出轴 - 一个输入齿轮,2个轴承","gear": [{"type": -1,"memo": "输入大齿轮","module": -1,"tooth": -1}],"bearing": [{"type": -1,"memo": "动力端轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1},{"type": -1,"memo": "随动轴承","outer_edge_D_in_mm": -1,"inter_edge_D_in_mm": -1,"ball_D_in_mm": -1,"ball_cnts": -1}]}},"final_output": {"name": "齿轮齿条摇架","gear": [{"type": -1,"memo": "输入外齿轮","module": 20,"module_scale": "mm","tooth": 16},{"type": -1,"memo": "齿条","module": 20,"module_scale": "mm","length": 4631}]},"smooth_oil": {"desc": "润滑液","std_tempeature": -1,"deadline_tempeature": -1}}
}

附录B 故障频点自动解析程序(.py)

并不完整,仅显示部分逻辑。可以逆推处理的方法。

''''
''''class GpGearDesc:def __init__(self, module, tooth, ratioOfShaft):self.module = moduleself.tooth = toothself.ratioOfShaft = ratioOfShaftself.ratioOfGear = ratioOfShaft*toothdef __hash__(self):# 返回一个哈希值,通常可以使用内置类型的哈希值,比如元组return hash((self.module, self.tooth))def __eq__(self, other):# 定义相等性判断逻辑return isinstance(other, GpGearDesc) and (self.module == other.module) and (self.tooth == other.tooth)def __str__(self):return str("gear.errFreq:%8.3f, with(shaftRatio=%8.3f, module=%8.3f, tooth=%8.3f" (self.ratioOfGear, self.ratioOfShaft, self.module, self.tooth))def __repr__(self):return f"GpGearDesc('moudle = {self.module}', tooth = {self.tooth})"''''
''''
def getVibrationSensorList_v1(filename):# 读取JSON文件sensor_data={}with open(filename, 'r', encoding='utf-8') as file:sensor_data = json.load(file)# 初始化温振型传感器数量total_temperature_vibration_sensors = 0# 遍历每个单元sensor_location = []for unit in sensor_data["sensors"]:# 获取当前单元的温振型传感器数量unit_temperature_vibration_sensors = sum(unit["sensors"]["温振型"].values())locations =  unit["sensors"]["温振型"].keys();cntOfLocation =  unit["sensors"]["温振型"].values();for loc in unit["sensors"]["温振型"]:for j in np.arange(unit["sensors"]["温振型"][loc]):sensor_location.append(unit["unit"] + "\\" + loc + "\\" + str("%02d" %j))# 将当前单元的数量添加到总数中total_temperature_vibration_sensors += unit_temperature_vibration_sensors# 打印总数print("总温振型传感器数量:", total_temperature_vibration_sensors)     print(sensor_location)return sensor_locationdef doGearsOfShaft(gearsArray, shaftRpm, shaftName, arGear, last_gear_tooth):gearIdx = 1for gear in gearsArray:gearName = str(shaftName+"\\gear\\%d" %gearIdx)gearRpmRatio = shaftRpm;gearTooth = gear["tooth"]gearModule = gear["module"]arGear |= {gearName: GpGearDesc(gearModule, gearTooth, gearRpmRatio)}gearIdx=gearIdx+1last_gear_tooth = gearToothreturn last_gear_toothdef doBearingsOfShaft(bearingArray, shaftRpm, shaftName, arBearing):bearingIdx = 1for bearing in bearingArray:bearingName = str(shaftName +"bearing\\%d" %bearingIdx)outer_edge_D_in_mm = bearing["outer_edge_D_in_mm"]inner_edge_D_in_mm = bearing["inter_edge_D_in_mm"]ball_D_in_mm = bearing["ball_D_in_mm"]ball_cnts = bearing["ball_cnts"]arBearing |= {"bearingName": GpBearingDesc(outer_edge_D_in_mm*1e-3, inner_edge_D_in_mm*1e-3, ball_D_in_mm*1e-3, ball_cnts, shaftRpm)}bearingIdx += 1def getVibrationUnitsOf(arJsonFiles):ret=[]# 遍历每个单元arShaft = {}arGear = {}arBearing = {}for filename in arJsonFiles:# 读取JSON文件sensor_data={}with open(filename, 'r', encoding='utf-8') as file:sensor_data = json.load(file)# 初始化温振型传感器数量total_vibration_units = 0last_gear_tooth = -1for unit in sensor_data["unit"]:if "gearbox" == unit:shaftRpm = 1.0;if("shaft_in" in sensor_data["unit"]["gearbox"].keys()):si = sensor_data["unit"]["gearbox"]["shaft_in"]shaftName = filename + "\\gearbox\\shaft_in";shaftRpm = shaftRpm*si["gear"][0]["tooth"]/si["gear"][1]["tooth"]arShaft |= {shaftName:shaftRpm}last_gear_tooth = doGearsOfShaft(si["gear"], shaftRpm, shaftName, arGear, last_gear_tooth)doBearingsOfShaft(si["bearing"], shaftRpm, shaftName, arBearing)if("shaft_inter"):rpmUpdated = False;for si in sensor_data["unit"]["gearbox"]["shaft_inter"]:if not (rpmUpdated):shaftRpm = shaftRpm*si["gear"][0]["tooth"]/last_gear_toothrpmUpdated = TrueshaftName = filename + "\\gearbox\\shaft_inter";arShaft |= {shaftName:shaftRpm}last_gear_tooth = doGearsOfShaft(si["gear"], shaftRpm, shaftName, arGear, last_gear_tooth)doBearingsOfShaft(si["bearing"], shaftRpm, shaftName, arBearing)if("shaft_out" in sensor_data["unit"]["gearbox"].keys()):si = sensor_data["unit"]["gearbox"]["shaft_out"]shaftRpm = shaftRpm*si["gear"][0]["tooth"]/last_gear_toothshaftName = filename + "\\gearbox\\shaft_out";arShaft |= {shaftName: shaftRpm}last_gear_tooth = doGearsOfShaft(si["gear"], shaftRpm, shaftName, arGear, last_gear_tooth)doBearingsOfShaft(si["bearing"], shaftRpm, shaftName, arBearing)# 打印总数#return (arShaft, arGear, arBearing)

这篇关于SEW减速机参数查询 2-2 实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911956

相关文章

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键