运动控制卡用什么编程
用VB、VC、Labview、Delphy等windows编程都可以呀,一般都提供windows的函数库,一般是动态链接库。
运动控制卡是基于PC总线,利用高性能微处理器(如DSP)及大规模可编程器件实现多个伺服电机的多轴协调控制的一种高性能的步进/伺服电机运动控制卡,包括脉冲输出、脉冲计数、数字输入、数字输出、D/A输出等功能,它可以发出连续的、高频率的脉冲串,通过改变发出脉冲的频率来控制电机的速度,改变发出脉冲的数量来控制电机的位置,它的脉冲输出模式包括脉冲/方向、脉冲/脉冲方式。脉冲计数可用于编码器的位置反馈,提供机器准确的位置,纠正传动过程中产生的误差。数字输入/输出点可用于限位、原点开关等。库函数包括S型、T型加速,直线插补和圆弧插补,多轴联动函数等。产品广泛应用于工业自动化控制领域中需要精确定位、定长的位置控制系统和基于PC的NC控制系统。具体就是将实现运动控制的底层软件和硬件集成在一起,使其具有伺服电机控制所需的各种速度弊庆大、位置控制功能,这些功能能通过计算租竖机方便地调用。现国内外运动控制卡公司有美国的GALIL、PMAC,英国的翠欧,台湾的台达、凌华、研华,大陆的研控、雷赛、固高、乐创、众为兴等。
运动控制卡的出现主要是因为:
(1)为了满足新型数控系统的标准化、柔性、开放性等要求;
(2)在各种工业设备(如包装机械、印刷机械等)、国防装备(如跟踪定位系统等)、智能医疗装置等设备的自动化控制系统研制和改造中,急需一个运动控制模块的硬件平台;
(3)PC机在各种工业现场的广泛应用,也促使配备相应的控制卡以充分发挥PC机的强大功能。
运动控制卡通常采用专业运动控制芯片或高速DSP作为运动控制核心,大多用于控制步进电机或伺服电机。一般地,运动控制卡与PC机构成主从式控制结构:PC 机负责人机交互界面的管理和控制系统的实时监控等方面的工作( 例如键盘和鼠标的管理、系统状态的显示、运动轨迹规划、控制指令的发送、外部信号的监控等等);控制卡完成运动控制的所有细节(包括脉冲和方向信号的输 出、自动升降速的处理、原点和限位等信号的检测等等)。
运动控制卡都配有开放的函数库供用户在差祥DOS或Windows系统平台下自行开发、构造所需的控制系统。因而这种结构开放的运动控制卡能够广泛地应用于制造业中设备自动化的各个领域。
支持Basic,PLC梯形图,HMI组态三种编程环境,易于仿真,调试与诊断,支持电子凸轮,直线,圆弧,小线段前瞻,多种机械手算法等复杂的运动轨迹控制,
同时支持C#,C++,LabVIEW, VB,.NET,python等多种PC上位机软件开发,广亮大泛应用于3C电子、视觉点胶、半导体、激光加工、木工加工、绕线、神键拍印刷包装、机械人delta/SCARA/码垛/五轴加工等行业领域。
还有他们家的EtherCAT IO模块也蛮好用的游羡,具体资料可以上官网找到。
{
initial();
init_uart();
// ES = 1;
// EA = 1;
P_SW2 = 0x80;
XOSCCR = 0xc0; //启动外部晶振
while (!(XOSCCR & 1)); //等待时钟稳定
CKDIV = 0x00; //时钟不分频
CKSEL = 0x01; //选择外部晶振
P_SW2 = 0x00;
led=0;
delay_nms(10) ;
/*独立运行轴1,2,3轴回原点,更多方式回原点可自由组合。mpc013运动控制模块专用
set_inp_speed(1 ,200,300,100); //设加速度50000Hz/s2, 运行速度30000Hz
pmove(1,1,-1000000,1); // 1轴多脉冲负方向运动,碰到原点限位自动停止
pmove(1,2,-1000000,1); // 2轴多脉冲负方向运动 ,碰到原点限位自动停止
pmove(1,3,-1000000,1); // 2轴多脉冲负方向运动,碰到原点限位自动停止
do
{
get_inp_state( 1, 2,inbuf); //只需读出2个字节来判断轴状态
}
while(inbuf[1]); //inbuf[1]数据为0表示所有轴都停
set_command_pos(1 ,1,0); //设1轴坐标
set_command_pos(1 ,2,0); //设2轴坐标培坦
set_command_pos(1 ,3,0); //设3轴坐标
*/
/*插补运行轴1,2,3,4轴回原点,更多方式回原点可自由组合。mpc014串口SPI运动控制模块专用
set_inp_speed(1 ,200,300,100); //设加速度50000Hz/s2, 运行速度30000Hz
inp_move4(1,1,2,3,4 ,-1000000,-1000000,-1000000,-1000000 ,1); // 4轴多脉冲插补负方向运动,碰到原点限位自动停止
do
{
get_inp_state( 1, 2,inbuf); //只需读出2个字节来配岁桐判断轴状态
}
while(inbuf[1]); //inbuf[1]数据为0表示所有轴都停雀念
set_command_pos(1 ,1,0); //设1轴坐标
set_command_pos(1 ,2,0); //设2轴坐标
set_command_pos(1 ,3,0); //设3轴坐标
set_command_pos(1 ,4,0); //设3轴坐标
*/
while(1)
{
if((!b1)&&(!b1_state))
{
delay_nms(10);
if((!b1)&&(!b1_state))
{
led=0;
b1_state=1;
set_inp_speed(1 ,300,300,100);
/*下面的指令会直接发到缓存区自动排队运行。mpc014串口SPI运动控制模块专用*/
inp_move2(1,2 ,1 ,6400 ,32000 ,1);
wait_delay(1 ,3000); //模块内部指令间延时3S
write_bit(1 , 0, 1);
inp_move2(1,2 ,1 ,6400 ,32000 ,1);
wait_delay(1 ,3000);
inp_move2(1,2 ,1 ,6400 ,32000 ,1); //2轴直线插补
inp_move1(1,3 ,10 ,1) ;
inp_move2(1,2 ,1 ,6400 ,32000 ,1);
inp_move2(1,2 ,1 ,6400 ,32000 ,1);
inp_move3(1,2,3,1 ,3000000,3000000 ,3000000 ,1); // 3轴直线插补
wait_delay(1 ,1000);
inp_move2(1,1 ,2 ,1000 ,1000 ,1);
write_bit(1 , 0, 1); // 0输出口为高
inp_move1(1,1 ,1000 ,1) ; // 1轴运行
inp_arc(1 ,2,3, -200, 200, -200, 0,0,1) ; // 2轴圆弧插补
/*上面的指令会直接发到缓存区自动排队运行。mpc014串口SPI运动控制模块专用*/
// set_inp_speed(1 ,5000,5000,100);
// pmove(1,1,1000, 1); // pmove只有mpc013能用
// wait_stop(1 ,1);
// pmove(1,2,-100, 1);
while(!b1);
}
}
else
led=1;
if((!b1)&&(b1_state))
{
delay_nms(10) ;
if((!b1)&&(b1_state))
{
led=0;
//sudden_stop(1,1); // 立即停止独立轴1轴 ,只适用于mpc013
//sudden_stop(1,6); // 立即停止所有插补轴
get_inp_state( 1, 20,inbuf); //读出20个字节数据放入数组
USRAT_transmit(inbuf,20); // 串口将数组数据发送出去查看
// if(inbuf[1]==0) //inbuf[1]数据为0表示所有轴都停
//set_special(1,0xfd);
// else
// set_special(1,0xfc);
//b1_state=0;
while(!b1);
}
}
}
}
串口G代码控制
Mpc014g模块可通过串口 G代码控制模块,串口通讯速率为115200bps,数据位为8位,停止位1位,无校验。
模块通讯协议完全兼容标准G代码,G代码详细的格式与用法请参考标准文档。上电芯片会主动发送字符“>”,工作时上位机每发送一条指令,会回复字符“ok”,发 M114会回复坐标。上位机只有当收到回复后,才可发送下一条指令。目前支持如下指令:
G0-快速定位 坐标,单位mm。速度F表示mm/s。
如:G0 X10 Y10 F30000
G1 - 直线插补 世界坐标,单位mm。
如:G1 X10 Y10 F30000
G2 - 正圆插补 X,Y为终点坐标,I,J为圆心相对起点坐标。
如:G2 X-20 Y20 I-20 J0 F30000
G3 - 逆圆插补
如:G2 X-20 Y20 I-20 J0 F30000
G90 - 绝对坐标
如:G90
G91 - 相对坐标
如:G91
G92 - 设置坐标
如:G92 X0 Y0
M92 - 脉冲系数 每MM多少脉冲,模块默认系数为1。
如:M92 X200 Y200 Z200 E200
M109 - 等待延时,单位MS
如:M109 S2000
M110 - 端口输出 ,T为端口号,Z为值
如:M110 T6 Z1
M112 -急停 ,停所有轴,并清空缓存
如:M112
M114 -读取当前坐标 ,返回轴坐标
如:M114
M115返回轴状态
如:M115
M116返回剩余缓存数量
如:M116
M204 - 设置加速度S,单位mm/s2。
如:M204 S5000