NI-Motion如何使用混合直线移动在两轴舞台上进行光栅扫描C语言示例代码

这个C语言程序是一个Win32控制台应用程序,用于演示如何使用混合直线移动在两轴舞台上进行光栅扫描。程序要求使用National Instruments的FlexMotion软件版本5或更高版本。程序的主要功能是控制两轴舞台按照预设的路径进行移动,通过设置速度、加速度、减速度和急动时间,以及加载目标位置和启动移动来实现光栅扫描。在移动过程中,程序会检查移动和混合完成状态,以及轴的跟随错误和关闭状态。如果发生错误,程序会停止移动并处理错误。如果没有错误,程序会继续执行直到所有路径点都被处理完毕。

  1. 初始化设置:配置板卡ID和向量空间,设置通信状态寄存器和轴状态。

  2. 运动参数配置:设置移动的速度、加速度、减速度和急动时间。

  3. 操作模式设置:将操作模式设置为绝对位置。

  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> // 包含标准库
#include <time.h> // 包含时间函数库

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

	u8	boardID; // 板卡识别号
	u8	vectorSpace; // 向量空间号
	u16 csr = 0; // 通信状态寄存器
	u16 axisStatus; // 轴状态
	u16 status;
	u16 complete; // 移动或混合完成状态
	u32 i;
	i32 xPosition[11] = {
   5000, 5000, 0, 0, 5000, 5000, 0, 0, 5000, 5000, 0}; // X轴位置数组
	i32 yPosition[11] = {
   0, 1000, 1000, 2000, 2000, 3000, 3000, 4000, 4000, 5000, 5000}; // Y轴位置数组

	// 模态错误处理的变量
	u16 commandID; // 函数的commandID
	u16 resourceID; // 资源ID
	i32 errorCode; // 错误代码
	
	///
	// 设置板卡ID
	boardID = 1;
	// 设置轴号
	vectorSpace = NIMC_VECTOR_SPACE1;
	

	// 配置由轴1和轴2组成的2D向量空间
	err = flex_config_vect_spc(boardID, vectorSpace, 1, 2, 3);
	CheckError;

	// 设置移动的速度(计数/秒)
	err = flex_load_velocity(boardID, vectorSpace, 10000, 0xFF);
	CheckError;
	
	// 设置移动的加速度(计数/秒^2)
	err = flex_load_acceleration(boardID, vecto
  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

openwin_top

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

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

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

打赏作者

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

抵扣说明:

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

余额充值