1、机电一体化实验报告机电一体化实验报告一 体 化系 统 设 计实验报告学 院 专 业 班 级 学 号 姓 名 指导教师xx 年1 月12 日实验一 机电一体化系统的组成实验目的:以XY简易数控工作台为例,说明机电一体化系统的基本组成和各模块的特点。实验设备:l 台式PC机一台l 标准XY工作台一套l 运动控制卡一块l 游标卡尺一把实验内容:XY简易数控工作台是一典型的机电一体化系统,是许多数控加工设备和电子加工设备的基本部件,XY数控工作台主要由运动控制卡、DC24V开关电源、步进电机及其驱动器、XY向运动平台、光栅尺和霍尔限位开关组成,其之间的关系如图1、1所示。工作原理大致为:运动控制卡接受
2、PC机发出的位置和轨迹指令,进行规划处理(插补运算),转化成步进电机驱动器可以接受的指令格式(速度脉冲和方向信号)发给驱动器,由驱动器进行脉冲环行分配和功率放大从而驱动步进电机,步进电机经过联轴器、滚动丝杠推动工作台按指定的速度和位移运动。实验步骤:(1) 在XY数控工作台系统中分别找到上述各个模块,并指出各模块在机电一体化系统中实现哪一模块的功能。运动控制卡:运动控制卡是PCL、CPCL、PXL等总线形成的板卡,通俗地讲我们可以把它看成一个单片机,有自己的算法,可以通过VC、VB、labview、BCB等语言实现其功能,数控系统即通过运动控制卡来实现对机床运动轨迹的控制。DC24V开关电源:
3、对供电要求质量比较高的控制设备提供纯净、稳定、没有杂波的直流电源。步进电机及其驱动器:步进电机用于驱动数控工作台的X、Y两个方向的移动;步进电机通过驱动器细分,可减小步距角,从而提高步进电机的精确率,实现脉冲分配和功率驱动放大,此外还可以消除电机的低频振荡、提高电机的输出转矩。XY向运动平台:分别传输X、Y两个方向的运动。光栅尺:光栅尺是一种位移传感器,是利用光栅的光学原理工作的测量反馈装置。经常应用于数控机床的闭环伺服系统中,可用作直线位移或者角位移的检测。霍尔限位开关:用于限制工作台的运动超出导轨的有效长度。(2) 使用卡尺测量,计算其平均导程P=10 ;观察其循环器,可知其循环方式为 内
4、循环 ;预紧方式是 螺纹调隙式 。(3) 观察导轨截面,并查阅机电一体化技术手册,可知其属于GGA,GGB,GGC,GGF中哪类?GGB 。其适用场合 机械加工中心、NC车床、搬运装置、电火花加工机、木工机械、激光加工机、精密测试仪器、包装机械、食品机械、医疗器械、工具磨床、平面磨床等 。(4) 查阅DMC3000硬件手册可知系统中的运动控制卡可实现 四轴的联动,并具有16 个数字量输入和16 个数字量输出控制。(5) 记录步进电机型号,网上查阅其详细技术参数,可知其属于(反应式,永磁式,混合式) 混合 式步进电机,整步步距角为1、8 ,额定工作电压2、6V 。测量电机机座的长宽尺寸属于57
5、尺寸系列机型。一般来说尺寸系列越大,其输出扭距越 大 。XY数控工作台系统的草图可见附录1:实验二XY简易数控工作台的电气连接实验目的:以数控系统中基本的电机运动控制和限位开关控制为例,了解基于运动控制卡的XY简易数控工作台的电气连接。实验设备:l 台式PC机一台l 标准XY工作台一套l 运动控制卡一块实验内容:运动控制卡能够实现多轴联动最重要的原因是利用了控制卡上专用运动控制芯片提供的硬件插补功能,这类专用运动控制芯片能够根据PC机给出的插补终点和插补速度等参数,利用某些插补算法计算出各个轴的进给脉冲和进给方向,并将这两类信号输出到接口板的某些固定端子上。步进电机要想能够实现一个脉冲对应电机
6、转过一个步距角,除了需要步进电机以外,还需要一个步进电机驱动器为步进电机实现脉冲分配和功率驱动放大的功能。实验步骤:(1) 参考电气主电路图,在控制箱内找到与DC24V电源相连的模块以及连接所用的端子。(2) 依据控制电路图和DMC3000硬件手册,找到接口板与步进电机驱动器的控制信号接线,并思考接口板和驱动器之间的电气接口原理。(3) 依据控制电路图和DMC3000硬件手册,找到限位开关和光栅尺电路。实验结果:通过实验,可得出平台控制电路图(见附录2)实验三运动控制卡软件接口与简单的点位控制程序实验目的:初步了解DMC3000运动控制卡的软件接口形式l 实验设备:台式PC机一台l 标准XY工
7、作台一套l 运动控制卡一块实验内容:运动控制卡接口板步进电机驱动器等模块间的电气连接保证了运动控制卡输出的运动和控制信号的传输。但要实现工作台按照某些规律运动,除了上边所述的正确电气连接外,还需要运动控制卡提供相应的软件接口(Interface)来接受PC机发出的运动控制命令。DMC3000运动控制卡的软件接口是以动态连结库(DLL)的形式提供的。所谓动态连接库,在编程实现上可以理解成一个函数的集合,在这个库里包含有许多函数。DMC3000控制卡的用户通过在软件程序中调用动态连接库中的某些函数,从而达到操作运动控制卡的目的。实现DMC3000卡控制工作台做某些直线插补运动。(1) 运行Moti
8、on3000,在其界面下了解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 和d
9、mc3000、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);
10、双击停止按钮在按钮点击事件中输入代码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 CAb
11、outDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX
12、_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg(): CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutD
13、lg)/ No message handlers/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 initialization here/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win
14、32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CHrDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CHrDlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CHrDlg, CDialog)/AFX_MSG_MAP(CHrDlg)ON_WM_SYSMAND()ON_WM_PAINT()ON_WM_Q
15、UERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1_start, OnBUTTON1start)ON_BN_CLICKED(IDC_BUTTON2_stop, OnBUTTON2stop)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CHrDlg message handlersBOOL CHrDlg:OnInitDialog() d3000_board_init();CDialog:OnInitDialog();/ Add About、 menu item to system menu、/ IDM_ABOUTBOX must be in the s
16、ystem mand range、ASSERT(IDM_ABOUTBOX & 0xFFF0)= IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog、 The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIco
17、n, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CHrDlg:OnSysmand(UINT nID, LPARAM lParam)if (nID & 0xFFF0)= IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout、DoModal();elseCDialog:OnSysman
18、d(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 paintingSe
19、ndMessage(WM_ICONERASEBKGND, (WPARAM)dc、GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect、Width()cyIcon +1)/2;/ Draw the icondc、DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint(
20、);/ The system calls this to obtain the cursor to display while the user drags/ the minimized window、HCURSOR CHrDlg:OnQueryDragIcon()return (HCURSOR)m_hIcon;void CHrDlg:OnCancel() d3000_board_close();CDialog:OnCancel();void CHrDlg:OnBUTTON1start()short AxisArray2; AxisArray0=0; AxisArray1=1; d3000_s
21、tart_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卡完成两段连续插补轨迹运动。实验设备:l 台式PC机一台l 标准XY工作台一套l 运动控制卡一块实验内容:DMC3000动态连接库中给出的插补函数都
22、是简单的直线或圆弧插补运动。但实际生产中要求工作台能够完成连续轨迹运动,即完成了一段插补运动后能够平滑的进入下一段插补运动。DMC3000提供的运动状态函数和连续运动函数能够实现这一功能。在VB开发环境下编写程序,实现如图4-1所示轨迹的连续运动。图4-1实验步骤及结果:1、步骤:打开Visuai C+6、0新建一个工程选择MFC APPWizard(exe)选择工程保存路径,如E盘输入工程名,如sb按“确定”键,在应用程序类型中选择“基本对话”,按“确定”键,建立工程。双击窗口控件,在Ford_Load 事件中添加代码 d3000_bord_init 选择UnLoad 事件,在Form_Un
23、Load 事件中添加代码 d3000_bord_close 双击“启动”按钮,在CB_Start_Click 事件中添加代码short AxisArray2; AxisArray0=0; AxisArray1=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
24、_t_line2 (AxisArray, 0,1000,400,1000, 0、1, 0、1); 双击“停止”按钮,在CB_Stop_Click 事件中添加代码 d3000_decel_stop 0, 0、1运行,按下“启动”按钮,开始脉冲,按下“停止”按钮便会减速停止脉冲。2、完整程序结果:#include stdafx、h#include test01、h#include test01Dlg、h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif#include dmc
25、3000、h/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/D
26、DV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg(): CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN
27、_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CTest01Dlg dialogCTest01Dlg:CTest01Dlg(CWnd* pParent /*=NULL*/): CDialog(CTest01Dlg:IDD, pParent)/AFX_DATA_INIT(CTest01Dlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_I
28、NIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CTest01Dlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CTest01Dlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MES
29、SAGE_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()/ CTest01Dlg message handlersBOOL CTest01Dlg:OnInitDialog() d3000_board_init();CDialog:OnInitDialog();/ 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 s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1