Service

技术服务

产品类型 :
  • A:编译GTS控制卡运动程序时提示“试图加载不正确的程序”:

     客户使用Visual Studio编写GTS运动控制程序,在编译时出现#8220;试图加载不正确的程序8221;的错误。

     VS编译GTS控制卡程序时提示8220;试图加载不正确的程序8221;

    原因:

    (1)使用的dll为32位系统编译,而此时选择的VS编译平台为64位

    (2)使用的dll为64位系统编译,而此时选择的VS编译平台为32位GTS多卡库采用32位系统编译,

    因此VS编译平台应该选择为x86(32位系统),如果选择成x64就会出错。

     
  • A:分析点位运动特点和原理,并给出编程实例。:

     PT模式是GTS系列运动控制器推出的一个最灵活的运动模式,可以广泛运用于各种运动控制场合。

    本文对该模式进行一些探索,以期将来可以被更多的客户使用。

    下面我们分析一下梯形曲线运动的实现。
    已知目标位移为S,目标速度为V,加速度为Acc,减速度为Dec,初始速度为0。
    当时,该运动的速度曲线为三角形,即没有匀速运动阶段。此时,可以利用PT模式的普通段和停止段,2条指令来描述。
    第一条的PT为(,),普通段。
    第二条的PT为(S,),停止段。
    当时,该运动的速度曲线为梯形,存在匀速段。此时,可以利用PT模式的普通段、匀速段和停止段,3条指令来描述。
    第一条的PT为(,),普通段。
    第二条的PT为(,),匀速段。
    第三条的PT为(S,),停止段。
    详细例程为PtToTrap,在例程库中,C#编写。该例程通过测试,注意速度和加速度、减速度的设置,如果不合理,容易使驱动器报警。
  • A:GTS运动控制卡插补运动缓冲区的管理(暂停与恢复)测试:

    用户的主插补运动的插补数据应该放在FIFO0中。

    FIFO0的插补运动可以被中断(通过调用GT_Stop()指令),中断后可以进行辅助 FIFO1 的插补运动,辅助 FIFO1 的插补运动完成后,需要将坐标系位置恢复到FIFO0 主运动被打断的位置,之后FIFO0 可从断点处继续恢复原来的运动。

    由于主缓冲区可以放置插补运动指令(如GT_LnXY)、缓冲区延时指令、缓冲区IO指令等,下面针对不同指令,在指令执行过程中暂停主缓冲区。
    //主缓冲区运动
    sRtn = GT_CrdClear(1, 0);//清空主缓冲区
    sRtn = GT_LnXY(1,5000,5000,10,1,0,0);//第一条插补指令
    sRtn = GT_BufDelay(1, 8000, 0);//第一条延时指令
    sRtn = GT_BufDelay(1, 3000, 0);//第二条延时指令
    sRtn = GT_BufIO(1,MC_GPO,1<<(1-1),0,0);//输出IO指令
    sRtn = GT_BufDelay(1, 3000, 0);//第三条延时指令
    sRtn = GT_LnXY(1,10000,10000,10,1,0,0);//第二条插补指令
     
    //辅助缓冲区运动
    sRtn = GT_LnXY(1,15000,25000,10,1,0,0);//第一条插补指令
     
    (1)当前正在执行插补运动指令
    如果当前正在执行插补指令,调用主缓冲区暂停指令后,缓冲区立即停止运动,且可以记录当前断点位置,后续执行完辅助缓冲区后,从该断点位置继续执行主缓冲区。例如,执行第一条插补指令,在位置为(X=2000,Y=2000)处暂停主缓冲区运动,那么后续恢复主缓冲区运动则继续从该位置运动。
    (2)当前正在执行延时指令
    如果当前正在执行缓冲区延时指令,调用主缓冲区暂停指令时,这条延时指令将失效。1.如果这条延时指令后面是插补运动指令,那么启动辅助缓冲区运动时,直接执行辅助缓冲区运动;2.如果这条延时指令后面是延时指令,那么启动辅助缓冲区运动时,会先执行延时指令,再执行辅助缓冲区运动,例如:第一条延时指令执行到(例如3s),暂停主运动,那么8s的延时不再起作用,启动辅助运动,则第二条延时指令先执行再执行辅助运动;3.如果第一条延时指令后面是输出IO指令,当第一条延时指令执行到中间(例如3s),暂停主运动,那么输出IO指令会被执行,启动辅助运动后直接进入辅助运动。
  • A:使用运动程序提高功能实时性:

     客户购买GTS-400-TPG控制卡,要完成一个拍照检测系统。送料轴采用JOG模式一直运动,当物料碰到传感器时,系统记录物料位置,当物料前进P1个脉冲时,相机1拍照;当物料前进P2脉冲时,相机2拍照(P1<P2)。

    编程思路:将传感器连接到EXI0接口,利用探针捕获指令捕获物料位置,然后实时去判断当规划位置到达P1时,使EXO0发出一个脉宽;当位置到达P2时,使EXO1发出一个脉宽。
    实例代码:代码在线程中编写
    long cappos[10];//申请一个数组来保存数据
    int i,j1,j2;      //记录保存和触发的数据
    //不断捕获位置,并存到cappos数组中。
    switch(step)
    { case 0:
    GT_SetCaptureMode(1,CAPTURE_PROBE);
          step=1;
          break;
      case 1:
          GT_GetCaptureStatus(1,&run,&pvalue,0);
          if (run == 1)
          {cappos[i]=pvalue;
    i=i+1;
    step=0;
    }
    break;
    }
    GT_GetPrfPos(1,&pos);
    if (pos>cappos[j1]+P1)
    {  GT_SetDoBitReverse(MC_GPO,1,100,0);
       j1=j1+1;}
    if (pos>cappos[j2]+P2)
    {  GT_SetDoBitReverse(MC_GPO,2,100,0);
    j2=j2+1;}
    这段代码的意思是不断捕获位置存储在cappos数据,用i来代表存储位置,即每存一个i要自增,当i到达10时,i重新置零。j1和j2代表相机1和相机2的触发情况,没触发一次,他们相应的自增。这样编软件就会满足当第一个物料进入,但是没拍照的情况下,物料二又进入的情况。比完全的流程控制(即触发-拍照1-拍照2)这样的简单循环效率更高。
    把这个函数发给客户测试,客户的测试结果当送料速度比较慢的时候,两个相机可以拍到物料中心,当客户逐渐把速度加快以后,两个相机拍照不稳定。有时候能拍到中心,有时候拍到边上,有时候完全拍不到??突в窒蛭曳从掣梦侍?,希望我解决。
    从VC的实时性上来说,VC的时间片分配80~100ms才能扫描一次上面的代码,如果任务比较多,这个时间更大。因此,当客户调高速度时,这段代码会出现捕获失败或者拍照指令下达不准确的问题。
    得知客户该要求,我建议客户使用运动程序来完成。因为运动程序在板卡上运行,和计算机比较,指令时间提高4倍,完全没有时间片概念,我们的运动程序是一直执行的。因此可以满足该要求。
    编写的运动程序如下:可能有错误,请大家参考
    short run;        //探针捕获状态
    long value;       //探针捕获位置
    long pClock;      //指令时钟
    long lprobe[10];  //锁存捕获位置
    double dprobe[10];//double型捕获位置
    double pc1[10];   //相机1捕获条件
    double pc2[10];   //相机2捕获条件
    int condition;    //判断条件
    int i;            //锁存位置
    int j1;           //相机1拍摄计数
    int j2;           //相机2拍摄计数
    double pos;       //获取位置
    long time[2];     //相机启动时间
    long clock;       //获取时间
    long NULL;        //辅助参数
    int do[2];        //拍照标志
    int ProbeThread()
    {
        GT_SetCaptureMode(1,3);
    start:
        GT_GetClock(&clock,&NULL);
        condition=clock>time[0];
        condition=condition && do[0];
        if(condition) goto reset0;
        goto s1;
    reset0:
        GT_SetDoBit(12,15,1);
    s1:
        condition=clock>time[1];
        condition=condition && do[1];
        if(condition) goto reset1;
        goto s2;
  • A:某固晶机使用GTS控制卡后驱动器反馈实际位置跟随不上规划:

    1.客户问题

    客户原来使用GE系列控制卡,现在切换到GTS系列控制卡。在同一台机器上,驱动器参数不变的情况下,使用GE控制卡,机器能够正常运转,使用GTS控制卡后,机器运行异常(实际速度有异常),如下图所示,通过三洋驱动器调试软件采集在相同点位运动参数下,驱动器反馈的规划速度和实际速度。点位运动测试数据:速度980,加速度90,减速度90,平滑时间0,步长22500;使用GE系列控制卡采集的驱动器数据;使用GTS系列控制卡采集的驱动器数据 在GTS控制卡下,驱动器反馈的实际速度不仅滞后于规划速度(梯形曲线),而且还缺少匀速段。

    2.分析和解决过程:

    (1)怀疑客户编写的代码有问题,通过MCT2008发点位运动指令,问题仍然存在。

    (2)怀疑是否由于GTS控制卡的固件存在问题,把DSP 1.28的固件升级到DSP1.29,问题仍然存在。甚至把控制卡更换为GTS-400-PV-G,问题仍存在。

    (3)怀疑GTS控制卡发送的点位运动是否存在小阶梯,而导致该问题。通过MCT2008的Tuning功能查看点位运动规划速度,并无小阶梯??刂瓶ǚ⑺偷乃俣裙婊⒉淮嬖谛〗滋?,但是驱动器的反馈的控制卡速度规划存在小阶梯,也就是说驱动器对控制卡发下去的指令进行了处理。那么很有可能是这种处理过程导致的该问题。但是,使用GE系列控制卡,同样也存在驱动器反馈的速度规划存在小阶梯。如此,并不是小阶梯导致的问题。

    GE系列控制卡和GTS系列控制卡还存在一个区别,那就是控制周期不一样。那么是不是这种区别导致的。但是驱动器里面有很多与时间相关的参数,如何调整。 后来现场查看,发现使用GE控制卡和GTS控制卡还有一个区别,那就是GE卡的端子板放在设备机箱内,驱动器线缆直接连接到端子板,而GTS卡的端子板放到设备外面,驱动器线缆通过一个转接线缆与端子板相连。本着最简系统的原则,把转接线缆取掉。再进行测试,结果如下。相对于先前的结果有所改善,即实际速度有了匀速段,只是跟随性不是很好。使用GTS系列控制卡(取掉端子板与驱动线缆的转接线)采集的驱动器数据 调节驱动器的加速度前馈等参数,加强系统跟随性,得到如下图所示,实际速度的跟随性比较好,而且查看到位及过冲都能满足要求。

     
     
  • A:GTS控制卡脉冲控制模式单端、差分输出接线说明:

    long8运动控制卡(GTS为例)、控制器(GUS为例),都是采用的D25接头将控制器或端子板和驱动器连接的。

    但是具体接线有区别。

    单端输出:脉冲控制模式分为两种,即“脉冲+方向”和“CCW/CW”模式,两种模式的单端接法是一样的,只需要将控制器端的pluse+/dir+/5V和驱动器端的pluse+/dir+/5V相连接即可。
    注意:若驱动器端的5V电压不是有控制器端提供,而是有外部开关电源提供的,此时仍需要采用此种接线方法(CCW/CW模式),则需要将控制器的5V电和外部供电电源??榈?V电短接,即将5V共起来。
    双端输出(差分输出):脉冲控制的两种模式,即“脉冲+方向”和“CCW/CW”模式,两种模式的双端接法也是一样的,需要将控制器端的pluse+、pluse+/dir+、dir-/5V、GND和驱动器端的pluse+、pluse+/dir+、dir-/5V、GND连接即可。
    注意:控制器输出模式采用差分接线方法,采用双绞线的形式,相比单端接线方法,能够增强抗干扰能力。单端接线时抗干扰的能力较弱。
  • A:Home信号触发正常,轴也能正常运动,但每次回零都回到上电起始位置(没加偏移)。:

    使用mct2008测试发现,客户有打开编码器,但实际编码器并没有反馈,一直是0。

    据了解客户并未接编码器反馈线,而回零时读取的位置值读取都是实际位置,所以每次回零完成后回到的位置都是上电起始位置。

    解决方法有两种:

    1、关闭编码器,使用脉冲计算器,但回零精度不高。

    2、接上编码器反馈线。

    经验总结

    回零出错的情况还有很多种:

    1、实际位置和规划位置值不同(编码器取反或编码器分频不对)。

    2、回零过程中,轴触发限位,但未清除掉限位,导致后面运动回零失败(零点设置在行程中间时会碰到)。

    3、启动回零后,轴不动,但显示已找到零点(通过检测发现Home信号受干扰误触发,电机动力线和IO线布线在一起,解决方法把电机动力线与IO线分开或在IO线上加磁环)。

  • A:会有一些客户反馈GTS控制卡不能回零,为了实现回零运动,需要做一些前期准备并注意可能导致回零失败的问题。:

     GTS系列运动控制卡实现回零功能,需要三个条件:

    (1) 能够捕获到Home信号

    (2) 规划位置和编码器位置方向相同

    (3) 正确的回零代码 

    (1) 能够捕获到Home信号与GTS系列运动控制卡配套的端子板上有接收Home信号的接口(标签为Home0、Home1&#8230;&#8230;),Home0对应于AXIS1的Home信号接口,Home1对应于AXIS2的Home信号接口,依此类推。默认配置下,Home信号接口为下降沿触发,如果使用??狧ome开关时,当Home开关触发Home信号接口将获得一个下降沿信号,此时通过调试软件MCT2008可以查看控制卡和端子板是否能够捕获到Home信号,具体步骤如下所示:打开MCT2008 点击:视图--捕获;,弹出如下窗口,勾选相应的轴号(如果要测试AXIS1的Home,并且把Home开关接到Home0信号接口,就勾选下图窗口的轴1)

     
  • A:缓冲区数据大于4096段的处理:

    很多时候会碰到所压数据大于4096段的情况,一般简单处理如下: 

    1、数据先压入一部分,执行CrdStart。 之后一边压数据一边执行。  

    2 、数据压满4096段后,启动缓冲区运动。这样一边压数据一边执行 

     
  • A:多卡编程时卡号:

    问题描述:

    客户在使用多卡时,需要调用卡号从而确定控制的卡,在正常情况下,PCI卡槽靠近工控机北桥的是1号卡,远离北桥的按照距离依次增大。但有时客户会出现卡号混乱的情况,例如距离PCI卡槽远近依次卡号为3、1、2,如果这个时候客户的PCI卡槽比较多,可能会更加混乱。

    问题解释:

    PCI的卡槽中卡的的顺序其实是根据其被分配的设备号来决定的,设备号越小,优先级越高,里面所插卡的分配卡号越小。一般情况下,距离北桥近的设备号小,所以平时认为靠近北桥的卡号小。但有些工控机的PIC设备号没有按照顺序排列就会出现上述问题。
    设备号通过右键硬件“GoogolTech GT—800—PCL ”子目录下的相关驱动,“属性”中可以查询。
     
    解决方法:
    1、通过往每个槽中插入卡,查询设备号来确定槽的优先级从而确定卡号。
    2、可以直接让客户使用时固定使用几个PCI插槽,然后记住那几个槽的分配卡号,以后这些槽的卡号就不会变了。

    注意事项:
    1、在第一次插卡、装驱动后要重启一下工控机,然后再检测相对卡号。
    这个规律适用于GTS系列卡(400、800或者混合用都可以),其他系列还未测试,仅做参考。
页次:1/5 每页10 总数48    |<  <  >  >|    转到: