Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 498e752eb5 | |||
| 135d738eb0 | |||
| af41f31527 | |||
| b2b9ab5268 | |||
| bdfc2ff3cc | |||
| 411a083a77 | |||
| b0a55c7409 | |||
| 66f0001a39 | |||
| 7b35cb0f5c |
32
GNUmakefile
32
GNUmakefile
@@ -2,11 +2,13 @@ include /ioc/tools/driver.makefile
|
|||||||
|
|
||||||
MODULE = ecmc_plugin_daq
|
MODULE = ecmc_plugin_daq
|
||||||
|
|
||||||
BUILDCLASSES = Linux
|
# "Transfer" module name to plugin
|
||||||
ARCH_FILTER = deb10%
|
USR_CFLAGS +=-DECMC_PLUGIN_MODULE_NAME=${MODULE}
|
||||||
|
|
||||||
# Run 7.0.6 for now
|
BUILDCLASSES = Linux
|
||||||
EXCLUDE_VERSIONS+=3 7.0.5 7.0.6
|
ARCH_FILTER = deb10% deb12%
|
||||||
|
|
||||||
|
EXCLUDE_VERSIONS+=3 7.0.5 7.0.6 7.0.7
|
||||||
|
|
||||||
IGNORE_MODULES += asynMotor
|
IGNORE_MODULES += asynMotor
|
||||||
IGNORE_MODULES += motorBase
|
IGNORE_MODULES += motorBase
|
||||||
@@ -15,8 +17,26 @@ USR_CXXFLAGS += -std=c++17
|
|||||||
OPT_CXXFLAGS_YES = -O3
|
OPT_CXXFLAGS_YES = -O3
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
ECmasterECMC_VERSION = v1.1.0
|
ecmc_VERSION = 11.0
|
||||||
ecmc_VERSION = 9
|
|
||||||
|
# ethercat
|
||||||
|
# debian 12
|
||||||
|
EC_MASTER_VER = 1.6.3
|
||||||
|
EC_BASE_PATH = /ioc/NeedfulThings/EtherCAT/4epics/${EC_MASTER_VER}/
|
||||||
|
USR_CXXFLAGS_deb12-x86_64 += -I${EC_BASE_PATH}${T_A}/include/
|
||||||
|
USR_CXXFLAGS_deb12-x86_64 += -L${EC_BASE_PATH}${T_A}/lib/
|
||||||
|
|
||||||
|
LIB_SYS_LIBS += ethercat
|
||||||
|
USR_LDFLAGS_deb12-x86_64 += -Wl,-rpath=${EC_BASE_PATH}${T_A}/lib/
|
||||||
|
USR_LDFLAGS_deb12-x86_64 += -L ${EC_BASE_PATH}${T_A}/lib/
|
||||||
|
|
||||||
|
# debian 10
|
||||||
|
# note: EC_MASTER LIB does not depend on epics version hence use the 7.0.8 build..
|
||||||
|
USR_LDFLAGS_deb10-x86_64 += -lethercat
|
||||||
|
EC_MASTER_LIB = /ioc/NeedfulThings/EtherCAT/4epics/v1.1.0/R7.0.8/
|
||||||
|
USR_LDFLAGS_deb10-x86_64 += -Wl,-rpath=${EC_MASTER_LIB}lib/${T_A}
|
||||||
|
USR_LDFLAGS_deb10-x86_64 += -L ${EC_MASTER_LIB}lib/${T_A}
|
||||||
|
USR_CXXFLAGS_deb10-x86_64 += -I${EC_MASTER_LIB}/include/
|
||||||
|
|
||||||
BASE_DIR = .
|
BASE_DIR = .
|
||||||
SRC_DIR = $(BASE_DIR)/src
|
SRC_DIR = $(BASE_DIR)/src
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ static char* lastConfStr = NULL;
|
|||||||
static int alreadyLoaded = 0;
|
static int alreadyLoaded = 0;
|
||||||
|
|
||||||
/** Optional.
|
/** Optional.
|
||||||
* Will be called once after successfull load into ecmc.
|
* Will be called once after successful load into ecmc.
|
||||||
* Return value other than 0 will be considered error.
|
* Return value other than 0 will be considered error.
|
||||||
* configStr can be used for configuration parameters.
|
* configStr can be used for configuration parameters.
|
||||||
**/
|
**/
|
||||||
int daqConstruct(char *configStr)
|
static int daqConstruct(char *configStr)
|
||||||
{
|
{
|
||||||
if(alreadyLoaded) {
|
if(alreadyLoaded) {
|
||||||
printf("Error: Plugin ecmc_plugin_daq already loaded and can only be loaded once.");
|
printf("Error: Plugin ecmc_plugin_daq already loaded and can only be loaded once.");
|
||||||
@@ -51,7 +51,7 @@ int daqConstruct(char *configStr)
|
|||||||
/** Optional function.
|
/** Optional function.
|
||||||
* Will be called once at unload.
|
* Will be called once at unload.
|
||||||
**/
|
**/
|
||||||
void daqDestruct(void)
|
static void daqDestruct(void)
|
||||||
{
|
{
|
||||||
// Segfaults here during destruction?! need to check..
|
// Segfaults here during destruction?! need to check..
|
||||||
//deleteAllDAQs();
|
//deleteAllDAQs();
|
||||||
@@ -61,19 +61,19 @@ void daqDestruct(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Optional function.
|
/** Optional function.
|
||||||
* Will be called each realtime cycle if definded
|
* Will be called each realtime cycle if defined
|
||||||
* ecmcError: Error code of ecmc. Makes it posible for
|
* ecmcError: Error code of ecmc. Makes it possible for
|
||||||
* this plugin to react on ecmc errors
|
* this plugin to react on ecmc errors
|
||||||
* Return value other than 0 will be considered to be an error code in ecmc.
|
* Return value other than 0 will be considered to be an error code in ecmc.
|
||||||
**/
|
**/
|
||||||
int daqRealtime(int ecmcError)
|
static int daqRealtime(int ecmcError)
|
||||||
{
|
{
|
||||||
lastEcmcError = ecmcError;
|
lastEcmcError = ecmcError;
|
||||||
return executeDAQs();
|
return executeDAQs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int daqEnterRT(){
|
static int daqEnterRT(){
|
||||||
return validateDAQs(); //linkDataToDAQs();
|
return validateDAQs(); //linkDataToDAQs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,31 +81,16 @@ int daqEnterRT(){
|
|||||||
* Will be called once just before leaving realtime mode
|
* Will be called once just before leaving realtime mode
|
||||||
* Return value other than 0 will be considered error.
|
* Return value other than 0 will be considered error.
|
||||||
**/
|
**/
|
||||||
int daqExitRT(void){
|
static int daqExitRT(void){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Plc function for clear of buffers
|
|
||||||
// double daq_clear(double index) {
|
|
||||||
// return (double)clearDAQ((int)index);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Plc function for enable
|
|
||||||
//double daq_enable(double index, double enable) {
|
|
||||||
// return 0; //(double)enableDAQ((int)index, (int)enable);
|
|
||||||
//}
|
|
||||||
|
|
||||||
// // Plc function for trigg new measurement (will clear buffers)
|
|
||||||
// double daq_trigg(double index) {
|
|
||||||
// return (double)triggDAQ((int)index);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Register data for plugin so ecmc know what to use
|
// Register data for plugin so ecmc know what to use
|
||||||
struct ecmcPluginData pluginDataDef = {
|
static struct ecmcPluginData pluginDataDef = {
|
||||||
// Allways use ECMC_PLUG_VERSION_MAGIC
|
// Allways use ECMC_PLUG_VERSION_MAGIC
|
||||||
.ifVersion = ECMC_PLUG_VERSION_MAGIC,
|
.ifVersion = ECMC_PLUG_VERSION_MAGIC,
|
||||||
// Name
|
// Name
|
||||||
.name = "ecmcPlugin_DAQ",
|
.name = "ecmc_plugin_daq",
|
||||||
// Description
|
// Description
|
||||||
.desc = "DAQ plugin for use with ecmc.",
|
.desc = "DAQ plugin for use with ecmc.",
|
||||||
// Option description
|
// Option description
|
||||||
@@ -124,28 +109,6 @@ struct ecmcPluginData pluginDataDef = {
|
|||||||
.realtimeExitFnc = daqExitRT,
|
.realtimeExitFnc = daqExitRT,
|
||||||
// PLC funcs
|
// PLC funcs
|
||||||
.funcs[0] = {0},
|
.funcs[0] = {0},
|
||||||
// { /*----fft_clear----*/
|
|
||||||
// // Function name (this is the name you use in ecmc plc-code)
|
|
||||||
// .funcName = "daq_enable",
|
|
||||||
// // Function description
|
|
||||||
// .funcDesc = "daq_enable(index,enable) : Enable/disaable daq[index].",
|
|
||||||
// /**
|
|
||||||
// * 12 different prototypes allowed (only doubles since reg in plc).
|
|
||||||
// * Only funcArg${argCount} func shall be assigned the rest set to NULL.
|
|
||||||
// **/
|
|
||||||
// .funcArg0 = NULL,
|
|
||||||
// .funcArg1 = NULL,
|
|
||||||
// .funcArg2 = daq_enable,
|
|
||||||
// .funcArg3 = NULL,
|
|
||||||
// .funcArg4 = NULL,
|
|
||||||
// .funcArg5 = NULL,
|
|
||||||
// .funcArg6 = NULL,
|
|
||||||
// .funcArg7 = NULL,
|
|
||||||
// .funcArg8 = NULL,
|
|
||||||
// .funcArg9 = NULL,
|
|
||||||
// .funcArg10 = NULL,
|
|
||||||
// .funcGenericObj = NULL,
|
|
||||||
// },
|
|
||||||
.consts[0] = {0}, // last element set all to zero..
|
.consts[0] = {0}, // last element set all to zero..
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,15 @@
|
|||||||
#-###############################################################################
|
#-###############################################################################
|
||||||
#-
|
#-
|
||||||
#- Arguments
|
#- Arguments
|
||||||
#- PLUGIN_ID : Id of plugin to load (mandatory)
|
#- PLUGIN_ID : Id of plugin to load (optional)
|
||||||
#-
|
#-
|
||||||
#################################################################################
|
#################################################################################
|
||||||
|
|
||||||
#- Load plugin:
|
#- Load plugin:
|
||||||
|
|
||||||
epicsEnvSet(ECMC_PLUGIN_FILNAME,"$(ecmc_plugin_daq_DIR)lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_daq.so")
|
epicsEnvSet(ECMC_PLUGIN_FILNAME,"$(ecmc_plugin_daq_DIR)lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_daq.so")
|
||||||
${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=${PLUGIN_ID}, FILE='${ECMC_PLUGIN_FILNAME}' , CONFIG='NOT USED',REPORT=1"
|
ecmcIf("${PLUGIN_ID=-1}=-1")
|
||||||
|
${IF_TRUE}${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "FILE='${ECMC_PLUGIN_FILNAME}' , CONFIG='NOT USED',REPORT=1"
|
||||||
|
#else
|
||||||
|
${IF_FALSE}${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=${PLUGIN_ID}, FILE='${ECMC_PLUGIN_FILNAME}' , CONFIG='NOT USED',REPORT=1"
|
||||||
|
ecmcEndIf()
|
||||||
|
|||||||
Reference in New Issue
Block a user