<html><body>
<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Hi Gavin,</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">thanks for your answer.</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">I modified the user example from the EtherCAT Master.</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">With the actual code I get to be on pre-operational state the Phoenix Contact Can slave (it was on error before the SDO configuration).</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">The problem it's on the Can Master, it get into PREOP+ERROR when it's going to OP.</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">This is the main.c code that I'm using.</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
<div><br />
#include <errno.h><br />
#include <signal.h><br />
#include <stdio.h><br />
#include <string.h><br />
#include <time.h><br />
#include <sched.h><br />
#include <sys/resource.h><br />
#include <sys/time.h><br />
#include <sys/types.h><br />
#include <unistd.h><br />
#include <sys/mman.h><br />
#include <pthread.h></div>

<div>/****************************************************************************/</div>

<div>#include "ecrt.h"</div>

<div>/****************************************************************************/</div>

<div>// Application parameters<br />
#define FREQUENCY 10<br />
#define PRIORITY 1</div>

<div>// Optional features<br />
#define CONFIGURE_PDOS  1<br />
#define SDO_ACCESS      0</div>

<div>/****************************************************************************/</div>

<div>// EtherCAT<br />
static ec_master_t *master = NULL;<br />
static ec_master_state_t master_state = {};</div>

<div>static ec_domain_t *domain1 = NULL;<br />
static ec_domain_state_t domain1_state = {};</div>

<div>static ec_slave_config_t *sc_EL2602_dig_out = NULL;<br />
static ec_slave_config_state_t sc_EL2602_dig_out_state = {};</div>

<div>static ec_slave_config_t *sc_EL2008_dig_out = NULL;<br />
static ec_slave_config_state_t sc_EL2008_dig_out_state = {};</div>

<div>static ec_slave_config_t *sc_EL3202_ana_in = NULL;<br />
static ec_slave_config_state_t sc_EL3202_ana_in_state = {};</div>

<div>static ec_slave_config_t *sc_EL6751_Canopen = NULL;<br />
static ec_slave_config_state_t sc_EL6751_Canopen_state = {};</div>

<div><br />
// CanOpen Master configuration.<br />
// Got it from the StartUp SDO from TwinCAT</div>

<div>const char *pb_config_master_0x1C32=<br />
    "0300010000093D0000000000";<br />
const char *pb_config_master_0x1C33 =<br />
    "030022000000000000000000";</div>

<div>const char *pb_config_master_0xf800 =<br />
    "0A007F0380001E00010010006400";</div>

<div>const char *pb_config_master_0x8000 =<br />
    "2B000700000000000000000000000000000000009101030084"<br />
    "00000001000001000000000000000000000000000000000000"<br />
    "00006400030000000000010178000A00";<br />
const char *pb_config_master_0x8001 =<br />
    "010001000000FF018701000000000018";</div>

<div>const char *pb_config_master_0x8002 =<br />
    "010000000000FF040702000000000014";</div>

<div>const char *pb_config_master_0x8003 =<br />
    "10000018010400870100000018020100FF0118010400870200"<br />
    "000118020100FF0218010400870300000218020100FF031801"<br />
    "0400870400000318020100FF00140104000702000000140201"<br />
    "00FF0114010400070300000114020100FF0214010400070400"<br />
    "000214020100FF0314010400070500000314020100FF";</div>

<div>/*----------------------*/</div>

<div><br />
// Timer<br />
static unsigned int sig_alarms = 0;<br />
static unsigned int user_alarms = 0;</div>

<div>// User Application Vars<br />
int num;<br />
short niTemp = 0;<br />
short nFlag = 0;<br />
short nInit = 0;<br />
static short nLimitMax = 320; <br />
static short nLimitMin = 300;</div>

<div>int nPT100_1 = 0;<br />
int nPT100_2 = 0;</div>

<div><br />
/****************************************************************************/</div>

<div>// process data<br />
static uint8_t *domain1_pd = NULL;</div>

<div>// Posición de Elementos (Igual es preferible la designación por nombre de <br />
// terminal EK1100_Pos por ejemplo)</div>

<div>#define EK1100Pos 0, 0<br />
#define EL2602Pos 0, 1<br />
#define EL3202Pos 0, 2<br />
#define EL2008Pos 0, 3<br />
#define EL6751Pos 0, 4</div>

<div>// Definición de info del producto, VendorID y ProductNum<br />
#define Beckhoff_EK1100 0x00000002, 0x044c2c52<br />
#define Beckhoff_EL2602 0x00000002, 0x0a2a3052<br />
#define Beckhoff_EL2008 0x00000002, 0x07d83052<br />
#define Beckhoff_EL3202 0x00000002, 0x0c823052<br />
#define Beckhoff_EL6751 0x00000002, 0x1a5f3052</div>

