zoukankan      html  css  js  c++  java
  • Motion control encoder extrapolation

    Flying Saw debug

    Part1 Encoder extrapolation

    Machine introduction

    A tube cutting saw, is working for cut tube to length in line.

    A measuring wheel measures the position of the tube, when cutlength reached the moving table gearon with the measuring wheel. When the table and measuring wheel synchronized, the saw blade start cut. After cut finished or the moving table reach back position, the table pos back to start position.

    This machine is controlled by siemens simotionD motion controller.The program is written by other engineer, after using for several month , user find some problems. I am in charge for on site commissioning.

    max line speed : 80m/min

    Problem1: cut length out of tolarence when accelaration and deceleration

    Appearance:

    When acceleration, actual cut length longer than set length.When deceleration, actual cut length shorter than set length. The length different could bigger than 10mm.

    Analyze:

    If an axis gearing/camming with another axis(or encoder), assume the gearing ratio is 1:1 and every parameter is default value. The slave position will always behind master position, because there is delay in the control loops.

    I check the program, and find the encoder has set position filter. As encoder is the master of the carriage, because there is some ocillation is the tube, using position filter is a good solution. The position filter in this project is 20ms + 20ms.
    Position filter has a good affect that the speed is smooth, and a bad affect that the filtered position is lagged behind the actual position.

    Position delayed  = encoderVelocity x filterTime
    

    Extrapolation

    There is several solution to handle the position difference. Extrapolation is an easy and effective method.

    Extrapolation position 
    = positionBeforeExtrapolation + ExtrapolationVelocity x ExtrapolationTime
    
    Extrapolation velocity = differential(Extrapolation position)
    

    The graph below is extrapolation signal flow. In the middle of graph, is extrapolation time. Before extrapolation ,there is a position filter in position channel , and a velocity filter in velocity channel. These two filter only effective when extrapolation time bigger than 0.

    Extrapolation setting method

    Step 1:

    In the FlyingSaw Axis interconnections, select "Actual value with extrapolation" of encoder.

    Step 2: set extrapolation velocity filter

    I prefer "mean value filter" than the "pt1/pt2" filter.
    velocity filter time could be 0.1 to 0.2s. This filter is very important, a smooth velocity ensured the extrapolation value is stable.

    Step 3:

    how long the extropolation time should be? experience should related to the system delay time. So I can write an equation here.

    extrapolation time ≈ Positionfiltertime + 2*ipo_time 
                       = 20ms + 20ms + 2ms = 42ms  (in this project)
    

    If you are not sure about the filter time, then try a smaller value, like 70% of the calulated value.


    Result

    After implement extrapolation, the cutting accuracy at acceleration and deceleration is much better, length different less than 2mm.

  • 相关阅读:
    MySQL ------ 触发器(TRIGGER)(二十七)
    MySQL ------ 游标(CURSOR)(二十六)
    小程序:ajax(页面跳转方式、http、ajax的应用)
    小程序:phpStudy(下载与安装、创建数据库)
    redis:key(常用命令、命名规范)
    redis:基础(内存维护策略、redis的开启与退出、RedisDesktopManager的安装与使用)
    小程序:列表(获取json中的数据)
    svn:IDEA与SVN(IDEA删除、检出、更新项目、解决冲突、恢复历史版本)
    svn:IDEA与SVN(配置SVN、IDEA添加项目到SVN)
    java:面向接口编程(解耦)
  • 原文地址:https://www.cnblogs.com/lion-zheng/p/6914991.html
Copyright © 2011-2022 走看看