<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: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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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:1960331132;
        mso-list-type:hybrid;
        mso-list-template-ids:-2147186082 1071793582 336134147 336134149 336134145 336134147 336134149 336134145 336134147 336134149;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:Calibri;}
@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 bgcolor="white" lang="EN-NZ" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:windowtext">Most of the examples show both inputs and outputs.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext">There’s two different kinds of configuration for PDOs that you set up in advance:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level1 lfo1">
You need the core master library and the slave to agree on what PDOs are enabled in their Sync Managers.<span style="mso-fareast-language:EN-US"><o:p></o:p></span>
<ul style="margin-top:0cm" type="circle">
<li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
This is what the examples refer to as “configuring PDOs” and is done via ecrt_slave_config_pdos.<span style="mso-fareast-language:EN-US"><o:p></o:p></span></li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
This will update the PDO Assign registers, and (for the rare case of a slave that has fully reconfigurable PDOs) the PDO registers themselves.<span style="mso-fareast-language:EN-US"><o:p></o:p></span></li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
This is somewhat optional for slaves with fixed PDO assignments, but it’s still a good idea to do this as it allows defining a domain for slaves that aren’t yet online for whatever reason.<span style="mso-fareast-language:EN-US"><o:p></o:p></span></li></ul>
</li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level1 lfo1">
You need your master app to know where to actually read/write the data in cyclic operation, and to associate an SM with a domain.<span style="mso-fareast-language:EN-US"><o:p></o:p></span>
<ul style="margin-top:0cm" type="circle">
<li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
This is what the examples refer to as “registering PDOs” and is done via ecrt_domain_reg_pdo_entry_list.<o:p></o:p></li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
It is technically sufficient to register only one entry in each PDO, as the other entries in the same PDO should always have contiguous memory layout (which you already know since you had to specify it when configuring the PDOs).  However it can be convenient
 to register several or all since this will give you explicit pointers to each entry.<o:p></o:p></li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
It *<b>is</b>* required to register at least one entry in each PDO that you will be reading/writing, as it is not safe to assume that the PDOs will actually be received/transmitted in the order that you configured.<o:p></o:p></li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
It is harmless to not register some PDO that you will not actually be reading or writing – it will still end up in the SM and domain by virtue of the PDO configuration.<o:p></o:p></li><li class="MsoListParagraph" style="color:windowtext;margin-left:0cm;mso-list:l0 level2 lfo1">
This also lets you associate a PDO with a domain, although note that you have to take the SM into account as well.  All PDOs in one SM must be in the same domain; PDOs in separate SMs may be either in the same or separate domains.<o:p></o:p></li></ul>
</li></ul>
<p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext">The ETG documentation should give you a good grounding in the fundamentals of EtherCAT (such as SMs, PDOs, entries, DC), although it can be tricky to find the right documents – the official standards are mostly
 impenetrable and you may have better luck reading other more informal documents.  Beckhoff also has some fairly good documents to get a good grounding in EtherCAT in general.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext">Though you do need that initial grounding in EtherCAT to understand Etherlab, none of those documents will directly help you with the Etherlab library; while it does of course implement an EtherCAT master
 and so does share the same underlying fundamentals, the exact APIs involved and how to use them are unique to Etherlab.  There is, however, a fairly good manual included with the library; some places are a little out of date but it should still give you a
 good idea how to get started.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext"> </span><span style="color:windowtext;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="color:windowtext">From:</span></b><span lang="EN-US" style="color:windowtext"> Montgomery-Smith, Stephen [mailto:stephen@missouri.edu]
<br>
<b>Sent:</b> Thursday, 29 March 2018 10:15<br>
<b>Subject:</b> Re: Please help newbie to etherlab with setting PDOs<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Thank you for your response.  Sorry for the late response, but I was only able to try it out today because of life was so busy.<br>
<br>
You were correct - all I had to do was activate the master, and then wait a while.<br>
<br>
I looked at the dc_user example.  What is registering PDOs all about?  Do I just need to register one of the registers in a PDO mapping, or do I need to register all of them?  I noticed that registering just one from each PDO mapping made the domain_data_size
 correct.  I have one PDO mapping for input and one PDO mapping for output.  Should I create two different domains for each PDO mapping?  Or can I use both PDO mappings with one domain?<br>
<br>
Is there an example program which involves both input and output?<br>
<br>
Is there documentation on the Ethercat User Group website that could help me sort this all out?  (I have membership, so I can look at everything they have.)<br>
<br>
On 03/18/2018 05:49 PM, Gavin Lambert wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">Your custom configuration is not applied to the slave until you activate the master.  After that you can confirm the settings using “ethercat pdos” or those methods (though note that it does not happen immediately – there will be some delay
 before the slave is actually configured).<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Have a look at the dc_user and other example programs for examples of slave configuration.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Montgomery-Smith, Stephen<br>
<b>Sent:</b> Saturday, 17 March 2018 09:21<br>
<b>To:</b> <a href="mailto:etherlab-users@etherlab.org">etherlab-users@etherlab.org</a><br>
<b>Subject:</b> [etherlab-users] Please help newbie to etherlab with setting PDOs</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<div id="divtagdefaultwrapper">
<p><span style="font-size:12.0pt">I am trying out etherlab to connect my computer to a Parker Hannifin motor controller - you can read about it here:
<a href="http://www.parker.com/Literature/Electromechanical%20North%20America/CATALOGS-BROCHURES/PSeries/PSeries_UG_EtherCAT_A.pdf">
http://www.parker.com/Literature/Electromechanical%20North%20America/CATALOGS-BROCHURES/PSeries/PSeries_UG_EtherCAT_A.pdf</a></span><o:p></o:p></p>
<p><span style="font-size:12.0pt"> </span><o:p></o:p></p>
<p><span style="font-size:12.0pt">I am trying to tell it to use a certain PDO, which on page 68 of the manual is called 1st PDO mapping.  I use the ecrt_slave_config_pdos function to tell it what PDO to use.  But whenever I run the program, and ask it to print
 out the PDO using ecrt_master_get_pdo and ecrt_master_get_pdo_entry, I get output that tells me it is using the 2nd PDO mapping (see below).  I feel like I am missing something.  Is there a good sample program that shows me how to set up something like this
 that I can copy?</span><o:p></o:p></p>
<p><span style="font-size:12.0pt"> </span><o:p></o:p></p>
<p><span style="font-size:12.0pt">(I have used EC-Master from Acontis, and I was able operate the controller using their software.  But I want to find an open source solution.)</span><o:p></o:p></p>
<p><span style="font-size:12.0pt"> </span><o:p></o:p></p>
<p><span style="font-size:12.0pt">Output of my program:</span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt">Output PDO 0x1601 with 4 entries:<br>
  PDO entry 0: 0x6040 0 16<br>
  PDO entry 1: 0x607a 0 32<br>
  PDO entry 2: 0x60b8 0 16<br>
  PDO entry 3: 0x60fe 1 32<br>
Input PDO 0x1a01 with 6 entries:<br>
  PDO entry 0: 0x6041 0 16<br>
  PDO entry 1: 0x6064 0 32<br>
  PDO entry 2: 0x60f4 0 32<br>
  PDO entry 3: 0x60b9 0 16<br>
  PDO entry 4: 0x60ba 0 32<br>
  PDO entry 5: 0x60fd 0 32</span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt">Thanks, Stephen</span><o:p></o:p></p>
</div>
</div>
</blockquote>
<p><o:p> </o:p></p>
</div>
</div>
</body>
</html>