<div><br />
// offsets for PDO entries<br />
static unsigned int off_ana_in_value;<br />
static unsigned int off_ana_in_status;<br />
static unsigned int off_ana_in_value2;<br />
static unsigned int off_ana_in_status2;<br />
static unsigned int off_EL2602_dig_out;<br />
static unsigned int off_EL2008_dig_out;<br />
static unsigned int off_in_CanMaster;<br />
static unsigned int off_out_CanMaster;</div>

<div>// Se identifican los PDOs correspondientes a cada elemento. La dirección<br />
// del Indice es 0x7000, si es Output, o 0x6000 si es Input. Si existen más E/S<br />
// se van situando en saltos de 10: 0x6010, 0x7010 etc ... El subindice <br />
// se localiza con un CSTRUCT pudiendo darse en Decimal o Hexadecimal<br />
 <br />
const static ec_pdo_entry_reg_t domain1_regs[] = {</div>

<div>    {EL2602Pos, Beckhoff_EL2602, 0x7000, 0x01, &off_EL2602_dig_out},<br />
    {EL2008Pos, Beckhoff_EL2008, 0x7000, 0x01, &off_EL2008_dig_out},<br />
    {EL3202Pos, Beckhoff_EL3202, 0x6000, 0x11, &off_ana_in_value},<br />
    {EL3202Pos, Beckhoff_EL3202, 0x6010, 0x11, &off_ana_in_value2},<br />
    {EL3202Pos, Beckhoff_EL3202, 0x6000, 0x01, &off_ana_in_status},<br />
    {EL3202Pos, Beckhoff_EL3202, 0x6000, 0x01, &off_ana_in_status2},<br />
    {EL6751Pos, Beckhoff_EL6751, 0x7000, 0x01, &off_out_CanMaster},<br />
    {EL6751Pos, Beckhoff_EL6751, 0x6000, 0x01, &off_in_CanMaster},<br />
    {}<br />
};</div>

<div>static unsigned int counter = 0;</div>

<div>/*****************************************************************************/</div>

<div>#if CONFIGURE_PDOS</div>

<div>// Analog in --------------------------<br />
/* Master 0, Slave 2, "EL3202-0010"<br />
 * Vendor ID:       0x00000002<br />
 * Product code:    0x0c823052<br />
 * Revision number: 0x0014000a<br />
 */</div>

<div>ec_pdo_entry_info_t slave_2_pdo_entries[] = {<br />
    {0x6000, 0x01, 1}, /* Underrange */<br />
    {0x6000, 0x02, 1}, /* Overrange */<br />
    {0x6000, 0x03, 2}, /* Limit 1 */<br />
    {0x6000, 0x05, 2}, /* Limit 2 */<br />
    {0x6000, 0x07, 1}, /* Error */<br />
    {0x0000, 0x00, 7}, /* Gap */<br />
    {0x1800, 0x07, 1}, // TxPDO State<br />
    {0x1800, 0x09, 1}, // TxPDO Toggle<br />
    {0x6000, 0x11, 16}, /* Value */    // PT100 Sensor 1<br />
    {0x6010, 0x01, 1}, /* Underrange */<br />
    {0x6010, 0x02, 1}, /* Overrange */<br />
    {0x6010, 0x03, 2}, /* Limit 1 */<br />
    {0x6010, 0x05, 2}, /* Limit 2 */<br />
    {0x6010, 0x07, 1}, /* Error */<br />
    {0x0000, 0x00, 7}, /* Gap */<br />
    {0x1801, 0x07, 1},<br />
    {0x1801, 0x09, 1},<br />
    {0x6010, 0x11, 16}, /* Value */    // PT100 Sensor 2<br />
};</div>

<div>ec_pdo_info_t slave_2_pdos[] = {<br />
    {0x1a00, 9, slave_2_pdo_entries + 0}, /* RTD TxPDO-Map Ch.1 */<br />
    {0x1a01, 9, slave_2_pdo_entries + 9}, /* RTD TxPDO-Map Ch.2 */<br />
};</div>

<div>ec_sync_info_t slave_2_syncs[] = {<br />
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},<br />
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<br />
    {2, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},<br />
    {3, EC_DIR_INPUT, 2, slave_2_pdos + 0, EC_WD_DISABLE},<br />
    {0xff}<br />
};</div>

<div>// Analog out -------------------------</div>

<div>// Digital out ------------------------</div>

<div>/*****/<br />
/* Master 0, Slave 1, "EL2602"<br />
 * Vendor ID:       0x00000002<br />
 * Product code:    0x0a2a3052<br />
 * Revision number: 0x00120000<br />
 */</div>

<div>ec_pdo_entry_info_t slave_1_pdo_entries[] = {<br />
    {0x7000, 0x01, 1}, /* Output Fun and Valve*/<br />
    {0x7010, 0x01, 1}, /* Output */<br />
};</div>

