Hi Graeme,

Thanks for the info & suggestions.
We are using the latest loader, so apparently no retry mechanism there.

In light of your info/suggestions I would currently put my money on
twincat internally sending a counter of 0 over the slave network even
if it is a request designated for the master. If this is the case for
twincat the 1001 slave counter would be at 3. I will check this
a.s.a.p. with wireshark to verify (or find out it is something else).
Either way, I will report back with the results.

Regards,
Mark

On Tue, Mar 30, 2021 at 1:25 AM Graeme Foot <graeme.f...@touchcut.com> wrote:
>
> Hi Mark,
>
>
>
> The mbg readme has the following note:
>
>   The Mailbox Header has a Cnt parameter (bits 5-7 of the last byte
>
>   of the header).  If this value is zero the slave should always
>
>   accept the incoming mailbox request.  If the value is non-zero (1-7)
>
>   then the slave will only accept the request if the value is different
>
>   to the previous mailbox request Cnt value.
>
>
>
> (I can’t dig up where I got this information at the moment.)
>
>
>
> Comparing the logs the Cnt values sent by the TwinSAFE Loader are the same in 
> both cases.  However the Cnt value responses from the device 1001 differ.  In 
> the TwinCAT side the sent Cnt value does not clash with the slaves internal 
> Cnt value, whereas on the etherlab mbg side it does.
>
>
>
> i.e. the 1001 response reply for the el side is:
>
> 2 -> 1
>
> 3 -> 2
>
> ...
>
> 3 -> timeout
>
>
>
> So I suspect the slaves internal Cnt value is 3, so on receiving a request 
> with 3 means it thinks it’s a duplicate and is ignored.  So it looks like it 
> is bad luck.  It looks like TwinCAT has previously communicated with device 
> 1001 so it’s count is misaligned enough not to have a problem.
>
>
>
> You could do a trial on the TwinCAT side by sending approx. 5 CoE mailbox 
> calls to the 1001 device so that it’s internal counter is the same as the 
> etherlab mbg start condition and see how TwinCAT deals with the problem (you 
> could log the EtherCAT slave network with Wire Shark.)  It’s also possible 
> TwinCAT just internally sends a cnt value of 0.
>
>
>
> You could also check you’ve got the latest TwinSAFE loader.  The latest 
> version might have its own retry built in (or not).
>
>
>
>
>
> Regards,
>
> Graeme.
>
>
>
> From: Etherlab-dev <etherlab-dev-boun...@etherlab.org> On Behalf Of Mark 
> Verrijt
> Sent: Saturday, 27 March 2021 5:13 am
> To: etherlab-dev@etherlab.org
> Subject: [Etherlab-dev] Ethercat mailbox gateway and TwinSAFE loader issues
>
>
>
> Hi,
>
> We ran into some problems using ethercat_mbg together with the TwinSAFE 
> loader and found some stuff that may be of interest to others aswell:
>
> This setup does work:
> 0  0:0  PREOP  +  EK1100
> 1  0:1  PREOP  +  EL6910, TwinSAFE PLC
> while this setup does NOT work (fails with a timeout when using loader with 
> --list):
> 0  0:0  PREOP  +  EK1100
> 1  0:1  PREOP  +  EL6910, TwinSAFE PLC
> 2  0:2  PREOP  +  EK1110 EtherCAT-Verl�ngerung
>
> I checked what was happening with wireshark when using the twincat 
> master+mbg, and compared it to what I saw whilst using the ethercat 
> master+mbg for etherlab.
>
> 1. With twincat I see that when a request is done to the master via the mbg 
> it responds with a Cnt value (bits [4-6] of last byte of the mailbox header) 
> of 0. With etherlab mbg this value is increasing with each next message, 
> which also seems to be fine. I could not find in the spec Graeme used 
> (https://www.ethercat.org/memberarea/download/ETG8200_V1i0i0_G_R_MailboxGateway.pdf)
>  what it should do.
>
> 2. When a request is done to the master via the mbg a response shorter than 
> 16 bytes will be zero padded to make it equal to 16 bytes with twincat mbg, 
> etherlab mbg simply sends a shorter message, which also seems to be fine.
>
> 3. A difference of more importance: There is a discrepancy between the way 
> the Cnt value is updated for the two different master+mbg combinations. In 
> some situations this causes a timeout because the request Cnt (coming from 
> the loader) is equal to the slave Cnt value, which the slave will ignore and 
> thus a timeout occurs. I have added the raw data tracing for both the 
> master+mbg combinations if anybody is interested.
>
> I'm not quite sure where to properly fix this, and am thus asking for some 
> advice/help.
>
>
>
> For now I made a retry work-around in the CommandMbg class which simply 
> retires once with a different Cnt value in the request (Cnt-1 and wrapped to 
> 1-7) which "solves" the problem. I have attached it as a patch.
>
>
>
> I myself would like a clean fix however. If somebody could point me in the 
> right direction I would be grateful.
>
>
>
> Kind regards,
>
> Mark
-- 
Etherlab-dev mailing list
Etherlab-dev@etherlab.org
https://lists.etherlab.org/mailman/listinfo/etherlab-dev

Reply via email to