基于PC与mpc033三轴串口运动控制器组成的运动控制实例 点击:1129 | 回复:4



    
  • 精华:0帖
  • 求助:1帖
  • 帖子:27帖 | 45回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2007年8月31日
发表于:2015-09-15 15:28:49
楼主

摘要:采用PC和mpc033三轴运动控制器作为控制系统的核心,控制三路步进电机或伺服电机。PC发送指令给mpc033三轴运动控制器,控制器信号输出给步进驱动器作高速运动。可以定点运动,直线插补和圆弧插补,并能实时作逻辑处理。

 

 1.引言

基于PC的运动控制的应用在国内已有十几年的历史,通常运动控制都需要用到PCI运动控制卡,但PCI运动控制卡价格高昂,使用复杂,插槽容易接触不良,也不适合用笔记本电脑来编程调试。因此,本文采用基于RS485接口的mpc033三轴运动控制器与PC构成运动控制系统。

mpc033三轴运动控制器集成普通IO,模拟量输出,步进电机和伺服电机控制。具有如下特点:

◆   RS485通讯,可多个控制器组网工作。 

◆   7路光耦隔离输入,9路光耦隔离晶体管集电极开路输出。

◆   最大脉冲输出频率为2MHz,脉冲输出使用脉冲+方向方式。

◆   二路0-10v模拟量输出。

◆   输入输出口都带有独立指示灯。

◆   四轴独立运动控制,任意两轴直线插补,任意两轴圆弧插补。 

◆   每轴可设一路硬件回原点,两路电机信号输出。

◆  在线运行方式带1000级指令缓存深度,指令先进先出,控制器与PC端无需高速实时通讯。

◆  提供DLL动态链接函数库,可用于Window2000/XP/7平台二次开发。控制器仅有21条函数指令,使用简单。

◆  单电源12V-24V直流供电。

◆  控制器体积小巧,可安装于狭小空间。

 

2,系统硬件架构

硬件系统由三部分构成,如图所示:

(1)       PC

(2)       mpc033三轴运动控制器

(3)       电气机械传动部分

mpc033三轴运动控制器采用24V电源供电,RS485通讯口A,B与PC通过USB转485转换器连接。X0,X1,X2可作为三路电机的原点信号,Y0,Y1为第1轴的脉冲和方向信号。Y2,Y3为第2轴的脉冲和方向信号。Y4,Y5为第3轴的脉冲和方向信号。

 

3,系统软件设计

PC端软件采用Visual Basic 6.0设计,操作系统为Microsoft Windows XP,首先将从官网下载的动态链接库mpc.dll拷入系统文件夹,然后在模块中对函数作声明。如下:

 

 

Public Declare Function inp_move Lib "mpc" (cardno As Byte, no1 As Byte, no2 As Byte, pulse1 As Long, pulse2 As Long, mode As Byte) As Byte                '二轴直线插补

 

Public Declare Function inp_arc Lib "mpc" (cardno As Byte, no1 As Byte, no2 As Byte, X As Long, y As Long, i As Long, j As Long, mode As Byte) As Byte '二轴圆弧插补

 

Public Declare Function set_speed Lib "mpc" (cardno As Byte, axis As Byte, acc As Long, dec As Long, startv As Long, speed As Long) As Byte                   '设置轴速度

 

Public Declare Function set_soft_limit Lib "mpc" (cardno As Byte, axis As Byte, mode As Byte, pulse1 As Long, pulse2 As Long) As Byte                '设置轴软件限位

 

Public Declare Function pmove Lib "mpc" (cardno As Byte, axis As Byte, pulse As Long, mode As Byte) As Byte               '单轴运行

 

Public Declare Function wait_delay Lib "mpc" (cardno As Byte, value As Integer) As Byte                    '等待延时数

 

Public Declare Function set_command_pos Lib "mpc" (cardno As Byte, axis As Byte, value As Long) As Byte                         '设置轴逻辑位置

 

Public Declare Function wait_pulse Lib "mpc" (cardno As Byte, axis As Byte, value As Long) As Byte                    '等待轴脉冲数

 

Public Declare Function write_bit Lib "mpc" (cardno As Byte, number As Byte, value As Byte) As Byte                   '写输出口状态

 

Public Declare Function sudden_stop Lib "mpc" (cardno As Byte, axis As Byte) As Byte                     '轴停止

 

