9 Commits
1.1.0 ... 1.5.2

11 changed files with 42 additions and 18 deletions

View File

@@ -2,12 +2,12 @@
record(waveform,"$(P)DAQ-${Name}-DataAct"){ record(waveform,"$(P)DAQ-${Name}-DataAct"){
info(asyn:FIFO, "1000") info(asyn:FIFO, "1000")
field(DESC, "Data") field(DESC, "Data")
field(PINI, "1")
field(DTYP, "asynFloat64ArrayIn") field(DTYP, "asynFloat64ArrayIn")
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))plugin.daq.${Name}.data") field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))plugin.daq.${Name}.data")
field(FTVL, "DOUBLE") field(FTVL, "DOUBLE")
field(NELM, "${NELM}") field(NELM, "${NELM}")
field(SCAN, "I/O Intr") field(SCAN, "I/O Intr")
field(FLNK, "${FLNK=''}")
field(TSE, "0") field(TSE, "0")
} }

View File

@@ -0,0 +1,4 @@
record(stringin,"$(P)DAQ-${Name}-CH${CH}-${ITEM}-Info") {
field(DESC, "${DESC=empty}")
field(VAL, "${VAL=empty}")
}

View File

@@ -0,0 +1,4 @@
record(ai,"$(P)DAQ-${Name}-CH${CH}-Type") {
field(DESC, "${DESC=}")
field(VAL, "${TYPE=0}")
}

View File

@@ -16,7 +16,7 @@ OPT_CXXFLAGS_YES = -O3
# dependencies # dependencies
ECmasterECMC_VERSION = v1.1.0 ECmasterECMC_VERSION = v1.1.0
ecmc_VERSION = 9.4.0 ecmc_VERSION = 9
BASE_DIR = . BASE_DIR = .
SRC_DIR = $(BASE_DIR)/src SRC_DIR = $(BASE_DIR)/src

View File

@@ -60,7 +60,7 @@ ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1234"
### Adding a data item the a channel ### Adding a data item the a channel
Add a channel to the last created array with ecmcDAQAddDataItem.cmd. The command takes two parameters: Add a channel to the last created array with ecmcDAQAddDataItem.cmd. The command takes three parameters:
1. PARAM : Parameter name to specify the data to read from ecmc, ec0.s1.analogInput01, ax1.poserr,... 1. PARAM : Parameter name to specify the data to read from ecmc, ec0.s1.analogInput01, ax1.poserr,...
2. FORMAT : Optional formatting of data: 2. FORMAT : Optional formatting of data:
``` ```
@@ -71,6 +71,9 @@ Add a channel to the last created array with ecmcDAQAddDataItem.cmd. The command
The calculated time then would correspond to the first data in the array recived. The calculated time then would correspond to the first data in the array recived.
3 = time_ns_minus_period : Time: Raw value minus one period. 3 = time_ns_minus_period : Time: Raw value minus one period.
``` ```
3. SEND_OLD : Optional to send old data (for scalars from previosu cycle, for arrays just one element shift)
### Finalizing a array ### Finalizing a array
When the configurations for an array is finalized then the ecmcDAQFinalizeArray.cmd must be called. When the configurations for an array is finalized then the ecmcDAQFinalizeArray.cmd must be called.
The command will read the total array size (header plus data) from the plugin and then load the database with the waveform record (with correct NELM). The command takes the array name as a parameter ("NAME"). The command will read the total array size (header plus data) from the plugin and then load the database with the waveform record (with correct NELM). The command takes the array name as a parameter ("NAME").

View File

