当前位置:文档之家› 机电一体化实验报告

机电一体化实验报告

机电一体化实验报告一体化系统设计实验报告学院专业班级学号姓名指导教师xx 年1 月12 日实验一机电一体化系统的组成实验目的:以XY简易数控工作台为例,说明机电一体化系统的基本组成和各模块的特点。

实验设备:l 台式PC机一台l 标准XY工作台一套l 运动控制卡一块l 游标卡尺一把实验内容:XY简易数控工作台是一典型的机电一体化系统,是许多数控加工设备和电子加工设备的基本部件,XY数控工作台主要由运动控制卡、DC24V 开关电源、步进电机及其驱动器、XY向运动平台、光栅尺和霍尔限位开关组成,其之间的关系如图1、1所示。

工作原理大致为:运动控制卡接受PC机发出的位置和轨迹指令,进行规划处理(插补运算),转化成步进电机驱动器可以接受的指令格式(速度脉冲和方向信号)发给驱动器,由驱动器进行脉冲环行分配和功率放大从而驱动步进电机,步进电机经过联轴器、滚动丝杠推动工作台按指定的速度和位移运动。

实验步骤:(1)在XY数控工作台系统中分别找到上述各个模块,并指出各模块在机电一体化系统中实现哪一模块的功能。

①运动控制卡:运动控制卡是PCL、CPCL、PXL等总线形成的板卡,通俗地讲我们可以把它看成一个单片机,有自己的算法,可以通过VC、VB、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、步骤:⑴ 打开Visual C++6、0 ⑵ 新建一个工程⑶ 选择MFC APPWizard(exe)⑷ 选择工程保存路径如E:\⑸ 输入工程名,如test⑹ 按确定键在应用程序类型中选择基本对话按确定键建立工程⑺ 对对话框进行简单的修改增加按钮启动命名为IDC_BUTTON_Start 和停止(命名为IDC_BUTTON_Stop)。

⑻ 在Motion3000 安装目录下找到dmc3000、h 和dmc3000、lib 文件拷贝到E:\test 目录下⑼ 选择工程-> 添加工程-> 文件选中dmc3000、lib 文件加入到工程中⑽ 开test、cpp 文件在头部添加语句#include dmc3000、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#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] =__FILE__;#endif////////////////////////////////////////// ///////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : publicCDialog{public:CAboutDlg();// DialogData//{{AFX_DATA(CAboutDlg)enum { IDD =IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual functionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSG DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}A FX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAbout Dlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No messagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////// ///////////////////////////////////////////////////////// ///// CHrDlg dialogCHrDlg::CHrDlg(CWnd* pParent/*=NULL*/): CDialog(CHrDlg::IDD,pParent){//{{AFX_DATA_INIT(CHrDlg)// NOTE: the ClassWizard will add member initializationhere//}}AFX_DATA_INIT// Note that LoadIcon does notrequire a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCHrDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CHrDlg )// NOTE: the ClassWizard will add DDX and DDV callshere//}}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()/////////// ///////////////////////////////////////////////////////// /////////// CHrDlg message handlersBOOLCHrDlg::OnInitDialog(){ d3000_board_init();CDialog::OnIni tDialog();// Add "About、、、" menu item to system menu、// IDM_ABOUTBOX must be in the system mand range、ASSERT((IDM_ABOUTBOX & 0xFFF0)== IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu !=NULL){CString strAboutMenu;strAboutMenu、LoadString(IDS_ABOUTBOX);if (!strAboutMenu、IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}//Set the icon for this dialog、 The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);// Set bigiconSetIcon(m_hIcon, FALSE);// Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}voidCHrDlg::OnSysmand(UINT nID, LPARAM lParam){if ((nID &0xFFF0)== IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout、DoModal();}else{CDialog::OnSysmand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon、 For MFC applications using the document/view model,// this is automatically done for you by the framework、void CHrDlg::OnPaint() {if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc、GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);int x = (rect、Width() cyIcon +1)/2;// Draw the icondc、DrawIcon(x, y,m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the userdrags// the minimized window、HCURSORCHrDlg::OnQueryDragIcon(){return (HCURSOR)m_hIcon;}void CHrDlg::OnCancel(){ d3000_board_close();CDialog::OnCancel();}void CHrDlg::OnBUTTON1start(){short AxisArray[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); }void CHrDlg::OnBUTTON2stop(){d3000_decel_stop(0,0、1);}实验四连续插补运动控制的程序实现实验目的:利用VB编写程序,控制DMC3000卡完成两段连续插补轨迹运动。

相关主题