C# 固高运动控制卡插补

在运动控制器的初始状态下,复位之后或者还未使用过插补运动状态下,所有的规划轴都处于
单轴运动模式下,两个坐标系也是无效的。

进行插补运动时,首先需要建立坐标系,将规划
轴映射到相应的坐标系中 。

   short sRtn;
            short cardNum = 0;
            mc.TCrdPrm crdPrm = new TCrdPrm(); ;
            crdPrm.dimension = 2; // 坐标系为二维坐标系
            crdPrm.synVelMax = 500; // 最大合成速度:500pulse/ms
            crdPrm.synAccMax = 1;  // 最大加速度:1pulse/ms^2
            crdPrm.evenTime = 50;  // 最小匀速时间:50ms
            crdPrm.profile1 = 1; // 规划器1对应到X轴
            crdPrm.profile2 = 2; // 规划器2对应到Y轴           
            crdPrm.setOriginFlag = 1; // 表示需要指定坐标系的原点坐标的规划位置
            crdPrm.originPos1 = 100; // 坐标系的原点坐标的规划位置为(100, 100)
            crdPrm.originPos2 = 100;
            sRtn = GT_SetCrdPrm(cardNum, 1, ref crdPrm);

            // 坐标系运动状态查询变量
            short run;
            // 坐标系的缓存区剩余空间查询变量
            int segment;
            // 坐标系的缓存区剩余空间查询变量
            int space;
            // 即将把数据存入坐标系1的FIFO0中,所以要首先清除此缓存区中的数据
            sRtn = mc.GT_CrdClear(cardNum, 1, 0);
            // 向缓存区写入第一段插补数据
            sRtn = mc.GT_LnXY(cardNum,
            1,  // 该插补段的坐标系是坐标系1
            x, y,  // 该插补段的终点坐标(200000, 0)
            100, // 该插补段的目标速度:100pulse/ms
            0.1, // 插补段的加速度:0.1pulse/ms^2
            0,  // 终点速度为0
            0); // 向坐标系1的FIFO0缓存区传递该直线插补数据

            // 查询坐标系1的FIFO0所剩余的空间
            sRtn = GT_CrdSpace(cardNum, 1, out space, 0);
            // 启动坐标系1的FIFO0的插补运动
            sRtn = GT_CrdStart(cardNum, 1, 0);
            // 等待运动完成
            sRtn = GT_CrdStatus(cardNum, 1, out run, out segment, 0);
            do
            {
                // 查询坐标系1的FIFO的插补运动状态
                sRtn = mc.GT_CrdStatus(cardNum,
                1,  // 坐标系是坐标系1
                out run,  // 读取插补运动状态
                out segment,  // 读取当前已经完成的插补段数
                0); // 查询坐标系1的FIFO0缓存区
                    // 坐标系在运动, 查询到的run的值为1
            } while (run == 1);

 

你可能感兴趣的:(C#,固高运动控制卡)