<div>ec_pdo_info_t slave_1_pdos[] = {<br />
    {0x1600, 1, slave_1_pdo_entries + 0}, /* Channel 1 */<br />
    {0x1601, 1, slave_1_pdo_entries + 1}, /* Channel 2 */<br />
};</div>

<div>ec_sync_info_t slave_1_syncs[] = {<br />
    {0, EC_DIR_OUTPUT, 2, slave_1_pdos + 0, EC_WD_ENABLE},<br />
    {0xff}<br />
};</div>

<div>/* Master 0, Slave 3, "EL2008"<br />
 * Vendor ID:       0x00000002<br />
 * Product code:    0x07d83052<br />
 * Revision number: 0x00110000<br />
 */</div>

<div>ec_pdo_entry_info_t slave_3_pdo_entries[] = {<br />
    {0x7000, 0x01, 1}, /* Output */<br />
    {0x7010, 0x01, 1}, /* Output */<br />
    {0x7020, 0x01, 1}, /* Output */    // Relay 1<br />
    {0x7030, 0x01, 1}, /* Output */    // Relay 2<br />
    {0x7040, 0x01, 1}, /* Output */    // Relay 3<br />
    {0x7050, 0x01, 1}, /* Output */    // Relay 4<br />
    {0x7060, 0x01, 1}, /* Output */    // Relay 5<br />
    {0x7070, 0x01, 1}, /* Output */<br />
};</div>

<div>ec_pdo_info_t slave_3_pdos[] = {<br />
    {0x1600, 1, slave_3_pdo_entries + 0}, /* Channel 1 */<br />
    {0x1601, 1, slave_3_pdo_entries + 1}, /* Channel 2 */<br />
    {0x1602, 1, slave_3_pdo_entries + 2}, /* Channel 3 */<br />
    {0x1603, 1, slave_3_pdo_entries + 3}, /* Channel 4 */<br />
    {0x1604, 1, slave_3_pdo_entries + 4}, /* Channel 5 */<br />
    {0x1605, 1, slave_3_pdo_entries + 5}, /* Channel 6 */<br />
    {0x1606, 1, slave_3_pdo_entries + 6}, /* Channel 7 */<br />
    {0x1607, 1, slave_3_pdo_entries + 7}, /* Channel 8 */<br />
};</div>

<div>ec_sync_info_t slave_3_syncs[] = {<br />
    {0, EC_DIR_OUTPUT, 8, slave_3_pdos + 0, EC_WD_ENABLE},<br />
    {0xff}<br />
};<br />
// Comm Modules ----------------------------<br />
/* Master 0, Slave 4, "EL6751"<br />
 * Vendor ID:       0x00000002<br />
 * Product code:    0x1a5f3052<br />
 * Revision number: 0x00130000<br />
 */<br />
ec_pdo_entry_info_t slave_4_pdo_entries[] = {<br />
  { 0x6000, 1, 8 },    /* 1 */<br />
  { 0x7000, 1, 32 },   /* 0 */<br />
  { 0xA000, 1, 8 },    /* 2 */<br />
  { 0xA000, 2, 1 },    /* 2 */<br />
  { 0xF100, 1, 8 },    /* 3 */<br />
  { 0xF100, 2, 1 },    /* 3 */<br />
  { 0xF100, 3, 16 },   /* 4 */<br />
  { 0xF100, 5, 8 },    /* 5 */<br />
  { 0xF100, 4, 8 },    /* 5 */<br />
  { 0xA000, 2, 1 },    /* 6 */<br />
/*  { 0x0000, 0, 6 },*/<br />
};</div>

<div>ec_pdo_info_t slave_4_pdos[] = {<br />
    {0x1a00, 1, slave_4_pdo_entries + 0}, /* DPS TxPDO-Map Slave     */<br />
    {0x1600, 1, slave_4_pdo_entries + 1}, /* DPS RxPDO-Map Slave     */<br />
    {0x1a80, 8, slave_4_pdo_entries + 2},<br />
};</div>

<div>ec_sync_info_t slave_4_syncs[] = {<br />
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},<br />
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<br />
    {2, EC_DIR_OUTPUT, 1, slave_4_pdos + 0, EC_WD_DISABLE},<br />
    {3, EC_DIR_INPUT, 2, slave_4_pdos + 1, EC_WD_DISABLE},<br />
    {0xff}<br />
};</div>

<div>#endif</div>

<div>/*****************************************************************************/<br />
/* Helper funktion, buffer has be allocated and big enough */<br />
unsigned int strToCharArray(const char *str,unsigned char *buffer)<br />
    {<br />
        unsigned int i;<br />
        unsigned char byteVal;<br />
        //        const char *str = pb_config;<br />
        //        unsigned char cf_data[256];<br />
        size_t size = strlen(str);</div>

<div>        for (i = 0; i < size; i++) {<br />
            sscanf(str, "%2X", &byteVal);<br />
            str += 2;<br />
            buffer[i] = (uint8_t) byteVal;<br />
        }<br />
        return (size / 2);<br />
    }</div>

