首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

发动机缸孔镗孔加工表面粗糙度预测的实现

 这是金属加工(mw1950pub)发布的第17032篇文章

编者按

机加工过程中为保证产品质量,传统的方法是通过频繁抽检、过程能力管控等方法来实现。随着机器学习以及各种预测模型框架的发展,通过分析采集到的过程参数来实时预测质量结果成为可能。以缸孔表面粗糙度的预测为例,介绍整个数据采集、分析及建模过程,通过对表面粗糙度的预测为其他尺寸、形状特性的预测积累经验。

1.序言

机械加工过程中会按照图样保证加工零件的尺寸、位置关系、形状误差、表面粗糙度和清洁度等,这些图样特性一般是通过加工后测量、过程能力管控来保证。加工后测量需要耗费人力和检测设备;过程能力管控的方法对过程能力合格期间的预测可行,但是能力不稳定(如换刀、季节交替等)时无法准确预测加工质量。最近几年依托机器学习以及各种预测模型框架(TensorFlow、PyTorch等)的发展对于加工质量的管控,有可能开发一种通过分析采集到的过程参数来实时预测质量结果的预测模型,模型可以通过对工件加工过程中多种设备、环境参数的分析来实时预测加工质量[1,2]。本文希望通过实时采集发动机缸孔镗孔加工过程中的设备、环境等过程参数,利用计算机分析各个参数与产品质量的关系来快速预测缸孔加工的表面粗糙度,从而减少抽检频次,降低劳动强度。

2.预测的原理与实现方法

2.1 预测原理

预测模型建立过程如图1所示。机械加工过程中有经验的操作人员可以通过观察机床的振动、加工过程中的切屑形式、切削液的温度以及感受环境的温度来判断加工过程是否正常,因此我们可以通过各种传感器来收集加工过程中不同阶段的振动、功率、温度和切削液流量的变化等来评估加工出来产品的质量是否与正常产品有区别。如果通过大数据统计这些已知的过程变量并且收集足够的对应的产品测量数据,就可以通过机器学习的方法找到这些变量与产品质量的关系,从而通过实时收集这些过程数据计算出将来产品的质量。

图1 预测模型建立过程

2.2 表面粗糙度预测实现方法

本文以发动机缸孔镗孔表面粗糙度的在线预测为例进行介绍。图2为缸孔加工的刀具布置,其中直径为138.5mm的孔径要求表面粗糙度值Ra=1.8μm(即D刀1-1和2加工阶段),是加工过程中的关键参数。为保证加工合格并且刀具寿命最大化,在该项目实施前,采取每加工30件人工抽检1件的检测策略。

图2 缸孔加工刀具布置

(1)系统拓扑 图3为预测系统的拓扑示意,展示了从传感器收集、模型训练到预测提醒的关键流程步骤。其中数据收集过程中收集到的数据集中存储在内部文件服务器,模型训练时使用高性能的AI服务器对数据进行处理并对原始数据加参数形成预测模型。模型形成后调用模型并输入实时采集到的过程数据进行表面粗糙度预测,然后把预测结果通过邮件服务发送给相关工程师。设备与网路配置如图4所示。

图3 系统拓扑

图4 设备与网路配置

(2)实现过程简述 主要过程如下。

1)振动采集。通过在机床主轴布置振动传感器(见图5),利用吉兰丁振动数据采集卡按照时序采集加工过程中的振动数据,保存图2中D刀1-1加工阶段关键点的振动速度有效值,数据采集之后通过对连续数据进行时序分析,找到从上料设备获取的对应需要预测的产品零件号,匹配之后得到零件振动数据。一个振动方向多个零件关键预测点的振动曲线如图6所示。

图5 机床主轴振动传感器

图6 关键预测点振动曲线

2)功率采集。通过增加主轴功率采集模块,采集到主轴功率信息。图7是一个缸孔加工精加工工步单轴的功率时序信号,图8是精加工刀具不同位置信号对应多个加工过程复合展示的功率信息。加工过程分为4个阶段,参考图2中的缸孔加工刀具布置,通过对加工时序分析,图8中第1、3阶段功率曲线是加工表面粗糙度值Ra=1.8μm的缸孔特征时产生的,这两个阶段对加工质量具有影响力。对时序数据进行分析,匹配零件号之后获取到加工过程中关键预测点的功率信息。

图7 缸孔精加工时单轴功率时序信号

图8 多个加工过程复合展示的功率信息

3)温度和刀具寿命采集。数据采集工业电脑上配置的Python脚本通过Snap7插件采集加工设备上的温度信息、对应时序的工件号并保存为原始数据表,为后续模型建立提供温度、零件号等数据[3]。简单示例代码如下,其中Data为需要采集的温度以及预测中需要用到的零件号等信息。

