雷赛运动控制卡编程(5)异常处理、手动运动、I/O控制、编码器和轴状态检测

一、异常减速停止时间设置功能

 设置减速停止时间

函数

    public int  ExecptionProcess()
    {
        ushort _cardNo = 0;
        ushort _axisNo = 0;
        double  _stopTime = 1;  //减速时间,单位:s
        LTDMC.dmc_set_dec_stop_time(_cardNo, _axisNo, _stopTime);
        return 0;
    }

二、手轮运动

单轴手轮运动功能

 设置单轴手轮运动控制输入方式

启动手轮运动

手轮通道选择设置

 Code:

        public int HandWheel()
        {

            // 设置单轴手轮运动控制输入方式
            ushort _cardNo = 0;
            ushort _axisNo = 0;
            ushort _inMode = 1; //手轮输入方式,0:A、B 相位正交信号;1:脉冲+方向信号
            int  _multi = 1;  //手轮倍率,正数表示默认方向,负数表示与默认方向反向
            ushort _vh = 0;  //保留参数,固定值为 0
            LTDMC.dmc_set_handwheel_inmode(_cardNo, _axisNo,_inMode, _multi, _vh);


            //启动手轮运动
            LTDMC.dmc_handwheel_move(_cardNo, _axisNo);


            //手轮通道选择设置
            ushort  _index = 1;  // 0:高速通道   1:低速通道
            LTDMC.dmc_set_handwheel_channel(_cardNo, _index);
            return 0;
        }

多轴手轮运动功能

设置多轴手轮运动控制输入方式

code 

三、编码器检测

卡的反馈位置计数器是一个 32 位正负计数器,对通过控制卡编码器接口 EA, EB 输入的脉冲(如编码器、光栅尺反馈脉冲等)进行计数。

设置编码器输入口的计数方式

 设置编码器方向

 读取编码器反馈的脉冲计数值

设置编码器的脉冲计数值

读取指定轴螺距补偿开启补偿前编码器脉冲计数值

设置指定轴的EZ信号 

 

 code:

       public int EncoderTest()
       {

           // 设置单轴手轮运动控制输入方式
           ushort _cardNo = 0;
           ushort _axisNo = 0;
           ushort _encoderMode = 1; //   0非A/B向     1 :1 XA/B   2:   2 XA/B     3, 3 XA/B  
           LTDMC.dmc_set_counter_inmode(_cardNo, _axisNo, _encoderMode);



           // 设置编码器方向
           ushort _direct = 0;  // 编码器的方向,0 A在前面为正      1  B在前面为正 
           LTDMC.dmc_set_encoder_dir(_cardNo, _axisNo, _direct);


           // 设置指定轴编码器脉冲计数器
           ushort _encoderValue= 1000;  //单位是 pulse  
           LTDMC.dmc_set_encoder(_cardNo, _axisNo, _encoderValue);



           // 读取指定轴螺距补偿开启补偿前编码器脉冲计数值
           double  _encoderPos=0 ;  // 编码器计数值
           LTDMC.dmc_get_encoder_ex(_cardNo, _axisNo, ref _encoderPos);


           // 设置指定轴的EZ 信号
           ushort _ezLogic = 0;  // EZ信号有效电平  0 低 有   1 高有效
           ushort  _ezMode= 1;
           ushort _fiter = 1;
           LTDMC.dmc_set_ez_mode(_cardNo, _axisNo, _ezLogic, _ezMode, _fiter);


           // 读取指定轴的EZ信号
           double _fiterEz = 0;
           LTDMC.dmc_get_ez_mode(_cardNo, _axisNo,ref _ezLogic,ref  _ezMode,ref _fiterEz);

           return 0;
       }

四、I/O

用户可以通过使用数字I/O口用于检测开环信号和传感器信号等的输入信号,或者控制继电器、电磁阀等输出设备的信号

读取指定控制卡的某个输入端口的电平

 设置指定控制卡的某个输出端口的电平

读取指定控制卡的某个输出端口的电平

读取指定控制卡的全部输入端口的电平

 读取指定控制卡的全部输出口的电平

设置指定控制卡的全部输出口的电平

