Argonne National Laboratory

Experimental Physics and
Industrial Control System

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  <20192020  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  <20192020 
<== Date ==> <== Thread ==>

Subject: Re: Animatics SmartMotor setup
From: "Davis, Mark via Tech-talk" <tech-talk@aps.anl.gov>
To: Torsten Bögershausen <torsten.bogershausen@esss.se>, Mark Rivers <rivers@cars.uchicago.edu>, "Tech-talk@aps.anl.gov" <Tech-talk@aps.anl.gov>
Date: Tue, 18 Jun 2019 17:48:30 +0000
Hi Torsten,

The only issue I am aware of with inserting a Moxa in to the 
communications link is the one I discovered a few months ago that had to 
do with the fact that the StreamDevice interface doesn't handle 
responses that are broken up in to multiple packets when using I/O Intr 
mode (see TechTalk messages from 3/18/19 with subject "StreamDevice 
Processing Issue")

Unless the SmartMotor controller returns responses > 112 bytes and the 
asyn interface has a similar issue with multi-packet responses, I don't 
see why a Moxa would cause any problems.  In fact, we have used the 
vendor's software just fine with the Moxa configured as a virtual/remote 
serial port connected to the motor/controller's RS-232 interface.

Mark




Mark Davis NSCL/FRIB Control Systems Software Engineer davism50@msu.edu
On 6/18/2019 10:16 AM, Torsten Bögershausen wrote:
> (Re-adding tech-talk)
>
> Hej Mark & Mark,
>
> that doesn't seem to be good news -
> The model 1 driver will not work with a Moxa at all.
>
> Unless I am wrong, we need a model 3 driver (to be written),
> when a controller connected through a Moxa is used.
>
> /Torsten
>
>
>
> On 18/06/19 16:04, Mark Rivers wrote:
>> Hi Mark,
>>
>> What Torsten says is true for Model 2 and Model 3 motor drivers.  
>> However the SmartMotorSrc driver is an old Model 1 driver, so the 
>> driver is not derived from asynPortDriver and it only has the single 
>> asyn port to the underlying drvAsynIPPort.
>>
>> The OUT field syntax for Model 1 drivers is:
>>
>>          field(OUT,"#C$(C) S$(S) @")
>>
>> where $(C) is the card number, and $(S) is the signal number. So for 
>> the first axis on the first controller it would be
>>
>>       field(OUT,  "#C0 S0 @")
>>
>> Mark
>>
>> -----Original Message-----
>> From: tech-talk-bounces@aps.anl.gov <tech-talk-bounces@aps.anl.gov> 
>> On Behalf Of Torsten Bögershausen via Tech-talk
>> Sent: Tuesday, June 18, 2019 6:45 AM
>> To: Mark Davis <davism50@msu.edu>; Davis, Mark 
>> <mark_a_davis@comcast.net>; tech-talk@aps.anl.gov
>> Subject: Re: Animatics SmartMotor setup
>>
>> Hej Mark,
>>
>> you need 2 asyn ports, one for the motorRecord to talk to your 
>> "Animatics SmartMotor" asynMotorDriver.
>>
>> The second one to let the "Animatics SmartMotor" asynMotorDriver talk 
>> to the real hardware.
>> We call them "MCU1" and "MC_CPU1", better suggestions are welcome.
>>
>>
>> A simplified setup is here:
>>
>> ## The db file:
>> record(motor,"$(PREFIX)$(MOTOR_NAME)")
>> {
>>     field(DESC,"$(DESC)")
>>     field(DTYP,"asynMotor")
>>     field(OUT,"@asyn($(MOTOR_PORT),$(AXIS_NO))")
>> }
>>
>> ##st.cmd
>> epicsEnvSet("ASYN_PORT",     "MC_CPU1")
>> epicsEnvSet("MOTOR_NAME",    "IOC:m1")
>> epicsEnvSet("MOTOR_PORT",    "MCU1")
>> epicsEnvSet("AXIS_NO",       "1")
>>
>>
>> drvAsynIPPortConfigure("$(ASYN_PORT)","$(IPADDR):$(IPPORT)",0,0,0)
>> EthercatMCCreateController("$(MOTOR_PORT)", "$(ASYN_PORT)", 
>> "$(NUMAXES)", "200", "1000")
>>
>> EthercatMCCreateAxis("$(MOTOR_PORT)", "$(AXIS_NO)",)
>>
>> I hope that hopes a little bit.
>> /Torsten
>>
>>
>>
>> On 18/06/19 13:11, Davis, Mark via Tech-talk wrote:
>>>
>>> Can anyone provide an example of how to setup and use an Animatics 
>>> SmartMotor?
>>>
>>>   From what I could figure out looking at the code, I expect it is
>>> something along these lines:
>>>
>>> # For a connection via a Moxa Ethernet-to-serial adapter:
>>> drvAsynIPPortConfigure("TapeStation", "192.168.137.99:4001")
>>>
>>> # SmartMotorSetup(maxCtlrCount, pollRate) SmartMotorSetup(1, 5)
>>>
>>> # SmartMotorConfig(cardNum, "asynPortName") SmartMotorConfig(0,
>>> "TapeStation")
>>>
>>>
>>> And then the motor record would look something like this:
>>>
>>> record(motor, "MyMotor")
>>> {
>>>     field(DTYP, "SmartMotor")
>>>     field(OUT,  "@0 TapeStation ????")
>>>     ...
>>> }
>>>
>>>
>>> Is that even close?  The one I am most unsure of is what to use for
>>> the OUT value in the motor record.
>>>
>>> Mark Davis
>>> NSCL/FRIB
>>>
>


References:
Animatics SmartMotor setup Davis, Mark via Tech-talk
Re: Animatics SmartMotor setup Torsten Bögershausen via Tech-talk
Re: Animatics SmartMotor setup Torsten Bögershausen via Tech-talk

Navigate by Date:
Prev: Re: Animatics SmartMotor setup Torsten Bögershausen via Tech-talk
Next: Re: Animatics SmartMotor setup Davis, Mark via Tech-talk
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  <20192020 
Navigate by Thread:
Prev: RE: Animatics SmartMotor setup Mark Rivers via Tech-talk
Next: Re: Animatics SmartMotor setup Davis, Mark via Tech-talk
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  <20192020 
ANJ, 18 Jun 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·