当前位置:文档之家› 数控技术实验指导书概论

数控技术实验指导书概论

“数控技术”实验指导书机械与储运工程学院宋强编写1、Matlab GUI设计2、实验1 脉冲增量直线插补3、实验2 刀具半径补偿4、实验3 非圆曲线拟合5、实验4 模糊推理故障诊断系统设计6、实验5 线性神经网络故障诊断系统设计Matlab GUI设计图形用户界面(GUI)是指由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象组成的用户界面。

Matlab可使用可视化界面环境来设计图形用户界面。

在Matlab主窗口中,选择菜单File→New→GUI会显示GUI设计模板,选择默认的Blank GUI,出现由菜单栏、工具栏、控件工具栏以及图形对象设计区等组成的GUI设计窗口,如图1所示。

图1 图形用户界面GUI设计窗口在GUI设计窗口中,用鼠标选择并放置控件到布局区内,例如选择按钮(Push Button)、文本编辑器(Edit Text)、静态文本框(Static Text)和坐标轴(Axes),如图2所示。

控件对象是事件响应的图形界面对象,当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback)。

图2 GUI简单设计布局在GUI设计窗口创建控件对象后,双击控件对象会显示该对象的属性编辑器(Property Inspector),将Text1的String属性改为(x, y)、Edit1的String属性改为20,如图3所示。

图3 修改控件对象属性保存上述设计内容,Matlab会出现M设计文件,用于编写控件对象的Callback函数。

编写按钮回调函数以执行按钮按下时的功能:function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)x=str2double(get(handles.edit1,'String')); % 获取文本编辑器的数据y=x;axes(handles.axes1); % 指定显示区域line([0,x],[0,y]); % 绘制直线保存程序,单击菜单Tools Run执行程序,结果如图4所示。

修改Text1中的数据并观察程序运行结果。

请同学们自学Matlab GUI设计及编程,尤其注意掌握set、get、gco、gcbf、gca、gcf等句柄操作函数以及各控件对象的属性及回调函数。

图4 程序运行界面实验1 脉冲增量直线插补利用逐点比较或DDA原理,设计一个四象限直线插补器,能够实现参数设置(直线终点坐标)、中间运算过程显示以及插补结果图形显示等功能。

实验界面(仅供参考):实验2 刀具半径补偿利用C刀补原理,设计一个具备伸长、缩短、插入等连接方式的直线刀补计算器,能够实现参数设置(刀具半径、直线起点坐标、终点坐标、折点坐标)、中间运算过程显示(转接点坐标)以及刀补结果图形显示等功能。

实验界面(仅供参考):实验3 非圆曲线拟合一、实验内容复杂零件的轮廓曲线往往含有双曲线、椭圆、抛物线、螺旋线等非圆几何曲线,目前绝大多数数控机床并不具备这些非圆曲线的插补功能,因此需要在误差允许的前提下用数控系统普遍具有的直线或圆弧插补功能来逼近这些曲线。

本实验将采用等误差直线拟合原理对任意非圆曲线进行拟合。

等误差直线拟合原理计算出的拟合直线,具有相同的拟合误差,均等于允许误差R 。

等误差直线拟合的计算步骤如下:(1) 以曲线起点a (x a , y a )为圆心、允许误差R 为半径做圆:222()()a a x x y y R -+-=;(2) 计算圆与曲线公切线mn 的斜率:()/()m n m n k y y x x =--,要计算x m 、y m 、x n 、y n 需求解四个联立方程:曲线方程、圆方程、曲线切线方程、圆切线方程;(3) 以a 为端点,做平行于mm 的弦ab ,弦方程为:()a a y y k x x -=-;(4) 联立曲线方程和弦方程计算b 点坐标;(5) 按上述步骤顺序计算拟合节点c 、d 、e 、f 、…。

图1 等误差直线拟合利用matlab 编程实现任意二次函数的等误差直线拟合,并给出直线拟合结果(用“图”表示)与节点坐标(用“表”表示)。

