这个C语言程序是一个Win32控制台应用程序,用于演示如何使用混合直线移动在两轴舞台上进行光栅扫描。程序要求使用National Instruments的FlexMotion软件版本5或更高版本。程序的主要功能是控制两轴舞台按照预设的路径进行移动,通过设置速度、加速度、减速度和急动时间,以及加载目标位置和启动移动来实现光栅扫描。在移动过程中,程序会检查移动和混合完成状态,以及轴的跟随错误和关闭状态。如果发生错误,程序会停止移动并处理错误。如果没有错误,程序会继续执行直到所有路径点都被处理完毕。
-
初始化设置:配置板卡ID和向量空间,设置通信状态寄存器和轴状态。
-
运动参数配置:设置移动的速度、加速度、减速度和急动时间。
-
操作模式设置:将操作模式设置为绝对位置。
-
直线段加载:逐个加载直线段的目标位置,并启动移动或混合移动。
-
监控移动状态:在每个直线段移动过程中,检查移动或混合完成状态,以及轴的跟随错误和关闭状态。
-
错误处理:如果在监控过程中发现错误,程序将处理错误并退出。
-
结束:当所有直线段都完成移动后,程序结束。
///
// 需求: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