import snap7

import struct

PLCIP·= "146.91.114.180"

PLCRACK =0#normally 0

PLCSLOT =2 #S200 =1, s7-300=2

readdbaddress=902

read dbstartnum=10

read_dblength=20

def plc_read_data():

plc =snap7.client.Client()

plc.connect(PLCIP,PLCSLOT,PLCSLOT)

dbread_902 = p1c.db_read(read_dbaddress,

read_dbstartnum,

read_dblength)

Data =struct.unpack(">16s",dbread_902[0:16])

plc.disconnect()

ToolLife=Data[0:2]

Temperatruel=Data[3:4]

PN=Data[4:16]

4)实际质量标签数据采集。本文案例验证的是表面粗糙度数据,通过人工采集方式(见图9)来获取表面粗糙度质量标签数据,采集后的数据录入记录软件或者直接录入表格,获得以零件号为索引的表面粗糙度质量标签(实际表面粗糙度值),生成的数据示例见表1,其中SN指零件号,Date Inspect指录入日期,Time Inspect指录入时间,RaCylinder4一列为相应孔号的缸孔表面粗糙度值Ra(μm)。

图9 表面粗糙度检测方式

表1 表面粗糙度质量标签

通过python脚本对所有收集到的数据(振动、功率、温度、刀具寿命和表面粗糙度)在每个工件加工完成后自动进行汇总,会获得以零件号为索引的原始加工过程参数信息记录表。训练阶段收集到的数据带有质量标签,预测阶段无需质量标签。

5)相关性分析、提取强相关数据,合并汇总获取AI学习基本参数表。对原始加工过程参数信息记录表进行相关性分析,找到影响表面粗糙度质量的强相关过程参数,为下一步实施预测选定关键过程参数。使用Minitab对所有采集到过程参数进行分析后,可以看到当前样本量下各个过程参数与表面粗糙度的相关程度,具体示例见表2。过程参数中,Sp1指主轴1,Sp2指主轴2,VibrationX/Y/Z Rms分别指X轴/Y轴/Z轴振动速度有效值,Power Mean指功率平均值,Power Peak指功率峰值。通常选取相关程度>0.5的参数作为预测表面粗糙度的输入参数,例如可以选取主轴1各方向的振动以及主轴1的功率平均值作为表面粗糙度预测模型的输入参数。

表2 相关程度分析示例

6)机器学习,获得模型。通过以上操作,已经可以实时获得加工过程中的过程数据以及对应的质量标签,也通过相关性分析找到了相关性强的多个过程参数,因此通过机器学习可以分层给过程数据增加参数,拟合出一个线性的预测模型,然后再使用这个模型对每次加工的过程数据进行运算,获取预测出来的质量结果。

建立模型使用的编程语言为Python,使用的模型框架为TensorFlow2.0。其中为了训练以及预测建立了一个Forecast的类,类中定义了预测的孔号self.holes、增加参数的网络层数与数量(lay1,lay2,lay3)、层数、训练次数epochs_num(可以在调用类时人工定义数量)以及模型保存时的标记mark_model。定义了两个学习函数:其一是FitRaAandSensor函数,用于训练原始数据并构建、保存训练后的模型;其二是Forecast_im函数,负责对收集到的原始传感器数据进行预测,预测后会输出一个含有预测结果的表格“Forecast_current.csv”,表格后续可以通过相关Python的编程发邮件到工程师,以便于工程师及时对现场问题进行响应。程序如下。

class Forecast_1(object):

def __init__(self,holes,lay1,lay2,lay3,epochs_num,mark_

model):

print("ini Forecast")

# self.inputshape = inputshape

self.holes = holes

self.lay1 = lay1

self.lay2 = lay2

self.lay3 = lay3

self.epochs_num = epochs_num

self.mark_model = mark_model

self.envluelist_cy4 = ["Sp1 VibrationX Rms D-2", "Sp1

VibrationZ Rms D-2",

"Sp1 VibrationX Rms D-3", "Sp1 VibrationY Rms D-3",

"Sp1 VibrationZ Rms D-3", "Sp2 VibrationX Rms D-3"]

global input_shape_len

input_shape_len = len(self.envluelist_cy4)

def FitRaAndSensor(self):

d a t a = p d.r e a d_c s v("R o u g h_S t u d y_D a t a.c s v",

encoding="ANSI")#Rough_Study_Data

LENTH_DF = int(len(data))

hole = self.holes

if hole == 4:

x = data.loc[:LENTH_DF - 1,self.envluelist_cy4]

x = x * 1.0

