当前位置:文档之家› 运动控制卡应用编程技巧

运动控制卡应用编程技巧

运动控制卡应用编程技巧
运动控制卡应用编程技巧

运动控制卡应用编程技巧

内容来源网络,由“深圳机械展(11万㎡,1100多家展商,超10万观众)”收集整理!

更多cnc加工中心、车铣磨钻床、线切割、数控刀具工具、工业机器人、非标自动化、数字化无人工厂、精密测量、3D打印、激光切割、钣金冲压折弯、精密零件加工等展示,就在深圳机械展.

关于源代码的阅读,需要读者有一定的C++编程基础,至少对以下表示形式不会产生误解:const char *pString; //指定pString邦定的数据不能被修改

char * const pString; //指定pString的地址不能被修改

const char * const pString; //含上面两种指定功能

当然,随便提醒一下,这些源代码若需要加入你的软件工程当中,还需要作一些调整和修改,因此,这些源代码实质上称为伪代码也可以,之所以展现它们,是让程序员们有个可视化的快感,特别是那些认为源代码就是一切的程序员。

同时,为了提高针对性,大部分控制卡调用的函数会明确指出是邦定哪些卡的,实际应用时,程序员可自行选择,以体现一下自己的智商是可以写写软件的。

一、控制卡类的单一实例实现

把控制卡类作一个类来处理,几乎所有C++程序员都为举双手表示赞同,故第一个什么都没有的伪代码就此产生,如下表现:

class CCtrlCard

{

public:

…Function

public:

…attrib

}

于是,用这个CctrlCard可以产生n多个控制卡实例,只要内存足够。然而,针对现实世界,情况并不那么美好。通常情况下,PC机内只插同种类型的控制卡1到2张,在通过调用d1000_board_init或d3000_board_init函数时,它们会负责返回有效卡数nCards,然后从0-nCards*4

- 1自行按排好轴数。初始化函数就是C++的new或malloc的操作,取得系统的资源,但是控制卡的资源与内存不一样,取得资源后必需要释放才可以再次获取,即控制卡资源是唯一的。

既然控制卡资源是唯一的,那么最好Cctrlcard产生的实例也是唯一的,这样,我们可以方便的需要定义一个全局变量即可:

CctrlCard g_Dmcard;

在其它需要调用的地方,进行外部呼叫:

extern CctrlCard g_DmcCard;

以上方法实在太简单了,很多人都会开心起来。实质上,方法还有很多,即然可以产生n 多对实例,我们的核心是只要保证调用board_init函数一次即可,故也可以单独定义一个InitBoard函数:

class CctrlCard

{

public:

static int InitBoard(); //定义一个静态函数,以表警示

}

int CctrlCard::InitBoard()

{

return d1000_board_init();

}

还有一种方法,情况稍加复杂,但表达的功能也要强一些,以下展现可以稍微安慰一下代码狂。

Class CctrlCard

{

public:

CctrlCard(); //请注意这个构造函数的定义

}

CctrlCard::CctrlCard()

{//呵呵,也很明了

static int n(0); //注意,是个静态变量

n++; //每次调用CctrlCard生成实例时,都会计数一次

assert( n == 1 ); //在DEBUG版本下,只有n==1的情况下可以通过

//否则,会出现致命错误,还好,它会告诉你错在哪个文件,

//哪一行,呵呵,是个好东东啊。

}

通过强行报警处理,当你有g_DmcCard这个实例时,其它的所有控制卡的定义都只能是以引用或指针的方式进行了,不会再产生新有效的实例了,对于由小组编程的项目软件,而你又恰好负责编程控制卡这一块的话,以上的显性报警,会让其它人心领神会。当然,你也可以将上面的方法加入到InitBoard当中去,可以避你的无意识的多次调用了。

附:无意识的多次调用经常发生,特别是那些对MFC机制不明确的程序员,在多文档框架下,不知道这个CctrlCard::InitBoard函数到底是应该放在CmainFrame的OnCreate里面,还是应该放在CchildFrame的OnCreate,或者是Cview的OnInitUpdate里面进行调用。

在一言难尽MFC的情况下,我建议两个小方法:

No.1 将CctrlCard的函数置于Cmainframe的OnCreate或者Capp::Initstance内调用No.2 将InitBoard函数稍加改造成这样:

Int CctrlCard::InitBoard()

{

static int n(-1000);//注意,-1000是控制卡函数不可能返回的值

if( n == -1000 )

n = d1000_board_init();

return n;//这样,即使多次调用也不样怕了,呵呵,雕虫小技也可以除虫啊

}

必须额外声明一下,不是不重视资源的释放,而是作为一个C++程序员写下这些代码是基本的义务(这也是我为什么要交待读者必须要有一定的C++基础):

class CctrlCard

{

public:

~CctrlCard()

{//定义析构函数,在此释放资源,对此,我不想再转到读者的眼球了

d1000_board_close();

}

}

二、数据结构及数据类型的定义,部分相关声明

调用控制卡驱动函数时,经常会有如下形式:

单轴相对运动d1000_start_t_move( axis, pulse, start, speed, accel );

单轴绝对运动d1000_start_ta_move( axis, pulse, start, speed, accel );

两轴相对插补d1000_start_t_line( axisArray, distArray, start, speed, accel );

两轴绝对插补d1000_start_ta_line( axisArray, distArray, start, speed, accel );

圆弧相对插补d3000_start_t_arc( axisArray, C1, C2, E1,E2, dir, start, speed, accel ); 圆弧绝对插补d3000_start_ta_arc( axisArray, C1, C2, E1,E2, dir, start, speed, accel );

以上的调用,很多重复枯燥,又不直观,难于理解,并且在面向客户时,常常是指每分多少米,或者每秒多少毫米,很少有人问每秒多少脉冲,移动多少脉冲作距离,故需要单位之间的换算。显然,对于这些问题,我想,C++程序员应该找到用武之地了,所以我们一步一步来,慢慢统一各个问题。实质上,在以下的几个技巧,也需要在此澄清一些概念。

先来几个宏定义提高一下情绪:

# define MAX_AXIS 4 //最多轴数

# define XCH 0 //定义X轴的值

# define YCH 1

# define ZCH 2

# define UCH 3

…..(其它以次类推)

# define M_ABS 0x01 //定义一个绝对标志位

# define M_INP 0x02 //定义一个插补位

接下来深入一点点,再来几个结构定义:

typedef struct tag_ARC

{

tag_ARC( double ox=0.0, double oy=0.0, double ex=0.0, double ey=0.0, int dir=0 ):

ox(ox), oy(oy),

ex(ex), ey(ey),

dir(dir)//定义这样一个构造函数需要勇气,看似不合理,但是好用麻

{

}

double ox,oy;

double ex,ey;

int dir;

}ARC;

typedef struct tag_SPEED

{

tag_SPEED( double start=0.0, double speed=0.0, double accel=0.0, double decel=0.0,

double scc=0.0 ) :

start(start),

speed(speed),

accel(accel),

decel(decel),

scc(scc)

{

}

double start;

double speed;

double accel;

double decel;

double scc;

}SPEED;

以上两个ARC和SPEED的结构定义,把几个参数变成一个参数。比如要实现的单轴驱动函数,就变得非常明了:

void Move( int nAxis, double fMM, const SPEED &speed, int nFlag = M_ABS );//往后我们再具体完善其实现。

以上的结构具有类的特性,但是由于其每个成员都可以给外部直接使用,故就不需要什么类的public及其析构函数的定义了。之所以全都采用double的数据类型,是面向客户习惯及单位计算方便的。

接下来是对控制卡常用的单位计算及部分常用变量的声明:

class Cctrlcard

{

public:

…(其它略去)

public:

//属性

mutable int ORGIN; //指定原点状态位

mutable int LIMIT_A, LIMIT_B; //指定左右限位状态位

private:

//以下的属性不给外部访问的

struct tag_AXIS{//单轴属性

double fUnitPM; //脉冲当量

long nRP; //每转脉冲数

double fJourey; //行程

};

tag_AXIS m_axis[MAX_AXIS];

};