@@ -49,40 +49,40 @@ epicsEnvSet(NAME,ToEdwin) # PREFIX:DAQ-ToEdwin-DataAct
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddArray.cmd, "NAME=${NAME}" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddArray.cmd, "NAME=${NAME}"
#- EL5021: Incremental sin/cos 1vpp #- EL5021: Incremental sin/cos 1vpp
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=10" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=10,DESC='Sin/Cos 1VPP'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s1.positionActual01" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s1.positionActual01"
#- EL5112: Incremental (treat as array, but same timestamp twice, the second actualy not used) #- EL5112: Incremental (treat as array, but same timestamp twice, the second actualy not used)
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1001" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1001,DESC='Incremental'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.timestamp01, FORMAT=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.timestamp01, FORMAT=1"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.timestamp01, FORMAT=1, SEND_OLD=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.timestamp01, FORMAT=1, SEND_OLD=1"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.positionActual01" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.positionActual01"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=11" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=11,DESC='Incremental'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.positionActual01" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s2.positionActual01"
#- EL5042: BISS-C ch 01 #- EL5042: BISS-C ch 01
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=12" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=12,DESC='BISS-C'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s3.positionActual01" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s3.positionActual01"
#- EL5101-0011: Incremental oversampling #- EL5101-0011: Incremental oversampling
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1000" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1000,DESC='Incremental Oversampling'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s4.nextSyncTime, FORMAT=2" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s4.nextSyncTime, FORMAT=2"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s4.nextSyncTime, FORMAT=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s4.nextSyncTime, FORMAT=1"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s4.mm.positionActualArray01" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s4.mm.positionActualArray01"
#- EL1252-0050: timestamped input ch 01 #- EL1252-0050: timestamped input ch 01
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1,DESC='Timestamped input 5V'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s6.timestampLatchPositive01 ,FORMAT=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s6.timestampLatchPositive01 ,FORMAT=1"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s6.timestampLatchNegative01 ,FORMAT=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s6.timestampLatchNegative01 ,FORMAT=1"
#- ELM3602-0002: Analog input ch 01 #- ELM3602-0002: Analog input ch 01
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1000" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddChannel.cmd, "TYPE=1000,DESC='Analog input +-10V'"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s7.timestamp01, FORMAT=2" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s7.timestamp01, FORMAT=2"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s7.timestamp01, FORMAT=1" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s7.timestamp01, FORMAT=1"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s7.mm.analogInputArray01" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQAddDataItem.cmd, "PARAM=ec0.s7.mm.analogInputArray01"
${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQFinalizeArray.cmd "NAME=${NAME}" ${SCRIPTEXEC} ${ecmc_plugin_daq_DIR}ecmcDAQFinalizeArray.cmd "NAME=${NAME},DATA_FLNK=''"
#- To check result use camon -t c6025a:DAQ-ToEdwin-DataAct #- To check result use camon -t c6025a:DAQ-ToEdwin-DataAct

View File

@@ -17,3 +17,4 @@
#- Name , Asyn port name #- Name , Asyn port name
ecmcDAQAddArray(${NAME},ECMC.PLUGIN.DAQ.${NAME}) ecmcDAQAddArray(${NAME},ECMC.PLUGIN.DAQ.${NAME})
epicsEnvSet(ECMC_DAQ_CURR_CH,-1)

View File

@@ -12,7 +12,12 @@
#- #-
#- Arguments #- Arguments
#- TYPE : Type (number of data type) #- TYPE : Type (number of data type)
#- NAME : Name of DAQ array object
#- DESC : Optional description of channel
#- #-
#-################################################################################ #-################################################################################
ecmcDAQAddChannel(${TYPE}) ecmcDAQAddChannel(${TYPE})
epicsEnvSet(ECMC_DAQ_CURR_ITM,-1)
ecmcEpicsEnvSetCalc("ECMC_DAQ_CURR_CH" ,${ECMC_DAQ_CURR_CH=-1}+1,"%02d")
dbLoadRecords(ecmcPluginDAQ_chX.template,"P=${ECMC_PREFIX},Name=${NAME},PORT=ECMC.PLUGIN.DAQ.${NAME},CH=${ECMC_DAQ_CURR_CH=00},TYPE=${TYPE=0},DESC=${DESC=}")

View File

@@ -20,7 +20,10 @@
#- The calculated time then would correspond to the first data in the array recived.\n"); #- The calculated time then would correspond to the first data in the array recived.\n");
#- 3 = time_ns_minus_period : Time: Raw value minus one period.\n"); #- 3 = time_ns_minus_period : Time: Raw value minus one period.\n");
#- SEND_OLD : 1 = Send one element old data (for scalars from last cycle, for arrays shift one element), defaults to 0 (send fresh data) #- SEND_OLD : 1 = Send one element old data (for scalars from last cycle, for arrays shift one element), defaults to 0 (send fresh data)
#- NAME : Name of DAQ array object
#- #-
#-################################################################################ #-################################################################################
ecmcDAQAddItem(${PARAM},${FORMAT=0},${SEND_OLD=0}) ecmcDAQAddItem(${PARAM},${FORMAT=0},${SEND_OLD=0})
ecmcEpicsEnvSetCalc("ECMC_DAQ_CURR_ITM" ,${ECMC_DAQ_CURR_ITM=-1}+1,"%02d")
dbLoadRecords(ecmcPluginDAQ_chX-itmX.template,"P=${ECMC_PREFIX},Name=${NAME},PORT=ECMC.PLUGIN.DAQ.${NAME},CH=${ECMC_DAQ_CURR_CH=00},ITEM=${ECMC_DAQ_CURR_ITM=00},VAL=${PARAM=empty},DESC='FORMAT=${FORMAT=0},SEND_OLD=${SEND_OLD=0}'")

View File

@@ -11,8 +11,9 @@
#-############################################################################### #-###############################################################################
#- #-
#- Arguments #- Arguments
#- NAME : Name of DAQ array #- NAME : Name of DAQ array
#- #- DATA_FLNK : Forward link from data array (optional, default to '')
#-
#-################################################################################ #-################################################################################
#- Connect to sources in order to know NELM.. Data sources must be known before added with the scripts.. #- Connect to sources in order to know NELM.. Data sources must be known before added with the scripts..
@@ -24,5 +25,7 @@ ecmcIf("${DAQ_NELM=-1}<0")
${IF_TRUE}ecmcExit : Failed read DAQ array NELM ${IF_TRUE}ecmcExit : Failed read DAQ array NELM
ecmcEndIf() ecmcEndIf()
dbLoadRecords(ecmcPluginDAQ.template,"P=${ECMC_PREFIX},Name=${NAME},NELM=${DAQ_NELM},PORT=ECMC.PLUGIN.DAQ.${NAME}") dbLoadRecords(ecmcPluginDAQ.template,"P=${ECMC_PREFIX},Name=${NAME},NELM=${DAQ_NELM},PORT=ECMC.PLUGIN.DAQ.${NAME},FLNK=${DATA_FLNK=''}")
epicsEnvUnset(DAQ_NELM) epicsEnvUnset(DAQ_NELM)
epicsEnvUnset(ECMC_DAQ_CURR_CH)
epicsEnvUnset(ECMC_DAQ_CURR_ITM)

View File

@@ -53,10 +53,11 @@ int daqConstruct(char *configStr)
**/ **/
void daqDestruct(void) void daqDestruct(void)
{ {
deleteAllDAQs(); // Segfaults here during destruction?! need to check..
if(lastConfStr){ //deleteAllDAQs();
free(lastConfStr); //if(lastConfStr){
} // free(lastConfStr);
//}
} }
/** Optional function. /** Optional function.