数控技术实验指导书.docx
- 文档编号:10213094
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:14
- 大小:493.54KB
数控技术实验指导书.docx
《数控技术实验指导书.docx》由会员分享,可在线阅读,更多相关《数控技术实验指导书.docx(14页珍藏版)》请在冰豆网上搜索。
数控技术实验指导书
“数控技术”实验指导书
机械与储运工程学院宋强编写
1、MatlabGUI设计
2、实验1脉冲增量直线插补
3、实验2刀具半径补偿
4、实验3非圆曲线拟合
5、实验4模糊推理故障诊断系统设计
6、实验5线性神经网络故障诊断系统设计
MatlabGUI设计
图形用户界面(GUI)是指由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象组成的用户界面。
Matlab可使用可视化界面环境来设计图形用户界面。
在Matlab主窗口中,选择菜单FileNewGUI会显示GUI设计模板,选择默认的BlankGUI,出现由菜单栏、工具栏、控件工具栏以及图形对象设计区等组成的GUI设计窗口,如图1所示。
图1图形用户界面GUI设计窗口
在GUI设计窗口中,用鼠标选择并放置控件到布局区内,例如选择按钮(PushButton)、文本编辑器(EditText)、静态文本框(StaticText)和坐标轴(Axes),如图2所示。
控件对象是事件响应的图形界面对象,当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback)。
图2GUI简单设计布局
在GUI设计窗口创建控件对象后,双击控件对象会显示该对象的属性编辑器(PropertyInspector),将Text1的String属性改为(x,y)、Edit1的String属性改为20,如图3所示。
图3修改控件对象属性
保存上述设计内容,Matlab会出现M设计文件,用于编写控件对象的Callback函数。
编写按钮回调函数以执行按钮按下时的功能:
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x=str2double(get(handles.edit1,'String'));%获取文本编辑器的数据
y=x;
axes(handles.axes1);%指定显示区域
line([0,x],[0,y]);%绘制直线
保存程序,单击菜单ToolsRun执行程序,结果如图4所示。
修改Text1中的数据并观察程序运行结果。
请同学们自学MatlabGUI设计及编程,尤其注意掌握set、get、gco、gcbf、gca、gcf等句柄操作函数以及各控件对象的属性及回调函数。
图4程序运行界面
实验1脉冲增量直线插补
利用逐点比较或DDA原理,设计一个四象限直线插补器,能够实现参数设置(直线终点坐标)、中间运算过程显示以及插补结果图形显示等功能。
实验界面(仅供参考):
实验2刀具半径补偿
利用C刀补原理,设计一个具备伸长、缩短、插入等连接方式的直线刀补计算器,能够实现参数设置(刀具半径、直线起点坐标、终点坐标、折点坐标)、中间运算过程显示(转接点坐标)以及刀补结果图形显示等功能。
实验界面(仅供参考):
实验3非圆曲线拟合
一、实验内容
复杂零件的轮廓曲线往往含有双曲线、椭圆、抛物线、螺旋线等非圆几何曲线,目前绝大多数数控机床并不具备这些非圆曲线的插补功能,因此需要在误差允许的前提下用数控系统普遍具有的直线或圆弧插补功能来逼近这些曲线。
本实验将采用等误差直线拟合原理对任意非圆曲线进行拟合。
等误差直线拟合原理计算出的拟合直线,具有相同的拟合误差,均等于允许误差R。
等误差直线拟合的计算步骤如下:
(1)以曲线起点a(xa,ya)为圆心、允许误差R为半径做圆:
;
(2)计算圆与曲线公切线mn的斜率:
,要计算xm、ym、xn、yn需求解四个联立方程:
曲线方程、圆方程、曲线切线方程、圆切线方程;
(3)以a为端点,做平行于mm的弦ab,弦方程为:
;
(4)联立曲线方程和弦方程计算b点坐标;
(5)按上述步骤顺序计算拟合节点c、d、e、f、…。
图1等误差直线拟合
利用matlab编程实现任意二次函数的等误差直线拟合,并给出直线拟合结果(用“图”表示)与节点坐标(用“表”表示)。
二、实验思考
1、除等误差直线拟合算法外,还有什么其它直线拟合算法?
各有何优缺点?
2、圆弧拟合算法有哪些?
各有何优缺点?
3、如果目标曲线无法给出准确数学定义,又如何解决?
实验4模糊推理故障诊断系统设计
一、实验内容
设计一个简单的4输入、3输出模糊推理故障诊断系统,其输入/输出量及模糊化如下:
输入模糊化:
L--过低,N--正常,H--过高
x1--电机轴承温度,≤95℃为N,>95℃为H
x2--电阻温度,≤600℃为N,>600℃为H
x3--蓄电池瞬时电流,≤90A为N,>90A为H
x4--逆变器电压,
输出模糊化:
IP--不太可能,P--很有可能
y1--电机加速不良,y2--逆变器故障,y3--蓄电池故障
二、实验步骤
1、在Matlab提示符下键入fuzzy以启动模糊推理系统(图1);
图1fuzzy模糊推理系统
2、单击FileExportToFile并保存为“故障诊断”;
图2
3、单击input1黄色框,在右下方CurrentVariable中将Name改为x1,按Return键确定;
4、单击菜单EditAddVariableInput,单击input2黄色框,将Name改为x2;
5、同样再增加两个input并分别命为x3、x4(图2);
6、单击outpput1绿色框,将Name改为y1;
7、单击菜单EditAddVariableOutput,单击output2绿色框,将Name改为y2;
8、同样再增加一个output并命为y3,完成4输入3输出模糊推理系统的构建(图3);
图3
9、单击菜单EditMembershipFunctions,单击x1黄色框,在左下方CurrentVariable中将Range改为[75115],按Return键确定;
10、在右上方Membershipfunctionplots中选中mf1(变红),在右下方CurrentMembershipfunction中将Name改为Normal,将Type选为gauss2mf,将Params改为[7704.590],按Return键确定(图4);
图4
11、同样在Membershipfunctionplots中选中mf2(变红),将Name改为High,将Type选为gauss2mf,将Params改为[4.51003115];
12、在Membershipfunctionplots中选中mf3(变红),按Delete键将其删除(图5);
图5
13、在右侧FISVariables中选中x2,设置Range为[400,800],将mf1的Name改为Normal,Type选为gauss2mf,Params改为[5538040550],将mf2的Name改为High,Type选为gauss2mf,Params改为[456501.5800],删除mf3;
14、在右侧FISVariables中选中x3,设置Range为[60,120],将mf1的Name改为Normal,Type选为gauss2mf,Params改为[8608.580],将mf2的Name改为High,Type选为gauss2mf,Params改为[7.51002120],删除mf3;
15、在右侧FISVariables中选中x4,设置Range为[800,2000],将mf1的Name改为Low,Type选为gauss2mf,Params改为[150750160800],将mf2的Name改为Normal,Type选为gauss2mf,Params[18013001601500]改为,将mf3的Name改为High,Type选为gauss2mf,Params改为[19020001302000];
16、在右侧FISVariables中选中y1,将mf1的Name改为Impossible,Type选为gaussmf,Params改为[0.422.5e-017],将mf2的Name改为Possible,Type选为gaussmf,Params改为[0.421],删除mf3;
17、在右侧FISVariables中选中y2,将mf1的Name改为Impossible,Type选为gaussmf,Params改为[0.422.5e-017],将mf2的Name改为Possible,Type选为gaussmf,Params改为[0.421],删除mf3;
18、在右侧FISVariables中选中y3,将mf1的Name改为Impossible,Type选为gaussmf,Params改为[0.422.5e-017],将mf2的Name改为Possible,Type选为gaussmf,Params改为[0.421],删除mf3;
19、单击菜单EditRules,弹出规则编辑器(图6),并输入下述诊断规则;
x1
x2
x3
x4
y1
y2
y3
故障类型
H
N
N
N
P
IP
IP
电机加速不良
N
H
H
N
IP
IP
P
蓄电池故障
N
N
N
L
IP
P
IP
逆变器故障
N
N
N
H
IP
P
IP
逆变器故障
图6
20、输入第1条规则,ifx1isHighandx2isNormalandx3isNormalandx4isNormal,Theny1isPossibleandy2isImpossibleandy3isImpossible,在输入过程中仅需选择相应变量的值,单击Addrule则规则自动生成(通过右下角的箭头来显示所有的输入和输出变量);
21、输入第2条规则,ifx1isNormalandx2isHighandx3isHighandx4isNormal,Theny1isImpossibleandy2isImpossibleandy3isPossible;
22、输入第3条规则,ifx1isNormalandx2isNormalandx3isNormalandx4isLow,Theny1isImpossibleandy2isPossibleandy3isImpossible;
23、输入第4条规则,ifx1isNormalandx2isNormalandx3isNormalandx4isHigh,Theny1isImpossibleandy2isPossibleandy3isImpossible,完成所有规则输入(图7);
24、关闭RuleEditor,在FISEditor界面中选中模糊集合运算规则,其中,Andmethod为min,Ormethod为max,Implication为min,aggregation为max,Defuzzification为centroid(均为默认值),请参照课件中的实例来理解这些集合运算的含义;
25、单击View—>Rulers,在坐下方Input中输入1组数据[8055065750],表示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.10.20.5;0.80.40.4;0.60.20.2;0.20.30.9]';“建立输入样本,注意转置符号”
y=[0110];“建立与输入样本对应的输出样本”
net=newlind(x,y);“根据样本集建立一个线性神经网络”
w=net.IW{1}“输出线性神经网络的权值参数”
b=net.b{1}“输出线性神经网络的阈值参数”
xn=[0.80.30.2]';“建立一个输出未知的输入样本集”
yn=sim(net,xn)“线性神经网络根据输入量确定输出量1.2,表示轴承有故障”
三、实验思考
1、函数newlind是如何建立线性神经网络的?
2、当输入量与输出量间满足何种数学关系时,线性神经网络具有最佳性能?
3、线性神经网络有何局限性?
如何克服?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数控技术 实验 指导书