📄 mcx314aml.c
字号:
//D1: 0 软极限-:无效 //D0: 0 软极限+:无效 outpw(adr+wr3, 0x0000); //模式寄存器3 //D15~12:0000 //D11:0 通用输出OUT7:Low //D10:0 通用输出OUT6:Low //D9: 0 通用输出OUT5:Low //D8: 0 通用输出OUT4:Low //D7: 0 驱动状态输出:无效 //D6: 0 //D5: 0 //D4: 0 外部操作信号动作:无效 //D3: 0 //D2: 0 加减速曲线:直线加减速(台形) //D1: 0 加减速的対称/非対称:対称 //D0: 0 定量脉冲驱动的减速:自动减速 expmode(0x3,0x5d08,0x497f); //扩张模式 //[输入信号滤波] //W6/D15~13:010 输入信号滤波延迟:512μ //W6/D12:1 IN3信号滤波:有効 //W6/D11:1 EXPP,EXPM,EXPLS滤波:有効 //W6/D10:1 INPOS,ALARM信号滤波:有効 //W6/D9: 0 IN2信号滤波:无效 //W6/D8: 1 EMGN,LMTP/M,IN1,0滤波:有効 //W6/D7: 0 //W6/D6: 0 //W6/D5: 0 自动原点检出结束中断:禁止 //W6/D4: 0 LP/EP可変ring机能:无效 //W6/D3: 1 直线加减速時的三角防止:有効 //W6/D2: 0 脉冲输出的替换:无效 //W6/D1: 0 EP増减反転:无效 //W6/D0: 0 根据IN2信号清除EP:无效 //[自动原点检出模式] //W7/D15~D13 010 偏差计数器CLEAR脉冲幅:100μsec //W7/D12 0 偏差计数器CLEAR输出的理论电平:Hi //W7/D11 1 偏差计数器CLEAR输出: 有効 //W7/D10 0 极限信号作为原点信号使用:无效 //W7/D9 0 Z相信号AND原点信号: 无效 //W7/D8 1 理论/实际位置计数器CLEAR:有効 //W7/D7 0 STEP4移动方向: +方向 //W7/D6 1 STEP4: 有効 //W7/D5 1 STEP3检出方向: -方向 //W7/D4 1 STEP3: 有効 //W7/D3 1 STEP2检出方向: -方向 //W7/D2 1 STEP2: 有効 //W7/D1 1 STEP1检出方向: -方向 //W7/D0 1 STEP1: 有効 //------ X,Y轴 动作参数初期设定 -- accofst(0x3,0); // AO = 0 range(0x3,800000); // R = 800000(倍率 = 10) acac(0x3,1010); // K = 1010 (加/减速増加率 = 619KPPS/SEC2) dcac(0x3,1010); // L = 1010 (减速度増加率 = 619KPPS/SEC2) acc(0x3,100); // A = 100 (加/减速度 = 125KPPS/SEC) dec(0x3,100); // D = 100 (减速度 = 125KPPS/SEC) startv(0x3,100); // SV= 100 (初速度 = 1000PPS) speed(0x3,4000); // V = 4000 (驱动速度 = 40000PPS) pulse(0x3,100000); // P = 100000 (输出脉冲数 = 100000) lp(0x3,0); // LP= 0 (理论位置计数器 = 0) ep(0x3,0); // EP= 0 (実理位置计数器 = 0) command(0xc,0xf); //------ Z,U轴 模式设定 --------- outpw(adr+wr1, 0x0000); //模式寄存器1 //D15~8: 0 全部中断禁止 //D7: 0 IN3信号:无效 //D6: 0 IN3信号理论:Low动作 //D5: 0 IN2信号:无效 //D4: 0 IN2信号理论:Low动作 //D3: 0 IN1信号:无效 //D2: 0 IN1信号理论:Low动作 //D1: 0 IN0信号:无效 //D0: 0 IN0信号理论:Low动作 outpw(adr+wr2, 0x0000); //模式寄存器2 //D15:0 INPOS输入:无效 //D14:0 INPOS输入理论:Low动作 //D13:0 ALARM输入:无效 //D12:0 ALARM输入理论:Low动作 //D11:0 //D10:0 编码器输入分周:1/1 //D9: 0 编码器输入方式:2相脉冲 //D8: 0 驱动脉冲方向理论: //D7: 0 驱动脉冲理论:正理论 //D6: 0 驱动脉冲方式:2脉冲 //D5: 0 COMP対象:理论位置计数器 //D4: 0 -极限理论:Low动作 //D3: 0 +极限理论:Low动作 //D2: 0 极限停止模式:减速停止 //D1: 0 软极限-:无效 //D0: 0 软极限+:无效 outpw(adr+wr3, 0x0000); //模式寄存器3 //D15~12:0000 //D11:0 通用输出OUT7:Low //D10:0 通用输出OUT6:Low //D9: 0 通用输出OUT5:Low //D8: 0 通用输出OUT4:Low //D7: 0 驱动状态输出:无效 //D6: 0 //D5: 0 //D4: 0 外部操作信号动作:无效 //D3: 0 //D2: 0 加减速曲线:直线加减速(台形) //D1: 0 加减速的対称/非対称:対称 //D0: 0 定量脉冲驱动的减速:自动减速 //因为Z轴和U轴的自动原点检出的方式不同、 //以下的扩张模式个别设定。 expmode(0x4,0x5d08,0x01c4); //Z轴 扩张模式 //[输入信号滤波] //W6/D15~13:010 输入信号滤波延迟:512μ //W6/D12:1 IN3信号滤波:有効 //W6/D11:1 EXPP,EXPM,EXPLS滤波:有効 //W6/D10:1 INPOS,ALARM信号滤波:有効 //W6/D9: 0 IN2信号滤波:无效 //W6/D8: 1 EMGN,LMTP/M,IN1,0滤波:有効 //W6/D7: 0 //W6/D6: 0 //W6/D5: 0 自动原点检出结束中断:禁止 //W6/D4: 0 LP/EP可変ring机能:无效 //W6/D3: 1 直线加减速時的三角防止:有効 //W6/D2: 0 脉冲输出的替换:无效 //W6/D1: 0 EP増减反転:无效 //W6/D0: 0 根据IN2信号清除EP:无效 //[自动原点出し模式] //W7/D15~D13 000 偏差计数器CLEAR脉冲幅: //W7/D12 0 偏差计数器CLEAR输出的理论电平: //W7/D11 0 偏差计数器CLEAR输出: 无效 //W7/D10 0 极限信号作为原点信号使用:无效 //W7/D9 0 Z相信号AND原点信号: 无效 //W7/D8 1 理论/实际位置计数器CLEAR:有効 //W7/D7 1 STEP4移动方向: -方向 //W7/D6 1 STEP4: 有効 //W7/D5 0 STEP3检出方向: //W7/D4 0 STEP3: 无效 //W7/D3 0 STEP2检出方向: +方向 //W7/D2 1 STEP2: 有効 //W7/D1 0 STEP1检出方向: //W7/D0 0 STEP1: 无效 expmode(0x8,0x5d08,0x010c); //U轴 扩张模式 //[输入信号滤波] //W6/D15~13:010 输入信号滤波延迟:512μ //W6/D12:1 IN3信号滤波:有効 //W6/D11:1 EXPP,EXPM,EXPLS滤波:有効 //W6/D10:1 INPOS,ALARM信号滤波:有効 //W6/D9: 0 IN2信号滤波:无效 //W6/D8: 1 EMGN,LMTP/M,IN1,0滤波:有効 //W6/D7: 0 //W6/D6: 0 //W6/D5: 0 自动原点检出结束中断:禁止 //W6/D4: 0 LP/EP可変ring机能:无效 //W6/D3: 1 直线加减速時的三角防止:有効 //W6/D2: 0 脉冲输出的替换:无效 //W6/D1: 0 EP増减反転:无效 //W6/D0: 0 根据IN2信号清除EP:无效 //[自动原点检出模式] //W7/D15~D13 000 偏差计数器CLEAR脉冲幅: //W7/D12 0 偏差计数器CLEAR输出的理论电平: //W7/D11 0 偏差计数器CLEAR输出: 无效 //W7/D10 0 极限信号作为原点信号使用:无效 //W7/D9 0 Z相信号AND原点信号: 无效 //W7/D8 1 理论/实际位置计数器CLEAR:有効 //W7/D7 0 STEP4移动方向: //W7/D6 0 STEP4: 无效 //W7/D5 0 STEP3检出方向: //W7/D4 0 STEP3: 无效 //W7/D3 1 STEP2检出方向: -方向 //W7/D2 1 STEP2: 有効 //W7/D1 0 STEP1检出方向: //W7/D0 0 STEP1: 无效 //------ Z,U轴 动作参数初期设定 -- accofst(0xc,0); // AO = 0 range(0xc,800000); // R = 800000(倍率 = 10) acac(0xc,1010); // K = 1010 (加/减速度増加率 = 619KPPS/SEC2) dcac(0xc,1010); // L = 1010 (减速度増加率 = 619KPPS/SEC2) acc(0xc,100); // A = 100 (加/减速度 = 125KPPS/SEC) dec(0xc,100); // D = 100 (减速度 = 125KPPS/SEC) startv(0xc,50); // SV= 50 (初速度 = 500PPS) speed(0xc,40); // V = 40 (驱动速度 = 400PPS) pulse(0xc,10); // P = 10 (输出脉冲数 = 10) lp(0xc,0); // LP= 0 (理论位置计数器 = 0) //------ 通用输出寄存器初期设定 -- outpw(adr+wr4, 0x0000); // 00000000 00000000 //------ 插补模式寄存器初期设定 -- outpw(adr+wr5, 0x0124); // 00000001 00100100 // ax1=x, ax2=y, ax3=z, 线速一定 //------ 驱动 开始 ----------------// homesrch(); //------ 全轴 原点搜索 -------------- //------ X,Y轴 直线加减速驱动 ---- acc(0x3,200); // A = 200 (加/减速度 = 250KPPS/SEC) speed(0x3,4000); // V = 4000 (驱动速度 = 40000PPS) pulse(0x1,80000); // xP = 80000 pulse(0x2,40000); // yP = 40000 command(0x3,0x20); //+定量脉冲驱动 waitaxis(0x3); // 等待驱动结束 //------ X轴 非対称直线加减速驱动 ---- wreg3(0x1, 0x0002); //加速?减速个别(非対称)模式 acc(0x1,200); // xA = 200 (加/减速度 = 250KPPS/SEC) dec(0x1,50); // xD = 50 (减速度 = 62.5KPPS/SEC) speed(0x1,4000); // xV = 4000 (驱动速度 = 40000PPS) pulse(0x1,80000); // xP = 80000 command(0x1,0x20); //+定量脉冲驱动 waitaxis(0x1); // 等待驱动结束 wreg3(0x1, 0x0000); // 加速?减速个别模式解除 //------ X,Y轴 S字加减速驱动 ---- wreg3(0x3, 0x0004); //S字模式 acac(0x3,1010); // K = 1010 (加速度増加率 = 619KPPS/SEC2) acc(0x3,200); // A = 200 (加/减速度 = 250KPPS/SEC) speed(0x3,4000); // V = 4000 (驱动速度 = 40000PPS) pulse(0x1,50000); // xP = 50000 pulse(0x2,25000); // yP = 25000 command(0x3,0x21); //-定量脉冲驱动 waitaxis(0x3); wreg3(0x3, 0x0000); // S字加减速模式解除 //------ Z轴 定速驱动 ---- startv(0x4,40); // SV= 40 (初速度 = 400PPS) speed(0x4,40); // V = 40 (驱动速度 = 400PPS) pulse(0x4,700); // P = 700 command(0x4,0x20); // +定量脉冲驱动 waitaxis(0x4); // (400pps700脉冲+方向移动) pulse(0x4,350); // P = 350 command(0x4,0x21); // -定量脉冲驱动 waitaxis(0x4); // (400pps350脉冲-方向移动) //------ X,Y轴 直线插补驱动 ---- outpw(adr+wr5, 0x0124); // ax1=x, ax2=y,ax3=z, 线速一定 range(0x1,800000); // ax1/R = 800000(倍率 = 10) range(0x2,1131371); // ax2/R = 800000×1.414 speed(0x1,100); // ax1/V = 100 (驱动速度 = 1000PPS定速) pulse(0x1,5000); // xP = +5000 (終点X= +5000) pulse(0x2,-2000); // yP = -2000 (終点Y= -2000) command(0x0,0x30); // 2轴直线插补 waitaxis(0x3); //------ X,Y轴 圆弧插补驱动 ---- outpw(adr+wr5, 0x0124); // ax1=x, ax2=y,ax3=z, 线速一定 range(0x1,800000); // ax1/R = 800000(倍率 = 10) range(0x2,1131371); // ax2/R = 800000×1.414 speed(0x1,100); // ax1/V = 100 (驱动速度 = 1000PPS定速) center(0x1,-5000); // xC = -5000 (中心X= -5000) center(0x2,0); // yC = 0 (中心Y= 0 ) pulse(0x1,0); // xP = 0 (終点X= 0 ) pulse(0x2,0); // yP = 0 (終点Y= 0 ) command(0x0,0x33); // CCW圆弧插补 waitaxis(0x3); //------ X,Y轴 点云插补(图2.32例) ---- speed(0x1,1); // ax1/V = 1 (驱动速度 = 10PPS 定速) command(0,0x36); // 点云数据写入可 outpw(adr+bp1p, 0x0000); // 0~15 点数据写入 outpw(adr+bp1m, 0x2bff); outpw(adr+bp2p, 0xffd4); outpw(adr+bp2m, 0x0000); command(0,0x38); outpw(adr+bp1p, 0xf6fe); // 16~31 点数据写入 outpw(adr+bp1m, 0x0000); outpw(adr+bp2p, 0x000f); outpw(adr+bp2m, 0x3fc0); command(0,0x38); outpw(adr+bp1p, 0x1fdb); // 32~47 点数据写入 outpw(adr+bp1m, 0x0000); outpw(adr+bp2p, 0x00ff); outpw(adr+bp2m, 0xfc00); command(0,0x38); command(0,0x34); // 2轴BP插补驱动开始 bp_wait(); // 等待数据写入 outpw(adr+bp1p, 0x4000); // 48~63 点数据写入 outpw(adr+bp1m, 0x7ff5); outpw(adr+bp2p, 0x0000); outpw(adr+bp2m, 0x0aff); command(0,0x38); command(0,0x37); // 点云数据写入不可 waitaxis(0x3); // 等待驱动结束 //------ X,Y轴 連続插补(图2.37例) ---- speed(0x1,100); // ax1/V = 100 (驱动速度 = 1000PPS 定速) pulse(0x1,4500); // Seg 1 pulse(0x2,0); command(0,0x30); next_wait(); //等待次期数据集合 center(0x1,0); // Seg 2 center(0x2,1500); pulse(0x1,1500); pulse(0x2,1500); command(0,0x33); next_wait(); pulse(0x1,0); // Seg 3 pulse(0x2,1500); command(0,0x30); next_wait(); center(0x1,-1500); // Seg 4 center(0x2,0); pulse(0x1,-1500); pulse(0x2,1500); command(0,0x33); next_wait(); pulse(0x1,-4500); // Seg 5 pulse(0x2,0); command(0,0x30); next_wait(); center(0x1,0); // Seg 6 center(0x2,-1500); pulse(0x1,-1500); pulse(0x2,-1500); command(0,0x33); next_wait(); pulse(0x1,0); // Seg 7 pulse(0x2,-1500); command(0,0x30); next_wait(); center(0x1,1500); // Seg 8 center(0x2,0); pulse(0x1,1500); pulse(0x2,-1500); command(0,0x33); waitaxis(0x3); //------ 同步动作(2.61节-例1) ---- // 如果Y轴位置通过15000、 // Z轴的+方向定量脉冲驱动开始。 range(0x6,800000); // R = 800000(倍率 = 10) acc(0x6,400); // A = 400 (加/减速度 = 500KPPS/SEC) startv(0x6,50); // SV= 50 (初速度 = 500PPS) speed(0x6,3000); // V = 3000 (驱动速度 = 30KPPS) pulse(0x2,50000); // yP = 50000 (Y轴输出脉冲数) pulse(0x4,10000); // zP = 10000 (Z轴输出脉冲数) compp(0x2,15000); // yCP+ = 15000 (Y轴CMP+) lp(0x6,0); // LP= 0 (理论位置计数器 = 0) syncmode(0x2,0x2001,0x0000); // Y轴同步动作模式 // 起动要因:P≧C+、其他轴起动:Z // 自轴动作:无 syncmode(0x4,0x0000,0x0001); // Z轴同步动作模式 // 自轴动作:+方向定量驱动 command(0x2,0x20); // Y轴+定量脉冲驱动开始 waitaxis(0x6); // 等待Y,Z轴结束 return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -