机电一体化实验报告.docx
《机电一体化实验报告.docx》由会员分享,可在线阅读,更多相关《机电一体化实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
机电一体化实验报告
机电一体化实验报告
一体化系统设计实验报告学院专业班级学号姓名指导教师xx年1月12日实验一机电一体化系统的组成实验目的:
以XY简易数控工作台为例,说明机电一体化系统的基本组成和各模块的特点。
实验设备:
l台式PC机一台l标准XY工作台一套l运动控制卡一块l游标卡尺一把实验内容:
XY简易数控工作台是一典型的机电一体化系统,是许多数控加工设备和电子加工设备的基本部件,XY数控工作台主要由运动控制卡、DC24V开关电源、步进电机及其驱动器、XY向运动平台、光栅尺和霍尔限位开关组成,其之间的关系如图
1、1所示。
工作原理大致为:
运动控制卡接受PC机发出的位置和轨迹指令,进行规划处理(插补运算),转化成步进电机驱动器可以接受的指令格式(速度脉冲和方向信号)发给驱动器,由驱动器进行脉冲环行分配和功率放大从而驱动步进电机,步进电机经过联轴器、滚动丝杠推动工作台按指定的速度和位移运动。
实验步骤:
(1)在XY数控工作台系统中分别找到上述各个模块,并指出各模块在机电一体化系统中实现哪一模块的功能。
①运动控制卡:
运动控制卡是PCL、CPCL、PXL等总线形成的板卡,通俗地讲我们可以把它看成一个单片机,有自己的算法,可以通过V
C、V
B、labview、BCB等语言实现其功能,数控系统即通过运动控制卡来实现对机床运动轨迹的控制。
②DC24V开关电源:
对供电要求质量比较高的控制设备提供纯净、稳定、没有杂波的直流电源。
③步进电机及其驱动器:
步进电机用于驱动数控工作台的X、Y两个方向的移动;步进电机通过驱动器细分,可减小步距角,从而提高步进电机的精确率,实现脉冲分配和功率驱动放大,此外还可以消除电机的低频振荡、提高电机的输出转矩。
④XY向运动平台:
分别传输X、Y两个方向的运动。
⑤光栅尺:
光栅尺是一种位移传感器,是利用光栅的光学原理工作的测量反馈装置。
经常应用于数控机床的闭环伺服系统中,可用作直线位移或者角位移的检测。
⑥霍尔限位开关:
用于限制工作台的运动超出导轨的有效长度。
(2)使用卡尺测量,计算其平均导程P=10;观察其循环器,可知其循环方式为内循环;预紧方式是螺纹调隙式。
(3)观察导轨截面,并查阅《机电一体化技术手册》,可知其属于GGA,GGB,GGC,GGF中哪类?
GGB。
其适用场合机械加工中心、NC车床、搬运装置、电火花加工机、木工机械、激光加工机、精密测试仪器、包装机械、食品机械、医疗器械、工具磨床、平面磨床等。
(4)查阅《DMC3000硬件手册》可知系统中的运动控制卡可实现四
轴的联动,并具有16个数字量输入和16个数字量输出控制。
(5)记录步进电机型号,网上查阅其详细技术参数,可知其属于(反应式,永磁式,混合式)混合式步进电机,整步步距角为
1、8°,额定工作电压
2、6V。
测量电机机座的长宽尺寸属于57尺寸系列机型。
一般来说尺寸系列越大,其输出扭距越大。
XY数控工作台系统的草图可见附录1:
实验二
XY简易数控工作台的电气连接实验目的:
以数控系统中基本的电机运动控制和限位开关控制为例,了解基于运动控制卡的XY简易数控工作台的电气连接。
实验设备:
l台式PC机一台l标准XY工作台一套l运动控制卡一块实验内容:
运动控制卡能够实现多轴联动最重要的原因是利用了控制卡上专用运动控制芯片提供的硬件插补功能,这类专用运动控制芯片能够根据PC机给出的插补终点和插补速度等参数,利用某些插补算法计算出各个轴的进给脉冲和进给方向,并将这两类信号输出到接口板的某些固定端子上。
步进电机要想能够实现一个脉冲对应电机转过一个步距角,除了需要步进电机以外,还需要一个步进电机驱动器为步进电机实现脉冲分配和功率驱动放大的功能。
实验步骤:
(1)参考电气主电路图,在控制箱内找到与DC24V电源相连的模块以及连接所用的端子。
(2)依据控制电路图和《DMC3000硬件手册》,找到接口板与步进电机驱动器的控制信号接线,并思考接口板和驱动器之间的电气接口原理。
(3)依据控制电路图和《DMC3000硬件手册》,找到限位开关和光栅尺电路。
实验结果:
通过实验,可得出平台控制电路图(见附录2)实验三
运动控制卡软件接口与简单的点位控制程序实验目的:
初步了解DMC3000运动控制卡的软件接口形式l实验设备:
台式PC机一台l标准XY工作台一套l运动控制卡一块实验内容:
运动控制卡接口板步进电机驱动器等模块间的电气连接保证了运动控制卡输出的运动和控制信号的传输。
但要实现工作台按照某些规律运动,除了上边所述的正确电气连接外,还需要运动控制卡提供相应的软件接口(Interface)来接受PC机发出的运动控制命令。
DMC3000运动控制卡的软件接口是以动态连结库(DLL)的形式提供的。
所谓动态连接库,在编程实现上可以理解成一个函数的集合,在这个库里包含有许多函数。
DMC3000控制卡的用户通过在软件程序中调用动态连接库中的某些函数,从而达到操作运动控制卡的目的。
实现DMC3000卡控制工作台做某些直线插补运动。
(1)运行Motion3000,在其界面下了解DMC3000支持的各种运动控制功能。
利用其界面操作完成绝对坐标和相对坐标下T形和S形的直线和圆弧插补运动。
(2)在VB/VC开发环境下实现一条直线简单插补运动控制。
实验步骤及结果:
1、步骤:
⑴打开VisualC++
6、0⑵新建一个工程⑶选择MFCAPPWizard(exe)⑷选择工程保存路径如E:
\⑸输入工程名,如test⑹按确定键在应用程序类型中选择基本对话按确定键建立工程⑺对对话框进行简单的修改增加按钮启动命名为IDC_BUTTON_Start和停止(命名为IDC_BUTTON_Stop)。
⑻在Motion3000安装目录下找到dmc3000、h和dmc3000、lib文件拷贝到E:
\test目录下⑼选择工程->添加工程->文件选中dmc3000、lib文件加入到工程中⑽开test、cpp文件在头部添加语句#includedmc3000、h⑾在CTestDlg:
:
OnInitDialog()函数中添加代码d3000_board_init();⑿在CtestDlg中添加一个成员函数OnCancel,在OnCancel函数中添加代码d3000_board_close();CDialog:
:
OnCancel();⒀双击启动按钮在按钮点击事件中输入代码d3000_start_t_move(0,1000,400,1000,0、1,0、1);双击停止按钮在按钮点击事件中输入代码d3000_decel_stop(0,0、1);⒁编译运行按下启动按钮第0轴就会输出长度为1000的脉冲运动中可以按下停止按钮便会减速停止脉冲输出。
2、完整程序结果:
#include"stdafx、h"#include"hr、h"#include"hrDlg、h"#include"dmc3000、h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:
publicCDialog{public:
CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:
//{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg:
:
CAboutDlg()
:
CDialog(CAboutDlg:
:
IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CHrDlgdialogCHrDlg:
:
CHrDlg(CWnd*pParent/*=NULL*/):
CDialog(CHrDlg:
:
IDD,pParent){//{{AFX_DATA_INIT(CHrDlg)//NOTE:
theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCHrDlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CHrDlg)//NOTE:
theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CHrDlg,CDialog)//{{AFX_MSG_MAP(CHrDlg)ON_WM_SYSMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1_start,OnBUTTON1start)ON_BN_CLICKED(IDC_BUTTON2_stop,OnBUTTON2stop)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CHrDlgmessagehandlersBOOLCHrDlg:
:
OnInitDialog(){d3000_board_init();CDialog:
:
OnInitDialog();//Add"About、、、"menuitemtosystemmenu、//IDM_ABOUTBOXmustbeinthesystemmandrange、ASSERT((IDM_ABOUTBOX&0xFFF0)
==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!
=NULL){CStringstrAboutMenu;strAboutMenu、LoadString(IDS_ABOUTBOX);if(!
strAboutMenu、IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//Settheiconforthisdialog、Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmallicon//TODO:
AddextrainitializationherereturnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCHrDlg:
:
OnSysmand(UINTnID,LPARAMlParam){if((nID&0xFFF0)
==IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout、DoModal();}else{CDialog:
:
OnSysmand(nID,lParam);}}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon、ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework、voidCHrDlg:
:
OnPaint()
{if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)
dc、GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect、Width()
cyIcon+1)
/2;//Drawtheicondc、DrawIcon(x,y,m_hIcon);}else{CDialog:
:
OnPaint();}}//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow、HCURSORCHrDlg:
:
OnQueryDragIcon(){return(HCURSOR)
m_hIcon;}voidCHrDlg:
:
OnCancel()
{d3000_board_close();CDialog:
:
OnCancel();}voidCHrDlg:
:
OnBUTTON1start()
{shortAxisArray[2];AxisArray[0]=0;AxisArray[1]=1;d3000_start_t_line2(AxisArray,1000,0,400,1000,0、1,0);while(d3000_check_conti_buffer==0)
{}d3000_start_arc(AxisArray,0,500,0,1000,1,1000);}voidCHrDlg:
:
OnBUTTON2stop()
{d3000_decel_stop(0,0、1);}实验四
连续插补运动控制的程序实现实验目的:
利用VB编写程序,控制DMC3000卡完成两段连续插补轨迹运动。
实验设备:
l台式PC机一台l标准XY工作台一套l运动控制卡一块实验内容:
DMC3000动态连接库中给出的插补函数都是简单的直线或圆弧插补运动。
但实际生产中要求工作台能够完成连续轨迹运动,即完成了一段插补运动后能够平滑的进入下一段插补运动。
DMC3000提供的运动状态函数和连续运动函数能够实现这一功能。
在VB开发环境下编写程序,实现如图4-1所示轨迹的连续运动。
图4-1实验步骤及结果:
1、步骤:
⑴打开VisuaiC++
6、0⑵新建一个工程⑶选择MFCAPPWizard(exe)⑷选择工程保存路径,如E盘⑸输入工程名,如sb⑹按“确定”键,在应用程序类型中选择“基本对话”,按“确定”键,建立工程。
⑺双击窗口控件,在Ford_Load事件中添加代码d3000_bord_init选择UnLoad事件,在Form_UnLoad事件中添加代码d3000_bord_close双击“启动”按钮,在CB_Start_Click事件中添加代码shortAxisArray[2];AxisArray[0]=0;AxisArray[1]=1;d3000_start_t_line2(AxisArray,-1000,0,400,1000,0、1,0);while(d3000_check_conti_buffer==0)
{}d3000_start_arc(AxisArray,0,1000,0,2000,0,1000);while(d3000_check_conti_buffer==1)
{}d3000_start_t_line2(AxisArray,0,1000,400,1000,0、1,0、1);}双击“停止”按钮,在CB_Stop_Click事件中添加代码d3000_decel_stop0,0、1⑻运行,按下“启动”按钮,开始脉冲,按下“停止”按钮便会减速停止脉冲。
2、完整程序结果:
#include"stdafx、h"#include"test01、h"#include"test01Dlg、h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif#include"dmc3000、h"///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:
publicCDialog{public:
CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:
//{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg:
:
CAboutDlg()
:
CDialog(CAboutDlg:
:
IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CTest01DlgdialogCTest01Dlg:
:
CTest01Dlg(CWnd*pParent/*=NULL*/):
CDialog(CTest01Dlg:
:
IDD,pParent){//{{AFX_DATA_INIT(CTest01Dlg)//NOTE:
theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCTest01Dlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CTest01Dlg)//NOTE:
theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CTest01Dlg,CDialog)//{{AFX_MSG_MAP(CTest01Dlg)ON_WM_SYSMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_Start,OnBUTTONStart)ON_BN_CLICKED(IDC_BUTTON_Stop,OnBUTTONStop)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CTest01DlgmessagehandlersBOOLCTest01Dlg:
:
OnInitDialog(){d3000_board_init();CDialog:
:
OnInitDialog();//Add"About、、、"menuitemtosystemmenu、//IDM_ABOUTBOXmustbeinthesystemmandrange、ASSERT((IDM_ABOUTBOX&0xFFF0)
==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!
=NULL){CStrings