雷赛运动控制卡编程(6) 位置比较、原点锁存、AD/DA、错误码

一、位置比较

步骤:

1、配置比较器;
2、清除比较器;
3、添加/更新比较位置点;
4、开始运动并查看比较状态。

一维低速位置比较功能

设置一维位置比较器 

清除一维位置比较点

添加一维位置比较点

读取当前一维比较点位置

查询已经比较过的一维比较点个数

查询可以加入的一维比较点个数

 code

    public  int CompareOneDirect()
    {
        // 设置一维位置比较器 
        ushort _cardNo = 0;
        ushort _axisNo = 1;
        ushort _enableCompare = 1;   //  比较功能状态  0  禁止  1 使能 
        ushort _sourceCompare = 1;   // 比较源  0 指令位置计数器  1 编码器计数器
        LTDMC.dmc_compare_set_config(_cardNo, _axisNo, _enableCompare, _sourceCompare);

        // 清除一维位置比较的点  
        LTDMC.dmc_compare_clear_points(_cardNo, _axisNo);

        // 添加一维位置比较点、
        int _pos = 1200;  // 比较位置  单位是 pulse 
        ushort _direct = 1;  // 比较模式    0 小于等于   1 大于等于
        ushort _action = 2;  // 比较点出发功能编号
        ushort _actPara = 1;
        LTDMC.dmc_compare_add_point(_cardNo, _axisNo, _pos, _direct, _action, _actPara);



        // 读取当前一维比较点位置
        LTDMC.dmc_compare_get_current_point(_cardNo, _axisNo,ref  _pos);


        // 查询已经比较过的一维比较点个数
        int _pointNum = 0;  // 返回已经比较过的点
        LTDMC.dmc_compare_get_points_runned(_cardNo, _axisNo,ref _pointNum);


        //  查询可以加入的一维比较点个数
        int _pointNumRemaind = 0;  // 返回可以加入的比较点数 
        LTDMC.dmc_compare_get_points_remained(_cardNo, _axisNo, ref _pointNumRemaind);

        return 0; 
   }

二维低速位置比较功能

设置二维位置比较器

清除已添加的所有二维位置比较点

添加二维位置比较点

读取当前二维位置比较点位置

查询已经比较过的二维比较点个数

查询可以加入的二维比较点个数

            // 设置二维位置比较器 
            ushort _cardNo = 0;
            ushort[]  _axisNo =new ushort[20];
            ushort _enableCompare = 1;   //  比较功能状态  0  禁止  1 使能 
            ushort _sourceCompare = 1;   // 比较源  0 指令位置计数器  1 编码器计数器
            LTDMC.dmc_compare_set_config_extern(_cardNo, _enableCompare, _sourceCompare);

            // 清除二维位置比较的点  
            LTDMC.dmc_compare_clear_points_extern(_cardNo);

            // 添加二维位置比较点、
            int[] _pos = new int[20] ;  // 比较位置  单位是 pulse 
            ushort[] _direct =new ushort[20];  // 比较模式    0 小于等于   1 大于等于
            ushort _action = 2;  // 比较点出发功能编号
            ushort _actPara = 1;
            LTDMC.dmc_compare_add_point_extern(_cardNo, _axisNo, _pos, _direct, _action, _actPara);



            // 读取当前二维比较点位置
            LTDMC.dmc_compare_get_current_point_extern(_cardNo,  _pos);


            // 查询已经比较过的二维比较点个数
            int _pointNum = 0;  // 返回已经比较过的点
            LTDMC.dmc_compare_get_points_runned_extern(_cardNo,  ref _pointNum);


            //  查询可以加入的二维比较点个数
            int _pointNumRemaind = 0;  // 返回可以加入的比较点数 
            LTDMC.dmc_compare_get_points_remained_extern(_cardNo, ref _pointNumRemaind);

            return 0; 

一维高速位置比较功能

设置高速比较模式

配置高速比较器

设置高速比较线性模式参数

清除高速位置比较点

添加/更新高速比较位置

读取高速比较参数

控制指定 CMP 端口的输出

读取指定 CMP 端口的电平

  public int CompareHcmpDirects()
  {
      // 设置高速比较模式
      ushort _cardNo = 0;
      ushort _axisNo = 1;
      ushort _cmp = 2;  // 告诉比较器 对应的端口 cmp0-cmp3
      ushort _cmpMode = 2;  // 比较模式 0 禁止  1 等于  2 小于 3 大于   4 队列
      LTDMC.dmc_hcmp_set_mode(_cardNo, _cmp, _cmpMode);

      // 配置告诉比较器
      ushort  _hcmp= 0;  //  // 告诉比较器 对应的端口 cmp0-cmp3
      ushort  _hcmpSource= 0;   //  比较位置源  0 指令位置计数器   1 编码位置计数器
      ushort _cmpLogic = 1;  // 有效电平  0 低电平  1  高电平
      int _time = 20;  // 脉冲宽度 
      LTDMC.dmc_hcmp_set_config(_cardNo, _hcmp, _axisNo, _hcmpSource,_cmpLogic, _time);

      //  设置高速比较线性模型
      int _increment = 0;  // 位置增量 单位是pulse  
      int _count = 2;   // 比较的次数  
      LTDMC.dmc_hcmp_set_liner(_cardNo, _hcmp, _increment,_count);


      //清除高速位置比较点
      LTDMC.dmc_hcmp_clear_points(_cardNo, _hcmp);



      //添加更新高速比较位置
      int _cmpPos = 120;  // 队列模式下添加比较位置   
      LTDMC.dmc_hcmp_add_point(_cardNo, _hcmp, _cmpPos);


      // 读取高速比较参数
      
      LTDMC.dmc_hcmp_get_config(_cardNo,_hcmp,ref _axisNo, ref _hcmpSource, ref _cmpLogic, ref _time);


      // 控制指定CMP端口的输出
      ushort _onOroff = 1;   // 设置CMP端口电平   0 低电平  1 高电平
      LTDMC.dmc_write_cmp_pin(_cardNo,_hcmp,_onOroff);




      //  读取指定 CMP 端口的电平



      return 0;
  }

二、高速位置锁存

高速单次位置锁存功能

函数介绍
设置指定轴的 LTC 信号
设置锁存方式
从控制卡内读取编码器锁存器的值
从控制卡内读取指定卡内锁存器的标志位
复位指定卡的锁存器的标志位

高速连续位置锁存功能

LTC 触发延时急停功能

三、原点锁存功能的实现

四、AD/DA功能

五、螺距补偿与圆弧限位

六、运动错误码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值