Giter Club home page Giter Club logo

ecmc's Introduction

ECMC Motion Control Module for EPICS

ECMC is a motion control and data acquisition module for use with EPICS system.

Initialize

git submodule update --init --reference ./

Features

  • Motion Control
    • Motor record support
      • Absolute Positioning
      • Relative Positioning
      • Constant velocity
      • Evaluation of limit and reference switches
      • Homing (several different sequences available)
        • Low limit (refId = 1)
        • High limit (refId = 2)
        • Ref. sensor via low limit (refId = 3)
        • Ref. sensor via high limit (refId = 4)
        • Ref. sensor center via low limit (refId = 5)
        • Ref. sensor center via high limit (refId = 6)
        • Encoder index via low limit (refId = 11)
        • Encoder index via high limit (refId = 12)
        • Set position dedicated for auto restore (refId = 15)
        • Single turn abs encoder (resolver) ref via low limit (refId = 21)
        • Single turn abs encoder (resolver) ref via high limit (refId = 22)
        • Set position (refId = 25)
      • Interlocks
        • Following error
        • Max speed
        • Ethercat I/O
        • Ethercat bus health
    • Advanced features
      • Virtuel and normal axis
      • Modulo movements
      • Syncronization (to axis or any I/O) Handled through expressions
        • Example slaving "ax2.traj.setpos:=ax1.enc.actpos;"
        • Example sync "ax2.traj.setpos:=ax1.traj.setpos;"
        • Example phasing "ax2.traj.setpos:=ax1.traj.setpos+100;"
        • Example phasing "ax2.traj.setpos:=ax1.traj.setpos+ax3.traj.setpos;"
        • Advanced "ax2.traj.setpos:=ax1.traj.setpos*sin(ax3.traj.setpos/100)+ec0.s2.VALUE;"
        • Enable amps "ax2.drv.enable:=ax1.drv.enable;"
        • Interlocks "ax2.mon.ilockfwd:=ec0.s1.INPUT_1 or ax1.enc.actpos < 100;"
    • Data acquisition
      • Supoort of many different analog and digital slaves
      • Up to 100kHz analog and 1Mhz digital (oversampling slaves)
    • Control
      • PLC objects can be created with custom sample rate where logic (including motion) can be handled in realtime. (see examples in ecmccfg repository: https://github.com/icshwi/ecmccfg/tree/master/examples/test
      • Same syntax as for synchronization:
        • "ec0.s45.VALUE:=static.gain*77+ax2.traj.setpos/10;"
      • PLC variables can be accessed from EPICS.
      • PLC code can be loaded and updated in real-time.
    • Hardware support:

How do I get set up?

Fastest and easiest way to get started is by using the configuration scripts accessible in ecmccfg repository: https://github.com/paulscherrerinstitute/ecmccfg (or ESS fork https://github.com/icshwi/ecmccfg)

ECMC is configured via EPICS-iocsh:

  • iocsh commands:

    • Create an ECMC application:
      • ecmcAsynPortDriverConfigure ,, , ,
    • Configure ECMC application. Exit ECMC if returns error:
      • ecmcConfigOrDie
    • Configure ECMC application.
      • ecmcConfig
    • Print availabe asyn parameters and other info:
      • ecmcReport
      • asynReport . Same as ecmcReport but also calls asynReport in other modules.
  • ASCII-cmds (see doxygen documentation for more information):

    • Motion configs. Example:
      • ecmcConfigOrDie "Cfg.CreateAxis(,1,)"
      • ecmcConfigOrDie "Cfg.SetAxisCntrlKp(,)"
      • ...
    • Ethercat bus configs. Example:
      • ecmcConfigOrDie "Cfg.EcAddEntryComplete(,,,,,,,,,)"
      • ...
    • Ethercat slave configs (SDO,SoE). Example set max motor current for EL7037 to 1500mA:
      • ecmcConfigOrDie "Cfg.EcAddSdo(,0x8010,0x1,1500,2)"
    • PLC configuration:
      • ecmcConfigOrDie "Cfg.CreatePLC(,)"
      • ecmcConfigOrDie "Cfg.LoadPLCFile(,)"
      • ecmcConfigOrDie "Cfg.AppendPLCExpr()=ax1.enc.homepos:=25#"
      • ...

Environment

ECMC runs best under certain conditions:

Needed EPICS modules

Issues/bug report

https://github.com/epics-modules/ecmc/issues

Support

ecmc's People

Contributors

anderssandstrom avatar tboegi avatar jeonghanlee avatar kivel avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.