📄 drive.cpp
字号:
#include "stdafx.h"
#include "conio.h"
#include "drive.h"
//wreg1(轴指定,数据) ----------写入寄存器1设定
void wreg1(int axis,int wdata)
{
_outpw(BASE_ADR+WR0,(axis<<8)+0xf); //轴指定
_outpw(BASE_ADR+WR1,wdata);
}
//wreg2 (轴指定,数据)----------写入寄存器2设定
void wreg2(int axis,int wdata)
{
_outpw(BASE_ADR+WR0,(axis<<8)+0xf); //轴指定
_outpw(BASE_ADR+WR2,wdata);
}
//wreg3 (轴指定,数据)----------写入寄存器3设定
void wreg3(int axis,int wdata)
{
_outpw(BASE_ADR+WR0,(axis<<8)+0xf); //轴指定
_outpw(BASE_ADR+WR3,wdata);
}
//command(轴指定,命令编码)-------命令写入
void command(int axis,int cmd)
{
_outpw(BASE_ADR+WR0,(axis<<8)+cmd);
}
//range(轴指定,数据)------------范围(R)设定
void range(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x00);
}
//acac(轴指定,数据) ------------变化率(K)设定
void acac(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8+0x01));
}
//acc(轴指定,数据) ------------加/减速(A)设定
void acc(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x02);
}
//dec(轴指定,数据) ------------减速度(D)设定
void dec(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x03);
}
//startv(轴指定,数据)------------初始速度(SV)设定
void startv(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x04);
}
//speed(轴指定,数据) ------------驱动速度(V)设定
void speed(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x05);
}
//pulse(轴指定,数据) ------------输出脉冲数/终点(P)设定
void pulse(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x06);
}
//decp(轴指定,数据) ------------手动减速点(DP)设定
void decp(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x07);
}
//center(轴指定,数据)------------圆弧中心点(C)设定
void center(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x08);
}
//lp(轴指定,数据) ------------逻辑位置计数器(LP)设定
void lp(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x09);
}
//ep(轴指定,数据) ------------逻辑位置计数器(EP)设定
void ep(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0a);
}
//compp(轴指定,数据) ------------COMP+(CP)设定
void compp(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0b);
}
//compm(轴指定,数据) ------------COMP+(CM)设定
void compm(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0c);
}
//accofst(轴指定,数据)-----------加速计数器偏移(AO)设定
void accofst(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0d);
}
//readlp(轴指定) ------------逻辑位置计数器数值(LP)读出
long readlp(int axis)
{
long a;long d6;long d7;
_outpw(BASE_ADR+WR0,(axis<<8)&0x10);
d6=_inpw(BASE_ADR+RR6);
d7=_inpw(BASE_ADR+RR7);
a=d6+(d7<<16);
return(a);
}
//readep(轴指定) ------------逻辑位置计数器数值(EP)读出
long readep(int axis)
{
long a;long d6;long d7;
_outpw(BASE_ADR+WR0,(axis<<8)&0x11);
d6=_inpw(BASE_ADR+RR6);
d7=_inpw(BASE_ADR+RR7);
a=d6+(d7<<16);
return(a);
}
//wata(轴指定) ------------等驱动结束
void wait(int axis)
{
while(_inpw(BASE_ADR+RR0)&axis);
}
//next_wait() ------------等连续插补下一个数据设定
void next_wait(void)
{
while((_inpw(BASE_ADR+RR0)&0x0200)==0);
}
//bp_wait() ------------等BP插补下一个数据设定
void bp_wait(void)
{
while((_inpw(BASE_ADR+RR0)&0x6000)==0x6000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -