[etherlab-users] Distributed Clock with Yaskawa SGDV drives

Henry Bausley hbausley at deltatau.com
Fri Mar 9 01:03:50 CET 2012


My cyclic thread really isn't a thread.  My cycles start based upon a
real hardware interrupt clock from hardware we designed. So overrun
wouldn't apply.

ie. in my kernel driver I have

HardwarerInterruptServiceRoutine()
{
  DoLocalServos....
  if (EcatEnable = 1)
  {
    ecrt_master_recv()
    ecrt_master_send()
  }
}


ioctl(struct inode *inode, struct file *file,
                        unsigned int cmd, unsigned long arg)
{
  case ECATENABLE:
   ecrt_master_activate()
   pdata = ecrt_domain_data();
   EcatEnable = 1
  break;
}

In user space

 fd = open 
 ioctl(fd,ECATENABLE,0)


I'm not in a position at this time to measure ecrt_master_activate but I
will when I get a chance.

On Fri, 2012-03-09 at 11:31 +1300, Graeme Foot wrote:
> I think that's the main difference then.  In user space
> ecrt_master_activate() can't be called from a hard realtime thread
> (RTAI).  So the two options are:
> - call it before making the thread hard rt
> - call it in a parallel non-hard rt thread
> 
> How long do you find that your call ecrt_master_activate() takes?  Mine
> is taking 2-3ms.  Does it cause your cyclic thread period to overrun?
> 
> Graeme.
> 
> 
> 
> -----Original Message-----
> From: Henry Bausley [mailto:hbausley at deltatau.com] 
> Sent: Friday, 9 March 2012 11:05
> To: Graeme Foot
> Cc: etherlab-users at etherlab.org
> Subject: RE: [etherlab-users] Distributed Clock with Yaskawa SGDV drives
> 
> 
> The kernel module does contain the cyclic loop and it is always running.
> The kernel module also has an ioctl interface so when the user space app
> tells it to activate, the kernel module calls activate then sets some
> flags so that the cyclic loop starts sending and receiving at its next
> cycle.  In my case within 125usec - 500sec depending on the users setup.
> 
> On Fri, 2012-03-09 at 10:40 +1300, Graeme Foot wrote:
> > Hi,
> > 
> > I'm not using any kernel side modules.  It sounds like what I'm doing
> is
> > effectively the same, where there are two threads, one (hard rt) for
> the
> > data cycle and the other to call ecrt_master_activate().  The cycle
> > thread signals the ecrt_master_activate() thread when the master
> should
> > be activated (on the very first cycle), whereas in your case your
> cycle
> > thread is signalling to a kernel module instead.
> > 
> > Or is your kernel module doing the data cycle and the
> > ecrt_master_activate() in one?
> > 
> > I'm being very conservative with my soft to hard transition delay
> > (~50ms) to ensure I don't miss the first wakeup.
> > 
> > I also only enable the drive once in cyclic mode (and the drive has
> > reached OP mode).
> > 
> > I've also replied to Florian with a bit more info.
> > 
> > Graeme.
> > 
> > 
> > -----Original Message-----
> > From: Henry Bausley [mailto:hbausley at deltatau.com] 
> > Sent: Friday, 9 March 2012 08:58
> > To: Graeme Foot
> > Cc: etherlab-users at etherlab.org
> > Subject: Re: [etherlab-users] Distributed Clock with Yaskawa SGDV
> drives
> > 
> > Graeme,
> > 
> >   I have always called ecrt_master_activate in my xenomai kernel
> driver.
> > That same xenomai kernel driver has its cyclic loop running all the
> time
> > but waits for a flag indicating whether to start ethercat activity.
> > 
> >   I trigger the kernel driver call to ecrt_master_activate with a user
> > space application that makes an ioctl call to the xenomai kernel
> > driver. 
> > 
> >   Using this methodology I don't have the "soft" to "hard" delay you
> > describe and have not ever seen the errors you described with the
> SGDV.
> > Also I always enable the drive when in cyclic mode ie. index 6040  =
> > 0x80 -> 6 -> 7 -> 15 . 
> > 
> >  
> >   
> > 
> > 
> > On Thu, 2012-03-08 at 17:01 +0100, Florian Pose wrote:
> > > -----BEGIN PGP SIGNED MESSAGE-----
> > > Hash: SHA1
> > > 
> > > Hi,
> > > 
> > > Am 23.02.2012 23:58, schrieb Graeme Foot:
> > > > I configure my amps to use cyclic position mode which requires the
> > > > pdo data to arrive consistently.  In the time it takes to go from
> > > > soft to hard rt the amps often miss too many pdo datagrams and
> they
> > > > were raising the alarm A12 (Sync Error).
> > > 
> > > ecrt_master_activate() is intended to be called when no slaves are
> > > operational and there is no necessarity to have any meaningful
> > > operation anyway. Why are your slaves complaining when they are not
> in
> > > operation yet? They should checks for sync errors earliest when in
> > > SAFEOP state.
> > > 
> > > - --
> > > Regards,
> > > Florian
> > > -----BEGIN PGP SIGNATURE-----
> > > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> > > 
> > > iEYEARECAAYFAk9Y19YACgkQABFOIMygR8yOUgCfQFmLKM4LByWMzPrpiAmMoW3F
> > > gu0An06I0j0Y+satXo9OAVmby5aamLnD
> > > =WxIg
> > > -----END PGP SIGNATURE-----
> > > _______________________________________________
> > > etherlab-users mailing list
> > > etherlab-users at etherlab.org
> > > http://lists.etherlab.org/mailman/listinfo/etherlab-users
> > 
> > 
> > 
> > 
> > 
> > Outbound scan for Spam or Virus by Barracuda at Delta Tau
> > 
> 
> 
> 






More information about the Etherlab-users mailing list