机电一体化实验报告Word下载.docx
《机电一体化实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《机电一体化实验报告Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
![机电一体化实验报告Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/bd321def-ad5f-4637-ba1b-9c5501be65f9/bd321def-ad5f-4637-ba1b-9c5501be65f91.gif)
2DC24V开关电源:
对供电要求质量比较高的控制设备提供纯净、稳定、没有杂
波的直流电源
3步进电机及其驱动器:
步进电机用于驱动数控工作台的X、丫两个方向的移动;
步进电机通过驱动器细分,可减小步距角,从而提高步进电机的精确率,实现脉冲分配和功率驱动放大,此外还可以消除电机的低频振荡、提高电机的输出转矩。
4XY向运动平台:
分别传输X、丫两个方向的运动。
5光栅尺:
光栅尺是一种位移传感器,是利用光栅的光学原理工作的测量反馈装
置。
经常应用于数控机床的闭环伺服系统中,可用作直线位移或者角位移的检测。
6霍尔限位开关:
用于限制工作台的运动超出导轨的有效长度。
(2)使用卡尺测量,计算其平均导程P=10;
观察其循环器,可知其循环方式为内循环;
预紧方式是螺纹调隙式。
(3)观察导轨截面,并查阅《机电一体化技术手册》,可知其属于GGA,GGB,GGC,GGF中哪类?
GGB。
其适用场合机械加工中心、NC车床、搬运装置、
电火花加工机、木工机械、激光加工机、精密测试仪器、包装机械、食品机械、医疗器械、工具磨床、平面磨床等。
(4)查阅《DMC3000硬件手册》可知系统中的运动控制卡可实现四轴的联动,并具
有16_个数字量输入和16个数字量输出控制。
(5)记录步进电机型号,网上查阅其详细技术参数,可知其属于(反应式,永磁式,混
合式)混合式步进电机,整步步距角为1.8°
,额定工作电压2.6V。
测量电机机座的长宽尺寸属于57尺寸系列机型。
一般来说尺寸系列越大,其
输出扭距越大。
XY数控工作台系统的草图可见附录1:
实验二XY简易数控工作台的电气连接
以数控系统中基本的电机运动控制和限位开关控制为例,了解基于运动控制卡的XY简易数控工作台的电气连接。
实验设备:
台式PC机一台
标准XY工作台一套运动控制卡一块
运动控制卡能够实现多轴联动最重要的原因是利用了控制卡上专用运动控制芯片提供的硬件插补功能,这类专用运动控制芯片能够根据PC机给出的插补终点和插补速度等参数,利用某些插补算法计算出各个轴的进给脉冲和进给方向,并将这两类信号输出到接口板的某些固定端子上。
步进电机要想能够实现一个脉冲对应电机转过一个步距角,除了需要步进电机以外,还需要一个步进电机驱动器为步进电机实现脉冲分配和功率驱动放大的功能。
(1)参考电气主电路图,在控制箱内找到与DC24V电源相连的模块以及连接所用的端子。
(2)依据控制电路图和《DMC3000硬件手册》,找到接口板与步进电机驱动器的控制信号接线,并思考接口板和驱动器之间的电气接口原理。
(3)依据控制电路图和《DMC3000硬件手册》,找到限位开关和光栅尺电路。
实验结果:
通过实验,可得出平台控制电路图(见附录2)
实验三运动控制卡软件接口与简单的点位控制程序
初步了解DMC300运动控制卡的软件接口形式
台式PC机一台
运动控制卡接口板步进电机驱动器等模块间的电气连接保证了运动控制卡输出的运动和控制信号的传输。
但要实现工作台按照某些规律运动,除了上边所述的正确电气连接外,还需要运动控制卡提供相应的软件接口(Inteface)来接受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
(11)在CTestDlg:
:
OnlnitDialog()函数中添加代码
d3000_board_init();
(12)在CtestDlg中添加一个成员函数OnCancel,在OnCancel函数中添加代码d3000_board_close();
CDialog:
OnCancel();
(13)双击启动按钮在按钮点击事件中输入代码
d3000_start_t_move(0,1000,400,1000,0.1,0.1);
双击停止按钮在按钮点击事件中输入代码
d3000_decel_stop(0,0.1);
(14)编译运行按下启动按钮第0轴就会输出长度为1000的脉冲运动中可以按下停止按钮便会减速停止脉冲输出。
2、完整程序结果:
#include"
stdafx.h"
hr.h"
hrDlg.h"
dmc3000.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{public:
CAboutDlg();
//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:
//DDX/DDVsupport
virtualvoidDoDataExchange(CDataExchange*pDX);
//}}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){
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAPEND_MESSAGE_MAP()
//CHrDlgdialog
CHrDlg:
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)
//{{AFX_DATA_MAP(CHrDlg)
theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CHrDlg,CDialog)//{{AFX_MSG_MAP(CHrDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1_start,OnBUTTON1start)
ON_BN_CLICKED(IDC_BUTTON2_stop,OnBUTTON2stop)//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//CHrDlgmessagehandlers
BOOLCHrDlg:
OnInitDialog()
{d3000_board_init();
OnInitDialog();
//Add"
About..."
menuitemtosystemmenu.
.\//IDM_ABOUTBOXmustbeinthesystemcommandrange.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:
Addextrainitializationhere
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol}
OnSysCommand(UINTnID,LPARAMlParam)
{if((nID&
0xFFF0)==IDM_ABOUTBOX){
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}else{
OnSysCommand(nID,lParam);
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
OnPaint()
{if(IsIconic())
CPaintDCdc(this);
//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicondc.DrawIcon(x,y,m_hIcon);
else
{CDialog:
OnPaint();
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow.
HCURSORCHrDlg:
OnQueryDragIcon()
return(HCURSOR)m_hIcon;
OnCancel()
{d3000_board_close();
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);
OnBUTTON2stop()
实验四连续插补运动控制的程序实现
利用VB编写程序,控制DMC300卡完成两段连续插补轨迹运动。
DMC300(动态连接库中给出的插补函数都是简单的直线或圆弧插补运动。
但实际生产中要求工作台能够完成连续轨迹运动,即完成了一段插补运动后能够平滑的进入下一段插补运动。
DMC300提供的运动状态函数和连续运动函数能够实现这一功能。
在VB开发环境下编写程序,实现如图4-1所示轨迹的连续运动。
1、步骤:
⑴打开VisuaiC++6.0
⑵新建一个工程
⑶选择MFCAPPWizard(exe)
⑷选择工程保存路径,如E盘
⑸输入工程名,如sb
⑹按“确定”键,在应用程序类型中选择“基本对话”,按“确定”键,建立工程
⑺双击窗口控件,在Ford_Load事件中添加代码
d3000_bord_init
选择UnLoad事件,在Form_UnLoad事件中添加代码
d3000_bord_close
双击“启动”按钮,在CB_Start_Click事件中添加代码
AxisArray[0]=0;
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、完整程序结果:
test01.h"
test01Dlg.h"
///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:
//}}AFX_DATA
//DDX/DDVsupport//}}AFX_VIRTUAL
//{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};
{//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT
//{{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:
//{{AFX_DATA_INIT(CTest01Dlg)
voidCTest01Dlg:
//{{AFX_DATA_MAP(CTest01Dlg)
theClassWizardwilladdDDXandDDVcall