x_test = data.loc[LENTH_DF - 1:, self.envluelist_cy4]

x_test = x_test * 1.0

y = data.loc[:LENTH_DF - 1, ['RaCylinder4']]

y_test = data.loc[LENTH_DF - 1:, ['RaCylinder4']]

model = tf.keras.Sequential()

model_name = "model" + "_hole_" + str(self.holes) + "_"

+ str(self.lay1) + "_" + str(self.lay2) + "_"

+ str(self.lay3) + "_" + str(self.epochs_num)

+ "_" + self.mark_model + ".ckpt"

FitSwitch = "y"

if FitSwitch.upper() == "Y":

input_shape=(input_shape_len,),

activation='relu')) # 10 means x 个数

if self.lay3 > 2:

#sigmoid

model.compile(optimizer='adam',

loss='mse')

model.fifit(x, y, epochs=self.epochs_num)

print(y_test)

print("*" * 50)

print(model.predict(x_test))

model.save_weights('../QualityRaForecast2022/model_

path/' + model_name)

# model.save("model_1.h5")

xx = data.loc[:, self.envluelist_cy4]

data["ForecaseCy4"]=model.predict(xx)

data.to_csv("evaluated_cy4.csv")

del model

def Forecast_im(self):

data = pd.read_csv("SensorData.csv", encoding="ANSI")

model_name = "model" + "_hole_" + str(self.holes) + "_"

+ str(self.lay1) + "_" + str(self.lay2) + "_"

+ str(self.lay3) + "_" + str(self.epochs_num)

+ "_" + self.mark_model + ".ckpt"

model = tf.keras.Sequential()

input_shape=(input_shape_len,),

activation='relu')) # nums of x

if self.lay3 > 2:

model.compile(optimizer='adam',

loss='mse')

model.load_weights(model_name)

d f_f o r e c a s t_a l l = p d.r e a d_c s v("S e n s o r D a t a.c s v",

encoding="ANSI")

data_forecast_all =df_forecast_all.loc[:, self.envluelist_cy4]

df_forecast_all["Forecast_CY4"] = model.predict(data_

forecast_all)

df_forecast_all.to_csv("forecast_current.csv")

训练过程中的自动验证界面如图10所示,预测偏差在0.1左右,要求表面粗糙度值Ra=1.8μm的训练验证集的预测偏差在10%上下,基本满足预测需求,但仍需要持续改进。

图10 自动验证界面

7)实时预测展示。运行模型通过过程参数预测质量,并对超差进行报警提示。实时预测反馈邮件如图11所示。本预测模型定期可以进行自动学习,长时间收集到的质量标签数据越多,建立的模型会越精确。

图11 实时预测反馈邮件

3.实际使用验证与误差分析

预测与实际检测表面粗糙度对比曲线如图12所示,从统计上看总体平均误差在15%左右。

图12 预测与实际检测对比

通过机器学习获得模型后可以实现初步的在线质量预测,当前过程中检测频次从原来30件抽检1件降低到了90件抽检1件。后续随着预测精度的提高,有望继续减少人工抽检频率,大幅提高生产效率与质量水平。

4.结束语

使用本文介绍的方法,可以在线监控加工过程中的功率、振动和温度等相关过程参数,通过机器学习等方法找到过程参数与缸孔表面粗糙度的关系,从而通过实时采集过程参数来预测出缸孔镗孔的具体表面粗糙度值。这种方法可以提前或者及时发现质量问题,降低废品率,以及降低批量生产过程中的抽检频率,从而降低生产成本。本文虽仅以表面粗糙度为例进行介绍,但这种预测方法是基于加工过程中基础的过程参数来做质量预测,发动机零部件批量生产过程中的几何公差的变化均会在这些过程参数上有所体现,因此本文介绍的方法可以拓展到加工过程中其他几何误差的预测,具有很高的实用性和推广价值。

参考文献:

[1] 龙良曲. TensorFlow深度学习——深入理解人工智能算法设计[M]. 北京:清华大学出版社, 2020.

[2] 黄玉萍,梁炜萱,肖祖环. 基于TensorFlow和PyTorch的深度学习框架对比分析[J]. 现代信息科技,2020,4(4):4.

[3] 李坡,王丹. 基于Snap7的西门子PLC以太网客户端开发[J]. 江苏高职教育,2019,19(1):56-59.

本文发表于《金属加工(冷加工)》2023年第7期66~72,作者:北京福田康明斯发动机有限公司  金航宇,杨波,邱国生,吕成伟,原标题:《发动机缸孔镗孔加工表面粗糙度预测的实现》。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OCkB4wc4PGbLXhPLLD3vlIFA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券