From 268977d2ceed5f306c3cbc1294eb40750d8d065b Mon Sep 17 00:00:00 2001 From: narogon Date: Sat, 24 Oct 2015 17:13:35 +0000 Subject: [PATCH 1/6] COMP = halcompile linuxcnc 2.7 --- configure.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.mk b/configure.mk index 369ec342..1cbb9f21 100644 --- a/configure.mk +++ b/configure.mk @@ -1,4 +1,4 @@ -COMP ?= comp +COMP ?= halcomp .PHONY: configure configure: From 6441a7b66c671d88695043cd3842e207850d4caa Mon Sep 17 00:00:00 2001 From: narogon Date: Tue, 26 Jan 2016 20:58:33 +0100 Subject: [PATCH 2/6] Additionals attributes Additionals attributes Posibility to parse additional attributes to configure some sdo parameters in non generic components added parameters el7041 Max current nominal voltage SDO parameters el7041 configure rubish errors .. .. . --- configure.mk | 5 ---- src/lcec.h | 1 + src/lcec_conf.c | 57 +++++++++++++++++++++++++++++++++++++++++- src/lcec_conf.h | 8 ++++++ src/lcec_el7041_1000.c | 17 +++++++++++-- src/lcec_main.c | 13 ++++++++++ 6 files changed, 93 insertions(+), 8 deletions(-) diff --git a/configure.mk b/configure.mk index 6edf168b..b75b31de 100644 --- a/configure.mk +++ b/configure.mk @@ -1,6 +1,3 @@ -<<<<<<< HEAD -COMP ?= halcomp -======= ifeq (, $(COMP)) COMP = $(shell which halcompile) endif @@ -10,7 +7,6 @@ endif ifeq (, $(COMP)) $(error halcompile/comp executable not found or set) endif ->>>>>>> refs/remotes/sittner/master .PHONY: configure configure: @@ -43,4 +39,3 @@ RTAIINCDIR = $(subst /rtai.h,,$(firstword $(wildcard $(foreach i,$(subst -I,,$(f ifneq ($(RTAIINCDIR),) RTAIDIR = $(realpath $(RTAIINCDIR)/..) endif - diff --git a/src/lcec.h b/src/lcec.h index 00b597b0..719b395c 100644 --- a/src/lcec.h +++ b/src/lcec.h @@ -155,6 +155,7 @@ typedef struct lcec_slave { ec_pdo_info_t *generic_pdos; ec_sync_info_t *generic_sync_managers; lcec_slave_sdoconf_t *sdo_config; + LCEC_CONF_ATTR_T attrs[LCEC_CONF_ATTR_MAX]; } lcec_slave_t; ec_sdo_request_t *lcec_read_sdo(struct lcec_slave *slave, uint16_t index, uint8_t subindex, size_t size); diff --git a/src/lcec_conf.c b/src/lcec_conf.c index cbcbf380..904b4879 100644 --- a/src/lcec_conf.c +++ b/src/lcec_conf.c @@ -36,6 +36,12 @@ typedef struct { LCEC_SLAVE_TYPE_T type; } LCEC_CONF_TYPELIST_T; +typedef struct { + char *name; + LCEC_SLAVE_TYPE_T type; + char *attr[LCEC_CONF_ATTR_MAX]; +} LCEC_CONF_ATTRLIST_T; + typedef struct { hal_u32_t *master_count; hal_u32_t *slave_count; @@ -147,6 +153,12 @@ static const LCEC_CONF_TYPELIST_T slaveTypes[] = { { NULL } }; +static const LCEC_CONF_ATTRLIST_T slaveAttrs[] = { + {"DeASDA", lcecSlaveTypeDeASDA, "test","",""}, + {"EL7041-1000", lcecSlaveTypeEL7041_1000, "maxCurrent","nomVoltage",""}, + {NULL} +}; + char *modname = "lcec_conf"; int hal_comp_id; LCEC_CONF_HAL_T *conf_hal_data; @@ -627,6 +639,8 @@ void parseMasterAttrs(const char **attr) { void parseSlaveAttrs(const char **attr) { LCEC_CONF_SLAVE_T *p = getOutputBuffer(sizeof(LCEC_CONF_SLAVE_T)); + int i; + int attrcont= -1 ; if (p == NULL) { return; } @@ -687,7 +701,48 @@ void parseSlaveAttrs(const char **attr) { continue; } } - + else { //Atributos adicionales para tipos no genericos, hay que comprobar si son validos y si no estan repetidos. + //Additionals attributes for no generic type. It must check if they are valid and aren't repeated. + + const LCEC_CONF_ATTRLIST_T *slaveAttr; + for (slaveAttr = slaveAttrs; slaveAttr->name != NULL; slaveAttr++) { //recorremos lista con atributos validos por tipo de esclavo + if (p->type == slaveAttr->type){ //comprobamos si estamos en el esclavo correcto + for (i=0; iattr[i]) == 0){ + break; //vemos si el atributo es valido para el esclavo en cuestion + } + } + break; + } + } + if (slaveAttr->name == NULL) { //si no ha encontrado el esclavo en la lista o no tenia los atributos validos + fprintf(stderr, "%s: ERROR: Invalid slave attribute %s\n", modname, name); + XML_StopParser(parser, 0); + return; + } + + //hay que comprobar si no estaba repetido ya y guardarlo en el que este libre. + for (i=attrcont; i>=0; i--){ //comprobacion de repetido + if (strcmp(name, p->attrs[i].attr) == 0){ //ya estaba definido y por tanto error + fprintf(stderr, "%s: ERROR: Duplicated slave attribute %s\n", modname, name); + XML_StopParser(parser, 0); + return; + } + } + strncpy(p->attrs[attrcont+1].attr, name, LCEC_CONF_STR_MAXLEN); + p->attrs[attrcont+1].attr[LCEC_CONF_STR_MAXLEN - 1] = 0; + p->attrs[attrcont+1].val = atof(val); + attrcont++; + //POR seguridad y depuración comprobacion si pasa de LCEC_CONF_ATTR_MAX + if (attrcont >= LCEC_CONF_ATTR_MAX){ + fprintf(stderr, "%s: ERROR: Mas de LCEC_CONF_ATTR_MAX atributos para el esclavo\n", modname); + XML_StopParser(parser, 0); + return; + } + + continue; + + } // handle error fprintf(stderr, "%s: ERROR: Invalid slave attribute %s\n", modname, name); XML_StopParser(parser, 0); diff --git a/src/lcec_conf.h b/src/lcec_conf.h index c88cf0a7..b8455bf9 100644 --- a/src/lcec_conf.h +++ b/src/lcec_conf.h @@ -28,6 +28,8 @@ #define LCEC_CONF_STR_MAXLEN 48 +#define LCEC_CONF_ATTR_MAX 3 + #define LCEC_CONF_SDO_COMPLETE_SUBIDX -1 #define LCEC_CONF_GENERIC_MAX_SUBPINS 32 #define LCEC_CONF_GENERIC_MAX_BITLEN 255 @@ -141,6 +143,11 @@ typedef struct { char name[LCEC_CONF_STR_MAXLEN]; } LCEC_CONF_MASTER_T; +typedef struct { + char attr[LCEC_CONF_STR_MAXLEN]; + float val; +} LCEC_CONF_ATTR_T; + typedef struct { LCEC_CONF_TYPE_T confType; int index; @@ -154,6 +161,7 @@ typedef struct { unsigned int pdoMappingCount; size_t sdoConfigLength; char name[LCEC_CONF_STR_MAXLEN]; + LCEC_CONF_ATTR_T attrs[LCEC_CONF_ATTR_MAX]; } LCEC_CONF_SLAVE_T; typedef struct { diff --git a/src/lcec_el7041_1000.c b/src/lcec_el7041_1000.c index b4129199..cb26af08 100644 --- a/src/lcec_el7041_1000.c +++ b/src/lcec_el7041_1000.c @@ -241,7 +241,7 @@ int lcec_el7041_1000_init(int comp_id, struct lcec_slave *s, ec_pdo_entry_reg_t lcec_master_t *m = s->master; lcec_el7041_1000_data_t *hd; int err; - + int i; // initialize callbacks s->proc_read = lcec_el7041_1000_read; s->proc_write = lcec_el7041_1000_write; @@ -253,7 +253,20 @@ int lcec_el7041_1000_init(int comp_id, struct lcec_slave *s, ec_pdo_entry_reg_t } memset(hd, 0, sizeof(lcec_el7041_1000_data_t)); s->hal_data = hd; - + + for (i=0; iattrs[i].attr,"maxCurrent")==0){ + if (ecrt_slave_config_sdo16(s->config, 0x8010, 0x01, s->attrs[i].val) != 0) { + rtapi_print_msg (RTAPI_MSG_ERR, LCEC_MSG_PFX "fail to configure slave %s.%s sdo 8010 01\n", m->name, s->name); + } + } + else if (strcmp(s->attrs[i].attr,"nomVoltage")==0){ + if (ecrt_slave_config_sdo16(s->config, 0x8010, 0x03, s->attrs[i].val) != 0) { + rtapi_print_msg (RTAPI_MSG_ERR, LCEC_MSG_PFX "fail to configure slave %s.%s sdo 8010 03\n", m->name, s->name); + } + } + } + // initialize sync info s->sync_info = lcec_el7041_1000_syncs; diff --git a/src/lcec_main.c b/src/lcec_main.c index e945d585..7fd8073d 100644 --- a/src/lcec_main.c +++ b/src/lcec_main.c @@ -393,6 +393,7 @@ int lcec_parse_config(void) { lcec_generic_pin_t *generic_hal_data; hal_pin_dir_t generic_hal_dir; lcec_slave_sdoconf_t *sdo_config; + int i; // initialize list first_master = NULL; @@ -523,6 +524,18 @@ int lcec_parse_config(void) { slave->pid = type->pid; slave->pdo_entry_count = type->pdo_entry_count; slave->proc_init = type->proc_init; + + //copy attributes to slave + for (i=0; iattrs[i].attr[0]!=0){ + strncpy(slave->attrs[i].attr, slave_conf->attrs[i].attr, LCEC_CONF_STR_MAXLEN); + slave->attrs[i].attr[LCEC_CONF_STR_MAXLEN - 1] = 0; + slave->attrs[i].val=slave_conf->attrs[i].val; + } + else{ + strcpy(slave->attrs[i].attr,""); + } + } } else { // generic slave slave->vid = slave_conf->vid; From 0bc4e1714353d3c842ee1b9dd655eff5431c1249 Mon Sep 17 00:00:00 2001 From: Nacho Date: Mon, 22 Jan 2018 22:28:48 +0100 Subject: [PATCH 3/6] change DC synchronization way --- ChangeLog | 0 LICENSE | 0 Makefile | 0 README.md | 0 TODO | 0 configure.mk | 0 debian/changelog | 0 debian/compat | 0 debian/control | 0 debian/copyright | 0 debian/docs | 0 debian/source/format | 0 examples/Makefile | 0 examples/generic-complex/CPD17/cpd17_x.hal | 0 examples/generic-complex/CPD17/cpd17_x.ini | 0 .../generic-complex/CPD17/ethercat-conf_X.xml | 0 examples/generic-complex/README | 0 examples/generic-complex/ethercat-conf.xml | 0 examples/swm-fm45a/ethercat-conf.xml | 0 examples/swm-fm45a/swm-fm45a-axis.hal | 0 examples/swm-fm45a/swm-fm45a-io.hal | 0 examples/swm-fm45a/swm-fm45a-spindle.hal | 0 examples/swm-fm45a/swm-fm45a.hal | 0 examples/swm-fm45a/swm-fm45a.ini | 0 examples/swm-fm45a/tool.tbl | 0 src/Kbuild | 0 src/Makefile | 0 src/lcec.h | 0 src/lcec_conf.c | 0 src/lcec_conf.h | 0 src/lcec_deasda.c | 0 src/lcec_deasda.h | 0 src/lcec_ek1100.h | 0 src/lcec_el1252.c | 0 src/lcec_el1252.h | 0 src/lcec_el1xxx.c | 0 src/lcec_el1xxx.h | 0 src/lcec_el2202.c | 0 src/lcec_el2202.h | 0 src/lcec_el2521.c | 0 src/lcec_el2521.h | 0 src/lcec_el2xxx.c | 0 src/lcec_el2xxx.h | 0 src/lcec_el31x2.c | 0 src/lcec_el31x2.h | 0 src/lcec_el40x1.c | 0 src/lcec_el40x1.h | 0 src/lcec_el40x2.c | 0 src/lcec_el40x2.h | 0 src/lcec_el41x2.c | 0 src/lcec_el41x2.h | 0 src/lcec_el5101.c | 0 src/lcec_el5101.h | 0 src/lcec_el5151.c | 0 src/lcec_el5151.h | 0 src/lcec_el5152.c | 0 src/lcec_el5152.h | 0 src/lcec_el7041_1000.c | 0 src/lcec_el7041_1000.h | 0 src/lcec_el7342.c | 0 src/lcec_el7342.h | 0 src/lcec_el95xx.c | 0 src/lcec_el95xx.h | 0 src/lcec_em7004.c | 0 src/lcec_em7004.h | 0 src/lcec_generic.c | 0 src/lcec_generic.h | 0 src/lcec_main.c | 45 ++++++++++++------- src/lcec_rtapi.h | 0 src/lcec_rtapi_kmod.h | 0 src/lcec_rtapi_user.h | 0 src/lcec_stmds5k.c | 0 src/lcec_stmds5k.h | 0 src/realtime.mk | 0 src/user.mk | 0 75 files changed, 28 insertions(+), 17 deletions(-) mode change 100644 => 100755 ChangeLog mode change 100644 => 100755 LICENSE mode change 100644 => 100755 Makefile mode change 100644 => 100755 README.md mode change 100644 => 100755 TODO mode change 100644 => 100755 configure.mk mode change 100644 => 100755 debian/changelog mode change 100644 => 100755 debian/compat mode change 100644 => 100755 debian/control mode change 100644 => 100755 debian/copyright mode change 100644 => 100755 debian/docs mode change 100644 => 100755 debian/source/format mode change 100644 => 100755 examples/Makefile mode change 100644 => 100755 examples/generic-complex/CPD17/cpd17_x.hal mode change 100644 => 100755 examples/generic-complex/CPD17/cpd17_x.ini mode change 100644 => 100755 examples/generic-complex/CPD17/ethercat-conf_X.xml mode change 100644 => 100755 examples/generic-complex/README mode change 100644 => 100755 examples/generic-complex/ethercat-conf.xml mode change 100644 => 100755 examples/swm-fm45a/ethercat-conf.xml mode change 100644 => 100755 examples/swm-fm45a/swm-fm45a-axis.hal mode change 100644 => 100755 examples/swm-fm45a/swm-fm45a-io.hal mode change 100644 => 100755 examples/swm-fm45a/swm-fm45a-spindle.hal mode change 100644 => 100755 examples/swm-fm45a/swm-fm45a.hal mode change 100644 => 100755 examples/swm-fm45a/swm-fm45a.ini mode change 100644 => 100755 examples/swm-fm45a/tool.tbl mode change 100644 => 100755 src/Kbuild mode change 100644 => 100755 src/Makefile mode change 100644 => 100755 src/lcec.h mode change 100644 => 100755 src/lcec_conf.c mode change 100644 => 100755 src/lcec_conf.h mode change 100644 => 100755 src/lcec_deasda.c mode change 100644 => 100755 src/lcec_deasda.h mode change 100644 => 100755 src/lcec_ek1100.h mode change 100644 => 100755 src/lcec_el1252.c mode change 100644 => 100755 src/lcec_el1252.h mode change 100644 => 100755 src/lcec_el1xxx.c mode change 100644 => 100755 src/lcec_el1xxx.h mode change 100644 => 100755 src/lcec_el2202.c mode change 100644 => 100755 src/lcec_el2202.h mode change 100644 => 100755 src/lcec_el2521.c mode change 100644 => 100755 src/lcec_el2521.h mode change 100644 => 100755 src/lcec_el2xxx.c mode change 100644 => 100755 src/lcec_el2xxx.h mode change 100644 => 100755 src/lcec_el31x2.c mode change 100644 => 100755 src/lcec_el31x2.h mode change 100644 => 100755 src/lcec_el40x1.c mode change 100644 => 100755 src/lcec_el40x1.h mode change 100644 => 100755 src/lcec_el40x2.c mode change 100644 => 100755 src/lcec_el40x2.h mode change 100644 => 100755 src/lcec_el41x2.c mode change 100644 => 100755 src/lcec_el41x2.h mode change 100644 => 100755 src/lcec_el5101.c mode change 100644 => 100755 src/lcec_el5101.h mode change 100644 => 100755 src/lcec_el5151.c mode change 100644 => 100755 src/lcec_el5151.h mode change 100644 => 100755 src/lcec_el5152.c mode change 100644 => 100755 src/lcec_el5152.h mode change 100644 => 100755 src/lcec_el7041_1000.c mode change 100644 => 100755 src/lcec_el7041_1000.h mode change 100644 => 100755 src/lcec_el7342.c mode change 100644 => 100755 src/lcec_el7342.h mode change 100644 => 100755 src/lcec_el95xx.c mode change 100644 => 100755 src/lcec_el95xx.h mode change 100644 => 100755 src/lcec_em7004.c mode change 100644 => 100755 src/lcec_em7004.h mode change 100644 => 100755 src/lcec_generic.c mode change 100644 => 100755 src/lcec_generic.h mode change 100644 => 100755 src/lcec_main.c mode change 100644 => 100755 src/lcec_rtapi.h mode change 100644 => 100755 src/lcec_rtapi_kmod.h mode change 100644 => 100755 src/lcec_rtapi_user.h mode change 100644 => 100755 src/lcec_stmds5k.c mode change 100644 => 100755 src/lcec_stmds5k.h mode change 100644 => 100755 src/realtime.mk mode change 100644 => 100755 src/user.mk diff --git a/ChangeLog b/ChangeLog old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/TODO b/TODO old mode 100644 new mode 100755 diff --git a/configure.mk b/configure.mk old mode 100644 new mode 100755 diff --git a/debian/changelog b/debian/changelog old mode 100644 new mode 100755 diff --git a/debian/compat b/debian/compat old mode 100644 new mode 100755 diff --git a/debian/control b/debian/control old mode 100644 new mode 100755 diff --git a/debian/copyright b/debian/copyright old mode 100644 new mode 100755 diff --git a/debian/docs b/debian/docs old mode 100644 new mode 100755 diff --git a/debian/source/format b/debian/source/format old mode 100644 new mode 100755 diff --git a/examples/Makefile b/examples/Makefile old mode 100644 new mode 100755 diff --git a/examples/generic-complex/CPD17/cpd17_x.hal b/examples/generic-complex/CPD17/cpd17_x.hal old mode 100644 new mode 100755 diff --git a/examples/generic-complex/CPD17/cpd17_x.ini b/examples/generic-complex/CPD17/cpd17_x.ini old mode 100644 new mode 100755 diff --git a/examples/generic-complex/CPD17/ethercat-conf_X.xml b/examples/generic-complex/CPD17/ethercat-conf_X.xml old mode 100644 new mode 100755 diff --git a/examples/generic-complex/README b/examples/generic-complex/README old mode 100644 new mode 100755 diff --git a/examples/generic-complex/ethercat-conf.xml b/examples/generic-complex/ethercat-conf.xml old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/ethercat-conf.xml b/examples/swm-fm45a/ethercat-conf.xml old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/swm-fm45a-axis.hal b/examples/swm-fm45a/swm-fm45a-axis.hal old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/swm-fm45a-io.hal b/examples/swm-fm45a/swm-fm45a-io.hal old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/swm-fm45a-spindle.hal b/examples/swm-fm45a/swm-fm45a-spindle.hal old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/swm-fm45a.hal b/examples/swm-fm45a/swm-fm45a.hal old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/swm-fm45a.ini b/examples/swm-fm45a/swm-fm45a.ini old mode 100644 new mode 100755 diff --git a/examples/swm-fm45a/tool.tbl b/examples/swm-fm45a/tool.tbl old mode 100644 new mode 100755 diff --git a/src/Kbuild b/src/Kbuild old mode 100644 new mode 100755 diff --git a/src/Makefile b/src/Makefile old mode 100644 new mode 100755 diff --git a/src/lcec.h b/src/lcec.h old mode 100644 new mode 100755 diff --git a/src/lcec_conf.c b/src/lcec_conf.c old mode 100644 new mode 100755 diff --git a/src/lcec_conf.h b/src/lcec_conf.h old mode 100644 new mode 100755 diff --git a/src/lcec_deasda.c b/src/lcec_deasda.c old mode 100644 new mode 100755 diff --git a/src/lcec_deasda.h b/src/lcec_deasda.h old mode 100644 new mode 100755 diff --git a/src/lcec_ek1100.h b/src/lcec_ek1100.h old mode 100644 new mode 100755 diff --git a/src/lcec_el1252.c b/src/lcec_el1252.c old mode 100644 new mode 100755 diff --git a/src/lcec_el1252.h b/src/lcec_el1252.h old mode 100644 new mode 100755 diff --git a/src/lcec_el1xxx.c b/src/lcec_el1xxx.c old mode 100644 new mode 100755 diff --git a/src/lcec_el1xxx.h b/src/lcec_el1xxx.h old mode 100644 new mode 100755 diff --git a/src/lcec_el2202.c b/src/lcec_el2202.c old mode 100644 new mode 100755 diff --git a/src/lcec_el2202.h b/src/lcec_el2202.h old mode 100644 new mode 100755 diff --git a/src/lcec_el2521.c b/src/lcec_el2521.c old mode 100644 new mode 100755 diff --git a/src/lcec_el2521.h b/src/lcec_el2521.h old mode 100644 new mode 100755 diff --git a/src/lcec_el2xxx.c b/src/lcec_el2xxx.c old mode 100644 new mode 100755 diff --git a/src/lcec_el2xxx.h b/src/lcec_el2xxx.h old mode 100644 new mode 100755 diff --git a/src/lcec_el31x2.c b/src/lcec_el31x2.c old mode 100644 new mode 100755 diff --git a/src/lcec_el31x2.h b/src/lcec_el31x2.h old mode 100644 new mode 100755 diff --git a/src/lcec_el40x1.c b/src/lcec_el40x1.c old mode 100644 new mode 100755 diff --git a/src/lcec_el40x1.h b/src/lcec_el40x1.h old mode 100644 new mode 100755 diff --git a/src/lcec_el40x2.c b/src/lcec_el40x2.c old mode 100644 new mode 100755 diff --git a/src/lcec_el40x2.h b/src/lcec_el40x2.h old mode 100644 new mode 100755 diff --git a/src/lcec_el41x2.c b/src/lcec_el41x2.c old mode 100644 new mode 100755 diff --git a/src/lcec_el41x2.h b/src/lcec_el41x2.h old mode 100644 new mode 100755 diff --git a/src/lcec_el5101.c b/src/lcec_el5101.c old mode 100644 new mode 100755 diff --git a/src/lcec_el5101.h b/src/lcec_el5101.h old mode 100644 new mode 100755 diff --git a/src/lcec_el5151.c b/src/lcec_el5151.c old mode 100644 new mode 100755 diff --git a/src/lcec_el5151.h b/src/lcec_el5151.h old mode 100644 new mode 100755 diff --git a/src/lcec_el5152.c b/src/lcec_el5152.c old mode 100644 new mode 100755 diff --git a/src/lcec_el5152.h b/src/lcec_el5152.h old mode 100644 new mode 100755 diff --git a/src/lcec_el7041_1000.c b/src/lcec_el7041_1000.c old mode 100644 new mode 100755 diff --git a/src/lcec_el7041_1000.h b/src/lcec_el7041_1000.h old mode 100644 new mode 100755 diff --git a/src/lcec_el7342.c b/src/lcec_el7342.c old mode 100644 new mode 100755 diff --git a/src/lcec_el7342.h b/src/lcec_el7342.h old mode 100644 new mode 100755 diff --git a/src/lcec_el95xx.c b/src/lcec_el95xx.c old mode 100644 new mode 100755 diff --git a/src/lcec_el95xx.h b/src/lcec_el95xx.h old mode 100644 new mode 100755 diff --git a/src/lcec_em7004.c b/src/lcec_em7004.c old mode 100644 new mode 100755 diff --git a/src/lcec_em7004.h b/src/lcec_em7004.h old mode 100644 new mode 100755 diff --git a/src/lcec_generic.c b/src/lcec_generic.c old mode 100644 new mode 100755 diff --git a/src/lcec_generic.h b/src/lcec_generic.h old mode 100644 new mode 100755 diff --git a/src/lcec_main.c b/src/lcec_main.c old mode 100644 new mode 100755 index 7fd8073d..08079b53 --- a/src/lcec_main.c +++ b/src/lcec_main.c @@ -24,6 +24,7 @@ #include "lcec_el2xxx.h" #include "lcec_el2202.h" #include "lcec_el31x2.h" +#include "lcec_el3255.h" #include "lcec_el40x1.h" #include "lcec_el40x2.h" #include "lcec_el41x2.h" @@ -96,6 +97,8 @@ static const lcec_typelist_t types[] = { { lcecSlaveTypeEL2798, LCEC_EL2xxx_VID, LCEC_EL2798_PID, LCEC_EL2798_PDOS, lcec_el2xxx_init}, { lcecSlaveTypeEL2809, LCEC_EL2xxx_VID, LCEC_EL2809_PID, LCEC_EL2809_PDOS, lcec_el2xxx_init}, + { lcecSlaveTypeEP2028, LCEC_EL2xxx_VID, LCEC_EP2028_PID, LCEC_EP2028_PDOS, lcec_el2xxx_init}, + // analog in, 2ch, 16 bits { lcecSlaveTypeEL3102, LCEC_EL31x2_VID, LCEC_EL3102_PID, LCEC_EL31x2_PDOS, lcec_el31x2_init}, { lcecSlaveTypeEL3112, LCEC_EL31x2_VID, LCEC_EL3112_PID, LCEC_EL31x2_PDOS, lcec_el31x2_init}, @@ -104,6 +107,9 @@ static const lcec_typelist_t types[] = { { lcecSlaveTypeEL3152, LCEC_EL31x2_VID, LCEC_EL3152_PID, LCEC_EL31x2_PDOS, lcec_el31x2_init}, { lcecSlaveTypeEL3162, LCEC_EL31x2_VID, LCEC_EL3162_PID, LCEC_EL31x2_PDOS, lcec_el31x2_init}, + // analog in, 5ch, 16 bits + { lcecSlaveTypeEL3255, LCEC_EL3255_VID, LCEC_EL3255_PID, LCEC_EL3255_PDOS, lcec_el3255_init}, + // analog out, 1ch, 12 bits { lcecSlaveTypeEL4001, LCEC_EL40x1_VID, LCEC_EL4001_PID, LCEC_EL40x1_PDOS, lcec_el40x1_init}, { lcecSlaveTypeEL4011, LCEC_EL40x1_VID, LCEC_EL4011_PID, LCEC_EL40x1_PDOS, lcec_el40x1_init}, @@ -393,7 +399,6 @@ int lcec_parse_config(void) { lcec_generic_pin_t *generic_hal_data; hal_pin_dir_t generic_hal_dir; lcec_slave_sdoconf_t *sdo_config; - int i; // initialize list first_master = NULL; @@ -465,6 +470,7 @@ int lcec_parse_config(void) { master->name[LCEC_CONF_STR_MAXLEN - 1] = 0; master->mutex = 0; master->app_time = 0; + master->reference_time = 0; master->app_time_period = master_conf->appTimePeriod; master->sync_ref_cnt = 0; master->sync_ref_cycles = master_conf->refClockSyncCycles; @@ -524,18 +530,6 @@ int lcec_parse_config(void) { slave->pid = type->pid; slave->pdo_entry_count = type->pdo_entry_count; slave->proc_init = type->proc_init; - - //copy attributes to slave - for (i=0; iattrs[i].attr[0]!=0){ - strncpy(slave->attrs[i].attr, slave_conf->attrs[i].attr, LCEC_CONF_STR_MAXLEN); - slave->attrs[i].attr[LCEC_CONF_STR_MAXLEN - 1] = 0; - slave->attrs[i].val=slave_conf->attrs[i].val; - } - else{ - strcpy(slave->attrs[i].attr,""); - } - } } else { // generic slave slave->vid = slave_conf->vid; @@ -774,7 +768,6 @@ int lcec_parse_config(void) { generic_hal_data->dir = generic_hal_dir; generic_hal_data->pdo_idx = pe_conf->index; generic_hal_data->pdo_sidx = pe_conf->subindex; - generic_hal_data->pdo_len = pe_conf->bitLength; generic_hal_data++; } @@ -812,7 +805,6 @@ int lcec_parse_config(void) { generic_hal_data->dir = generic_hal_dir; generic_hal_data->pdo_idx = pe_conf->index; generic_hal_data->pdo_sidx = pe_conf->subindex; - generic_hal_data->pdo_len = pe_conf->bitLength; generic_hal_data++; } break; @@ -1123,7 +1115,11 @@ void lcec_write_master(void *arg, long period) { // send process data rtapi_mutex_get(&master->mutex); - + + + // update application time + master->app_time += master->app_time_period; +/* // update application time master->app_time += master->app_time_period; ecrt_master_application_time(master->master, master->app_time); @@ -1139,7 +1135,22 @@ void lcec_write_master(void *arg, long period) { // sync slaves to ref clock ecrt_master_sync_slave_clocks(master->master); - +*/if (master->reference_time == 0) + { + ecrt_master_reference_clock_time(master->master, &master->reference_time); //consigo el tiempo del reference clock y lo guardo en master->reference_time + master->app_time = master->reference_time; + } + else + { + ecrt_master_reference_clock_time(master->master, &master->reference_time); //consigo el tiempo del reference clock y lo guardo en master->reference_time + } + ecrt_master_sync_slave_clocks(master->master); // sync slaves to ref clock + ecrt_master_application_time(master->master, master->reference_time+master->app_time_period); + + + + + // send domain data ecrt_domain_queue(master->domain); ecrt_master_send(master->master); diff --git a/src/lcec_rtapi.h b/src/lcec_rtapi.h old mode 100644 new mode 100755 diff --git a/src/lcec_rtapi_kmod.h b/src/lcec_rtapi_kmod.h old mode 100644 new mode 100755 diff --git a/src/lcec_rtapi_user.h b/src/lcec_rtapi_user.h old mode 100644 new mode 100755 diff --git a/src/lcec_stmds5k.c b/src/lcec_stmds5k.c old mode 100644 new mode 100755 diff --git a/src/lcec_stmds5k.h b/src/lcec_stmds5k.h old mode 100644 new mode 100755 diff --git a/src/realtime.mk b/src/realtime.mk old mode 100644 new mode 100755 diff --git a/src/user.mk b/src/user.mk old mode 100644 new mode 100755 From 7b1bcb9b8253d15b0e0e97de41494788a2261fc5 Mon Sep 17 00:00:00 2001 From: Nacho Date: Mon, 22 Jan 2018 22:36:12 +0100 Subject: [PATCH 4/6] same version as sittner --- src/lcec_main.c | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) mode change 100755 => 100644 src/lcec_main.c diff --git a/src/lcec_main.c b/src/lcec_main.c old mode 100755 new mode 100644 index 08079b53..6635675a --- a/src/lcec_main.c +++ b/src/lcec_main.c @@ -470,7 +470,6 @@ int lcec_parse_config(void) { master->name[LCEC_CONF_STR_MAXLEN - 1] = 0; master->mutex = 0; master->app_time = 0; - master->reference_time = 0; master->app_time_period = master_conf->appTimePeriod; master->sync_ref_cnt = 0; master->sync_ref_cycles = master_conf->refClockSyncCycles; @@ -1115,11 +1114,7 @@ void lcec_write_master(void *arg, long period) { // send process data rtapi_mutex_get(&master->mutex); - - - // update application time - master->app_time += master->app_time_period; -/* + // update application time master->app_time += master->app_time_period; ecrt_master_application_time(master->master, master->app_time); @@ -1135,22 +1130,7 @@ void lcec_write_master(void *arg, long period) { // sync slaves to ref clock ecrt_master_sync_slave_clocks(master->master); -*/if (master->reference_time == 0) - { - ecrt_master_reference_clock_time(master->master, &master->reference_time); //consigo el tiempo del reference clock y lo guardo en master->reference_time - master->app_time = master->reference_time; - } - else - { - ecrt_master_reference_clock_time(master->master, &master->reference_time); //consigo el tiempo del reference clock y lo guardo en master->reference_time - } - ecrt_master_sync_slave_clocks(master->master); // sync slaves to ref clock - ecrt_master_application_time(master->master, master->reference_time+master->app_time_period); - - - - - + // send domain data ecrt_domain_queue(master->domain); ecrt_master_send(master->master); From e4ab86ba6167ced532e49904059df580062b2d97 Mon Sep 17 00:00:00 2001 From: Nacho Date: Mon, 22 Jan 2018 22:37:38 +0100 Subject: [PATCH 5/6] change DC synchronization way --- src/lcec_main.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) mode change 100644 => 100755 src/lcec_main.c diff --git a/src/lcec_main.c b/src/lcec_main.c old mode 100644 new mode 100755 index 6635675a..08079b53 --- a/src/lcec_main.c +++ b/src/lcec_main.c @@ -470,6 +470,7 @@ int lcec_parse_config(void) { master->name[LCEC_CONF_STR_MAXLEN - 1] = 0; master->mutex = 0; master->app_time = 0; + master->reference_time = 0; master->app_time_period = master_conf->appTimePeriod; master->sync_ref_cnt = 0; master->sync_ref_cycles = master_conf->refClockSyncCycles; @@ -1114,7 +1115,11 @@ void lcec_write_master(void *arg, long period) { // send process data rtapi_mutex_get(&master->mutex); - + + + // update application time + master->app_time += master->app_time_period; +/* // update application time master->app_time += master->app_time_period; ecrt_master_application_time(master->master, master->app_time); @@ -1130,7 +1135,22 @@ void lcec_write_master(void *arg, long period) { // sync slaves to ref clock ecrt_master_sync_slave_clocks(master->master); - +*/if (master->reference_time == 0) + { + ecrt_master_reference_clock_time(master->master, &master->reference_time); //consigo el tiempo del reference clock y lo guardo en master->reference_time + master->app_time = master->reference_time; + } + else + { + ecrt_master_reference_clock_time(master->master, &master->reference_time); //consigo el tiempo del reference clock y lo guardo en master->reference_time + } + ecrt_master_sync_slave_clocks(master->master); // sync slaves to ref clock + ecrt_master_application_time(master->master, master->reference_time+master->app_time_period); + + + + + // send domain data ecrt_domain_queue(master->domain); ecrt_master_send(master->master); From f8718e2159ea93eed8052c894deaaa40dfe70174 Mon Sep 17 00:00:00 2001 From: Nacho Date: Tue, 23 Jan 2018 12:18:38 +0100 Subject: [PATCH 6/6] reference time declaration in lcec.h --- src/lcec.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lcec.h b/src/lcec.h index 719b395c..f5598f63 100755 --- a/src/lcec.h +++ b/src/lcec.h @@ -109,6 +109,7 @@ typedef struct lcec_master { uint32_t app_time_period; int sync_ref_cnt; int sync_ref_cycles; + uint32_t reference_time; } lcec_master_t; typedef struct {