예제 #1
0
        /// <summary>
        /// 添加同步IO直线插补规划。
        /// 返回0 成功;
        /// 返回2 失败;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回5 当前状态下不能添加PC的规划,因为缓冲区已经满了;
        /// 返回6 当前状态下不能进行PC的规划,因为前面提交的其他操作还未完成
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="end">指定当前直线的终点坐标</param>
        /// <param name="vel">指定当前直线运行的速度</param>
        /// <param name="ini_maxvel">由上一段直线或者曲线转入当前直线或者曲线时,所允许的最大速度</param>
        /// <param name="acc">当前直线运行的加速度</param>
        /// <param name="DIO">需要在当前规划阶段设置的数字量输出,低位对齐。每位对应一个数字量输出</param>
        /// <param name="AIO">需要在当前规划阶段设置的模拟量输出。控制卡为12位DA输出输出,即4095对应满量程输出</param>
        /// <returns></returns>
        public static int AsuMotion_AddLineWithSyncIO(IntPtr handle,
                                                      ref AsuMotionAxisData end,
                                                      double vel,
                                                      double ini_maxvel,
                                                      double acc,
                                                      ushort[] DIO,
                                                      ushort[] AIO)
        {
            AsuMotionError ret = AsuMotionAddLineWithSyncIO(handle, ref end, vel, ini_maxvel, acc, DIO, AIO);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("添加同步IO直线插补规划 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("添加同步IO直线插补规划 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            case AsuMotionError.AsuMotion_Error:
                LogHelper.WriteLog("添加同步IO直线插补规划 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);

            case AsuMotionError.AsuMotion_Buffer_Full:
                LogHelper.WriteLog("添加同步IO直线插补规划 失败,缓冲区已满" + "---" + AsuMotion_GetErrorMessage(5));
                return(5);

            default:
                LogHelper.WriteLog("添加同步IO直线插补规划 失败,当前状态下不能进行PC的规划,因为前面提交的其他操作还未完成" + "---" + AsuMotion_GetErrorMessage(6));
                return(6);    // AsuMotion_CurrentState_Isnot_PCPlan
            }
        }
예제 #2
0
        /// <summary>
        /// 添加空间圆弧插补规划
        /// 返回0 成功;
        /// 返回2 失败;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回5 当前状态下不能添加PC的规划,因为缓冲区已经满了;
        /// 返回6 当前状态下不能进行PC的规划,因为前面提交的其他操作还未完成
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="end">指定当前圆弧插补的终点坐标</param>
        /// <param name="center">指定当前圆弧插补定义的球坐标系原点</param>
        /// <param name="normal">法线终点,起点为原点(0,0,0)</param>
        /// <param name="turn">指定当前圆弧插补的圈数</param>
        /// <param name="vel">指定当前圆弧运行的速度</param>
        /// <param name="ini_maxvel">由上一段直线或者曲线转入当前圆弧曲线时,所允许的最大速度</param>
        /// <param name="acc">当前圆弧运行的加速度</param>
        public static int Asu_MotionAddCircle(IntPtr handle,
                                              ref AsuMotionAxisData end,
                                              ref AsuMotionCartesian center,
                                              ref AsuMotionCartesian normal,
                                              int turn,
                                              double vel,
                                              double ini_maxvel,
                                              double acc)
        {
            AsuMotionError ret = AsuMotionAddCircle(handle, ref end, ref center, ref normal, turn, vel, ini_maxvel, acc);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("添加空间圆弧插补规划 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("添加空间圆弧插补规划 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            case AsuMotionError.AsuMotion_Error:
                LogHelper.WriteLog("添加空间圆弧插补规划 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);

            case AsuMotionError.AsuMotion_Buffer_Full:
                LogHelper.WriteLog("添加空间圆弧插补规划 失败,缓冲区已满" + "---" + AsuMotion_GetErrorMessage(5));
                return(5);

            default:
                LogHelper.WriteLog("添加空间圆弧插补规划 失败,当前状态下不能进行PC的规划,因为前面提交的其他操作还未完成" + "---" + AsuMotion_GetErrorMessage(6));
                return(6);    // AsuMotion_CurrentState_Isnot_PCPlan
            }
        }
예제 #3
0
        /// <summary>
        /// 设备初始化为默认
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <returns></returns>
        public static int AsuMotion_ConfigDeviceDefault(IntPtr handle)
        {
            AsuMotionError ret = AsuMotionConfigDeviceDefault(handle);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("设备 " + NumOfCurDevice + " 初始化为默认成功");
                return(3);

            default:
                LogHelper.WriteLog("设备 " + NumOfCurDevice + " 初始化为默认失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #4
0
        /// <summary>
        /// 配置反向软限位
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="softNegtiveLimit">反向软限位坐标的结构体</param>
        /// <returns></returns>
        public static int AsuMotion_SetSoftNegtiveLimit(IntPtr handle, ref AsuMotionAxisData softNegtiveLimit)
        {
            AsuMotionError ret = AsuMotionSetSoftNegtiveLimit(handle, ref softNegtiveLimit);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置反向软限位 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置反向软限位 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #5
0
        /// <summary>
        /// 配置运动卡规划运动的最大速度
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="maxSpeed">一个存储各轴速度的结构体</param>
        /// <returns></returns>
        public static int AsuMotion_SetMaxSpeed(IntPtr handle, ref AsuMotionAxisData maxSpeed)
        {
            AsuMotionError ret = AsuMotionSetMaxSpeed(handle, ref maxSpeed);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置运动卡规划运动的最大速度 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置运动卡规划运动的最大速度 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #6
0
        /// <summary>
        /// 配置运动卡规划运动的加速度
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="acceleration">一个存储各轴加速度的结构体</param>
        /// <returns></returns>
        public static int AsuMotion_SetAccelaration(IntPtr handle, ref AsuMotionAxisData acceleration)
        {
            AsuMotionError ret = AsuMotionSetAccelaration(handle, ref acceleration);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置运动卡规划运动的加速度 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置运动卡规划运动的加速度 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #7
0
        /// <summary>
        /// 配置回原点的管脚
        /// 返回0 成功;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致
        /// </summary>
        /// <param name="AsuMotion">设备句柄</param>
        /// <param name="inputIOPin">一个包含9个元素的数组,分别代表九个轴的回原点的信号选择,如果选择的值大于等于32,那么选择的信号为其逻辑反,也就是说原来如果高电平有效,那么现在将变成低电平有效</param>
        /// <returns></returns>
        public static int AsuMotion_SetHomingSignal(IntPtr handle, byte[] inputIOPin)
        {
            AsuMotionError ret = AsuMotionSetHomingSignal(handle, inputIOPin);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置回原点的管脚 成功");
                return(0);

            default:
                LogHelper.WriteLog("配置回原点的管脚 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);     // AsuMotion_Device_Is_Null
            }
        }
예제 #8
0
        /// <summary>
        /// 配置运动卡模拟量输出和数字量输出
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="AsuMotion">设备句柄</param>
        /// <param name="Sync">是否同步输出,在使用卐千规划时,可以采用同步输出,使得外部时序能够严格保证</param>
        /// <param name="AnalogOut">两个元素的数组,设置模拟量输出</param>
        /// <param name="DigitalOut">两个元素的数组,设置数字量输出</param>
        /// <returns></returns>
        public static int AsuMotion_SetOutput(IntPtr handle, ushort Sync, short[] AnalogOut, ushort[] DigitalOut)
        {
            AsuMotionError ret = AsuMotionSetOutput(handle, Sync, AnalogOut, DigitalOut);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置运动卡模拟量输出和数字量输出 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置运动卡模拟量输出和数字量输出 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #9
0
        /// <summary>
        /// 配置运动卡差分输出的信号映射
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="FunSel">映射号数组,共16个元素,其值得设定将反应16个差分输出的内容</param>
        /// <param name="NegMask">设定16个差分输出口是否反向输出</param>
        /// <returns></returns>
        public static int AsuMotion_SetDifferentialOutputMapping(IntPtr handle, byte[] FunSel, AsuMotionBitMaskType NegMask)
        {
            AsuMotionError ret = AsuMotionSetDifferentialOutputMapping(handle, FunSel, NegMask);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置运动卡差分输出的信号映射 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置运动卡差分输出的信号映射 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #10
0
        ///  <summary>
        /// 配置单位脉冲数
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="StepsPerUnit">单位脉冲数</param>
        /// <returns></returns>
        public static int AsuMotion_SetStepsPerUnit(IntPtr handle, ref AsuMotionAxisDataInt StepsPerUnit)
        {
            AsuMotionError ret = AsuMotionSetStepsPerUnit(handle, ref StepsPerUnit);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置单位脉冲数 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置单位脉冲数 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #11
0
        /// <summary>
        /// 配置工作偏移
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="WorkOffset">工作偏移</param>
        /// <returns></returns>
        public static int AsuMotion_SetWorkOffset(IntPtr handle, ref AsuMotionAxisDataInt WorkOffset)
        {
            AsuMotionError ret = AsuMotionSetWorkOffset(handle, ref WorkOffset);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置工作偏移 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置工作偏移 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #12
0
        /// <summary>
        /// 光滑系数获取
        /// 目前直接返回 AsuMotion_True,但不确定之后的sdk失败会返回什么,所以按如下返回:
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="smoothCoff">板卡光滑系数的存储区域</param>
        /// <returns></returns>
        public static int AsuMotion_GetSmoothCoff(IntPtr handle, out uint smoothCoff)
        {
            AsuMotionError ret = AsuMotionGetSmoothCoff(handle, out smoothCoff);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("光滑系数获取 成功");
                return(3);

            default:
                LogHelper.WriteLog("光滑系数获取 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #13
0
        /// <summary>
        /// 当前机器坐标位置脉冲数获取
        /// 目前直接返回 AsuMotion_True,但不确定之后的sdk失败会返回什么,所以按如下返回:
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="steps">一个存储各轴脉冲数的结构体</param>
        /// <returns></returns>
        public static int AsuMotion_GetSteps(IntPtr handle, out AsuMotionAxisDataInt steps)
        {
            AsuMotionError ret = AsuMotionGetSteps(handle, out steps);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("当前机器坐标位置脉冲数获取 成功");
                return(3);

            default:
                LogHelper.WriteLog("当前机器坐标位置脉冲数获取 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #14
0
        /// <summary>
        /// 当前各坐标轴最大速度获取
        /// 目前直接返回 AsuMotion_True,但不确定之后的sdk失败会返回什么,所以按如下返回:
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="maxSpeed">板卡各轴最大运动速度的存储区域,单位毫米每分钟</param>
        /// <returns></returns>
        public static int AsuMotion_GetMaxSpeed(IntPtr handle, out AsuMotionAxisData maxSpeed)
        {
            AsuMotionError ret = AsuMotionGetMaxSpeed(handle, out maxSpeed);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("当前各坐标轴最大速度获取 成功");
                return(3);

            default:
                LogHelper.WriteLog("当前各坐标轴最大速度获取 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #15
0
        /// <summary>
        /// 配置机器坐标
        /// 返回3 空闲状态;
        /// 返回4 运动状态
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="axisMask">配置当前需要运行的轴</param>
        /// <param name="position">一个存储各轴机器坐标的结构体</param>
        /// <returns></returns>
        public static int AsuMotion_SetMachineCoordinate(IntPtr handle, AsuMotionAxisMaskType axisMask, AsuMotionAxisData position)
        {
            AsuMotionError ret = AsuMotionSetMachineCoordinate(handle, axisMask, ref position);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置机器坐标 当前运动卡处于 空闲 状态");
                return(3);

            default:
                LogHelper.WriteLog("配置机器坐标 当前运动卡处于 运动 状态");
                return(4);     // AsuMotion_False
            }
        }
예제 #16
0
        /// <summary>
        /// 输出口状态获取
        /// 返回3 成功
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">AsuMotion资源句柄</param>
        /// <param name="output">IO状态缓冲区,长度至少为2,函数调用成功后,这里面的值将为IO状态</param>
        /// <returns></returns>
        public static int AsuMotion_GetOutputIO(IntPtr handle, out ushort[] output)
        {
            AsuMotionError ret = AsuMotionGetOutputIO(handle, out output);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("输出口状态获取 成功");
                return(3);

            default:
                LogHelper.WriteLog("输出口状态获取 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #17
0
        /// <summary>
        /// 停止由运动控制卡规划的所有轴的运动
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <returns></returns>
        public static int AsuMotion_CardPlanStopAll(IntPtr handle)
        {
            AsuMotionError ret = AsuMotionCardPlanStopAll(handle);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("停止由运动控制卡规划的所有轴的运动 成功");
                return(3);

            default:
                LogHelper.WriteLog("停止由运动控制卡规划的所有轴的运动 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #18
0
        /// <summary>
        /// 配置光滑系数和脉冲延时
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="DelayBetweenPulseAndDir">脉冲的有效沿和方向的有效沿之间有充分的时间差</param>
        /// <param name="SmoothCoff">光滑系数</param>
        /// <returns></returns>
        public static int Asu_Motion_SetSmoothCoff(IntPtr handle, ushort DelayBetweenPulseAndDir, int SmoothCoff)
        {
            AsuMotionError ret = AsuMotionSetSmoothCoff(handle, DelayBetweenPulseAndDir, SmoothCoff);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置光滑系数和脉冲延时 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置光滑系数和脉冲延时 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #19
0
        /// <summary>
        /// 急停
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <returns></returns>
        public static int AsuMotion_EStop(IntPtr handle)
        {
            AsuMotionError ret = AsuMotionEStop(handle);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("急停 成功");
                return(3);

            default:
                LogHelper.WriteLog("急停 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #20
0
        /// <summary>
        /// 获取设备序列号信息
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="numberOfDevice">设备序号,从 1 开始</param>
        /// <param name="serialOfDevice">用于存储序列号的字节数组</param>
        /// <returns></returns>
        public static int Asu_GetDeviceInfo(int numberOfDevice, out byte[] serialOfDevice)
        {
            NumOfCurDevice = numberOfDevice;
            AsuMotionError ret = GetDeviceInfo(numberOfDevice - 1, out serialOfDevice);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("获取设备 " + numberOfDevice + " 信息 成功");
                return(3);

            default:
                LogHelper.WriteLog("获取设备 " + numberOfDevice + " 信息 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #21
0
        /// <summary>
        /// 配置运动卡数字量输入功能
        /// 返回3 成功;
        /// 返回4 失败
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="InputIOEnable">输入引脚使能 bit0--> Input0 bit2--> Input2 bit7--> Input7</param>
        /// <param name="InputIONeg">输入引脚触发信号反相 bit0--> Input0 bit2--> Input2 bit7--> Input7</param>
        /// <param name="InputIOPin">输入引脚映射 0--> Input0 2--> Input2 7--> Input7</param>
        /// <returns></returns>
        public static int AsuMotion_SetInputIOEngineDir(IntPtr handle,
                                                        UInt64 InputIOEnable,
                                                        UInt64 InputIONeg,
                                                        byte[] InputIOPin)
        {
            AsuMotionError ret = AsuMotionSetInputIOEngineDir(handle, InputIOEnable, InputIONeg, InputIOPin);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_True:
                LogHelper.WriteLog("配置运动卡数字量输入功能 成功");
                return(3);

            default:
                LogHelper.WriteLog("配置运动卡数字量输入功能 失败" + "---" + AsuMotion_GetErrorMessage(4));
                return(4);     // AsuMotion_False
            }
        }
예제 #22
0
        /// <summary>
        /// 将缓冲区中添加的直接规划刷新
        /// 返回0 成功;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回5 当前缓冲区满,等待一会再添加
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <returns></returns>
        public static int AsuMotion_DirectPlanFlush(IntPtr handle)
        {
            AsuMotionError ret = AsuMotionDirectPlanFlush(handle);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("将缓冲区中添加的直接规划刷新 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("将缓冲区中添加的直接规划刷新 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            default:
                LogHelper.WriteLog("将缓冲区中添加的直接规划刷新 失败,当前缓冲区满,等待一会再添加" + "---" + AsuMotion_GetErrorMessage(5));
                return(5);     // AsuMotion_Buffer_Full
            }
        }
예제 #23
0
        /// <summary>
        /// 添加一次坐标增量
        /// 返回0 成功;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回5 当前缓冲区满,等待一会再添加
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="inc">一个指向AsuMotionDirectMoveInc的指针,此指针指向的对象包含需要设置的坐标增量。此增量为要设置的脉冲数和分频系数的乘积</param>
        /// <returns></returns>
        public static int AsuMotion_DirectPlanAddMoveIncrease(IntPtr handle, ref AsuMotionDirectMoveInc inc)
        {
            AsuMotionError ret = AsuMotionDirectPlanAddMoveIncrease(handle, ref inc);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("添加一次坐标增量 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("添加一次坐标增量 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            default:
                LogHelper.WriteLog("添加一次坐标增量 失败,当前缓冲区满,等待一会再添加" + "---" + AsuMotion_GetErrorMessage(5));
                return(5);     // AsuMotion_Buffer_Full
            }
        }
예제 #24
0
        /// <summary>
        /// 放弃当前的运动规划
        /// 返回0 成功;
        /// 返回2 失败;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <returns></returns>
        public static int Asu_MotionAbort(IntPtr handle)
        {
            AsuMotionError ret = AsuMotionAbort(handle);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("放弃当前的运动规划 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("放弃当前的运动规划 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            default:
                LogHelper.WriteLog("放弃当前的运动规划 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);    // AsuMotion_Error
            }
        }
예제 #25
0
        /// <summary>
        /// 设置当前坐标
        /// 返回0 成功;
        /// 返回2 失败;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="position">一个指向AsuMotionAxisData的指针,此指针指向的对象包含需要设置的当前坐标</param>
        /// <returns></returns>
        public static int AsuMotion_SetCurrentPostion(IntPtr handle, ref AsuMotionAxisData position)
        {
            AsuMotionError ret = AsuMotionSetCurrentPostion(handle, ref position);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("设置当前坐标 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("设置当前坐标 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            default:
                LogHelper.WriteLog("设置当前坐标 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);    // AsuMotion_Error
            }
        }
예제 #26
0
        /// <summary>
        /// 设置停止类型
        /// 返回0 成功;
        /// 返回2 失败;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="type">停止类型</param>
        /// <param name="tolerance">指定停止时所能容忍的误差</param>
        /// <returns></returns>
        public static int Asu_MotionSetStopType(IntPtr handle, AsuMotionStopType type, double tolerance)
        {
            AsuMotionError ret = AsuMotionSetStopType(handle, type, tolerance);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("设置停止类型 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("设置停止类型 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            default:
                LogHelper.WriteLog("设置停止类型 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);    // AsuMotion_Error
            }
        }
예제 #27
0
        /// <summary>
        /// 添加一次IO变化
        /// 返回0 成功;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回5 当前缓冲区满,等待一会再添加
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="DIO">需要在当前直接规划阶段设置的数字量输出,低位对齐。每位对应一个数字量输出</param>
        /// <param name="AIO">需要在当前直接规划阶段设置的模拟量输出。控制卡为12位DA输出,即4095对应满量程输出</param>
        /// <returns></returns>
        public static int AsuMotion_DirectPlanChangeIO(IntPtr handle, ushort[] DIO, ushort[] AIO)
        {
            AsuMotionError ret = AsuMotionDirectPlanChangeIO(handle, DIO, AIO);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("添加一次IO变化 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("添加一次IO变化 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            default:
                LogHelper.WriteLog("添加一次IO变化 失败,当前缓冲区满,等待一会再添加" + "---" + AsuMotion_GetErrorMessage(5));
                return(5);     // AsuMotion_Buffer_Full
            }
        }
예제 #28
0
        /// <summary>
        /// 查询当前运动卡是否处于运动状态中
        /// 返回3 空闲状态
        /// 返回4 运动状态
        /// 返回-1 异常
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <returns></returns>
        public static int AsuMotion_IsDone(IntPtr handle)
        {
            try
            {
                AsuMotionError ret = AsuMotionIsDone(handle);
                switch (ret)
                {
                case AsuMotionError.AsuMotion_True:
                    LogHelper.WriteLog("当前运动卡处于 空闲 状态");
                    return(3);

                default:
                    LogHelper.WriteLog("当前运动卡处于 运动 状态");
                    return(4);     // AsuMotion_False
                }
            }
            catch (Exception e)
            {
                LogHelper.WriteLog("执行 AsuMotionIsDone 异常:" + e.Message);
                return(-1);
            }
        }
예제 #29
0
        /// <summary>
        /// 点动运行
        /// 返回0 成功;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回2 失败;
        /// 返回8 当前状态下不能进行运动控制卡的规划,因为前面提交的其他操作还未完成
        /// </summary>
        /// <param name="AsuMotion">设备句柄</param>
        /// <param name="axis">配置当前需要运行的轴</param>
        /// <param name="positionGiven">给定一个点动运行时,机器的目标位置。此位置为相对位置</param>
        /// <returns></returns>
        public static int AsuMotion_JogOn(IntPtr handle, AsuMotionAxisIndexType axis, double positionGiven)
        {
            AsuMotionError ret = AsuMotionJogOn(handle, axis, positionGiven);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("点动运行 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("点动运行 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            case AsuMotionError.AsuMotion_Error:
                LogHelper.WriteLog("点动运行 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);

            default:
                LogHelper.WriteLog("点动运行 失败,当前状态下不能进行运动控制卡的规划,因为前面提交的其他操作还未完成" + "---" + AsuMotion_GetErrorMessage(8));
                return(8);     // AsuMotion_CurrentState_Isnot_CardPlan
            }
        }
예제 #30
0
        /// <summary>
        /// 绝对位置移动
        /// 返回0 成功;
        /// 返回2 失败;
        /// 返回1 设备句柄为空指针,一般因为没有打开设备导致;
        /// 返回8 当前状态下不能进行运动控制卡的规划,因为前面提交的其他操作还未完成
        /// </summary>
        /// <param name="handle">设备句柄</param>
        /// <param name="axisMask">配置当前需要运行的轴</param>
        /// <param name="positionGiven">给定一个点动运行时,机器的目标位置</param>
        /// <returns></returns>
        public static int AsuMotion_MoveAbsolute(IntPtr handle, AsuMotionAxisMaskType axisMask, ref AsuMotionAxisData positionGiven)
        {
            AsuMotionError ret = AsuMotionMoveAbsolute(handle, axisMask, ref positionGiven);

            switch (ret)
            {
            case AsuMotionError.AsuMotion_Error_Ok:
                LogHelper.WriteLog("绝对位置移动 成功");
                return(0);

            case AsuMotionError.AsuMotion_Device_Is_Null:
                LogHelper.WriteLog("绝对位置移动 失败,设备句柄为空指针,一般因为没有打开设备导致" + "---" + AsuMotion_GetErrorMessage(1));
                return(1);

            case AsuMotionError.AsuMotion_Error:
                LogHelper.WriteLog("绝对位置移动 失败" + "---" + AsuMotion_GetErrorMessage(2));
                return(2);

            default:
                LogHelper.WriteLog("绝对位置移动 失败,当前状态下不能进行运动控制卡的规划,因为前面提交的其他操作还未完成" + "---" + AsuMotion_GetErrorMessage(8));
                return(8);     // AsuMotion_CurrentState_Isnot_CardPlan
            }
        }