<div>/*****************************************************************************/<br />
/*****************************************************************************/</div>

<div>#if SDO_ACCESS<br />
static ec_sdo_request_t *sdo;<br />
#endif</div>

<div>/*****************************************************************************/</div>

<div>void check_domain1_state(void)<br />
{<br />
    ec_domain_state_t ds;</div>

<div>    ecrt_domain_state(domain1, &ds);</div>

<div>    if (ds.working_counter != domain1_state.working_counter)<br />
        printf("Domain1: WC %u.\n", ds.working_counter);<br />
    if (ds.wc_state != domain1_state.wc_state)<br />
        printf("Domain1: State %u.\n", ds.wc_state);</div>

<div>    domain1_state = ds;<br />
}</div>

<div>/*****************************************************************************/</div>

<div>void check_master_state(void)<br />
{<br />
    ec_master_state_t ms;</div>

<div>    ecrt_master_state(master, &ms);</div>

<div>    if (ms.slaves_responding != master_state.slaves_responding)<br />
        printf("%u slave(s).\n", ms.slaves_responding);<br />
    if (ms.al_states != master_state.al_states)<br />
        printf("AL states: 0x%02X.\n", ms.al_states);<br />
    if (ms.link_up != master_state.link_up)<br />
        printf("Link is %s.\n", ms.link_up ? "up" : "down");</div>

<div>    master_state = ms;<br />
}</div>

<div>/*****************************************************************************/</div>

<div>void check_slave_config_states(void)<br />
{<br />
    ec_slave_config_state_t s;</div>

<div>    ecrt_slave_config_state(sc_EL3202_ana_in, &s);</div>

<div>    if (s.al_state != sc_EL3202_ana_in_state.al_state)<br />
        printf("EL3202: State 0x%02X.\n", s.al_state);<br />
    if (s.online != sc_EL3202_ana_in_state.online)<br />
        printf("EL3202: %s.\n", s.online ? "online" : "offline");<br />
    if (s.operational != sc_EL3202_ana_in_state.operational)<br />
        printf("EL3202: %soperational.\n", s.operational ? "" : "Not ");</div>

<div>    sc_EL3202_ana_in_state = s;</div>

<div>    ecrt_slave_config_state(sc_EL2602_dig_out, &s);</div>

<div>    if (s.al_state != sc_EL2602_dig_out_state.al_state)<br />
        printf("EL2602: State 0x%02X.\n", s.al_state);<br />
    if (s.online != sc_EL2602_dig_out_state.online)<br />
        printf("EL2602: %s.\n", s.online ? "online" : "offline");<br />
    if (s.operational != sc_EL2602_dig_out_state.operational)<br />
        printf("EL2602: %soperational.\n", s.operational ? "" : "Not ");</div>

<div>    sc_EL2602_dig_out_state = s;</div>

<div>    ecrt_slave_config_state(sc_EL2008_dig_out, &s);</div>

<div>    if (s.al_state != sc_EL2008_dig_out_state.al_state)<br />
        printf("EL2008: State 0x%02X.\n", s.al_state);<br />
    if (s.online != sc_EL2008_dig_out_state.online)<br />
        printf("EL2008: %s.\n", s.online ? "online" : "offline");<br />
    if (s.operational != sc_EL2008_dig_out_state.operational)<br />
        printf("EL2008: %soperational.\n", s.operational ? "" : "Not ");</div>

<div>    sc_EL2008_dig_out_state = s;</div>

<div>    ecrt_slave_config_state(sc_EL6751_Canopen, &s);</div>

<div>    if (s.al_state != sc_EL6751_Canopen_state.al_state)<br />
        printf("EL6751: State 0x%02X.\n", s.al_state);<br />
    if (s.online != sc_EL6751_Canopen_state.online)<br />
        printf("EL6751: %s.\n", s.online ? "online" : "offline");<br />
    if (s.operational != sc_EL6751_Canopen_state.operational)<br />
        printf("EL6751: %soperational.\n", s.operational ? "" : "Not ");</div>

<div>    sc_EL6751_Canopen_state = s;</div>

<div><br />
}</div>

<div>/*****************************************************************************/</div>