Code

      public int IOTest()
      {

          // 读取指定控制卡的某个输入端口的电平
          ushort _cardNo = 0;
          ushort _bitNo = 0;  // 输入端口号  0-15 
          int  _logic=   LTDMC.dmc_read_inbit(_cardNo, _bitNo);   // 返回值是输入端口电平  0 低电平  1 高电平


          //  设置指定控制卡的某个输出端口的电平
          ushort _onOff = 1;  // 0 低电平  1 高电平
          LTDMC.dmc_write_outbit(_cardNo, _bitNo, _onOff);


          //  读取指定控制卡的某个输出端口的电平
          int _logic2 = LTDMC.dmc_read_outbit(_cardNo, _bitNo);//返回值    0 低电平  1 高电平




          //  读取指定控制卡的全部输入端口的电平

          ushort _inPort = 0;  // IO组号,  0  或者  1
          LTDMC.dmc_read_inport(_cardNo, _inPort);




          // 读取指定控制卡的全部输出口的电平
          ushort _outPort = 0;
          LTDMC.dmc_read_outport(_cardNo, _outPort);

          ushort _outP = 1;
          uint _portValue = 1;
          LTDMC.dmc_write_outport(_cardNo, _outP, _portValue);
          return 0;


      }

I/O延时功能

IO输出延时反转 

 code

            // IO 输出延时翻转 
            double _outReverseTime = 0;  // 延时翻转时间  单位是 S
            LTDMC.dmc_reverse_outbit(_cardNo, _bitNo, _outReverseTime);

I/O计数功能

 设置IO计数模式

 读取IO计数模式

设置IO计数值

读取IO计数值

code




            //  设置IO计数模式
            ushort _countModer = 1;  // IO计数模式 0 禁止   1 上升沿计数  2 下降沿计数
            double  _filterTime = 0;  //  滤波时间
            LTDMC.dmc_set_io_count_mode(_cardNo, _bitNo, _countModer, _filterTime);



            // 读取IO计数模式
            LTDMC.dmc_get_io_count_mode(_cardNo, _bitNo,ref _countModer ,ref _filterTime);


            //设置IO计数值
            uint _countValue = 1;
            LTDMC.dmc_set_io_count_value(_cardNo, _bitNo, _countValue);

            //读取IO计数值

            LTDMC.dmc_get_io_count_value(_cardNo, _bitNo, ref _countValue);

轴IO映射功能

 设置轴IO映射关系

读取轴IO映射关系

统一设置所有专用的IO滤波时间

 

 code

    public int IOAxisMap()
    {
        // 读取指定控制卡的某个输入端口的电平
        ushort _cardNo = 0;
        ushort _axisNo = 2;  // 指定轴号  
        ushort _ioType = 1; // 指定轴的IO信号类型
        ushort _mapIOType = 1;  // 轴IO映射类型
        ushort _mapIOIndex = 1;  // 轴IO映射索引号 
        ushort _filterTime = 29;
        LTDMC.dmc_set_axis_io_map(_cardNo, _axisNo,_ioType,_mapIOType, _mapIOIndex, _filterTime);


        // 读取轴IO映射关系
        double _filterTime1 = 29;
        LTDMC.dmc_get_axis_io_map(_cardNo, _axisNo, _ioType, ref _mapIOType, ref _mapIOIndex, ref _filterTime1);



        // 统一设置所有专用的IO滤波时间
        double _filterTime3 = 20;
        LTDMC.dmc_set_special_input_filter(_cardNo, _filterTime3);

        return 0;
    }

 虚拟IO映射功能

 设置虚拟IO映射关系

读取虚拟IO映射关系设置

读取滤波后的虚拟IO电平状态

 code

        public int IOVirtualMap()
        {
            // 设置虚拟IO映射关系
            ushort _cardNo = 0;
            ushort _bitNo = 2;  // 指定轴号  
            ushort _mapIOType = 1;  // 轴IO映射类型
            ushort _mapIOIndex = 1;  // 轴IO映射索引号 
            ushort _filterTime = 29;
            LTDMC.dmc_set_io_map_virtual(_cardNo, _bitNo,_mapIOType,_mapIOIndex, _filterTime);


            // 读取虚拟IO映射关系设置
            double _filterTime1 = 29;
            LTDMC.dmc_get_io_map_virtual(_cardNo, _bitNo,ref  _mapIOType, ref  _mapIOIndex, ref _filterTime1);



            // 读取滤波后的虚拟IO电平状态
            LTDMC.dmc_read_inbit_virtual(_cardNo, _bitNo);

            return 0;
        }

CAN-IO 扩展模块

 设置CAN通讯状态

读取CAN通讯状态

 

设置指定CAN_IO扩展模块的某个输出信号

读取指定CAN_IO扩展模块的某个输出信号

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值