二、实验思考1、除等误差直线拟合算法外,还有什么其它直线拟合算法?各有何优缺点?2、圆弧拟合算法有哪些?各有何优缺点?3、如果目标曲线无法给出准确数学定义,又如何解决?实验4 模糊推理故障诊断系统设计一、实验内容设计一个简单的4输入、3输出模糊推理故障诊断系统,其输入/输出量及模糊化如下:输入模糊化:L--过低,N--正常,H--过高x1--电机轴承温度,≤95℃为N,>95℃为Hx2--电阻温度,≤600℃为N,>600℃为Hx3--蓄电池瞬时电流,≤90A为N,>90A为Hx4--逆变器电压,<l000V为L,l000-1800V为N,>1800V为H输出模糊化:IP--不太可能,P--很有可能y1--电机加速不良,y2--逆变器故障,y3--蓄电池故障二、实验步骤1、在Matlab提示符下键入fuzzy以启动模糊推理系统(图1);图1 fuzzy模糊推理系统2、单击File→Export→To File并保存为“故障诊断”;图23、单击input1黄色框,在右下方Current Variable中将Name改为x1,按Return键确定;4、单击菜单Edit→Add Variable→Input,单击input2黄色框,将Name改为x2;5、同样再增加两个input并分别命为x3、x4(图2);6、单击outpput1绿色框,将Name改为y1;7、单击菜单Edit→Add Variable→Output,单击output2绿色框,将Name改为y2;8、同样再增加一个output并命为y3,完成4输入3输出模糊推理系统的构建(图3);图39、单击菜单Edit→Membership Functions,单击x1黄色框,在左下方Current Variable中将Range改为[75 115],按Return键确定;10、在右上方Membership function plots中选中mf1(变红),在右下方Current Membership function中将Name改为Normal,将Type选为gauss2mf,将Params改为[7 70 4.5 90],按Return键确定(图4);图411、同样在Membership function plots中选中mf2(变红),将Name改为High,将Type 选为gauss2mf,将Params改为[4.5 100 3 115];12、在Membership function plots中选中mf3(变红),按Delete键将其删除(图5);图513、在右侧FIS Variables中选中x2,设置Range为[400, 800],将mf1的Name改为Normal,Type选为gauss2mf,Params改为[55 380 40 550],将mf2的Name改为High,Type选为gauss2mf,Params改为[45 650 1.5 800],删除mf3;14、在右侧FIS Variables中选中x3,设置Range为[60, 120],将mf1的Name改为Normal,Type选为gauss2mf,Params改为[8 60 8.5 80],将mf2的Name改为High,Type选为gauss2mf,Params改为[7.5 100 2 120],删除mf3;15、在右侧FIS Variables中选中x4,设置Range为[800, 2000],将mf1的Name改为Low,Type选为gauss2mf,Params改为[150 750 160 800],将mf2的Name改为Normal,Type选为gauss2mf,Params [180 1300 160 1500]改为,将mf3的Name改为High,Type选为gauss2mf,Params改为[190 2000 130 2000];16、在右侧FIS Variables中选中y1,将mf1的Name改为Impossible,Type选为gaussmf,Params改为[0.42 2.5e-017],将mf2的Name改为Possible,Type选为gaussmf,Params改为[0.42 1],删除mf3;17、在右侧FIS Variables中选中y2,将mf1的Name改为Impossible,Type选为gaussmf,Params改为[0.42 2.5e-017],将mf2的Name改为Possible,Type选为gaussmf,Params改为[0.42 1],删除mf3;18、在右侧FIS Variables中选中y3,将mf1的Name改为Impossible,Type选为gaussmf,Params改为[0.42 2.5e-017],将mf2的Name改为Possible,Type选为gaussmf,Params改为[0.42 1],删除mf3;19、单击菜单Edit Rules,弹出规则编辑器(图6),并输入下述诊断规则;图620、输入第1条规则,if x1 is High and x2 is Normal and x3 is Normal and x4 is Normal,Then y1 is Possible and y2 is Impossible and y3 is Impossible,在输入过程中仅需选择相应变量的值,单击Add rule则规则自动生成(通过右下角的箭头来显示所有的输入和输出变量);21、输入第2条规则,if x1 is Normal and x2 is High and x3 is High and x4 is Normal, Then y1 is Impossible and y2 is Impossible and y3 is Possible;22、输入第3条规则,if x1 is Normal and x2 is Normal and x3 is Normal and x4 is Low, Then y1 is Impossible and y2 is Possible and y3 is Impossible;23、输入第4条规则,if x1 is Normal and x2 is Normal and x3 is Normal and x4 is High, Then y1 is Impossible and y2 is Possible and y3 is Impossible,完成所有规则输入(图7);24、关闭Rule Editor,在FIS Editor界面中选中模糊集合运算规则,其中,And method 为min,Or method为max,Implication为min,aggregation为max,Defuzzification为centroid (均为默认值),请参照课件中的实例来理解这些集合运算的含义;25、单击View—>Rulers,在坐下方Input中输入1组数据[80 550 65 750],表示x1=80℃、x2=550℃、x3=65A、x4=750V,按Enter键后系统给出的故障诊断结果为:y1=0.318,y2=0.682,y3=0.318,因此系统最有可能的故障为y2--逆变器故障(图8);图7图8实验5 线性神经网络故障诊断系统设计一、实验内容设计一个简单的3输入、单输出线性神经网络故障诊断系统,其输入/输出量如下:输入量x1、x2、x3:分别对应轴承振动信号的三个特征输出量y:0--轴承无故障,1--轴承有故障二、实验步骤建立训练样本集{x1, x2, x3, y},样本集包含四组样本:{0.1, 0.2, 0.5, 0}; {0.8, 0.4, 0.4, 1}; {0.6, 0.2, 0.2, 1}; {0.2, 0.3, 0.9, 0},在Matlab提示符下键入以下程序(“”中内容为程序注释,勿需键入):x = [0.1 0.2 0.5; 0.8 0.4 0.4; 0.6 0.2 0.2; 0.2 0.3 0.9]'; “建立输入样本,注意转置符号”y = [0 1 1 0]; “建立与输入样本对应的输出样本”net = newlind(x,y); “根据样本集建立一个线性神经网络”w = net.IW{1} “输出线性神经网络的权值参数”b = net.b{1} “输出线性神经网络的阈值参数”xn = [0.8 0.3 0.2]'; “建立一个输出未知的输入样本集”yn = sim(net,xn) “线性神经网络根据输入量确定输出量1.2,表示轴承有故障”三、实验思考1、函数newlind是如何建立线性神经网络的?2、当输入量与输出量间满足何种数学关系时,线性神经网络具有最佳性能?3、线性神经网络有何局限性?如何克服?。

相关主题