<div>#if SDO_ACCESS<br />
void read_sdo(void)<br />
{<br />
    switch (ecrt_sdo_request_state(sdo)) {<br />
        case EC_REQUEST_UNUSED: // request was not used yet<br />
            ecrt_sdo_request_read(sdo); // trigger first read<br />
            break;<br />
        case EC_REQUEST_BUSY:<br />
            fprintf(stderr, "Still busy...\n");<br />
            break;<br />
        case EC_REQUEST_SUCCESS:<br />
            fprintf(stderr, "SDO value: 0x%04X\n",<br />
                    EC_READ_U16(ecrt_sdo_request_data(sdo)));<br />
            ecrt_sdo_request_read(sdo); // trigger next read<br />
            break;<br />
        case EC_REQUEST_ERROR:<br />
            fprintf(stderr, "Failed to read SDO!\n");<br />
            ecrt_sdo_request_read(sdo); // retry reading<br />
            break;<br />
    }<br />
}<br />
#endif</div>

<div>/****************************************************************************/<br />
//********************************CYCLIC TASK*******************************//<br />
void cyclic_task()<br />
{<br />
    // receive process data<br />
    ecrt_master_receive(master);<br />
    ecrt_domain_process(domain1);</div>

<div>    // check process data state (optional)<br />
    check_domain1_state();</div>

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

<div>        // check for master state (optional)<br />
        check_master_state();</div>

<div>        // check for islave configuration state(s) (optional)<br />
        check_slave_config_states();</div>

<div>#if SDO_ACCESS<br />
        // read process data SDO<br />
        read_sdo();<br />
#endif<br />
    }</div>

<div><br />
// Reading Analog Input & Writing Digital Output<br />
nPT100_1=EC_READ_U16(domain1_pd + off_ana_in_value);<br />
nPT100_2=EC_READ_U16(domain1_pd + off_ana_in_value2);</div>

<div>#if 1<br />
        switch (nFlag){<br />
        case 0:        // IDLE<br />
            if (nPT100_1 > nLimitMax) {<br />
                     EC_WRITE_BIT(domain1_pd+ off_EL2602_dig_out,0x00,1);    // Para escribir una salida u otra sumar 1 a off_dig_out<br />
             EC_WRITE_U32(domain1_pd + off_out_CanMaster + 1,0x55555555);<br />
                 nFlag=10;<br />
             printf("Temperature PT100_1 Reached the Max Limit -> Value: %u\n",<br />
                     EC_READ_U16(domain1_pd + off_ana_in_value));<br />
             printf("Status Value: %u\n",<br />
                     EC_READ_U8(domain1_pd + off_ana_in_status));<br />
                 printf("Funs and Valve Turned ON\n\n");<br />
                 }<br />
            if (nPT100_2 > nLimitMax) {<br />
                     EC_WRITE_BIT(domain1_pd+ off_EL2602_dig_out,0x00,1);    // Para escribir una salida u otra sumar 1 a off_dig_out<br />
             EC_WRITE_U32(domain1_pd + off_out_CanMaster + 1,0x00000000);<br />
                 nFlag=10;<br />
             printf("Temperature PT100_2 Reached the Max Limit -> Value: %u\n",<br />
                     EC_READ_U16(domain1_pd + off_ana_in_value2));<br />
             printf("Status Value: %u\n",<br />
                     EC_READ_U8(domain1_pd + off_ana_in_status2));<br />
                 printf("Funs and Valve Turned ON\n\n");<br />
                 }<br />
             break;<br />
        case 10:        // OverTemp<br />
            if ((nPT100_1 < nLimitMin)&&(nPT100_2 < nLimitMin)) {<br />
                    EC_WRITE_BIT(domain1_pd + off_EL2602_dig_out,0x00,0);<br />
                nFlag=0;<br />
            printf("Both Temperature Reached the Min Limit\n -> PT100_1 Value: %u || PT100_2 Value: %u \n",<br />
                    EC_READ_U16(domain1_pd + off_ana_in_value),EC_READ_U16(domain1_pd + off_ana_in_value2));<br />
                printf("Funs and Cooler Turned OFF\n\n");<br />
                   }<br />
                break;<br />
        }<br />
    EC_WRITE_BIT(domain1_pd + off_EL2008_dig_out, 0x02,0);<br />
    EC_WRITE_BIT(domain1_pd + off_EL2008_dig_out, 0x03,1);<br />
    EC_WRITE_BIT(domain1_pd + off_EL2008_dig_out, 0x04,0);<br />
    EC_WRITE_BIT(domain1_pd + off_EL2008_dig_out, 0x05,1);<br />
    EC_WRITE_BIT(domain1_pd + off_EL2008_dig_out, 0x06,0);<br />
    EC_WRITE_U32(domain1_pd + off_out_CanMaster + 1,0x55555555);<br />
    <br />
#endif<br />
    // send process data<br />
    ecrt_domain_queue(domain1);<br />
    ecrt_master_send(master);<br />
}</div>

<div>/****************************************************************************/</div>

<div>void signal_handler(int signum) {<br />
    switch (signum) {<br />
        case SIGALRM:<br />
            sig_alarms++;<br />
            break;<br />
    }<br />
}</div>

<div>/****************************************************************************/</div>

