NI-Motion如何使用电子齿轮(electronic gearing)功能来控制运动控制器上的从轴(slave axis)以匹配主轴(master axis)的运动的C语言代码示例

此C程序示例演示如何使用电子齿轮功能控制从轴跟随主轴运动。通过设置齿轮比,从轴速度为主轴速度的1.5倍。程序涉及初始化、配置电子齿轮、设置移动参数、启动和结束移动,以及错误处理。适用于需要多轴同步的运动控制场景。
摘要由CSDN通过智能技术生成

这个C程序示例展示了如何使用电子齿轮(electronic gearing)功能来控制运动控制器上的从轴(slave axis)以匹配主轴(master axis)的运动。程序的主要功能和执行逻辑如下:

  1. 初始化和配置:程序首先定义了一些变量,包括板卡ID、从轴号、主轴号、通信状态寄存器、移动完成标志以及错误处理相关的变量。

  2. 设置板卡和轴:程序设置了板卡ID、从轴号,并将主轴设置为编码器4。

  3. 配置电子齿轮:程序配置了从轴的电子齿轮,设置了齿轮比为3:2,启用了从轴的电子齿轮功能,并等待了5秒钟。

  4. 设置移动参数:程序设置了从轴的操作模式为相对于捕获位置的移动,加载了速度、加速度和减速度参数,并设置了注册(叠加)移动的目标位置。

  5. 启动移动:程序启动了从轴的注册移动,并等待移动完成。

  6. 禁用电子齿轮:移动完成后,程序禁用了从轴的电子齿轮功能。

  7. 错误处理:在整个过程中,程序会检查是否有错误发生。如果有模态错误,程序会从错误堆栈中获取错误信息并显示。如果有其他错误,程序会显示常规错误信息。

///
// 要求:FlexMotion软件版本5或更高版本。
//
//		使用导入库:
//			<NI-Motion安装位置>\FlexMotion\lib\Microsoft\FlexMS32.lib
//			对于MS编译器,以及
//			<NI-Motion安装位置>\FlexMotion\lib\Borland\FlexBC32.lib
//			对于BC编译器
//
//		在您的项目包含目录中添加包含路径:
//			<NI-Motion安装位置>\FlexMotion\Include
//			<NI-Motion安装位置>\FlexMotion\Examples\C\Includes
//
//		将常见源代码添加到您的项目中:
//			<NI-Motion安装位置>\FlexMotion\Examples\C\Includes\NIMCExample.c
//
//		其中<NI-Motion安装位置>默认为
//			<驱动器>\Program Files\National Instruments\NI-Motion
//			对于32位Windows
//			<驱动器>\Program Files (x86)\National Instruments\NI-Motion
//			对于64位Windows
//
// 描述:
//		这个C示例展示了运动控制器的电子齿轮功能
//
///


// 包含文件/
#include "flexmotn.h"  // 包含FlexMotion库
#include "NIMCExample.h"  // 包含NIMC示例代码
#include <stdio.h>  // 包含标准输入输出库
#include <stdlib.h>  // 包含标准库

//
// 主函数
void main(void)
{
   

	u8	boardID;								// 板卡识别号
	u8	slaveAxis;							// 从轴号
	u8 master;								// 主轴(编码器)
	u16 csr	= 0;							// 通信状态寄存器
	u16 moveComplete;						// 移动完成标志

	// 模态错误处理的变量
	u16 commandID;				// 函数的commandID
	u16 resourceID;			// 资源ID
	i32 errorCode;				// 错误代码
	
	///
	// 设置板卡ID
	boardID= 1;
	// 设置从轴号
	slaveAxis = 1;
	// 主轴是编码器4
	master = NIMC_ENCODER4;
	
	
	// 配置从轴的电子齿轮
	err = flex_config_gear_master(boardID, slaveAxis, master);
	CheckError;
	
	// 加载齿轮比3:2
	err =  flex_load_gear_ratio(boardID, slaveAxis, NIMC_RELATIVE_GEARING,
										3/* 比的分子*/, 2/* 比的分母*/, 0xFF);
	CheckError;

	// 启用从轴的电子齿轮功能
	err = flex_enable_gearing_single_axis (boardID, slaveAxis, NIMC_TRUE);
	CheckError;

	// 等待5秒钟
	Sleep(5000);
	
	// 设置叠加移动的移动参数
	
	// 设置操作模式为相对于捕获位置
	err = flex_set_op_mode(boardID, slaveAxis, NIMC_RELATIVE_TO_CAPTURE);
	CheckError;

	// 加载速度,单位为计数/秒
	err = flex_load_velocity(boardID, slaveAxis, 10000, 0xFF);
	CheckError;

	// 加载加速度和减速度,单位为计数^2/秒^2
	err = flex_load_acceleration(boardID, slaveAxis, NIMC_BOTH, 100000, 0xFF);
	CheckError;

	// 加载注册(
  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
c语言齿轮参数 #include #include float Yd(float m,int z); float Yda(float m,int z); double Ydf(float m,int z); double Zda(float m,int z,double A); double Zdf(float m,int z,double A); double ZR(float m,int z,double A); double ZB(double A,int z); double ZC(double A,int z); double Xd(float m,int z,double C); double Xda(float m,int z,double C); double Xdf(float m,int z,double C); main() { /*变量定义*/ double A,C; char op,p; int chl,ch2,ch3,ch4,z; float m; FILE *fp1,*fp2,*fp3,*fp4,*fp5,*fp6,*fp7; printf(" 二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二\n.”). printf(" 二二二二二二二二二二二二\n.”. printf(”二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二欢迎使用齿轮计算软件二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二\n”). printf("\n"); printf("\n*********************************标准齿轮基本尺寸计算程序 ****************************\n”);/*标题解释及提小信息*/ printf("\n 标准圆柱齿轮三种不同类型 A,B,C \n");   printf("\n A.标准直齿轮\n”).;   printf("\n B.标准直齿锥齿轮\n”).;   printf("\n C:标准直齿斜齿轮\n”);   printf("\n");    printf("\n");    printf("\n");    printf("\n");   printf("\n 一请从标准模数表中选择你所需要的模数!一\n.");    printf("\n");    printf("\n");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

openwin_top

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值