Hi Christian,
I would recommend writing a "model 3" motor driver. You write 2 new C++ classes that are derived from asynMotorController and asynMotorAxis. You basically implement a few methods like TMCM-351::move(), TMCM-351::poll(), etc.
There are several examples you can follow. The following 2 are quite simple drivers that use ASCII commands.
motor/motorApp/AcsSrc/MCB4BDriver.cpp
This is 336 lines of code
motor/motorApp/ACRSrc/ACRMotorDriver.cpp
This is 507 lines of code. In addition to motion it implements auxiliary digital I/O registers.
If you search through motorApp/*/*.cpp almost all of those files are motor 3 motor drivers.
There is not yet a good document that describes how to write a Model 3 motor driver. However, there is Doxygen generated documentation that describes the base classes and the derived classes for several real drivers here:
http://cars.uchicago.edu/software/epics/motorDoxygenHTML/
Here is a link to a nice talk that Joe Sullivan from the APS gave on Model 3 motor drivers recently:
http://www.aps.anl.gov/epics/docs/APS2015/16-Motor-Support.pdf
Mark
________________________________________
From: [email protected] [[email protected]] on behalf of Christian Pauly [[email protected]]
Sent: Wednesday, July 15, 2015 3:20 AM
To: [email protected]
Subject: using motor / steppermotor record for Trinamic TMCM-351 controller
Dear experts
I guess i need your help / advice again:
We have bought a Trinamic TMCM-351 3-axis step motor controller, and
want to control a XY-table with this.
It communicates via USB / serial, and we want to run the soft IOC on a
connected Raspberry Pi under Linux.
From what i understand by scanning through various EPICS pages and
docs, the motor module/record, or, alternatively, the steppermotor
module should provide all i need to work with such a multi-axis setup
under EPICS.
However, from what i learn from the motor record documentation, there is
no direct support for exactly this controller.
The controller is fairly simple, and understands plain ASCII / Byte
commands send via serial port, so i am pretty sure it is very similar to
other controllers which actually are supported.
But how do i proceed now ?
Is there some kind of general interface, where i can just define the
needed commands to make the motor record work with this controller ?
Or do i have to program a full new driver (starting maybe with one of
the existing ones) ?
The documentation (i found so far) regarding setting up a controller
with motor record is really sparse.
I am not an EPICS expert, but have done some projects with epics before.
In particular i am running another similar scanning table, where i did
the complete control (for a much simpler controller) only using
streamdevice and interconnecting records. But i guess, using the
particular stepmotor records is a more elegant way to go ???
In the documentation of motor record, it says: "The following
controllers are supported IN ADDIDION TO SOFT CHANNEL SUPPORT".
What is meant with this ?
Any help or advice (including links to some more detailed how-to
documentation) is very welcome !
Best regards,
Christian
- References:
- using motor / steppermotor record for Trinamic TMCM-351 controller Christian Pauly
- Navigate by Date:
- Prev:
Re: record to record ... Ralph Lange
- Next:
Re: Stepper Motor Controllers Pearson, Matthew R.
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
<2015>
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
using motor / steppermotor record for Trinamic TMCM-351 controller Christian Pauly
- Next:
Re: using motor / steppermotor record for Trinamic TMCM-351 controller Ron Sluiter
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
<2015>
2016
2017
2018
2019
2020
2021
2022
2023
2024
|