[etherlab-users] domain process data persistence

Thomas Paoloni thomas at digithom.it
Sat Oct 6 11:14:20 CEST 2012


Hi all,

even if I'm dealing with ethercat since more than one year, I'm in front 
of a very basic question ...
As from I can see, the data in master->slave direction in the domain_pd 
area are not preserved from an update to another.
I'mean that I need to write out data to domain_pd area at each cycle, 
even if I data is not changed and theoretically I don't need to update 
some parts of the pdo area.

Just applying this to the basic example in examples/user

void cyclic_task()
{
     int i;

     // receive process data
     ecrt_master_receive(master);
     ecrt_domain_process(domain1);

     // check process data state (optional)
     check_domain1_state();

     if (counter) {
         counter--;
     } else { // do this at 1 Hz
         counter = FREQUENCY;

         // calculate new process data
         blink = !blink;
     }

     EC_WRITE_U8(domain1_pd + off_dig_out, blink ? 0x06 : 0x09);

     // send process data
     ecrt_domain_queue(domain1);
     ecrt_master_send(master);
}


moving the EC_WRITE_U8 inside the if condition (after the blink=!blink) 
will not work, because the blink bit is cleared from the pdo area after 
the process data has been sent.

This means that I should keep a copy of the process data and write it on 
the domain1_pd each time.
Is this right or I'm missing something ?


Thanks,
Thomas.





More information about the Etherlab-users mailing list