Beckhoff - ISISComputingGroup/ibex_developers_manual GitHub Wiki

Wiki > The Backend System > IOCs > Motor IOCs > Beckhoff

Beckhoff motor controllers are the most complex in use at ISIS and will be the standard going forward. A Beckhoff controller is basically a generic PLC that includes a number of useful functions out of the box for running motors. The generality of a Beckhoff means that it will most likely be used in the future for measuring and controlling other hardware outside of motion. A more detailed presentation has been given about Beckhoffs in a Code Chat entitled Layers, Onions and Ogres.

Current Beckhoff installations are:

Instrument Device
LARMOR Rotation Bench
IMAT Large sample bench, controlling rotation and height
SANS2D Guides (5 in total) - note apertures are still Galil-controlled
CHIPIR Filter set
SANDALS Jaws and Sample changer
CRISP Jaws (running old firmware for now)
MUONFE Barn doors (in progress)
INTER Secondary flight path upgrade (INTER tank)
SURF Critical axis (in progress)

Code on the controller

Unlike most other devices (except the Galil) the computing group has some oversight over the PLC code written on the controller. It has been agreed that this code will mostly be written by IDD, with oversight from computing to guide good programming practices, assist in debugging etc. The ISIS first version of this code is stored here however this is now not used and going forward the code is written in collaboration with the ESS and stored here.

Documentation

Troubleshooting

see Beckhoff troubleshooting

Testing

See Beckhoff testing

Commissioning a new Beckhoff on a beamline

see Beckhoff Commissioning

IOC

Beckhoff config area

The config area contains a directory used for storing .cmd files for use with the TC IOC (in the same way as a galil or other motor controller). On an instrument it should look like this: \instrument\settings\config\<instname>\configurations\twincat\.

Quirks

  • The Beckhoff uses whether it has been homed to set ATHM in the motor record, rather than just using the raw datum switch.
  • The "limits" shown on the table of motors summary view are not necessarily actual physical limit switches being engaged - the Beckhoff has more complex rules on whether motors can move back or forwards
  • The motor record sets UEIP (use encoder if present) to false to avoid using the encoder resolution to scale values. We have no control over whether to use or not use an encoder with a Beckhoff, the internal code handles it
  • Axes marked with (V) are virtual axes.

Updating

Some discussion has been had on how we handle updates to the Beckhoff PLC code and twincatMotor etc. this is documented here

⚠️ **GitHub.com Fallback** ⚠️