Ejemplo n.º 1
0
 public void __zero()
 {
     USB1020.USB1020_DecStop(hDevice, USB1020.USB1020_ALLAXIS);       // 减速停止
     USB1020.USB1020_SetLP(hDevice, USB1020.USB1020_ALLAXIS, 0);      // 设置逻辑位置计数器
     USB1020.USB1020_SetEP(hDevice, USB1020.USB1020_ALLAXIS, 0);      // 设置实位计数器
     USB1020.USB1020_SetAccofst(hDevice, USB1020.USB1020_ALLAXIS, 0); // 设置加速计数器偏移
 }
Ejemplo n.º 2
0
        public bool Init()
        {
            hDevice = USB1020.USB1020_CreateDevice(0);
            if (hDevice == (IntPtr)(-1))
            {
                Console.WriteLine("创建设备失败!");
                return(false);
            }
            for (i = 0; i < 4; i++)
            {
                LC[i].AxisNum    = i;                                   // 轴号(USB1020_XAXIS:X轴; USB1020_YAXIS:Y轴;;USB1020_ZAXIS:Z轴; USB1020_UAXIS:U轴)
                LC[i].LV_DV      = USB1020.USB1020_DV;                  // 驱动方式 USB1020_DV:定长驱动 USB1020_LV: 连续驱动
                LC[i].PulseMode  = USB1020.USB1020_CPDIR;               // 模式0:CW/CCW方式,1:CP/DIR方式
                LC[i].Line_Curve = USB1020.USB1020_LINE;                // 直线曲线(0:直线加/减速; 1:S曲线加/减速)

                DL[i].Multiple     = 20;
                DL[i].Acceleration = 5000;                       // 加速度(125~1000,000)(直线加减速驱动中加速度一直不变)
                DL[i].Deceleration = 5000;                       // 减速度(125~1000000)
                DL[i].AccIncRate   = 1000;                       // 加速度变化率(仅S曲线驱动时有效)
                DL[i].StartSpeed   = 1000;                       // 初始速度(1~8000)
                DL[i].DriveSpeed   = 8000;                       // 驱动速度	(1~8000)
                LC[i].nPulseNum    = 100000;                     // 定量输出脉冲数(0~268435455)
                LC[i].Direction    = USB1020.USB1020_MDIRECTION; // 转动方向 USB1020_PDirection: 正转  USB1020_MDirection:反转
                USB1020.USB1020_InitLVDV(                        //	初始单轴化连续,定长脉冲驱动
                    hDevice,
                    ref DL[i],
                    ref LC[i]);
            }
            //USB1020.USB1020_Start4D(hDevice);
            USB1020.USB1020_SetLP(hDevice, USB1020.USB1020_ALLAXIS, 0);      // 设置逻辑位置计数器
            USB1020.USB1020_SetEP(hDevice, USB1020.USB1020_ALLAXIS, 0);      // 设置实位计数器
            USB1020.USB1020_SetAccofst(hDevice, USB1020.USB1020_ALLAXIS, 0); // 设置加速计数器偏移
            return(true);
        }