定义ORGIN,LIMIT_A, LIMIT_B为变量,是有两个意义:

No.1 当你访问它们的状态时,不需要每次调用d1000_get_axis_status函数,你可以这样:Int nStatus = d1000_get_axis( XCH );

If( nStatus & g_https://www.doczj.com/doc/1f17017652.html,IN == g_https://www.doczj.com/doc/1f17017652.html,IN )

If( nStatus & g_DmcCard.LIMIT_A == g_DmcCard.LIMIT_A )

If( nStatus & g_DmcCard.LIMIT_B == g_DmcCard.LIMIT_B );

No.2

你可以扩展不同的卡,当外部调用的程序逻辑已被确定时,当你需要从DMC1000控制卡升级到DMC3000控制卡时,只需要给ORGIN等状态位指定不同的值即可。指定状态位的值也有一

个小小的技巧,以ORGIN为例,在DMC1000控制卡,其位值在2位,则可以这样:ORGIN = 1<<2;

在DMC3000控制卡,其值在第9位,则这样:

ORGIN = 1<<9;

方法都很简单,关键是要想得到。

对于tag_AXIS定义,引出几个函数的声明,专门为其服务:

void SetUP( nit nAxis, double fMM, double nPulse, double fMax );//设定当量double P2M ( int nAxis, long nPulse ); //脉冲转成毫米pulse to metric

long M2P( int nAxis, double fMM ); //毫米转成脉冲mitric to pulse

现在,再回过头来完成Move函数的实现,以便获得一点点成就感,同时也展示一下以上的大堆表述是有其意义的。

void Move( int nAxis, double fMM, const SPEED &speed, int nFlag = M_ABS )

{

( nFlag & M_ABS == M_ABS ) ?

d1000_start_ta_move( nAxis, //绝对

M2P( nAxis, fMM),

M2P( nAxis, speed.start ),

M2P( nAxis, speed.speed),

Speed.accel ): //注意是冒号,?:是一个表达式

d1000_start_t_move( nAxis, //相对

M2P( nAxis, fMM),

M2P( nAxis, speed.start ),

M2P( nAxis, speed.speed),

Speed.accel );

}

是不是很简单呢,当外部调用时,客户的观念就直接面对Metric即可,如:

Move( XCH, 10.0, SPEED(5,10,0.1), M_ABS );//达到绝对位置10.0毫米处。

三、插补和联动函数

当程序员决定需要几轴进行插补时,尽量选择最大插补轴数,如在雕铣系统时,有时会用到两轴插补,有时会进行三轴插补,在这个基础上,为简化编程,我的理论只使用三轴插补,当需要进行两轴插补或联动时,根据相对或绝对的坐标关系,将不运动轴填入0偏移或绝对位置即可。

以下为XYZ三轴联动和插补的函数,由nFlag的M_INP位决定是否进行插补:

void MoveXYZ( double fX, double fY, double fZ, const tag_SPEED &speed,

int nFlag = M_ABS )

{

short axisArray[]={ XCH, YCH, ZCH };

if( nFlag & M_INP == M_INP )

{//插补

long distArray[]={ M2P(XCH, fX), M2P(YCH,fY), M2P(ZCH,fZ) };

long nStart, nSpeed;//计算新的矢量速度,参见DMC1000矢量速度的计算

(…矢量速度计算在此略去)

( nFlag & M_ABS == M_ABS ) ?

d1000_start_ta_line( 3, axisArray, nStart, nSpeed, speed,accel )://绝对

d1000_start_t_line(3, axisArray, nStart, nSpeed, accel );//相对

}

else

{//联动

double fpos[]={ fX, fY, fZ};

for( int I(0); I<3; I++)//发三次单轴移动命令

Move( axisArray[I], fpos[I], speed, nFlag );

}

}

在我给出的DMC3000控制卡类完整源代码一文中,有其更完善的版本。通过以下的函数

封装,将插补和联动,绝对位置,相对位置等等都很好的整合在一起,用户在使用起来具体更准确的目标。

四、驱动轴状态、位置读取和设定

对于驱动轴的状态,分为两种:1、指脉冲输出状态;2、指专用输入信号电平状态

检测脉冲输出是否完成,可以写成如下函数,假设软件总共只用到XYZ三轴:int IsRunning( int nAxis = -1 )//默认为-1是有目的的

{

if( nAxis != -1 )

return d1000_check_done( nAxis ) == 0 ;

//当nAxis == -1时,检测三个轴是否有一个在运行,这种检测在加工时常用

return d1000_check_done( XCH ) == 0 ||

d1000_check_done( YCH ) == 0 ||

d1000_check_done( ZCH ) == 0;

}

当用户等待YCH脉冲发完,则用一个循环检测即可:

while( g_DmcCard.IsRuning( YCH ) ) ::DoEvents();

别忘了,IsRuning是CctrlCard的成员函数,而DoEvents函数在DMC1000不能响应系统消息的文章中有详细实现和功能描述。

在实际加工时,作插补时,常需要等待上次所有运动结束才开始新的运动。故有如下表现:for( int I(0),step(0); I

{

DoEvents();

switch( m_nworkStatus ){

case Pause:

continue;

case Continue: m_nWorkStatus = Running;

case Running:

{

switch( step ){

case 0:

if( IsRunning() ) break;//检测所有运动结束,否则继续检测

MoveXYZ( data[I].x, data[I].y, data[I].z …… );

Step ++;

Break;

Case 1:

If( IsRunning() ) break;//同上

I++; //准备下一段数据,之所以放在此处,是需要考虑在运行过程中,有外部的暂停和继续操作。

Step = 0;//准备运行新的数据

Break;

}

} break;

}

以上程序框架,有着非常广阔的应用前景,非常简单,可以让程序员随意控制,故而它又非常稳定,比起线程的操作,它具体非常透明的可操作性。

此框架在雕刻,焊接,切割等许多场合都将成为经典,当然,若你不曾深入了解它,则不会发现它的可爱之处。

对于专用输入信号状态的检测,几乎没有什么特别之处:

int GetStatus( int nAxis )

{

return d1000_get_axis_status( nAxis );

}

位置的读取和设定,对于DMC1000比较容易,故在此我将写出DMC3000控制卡的这两个函数,当然用于DMC1000也是没问题的。

DMC3000控制卡的位置分为指令位置和物理位置(编码器反馈的),所以函数需要有一个小小的选择,先看看位置获取函数:

Double GetPosition( int nAxis, BOOL bCmd = true )// bCmd == true时,读取指令位置,否则为物理位置

{

long pulse = (bCmd == true ) ?

d3000_get_command_pos( nAxis ):

d3000_get_encoder_pos(nAxis);

return P2M( nAxis, pulse );//脉冲转成毫米然后返回

}

位置设定函数多了一点点动作:

double SetPosition( int nAxis, double fMM, BOOL bCmd = true )

{

double pos = GetPosition( nAxis, bCmd );//先取得原来的位置

( bCmd == true )?

D3000_set_command_pos( nAxis, M2P(nAxis, fMM )):

D3000_set_encoder_pos( nAxis, M2P(nAxis, fMM) );

Return pos;//返回旧的位置

}

为什么这样设计?当你用过CPen *pOldPen= pDC->SelectObject( &newPen

);时,或者除了复位之外,你真正需要调用这个SetPosition函数时,你会发现这个设计,真是人情味实足。

五、复位,相对与绝对,

在如今PC机开发控制卡软件时代,设备上电不复位的几乎没有,在此谈到复位这个问题确实有必要,实现上,复位动作因不同设备的工艺要求而定,故一般而言,控制卡提供的那个复位函数太过简单,有点力不从心,所以,本人自己写了个复位函数,但是代码写起来将会占用很大的面版,故有此需要者,可以来电或E_mail索取。

其基本思路是采用两次找原点,第一次高速找,停止后退出,再次以较低的速度找原点。并且在执行第二次复位时,会在离原点5毫米处减速(第一次执行做不到)。提供相对和绝对位置的概念是很有必要的,众所周知,现在控制卡能作到最小单位为1个脉冲,当然,作为数字脉冲,到此已不能再小了,故为了提高精度,通常情况下要提高计算当量,即增加每转脉冲数,或减少每转毫米数。

不论怎么,我们将问题放大并明朗化,可以看看以下片段:

for( int I(0); I<10000; I++)// 走10000次

move( 0.5 );//走相对0.5个脉冲的距离

结果是:1个脉冲也发不出,造成很大的累积误差。

若换成绝对方式:

for( int I(0); I<10000; I++)

goto( I*0.5 );

最后的误差,最大也就是1个脉冲以内。虽然还是有误差,但总算达到可容忍的程序,再加上适当的复位操作,客户至少不必再担心这个巨大的累积误差了。

实质上,在整个软件设计时最好采用绝对坐标系,即使要处理加工原点或工面起点等这些参数,也要把它换算成绝对位置,唯手动移动设备可以例外。另外,在CNC系统中,除了有循环用到相对坐标系,其余都是用绝对坐标系为上策,实际上,在实现编程算法上,为统一起见,最好将相对的坐标关系全部转成绝对的坐标关系,这

样也便于外部进行暂停或继续的处理。相信,到此为止,若你的设备在加工时有一定的误差漂移,你会意识到自己应该是不是要检查一下采用了什么坐标系了吧。

六、输出输入及软限位

对于通用的I/O操作,没有什么特别要说明的,只有两点需要注意的,先给出两个小函数,以作参考:

int ReadBit( int nIO ); //读指定通用输入口的电平状态,返回1 或0

int WriteBit( int nIO, int nStatus ); // 输出电平到指定输出端口

两点注意:

No.1 对于ReadBit若需要加入抗干扰处理,则写一个函数:Int RealInput( int nIO, int nStatus, int di=50 )

{

if( ReadBit( nIO ) != nStatus )

return 0;

while( di -- );//耗上几个CPU的周期时间,再读一次return ReadBit( nIO ) == nStatus;

}

No.2 增加一个变量及函数扩展一下输出功能:

Long m_nOutStatus= 0x00000000;

再次改造一下WirteBit

void WriteBit( int nIO, int nStatus )

{

if( nStatus ){

m_nOutStatus |= (1<

}

else{

m_nOutStatus &= (~(1<

}

d1000_out_bit( nIO, nStatus );

}

添加的访问输出状态函数:

int ReadOutbit( int nIO )

{

static int a;

a = 1<<(nIO-1);

a &= m_nOutStatus;

return a!=0;

}

软限位的思想原本是用于为客户节省正负限位的光电开关成本而产生的,致使使用软件限位正常的话,设备每个驱动轴只需要一个原点开关即可。当然,软限位能正确运作是非常重要的,否则很容易撞坏设备。而其正确运行,就必须依赖正确的复位动作,以找到可靠的机械原点位置。

软件限位的基本算法非常简单,特别是在一个绝对坐标系当中。其原理如下:

if( pos < minPos ) pos = minPos;

if( pos > maxPos ) pos = maxPos;

内容来源网络,由“深圳机械展(11万㎡,1100多家展商,超10万观众)”收集整理!

更多cnc加工中心、车铣磨钻床、线切割、数控刀具工具、工业机器人、非标自动化、数字化无人工厂、精密测量、3D打印、激光切割、钣金冲压折弯、精密零件加工等展示,就在深圳机械展.

运动控制卡设计步骤

运动控制卡开发四步曲 1使用黑金开发板实现脉冲控制的运动控制卡 运动控制器第一步:实现简单脉冲控制系统 方式、 占空比 可编程 脉冲输 出 1.1使用Quartus II软件建立SOPC工程,按照上图建立添加所需CPU及外设。 1.2使用Nios II建立UC-OS-II工程。 1.3在UC-OS-II中建立一个任务,用于收发以太网数据,跟上位机通讯。 1.4在Quartus II中加入编码器解析模块,将来自编码器的AB信号转化成位置和速度,并支持总线读写,最高编码器脉冲频率20M。 1.5在Quartus II中加入脉冲输出模块,实现CPU发出的脉冲速度和脉冲数,最高输出脉冲频率8M。 1.6在Nios II中规划速度曲线,周期200us输出一个脉冲速度。 1.7连接驱动器和电机进行调试。 1.8加入缓冲控制。 1.9加入高速捕获功能。 1.10加入回零功能。

2使用DSP开发板+黑金开发板实现脉冲控制的运动控制卡 运动控制器第二步:DSP+FPGA脉冲控制系统 方式、 占空比 可编程 脉冲输 出 电压保护 2.1在第一步的系统中,增加与DSP通信的模块。 2.2Nios II中接收到上位运动指令之后,发出中断信号给DSP,DSP读取运动数据。 2.3DSP读取位置信号,规划出速度曲线输出到FPGA输出脉冲。 3. 连接驱动器和电机进行调试。 3使用DSP开发板+黑金开发板实现速度控制的运动控制卡

运动控制器第三步:DSP+FPGA 速度控制系统 8路模 拟量输出 3.1在第二步的基础上,在DSP 中增加位置环调节算法,输出速度曲线到FPGA ,FPGA 控制DA 输出模拟量。 3.2连接驱动器和电机进行调试。 4实现速度控+脉冲制的运动控制卡 电压保护 运动控制器第四步:DSP+FPGA 速度控制运动控制器 8路模 拟量输出 16方式、占空比可编程脉冲输出 线驱动器

运动控制卡概述

运动控制卡概述 ? ?主要特点 ?SMC6400B独立工作型高级4轴运动控制器 功能介绍: 高性能的独立工作型运动控制器以32位RISC为核心,控制4轴步进电机、伺服电机完成各种功能强大的单轴、多轴运动,可脱离PC机独立工作。 ●G代码编程 采用ISO国标标准G代码编程,易学易用。既可以在文本显示器、触摸屏上直接编写G代码,也可以在PC机上编程,然后通过USB通讯口或U盘下载至控制器。 ●示教编程 可以通过文本显示器、触摸屏进行轨迹示教,编写简单的轨迹控制程序,不需要学习任何编程语言。 ●USB通讯口和U盘接口 支持USB1.1全速通讯接口及U盘接口。可以通过USB接口从PC机下载用户程序、设置系统参数,也可用U盘拷贝程序。

●程序存储功能 程序存储器容量达32M,G代码程序最长可达5000行。 ●直线、圆弧插补及连续插补功能 具有任意2-4轴高速直线插补功能、任意2轴圆弧插补功能、连续插补功能。应用场合: 电子产品自动化加工、装配、测试 半导体、LCD自动加工、检测 激光切割、雕铣、打标设备 机器视觉及测量自动化 生物医学取样和处理设备 工业机器人 专用数控机床 特点: ■不需要PC机就可以独立工作 ■不需要学习VB、VC语言就可以编程 ■32位CPU, 60MHz, Rev1.0 ■脉冲输出速度最大达8MHz ■脉冲输出可选择: 脉冲/方向, 双脉冲 ■2-4轴直线插补 ■2轴圆弧插补 ■多轴连续插补 ■2种回零方式 ■梯型和S型速度曲线可编程

■多轴同步启动/停止 ■每轴提供限位、回零信号 ■每轴提供标准伺服电机控制信号 ■通用16位数字输入信号,有光电隔离 ■通用24位数字输出信号 ■提供文本显示器、触摸屏接口 技术规格: 运动控制参数 运动控制I/O 接口信号 通用数字 I/O 通用数字输入口 通用数字输出口 28路,光电隔离 28路,光电隔离,集电极开路输出 通讯接口协议

维宏维鸿四轴真四轴联动雕刻机运动控制卡说明书word版本

1.1维鸿系统的安装 在安装新的维鸿前,请删除旧版本的维鸿。删除的方法请参考程序卸载一节。维鸿系统包括软件和运动控制卡两部分。所以,系统的安装也分为两个阶段:软件安装和运动控制卡的安装。 总体上,请您在安装完软件之后再安装运动控制卡,这样运动控制卡的驱动 程序就不需要单独安装。所以简单以说,可以分为这样几个步骤: (1)安装维鸿软件,待安装程序提示关闭计算机后,关闭计算机。 (2)关闭计算机后,安装运动控制卡。 (3)重新启动计算机,进入Windows操作系统后,略微等待一会,待Windows 自动完 成配置,整个安装工作就算完成了。 (4)运行维鸿系统。 下面详细介绍其中的关键步骤。 维鸿软件安装 请按照下面的步骤安装软件: (1)打开计算机电源,启动计算机,系统自动运行进入Windows操作系统。 如果你还没有安装Windows操作系统,请首先安装该操作系统。 (2)Windows操作系统启动后,注意请关闭其他正在运行的程序。 (3)解压维鸿V2.0免安装包,打开里面的dotNetFrameWork文件夹,安装 dotNetFx40_Full_x86_x64.exe (4)打开维鸿V2.0文件夹,右键创建桌面快捷方式

(5)双击打开桌面快捷键方式,运行维鸿。 NcStuHio.... 维鸿软件驱动安装 USB 设备驱动支持XP 、win7或win8等32位操作系统,任何一个小的错误 都有可能安装驱动失败。 1. 将USB 数据线连接到电脑任意 USB 接口,若出现新硬件向导信息提示 中选“是,仅这一次(I ) ”选项,点击“下一步”。在出现新硬件向导信息提示 中选“从列表或指定位置安装(高级)”选项,点击“下一步”。 X Nc^tudi^.exe 二 NcStudia.txe.config 话 ” Ncituclio.ini ,INcstudi? 」Ncitudisoooooao 込 Noiijdll Ncuixllljcorifiig O public.dat X WHDJcc 空 2y U S B Ds vAtkr .d 11 2015-S^I 14:21 创建日! S9J KB 36D 云盘 嵯(H) WifilVlerge 康用360im 占用 梔用3讯動删住 隹角北0时本旦云査棗 梅用何勰右歸理 口上传到百度云 雄到任务栏(K) 附刹[幵冏菓鱼(U) 瓯以前旳龄S 盘送對㈣ 蛊切⑴ 复制(0 IW) 创建快捷方式(S) 892 KE Figurdti... 1 KB 1 KB 73 KB 2 KG 4展 1,243 KB Team Viewer 辫 传惑初 Q 压宿izi p p E d)艾彳牟宝 邮件阳牛人 ■ ,DVD RW 3動髓 ?

运动控制卡应用编程技巧

运动控制卡应用编程技巧 内容来源网络,由“深圳机械展(11万㎡,1100多家展商,超10万观众)”收集整理! 更多cnc加工中心、车铣磨钻床、线切割、数控刀具工具、工业机器人、非标自动化、数字化无人工厂、精密测量、3D打印、激光切割、钣金冲压折弯、精密零件加工等展示,就在深圳机械展. 关于源代码的阅读,需要读者有一定的C++编程基础,至少对以下表示形式不会产生误解:const char *pString; //指定pString邦定的数据不能被修改 char * const pString; //指定pString的地址不能被修改 const char * const pString; //含上面两种指定功能 当然,随便提醒一下,这些源代码若需要加入你的软件工程当中,还需要作一些调整和修改,因此,这些源代码实质上称为伪代码也可以,之所以展现它们,是让程序员们有个可视化的快感,特别是那些认为源代码就是一切的程序员。 同时,为了提高针对性,大部分控制卡调用的函数会明确指出是邦定哪些卡的,实际应用时,程序员可自行选择,以体现一下自己的智商是可以写写软件的。 一、控制卡类的单一实例实现 把控制卡类作一个类来处理,几乎所有C++程序员都为举双手表示赞同,故第一个什么都没有的伪代码就此产生,如下表现: class CCtrlCard { public:

…Function public: …attrib } 于是,用这个CctrlCard可以产生n多个控制卡实例,只要内存足够。然而,针对现实世界,情况并不那么美好。通常情况下,PC机内只插同种类型的控制卡1到2张,在通过调用d1000_board_init或d3000_board_init函数时,它们会负责返回有效卡数nCards,然后从0-nCards*4 - 1自行按排好轴数。初始化函数就是C++的new或malloc的操作,取得系统的资源,但是控制卡的资源与内存不一样,取得资源后必需要释放才可以再次获取,即控制卡资源是唯一的。 既然控制卡资源是唯一的,那么最好Cctrlcard产生的实例也是唯一的,这样,我们可以方便的需要定义一个全局变量即可: CctrlCard g_Dmcard; 在其它需要调用的地方,进行外部呼叫: extern CctrlCard g_DmcCard; 以上方法实在太简单了,很多人都会开心起来。实质上,方法还有很多,即然可以产生n 多对实例,我们的核心是只要保证调用board_init函数一次即可,故也可以单独定义一个InitBoard函数: class CctrlCard {

运动控制卡C程序示例

2. VC 编程示例 2.1 准备工作 (1) 新建一个项目,保存为“ VCExample.dsw ”; (2) 根据前面讲述的方法,将静态库“ 8840.lib ”加载到项目中; 2.2 运动控制模块 (1) 在项目中添加一个新类,头文件保存为“ CtrlCard.h ”,源文件保存为“ CtrlCard.cpp ”; (2) 在运动控制模块中首先自定义运动控制卡初始化函数,对需要封装到初始化函数中的库函数进行初始化; (3) 继续自定义相关的运动控制函数, 如:速度设定函数,单轴运动函数,差补运动函数等; (4) 头文件“ CtrlCard.h ”代码如下: # ifndef __ADT8840__CARD__ # define __ADT8840__CARD__ 运动控制模块 为了简单、方便、快捷地开发出通用性好、可扩展性强、维护方便的应用系统,我们在控制卡函数库的 基础上将所有库函数进行了分类封装。下面的示例使用一块运动控制卡 ****************************************************** #define MAXAXIS 4 //最大轴数 class CCtrlCard { public: int Setup_HardStop(int value, int logic); int Setup_Stop1Mode(int axis, int value, int logic); (设置stop1 信号方式) int Setup_Stop0Mode(int axis, int value, int logic); (设置stop0 信号方式) int Setup_LimitMode(int axis, int value1, int value2, int logic); (设置限位信号方式) int Setup_PulseMode(int axis, int value); (设置脉冲输出方式) int Setup_Pos(int axis, long pos, int mode); (设置位置计数器) int Write_Output(int number, int value); (输出单点函数) int Read_Input(int number, int &value); (读入点) int Get_CurrentInf(int axis, long &LogPos, long &ActPos, long &Speed); (获取运动信息) int Get_Status(int axis, int &value, int mode); (获取轴的驱动状态) int StopRun(int axis, int mode); (停止轴驱动) int Interp_Move4(long value1, long value2, long value3, long value4); (四轴差补函数) int Interp_Move3(int axis1, int axis2, int axis3, long value1, long value2, long value3); (三轴差补函数) int Interp_Move2(int axis1, int axis2, long value1, long value2); (双轴差补函数) int Axis_Pmove(int axis ,long value); (单轴驱动函数) int Axis_Cmove(int axis ,long value); (单轴连续驱动函数) int Setup_Speed(int axis ,long startv ,long speed ,long add ); (设置速度模块) int Init_Board(int dec_num); (函数初始化) (设置速度模块) CCtrlCard(); (定义了一个同名的无参数的构造函数) int Result; // 返回值 }; #endif

nMotion运动控制卡使用手册2.0

nMotion运动控制卡使用手册 nMotion控制卡特点: 支持Mach3所有版本,包括目前最新版本. 支持所有Windows版本,包括Windows8 USB无需驱动,所有Windows版本即插即用,支持热插。 USB总线采用高档芯片磁耦隔离,真正有价值的隔离,不同于一般控制卡的光耦隔离输入输出,做到了超可靠性,绝对保证电脑USB的安全。同时保证的超强的EMC抗干扰能力。 单芯片,系统更精减,比一般的又芯片处理方式稳定性高出不知多少倍。 双核超高速CPU(单核最高主频204MHz),运算处理能力有极大冗余。并保证实现4轴联动下500KHz的脉冲输出频率,6轴联动的脉冲输出频率最高达300KHz,可接伺服/步进。 运动控制缓冲大小可设,保证最快插补周期也能稳定运行,电脑运行负荷过重时也能平稳运行。 拥有16路输入口,输入接口更简单,端口干湿接点均可,接线更为简单,干接点方法只要外部接一个物理开关到地线即可,所有16路输入口都有信号指示,为低电平时指示灯亮,调试简单明了。 拥有8路输出口,单路输出驱动能力500mA,可直接驱动直流继电器 PWM调速输出端口,可设PWM频率,0~1000连续可调 拥有测速功能,主轴实际转速在Mach3界面中实时显示,测量精准稳定。 电路板由工程师精心打造,设计水平一目了然。 带有256字节NVRAM空间,可保存6个轴的座标值,下次上电无需找零点。

目录 nMotion运动控制卡使用手册 (1) nMotion控制卡特点: (1) 目录 (2) 外观及安装孔机械尺寸: (5) 1 Mach3的软件安装 (6) 1.1安装准备 (6) 1.2 USB电缆的准备 (6) 1.3运动控制卡的软件安装 (7) 2 Mach3的软件配置 (8) 3.运动控制卡的硬件安装 (11) 3.15轴输出信号 (11) 3.2 16个输入端子(Input Port)引脚位置图 (12) 3.3 8路控制输出端子引脚位置图: (13) 4. 引脚功能描述 (14) 4.1 5轴输出端子(Axis Output Port )引脚功能描述 (14) 4.2 16 个输入端子(Input Port)引脚功能描述 (14) 4.3 输出端子(Out Port)引脚功能描述: (15) 5 USB运动控制卡的接线图 (16) 5.1 X、Y、Z、A、B轴输出 (16) 5.2 输入端口 (18) 5.3 各类规格传感器的接线和配置方法 (19) 5.4 输出端口 (20) 6 外部倍率旋钮 (21) 7 主轴调速PWM模拟量输出 (23) 7.2 主轴调速模拟输出接口原理图 (26) 7.3 主轴输出接线图(通用变频器的接线图) (27) 8 主轴测速 (27) 8.1 nmotion控制卡配置对话框 (27) 8.2 主轴转速显示 (28)

伺服-运动控制卡的工作原理及其应用

伺服-运动控制卡的工作原理及其应用 作者:深圳众为兴数控 运动控制卡通常是采用专业的运动控制芯片或高速DSP 来满足一系列运动控制需求的控制单元,其可通过PCI 、PC104等总线接口安装到PC 和工业PC 上,可与步进和伺服驱动器连接,驱动步进和伺服电机完成各种运动(单轴运动、多轴联动、多轴插补等),接收各种输入信号(限位原点信号,sensor),可输出控制继电器、电磁阀、气缸等元件。用户可使用VC 、VB 等开发工具,调用运动控制卡函数库,快速开发出软件。 以一个通用的XYZ 三轴通用控制平台开发为例,此平台加上胶枪、刀具等模块后可用于点胶、切割等用途,运动控制卡采用深圳众为兴数控开发的ADT8940A1,ADT8940A1运动控制卡是一款经济实用型运动控制卡,4轴伺服/步进电机控制,最大脉冲输出频率为2MHz ,每轴均有位置反馈输入;可实现2-4轴直线插补,可实现XYZ 三轴插补,进行整体配合动作;带有40路隔离数字输入,16路隔离数字输出,可控制胶枪、刀具等模块;具有外部信号驱动、硬件缓存等功能,能满足绝大部分的4轴以下工作平台的运动控制需求。

ADT8940A1能驱动绝大多数的伺服驱动器。ADT8940A1运动控制卡采用脉冲的方式驱动伺服,脉冲数量决定伺服电机的转动圈数,脉冲频率决定伺服电机的转动速度,同时ADT8940A1卡能够将伺服电机的位置实时反馈给控制系统软件。可将伺服报警、伺服到位等信号接入ADT8940A1卡,实时反馈伺服状态。用输出可实现伺服的伺服使能和伺服报警清除等功能。我们XYZ轴采用丝杠传动方式的话,XY假如选用5mm间距的丝杠,将伺服的每转脉冲设置为10000,ADT8940A1控制卡控制精度为1个脉冲,机械的精度将可以达到 5mm/10000=0.0005mm;ADT8940A1控制卡的速度可达2000000脉冲/秒,伺服电机的转速可以高达12000转/分钟,XY轴的速度可达1000mm/s。为了使机械运行更平稳,运用ADT8940A1的硬件加减速功能,能在很短时间内从低速加速到高速,同时也在运动中改变速度,实现速度灵活控制,设置也很简单,只需用运动控制函数库中的 set_startv设置低速,set_speed设置高速,set_acc设置加速度即可

RNR精简型USB运动控制卡使用说明

RNR精简型USB运动控制卡 MACH3专用版 V2.0 安装使用说明书 RNR RobotTech, 2010

目录 功能概览 (5) 外观及尺寸 (7) 接口示意图 (7) 安装尺寸图 (8) 初次使用 (8) 脉冲输出 (11) 连接(步进/伺服)电机驱动器 (11) 差分方式 (11) 单端方式 (12) 从属轴设置 (13) 其他说明 (14) 信号输入 (15) 输入信号的接线 (16) 急停按钮 (18) 限位开关 (19) 自动回原点 (21) 从属轴的自动回原点 (25) 自动对刀 (25) 自动刀具清零 (28) 自动寻边 (29)

寻中心 (31) 手轮接口 (32) 手轮接线 (33) Mach3的手轮设置 (34) 手轮接口作为扩展的信号输入 (36) 信号输出 (39) 信号输出的接线 (39) 主轴电机控制 (40) 继电器方式 (41) PWM方式 (42) 其他信号输出 (45)

警告: 由运动控制卡控制的机械设备,具有极强的专业性。对操作人员的知识及素质有特殊要求。若设备设计或使用不当,自动设备会具有一定的危险性和破坏性,请确保设计和使用的安全以及遵守相关法规法则,如果不确定,请咨询相关专家而不要冒险。 首次使用者、对本产品或Mach3软件性能不熟悉者,在试验本产品时,请确保机械设备的电源开关在手边并能迅速切断电源。 强烈建议使用者安装急停按钮并保证按钮功能正常。 本公司以"如其所示"的方式提供其产品和服务,对使用本公司产品造成的任何直接/间接人身伤害和财产损失不承担责任。

功能概览 RNR精简型USB运动控制卡专用于Mach3软件。其功能及特点如下: ●支持最多4轴联动控制。其中第4轴可以设为从动轴 ●输出脉冲100K,采用最小误差插补算法,加工精度高 ●USB接口,适用任何具有USB接口的上网本,笔记本,台式 机以及平板等PC兼容计算机 ●免驱动设计,能够更好地兼容各种软硬件环境(支持WinXP 及WIN7系统) ●支持自动回原点(回零) ●从动轴在回原点时自动调平 ●支持自动对刀 ●支持急停输入 ●支持限位开关接入 ●支持主轴控制(PWM方式及继电器方式) ●提供4路带光耦隔离数字信号输入 ●最多提供12路数字信号输入 ●提供4路带光耦隔离继电器输出 ●支持手轮接口

运动控制卡应用实验---指导书(201309版本)

机械设计制造及其自动化专业实验 ——机电控制实验 运动控制卡应用实验 实验指导书 重庆理工大学 机械工程学院 实践教学及技能培训中心 2014年1月

学生实验守则 1.学生应按照实验教学计划和约定的时间,准时上实验课,不得迟到早退。 2.实验前认真阅读实验指导书,明确实验目的、步骤、原理,预习有关的理论知识,并接受实验教师的提问和检查。 3.进入实验室必须遵守实验室的规章制度。不得高声喧哗和打闹,不准抽烟、随地吐痰和乱丢杂物。 4.做实验时必须严格遵守仪器设备的操作规程,爱护仪器设备,服从实验教师和技术人员指导。未经许可不得动用与本实验无关的仪器设备及其它物品。 5.实验中要细心观察,认真记录各种试验数据。不准敷衍,不准抄袭别组数据,不得擅自离开操作岗位。 6.实验时必须注意安全,防止人身和设备事故的发生。若出现事故,应立即切断电源,及时向指导教师报告,并保护现场,不得自行处理。 7.实验完毕,应主动清理实验现场。经指导教师检查仪器设备、工具、材料和实验记录后方可离开。 8.实验后要认真完成实验报告,包括分析结果、处理数据、绘制曲线及图表。在规定时间内交指导教师批改。 9.在实验过程中,由于不慎造成仪器设备、器皿、工具损坏者,应写出损坏情况报告,并接受检查,由领导根据情况进行处理。 10.凡违反操作规程,擅自动用与本实验无关的仪器设备、私自拆卸仪器而造成事故和损失的,肇事者必须写出书面检查,视情节轻重和认识程度,按学院有关规定予以赔偿。 重庆理工大学

说明 1.同学可以登录学校的“实验选课系统”(从学校首页登陆:https://www.doczj.com/doc/1f17017652.html,或从数字 校园登录),自己进行实验项目的选择。希望同学们能在每个实验项目开放的时间内尽早进行实验预约(预约时间必须比实验上课时间提前3天),因为学生数量比较多,如果某实验项目开放的时间内同学未能进行实验预约,则错过该实验项目的实验机会,补做就要在该实验项目下一次开放时进行。 2.如有什么问题,同学可以拨打电话62563127联系张君老师。

基于VC++的运动控制卡软件系统设计

基于VC++的运动控制卡软件系统设计 在自动控制领域,基于PC和运动控制卡的伺服系统正演绎着一场工业自动化的革命。目前,常用的多轴控制系统主要分为3大块:基于PLC的多轴定位控制系统,基于PC_based的多轴控制系统和基于总线的多轴控制系统。由于PC 机在各种工业现场的广泛运动,先进控制理论和DSP技术实现手段的并行发展,各种工业设备的研制和改造中急需一个运动控制模块的硬件平台,以及为了满足新型数控系统的标准化、柔性化、开放性等要求,使得基于PC和运动控制卡的伺服系统备受青睐。本文主要是利用VC++6.0提供的MFC应用程序开发平台探索研究平面2-DOF四分之过驱动并联机构的运动控制系统的软件开发。 平面2-DOF四分之过驱动并联机构的控制系统组成 并联机构的本体如图1,该机构由4个分支链组成,每条支链的一段与驱动电动机相连,而另一端相交于同一点。该并联机构的操作末端有2个自由度(即X 方向和Y方向的平动),驱动输入数目为4,从而组成过驱动并联机构。 控制系统的硬件主要有4部分组成:PC机,四轴运动控制卡,伺服驱动器和直流电动机。系统选用的是普通PC机,固高公司的GT-400-SV-PCI运动控制卡,瑞士Maxon公司的四象限直流伺服驱动器及直流永磁电动机。伺服驱动器型号为4-Q-DCADS50/5,与驱动器适配直流电动机型号为Maxon RE-35。运动控制系统的

构成如图2所示。上位控制单元由PC机和运动控制卡一起组成,板卡插在PC机主板上的PCI插槽内。PC机主要负责信息流和数据流的管理,以及从运动控制卡读取位置数据,并经过计算后将控制指令发给运动控制卡。驱动器控制模式采用编码器速度控制,驱动器接受到运动控制卡发出的模拟电压,通过内部的PWM电路控制直流电动机RE-35的运转,并接受直流电动机RE-35上的编码器反馈信号调整对电动机的控制,如此构成一个半闭环的直流伺服控制系统。 1.1 GT-400-SV控制卡介绍 固高公司生产的GT系列运动控制卡GT-400-SV-PCI可以同步控制4个轴,实现多轴协调运动。其核心由ADSP2181数字信号处理器和FPGA组成,能实现高性能的控制计算。控制卡同时提供了C语言函数库和Windows下的动态链接库,可实现复杂的控制功能。主要功能如下: (1) PCI总线,即插即用; (2)可编程伺服采样周期,4轴最小插补周期为200us,单轴点位运动最小控制周期为25us; (3) 4路16位分辨率模拟电压输出信号或脉冲输出信号模拟量输出范围:-10V-+10V,每路课独立控制,互不影响;

维宏PCIMC-3D 控制卡资料

维宏PCIMC-3D 控制卡说明书 PCIMC-3D 型计算机运动控制卡是维宏科技公司专门为NC STUDIO?运动控制系统(该系统是上海维宏科技有限公司自主开发、自有版权的运动控制系统)设计的配套板卡。该卡插在PC 机PCI 槽内,通过它实现机床运动控制。 一、控制卡的结构 PCIMC-3D 型计算机运动控制卡外形见下图,该卡尺寸为160mm*120mm。 LED 为一发光二极管用做状态指示。系统上电启动时,LED 闪烁发光。启动后持续发光。当NC STUDIO?运动控制软件启动后,LED 熄灭。 DB15 为15 芯(针)插座,通过电缆与机床通讯。 底端为插脚,插在PC 机PCI 槽内。 二、控制卡的安装 关闭主机电源,打开机箱盖,将运动控制卡插入任何一个空的PCI 槽内,安装时,用手轻按运动控制卡两侧,确保运动控制卡牢固插入PCI 槽,然后,旋紧固定螺钉,盖好机箱盖。1 三、控制卡与驱动系统的连接 NC STUDIO 的机械运动控制信号通过插在计算机PCI 扩展槽上的运动控制卡实现NC STUDIO 软件系统与安装在机床电气箱的进给电机驱动系统的通讯。PCIMC 运动控制卡与电机驱动系统连接之前,应先将机床与电气箱安装就位,用专用的15 芯电缆将运动控制卡上的15 芯插座与电气箱上的15 芯插座连接,这样NC STUDIO 运动控制卡与电机驱动系统的连接就完成了。 PCIMC-3D 控制卡与机床连接线插头定义如下: J1 接口定义(DB15RA/M,针):

四、电气接线示意图 为了控制主轴电机的转速,控制卡输出三个OC 门信号,分别可控制主轴高速、中速、低速旋转。这里要求变频器带分档控制。 如果选择DZJ-3 转接板,则电气接线更简单。三个轴六个方向的限位都用常闭开关,并将它们串联后,一端连到XW1,另一端连到XW2;限位释放按钮(常开,按下时接通)并接到XW1 和XW2;紧停开关(常闭)两端分别连到ES1 和ES2。SPL、SPM、SPH 用于控制变频器实现主轴转速的分档控制。三个轴的零点信号和对刀信号直接连到该转接板,如果使用普通行程开关,则这些开关都必须有一端与GND 相连;如果使用光电开关、霍尔开关或接近开关,转接板可为其提供5V 电源。

雷赛运动控制卡应用程序开发注意事项

发布时间:2011年6月1日 雷赛科技刘玉平概述: 对于一些初次使用雷赛运动控制产品的客户,由于对本公司产品的特点以及程序开发流程不够熟悉,在应用程序的开发过程中,难免会疏漏一些细节,从而产生各种问题,浪费很多宝贵的时间。 如果在应用程序开发前,就可以考虑到那些既重要又容易疏漏的细节,这样可以避免很多不必要的问题产生,从而大大缩短程序的开发周期。本文总结以往的经验,以雷赛运动控制卡DMC2410B为例,为客户在开发应用程序时的初始化过程给出了一些参考与建议(其他产品与此类似),其中包括运动控制卡的初始化、特殊参数的设置及各种信号的设置,如图1虚线框内所示,这些处理过程必须加载至应用程序的初始化过程中,不同编程环境下,应用程序的初始化过程略有不同,例如在VB6.0编程环境下,须在Form_Load()函数中做程序的初始化处理,而在VC6.0编程环境下,须在OnInitDialog()函数中做程序的初始化处理。

图1 DMC2410B控制卡应用程序开发流程

图1所示的控制卡初始化过程中,实线框内所示的参数设置或特殊信号的设置必须在初始化过程中加以处理,而虚线框内的信号在未选择使用时,可以不用设置,而当选择使用这些信号时,必须进行正确设置。下面对这些初始化过程的方法及必要性做出简要的说明。 一、初始化运动控制卡 相关函数:WORD d2410_board_init (void) 函数功能:为控制卡分配系统资源并初始化控制卡; 若在应用程序中未初始化控制卡,则系统无法为控制卡分配资源,导致控制卡无法正常使用,程序在运行时提示错误,弹出如图2所示对话框: 图2 未初始化控制卡时的错误提示 注意:程序在结束运行时,必须关闭运动控制卡,以释放系统资源,否则控制卡将一直占用系统资源,导致再次运行该应用程序时产生错误。关闭控制卡的方法及说明如下: 相关函数:Void d2410_board_close (void) 函数功能:释放控制卡占用的系统资源。当程序结束时必须调用此函数,它与d2410_board_init() 函数是一个相反的过程。 二、脉冲参数设置 脉冲参数包括指令脉冲类型、脉冲输出有效电平以及方向控制逻辑电平,这些参数需根据电机驱动器的类型及参数来设置,若设置错误时,则会造成控制卡正常发出脉冲,而电机无法正常运转、运转方向错误或只能朝同一个方向运转等现象。以下为脉冲参数设置的相关函数及说明:

运动控制卡资料

运动控制卡 开放式运动控制器PMAC 1.PMAC简介 PMAC(programmable multi-axes controller)是美国Delta Tau公司九十年代推出的开放式多轴运动控制器,它提供运动控制、离散控制、内务处理、同主机的交互等数控的基本功能。PMAC内部使用了一片Motorola DSP 56003数字信号处理芯片,它 的速度、分辨率、带宽等指标远优于一般的控 制器。伺服控制包括PID加Notch和速度、加 速度前馈控制,其伺服周期单轴可达60μs,二 轴联动为110μs。产品的种类可从二轴联动到 三十二轴联动。甚至连接MACRO现场总线的高 速环网,直接进行生产线的联动控制。与同类 产品相比,PMAC的特性给系统集成者和最终用 户提供了更大的柔性。它允许同一控制软件在三种不同总线(PC-XT和AT,VME,STD)上运行,由此提供了多平台的支持特性。并且每轴可以分别配置成不同的伺服类型和多种反馈类型。 2.PMAC的分类 PMAC卡按控制电机的控制信号来分,有1型卡和2型卡,1型卡输出±10V模拟量。主要用速度方式控制伺服电机.2型卡输出PWM数字量信号,可直接变为PULSE+DIR信号.来控制步进电机和位置控制方式的伺服电机。PMAC卡按控制轴数来分,有 2轴卡: MINI PMAC PCI 4轴卡:PMAC PCI Lite,PMAC2 PCI Lite, PMAC2A-PC/104及Clipper 8轴卡:PMAC-PCI,PMAC2-PCI和 PMAC2A-PC/104及Clipper 32轴卡:TURBO PMAC和TURBO PMAC2 PMAC卡按通讯总线形式分,有:ISA总线,PCI 总线,PCI04总线,网口和VME总线。 目前,PMAC各种轴数的1型和2型卡,都有上述的计算机总线方式供选择。PMAC除上述板卡形式外。还可以提供集成的系统级产品.有:UMAC ADVANTAGE400 、ADVANTAGE900等,具体分类可以参考北京泰诺德公司网站。

运动控制卡项目实施方案

第一章项目总论 一、项目概况 (一)项目名称 运动控制卡项目 (二)项目选址 xxx经济合作区 场址应靠近交通运输主干道,具备便利的交通条件,有利于原料和产成品的运输,同时,通讯便捷有利于及时反馈产品市场信息。 (三)项目用地规模 项目总用地面积59002.82平方米(折合约88.46亩)。 (四)项目用地控制指标 该工程规划建筑系数69.34%,建筑容积率1.26,建设区域绿化覆盖率7.42%,固定资产投资强度177.04万元/亩。 (五)土建工程指标 项目净用地面积59002.82平方米,建筑物基底占地面积40912.56平方米,总建筑面积74343.55平方米,其中:规划建设主体工程51073.25平方米,项目规划绿化面积5517.35平方米。 (六)设备选型方案

项目计划购置设备共计132台(套),设备购置费6905.61万元。 (七)节能分析 1、项目年用电量1374353.11千瓦时,折合168.91吨标准煤。 2、项目年总用水量23067.05立方米,折合1.97吨标准煤。 3、“运动控制卡项目投资建设项目”,年用电量1374353.11千瓦时,年总用水量23067.05立方米,项目年综合总耗能量(当量值)170.88吨标准煤/年。达产年综合节能量45.42吨标准煤/年,项目总节能率20.46%, 能源利用效果良好。 (八)环境保护 项目符合xxx经济合作区发展规划,符合xxx经济合作区产业结构调 整规划和国家的产业发展政策;对产生的各类污染物都采取了切实可行的 治理措施,严格控制在国家规定的排放标准内,项目建设不会对区域生态 环境产生明显的影响。 (九)项目总投资及资金构成 项目预计总投资18600.37万元,其中:固定资产投资15660.96万元,占项目总投资的84.20%;流动资金2939.41万元,占项目总投资的15.80%。 (十)资金筹措 该项目现阶段投资均由企业自筹。 (十一)项目预期经济效益规划目标

9030USB运动控制卡硬件连接参考V2.0

9030安装联接简明参考 版本2.0 北京东方嘉宏机电技术有限责任公司 2012/05/01 V2.0

目录 §1.1 9030外部尺寸 (3) §1.2 9030接线图 (4) §1.3 电机控制信号 (5) §1.3.1 伺服编码器输入连接方法 (6) §1.3.2 控制输出信号连接原理 (7) §1.3.3 伺服使能信号连接原理 (7) §1.4 VOUT/PWM输出选择 (8) §1.5 手摇脉冲发生器接口 (9) §1.6 通用数字IO信号 (10) §1.7 防干扰措施 (14) §1.8 9030卡外接+5V (15) §1.10 9030多张卡的连接 (15) 1、要求上位机的USB接口为2.0。 2、USB线长为不超过两米的单根标准USB2.0线。 3、为更好防干扰,请将9030卡和USB电缆远离 强干扰源(如伺服驱动器、变频器、电磁继电器等)

§1.1 9030外部尺寸 图1.1 9030外部尺寸图

§1.2 9030接线图 图1.2 9030接线图 在上图中: * +5V 接外部电源+5V 端 * +24V 外接24V 直流电源 * JD1~JD4为轴控信号接口 * JD5为手摇脉冲发生器接口 轴 控 信 号 接 口

* JD6为37针通用IO输出接口,共有24路输入/8路输出 * J9、J10跳线可改变输出方式为PWM输出或AD模拟量输出 * PWM/GND 提供一路PWM信号输出或-10V ~+10V模拟量输出。-10V ~+10V模拟量输出时,需外接±12V电源,同时接上GND (非常重要). 如果用户要用到通用IO输入点或通用IO输出点,必须在GND与+24V之间外接24V电源。§1.3 电机控制信号 9030卡各轴可分别通过两种方式控制电机运动:开环控制(脉冲输出)、半闭环控制+编码器反馈。 对于WinCNC 数控系统,轴的工作模式可在轴参数中设置。 以X轴为例: 开环控制时: 当9030卡以开环模式工作时,轴控信号接口中脉冲输出信号PULS、/PULS、SIGN、/SIGN 有效,编码器反馈信号(A+、A-、B+、B-、Z+、Z-)无效,见下表 半闭环控制时: 当9030卡以半闭环控制模式工作时,轴控信号接口中脉冲输出信号PULS、/PULS、SIGN、/SIGN有效,编码器反馈信号(A+、A-、B+、B-、Z+、Z-)有效,见下表 JD1-JD4轴控信号接口(15针)说 明如下:

运动控制卡Home功能

Home功能在运动控制系统里面是让设备的运动部件归原位的功能。由于运动控制系统的应用种类繁多而极其复杂,所以,必须具有多种运动控制模式才能满足应用的需求,因此多种Home 模式应运而生。 Home功能的应用主要在于一是部件控制的需要,二是能消除在多次的重复运行后所产生的位置误差。PCI-1240U/PCI-1220U这两款运动控制板卡的新版驱动common motion的为Home 功能作了升级,提供了11种Home模式,能很好的应对多种归原位的需要。 见下图,11种Home运动模式都是结合了不外乎四个感应信号来实现:正/反限位信号(LM+/LM-)、原点信号(ORG)、编码器的Z脉冲(EZ)。下图M是运动部件。 Home模式1:最简单的模式,无论M处在哪种可能位置都往正方向运动直到触碰到ORG产生电平上升沿时停止。此模式容易产生较大误差,误差值主要决定于Home运动的速度以及ORG 响应的速度。 Home模式2:以正向终点限位开关作为原点,当M触碰到EL+ 产生上升沿时停止。效果类同模式1。 Home模式3:以编码器转在360°(也就是0°)位置时为原点。EZ信号是编码器的Z脉冲,通常是电机转动到360°的位置就产生一个Z脉冲。这种模式就是当电机轴转动角度在360°(也就是0°)的位置时,电机停止,此处是原位。这里可能存在两种情况:1、电机在home 运动前编码器轴处在0°~360°任意位置,进行home运动电机将转动到360°的位置停止,2、

电机在home运动前编码器轴刚好在360°的位置,进行home运动电机将继续转动360°才停止,此时位置为原点。使用EZ脉冲是提高Home定位精度的有效方式。 Home模式4:以原点信号和编码器Z脉冲作为Home运动的决定条件,EZ的功能如同Home模式3。在此模式下,M正方向运动触碰到ORG点产生电平上升沿时停止并立刻启动继续正方向运动至接收到Z脉冲上升沿时再次停止,此时位置为原点。 Home模式5:以原点信号以及编码器Z脉冲作为Home运动的决定条件,EZ的功能如同Home 模式3。在此模式下,M正方向运动触碰到ORG信号上升沿时停止并立刻启动反方向运动至接

维宏维鸿四轴真四轴联动雕刻机运动控制卡说明书

维宏维鸿四轴真四轴联动雕刻机运动控制卡说明书 1.1 维鸿系统的安装 在安装新的维鸿前~请删除旧版本的维鸿。删除的方法请参考程序卸载一节。维鸿系统包括软件和运动控制卡两部分。所以~系统的安装也分为两个阶段: 软件安装和运动控制卡的安装。 总体上~请您在安装完软件之后再安装运动控制卡~这样运动控制卡的驱动程序就不需要单独安装。所以简单以说~可以分为这样几个步骤: (1) 安装维鸿软件~待安装程序提示关闭计算机后~关闭计算机。 (2) 关闭计算机后~安装运动控制卡。 (3) 重新启动计算机~进入Windows操作系统后~略微等待一会~待Windows 自动完成配置~整个安装工作就算完成了。 (4) 运行维鸿系统。 下面详细介绍其中的关键步骤。 维鸿软件安装 请按照下面的步骤安装软件: (1) 打开计算机电源~启动计算机~系统自动运行进入Windows操作系统。 如果你还没有安装Windows操作系统~请首先安装该操作系统。 (2) Windows 操作系统启动后~注意请关闭其他正在运行的程序。 (3) 解压维鸿V2.0免安装包,打开里面的dotNetFrameWork文件夹~安装 dotNetFx40_Full_x86_x64.exe (4) 打开维鸿V2.0文件夹~右键创建桌面快 捷方式

(5) 双击打开桌面快捷键方式~运行维鸿。 维鸿软件驱动安装 USB设备驱动支持XP、win7或win8等32位操作系统~任何一个小的错误都有可能安装驱动失败。 1. 将USB数据线连接到电脑任意USB接口~若出现新硬件向导信息提示中选“是~仅这一次,I,”选项~点击“下一步”。在出现新硬件向导信息提示中选“从列表或指定位置安装,高级,”选项~点击“下一步”。 2. 选择“在搜索中包括这个位置,O,”选项~点击“浏览”。

PCI1010运动控制卡使用说明书

PCI1010运动控制卡 硬件使用说明书 北京阿尔泰科技发展有限公司

目录 一.特点 (2) 二.规格 (2) 三.概述 (4) 四.布局图 (5) 五.使用说明 (5) 5.1 安装 (5) 5.2 通用输入口接线方式 (5) 5.3 驱动程序的安装 (6)

一.特点 ?32位PCI总线接口,即插即用 ?2轴伺服/步进电机控制,每轴可独立控制,互不影响 ?脉冲输出的频率误差小于0.1% ?脉冲输出速度最高可达到4 MHz ?可选择脉冲输出模式:CP/DIR, CW/CCW ?非对称直线加/减速驱动 ?梯形与S曲线速度轮廓 ?2轴直线插补、圆弧插补、模式插补、连续插补 ?固定线速度控制 ?多轴同步启动/停止 ?可编程控制加速与减速时间 ?在运动中改变输出脉冲数或驱动速度 ?运动中可以实时读出逻辑位置、实际位置、驱动速度、加速度、加/减速状态(加速中、定速中、减速中) ?每轴都有2 个32位比较寄存器用于逻辑位置计数器或者实际位置计数器的位置大小比较,可用于软件限位。 ?可接收伺服马达驱动器的各种信号,如硬件限位信号、到位信号、报警信号等 ?32位递增/递减计数器用于附加编码器 ?可方便地与任意步进电机、AC或DC伺服电机相连接 ?所有数字量输入/输出信号均有2500Vrms隔离 二、规格 ?控制轴2轴 ?CPU数据总线长度16位 插补功能 ?2轴直线插补 ●插补范围各个轴-8,388,607~+8,388,607 ●插补速度1~4MPPS ●插补位置精度±0.5LSB以下(在全插补范围内) ?圆弧插补 ●插补范围各个轴-8,388,607~+8,388,607 ●插补速度1~4MPPS ●插补位置精度±1LSB以下(在全插补范围内) ?2轴位模式插补 ●插补速度1~4MPPS(但依靠CPU数据设定时间) ?其他插补功能 ●线速常数●连续插补●步进插补 各轴通用规格 ?驱动输出脉冲(CLK=16MHz时) ●输出脉冲范围 1 ~ 4MPPS ●输出速度精密度±0.1%以下(对设定数值) ●速度倍率1~500 ●S曲线加速度变化率954 ~ 625×106PPS/SEC2 ●加/减速度125 ~ 1×106PPS/SEC ●初始速度 1 ~ 8000PPS (倍率=1的时候)

相关主题
文本预览
相关文档 最新文档