这段代码是一个使用 NI Motion 控制器进行单轴直线运动的 C 语言示例程序。
代码如下
///
// 需求: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" // 包含示例头文件
#include <stdio.h> // 标准输入输出头文件
#include <stdlib.h> // 标准库头文件
//
// 主函数
void main(void)
{
u8 boardID; // 板卡标识号
u8 axis; // 轴号
u16 csr = 0; // 通信状态寄存器
u16 axisStatus; // 轴状态
u16 moveComplete; // 运动完成标志
// 模态错误处理的变量
u16 commandID; // 函数的 commandID
u16 resourceID; // 资源 ID
i32 errorCode; // 错误码
///
// 设置板卡 ID
boardID = 1;
// 设置轴号
axis = 1;
// 设置运动的速度(单位为计数/秒)
err = flex_load_velocity(boardID, axis, 10000, 0xFF);
CheckError;
// 设置运动的加速度(单位为计数/秒^2)
err = flex_load_acceleration(boardID, axis, NIMC_ACCELERATION, 100000, 0xFF);
CheckError;
// 设置运动的减速度(单位为计数/秒^2)
err = flex_load_acceleration(boardID, axis, NIMC_DECELERATION, 100000, 0xFF);
CheckError;
// 设置急动(scurve)时间(单位为采样周期)
err = flex_load_scurve_time(boardID, axis, 1000, 0xFF);
CheckError;
// 设置操作模式
err = flex_set_op_mode(boardID, axis, NIMC_ABSOLUTE_POSITION);
CheckError;
// 加载目标位置
err = flex_load_target_pos