Public Declare Function wait_in Lib "mpc" (cardno As Byte, number As Byte, value As Byte) As Byte                 '等待输入口状态

 

 

Public Declare Function read_bit Lib "mpc" (cardno As Byte, number As Byte) As Byte   '读取输入口状态

 

Public Declare Function get_out Lib "mpc" (cardno As Byte, number As Byte) As Byte     '获取输出口状态

 

Public Declare Function wait_stop Lib "mpc" (cardno As Byte, axis As Byte) As Byte            '等待轴停止

 

Public Declare Function set_da Lib "mpc" (cardno As Byte, number As Byte, value As Integer) As Byte                '设置DA电压值

 

Public Declare Function get_number Lib "mpc" (cardno As Byte) As Long            '获取唯一序列号

 

Public Declare Function read_fifo_count Lib "mpc" (cardno As Byte) As Integer            '读

缓冲空间未执行指令数量

 

Public Declare Function get_status Lib "mpc" (cardno As Byte) As Byte          '获取各轴工作状态

 

Public Declare Function get_command_pos Lib "mpc" (cardno As Byte, axis As Byte) As Long                         '获取轴逻辑位置

 

Public Declare Function set_cardno Lib "mpc" (cardno As Byte)                    '设置卡号

 

Public Declare Function link Lib "mpc" () As Byte                '通讯连接

 

Public Declare Function no_link Lib "mpc" () As Byte                '取消连接

 

 

 

使用函数前先确保PC与控制器物理连接正常,然后使用link函数连接通讯,如成功便可发送其它指令了。

试验程序如下:

 

 

       If link ()  then              '通讯连接成功

 

       call set_cardno(1)                        '设卡号为1

       call set_speed(1 ,1,1000,1000,10,200)   ' 设1轴速度

       call set_speed(1 ,2,1000,1000,10,200)       ' 设2轴速度

       call set_speed(1 ,3,1000,1000,10,200)    '设3轴速度

 

        '1轴回原点

       call  pmove(1,1,-1000000,0)          ' 1轴运动

       call  wait_in(1,0,1)                     '  等待X0为高

       call  sudden_stop(1,1)                  ' 1轴停止

       call  set_command_pos(1,1,0)            ' 设1轴此时坐标为0

       call  pmove(1,2,3200,0)        '2轴运动

       call  pmove(1,3,-3200,0)         '3轴运动    

       end if

 

4,结束语

PC和mpc033三轴运动控制器构成的运动控制系统,运动控制器只需使用485接口与PC通信,只需使用几条简单的指令便可完成运动控制过程,大大降低运动控制系统的设计调试难度,大大提高运动控制系统的稳定性


正在下载,请等待……
下载附件需0积分!




shuai652990934

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 174回
  • 年度积分:12
  • 历史总积分:1360
  • 注册:2011年5月08日
发表于:2015-09-22 11:52:15
1楼

111111111111111111111111111111

lin5979

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1783回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2003年9月12日
发表于:2015-11-16 13:55:16
2楼

顶,顶,好资料下来学习学习,谢谢啊。

mpc034

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 18回
  • 年度积分:0
  • 历史总积分:120
  • 注册:2015年5月09日
发表于:2016-03-07 14:46:13
3楼

顶顶看看下。

mpc103串口三轴运动控制器模块集成普通IO,模拟量输出,步进电机和伺服电机控制。RS485通讯,可多


模块组网工作。2MHZ高速脉冲输出,可直线圆弧插补,体积仅4.5*2.5*3.5CM,全密封设计,防水,防尘


,防震,稳定可靠,集成所有电路,24芯屏蔽线缆输入输出,可直接接开关,驱动器等,通过串口线直接


连接PLC,电脑,单片机板联机控制用于各中小型机械设备。控制器模块仅有14条指令,指令自动缓存式


连续执行,与控制端无需高速实时通讯,可用于各中小型机械设备!

官网www.mpc000.com可下载最新的使用手册和应用文档 

  • 精华:0帖
  • 求助:1帖
  • 帖子:27帖 | 45回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2007年8月31日
发表于:2016-06-15 13:36:38
4楼

mpc003,mpc004,mpc006,mpc004s运动控制芯片模块插入底板便成了运动控制器。。


热门招聘
相关主题

官方公众号

智造工程师