<div>//********************************MAIN***************************************//<br />
int main(int argc, char **argv)<br />
{<br />
    int cnt;<br />
    unsigned char pb_config_buf[256];</div>

<div>    ec_slave_config_t *sc;<br />
    struct sigaction sa;<br />
    struct itimerval tv;<br />
    fprintf(stderr,"Requesting Master 0 ...\n");<br />
    master = ecrt_request_master(0);<br />
    if (!master)<br />
        return -1;<br />
    fprintf(stderr,"Creating Domain 1 ...\n");<br />
    domain1 = ecrt_master_create_domain(master);<br />
    if (!domain1)<br />
        return -1;</div>

<div>    printf("Configuring PDOs...\n");</div>

<div>   if (!(sc = ecrt_master_slave_config(master, EK1100Pos, Beckhoff_EK1100))) {<br />
        fprintf(stderr, "Failed to get slave configuration.\n");<br />
        return -1;<br />
    }</div>

<div>    fprintf(stderr,"Getting EL2602 Configuration ...\n");<br />
    if (!(sc_EL2602_dig_out = ecrt_master_slave_config(<br />
                    master,EL2602Pos, Beckhoff_EL2602))) {<br />
        fprintf(stderr, "Failed to get slave configuration.\n");<br />
        return -1;<br />
    }</div>

<div>    printf("Configuring EL2602 PDOs...\n");<br />
    if (ecrt_slave_config_pdos(sc_EL2602_dig_out, EC_END, slave_1_syncs)) {<br />
        fprintf(stderr, "Failed to configure PDOs.\n");<br />
        return -1;<br />
    }</div>

<div>    fprintf(stderr,"Getting EL2008 Configuration ...\n");<br />
    if (!(sc_EL2008_dig_out = ecrt_master_slave_config(<br />
                    master,EL2008Pos, Beckhoff_EL2008))) {<br />
        fprintf(stderr, "Failed to get slave configuration.\n");<br />
        return -1;<br />
    }</div>

<div>    printf("Configuring EL2008 PDOs...\n");<br />
    if (ecrt_slave_config_pdos(sc_EL2008_dig_out, EC_END, slave_3_syncs)) {<br />
        fprintf(stderr, "Failed to configure PDOs.\n");<br />
        return -1;<br />
    }</div>

<div>    fprintf(stderr,"Getting EL3202 Configuration ...\n");<br />
    if (!(sc_EL3202_ana_in = ecrt_master_slave_config(<br />
                    master, EL3202Pos, Beckhoff_EL3202))) {<br />
        fprintf(stderr, "Failed to get slave configuration.\n");<br />
        return -1;<br />
    }</div>

<div>    printf("Configuring EL3202 PDOs...\n");<br />
    if (ecrt_slave_config_pdos(sc_EL3202_ana_in, EC_END, slave_2_syncs)) {<br />
        fprintf(stderr, "Failed to configure PDOs.\n");<br />
        return -1;<br />
    }</div>

<div><br />
    fprintf(stderr,"Getting EL6751 Configuration ...\n");<br />
    if (!(sc_EL6751_Canopen = ecrt_master_slave_config(<br />
                    master, EL6751Pos, Beckhoff_EL6751))) {<br />
        fprintf(stderr, "Failed to get slave configuration.\n");<br />
        return -1;<br />
    }</div>

<div>    fprintf(stderr,"Starting EL6751 Configuration ...\n");</div>

<div>    fprintf(stderr,"Proceeding 0x1C32 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0x1C32,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0x1C32, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"Proceeding 0x1C33 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0x1C33,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0x1C33, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"Proceeding 0xF800 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0xf800,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0xf800, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"Proceeding 0x8000 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0x8000,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0x8000, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"Proceeding 0x8001 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0x8001,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0x8001, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"Proceeding 0x8002 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0x8002,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0x8002, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"Proceeding 0x8003 wrinting ...\n");<br />
    cnt = strToCharArray(pb_config_master_0x8003,pb_config_buf);<br />
    ecrt_slave_config_complete_sdo(sc_EL6751_Canopen, 0x8003, pb_config_buf, cnt);</div>

<div>    fprintf(stderr,"EL6751 Configuration Ended ...\n");<br />
/*---------*/</div>

<div>    printf("Configuring EL6751 PDOs...\n");<br />
    if (ecrt_slave_config_pdos(sc_EL6751_Canopen, EC_END, slave_4_syncs)) {<br />
        fprintf(stderr, "Failed to configure PDOs.\n");<br />
        return -1;<br />
    }</div>

<div><br />
#if SDO_ACCESS<br />
    fprintf(stderr, "Creating SDO requests...\n");<br />
    if (!(sdo = ecrt_slave_config_create_sdo_request(sc_EL6751_Canopen, 0xF002, 3,2))) {<br />
        fprintf(stderr, "Failed to create SDO request.\n");<br />
        return -1;<br />
    }<br />
    ecrt_sdo_request_timeout(sdo, 500); // ms<br />
#endif</div>

<div>    // Create configuration for bus coupler<br />
    sc = ecrt_master_slave_config(master, EK1100Pos, Beckhoff_EK1100);<br />
    if (!sc)<br />
        return -1;</div>

<div>    if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) {<br />
        fprintf(stderr, "PDO entry registration failed!\n");<br />
        return -1;<br />
    }</div>

