Most of the examples show both inputs and outputs. There's two different kinds of configuration for PDOs that you set up in advance:
* You need the core master library and the slave to agree on what PDOs are enabled in their Sync Managers. * This is what the examples refer to as "configuring PDOs" and is done via ecrt_slave_config_pdos. * This will update the PDO Assign registers, and (for the rare case of a slave that has fully reconfigurable PDOs) the PDO registers themselves. * 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. * 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. * This is what the examples refer to as "registering PDOs" and is done via ecrt_domain_reg_pdo_entry_list. * 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. * It *is* 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. * 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. * 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. 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. 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. From: Montgomery-Smith, Stephen [mailto:step...@missouri.edu] Sent: Thursday, 29 March 2018 10:15 Subject: Re: Please help newbie to etherlab with setting PDOs 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. You were correct - all I had to do was activate the master, and then wait a while. 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? Is there an example program which involves both input and output? 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.) On 03/18/2018 05:49 PM, Gavin Lambert wrote: 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). Have a look at the dc_user and other example programs for examples of slave configuration. From: Montgomery-Smith, Stephen Sent: Saturday, 17 March 2018 09:21 To: etherlab-users@etherlab.org<mailto:etherlab-users@etherlab.org> Subject: [etherlab-users] Please help newbie to etherlab with setting PDOs I am trying out etherlab to connect my computer to a Parker Hannifin motor controller - you can read about it here: http://www.parker.com/Literature/Electromechanical%20North%20America/CATALOGS-BROCHURES/PSeries/PSeries_UG_EtherCAT_A.pdf 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? (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.) Output of my program: Output PDO 0x1601 with 4 entries: PDO entry 0: 0x6040 0 16 PDO entry 1: 0x607a 0 32 PDO entry 2: 0x60b8 0 16 PDO entry 3: 0x60fe 1 32 Input PDO 0x1a01 with 6 entries: PDO entry 0: 0x6041 0 16 PDO entry 1: 0x6064 0 32 PDO entry 2: 0x60f4 0 32 PDO entry 3: 0x60b9 0 16 PDO entry 4: 0x60ba 0 32 PDO entry 5: 0x60fd 0 32 Thanks, Stephen
_______________________________________________ etherlab-users mailing list etherlab-users@etherlab.org http://lists.etherlab.org/mailman/listinfo/etherlab-users