固高GTS控制卡功能介绍2:NewWatch功能

一、NewWatch功能介绍:

1、使用功能场合

上位机程序运行过程中需要实时采集一些信号实时性要求较高时,可以使用watch功能来实现对这些变量的变化值采集,采集间隔通常可设置为250us-16ms间(变量不可过多)。

2、可以采集的变量说明

NewWatch功能可以采集的资源一般为固高端子板所包括资源(拓展模块不支持),常见的一下变量如:

  1. 轴规划的一些变量,包括规划位置、规划速度,规划加速度加速度等。
  2. 轴编码器相关变量,包括编码器位置、实际速度、实际加速度等。
  3. IO输入输出变量,包括IO输入输出信号状态。
  4. 模拟量输入输出变量 ,包括AI输入采集和AO输出采集。
  5. 其他咨询固高技术人员。

二、程序流程(C#)

1、准备工作
  1. 确认GTS控制卡版本支持此功能使用(DSP固件及FPGA固件日期确定,通常需要16年之后固件才支持)。
  2. 需要添加config.cs文件,new watch相关功能指令在其中。
2、程序流程
//其他正常初始化过程省略。
private void btn_Watch_Click(object sender, EventArgs e)
{	  
    short sRtn; //指令返回值
    int pSts;	//检测轴运动状态   
    double[] pBuf1 = new double[10000];//变量1存放
    double[] pBuf2 = new double[10000];//变量2存放
    double[] pBuf3 = new double[10000];//变量3存放
	//1、初始清除watch变量和采集事件
    sRtn = mc_cfg.GT_ClearWatch(0);
    //2、添加watch变量,此处例子为采集1轴运动状态、1轴编码器位置和第一路模拟量输入值
    //watch变量1:1轴规划运动状态
    mc_cfg.TWatchVar tWatchVar0 = new mc_cfg.TWatchVar();
    tWatchVar0.type = 6200; //变量类型:宏定义mc_cfg.WATCH_VAR_PRF_RUN;6200
    tWatchVar0.index = 1;   //索引号:x轴轴号1
    sRtn = mc_cfg.GT_AddWatchVar(ref tWatchVar0);//添加watch变量指令
    //watch变量2:1轴编码器位置
    mc_cfg.TWatchVar tWatchVar1 = new mc_cfg.TWatchVar();
    tWatchVar1.type = 30000; //变量类型:mc_cfg.WATCH_VAR_ENC_POS;
    tWatchVar1.index = 1;    //索引号:x轴轴号
    sRtn = mc_cfg.GT_AddWatchVar(ref tWatchVar1);//添加watch变量指令
    //watch变量3:第一路模拟量输入值
    mc_cfg.TWatchVar tWatchVar2 = new mc_cfg.TWatchVar();
    tWatchVar2.type = 33000; //变量类型:mc_cfg.WATCH_VAR_AI;
    tWatchVar2.index = 1;    //索引号:AI输入1
    sRtn = mc_cfg.GT_AddWatchVar(ref tWatchVar2);//添加watch变量指令
    //3、设置启动watch条件(可以不设置则按GT_WatchOn指令调用时启动)
    //此处当满足变量1:轴处于运动状态时开始采集。
    mc_cfg.TWatchEvent tWatchEvent = new mc_cfg.TWatchEvent();
    tWatchEvent.type = (ushort)mc_cfg.WATCH_EVENT_START;  //满足条件时开启
    tWatchEvent.var = tWatchVar0;  //变量1 WATCH_VAR_PRF_RUN
    tWatchEvent.loop = 0;//循环次数 0:无限
    tWatchEvent.condition = (ushort)mc_cfg.WATCH_CONDITION_EQ;//条件:等于
    tWatchEvent.watchCount = 10000;//watch数据次数
    tWatchEvent.value = 1;//WATCH_VAR_PRF_RUN值 = 1 开始watch数据,即1轴规划运动中开始watch功能
    sRtn = mc_cfg.GT_AddWatchEvent(ref tWatchEvent);//添加启动条件
    //watch使能开启
    sRtn = mc_cfg.GT_WatchOn(
                             0,//采用间隔
                             0,// 0:静态模式,1:循环模式,2:动态模式
                             0);//数据次数,0:不限次
    //此处若指令返回值都为0,则表示开启watch功能
	
	//开启点位运动,使满足采集条件,使用时最好放在线程中使用,否则会卡住界面,此处为例可单步调试检测。
    mc.TTrapPrm trap = new mc.TTrapPrm;
    short axis = 1;
    sRtn = mc.GT_PrfTrap( 1);     //设置为点位运动,模式切换需要停止轴运动。
    //若返回值为 1:若当前轴在规划运动,请调用GT_Stop停止运动再调用该指令。
    sRtn = mc.GT_GetTrapPrm( 1, out trap);       /*读取点位运动参数(不一定需要)。若返回值为 1:请检查当前轴是否为 Trap 模式若不是,请先调用 GT_PrfTrap 将当前轴设置为 Trap 模式。*/
    trap.acc = 10;              //单位pulse/ms2
    trap.dec = 10;              //单位pulse/ms2
    trap.velStart = 0;           //起跳速度,默认为0。
    trap.smoothTime = 0;         //平滑时间,使加减速更为平滑。范围[0,50]单位ms。
    sRtn = gts.mc.GT_SetTrapPrm(1, ref trap);//设置点位运动参数。    
    sRtn = gts.mc.GT_SetVel( 1, 200);        //设置目标速度
    sRtn = gts.mc.GT_SetPos( 1, 100000);        //设置目标位置
    sRtn = gts.mc.GT_Update( 1 << (1 - 1));   //更新轴运动
    do
    {
          sRtn = gts.mc.GT_GetSts( 1, out pSts, 1, out pClock);
    }
     while ((pSts & 0x0400) != 0);

    //4、运动完成后关闭watch
    sRtn = mc_cfg.GT_WatchOff();
    //5、可以将采集数据放在数组中读取
    sRtn = mc_cfg.GT_ReadWatch(1, out pBuf1[0], 10000, out pReadCount);//1轴运动状态
    sRtn = mc_cfg.GT_ReadWatch(2, out pBuf2[0], 10000, out pReadCount);//1轴位置
    sRtn = mc_cfg.GT_ReadWatch(3, out pBuf3[0], 10000, out pReadCount);//模拟量值
	//6、也可通过指令打印到txt文本文件中(应用程序目录下自动生成),此指令会造成卡顿
    sRtn = mc_cfg.GT_PrintWatch( "watchData", 0, 10000);//bin->debug目录下dataWatch.txt
    //sRtn = mc_cfg.GT_ClearWatch(0);
}

三、注意事项

  1. 指令返回值8为固件不支持该功能,请确认是否能够升级固件解决。
  2. 一次性采集变量数量不可过多,最好不超过5个。
  3. 此功能针对熟悉固高控制卡或有采集需求时使用。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值