⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcx314aml.c

📁 mcx314 library function
💻 C
📖 第 1 页 / 共 2 页
字号:
                                                //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 + -