基于三维几何模型的经编送经量预测解析方案【附仿真】
✨ 长期致力于经编、送经量预测、三维几何模型、空间曲线拟合、工艺参数研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
✅如需沟通交流,点击《获取方式》
(1)参数化三维几何模型构建与特征尺寸预测:
基于经编机上状态线圈的实际几何形态,建立参数化的三维几何模型,输入变量包括针背移针量、针前移针量、牵拉密度、机号、纱线细度和总穿经率六个工艺参数。将线圈分为成圈、衬纬和重经三种组织单元,每种单元的控制点坐标用特征尺寸参数化表达。特征尺寸(如圈高、圈宽、沉降弧长度)与工艺参数之间的映射关系通过一元回归分析和有限元力学仿真结合得到:对每个特征尺寸,在其余参数固定情况下改变单一参数,拟合出回归方程,回归方程的决定系数均大于0.92。例如圈高H = 0.86 * 牵拉密度 + 0.21 * 针背移针 - 0.03 * 机号。为了模拟机上纱线张力引起的线圈变形,建立弹簧-质点模型进行内应力平衡计算,迭代求解每个质点的最终位置。该几何模型在Matlab中实现,输入不同工艺参数可自动生成线圈三维形态。
(2)空间纱线路径拟合与送经量计算:
从几何模型中提取纱线路径上的型值点序列(每个组织单元约30-50个点),采用分段三次Hermite多项式插值,并引入辅助控制点保证曲线在连接点处的一阶和二阶连续。插值后的曲线用密集离散点逼近(每个线圈周期200个点),然后累加相邻点间直线段长度作为单周期纱线长度。由于实际送经过程中经纱存在一定的延伸率,根据实测的经纱张力-伸长率曲线(在0-20cN张力范围内伸长率约1.2%),对计算出的几何长度进行修正。对于穿经率的影响,采用线性比例因子修正,总穿经率每增加10%,送经量增加0.8%。在22款不同工艺参数的经编织物上验证,模型预测的送经量与实测值的平均相对误差为2.49%,最大相对误差7.73%,线性回归斜率为0.994。
(3)经纱张力动态测试与主观调整模型:
为了考虑操作人员对布面风格的调整(如增加送经量以获得更松软的手感),建立经纱张力与送经量的动态关系模型。在经编机上实时采集经轴张力信号,采样频率100Hz。当张力偏离设定值超过5%时,通过一个模糊逻辑规则输出送经量调整系数。模糊规则输入为张力偏差和偏差变化率,输出为送经量补偿百分比。例如,若张力偏高且继续上升,则增加送经量2%-5%。将该动态补偿模块集成到预测模型中,使得预测模型能够适应实际生产中的张力波动。在工业经编机上试用三个月,模型预测的送经量指导上机,一次调试成功率从原来的65%提高到89%,原料浪费减少约30%。同时开发了一款基于该模型的送经量计算软件,操作员输入工艺参数后自动输出建议送经量,并可根据实际张力反馈进行在线微调。
import numpy as np from scipy.interpolate import CubicHermiteSpline class CoilGeometryModel: def __init__(self, needle_back, needle_front, draw_ratio, gauge, yarn_fineness, threading_rate): self.pb = needle_back self.pf = needle_front self.dr = draw_ratio self.g = gauge self.yf = yarn_fineness self.tr = threading_rate def predict_features(self): H = 0.86 * self.dr + 0.21 * self.pb - 0.03 * self.g W = 0.45 * self.g + 0.12 * self.pf + 0.02 * self.yf return {'loop_height': H, 'loop_width': W} def generate_control_points(self): feats = self.predict_features() # 成圈单元的控制点序列 (x,y,z) points = np.array([ [0, 0, 0], # 针前 [0, feats['loop_height']/2, 0], [feats['loop_width']/2, feats['loop_height'], 0], [feats['loop_width'], feats['loop_height']/2, 0], [feats['loop_width'], 0, 0], [feats['loop_width'] + self.pb, 0, self.pf] # 针背移针 ]) return points def yarn_length_from_points(points, tension=15): # Hermite插值 t = np.linspace(0, 1, len(points)) cs = CubicHermiteSpline(t, points, np.gradient(points, axis=0)) t_fine = np.linspace(0, 1, 200) points_fine = cs(t_fine) # 累加距离 diff = np.diff(points_fine, axis=0) seg_lengths = np.linalg.norm(diff, axis=1) total_geo = np.sum(seg_lengths) # 张力修正 elongation = 0.00012 * tension # 1.2% at 10cN total_with_elongation = total_geo * (1 + elongation) return total_with_elongation def fuzzy_tension_adjustment(tension_error, error_deriv): # 模糊规则 rules = [ (-0.05, -0.02, -0.01), # 负大 (-0.02, -0.005, 0.0), (0.0, 0.0, 0.0), (0.005, 0.02, 0.01), (0.02, 0.05, 0.02) ] # 简化的重心法解模糊 weight = np.tanh(tension_error / 0.03) * 0.5 + 0.5 adj = weight * (0.02 if tension_error > 0.02 else -0.01 if tension_error < -0.02 else 0) return adj