<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:515078321;
mso-list-type:hybrid;
mso-list-template-ids:-944440156 336134145 336134147 336134149 336134145 336134147 336134149 336134145 336134147 336134149;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-NZ" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We are trying to get a Kjellberg Q3000 plasma slave up and running in our system. Unfortunately it is getting to SAFEOP and going to SAFEOP + Error. Also while in SAFEOP it drops 1 or two packets out of three, causing the master to enter
an endless rescan loop. The Q3000 gets to OP successfully under TwinCAT. I have wireshark logs of both startup sequences and can’t find anything obvious that is causing the issue.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">I’m using the 1.5.2 master with the GavinL patchset.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">I have enabled the --enable-regalias option as this slave uses the 0x0012 register to specify the slave alias.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">There are errors in the slaves SII. I have generated an SII using TwinCAT and I’m loading it via the firmware loading patch (using EC_SII_OVERRIDE). As far as I can tell it is correct.
(I needed to increase the esi files Eeprom ByteSize to 4096 so that it would include the categories information, as per:
<a href="https://etherlab.org/en/ethercat/faq.php">https://etherlab.org/en/ethercat/faq.php</a>). I’ve attached the SII bin file in case anyone is interested.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">I gather the slave firmware uses the ET9300 slave stack code version 5.10.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">The slave allows LWR (i.e. both read and write data in the same domain)<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">It supports distributed clocks, but not DC Sync.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">It looks like TwinCAT configures the read and write domain data to overlap. Our master does not.<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The Sync manager config is the same between TwinCAT and EtherLab<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">SM0: 0010800026000100<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">SM1: 0014800022000100<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">SM2: 0018250064000100<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">SM3: 001c410020000100<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The FMMU config is mostly the same, the only difference I can see is the virtual start address and that they overlap<o:p></o:p></p>
<p class="MsoNormal">TwinCAT:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">FMMU0: <span style="background:yellow;mso-highlight:yellow">
00000001</span>250000070018000201000000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">FMMU1: <span style="background:yellow;mso-highlight:yellow">
00000001</span>41000007001c000101000000<o:p></o:p></span></p>
<p class="MsoNormal">EtherLab:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">FMMU0: <span style="background:yellow;mso-highlight:yellow">
0f000000</span>250000070018000201000000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">FMMU1: <span style="background:yellow;mso-highlight:yellow">
34000000</span>41000007001c000101000000<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">TwinCAT also sets up a third FMMU for what I assume is a slave working counter status domain.<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">FMMU2: 00000009010000000d08000101000000<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">One thing that the TwinCAT master does that EtherLab does not is set the “Error Ack” flag to true when requesting a slave state change. E.g.:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">EtherCAT datagram: Cmd: 'APWR' (2), Len: 2, Adp 0x1, Ado 0x120, Cnt 1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> Header<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> AL Ctrl (0x120): 0x0011, Al Ctrl: INIT, Error Ack<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> .... .... .... 0001 = Al Ctrl: INIT (0x1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> <span style="background:yellow;mso-highlight:yellow">
.... .... ...1 .... = Error Ack: True</span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> .... .... ..0. .... = Id: False<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> Working Cnt: 1<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve attached the esi file. As far as I can tell there’s nothing particularly special about the slave. We are using the Q3000 (460-480V) slave (ProductCode="#x00003023"), but they are all the same configuration.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Tomorrow I’ll try patching the master to set the Error Ack flag in the INIT state change datagram, but apart from that I’m currently out of ideas for things to try. Does anyone have any other ideas from problem slaves you’ve encountered?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Graeme Foot<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>