Ejemplo n.º 3
0
        public void __start()
        {
            IA.Axis1         = USB1020.USB1020_XAXIS;   // X轴
            IA.Axis2         = USB1020.USB1020_ZAXIS;   // Y轴
            IA2.Axis1        = USB1020.USB1020_YAXIS;
            IA2.Axis2        = USB1020.USB1020_UAXIS;
            LD.ConstantSpeed = 1;                               // 固定线速度 (不固定线速度 | 固定线速度)
            LD.Line_Curve    = USB1020.USB1020_LINE;            // 直线运动

            LD.n1AxisPulseNum = 500000;                         // 主轴终点脉冲数 (-8388608~8388607)
            LD.n2AxisPulseNum = 0;                              // 第二轴轴终点脉冲数 (-8388608~8388607)
            USB1020.USB1020_InitLineInterpolation_2D(           // 初始化任意2轴直线插补运动
                hDevice,                                        // 设备句柄
                ref DL[1],                                      // 公共参数结构体指针
                ref IA,                                         // 插补轴结构体指针
                ref LD);                                        // 直线插补结构体指针
            USB1020.USB1020_StartLineInterpolation_2D(hDevice); // 启动任意2轴直线插补运动

            USB1020.USB1020_NextWait(hDevice);                  // 等待写入下一个节点的参数和命令

            USB1020.USB1020_PARA_CircleData CD;                 // 正反方向圆弧插补参数
            CD.Direction     = 0;                               // 运动方向 (正方向 | 反方向)
            CD.Center1       = 0;                               // 主轴圆心坐标(脉冲数-8388608~8388607)
            CD.Center2       = 60000;                           // 第二轴轴圆心坐标(脉冲数-8388608~8388607)
            CD.Pulse1        = 0;                               // 主轴终点坐标(脉冲数-8388608~8388607)
            CD.Pulse2        = 100000;                          // 第二轴轴终点坐标(脉冲数-8388608~8388607)
            CD.ConstantSpeed = USB1020.USB1020_CONSTAND;        // 固定线速度
            USB1020.USB1020_InitCWInterpolation_2D(             // 初始化任意2轴正反方向圆弧插补运动
                hDevice,                                        // 设备句柄
                ref DL[1],                                      // 公共参数结构体指针
                ref IA,                                         // 插补轴结构体指针
                ref CD);                                        // 圆弧插补结构体指针
            USB1020.USB1020_StartCWInterpolation_2D(hDevice, CD.Direction);

            USB1020.USB1020_NextWait(hDevice);                                  // 等待写入下一个节点的参数和命令

            LD.n1AxisPulseNum = -500000;
            LD.n2AxisPulseNum = 0;

            USB1020.USB1020_InitLineInterpolation_2D(           // 初始化任意2轴直线插补运动
                hDevice,                                        // 设备句柄
                ref DL[1],                                      // 公共参数结构体指针
                ref IA,                                         // 插补轴结构体指针
                ref LD);                                        // 直线插补结构体指针
            USB1020.USB1020_StartLineInterpolation_2D(hDevice); // 启动任意2轴直线插补运动

            USB1020.USB1020_NextWait(hDevice);                  // 等待写入下一个节点的参数和命令


            CD.Center1 = 0;
            CD.Center2 = -60000;
            CD.Pulse1  = 0;
            CD.Pulse2  = -100000;
            USB1020.USB1020_InitCWInterpolation_2D(             // 初始化任意2轴正反方向圆弧插补运动
                hDevice,                                        // 设备句柄
                ref DL[1],                                      // 公共参数结构体指针
                ref IA,                                         // 插补轴结构体指针
                ref CD);                                        // 圆弧插补结构体指针
            USB1020.USB1020_StartCWInterpolation_2D(hDevice, CD.Direction);
        }
Ejemplo n.º 4
0
 public void __update()
 {
     for (i = 0; i < 4; i++)
     {
         speed[i] = (USB1020.USB1020_ReadCV(hDevice, i));        // 读当前速度
         A[i]     = (USB1020.USB1020_ReadCA(hDevice, i));        // 读当前加速度
         LP[i]    = USB1020.USB1020_ReadLP(hDevice, i);          // 读逻辑计数器
         PD[i]    = LP[i] * 3.125 / 1000.0;
     }
 }
Ejemplo n.º 5
0
        public void Move(int axis, int stepnum, bool ispm)
        {
            if (axis > 4 || axis < 0)
            {
                return;
            }

            LC[axis].nPulseNum = stepnum;                               // 定量输出脉冲数(0~268435455)
            if (ispm)
            {
                LC[axis].Direction = USB1020.USB1020_PDIRECTION;
            }
            else
            {
                LC[axis].Direction = USB1020.USB1020_MDIRECTION;
            }
            USB1020.USB1020_InitLVDV(hDevice, ref DL[axis], ref LC[axis]);
            USB1020.USB1020_StartLVDV(hDevice, LC[axis].AxisNum);
        }
Ejemplo n.º 6
0
 public void __stop()
 {
     USB1020.USB1020_DecStop(hDevice, USB1020.USB1020_ALLAXIS);                   // 减速停止
 }