<div>    printf("Activating master...\n");<br />
    if (ecrt_master_activate(master))<br />
        return -1;</div>

<div>    if (!(domain1_pd = ecrt_domain_data(domain1))) {<br />
        return -1;<br />
    }</div>

<div>#if PRIORITY<br />
    pid_t pid = getpid();<br />
    if (setpriority(PRIO_PROCESS, pid, -19))<br />
        fprintf(stderr, "Warning: Failed to set priority: %s\n",<br />
                strerror(errno));<br />
#endif</div>

<div>    sa.sa_handler = signal_handler;<br />
    sigemptyset(&sa.sa_mask);<br />
    sa.sa_flags = 0;<br />
    if (sigaction(SIGALRM, &sa, 0)) {<br />
        fprintf(stderr, "Failed to install signal handler!\n");<br />
        return -1;<br />
    }</div>

<div>    printf("Starting timer...\n");<br />
    tv.it_interval.tv_sec = 0;<br />
    tv.it_interval.tv_usec = 1000000 / FREQUENCY;<br />
    tv.it_value.tv_sec = 0;<br />
    tv.it_value.tv_usec = 1000;<br />
    if (setitimer(ITIMER_REAL, &tv, NULL)) {<br />
        fprintf(stderr, "Failed to start timer: %s\n", strerror(errno));<br />
        return 1;<br />
    }</div>

<div>    printf("Started.\n");<br />
    while (1) {<br />
        pause();</div>

<div>#if 0<br />
        struct timeval t;<br />
        gettimeofday(&t, NULL);<br />
        printf("%u.%06u\n", t.tv_sec, t.tv_usec);<br />
#endif</div>

<div>        while (sig_alarms != user_alarms) {<br />
            cyclic_task();<br />
            user_alarms++;<br />
        }<br />
    }</div>

<div>    return 0;<br />
}</div>

<div>/****************************************************************************/</div>

<div> </div>

<div> </div>

<div>Thank you very much</div>

<div> </div>

<div>Best regards</div>
</div>

<div style="font-size: 13.3333px; font-family: Tahoma; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-family: tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">- - - - - - - - - - - - <span style="font-size: 13.3333330154419px;">- - - - - - - - - - - - </span><span style="font-size: 13.3333330154419px;">- - - - - - - - - - - - </span><span style="font-size: 13.3333330154419px;">- - -</span></div>

<div style="font-family: tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><strong>David Jiménez Mejías -</strong> <span style="font-size: 13.3333330154419px;">Gran Telescopio de Canarias S.A</span></div>

<div style="font-family: tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> </div>

<div style="font-family: tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><em>Ingeniero de Operación / Operation Engineer</em></div>

<div style="font-family: tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">​</div>

<div style="font-family: tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
<div style="font-size: 13.3333330154419px;"> </div>
</div>

<div style="font-family: Tahoma; color: rgb(0, 0, 0); font-size: 13.3333px; font-weight: 400; font-style: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> 
<blockquote style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">-----Original Message-----<br />
From: Gavin Lambert <gavinl@compacsort.com><br />
To: 'David Jiménez Mejías' <david.jimenez@gtc.iac.es>, <hm@igh-essen.com>, <etherlab-users@etherlab.org><br />
Date: Fri, 30 Oct 2015 11:06:40 +1300<br />
Subject: RE: [etherlab-users]  Beckhoff 6731-0010 initialization<br />
 
<div class="WordSection1">
<div class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Most likely, there is something invalid in the parameters for the SDO configuration functions.  You’ll need to post all of the related code if you want help in locating it.<o:p></o:p></span></div>

<div class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></div>

<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">
<div class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> etherlab-users [mailto:etherlab-users-bounces@etherlab.org] <b>On Behalf Of </b>David Jiménez Mejías<br />
<b>Sent:</b> Thursday, 29 October 2015 23:53<br />
<b>To:</b> hm@igh-essen.com; etherlab-users@etherlab.org<br />
<b>Subject:</b> [etherlab-users] Beckhoff 6731-0010 initialization<o:p></o:p></span></div>
</div>
</div>

<div class="MsoNormal"><o:p> </o:p></div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">Dear Wilhelm,<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">I was reading your replies to this issue at the EtherLab-Users mailing list and it was very helpful for me.<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"><a href="http://lists.etherlab.org/pipermail/etherlab-users/2012/001860.html">http://lists.etherlab.org/pipermail/etherlab-users/2012/001860.html</a><o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">I'm trying to configure a Can Network from the Beckhoff Can Master Module EL6751 with only one can slave (Phoenix Contact Can I/O Terminal).<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">I just do it the steps like the configuration of the EL6731 (Profibus Master Module):<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">     - Configure the Can Network with TwinCAT<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">     - Export the XML<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">     - Format it with xmllint<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">     - And take the necessary data:<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">          * PDOs Entries: Tx and Rx<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">          * StartUp SDO config of the next Index:<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0x1C32<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0x1C33<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0xF800<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0x8000<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0x8001<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0x8002<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">               + 0x8003<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">     - Implement the C code for the configuration, but I keep out from the app without error at the function: <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">          * ecrt_slave_config_complete_sdo(sc, 0x1C32, pb_config_buf, cnt);<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">The last dmesg is:<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">[ 9574.754735] EtherCAT: Requesting master 0...<br />
[ 9574.754754] EtherCAT: Successfully requested master 0.<br />
[ 9574.754984] lt-ec_user_exam[7579]: segfault at 10 ip 00007fdced6058a5 sp 00007ffefada2900 error 4 in libethercat.so.1.0.0[7fdced601000+8000]<br />
[ 9574.930388] EtherCAT 0: Releasing master...<br />
[ 9574.930400] EtherCAT 0: Released.<br />
[ 9607.095769] EtherCAT: Requesting master 0...<br />
[ 9607.095792] EtherCAT: Successfully requested master 0.<br />
[ 9607.095971] lt-ec_user_exam[7663]: segfault at 10 ip 00007fadcfdb98a5 sp 00007ffedfea14c0 error 4 in libethercat.so.1.0.0[7fadcfdb5000+8000]<br />
[ 9607.276982] EtherCAT 0: Releasing master...<br />
[ 9607.277021] EtherCAT 0: Released.<br />
[ 9626.248196] EtherCAT: Requesting master 0...<br />
[ 9626.248200] EtherCAT: Successfully requested master 0.<br />
[ 9626.248261] lt-ec_user_exam[7744]: segfault at 10 ip 00007f741d0eb8a5 sp 00007ffe6e5358f0 error 4 in libethercat.so.1.0.0[7f741d0e7000+8000]<br />
[ 9626.401297] EtherCAT 0: Releasing master...<br />
[ 9626.401309] EtherCAT 0: Released.<br />
[ 9753.014994] EtherCAT: Requesting master 0...<br />
[ 9753.015011] EtherCAT: Successfully requested master 0.<br />
[ 9753.015166] lt-ec_user_exam[7792]: segfault at 10 ip 00007f15e18768a5 sp 00007ffcbd184820 error 4 in libethercat.so.1.0.0[7f15e1872000+8000]<br />
[ 9753.161441] EtherCAT 0: Releasing master...<br />
[ 9753.161589] EtherCAT 0: Released.<br />
[ 9799.019908] EtherCAT: Requesting master 0...<br />
[ 9799.019915] EtherCAT: Successfully requested master 0.<br />
[ 9799.020082] lt-ec_user_exam[7814]: segfault at 10 ip 00007fd538ee78a5 sp 00007ffd0c9fca80 error 4 in libethercat.so.1.0.0[7fd538ee3000+8000]<br />
[ 9799.165522] EtherCAT 0: Releasing master...<br />
[ 9799.165574] EtherCAT 0: Released.<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">I'm not sure is there is the correct information to know whats happens, tell me any doubt.<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">Thank you very much<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">King regards<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><strong><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">David Jiménez Mejías -</span></strong><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> Gran Telescopio de Canarias S.A<o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><em><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">Ingeniero de Operación / Operation Engineer</span></em><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"><o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>
</div>

<div>
<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>

<div>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> <o:p></o:p></span></div>
</div>
</div>

<div class="MsoNormal"><br />
----------<br />
ADVERTENCIA: Sobre la privacidad y cumplimiento de la Ley de Protección de Datos, acceda a <a href="http://www.gtc.iac.es/gtc/legal_es.php">http://www.gtc.iac.es/gtc/legal_es.php</a><br />
WARNING: For more information on privacy and fulfilment of the Law concerning the Protection of Data, consult <a href="http://www.gtc.iac.es/gtc/legal_es.php">http://www.gtc.iac.es/gtc/legal_es.php</a><o:p></o:p></div>
</div>
</div>
</blockquote>
</div>
<br>----------<br>
ADVERTENCIA: Sobre la privacidad y cumplimiento de la Ley de Protección de Datos, acceda a http://www.gtc.iac.es/gtc/legal_es.php<br>
WARNING: For more information on privacy and fulfilment of the Law concerning the Protection of Data, consult http://www.gtc.iac.es/gtc/legal_es.php</body></html>