From 5ff7e7fcd833af70726616113cca5173d039d266 Mon Sep 17 00:00:00 2001 From: Anders Sandstrom Date: Mon, 24 Jan 2022 16:05:52 +0100 Subject: [PATCH] Add sync ecmc and grbl positions before enable. Comment out some printfs --- ecmc_plugin_grbl/.vscode/settings.json | 14 +- ecmc_plugin_grbl/ecmcGrbl.cpp | 39 + ecmc_plugin_grbl/ecmcGrbl.h | 5 +- grbl/grbl_gcode.c | 34 +- grbl/grbl_protocol.c | 1 + grbl/grbl_stepper.c | 39 +- iocsh/cfg/linear_1.ax | 4 +- iocsh/log.log | 3543 ++++++++++++++++++++++++ iocsh/test.script | 5 +- 9 files changed, 3621 insertions(+), 63 deletions(-) create mode 100644 iocsh/log.log diff --git a/ecmc_plugin_grbl/.vscode/settings.json b/ecmc_plugin_grbl/.vscode/settings.json index bf1b0b1..ddceb65 100644 --- a/ecmc_plugin_grbl/.vscode/settings.json +++ b/ecmc_plugin_grbl/.vscode/settings.json @@ -2,6 +2,18 @@ "files.associations": { "queue": "cpp", "typeindex": "cpp", - "typeinfo": "cpp" + "typeinfo": "cpp", + "*.tcc": "cpp", + "optional": "cpp", + "istream": "cpp", + "ostream": "cpp", + "ratio": "cpp", + "system_error": "cpp", + "array": "cpp", + "functional": "cpp", + "regex": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp" } } \ No newline at end of file diff --git a/ecmc_plugin_grbl/ecmcGrbl.cpp b/ecmc_plugin_grbl/ecmcGrbl.cpp index 29a647c..788b7c7 100644 --- a/ecmc_plugin_grbl/ecmcGrbl.cpp +++ b/ecmc_plugin_grbl/ecmcGrbl.cpp @@ -330,6 +330,7 @@ void ecmcGrbl::doMainWorker() { if(destructs_) { return; } + delay_ms(1); } } @@ -378,9 +379,43 @@ bool ecmcGrbl::getAllConfiguredAxisEnabled() { return ena; } +double ecmcGrbl::getEcmcAxisActPos(int axis) { + double pos=0; + getAxisEncPosAct(axis, + &pos); + return pos; +} + +void ecmcGrbl::syncPositionIfNotEnabled() { + bool sync = 0; + if(cfgXAxisId_>=0) { + if(!getEcmcAxisEnabled(cfgXAxisId_)) { + sys_position[X_AXIS] = (int32_t)(double(settings.steps_per_mm[X_AXIS])*getEcmcAxisActPos(cfgXAxisId_)); + sync = 1; + } + } + if(cfgYAxisId_>=0) { + if(!getEcmcAxisEnabled(cfgYAxisId_)) { + sys_position[Y_AXIS] = (int32_t)(double(settings.steps_per_mm[Y_AXIS])*getEcmcAxisActPos(cfgYAxisId_)); + sync = 1; + } + } + if(cfgZAxisId_>=0) { + if(!getEcmcAxisEnabled(cfgZAxisId_)) { + sys_position[Z_AXIS] = (int32_t)(double(settings.steps_per_mm[Z_AXIS])*getEcmcAxisActPos(cfgZAxisId_)); + sync = 1; + } + } + + if(sync) { + plan_sync_position(); + } +} + // grb realtime thread!!! void ecmcGrbl::grblRTexecute() { + syncPositionIfNotEnabled(); autoEnableAtStart(); double sampleRateMs = 0.0; @@ -416,6 +451,10 @@ void ecmcGrbl::grblRTexecute() { // } } +//void ecmcGrbl::setExecute(int execute) { +// +//} + // Avoid issues with std:to_string() std::string ecmcGrbl::to_string(int value) { std::ostringstream os; diff --git a/ecmc_plugin_grbl/ecmcGrbl.h b/ecmc_plugin_grbl/ecmcGrbl.h index 5cd0681..8af00fc 100644 --- a/ecmc_plugin_grbl/ecmcGrbl.h +++ b/ecmc_plugin_grbl/ecmcGrbl.h @@ -46,15 +46,14 @@ class ecmcGrbl : public asynPortDriver { void grblRTexecute(); void addCommand(std::string command); - - private: void testGrbl(); void parseConfigStr(char *configStr); void autoEnableAtStart(); bool getEcmcAxisEnabled(int axis_id); bool getAllConfiguredAxisEnabled(); - + double getEcmcAxisActPos(int axis); + void syncPositionIfNotEnabled(); static std::string to_string(int value); int cfgDbgMode_; int cfgXAxisId_; diff --git a/grbl/grbl_gcode.c b/grbl/grbl_gcode.c index 6b83f8f..733efe2 100644 --- a/grbl/grbl_gcode.c +++ b/grbl/grbl_gcode.c @@ -120,15 +120,15 @@ uint8_t gc_execute_line(char *line) else { char_counter = 0; } while (line[char_counter] != 0) { // Loop until no more g-code words in line. - printf("1\n"); + //printf("1\n"); // Import the next g-code word, expecting a letter followed by a value. Otherwise, error out. letter = line[char_counter]; - printf("letter=%c\n", letter); + //printf("letter=%c\n", letter); if((letter < 'A') || (letter > 'Z')) { FAIL(STATUS_EXPECTED_COMMAND_LETTER); } // [Expected word letter] char_counter++; if (!read_float(line, &char_counter, &value)) { FAIL(STATUS_BAD_NUMBER_FORMAT); } // [Expected word value] - printf("value=%f\n", value); + //printf("value=%f\n", value); // Convert values to smaller uint8 significand and mantissa values for parsing this word. // NOTE: Mantissa is multiplied by 100 to catch non-integer command values. This is more // accurate than the NIST gcode requirement of x10 when used for commands, but not quite @@ -138,8 +138,8 @@ uint8_t gc_execute_line(char *line) // Maybe update this later. int_value = trunc(value); mantissa = round(100*(value - int_value)); // Compute mantissa for Gxx.x commands. - printf("int_value=%d\n", int_value); - printf("mantissa=%d\n", mantissa); + //printf("int_value=%d\n", int_value); + //printf("mantissa=%d\n", mantissa); // NOTE: Rounding must be used to catch small floating point errors. // Check if the g-code word is supported or errors due to modal group violations or has @@ -175,7 +175,7 @@ uint8_t gc_execute_line(char *line) if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] axis_command = AXIS_COMMAND_MOTION_MODE; // No break. Continues to next line. - printf("axis_command=%d\n", axis_command); + //printf("axis_command=%d\n", axis_command); case 80: word_bit = MODAL_GROUP_G1; @@ -187,7 +187,7 @@ uint8_t gc_execute_line(char *line) gc_block.modal.motion += (mantissa/10)+100; mantissa = 0; // Set to zero to indicate valid non-integer G command. } - printf("here!!\n"); + //printf("here!!\n"); break; case 17: case 18: case 19: word_bit = MODAL_GROUP_G2; @@ -244,13 +244,13 @@ uint8_t gc_execute_line(char *line) break; default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G command] } - printf("here 2!!\n"); + //printf("here 2!!\n"); if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [Unsupported or invalid Gxx.x command] // Check for more than one command per modal group violations in the current block // NOTE: Variable 'word_bit' is always assigned, if the command is valid. if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } command_words |= bit(word_bit); - printf("here 3!!\n"); + //printf("here 3!!\n"); break; case 'M': @@ -380,19 +380,19 @@ uint8_t gc_execute_line(char *line) // Determine implicit axis command conditions. Axis words have been passed, but no explicit axis // command has been sent. If so, set axis command to current motion mode. - printf("%s:%s:%d:axis_words=%d\n",__FILE__,__FUNCTION__,__LINE__,axis_words); - printf("%s:%s:%d:axis_command=%d\n",__FILE__,__FUNCTION__,__LINE__,axis_command); + //printf("%s:%s:%d:axis_words=%d\n",__FILE__,__FUNCTION__,__LINE__,axis_words); + //printf("%s:%s:%d:axis_command=%d\n",__FILE__,__FUNCTION__,__LINE__,axis_command); if (axis_words) { if (!axis_command) { axis_command = AXIS_COMMAND_MOTION_MODE; } // Assign implicit motion-mode } - printf("%s:%s:%d:axis_command=%d\n",__FILE__,__FUNCTION__,__LINE__,axis_command); + //printf("%s:%s:%d:axis_command=%d\n",__FILE__,__FUNCTION__,__LINE__,axis_command); // Check for valid line number N value. if (bit_istrue(value_words,bit(WORD_N))) { // Line number value cannot be less than zero (done) or greater than max line number. - if (gc_block.values.n > MAX_LINE_NUMBER) { FAIL(STATUS_GCODE_INVALID_LINE_NUMBER); } // [Exceeds max line number] +// if (gc_block.values.n > MAX_LINE_NUMBER) { FAIL(STATUS_GCODE_INVALID_LINE_NUMBER); } // [Exceeds max line number] } - printf("%s:%s:%d\n",__FILE__,__FUNCTION__,__LINE__); + //printf("%s:%s:%d\n",__FILE__,__FUNCTION__,__LINE__); // bit_false(value_words,bit(WORD_N)); // NOTE: Single-meaning value word. Set at end of error-checking. // Track for unused words at the end of error-checking. @@ -407,13 +407,13 @@ uint8_t gc_execute_line(char *line) // [2. Set feed rate mode ]: G93 F word missing with G1,G2/3 active, implicitly or explicitly. Feed rate // is not defined after switching to G94 from G93. // NOTE: For jogging, ignore prior feed rate mode. Enforce G94 and check for required F word. - printf("%s:%s:%d:gc_parser_flags=%d\n",__FILE__,__FUNCTION__,__LINE__,gc_parser_flags); + //printf("%s:%s:%d:gc_parser_flags=%d\n",__FILE__,__FUNCTION__,__LINE__,gc_parser_flags); if (gc_parser_flags & GC_PARSER_JOG_MOTION) { if (bit_isfalse(value_words,bit(WORD_F))) { FAIL(STATUS_GCODE_UNDEFINED_FEED_RATE); } if (gc_block.modal.units == UNITS_MODE_INCHES) { gc_block.values.f *= MM_PER_INCH; } } else { - printf("%s:%s:%d:gc_block.modal.feed_rate=%d\n",__FILE__,__FUNCTION__,__LINE__,gc_block.modal.feed_rate); + //printf("%s:%s:%d:gc_block.modal.feed_rate=%d\n",__FILE__,__FUNCTION__,__LINE__,gc_block.modal.feed_rate); if (gc_block.modal.feed_rate == FEED_RATE_MODE_INVERSE_TIME) { // = G93 // NOTE: G38 can also operate in inverse time, but is undefined as an error. Missing F word check added here. @@ -440,7 +440,7 @@ uint8_t gc_execute_line(char *line) if (bit_istrue(value_words,bit(WORD_F))) { if (gc_block.modal.units == UNITS_MODE_INCHES) { gc_block.values.f *= MM_PER_INCH; } } else { - printf("%s:%s:%d:gc_state.feed_rate=%f\n",__FILE__,__FUNCTION__,__LINE__,gc_state.feed_rate); + //printf("%s:%s:%d:gc_state.feed_rate=%f\n",__FILE__,__FUNCTION__,__LINE__,gc_state.feed_rate); gc_block.values.f = gc_state.feed_rate; // Push last state feed rate } diff --git a/grbl/grbl_protocol.c b/grbl/grbl_protocol.c index 5800aab..8010a83 100644 --- a/grbl/grbl_protocol.c +++ b/grbl/grbl_protocol.c @@ -151,6 +151,7 @@ void protocol_main_loop() } } + delay_us(100); } // If there are no more characters in the serial read buffer to be processed and executed, diff --git a/grbl/grbl_stepper.c b/grbl/grbl_stepper.c index f882635..e84b969 100644 --- a/grbl/grbl_stepper.c +++ b/grbl/grbl_stepper.c @@ -84,7 +84,7 @@ static st_block_t st_block_buffer[SEGMENT_BUFFER_SIZE-1]; typedef struct { uint16_t n_step; // Number of step events to be executed for this segment uint16_t cycles_per_tick; // Step distance traveled per ISR tick, aka step rate. - double ecmc_interrupt_time_ms; + double ecmc_interrupt_time_ms; //Added for ecmc uint8_t st_block_index; // Stepper block data index. Uses this information to execute this segment. #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING uint8_t amass_level; // Indicates AMASS level for the ISR to execute this segment @@ -222,43 +222,6 @@ static bool stepperInterruptEnable = 0; are shown and defined in the above illustration. */ -//void ecmc_grbl_main_rt_thread(); -//pthread_t tid; -// -//void *ecmc_dummy_thread(void *ptr) { -// printf("%s:%s:%d\n",__FILE__,__FUNCTION__,__LINE__); -// -// while (stepperInterruptEnable) { -// for(int i=0; i < 30; i++) { -// if(!stepperInterruptEnable) { -// break; -// } -// ecmc_grbl_main_rt_thread(); -// } -// -// printf("%s:%s:%d Positions(x,y,z)=%d,%d,%d..\n",__FILE__,__FUNCTION__,__LINE__,sys_position[X_AXIS], sys_position[Y_AXIS],sys_position[Z_AXIS] ); -// delay_ms(1); -// } -// fflush(stdout); -//} -// -//void ecmc_start_dummy_thread() -//{ -// printf("%s:%s:%d\n",__FILE__,__FUNCTION__,__LINE__); -// -// int i = 0; -// int err; -// -// err = pthread_create(&(tid), NULL, *ecmc_dummy_thread, NULL); -// if (err != 0) -// printf("\ncan't create thread :[%s]", strerror(err)); -// else -// printf("\n Thread created successfully\n"); -// i++; -// return; -//} -// - // Stepper state initialization. Cycle should only start if the st.cycle_start flag is // enabled. Startup init and limits call this function but shouldn't start the cycle. void st_wake_up() diff --git a/iocsh/cfg/linear_1.ax b/iocsh/cfg/linear_1.ax index be3ddfe..b4c4917 100644 --- a/iocsh/cfg/linear_1.ax +++ b/iocsh/cfg/linear_1.ax @@ -13,7 +13,7 @@ epicsEnvSet("ECMC_MOD_TYPE", "0") # For pos #Encoder epicsEnvSet("ECMC_ENC_SCALE_NUM" "-60") epicsEnvSet("ECMC_ENC_SCALE_DENOM" "2000") -epicsEnvSet("ECMC_ENC_TYPE" "0") # Type: 0=Incremental, 1=Absolute +epicsEnvSet("ECMC_ENC_TYPE" "1") # Type: 0=Incremental, 1=Absolute epicsEnvSet("ECMC_ENC_BITS" "16") # Total bit count of encoder raw data epicsEnvSet("ECMC_ENC_ABS_BITS", "0") # Absolute bit count (for absolute encoders) always least significant part of ECMC_ENC_BITS epicsEnvSet("ECMC_ENC_ABS_OFFSET" "0") # Encoder offset in eng units (for absolute encoders) @@ -42,7 +42,7 @@ epicsEnvSet("ECMC_EC_DRV_ALARM_2", "ec0.s8.driveStatus01.14") # Sync epicsEnvSet("ECMC_EC_DRV_WARNING", "ec0.s8.driveStatus01.2") # Warning #Trajectory -epicsEnvSet("ECMC_TRAJ_TYPE" "1") # Trapetz: 0. S-Curve: 1 +epicsEnvSet("ECMC_TRAJ_TYPE" "0") # Trapetz: 0. S-Curve: 1 epicsEnvSet("ECMC_VELO", "10.0") epicsEnvSet("ECMC_JOG_VEL", "5") epicsEnvSet("ECMC_JAR", "0.0") # JAR defaults to VELO/ACCL diff --git a/iocsh/log.log b/iocsh/log.log new file mode 100644 index 0000000..3d4826f --- /dev/null +++ b/iocsh/log.log @@ -0,0 +1,3543 @@ +registerChannelProviderLocal firstTime true +# +# Start at "2022-W04-Jan24-1604-06-CET" +# +# Version information: +# European Spallation Source ERIC : iocsh.bash (3.4.0-PID-16029) +# +# --->--> snip -->--> +# Please Use Version and other environment variables +# in order to report or debug this shell +# +# HOSTDISPLAY="" +# WINDOWID="" +# PWD="/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh" +# USER="pi" +# LOGNAME="pi" +# EPICS_HOST_ARCH="linux-arm" +# EPICS_BASE="/home/pi/epics/base-7.0.5" +# E3_REQUIRE_NAME="require" +# E3_REQUIRE_VERSION="3.4.0" +# E3_REQUIRE_LOCATION="/home/pi/epics/base-7.0.5/require/3.4.0" +# E3_REQUIRE_BIN="/home/pi/epics/base-7.0.5/require/3.4.0/bin" +# E3_REQUIRE_DB="/home/pi/epics/base-7.0.5/require/3.4.0/db" +# E3_REQUIRE_DBD="/home/pi/epics/base-7.0.5/require/3.4.0/dbd" +# E3_REQUIRE_INC="/home/pi/epics/base-7.0.5/require/3.4.0/include" +# E3_REQUIRE_LIB="/home/pi/epics/base-7.0.5/require/3.4.0/lib" +# EPICS_DRIVER_PATH="/home/pi/epics/base-7.0.5/require/3.4.0/siteMods:/home/pi/epics/base-7.0.5/require/3.4.0/siteApps" +# EPICS_CA_AUTO_ADDR_LIST="" +# EPICS_CA_ADDR_LIST="" +# PATH="/home/pi/epics/base-7.0.5/require/3.4.0/bin:/home/pi/epics/base-7.0.5/bin/linux-arm:/home/pi/berryconda3/bin:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games" +# --->--> snip -->--> +# +# Set REQUIRE_IOC for its internal PVs +epicsEnvSet REQUIRE_IOC "REQMOD:raspberrypi-16029" +# +# Enable an exit subroutine for sotfioc +dbLoadRecords "/home/pi/epics/base-7.0.5/db/softIocExit.db" "IOC=REQMOD:raspberrypi-16029" +# +# Set E3_IOCSH_TOP for the absolute path where iocsh.bash is executed. +epicsEnvSet E3_IOCSH_TOP "/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh" +# +# +# Load require module, which has the version 3.4.0 +# +dlload /home/pi/epics/base-7.0.5/require/3.4.0/lib/linux-arm/librequire.so +dbLoadDatabase /home/pi/epics/base-7.0.5/require/3.4.0/dbd/require.dbd +require_registerRecordDeviceDriver +Loading module info records for require +# +# Set E3_CMD_TOP for the absolute path where test.script exists +epicsEnvSet E3_CMD_TOP "/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh" +# +iocshLoad 'test.script','' +############################################################################## +## Example: Demo of ecmc grbl g-code plugin +## https://github.com/anderssandstrom/ecmc_plugin_grbl +## https://github.com/anderssandstrom/e3-ecmc_plugin_grbl +## +## The plugin exposes: +## +## Initiation: +epicsEnvSet("IOC" ,"IOC_TEST") +epicsEnvSet("ECMCCFG_INIT" ,"") #Only run startup once (auto at PSI, need call at ESS), variable set to "#" in startup.cmd +epicsEnvSet("SCRIPTEXEC" ,"iocshLoad") +require ecmccfg ruckig +Module ecmccfg version ruckig found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/lib/linux-arm/libecmccfg.so +Loaded ecmccfg version ruckig +Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/dbd/ecmccfg.dbd +Calling function ecmccfg_registerRecordDeviceDriver +Loading module info records for ecmccfg +# Epics Motor record driver that will be used: +epicsEnvShow(ECMC_MR_MODULE) +ECMC_MR_MODULE is not an environment variable. +# run module startup.cmd (only needed at ESS PSI auto call at require) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/startup.cmd, "IOC=IOC_TEST,ECMC_VER=ruckig" +#============================================================================== +# startup.cmd +on error halt +require ecmc "ruckig" +Module ecmc version ruckig found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/ruckig/ +Module ecmc depends on asyn 4.41.0 +Module asyn version 4.41.0 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/ +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/lib/linux-arm/libasyn.so +Loaded asyn version 4.41.0 +Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/dbd/asyn.dbd +Calling function asyn_registerRecordDeviceDriver +Loading module info records for asyn +Module ecmc depends on exprtk 1.2.1 +Module exprtk version 1.2.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/exprtk/1.2.1/ +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/exprtk/1.2.1/lib/linux-arm/libexprtk.so +Loaded exprtk version 1.2.1 +exprtk has no dbd file +Loading module info records for exprtk +Module ecmc depends on motor develop +Module motor version develop found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/develop/ +Module motor depends on asyn 4.41.0 +Module asyn version 4.41.0 already loaded +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/develop/lib/linux-arm/libmotor.so +Loaded motor version develop +Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/develop/dbd/motor.dbd +Calling function motor_registerRecordDeviceDriver +Loading module info records for motor +Module ecmc depends on ruckig 1.0.0 +Module ruckig version 1.0.0 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ruckig/1.0.0/ +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ruckig/1.0.0/lib/linux-arm/libruckig.so +Loaded ruckig version 1.0.0 +ruckig has no dbd file +Loading module info records for ruckig +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/ruckig/lib/linux-arm/libecmc.so +Loaded ecmc version ruckig +Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/ruckig/dbd/ecmc.dbd +Calling function ecmc_registerRecordDeviceDriver +Loading module info records for ecmc +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'ecmcMotorRecord'='EthercatMC'", "require EthercatMC 3.0.2 # Using EthercatMC motor record support.","# Using ecmcMotorRecord motor record support.") +# Using ecmcMotorRecord motor record support. +epicsEnvUnset(ECMC_EXE_CMD) +epicsEnvSet("ECMC_CONFIG_ROOT", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/") +epicsEnvSet("ECMC_CONFIG_DB", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/db") +epicsEnvSet("SCRIPTEXEC", "iocshLoad") +epicsEnvSet("SM_PREFIX", "IOC_TEST:") # colon added since IOC is _not_ PREFIX +epicsEnvSet("ECMC_PROC_HOOK", "") +epicsEnvSet(ECMC_MODE, FULL) +ecmcEpicsEnvSetCalcTernary(ECMC_SUPPORT_MOTION, "'FULL'!='DAQ'","","# MODE == DAQ, DISABLING MOTION.") +epicsEnvShow(ECMC_SUPPORT_MOTION) +ECMC_SUPPORT_MOTION= +ecmcEpicsEnvSetCalcTernary(ECMC_USE_MOTOR_RECORD, "'FULL'=='FULL'","","# MODE != FULL, DISABLING MOTOR RECORD.") +epicsEnvShow(ECMC_USE_MOTOR_RECORD) +ECMC_USE_MOTOR_RECORD= +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAll.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAll.cmd" +#============================================================================== +# initAll.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/init.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/init.cmd +#============================================================================== +# init.cmd +epicsEnvSet("ECMC_ASYN_TIMEOUT", 1) # Asyn timeout +epicsEnvSet("ECMC_ASYN_ADDR", 0) # Asyn Address +epicsEnvSet("ECMC_MOTOR_PORT", "NOT SET") +epicsEnvSet("ECMC_ASYN_PORT", "NOT SET") +epicsEnvSet("ECMC_PREFIX", "NOT SET") +epicsEnvSet("ECMC_GEN_EC_RECORDS", "NOT SET") +epicsEnvSet("ECMC_GEN_AX_RECORDS", "NOT SET") +epicsEnvSet("ECMC_EC_AXIS_HEALTH", "NOT SET") +epicsEnvSet("ECMC_PLC_SAMPLE_RATE_MS", "NOT SET") +epicsEnvSet("ECMC_TSE", -2) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAxis.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAxis.cmd" +#============================================================================== +# initAxis.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd" +#============================================================================== +# ecmc_axis_unset.cmd +epicsEnvUnset(ECMC_AXISCONFIG) +epicsEnvUnset(ECMC_AXISFIELDINIT) +epicsEnvUnset(ECMC_PREC) +epicsEnvUnset(ECMC_EGU) +epicsEnvUnset(ECMC_DESC) +epicsEnvUnset(ECMC_R) +epicsEnvUnset(ECMC_MOTOR_NAME) +epicsEnvUnset(ECMC_EC_AXIS_HEALTH) +epicsEnvUnset(ECMC_MOD_RANGE) +epicsEnvUnset(ECMC_MOD_TYPE) +epicsEnvUnset(ECMC_EMERG_DECEL) +epicsEnvUnset(ECMC_VELO) +epicsEnvUnset(ECMC_ACCL) +epicsEnvUnset(ECMC_ACCS_EGU_PER_S2) +epicsEnvUnset(ECMC_HOME_VEL_TO) +epicsEnvUnset(ECMC_HOME_VEL_FRM) +epicsEnvUnset(ECMC_CNTRL_KP) +epicsEnvUnset(ECMC_CNTRL_KI) +epicsEnvUnset(ECMC_CNTRL_KD) +epicsEnvUnset(ECMC_CNTRL_KFF) +epicsEnvUnset(ECMC_EC_ENC_ACTPOS) +epicsEnvUnset(ECMC_EC_ENC_LATCHPOS) +epicsEnvUnset(ECMC_EC_ENC_LATCH_CONTROL) +epicsEnvUnset(ECMC_EC_ENC_LATCH_STATUS) +epicsEnvUnset(ECMC_HOME_LATCH_COUNT_OFFSET) +epicsEnvUnset(ECMC_ENC_SCALE_DENOM) +epicsEnvUnset(ECMC_ENC_SCALE_NUM) +epicsEnvUnset(ECMC_ENC_TYPE) +epicsEnvUnset(ECMC_ENC_BITS) +epicsEnvUnset(ECMC_ENC_ABS_BITS) +epicsEnvUnset(ECMC_ENC_ABS_OFFSET) +epicsEnvUnset(ECMC_ENC_VEL_FILTER_SIZE) +epicsEnvUnset(ECMC_ENC_POS_FILTER_SIZE) +epicsEnvUnset(ECMC_ENC_POS_FILTER_ENABLE) +epicsEnvUnset(ECMC_EC_ENC_RESET) +epicsEnvUnset(ECMC_EC_ENC_ALARM_0) +epicsEnvUnset(ECMC_EC_ENC_ALARM_1) +epicsEnvUnset(ECMC_EC_ENC_ALARM_2) +epicsEnvUnset(ECMC_EC_ENC_WARNING) +epicsEnvUnset(ECMC_EC_DRV_CONTROL) +epicsEnvUnset(ECMC_EC_DRV_STATUS) +epicsEnvUnset(ECMC_EC_DRV_VELOCITY) +epicsEnvUnset(ECMC_EC_DRV_BRAKE) +epicsEnvUnset(ECMC_EC_DRV_REDUCE_TORQUE) +epicsEnvUnset(ECMC_EC_DRV_RESET) +epicsEnvUnset(ECMC_EC_DRV_ALARM_0) +epicsEnvUnset(ECMC_EC_DRV_ALARM_1) +epicsEnvUnset(ECMC_EC_DRV_ALARM_2) +epicsEnvUnset(ECMC_EC_DRV_WARNING) +epicsEnvUnset(ECMC_DRV_SCALE_DENOM) +epicsEnvUnset(ECMC_DRV_SCALE_NUM) +epicsEnvUnset(ECMC_DRV_BRAKE_OPEN_DLY_TIME) +epicsEnvUnset(ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME) +epicsEnvUnset(ECMC_SOFT_LOW_LIM) +epicsEnvUnset(ECMC_DXLM_ENABLE) +epicsEnvUnset(ECMC_SOFT_HIGH_LIM) +epicsEnvUnset(ECMC_DXLM_ENABLE) +epicsEnvUnset(ECMC_EC_MON_LOWLIM) +epicsEnvUnset(ECMC_EC_MON_HIGHLIM) +epicsEnvUnset(ECMC_EC_MON_HOME_SWITCH) +epicsEnvUnset(ECMC_EC_MON_EXT_INTERLOCK) +epicsEnvUnset(ECMC_MON_AT_TARGET_TOL) +epicsEnvUnset(ECMC_MON_AT_TARGET_TIME) +epicsEnvUnset(ECMC_MON_AT_TARGET_ENA) +epicsEnvUnset(ECMC_MON_LAG_MON_TOL) +epicsEnvUnset(ECMC_MON_LAG_MON_TIME) +epicsEnvUnset(ECMC_MON_LAG_MON_ENA) +epicsEnvUnset(ECMC_MON_VELO_MAX) +epicsEnvUnset(ECMC_MON_VELO_MAX_ENA) +epicsEnvUnset(ECMC_MON_VELO_MAX_DRV_TIME) +epicsEnvUnset(ECMC_MON_VELO_MAX_TRAJ_TIME) +epicsEnvUnset(ECMC_JOG_VEL) +epicsEnvUnset(ECMC_JAR) +epicsEnvUnset(ECMC_HOME_PROC) +epicsEnvUnset(ECMC_HOME_POS) +epicsEnvUnset(ECMC_HOME_ACC) +epicsEnvUnset(ECMC_HOME_DEC) +epicsEnvUnset(ECMC_DRV_TYPE) +epicsEnvUnset(ECMC_VELO) +epicsEnvUnset(ECMC_SOFT_LOW_LIM) +epicsEnvUnset(ECMC_SOFT_HIGH_LIM) +epicsEnvUnset(ECMC_HOME_POS_MOVE_ENA) +epicsEnvUnset(ECMC_HOME_POS_MOVE_TARG_POS) +epicsEnvUnset(ECMC_TRAJ_TYPE) +epicsEnvUnset(ECMC_JERK) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd" +#============================================================================== +# ecmc_axis_sync_unset.cmd +epicsEnvUnset(ECMC_CMD_FRM_OTHER_PLC_ENABLE) +epicsEnvUnset(ECMC_CMD_AXIS_PLC_ENABLE) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_1) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_2) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_3) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_4) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_5) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_6) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_7) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_8) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_9) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_10) +epicsEnvUnset(ECMC_ENC_VELO_FILT_SIZE) +epicsEnvUnset(ECMC_ENC_VELO_FILT_ENABLE) +epicsEnvUnset(ECMC_ENC_SOURCE) +epicsEnvUnset(ECMC_TRAJ_VELO_FILT_SIZE) +epicsEnvUnset(ECMC_TRAJ_VELO_FILT_ENABLE) +epicsEnvUnset(ECMC_TRAJ_SOURCE) +epicsEnvSet("ECMC_EGU", "mm") +epicsEnvSet("ECMC_PREC", 3) +epicsEnvSet("ECMC_AXISFIELDINIT", "") # Extra field ini2022/01/24 16:04:06.629 +ECMC Initializes............. +2022/01/24 16:04:06.630 ESS Open Source EtherCAT Motion Control Epics Module2022/01/24 16:04:06.630 +Mode: Configuration +2022/01/24 16:04:06.630 OK +2022/01/24 16:04:06.630 OK +2022/01/24 16:04:06.631 OK +2022/01/24 16:04:06.634 OK +2022/01/24 16:04:06.654 OK +2022/01/24 16:04:06.654 OK +2022/01/24 16:04:06.654 OK +t to motor record +epicsEnvSet("ECMC_AXISCONFIG", "") # Extra parameters to driver +############################################################ +############# ASYN Configuration: +epicsEnvSet("ECMC_MOTOR_PORT" "MCU1") +epicsEnvSet("ECMC_ASYN_PORT" "MC_CPU1") +epicsEnvSet("ECMC_PREFIX" "IOC_TEST:") +ecmcAsynPortDriverConfigure(MC_CPU1,1000,0,0,100) +ecmcAsynPortDriverConfigure: portName = MC_CPU1, paramTableSize = 1000, disableAutoConnect = 0, priority = 0, defaultSampleRateMS = 100.000000 +asynOctetSetOutputEos(MC_CPU1, -1, ";\n") +asynOctetSetInputEos(MC_CPU1, -1, ";\n") +asynSetTraceMask(MC_CPU1, -1, 0x41) +asynSetTraceIOMask(MC_CPU1, -1, 6) +asynSetTraceInfoMask(MC_CPU1, -1, 1) +ecmcMotorRecordCreateController(MCU1, MC_CPU1, "64", 200, 1000, "") +############################################################ +############# Misc settings: +# Disable function call trace printouts +ecmcConfigOrDie "Cfg.SetEnableFuncCallDiag(0)" +# Disable on change printouts from objects (enable for easy logging) +ecmcConfigOrDie "Cfg.SetTraceMaskBit(15,0)" +# Choose to generate EPICS-records for EtherCAT-entries +# (For records use ECMC_GEN_EC_RECORDS="-records" otherwise ECMC_GEN_EC_RECORDS="") +epicsEnvSet("ECMC_GEN_EC_RECORDS", "-records") +# Choose to generate EPICS-records for ax-entries (PosAct, SetPos,..) +# (For records use ECMC_GEN_AX_RECORDS="-records" otherwise ECMC_GEN_AX_RECORDS="") +epicsEnvSet("ECMC_GEN_AX_RECORDS", "-records") +# suffix for pva enabled scripts, templates and substitutions +ecmcEpicsEnvSetCalcTernary(ECMC_PVA, "0", "Pva","") +# Set EtherCAT frequency (defaults to 1000) +ecmcConfigOrDie "Cfg.SetSampleRate(1000)" +epicsEnvSet("ECMC_EC_SAMPLE_RATE" , 1000) +ecmcEpicsEnvSetCalc("ECMC_EC_SAMPLE_RATE_MS" ,1000/1000) +# Update records in 10ms (100Hz) for FULL MODE and in EC_RATE for DAQ mode +ecmcEpicsEnvSetCalcTernary(ECMC_SAMPLE_RATE_MS, "'FULL'=='DAQ'","1","10") +epicsEnvSet("ECMC_P_SCRIPT", "mXsXXX") +ecmcEpicsEnvSetCalcTernary(ECMC_MASTER_CMD, "0>=0", "","#- ") + ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addMaster.cmd",1) + iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addMaster.cmd", "MASTER_ID=0" +#=============================================================================== +# addMaster.cfg +epicsEnvSet("ECMC_EC_MASTER_ID" "0") +# Claim master +ecmcConfigOrDie "Cfg.EcSetMaster(0)" +epicsEnvSet("ECMC_EC_MASTER_ID" ,0) +epicsEnvSet("ECMC_TMP_DIR", "/tmp/IOC_TEST/EcMaster_0/") +system "mkdir -p /tmp/IOC_TEST/EcMaster_0/" +epicsEnvSet("ECMC_TMP_DIR", "/tmp/IOC_TEST/EcMaster_0/") +system "mkdir -p /tmp/IOC_TEST/EcMaster_0/" +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/setDiagnostics.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/setDiagnostics.cmd +#============================================================================== +# setDiagnostics.cmd +ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)" +ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)" +ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)" +epicsEnvSet("ECMCCFG_INIT" ,"#") +############################################################################## +## Configure hardware: +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcMCU1021_coupler.cmd +############################################################ +############# MCU1021: +#Configure EK1100 coupler terminal +epicsEnvSet(ECMC_EC_SLAVE_NUM,0) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=0, HW_DESC=EK1100" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "0") +epicsEnvSet("HW_DESC", "EK1100") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEK1100.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEK1100.cmd" 2022/01/24 16:04:06.657 OK +2022/01/24 16:04:06.658 OK +2022/01/24 16:04:06.665 OK +2022/01/24 16:04:06.667 OK +2022/01/24 16:04:06.667 OK +2022/01/24 16:04:06.668 OK +2022/01/24 16:04:06.668 OK +"NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EK1100") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x044c2c52") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,0,0x2,0x044c2c52)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ") +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +ecmcConfigOrDie "Cfg.EcAddSlave(0,0,0x2,0x044c2c52)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=0,HWTYPE=EK1100" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "0","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s000") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s000-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEK1100.substitutions,ECMC_P=IOC_TEST:m0s000-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEK1100.substitutions,1,1) +dbLoadTemplate(ecmcEK1100.substitutions,"ECMC_P=IOC_TEST:m0s000-,ECMC_G=IOC_TEST:m0s000,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=0,HWTYPE=EK1100,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s000-,ECMC_G=IOC_TEST:m0s000" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s000-,ECMC_G=IOC_TEST:m0s000,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=0,HWTYPE=EK1100,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "0+1","%d") +#Configure EL1018 digital input terminal +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "0+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=1, HW_DESC=EL1018" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "1") +epicsEnvSet("HW_DESC", "EL1018") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL1018.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL1018.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL1018") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x03fa3052") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,1,0x2,0x03fa3052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ") +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX1008.cmd +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a00,0x6000,0x1,B1,binaryInput01)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a01,0x6010,0x1,B1,binaryInput02)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a02,0x6020,0x1,B1,binaryInput03)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a03,0x6030,0x1,B1,binaryInput04)" +ecmcConfigOrDie "Cfg.EcAddEn2022/01/24 16:04:06.670 OK +2022/01/24 16:04:06.670 OK +2022/01/24 16:04:06.670 OK +2022/01/24 16:04:06.670 OK +2022/01/24 16:04:06.680 OK +2022/01/24 16:04:06.681 OK +2022/01/24 16:04:06.682 OK +2022/01/24 16:04:06.682 OK +2022/01/24 16:04:06.683 OK +2022/01/24 16:04:06.683 OK +2022/01/24 16:04:06.683 OK +tryDT(1,0x2,0x03fa3052,2,0,0x1a04,0x6040,0x1,B1,binaryInput05)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a05,0x6050,0x1,B1,binaryInput06)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a06,0x6060,0x1,B1,binaryInput07)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a07,0x6070,0x1,B1,binaryInput08)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=1,HWTYPE=EL1018" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "1","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s001") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s001-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL1018.substitutions,ECMC_P=IOC_TEST:m0s001-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL1018.substitutions,1,1) +dbLoadTemplate(ecmcEL1018.substitutions,"ECMC_P=IOC_TEST:m0s001-,ECMC_G=IOC_TEST:m0s001,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=1,HWTYPE=EL1018,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s001-,ECMC_G=IOC_TEST:m0s001" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s001-,ECMC_G=IOC_TEST:m0s001,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=1,HWTYPE=EL1018,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "1+1","%d") +#Configure EL2808 digital output terminal +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "1+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=2, HW_DESC=EL2808" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "2") +epicsEnvSet("HW_DESC", "EL2808") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL2808.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL2808.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL2808") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x0af83052") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,2,0x2,0x0af83052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ") +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX2008.cmd +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1600,0x7000,0x1,B1,binaryOutput01)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1601,0x7010,0x1,B1,binaryOutput02)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1602,0x7020,0x1,B1,binaryOutput03)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1603,0x7030,0x1,B1,binaryOutput04)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1604,0x7040,0x1,B1,binaryOutput05)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1605,0x7050,0x1,B1,binaryOutput06)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1606,0x7060,0x1,B1,binaryOutp2022/01/24 16:04:06.685 OK +2022/01/24 16:04:06.685 OK +2022/01/24 16:04:06.697 OK +2022/01/24 16:04:06.792 OK +2022/01/24 16:04:06.892 14385 +2022/01/24 16:04:06.894 OK +2022/01/24 16:04:06.894 OK +2022/01/24 16:04:06.895 OK +2022/01/24 16:04:06.896 OK +2022/01/24 16:04:06.896 OK +ut07)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1607,0x7070,0x1,B1,binaryOutput08)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=2,HWTYPE=EL2808" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "2","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s002") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s002-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL2808.substitutions,ECMC_P=IOC_TEST:m0s002-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL2808.substitutions,1,1) +dbLoadTemplate(ecmcEL2808.substitutions,"ECMC_P=IOC_TEST:m0s002-,ECMC_G=IOC_TEST:m0s002,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=2,HWTYPE=EL2808,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s002-,ECMC_G=IOC_TEST:m0s002" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s002-,ECMC_G=IOC_TEST:m0s002,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=2,HWTYPE=EL2808,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "2+1","%d") +# Save the slave number for later +epicsEnvSet("ECMC_EC_SLAVE_NUM_DIG_OUT", "2") +#Configure EL5101 Incremental Encoder Interface +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "2+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=3, HW_DESC=EL5101" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "3") +epicsEnvSet("HW_DESC", "EL5101") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL5101.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL5101.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL5101") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x13ed3052") +ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd,1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd "RESET=true" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,3,0x2,0x13ed3052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ") +ecmcConfigOrDie "Cfg.EcWriteSdo(3,0x1011,0x1,1684107116,4)" +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +ecmcConfig "EcReadSdo(3,0x100a,0x0,2)" +ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "14385", "0x%04x") +# Firmware version: 0x3831 +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,1,2,0x1600,0x7000,0x01,8,encoderControl01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,1,2,0x1600,0x7000,0x02,16,encoderValue01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x00,16,encoderStatus01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x10,16,positionActual01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x20,16,encoderLatchPostion01)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/re2022/01/24 16:04:06.908 OK +2022/01/24 16:04:06.992 OK +2022/01/24 16:04:07.082 14385 +2022/01/24 16:04:07.083 OK +2022/01/24 16:04:07.084 OK +2022/01/24 16:04:07.084 OK +2022/01/24 16:04:07.084 OK +2022/01/24 16:04:07.084 OK +quire/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=3,HWTYPE=EL5101" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "3","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s003") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s003-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL5101.substitutions,ECMC_P=IOC_TEST:m0s003-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL5101.substitutions,1,1) +dbLoadTemplate(ecmcEL5101.substitutions,"ECMC_P=IOC_TEST:m0s003-,ECMC_G=IOC_TEST:m0s003,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=3,HWTYPE=EL5101,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s003-,ECMC_G=IOC_TEST:m0s003" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s003-,ECMC_G=IOC_TEST:m0s003,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=3,HWTYPE=EL5101,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "3+1","%d") +#Configure EL5101 Incremental Encoder Interface +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "3+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=4, HW_DESC=EL5101" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "4") +epicsEnvSet("HW_DESC", "EL5101") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL5101.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL5101.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL5101") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x13ed3052") +ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd,1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd "RESET=true" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,4,0x2,0x13ed3052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ") +ecmcConfigOrDie "Cfg.EcWriteSdo(4,0x1011,0x1,1684107116,4)" +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +ecmcConfig "EcReadSdo(4,0x100a,0x0,2)" +ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "14385", "0x%04x") +# Firmware version: 0x3831 +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +ecmcConfigOrDie "Cfg.EcAddEntryComplete(4,0x2,0x13ed3052,1,2,0x1600,0x7000,0x01,8,encoderControl01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(4,0x2,0x13ed3052,1,2,0x1600,0x7000,0x02,16,encoderValue01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(4,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x00,16,encoderStatus01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(4,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x10,16,positionActual01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(4,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x20,16,encoderLatchPostion01)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=4,HWTYPE=EL5101" +#=======================================================================2022/01/24 16:04:07.097 OK +2022/01/24 16:04:07.099 OK +2022/01/24 16:04:07.099 OK +======= +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "4","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s004") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s004-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL5101.substitutions,ECMC_P=IOC_TEST:m0s004-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL5101.substitutions,1,1) +dbLoadTemplate(ecmcEL5101.substitutions,"ECMC_P=IOC_TEST:m0s004-,ECMC_G=IOC_TEST:m0s004,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=4,HWTYPE=EL5101,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s004-,ECMC_G=IOC_TEST:m0s004" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s004-,ECMC_G=IOC_TEST:m0s004,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=4,HWTYPE=EL5101,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "4+1","%d") +# Configure EL9505 Power supply terminal 5V +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "4+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=5, HW_DESC=EL9505" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "5") +epicsEnvSet("HW_DESC", "EL9505") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL9505.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL9505.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL9505") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x25213052") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,5,0x2,0x25213052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ") +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +ecmcConfigOrDie "Cfg.EcAddEntryComplete(5,0x2,0x25213052,2,0,0x1a00,0x6000,0x1,1,powerOk01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(5,0x2,0x25213052,2,0,0x1a00,0x6000,0x2,1,overload01)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=5,HWTYPE=EL9505" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "5","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s005") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s005-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL9505.substitutions,ECMC_P=IOC_TEST:m0s005-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL9505.substitutions,1,1) +dbLoadTemplate(ecmcEL9505.substitutions,"ECMC_P=IOC_TEST:m0s005-,ECMC_G=IOC_TEST:m0s005,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=5,HWTYPE=EL9505,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "",2022/01/24 16:04:07.111 OK +2022/01/24 16:04:07.113 OK +2022/01/24 16:04:07.113 OK +2022/01/24 16:04:07.114 OK +2022/01/24 16:04:07.114 OK +2022/01/24 16:04:07.114 OK +2022/01/24 16:04:07.114 OK +2022/01/24 16:04:07.114 OK +2022/01/24 16:04:07.114 OK +"#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s005-,ECMC_G=IOC_TEST:m0s005" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s005-,ECMC_G=IOC_TEST:m0s005,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=5,HWTYPE=EL9505,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "5+1","%d") +# Configure EL1252 digital input terminal +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "5+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=6, HW_DESC=EL1252" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "6") +epicsEnvSet("HW_DESC", "EL1252") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL1252.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL1252.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL1252") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x04e43052") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,6,0x2,0x04e43052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ") +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX1002.cmd +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,0,0x1a00,0x6000,0x1,B1,binaryInput01)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,0,0x1a01,0x6010,0x1,B1,binaryInput02)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,1,0x1a13,0x1d09,0xae,U8,status01)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,1,0x1a13,0x1d09,0xaf,U8,status02)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,1,0x1a13,0x1d09,0xb0,U64,timestampLatchPositive01)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,1,0x1a13,0x1d09,0xb8,U64,timestampLatchNegative01)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,1,0x1a13,0x1d09,0xc0,U64,timestampLatchPositive02)" +ecmcConfigOrDie "Cfg.EcAddEntryDT(6,0x2,0x04e43052,2,1,0x1a13,0x1d09,0xc8,U64,timestampLatchNegative02)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=6,HWTYPE=EL1252" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "6","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s006") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s006-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL1252.substitutions,ECMC_P=IOC_TEST:m0s006-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL1252.substitutions,1,1) +dbLoadTemplate(ecmcEL1252.substitutions,"ECMC_P=IOC_TEST:m0s006-,ECMC_G=IOC_TEST:m0s006,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=6,HWTYPE=EL1252,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s006-,ECMC_G=IOC_TEST:m0s006" +#==================2022/01/24 16:04:07.129 OK +2022/01/24 16:04:07.252 OK +2022/01/24 16:04:07.332 12848 +2022/01/24 16:04:07.333 OK +2022/01/24 16:04:07.333 OK +2022/01/24 16:04:07.333 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +2022/01/24 16:04:07.334 OK +============================================================ +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s006-,ECMC_G=IOC_TEST:m0s006,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=6,HWTYPE=EL1252,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "6+1","%d") +# Configure EL9410 Power supply with refresh of E-Bus. +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "6+1") +#${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=${ECMC_EC_SLAVE_NUM}, HW_DESC=EL9410" +#Configure EL7037 stepper drive terminal, motor 1 +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "7+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/configureSlave.cmd, "SLAVE_ID=8, HW_DESC=EL7037, CONFIG=-Motor-Nanotec-ST4118L1804-B" +#============================================================================== +# configureSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "8") +epicsEnvSet("HW_DESC", "EL7037") +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd "SLAVE_ID=8, HW_DESC=EL7037, NELM=1" +#============================================================================== +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "8") +epicsEnvSet("HW_DESC", "EL7037") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL7037") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x1b7d3052") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd "RESET=true" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,8,0x2,0x1b7d3052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ") +ecmcConfigOrDie "Cfg.EcWriteSdo(8,0x1011,0x1,1684107116,4)" +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +ecmcConfig "EcReadSdo(8,0x100a,0x0,2)" +ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "12848", "0x%04x") +# Firmware version: 0x3230 +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX70XX.cmd +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,1,2,0x1600,0x7000,0x01,16,encoderControl01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,1,2,0x1600,0x7000,0x11,16,encoderValue01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,1,2,0x1602,0x7010,0x1,16,driveControl01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,1,2,0x1604,0x7010,0x21,16,1,velocitySetpoint01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x0,16,encoderStatus01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x11,16,positionActual01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x12,16,encoderLatchPostion01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(8,0x2,0x1b7d3052,2,3,0x1a03,0x6010,0x1,16,driveStatus01)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8012,0x5,1,1)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8012,0xA,1,1)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8012,0x8,1,1)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8012,0x9,0,1)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=8,HWTYPE=EL7037" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "8","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s008") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s008-") +epicsE2022/01/24 16:04:07.344 OK +2022/01/24 16:04:07.344 OK +2022/01/24 16:04:07.344 OK +2022/01/24 16:04:07.344 OK +2022/01/24 16:04:07.344 OK +2022/01/24 16:04:07.344 OK +nvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL7037.substitutions,ECMC_P=IOC_TEST:m0s008-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL7037.substitutions,1,1) +dbLoadTemplate(ecmcEL7037.substitutions,"ECMC_P=IOC_TEST:m0s008-,ECMC_G=IOC_TEST:m0s008,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=8,HWTYPE=EL7037,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s008-,ECMC_G=IOC_TEST:m0s008" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s008-,ECMC_G=IOC_TEST:m0s008,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=8,HWTYPE=EL7037,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "8+1","%d") +# apply config ${CONFIG} for ${HW_DESC} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037-Motor-Nanotec-ST4118L1804-B.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037-Motor-Nanotec-ST4118L1804-B.cmd "" +epicsEnvSet(I_MAX_MA_LOCAL,"1500") +epicsEnvSet(I_RUN_MA_LOCAL,1000) +epicsEnvSet(I_STDBY_MA_LOCAL,500) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/chkValidCurrentSetOrDie.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/chkValidCurrentSetOrDie.cmd "I_RUN_MA=1000,I_STDBY_MA=500,I_MAX_MA=1500" +#============================================================================== +# chkValidCurrentSetOrDie.cmd +# Ensure running current is below max current otherwise exit +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "1000>1500 or 1000<=0", "ecmcExit Error: Run current setpoint to high or negative...","# Run current setting OK (1000)...") +# Result: +# Run current setting OK (1000)... +epicsEnvUnset(ECMC_EXE_CMD) +# Ensure standby current is below max current otherwise exit +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "500>1500 or 500<0", "ecmcExit Error: Standby current setpoint to high or negative...","# Standby current setting OK (500)...") +# Result: +# Standby current setting OK (500)... +epicsEnvUnset(ECMC_EXE_CMD) +# Ensure standby current is below run current otherwise exit +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "500>1000", "ecmcExit Error: Standby current higher than run current...","# Standby current and run current setting OK (500<1000)...") +# Result: +# Standby current and run current setting OK (500<1000)... +epicsEnvUnset(ECMC_EXE_CMD) +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8010,0x1,1000,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8010,0x2,500,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8010,0x3,2400,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8010,0x4,175,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8010,0x6,200,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(8,0x8010,0xA,330,2)" +epicsEnvUnset("I_RUN_MA_LOCAL") +epicsEnvUnset("I_STDBY_MA_LOCAL") +epicsEnvUnset("I_MAX_MA_LOCAL") +#Configure EL7037 stepper drive terminal, motor 2 +ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "8+1") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/configureSlave.cmd, "SLAVE_ID=9, HW_DESC=EL7037, CONFIG=-Motor-Nanotec-ST4118L1804-B" +#============================================================================== +# configureSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "9") +epicsEnvSet("HW_DESC", "EL7037") +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd "SLAVE_ID=9, HW_DESC=EL7037, NELM=1" +#==============================================================2022/01/24 16:04:07.347 OK +2022/01/24 16:04:07.472 OK +2022/01/24 16:04:07.552 12848 +2022/01/24 16:04:07.553 OK +2022/01/24 16:04:07.553 OK +2022/01/24 16:04:07.553 OK +2022/01/24 16:04:07.553 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +2022/01/24 16:04:07.554 OK +================ +# addSlave.cmd +epicsEnvSet("ECMC_EC_SLAVE_NUM", "9") +epicsEnvSet("HW_DESC", "EL7037") +epicsEnvSet("P_SCRIPT", "mXsXXX") +# add ${HW_DESC} to the bus at position ${SLAVE_ID} +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037.cmd" "NELM=1" +epicsEnvSet("ECMC_EC_HWTYPE" "EL7037") +epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2") +epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x1b7d3052") +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd "RESET=true" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ") +ecmcConfigOrDie "Cfg.EcSlaveVerify(0,9,0x2,0x1b7d3052)" +ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ") +ecmcConfigOrDie "Cfg.EcWriteSdo(9,0x1011,0x1,1684107116,4)" +epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000") +ecmcConfig "EcReadSdo(9,0x100a,0x0,2)" +ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "12848", "0x%04x") +# Firmware version: 0x3230 +epicsEnvUnset(ECMC_SLAVE_VERIFY) +epicsEnvUnset(ECMC_COMMENT) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX70XX.cmd +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1600,0x7000,0x01,16,encoderControl01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1600,0x7000,0x11,16,encoderValue01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1602,0x7010,0x1,16,driveControl01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1604,0x7010,0x21,16,1,velocitySetpoint01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x0,16,encoderStatus01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x11,16,positionActual01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x12,16,encoderLatchPostion01)" +ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a03,0x6010,0x1,16,driveStatus01)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0x5,1,1)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0xA,1,1)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0x8,1,1)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0x9,0,1)" +# deduce what the prefix should be +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1) +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=9,HWTYPE=EL7037" +#============================================================================== +# ecmcmXsXXX.cmd +ecmcEpicsEnvSetCalc("sid", "9","%03d") +ecmcEpicsEnvSetCalc("mid", "0","%01d") +epicsEnvSet("ECMC_G", "IOC_TEST:m0s009") +epicsEnvSet("ECMC_P", "IOC_TEST:m0s009-") +epicsEnvUnset(sid) +epicsEnvUnset(mid) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL7037.substitutions,ECMC_P=IOC_TEST:m0s009-" +#============================================================================== +# applySubstitutions.cmd +ecmcFileExist(ecmcEL7037.substitutions,1,1) +dbLoadTemplate(ecmcEL7037.substitutions,"ECMC_P=IOC_TEST:m0s009-,ECMC_G=IOC_TEST:m0s009,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=9,HWTYPE=EL7037,T_SMP_MS=10,TSE=-2,NELM=1") +epicsEnvUnset(DEFAULT_SUBS) +ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ") +iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s009-,ECMC_G=IOC_TEST:m0s009" +#============================================================================== +# applyTemplate.cmd +ecmcFileExist(ecmcEcSlave.template,1,1) +dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s009-,ECMC_G=IOC_TEST:m0s009,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=9,HWTYPE=EL7037,T_SMP_MS=10,TSE=-2,") +epicsEnvUnset(DEFAULT_SLAVE_PVS) +# increment SLAVE_ID +ecmcEpicsEnvSetCalc("SLAVE_ID", "9+1","%d") +# apply config ${CONFIG} for ${HW_DESC} +e2022/01/24 16:04:07.564 OK +2022/01/24 16:04:07.564 OK +2022/01/24 16:04:07.564 OK +2022/01/24 16:04:07.564 OK +2022/01/24 16:04:07.564 OK +2022/01/24 16:04:07.564 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +2022/01/24 16:04:07.565 OK +cmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037-Motor-Nanotec-ST4118L1804-B.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037-Motor-Nanotec-ST4118L1804-B.cmd "" +epicsEnvSet(I_MAX_MA_LOCAL,"1500") +epicsEnvSet(I_RUN_MA_LOCAL,1000) +epicsEnvSet(I_STDBY_MA_LOCAL,500) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/chkValidCurrentSetOrDie.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/chkValidCurrentSetOrDie.cmd "I_RUN_MA=1000,I_STDBY_MA=500,I_MAX_MA=1500" +#============================================================================== +# chkValidCurrentSetOrDie.cmd +# Ensure running current is below max current otherwise exit +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "1000>1500 or 1000<=0", "ecmcExit Error: Run current setpoint to high or negative...","# Run current setting OK (1000)...") +# Result: +# Run current setting OK (1000)... +epicsEnvUnset(ECMC_EXE_CMD) +# Ensure standby current is below max current otherwise exit +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "500>1500 or 500<0", "ecmcExit Error: Standby current setpoint to high or negative...","# Standby current setting OK (500)...") +# Result: +# Standby current setting OK (500)... +epicsEnvUnset(ECMC_EXE_CMD) +# Ensure standby current is below run current otherwise exit +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "500>1000", "ecmcExit Error: Standby current higher than run current...","# Standby current and run current setting OK (500<1000)...") +# Result: +# Standby current and run current setting OK (500<1000)... +epicsEnvUnset(ECMC_EXE_CMD) +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8010,0x1,1000,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8010,0x2,500,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8010,0x3,2400,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8010,0x4,175,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8010,0x6,200,2)" +ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8010,0xA,330,2)" +epicsEnvUnset("I_RUN_MA_LOCAL") +epicsEnvUnset("I_STDBY_MA_LOCAL") +epicsEnvUnset("I_MAX_MA_LOCAL") +#Apply hardware configuration +ecmcConfigOrDie "Cfg.EcApplyConfig(1)" +# ADDITIONAL SETUP +# Set all outputs to feed switches +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput01,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput02,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput03,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput04,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput05,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput06,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput07,1)" +ecmcConfigOrDie "Cfg.WriteEcEntryIDString(2,binaryOutput08,1)" +# END of ADDITIONAL SETUP +############################################################################## +## AXIS 1 +# +epicsEnvSet("DEV", "IOC_TEST") +iocshLoad (/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/configureAxis.cmd, CONFIG=./cfg/linear_1.ax) +#============================================================================== +# configureAxis.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'FULL'='DAQ'","ecmcExit Error: ECMC started in DAQ mode. Motion not supported..","#-") +epicsEnvUnset(ECMC_EXE_CMD) +epicsEnvSet("ECMC_PREFIX" "IOC_TEST:") +ecmcFileExist("./cfg/linear_1.ax",1) +iocshLoad ./cfg/linear_1.ax "" +#General +epicsEnvSet("ECMC_MOTOR_NAME", "Axis1") +epicsEnvSet("ECMC_R", "Axis1-") +epicsEnvSet("ECMC_AXIS_NO", "1") +epicsEnvSet("ECMC_DESC", "MCU1021 Lower Axis (1)") +epicsEnvSet("ECMC_EGU", "mm") # Motor Record Unit +epicsEnvSet("ECMC_PREC", "3") # Motor Record Precision +epicsEnvSet("ECMC_AXISCONFIG", "") # Extra parameters to driver +epicsEnvSet("ECMC_EC_AXIS_HEALTH", "") # Entry for axis health output (example: ec0.s1.binaryOutput01.0) +epicsEnvSet("ECMC_MOD_RANGE" , "0") # Modulo range (traj setpoints and encoder values will be in range 0..ECMC_MOD_RANGE) +epicsEnvSet("ECMC_MOD_TYPE", "0") # For positioning and MOD_RANGE>0: 0 = Normal, 1 = Always Fwd, 2 = Always Bwd, 3 = Closest Distance +#Encoder +epicsEnvSet("ECMC_ENC_SCALE_NUM" "-60") +epicsEnvSet("ECMC_ENC_SCALE_DENOM" "2000") +epicsEnvSet("ECMC_ENC_TYPE" "1") # Type: 0=Incremental, 1=Absolute +epicsEnvSet("ECMC_ENC_BITS" "16") # Total bit count of encoder raw data +epicsEnvSet("ECMC_ENC_ABS_BITS", "0") # Absolute bit count (for absolute encoders) always least significant part of ECMC_ENC_BITS +epicsEnvSet("ECMC_ENC_ABS_OFFSET" "0") # Encoder offset in eng units (for absolute encoders) +epicsEnvSet("ECMC_EC_ENC_ACTPOS", "ec0.s3.positionActual01") # Ethercat entry for actual position input (encoder) +epicsEnvSet("ECMC_EC_ENC_RESET", "") # Reset (if no encoder reset bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_ALARM_0", "") # Error 0 (if no encoder error bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_ALARM_1", "") # Error 1 (if no encoder error bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_ALARM_2", "") # Error 2 (if no encoder error bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_WARNING", "") # Warning (if no encoder warning bit then leave empty) +#Drive +epicsEnvSet("ECMC_DRV_TYPE" "0") # Stepper: 0. DS402: 1 (DS402 = servos and advanced stepper drives) +epicsEnvSet("ECMC_DRV_SCALE_NUM" "600.0") # Fastest speed in engineering units +epicsEnvSet("ECMC_DRV_SCALE_DENOM" "32768.0") # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET +epicsEnvSet("ECMC_EC_DRV_CONTROL", "ec0.s8.driveControl01.0") # Ethercat entry for control word or bit output +epicsEnvSet("ECMC_EC_DRV_STATUS", "ec0.s8.driveStatus01.1") # Ethercat entry for status word or bit input +epicsEnvSet("ECMC_EC_DRV_VELOCITY", "ec0.s8.velocitySetpoint01") # Ethercat entry for velocity setpoint output +epicsEnvSet("ECMC_EC_DRV_REDUCE_TORQUE", "ec0.s8.driveControl01.2") # Ethercat entry for reduce torque output +epicsEnvSet("ECMC_EC_DRV_BRAKE", "") # Ethercat entry for brake output +epicsEnvSet("ECMC_DRV_BRAKE_OPEN_DLY_TIME", "0") # Brake timing parameter in cycles (default 1kHz) +epicsEnvSet("ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME", "0") # Brake timing parameter in cycles (default 1kHz) +epicsEnvSet("ECMC_EC_DRV_RESET", "ec0.s8.driveControl01.1") # Reset +epicsEnvSet("ECMC_EC_DRV_ALARM_0", "ec0.s8.driveStatus01.3") # Error +epicsEnvSet("ECMC_EC_DRV_ALARM_1", "ec0.s8.driveStatus01.7") # Stall +epicsEnvSet("ECMC_EC_DRV_ALARM_2", "ec0.s8.driveStatus01.14") # Sync error +epicsEnvSet("ECMC_EC_DRV_WARNING", "ec0.s8.driveStatus01.2") # Warning +#Trajectory +epicsEnvSet("ECMC_TRAJ_TYPE" "0") # Trapetz: 0. S-Curve: 1 +epicsEnvSet("ECMC_VELO", "10.0") +epicsEnvSet("ECMC_JOG_VEL", "5") +epicsEnvSet("ECMC_JAR", "0.0") # JAR defaults to VELO/ACCL +epicsEnvSet("ECMC_ACCS_EGU_PER_S2", "10") +epicsEnvSet("ECMC_EMERG_DECEL", "100") # Emergency deceleration +epicsEnvSet("ECMC_JERK", "10.0") # Only valid for ECMC_TRAJ_TYPE==1 +#Homing +epicsEnvSet("ECMC_HOME_PROC", "3") +epicsEnvSet("ECMC_HOME_POS", "0.0") +epicsEnvSet("ECMC_HOME_VEL_TO", "5") +epicsEnvSet("ECMC_HOME_VEL_FRM", "4") +epicsEnvSet("ECMC_HOME_ACC", "21") +epicsEnvSet("ECMC_HOME_DEC", "100") +epicsEnvSet("ECMC_HOME_POS_MOVE_ENA", "0") # Enable move to position after successfull homing +epicsEnvSet("ECMC_HOME_POS_MOVE_TARG_POS","0") # Target position to go to after successfull homing +#Controller +epicsEnvSet("ECMC_CNTRL_KP", "15.0") +epicsEnvSet("ECMC_CNTRL_KI", "0.02") +epicsEnvSet("ECMC_CNTRL_KD", "0.0") +epicsEnvSet("ECMC_CNTRL_KFF", "1.0") +#Monitoring +# Switches +epicsEnvSet("ECMC_EC_MON_LOWLIM", "ec0.s1.binaryInput02.0") # Ethercat entry for low limit switch input +epicsEnvSet("ECMC_EC_MON_HIGHLIM", "ec0.s1.binaryInput01.0") # Ethercat entry for high limit switch inpuit +epicsEnvSet("ECMC_EC_MON_HOME_SWITCH", "ec0.s1.binaryInput03.0") # Ethercat entry for home switch input +epicsEnvSet("ECMC_EC_MON_EXT_INTERLOCK", "ec0.s1.ONE.0") # Ethercat entry for external interlock input +# Softlimits (disable with 0,0,0) +epicsEnvSet("ECMC_SOFT_LOW_LIM", "-20") +epicsEnvSet("ECMC_SOFT_HIGH_LIM", "130") +epicsEnvSet("ECMC_DXLM_ENABLE", "1") +# Position lag +epicsEnvSet("ECMC_MON_LAG_MON_TOL", "1.0") +epicsEnvSet("ECMC_MON_LAG_MON_TIME", "10") +epicsEnvSet("ECMC_MON_LAG_MON_ENA", "1") +# At target +epicsEnvSet("ECMC_MON_AT_TARGET_TOL", "0.1") +epicsEnvSet("ECMC_MON_AT_TARGET_TIME", "100") +epicsEnvSet("ECMC_MON_AT_TARGET_ENA", "1") +# Velocity +epicsEnvSet("ECMC_MON_VELO_MAX", "100.0") +epicsEnvSet("ECMC_MON_VELO_MAX_TRAJ_TIME","100") +epicsEnvSet("ECMC_MON_VELO_MAX_DRV_TIME", "200") +epicsEnvSet("ECMC_MON_VELO_MAX_ENA", "1") +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addAxis.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addAxis.cmd +#============================================================================== +# addAxis.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'FULL'='DAQ'","ecmcExit Error: ECMC started in DAQ mode. Motion not supported..","#-") +epicsEnvUnset(ECMC_EXE_CMD) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis-records.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis-records.cmd +#============================================================================== +# ecmc_axis-records.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis.cmd +#============================================================================== +# ecmc_axis.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(-60)<>0',SUCCESS_STR='ECMC_ENC_SCALE_NUM value OK == -60...',ERROR_STR='ECMC_ENC_SCALE_NUM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(-60)<>0","# ECMC_ENC_SCALE_NUM value OK == -60...", "ecmcExit Error: ECMC_ENC_SCALE_NUM == 0...") +# ECMC_ENC_SCALE_NUM value OK == -60... +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(2000)<>0',SUCCESS_STR='ECMC_ENC_SCALE_DENOM value OK == 2000...',ERROR_STR='ECMC_ENC_SCALE_DENOM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(2000)<>0","# ECMC_ENC_SCALE_DENOM value OK == 2000...", "ecmcExit Error: ECMC_ENC_SCALE_DENOM == 0...") +# ECMC_ENC_SCALE_DENOM value OK == 2000... +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(600.0)<>0',SUCCESS_STR='ECMC_DRV_SCALE_NUM value OK == 600.0...',ERROR_STR='ECMC_DRV_SCALE_NUM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTe2022/01/24 16:04:07.575 OK +2022/01/24 16:04:07.575 OK +2022/01/24 16:04:07.575 OK +2022/01/24 16:04:07.575 OK +2022/01/24 16:04:07.577 OK +2022/01/24 16:04:07.577 OK +2022/01/24 16:04:07.577 OK +2022/01/24 16:04:07.577 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.578 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.579 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +rnary(ECMC_EXE_CMD,"abs(600.0)<>0","# ECMC_DRV_SCALE_NUM value OK == 600.0...", "ecmcExit Error: ECMC_DRV_SCALE_NUM == 0...") +# ECMC_DRV_SCALE_NUM value OK == 600.0... +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(32768.0)<>0',SUCCESS_STR='ECMC_DRV_SCALE_DENOM value OK == 32768.0...',ERROR_STR='ECMC_DRV_SCALE_DENOM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(32768.0)<>0","# ECMC_DRV_SCALE_DENOM value OK == 32768.0...", "ecmcExit Error: ECMC_DRV_SCALE_DENOM == 0...") +# ECMC_DRV_SCALE_DENOM value OK == 32768.0... +epicsEnvUnset(ECMC_EXE_CMD) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd "EXPR_STR='-1>0',WARNING_STR='WARNING: ECMC_MRES setting is deprecated and will not be used. (MRES will be calulated instead: ECMC_ENC_SCALE_NUM/ECMC_ENC_SCALE_DENOM).. '" +#============================================================================== +# issueWarning.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"-1>0","", "#-") +epicsEnvUnset(ECMC_EXE_CMD) +ecmcConfigOrDie "Cfg.CreateAxis(1,1,0,0)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.health")" +ecmcConfigOrDie "Cfg.SetAxisModRange(1, 0)" +ecmcConfigOrDie "Cfg.SetAxisModType(1, 0)" +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd "EXPR_STR='-1>0',WARNING_STR='WARNING: ECMC_ACCL setting is deprecated. Please use ECMC_ACCS_EGU_PER_S2 instead..'" +#============================================================================== +# issueWarning.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"-1>0","", "#-") +epicsEnvUnset(ECMC_EXE_CMD) +ecmcEpicsEnvSetCalcTernary(ECMC_BLOCK_ACCL,"'EMPTY'!='EMPTY'","", "#-") +ecmcEpicsEnvSetCalcTernary(ECMC_BLOCK_ACCS,"'EMPTY'=='EMPTY'","", "#-") + ecmcConfigOrDie "Cfg.SetAxisAcc(1,10)" + ecmcConfigOrDie "Cfg.SetAxisDec(1,10)" +ecmcConfigOrDie "Cfg.SetAxisJerk(1,10.0)" +ecmcConfigOrDie "Cfg.SetAxisVel(1,10.0)" +ecmcConfigOrDie "Cfg.SetAxisEmergDeceleration(1,100)" +ecmcConfigOrDie "Cfg.SetAxisHomeVelTwordsCam(1,5)" +ecmcConfigOrDie "Cfg.SetAxisHomeVelOffCam(1,4)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKp(1,15.0)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKi(1,0.02)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKd(1,0.0)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKff(1,1.0)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s3.positionActual01,"ax1.enc.actpos")" +ecmcConfigOrDie "Cfg.SetAxisEncScaleDenom(1,2000)" +ecmcConfigOrDie "Cfg.SetAxisEncScaleNum(1,-60)" +ecmcConfigOrDie "Cfg.SetAxisEncType(1,1)" +ecmcConfigOrDie "Cfg.SetAxisEncBits(1,16)" +ecmcConfigOrDie "Cfg.SetAxisEncAbsBits(1,0)" +ecmcConfigOrDie "Cfg.SetAxisEncOffset(1,0)" +ecmcConfigOrDie "Cfg.SetAxisEncVelFilterSize(1,100)" +ecmcConfigOrDie "Cfg.SetAxisEncPosFilterSize(1,1)" +ecmcConfigOrDie "Cfg.SetAxisEncPosFilterEnable(1,0)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.reset")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.alarm0")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.alarm1")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.alarm2")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.warning")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.latchpos")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.latchcontrol")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.latchstatus")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.0,"ax1.drv.control")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus01.1,"ax1.drv.status")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.velocitySetpoint01,"ax1.drv.velocity")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.drv.position")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.drv.brake")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.2,"ax1.drv.reducetorque")" +ecmcConf2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.580 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.581 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.582 OK +2022/01/24 16:04:07.583 OK +2022/01/24 16:04:07.583 OK +2022/01/24 16:04:07.583 OK +2022/01/24 16:04:07.583 OK +2022/01/24 16:04:07.583 ecmcMotorRecord:: setIntegerParam(1 motorPowerAutoOnOff_)=2 +2022/01/24 16:04:07.583 ecmcMotorRecord:: setDoubleParam(1 motorPowerOnDelay_)=6 +2022/01/24 16:04:07.583 ecmcMotorRecord:: setDoubleParam(1 motorPowerOffDelay_=-1 +2022/01/24 16:04:07.584 ecmcMotorRecord:: udateMotorLimitsRO(1) enabledHighAndLow=1 valid=1 fValueHigh=130 fValueLow=-20 +2022/01/24 16:04:07.584 ecmcMotorRecord:: connected(1) +2022/01/24 16:04:07.584 ecmcMotorRecord:: initialPoll(1) status=0 +igOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.1,"ax1.drv.reset")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus01.3,"ax1.drv.alarm0")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus01.7,"ax1.drv.alarm1")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus01.14,"ax1.drv.alarm2")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus01.2,"ax1.drv.warning")" +ecmcConfigOrDie "Cfg.SetAxisDrvScaleDenom(1,32768.0)" +ecmcConfigOrDie "Cfg.SetAxisDrvScaleNum(1,600.0)" +ecmcConfigOrDie "Cfg.SetAxisDrvBrakeOpenDelayTime(1,0)" +ecmcConfigOrDie "Cfg.SetAxisDrvBrakeCloseAheadTime(1,0)" +ecmcConfigOrDie "Cfg.SetAxisSoftLimitPosBwd(1,-20)" +ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitBwd(1,1)" +ecmcConfigOrDie "Cfg.SetAxisSoftLimitPosFwd(1,130)" +ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitFwd(1,1)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.binaryInput02.0,"ax1.mon.lowlim")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.binaryInput01.0,"ax1.mon.highlim")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.binaryInput03.0,"ax1.mon.homesensor")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.ONE.0,"ax1.mon.extinterlock")" +ecmcConfigOrDie "Cfg.SetAxisMonAtTargetTol(1,0.1)" +ecmcConfigOrDie "Cfg.SetAxisMonAtTargetTime(1,100)" +ecmcConfigOrDie "Cfg.SetAxisMonEnableAtTargetMon(1,1)" +ecmcConfigOrDie "Cfg.SetAxisMonPosLagTol(1,1.0)" +ecmcConfigOrDie "Cfg.SetAxisMonPosLagTime(1,10)" +ecmcConfigOrDie "Cfg.SetAxisMonEnableLagMon(1,1)" +ecmcConfigOrDie "Cfg.SetAxisMonMaxVel(1,100.0)" +ecmcConfigOrDie "Cfg.SetAxisMonEnableMaxVel(1,1)" +ecmcConfigOrDie "Cfg.SetAxisMonMaxVelDriveILDelay(1,200)" +ecmcConfigOrDie "Cfg.SetAxisMonMaxVelTrajILDelay(1,100)" +ecmcConfigOrDie "Cfg.SetAxisMonHomeSwitchPolarity(1,0)" +ecmcConfigOrDie "Cfg.SetAxisHomeLatchCountOffset(1,0.0)" +ecmcConfigOrDie "Cfg.SetAxisHomePosition(1,0.0)" +ecmcConfigOrDie "Cfg.SetAxisHomePostMoveEnable(1, 0)" +ecmcConfigOrDie "Cfg.SetAxisHomePostMoveTargetPosition(1, 0)" + ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_mr.cmd",1) + iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_mr.cmd +#============================================================================== +# ecmc_axis_mr.cmd +ecmcMotorRecordCreateAxis(MCU1, "1", "6", ) +ecmcEpicsEnvSetCalc("ECMC_TEMP_SREV","if(abs(2000)>0){RESULT:=abs(2000);} else {RESULT:=1.0};","%d") +ecmcEpicsEnvSetCalc("ECMC_TEMP_UREV","if(abs(-60)>0){RESULT:=abs(-60);} else {RESULT:=1.0};","%lf") +ecmcFileExist(ecmcMotorRecord.template,1,1) + dbLoadRecords(ecmcMotorRecord.template, "PREFIX=IOC_TEST:, MOTOR_NAME=Axis1, MOTOR_PORT=MCU1, AXIS_NO=1, DESC=MCU1021 Lower Axis (1), EGU=mm, PREC=3, VELO=10.0, JVEL=5, JAR=0.0, ACCS=10, RDBD=0.1, DLLM=-20, DHLM=130, HOMEPROC=3,SREV=2000,UREV=60.000000, ") +epicsEnvSet("ECMC_AXISFIELDINIT", "") +ecmcFileExist(ecmcMotorRecordhome.template,1,1) +dbLoadRecords(ecmcMotorRecordhome.template, "PREFIX=IOC_TEST:, MOTOR_NAME=Axis1, MOTOR_PORT=MCU1, AXIS_NO=1,HOMEPROC=3, HOMEPOS=0.0, HVELTO=5, HVELFRM=4, HOMEACC=21, HOMEDEC=100") +epicsEnvUnset(ECMC_TEMP_SREV) +epicsEnvUnset(ECMC_TEMP_UREV) +epicsEnvUnset(ECMC_BLOCK_ACCL) +epicsEnvUnset(ECMC_BLOCK_ACCS) +ecmcFileExist("ecmcAxis.db",1,1) +dbLoadRecords("ecmcAxis.db","P=IOC_TEST:,AXIS_NAME=Axis1,AXIS_NO=1,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,T_SMP_MS=10,TSE=-2") +ecmcFileExist("ecmcAxisType.db",1,1) +dbLoadRecords("ecmcAxisType.db","P=IOC_TEST:,AXIS_NAME=Axis1,AXIS_TYPE=1") +ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd,1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd +#============================================================================== +# ecmc_axis_unset.cmd +epicsEnvUnset(ECMC_AXISCONFIG) +epicsEnvUnset(ECMC_AXISFIELDINIT) +epicsEnvUnset(ECMC_PREC) +epicsEnvUnset(ECMC_EGU) +epicsEnvUnset(ECMC_DESC) +epicsEnvUnset(ECMC_R) +epicsEnvUnset(ECMC_MOTOR_NAME) +epicsEnvUnset(ECMC_EC_AXIS_HEALTH) +epicsEnvUnset(ECMC_MOD_RANGE) +epicsEnvUnset(ECMC_MOD_TYPE) +epicsEnvUnset(ECMC_EMERG_DECEL) +epicsEnvUnset(ECMC_VELO)macLib: macro ECMC_EXE_CMD is undefined (expanding string ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'${ECMC_MODE=FULL}'='DAQ'","ecmcExit Error: ECMC started in DAQ mode. Motion not supported..","#-")${ECMC_EXE_CMD}) +macLib: macro ECMC_EXE_CMD is undefined (expanding string ${ECMC_EXE_CMD}) + +epicsEnvUnset(ECMC_ACCL) +epicsEnvUnset(ECMC_ACCS_EGU_PER_S2) +epicsEnvUnset(ECMC_HOME_VEL_TO) +epicsEnvUnset(ECMC_HOME_VEL_FRM) +epicsEnvUnset(ECMC_CNTRL_KP) +epicsEnvUnset(ECMC_CNTRL_KI) +epicsEnvUnset(ECMC_CNTRL_KD) +epicsEnvUnset(ECMC_CNTRL_KFF) +epicsEnvUnset(ECMC_EC_ENC_ACTPOS) +epicsEnvUnset(ECMC_EC_ENC_LATCHPOS) +epicsEnvUnset(ECMC_EC_ENC_LATCH_CONTROL) +epicsEnvUnset(ECMC_EC_ENC_LATCH_STATUS) +epicsEnvUnset(ECMC_HOME_LATCH_COUNT_OFFSET) +epicsEnvUnset(ECMC_ENC_SCALE_DENOM) +epicsEnvUnset(ECMC_ENC_SCALE_NUM) +epicsEnvUnset(ECMC_ENC_TYPE) +epicsEnvUnset(ECMC_ENC_BITS) +epicsEnvUnset(ECMC_ENC_ABS_BITS) +epicsEnvUnset(ECMC_ENC_ABS_OFFSET) +epicsEnvUnset(ECMC_ENC_VEL_FILTER_SIZE) +epicsEnvUnset(ECMC_ENC_POS_FILTER_SIZE) +epicsEnvUnset(ECMC_ENC_POS_FILTER_ENABLE) +epicsEnvUnset(ECMC_EC_ENC_RESET) +epicsEnvUnset(ECMC_EC_ENC_ALARM_0) +epicsEnvUnset(ECMC_EC_ENC_ALARM_1) +epicsEnvUnset(ECMC_EC_ENC_ALARM_2) +epicsEnvUnset(ECMC_EC_ENC_WARNING) +epicsEnvUnset(ECMC_EC_DRV_CONTROL) +epicsEnvUnset(ECMC_EC_DRV_STATUS) +epicsEnvUnset(ECMC_EC_DRV_VELOCITY) +epicsEnvUnset(ECMC_EC_DRV_BRAKE) +epicsEnvUnset(ECMC_EC_DRV_REDUCE_TORQUE) +epicsEnvUnset(ECMC_EC_DRV_RESET) +epicsEnvUnset(ECMC_EC_DRV_ALARM_0) +epicsEnvUnset(ECMC_EC_DRV_ALARM_1) +epicsEnvUnset(ECMC_EC_DRV_ALARM_2) +epicsEnvUnset(ECMC_EC_DRV_WARNING) +epicsEnvUnset(ECMC_DRV_SCALE_DENOM) +epicsEnvUnset(ECMC_DRV_SCALE_NUM) +epicsEnvUnset(ECMC_DRV_BRAKE_OPEN_DLY_TIME) +epicsEnvUnset(ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME) +epicsEnvUnset(ECMC_SOFT_LOW_LIM) +epicsEnvUnset(ECMC_DXLM_ENABLE) +epicsEnvUnset(ECMC_SOFT_HIGH_LIM) +epicsEnvUnset(ECMC_DXLM_ENABLE) +epicsEnvUnset(ECMC_EC_MON_LOWLIM) +epicsEnvUnset(ECMC_EC_MON_HIGHLIM) +epicsEnvUnset(ECMC_EC_MON_HOME_SWITCH) +epicsEnvUnset(ECMC_EC_MON_EXT_INTERLOCK) +epicsEnvUnset(ECMC_MON_AT_TARGET_TOL) +epicsEnvUnset(ECMC_MON_AT_TARGET_TIME) +epicsEnvUnset(ECMC_MON_AT_TARGET_ENA) +epicsEnvUnset(ECMC_MON_LAG_MON_TOL) +epicsEnvUnset(ECMC_MON_LAG_MON_TIME) +epicsEnvUnset(ECMC_MON_LAG_MON_ENA) +epicsEnvUnset(ECMC_MON_VELO_MAX) +epicsEnvUnset(ECMC_MON_VELO_MAX_ENA) +epicsEnvUnset(ECMC_MON_VELO_MAX_DRV_TIME) +epicsEnvUnset(ECMC_MON_VELO_MAX_TRAJ_TIME) +epicsEnvUnset(ECMC_JOG_VEL) +epicsEnvUnset(ECMC_JAR) +epicsEnvUnset(ECMC_HOME_PROC) +epicsEnvUnset(ECMC_HOME_POS) +epicsEnvUnset(ECMC_HOME_ACC) +epicsEnvUnset(ECMC_HOME_DEC) +epicsEnvUnset(ECMC_DRV_TYPE) +epicsEnvUnset(ECMC_VELO) +epicsEnvUnset(ECMC_SOFT_LOW_LIM) +epicsEnvUnset(ECMC_SOFT_HIGH_LIM) +epicsEnvUnset(ECMC_HOME_POS_MOVE_ENA) +epicsEnvUnset(ECMC_HOME_POS_MOVE_TARG_POS) +epicsEnvUnset(ECMC_TRAJ_TYPE) +epicsEnvUnset(ECMC_JERK) +epicsEnvSet("ECMC_PREFIX" "IOC_TEST:") +# Set external setpoints +iocshLoad (/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyAxisSynchronization.cmd, CONFIG=./cfg/linear_1.sax) +#============================================================================== +# applyAxisSynchronization.cmd +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad ./cfg/linear_1.sax +############# Encoder +epicsEnvSet("ECMC_ENC_SOURCE", "0") # 0 Internal (from hardware), 1 from PLC +epicsEnvSet("ECMC_ENC_VELO_FILT_ENABLE", "1") # Enable velocity filter +epicsEnvSet("ECMC_ENC_VELO_FILT_SIZE", "20") # Encoder velocity Low pass filter size +############# Trajectory +epicsEnvSet("ECMC_TRAJ_SOURCE", "1") # 0 Internal (from hardware), 1 from PLC +epicsEnvSet("ECMC_TRAJ_VELO_FILT_ENABLE", "1") # Enable velocity filter +epicsEnvSet("ECMC_TRAJ_VELO_FILT_SIZE", "20") # Trajectory velocity Low pass filter size +############# Commands +epicsEnvSet("ECMC_CMD_FRM_OTHER_PLC_ENABLE", "1") # Allow commands from PLC +epicsEnvSet("ECMC_CMD_AXIS_PLC_ENABLE", "0") # Enable Axis PLC +# Each line below is appended to one single expression/source. +# Executed in sync with axis (before) +epicsEnvSet("ECMC_AXIS_EXPR_LINE_1", "var a:=1|") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_2", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_3", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_4", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_5", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_6", 2022/01/24 16:04:07.594 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.595 OK +2022/01/24 16:04:07.596 OK +2022/01/24 16:04:07.596 OK +2022/01/24 16:04:07.596 OK +2022/01/24 16:04:07.596 OK +"") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_7", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_8", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_9", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_10", "") +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync.cmd +#============================================================================== +# ecmc_axis_sync.cmd +ecmcConfigOrDie "Cfg.SetAxisAllowCommandsFromPLC(1,1)" +ecmcConfigOrDie "Cfg.SetAxisPLCEnable(1,0)" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=var a:=1|" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(1)=" +ecmcConfigOrDie "Cfg.SetAxisPLCEncVelFilterSize(1,20)" +ecmcConfigOrDie "Cfg.SetAxisPLCEncVelFilterEnable(1,1)" +ecmcConfigOrDie "Cfg.SetAxisEncSourceType(1,0)" +ecmcConfigOrDie "Cfg.SetAxisPLCTrajVelFilterSize(1,20)" +ecmcConfigOrDie "Cfg.SetAxisPLCTrajVelFilterEnable(1,1)" +ecmcConfigOrDie "Cfg.SetAxisTrajSourceType(1,1)" +ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd,1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd +#============================================================================== +# ecmc_axis_sync_unset.cmd +epicsEnvUnset(ECMC_CMD_FRM_OTHER_PLC_ENABLE) +epicsEnvUnset(ECMC_CMD_AXIS_PLC_ENABLE) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_1) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_2) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_3) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_4) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_5) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_6) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_7) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_8) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_9) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_10) +epicsEnvUnset(ECMC_ENC_VELO_FILT_SIZE) +epicsEnvUnset(ECMC_ENC_VELO_FILT_ENABLE) +epicsEnvUnset(ECMC_ENC_SOURCE) +epicsEnvUnset(ECMC_TRAJ_VELO_FILT_SIZE) +epicsEnvUnset(ECMC_TRAJ_VELO_FILT_ENABLE) +epicsEnvUnset(ECMC_TRAJ_SOURCE) +############################################################################## +## AXIS 2 +# +#epicsEnvSet("DEV", "$(IOC)") +iocshLoad (/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/configureAxis.cmd, CONFIG=./cfg/linear_2.ax) +#============================================================================== +# configureAxis.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'FULL'='DAQ'","ecmcExit Error: ECMC started in DAQ mode. Motion not supported..","#-") +epicsEnvUnset(ECMC_EXE_CMD) +epicsEnvSet("ECMC_PREFIX" "IOC_TEST:") +ecmcFileExist("./cfg/linear_2.ax",1) +iocshLoad ./cfg/linear_2.ax "" +#General +epicsEnvSet("ECMC_MOTOR_NAME", "Axis2") +epicsEnvSet("ECMC_R", "Axis2-") +epicsEnvSet("ECMC_AXIS_NO", "2") +epicsEnvSet("ECMC_DESC", "MCU1021 Upper Axis (2)") +epicsEnvSet("ECMC_EGU", "mm") # Motor Record Unit +epicsEnvSet("ECMC_PREC", "3") # Motor Record Precision +epicsEnvSet("ECMC_AXISCONFIG", "") # Extra parameters to driver +epicsEnvSet("ECMC_EC_AXIS_HEALTH", "") # Entry for axis health output (example: ec0.s1.binaryOutput01.0) +epicsEnvSet("ECMC_MOD_RANGE" , "0") # Modulo range (traj setpoints and encoder values will be in range 0..ECMC_MOD_RANGE) +epicsEnvSet("ECMC_MOD_TYPE", "0") # For positioning and MOD_RANGE>0: 0 = Normal, 1 = Always Fwd, 2 = Always Bwd, 3 = Closest Distance +#Encoder +epicsEnvSet("ECMC_ENC_SCALE_NUM" "60") +epicsEnvSet("ECMC_ENC_SCALE_DENOM" "2000") +epicsEnvSet("ECMC_ENC_TYPE" "0") # Type: 0=Incremental, 1=Absolute +epicsEnvSet("ECMC_ENC_BITS" "16") # Total bit count of encoder raw data +epicsEnvSet("ECMC_ENC_ABS_BITS", "0") # Absolute bit count (for absolute encoders) always least significant part of ECMC_ENC_BITS +epicsEnvSet("ECMC_ENC_ABS_OFFSET" "0") # Encoder offset in eng units (for absolute encoders) +epicsEnvSet("ECMC_EC_ENC_ACTPOS", "ec0.s4.positionActual01") # Ethercat entry for actual position input (encoder) +epicsEnvSet("ECMC_EC_ENC_RESET", "") # Reset (if no encoder reset bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_ALARM_0", "") # Error 0 (if no encoder error bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_ALARM_1", "") # Error 1 (if no encoder error bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_ALARM_2", "") # Error 2 (if no encoder error bit then leave empty) +epicsEnvSet("ECMC_EC_ENC_WARNING", "") # Warning (if no encoder warning bit then leave empty) +#Drive +epicsEnvSet("ECMC_DRV_TYPE" "0") # Stepper: 0. DS402: 1 (DS402 = servos and advanced stepper drives) +epicsEnvSet("ECMC_DRV_SCALE_NUM" "-600.0") # Fastest speed in engineering units +epicsEnvSet("ECMC_DRV_SCALE_DENOM" "32768.0") # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET +epicsEnvSet("ECMC_EC_DRV_CONTROL", "ec0.s9.driveControl01.0") # Ethercat entry for control word or bit output +epicsEnvSet("ECMC_EC_DRV_STATUS", "ec0.s9.driveStatus01.1") # Ethercat entry for status word or bit input +epicsEnvSet("ECMC_EC_DRV_VELOCITY", "ec0.s9.velocitySetpoint01") # Ethercat entry for velocity setpoint output +epicsEnvSet("ECMC_EC_DRV_REDUCE_TORQUE", "ec0.s9.driveControl01.2") # Ethercat entry for reduce torque output +epicsEnvSet("ECMC_EC_DRV_BRAKE", "") # Ethercat entry for brake output +epicsEnvSet("ECMC_DRV_BRAKE_OPEN_DLY_TIME", "0") # Brake timing parameter in cycles (default 1kHz) +epicsEnvSet("ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME", "0") # Brake timing parameter in cycles (default 1kHz) +epicsEnvSet("ECMC_EC_DRV_RESET", "ec0.s9.driveControl01.1") # Reset +epicsEnvSet("ECMC_EC_DRV_ALARM_0", "ec0.s9.driveStatus01.3") # Error +epicsEnvSet("ECMC_EC_DRV_ALARM_1", "ec0.s9.driveStatus01.7") # Stall +epicsEnvSet("ECMC_EC_DRV_ALARM_2", "ec0.s9.driveStatus01.14") # Sync error +epicsEnvSet("ECMC_EC_DRV_WARNING", "ec0.s9.driveStatus01.2") # Warning +#Trajectory +epicsEnvSet("ECMC_VELO", "10.0") +epicsEnvSet("ECMC_JOG_VEL", "5") +epicsEnvSet("ECMC_JAR", "0.0") # JAR defaults to VELO/ACCL +epicsEnvSet("ECMC_ACCS_EGU_PER_S2", "10") +epicsEnvSet("ECMC_EMERG_DECEL", "100") # Emergency deceleration +#Homing +epicsEnvSet("ECMC_HOME_PROC", "3") +epicsEnvSet("ECMC_HOME_POS", "0.0") +epicsEnvSet("ECMC_HOME_VEL_TO", "5") +epicsEnvSet("ECMC_HOME_VEL_FRM", "4") +epicsEnvSet("ECMC_HOME_ACC", "21") +epicsEnvSet("ECMC_HOME_DEC", "100") +epicsEnvSet("ECMC_HOME_POS_MOVE_ENA", "0") # Enable move to position after successfull homing +epicsEnvSet("ECMC_HOME_POS_MOVE_TARG_POS","0") # Target position to go to after successfull homing +#Controller +epicsEnvSet("ECMC_CNTRL_KP", "15.0") +epicsEnvSet("ECMC_CNTRL_KI", "0.02") +epicsEnvSet("ECMC_CNTRL_KD", "0.0") +epicsEnvSet("ECMC_CNTRL_KFF", "1.0") +#Monitoring +# Switches +epicsEnvSet("ECMC_EC_MON_LOWLIM", "ec0.s1.binaryInput06.0") # Ethercat entry for low limit switch input +epicsEnvSet("ECMC_EC_MON_HIGHLIM", "ec0.s1.binaryInput05.0") # Ethercat entry for high limit switch inpuit +epicsEnvSet("ECMC_EC_MON_HOME_SWITCH", "ec0.s1.binaryInput07.0") # Ethercat entry for home switch input +epicsEnvSet("ECMC_EC_MON_EXT_INTERLOCK", "ec0.s0.ONE.0") # Ethercat entry for external interlock input +# Softlimits (disable with 0,0) +epicsEnvSet("ECMC_SOFT_LOW_LIM", "-130") +epicsEnvSet("ECMC_SOFT_HIGH_LIM", "20") +epicsEnvSet("ECMC_DXLM_ENABLE", "1") +# Position lag +epicsEnvSet("ECMC_MON_LAG_MON_TOL", "1.0") +epicsEnvSet("ECMC_MON_LAG_MON_TIME", "10") +epicsEnvSet("ECMC_MON_LAG_MON_ENA", "1") +# At target +epicsEnvSet("ECMC_MON_AT_TARGET_TOL", "0.1") +epicsEnvSet("ECMC_MON_AT_TARGET_TIME", "100") +epicsEnvSet("ECMC_MON_AT_TARGET_ENA", "1") +# Velocity +epicsEnvSet("ECMC_MON_VELO_MAX", "100.0") +epicsEnvSet("ECMC_MON_VELO_MAX_TRAJ_TIME","100") +epicsEnvSet("ECMC_MON_VELO_MAX_DRV_TIME", "200") +epicsEnvSet("ECMC_MON_VELO_MAX_ENA", "1") +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addAxis.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addAxis.cmd +#============================================================================== +# addAxis.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'FULL'='DAQ'","ecmcExit Error: ECMC started in DAQ mode. Motion not supported..","#-") +epicsEnvUnset(ECMC_EXE_CMD) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis-records.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis-records.cmd +#============================================================================== +# ecmc_axis-records.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis.cmd +#============================================================================== +# ecmc_axis.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(60)<>0',SUCCESS_STR='ECMC_ENC_SCALE_NUM value OK == 60...',ERROR_STR='ECMC_ENC_SCALE_NUM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(60)<>0","# ECMC_ENC_SCALE_NUM value OK == 60...", "ecmcExit Error: ECMC_ENC_SCALE_NUM == 0...") +# ECMC_ENC_SCALE_NUM value OK == 60... +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(2000)<>0',SUCCESS_STR='ECMC_ENC_SCALE_DENOM value OK == 2000...',ERROR_STR='ECMC_ENC_SCALE_DENOM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(2000)<>0","# ECMC_ENC_SCALE_DENOM value OK == 2000...", "ecmcExit Error: ECMC_ENC_SCALE_DENOM == 0...") +# ECMC_ENC_SCALE_DENOM value OK == 2000... +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(-600.0)<>0',SUCCESS_STR='ECMC_DRV_SCALE_NUM value OK == -600.0...',ERROR_STR='ECMC_DRV_SCALE_NUM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(-600.0)<>0","# ECMC_DRV_SCALE_NUM value OK == -600.0...", "ecmcExit Error: ECMC_DRV_SCALE_NUM == 0...") +# ECMC_DRV_SCALE_NUM value OK == -600.0... +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(32768.0)<>0',SUCCESS_STR='ECMC_DRV_SCALE_DENOM value OK == 32768.0...',ERROR_STR='ECMC_DRV_SCALE_DENOM == 0...'" +#============================================================================== +# verifyOrDie.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(32768.0)<>0","# ECMC_DRV_SCALE_DENOM value2022/01/24 16:04:07.607 OK +2022/01/24 16:04:07.607 OK +2022/01/24 16:04:07.607 OK +2022/01/24 16:04:07.607 OK +2022/01/24 16:04:07.609 OK +2022/01/24 16:04:07.609 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.610 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.611 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.612 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK + OK == 32768.0...", "ecmcExit Error: ECMC_DRV_SCALE_DENOM == 0...") +# ECMC_DRV_SCALE_DENOM value OK == 32768.0... +epicsEnvUnset(ECMC_EXE_CMD) +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd "EXPR_STR='-1>0',WARNING_STR='WARNING: ECMC_MRES setting is deprecated and will not be used. (MRES will be calulated instead: ECMC_ENC_SCALE_NUM/ECMC_ENC_SCALE_DENOM).. '" +#============================================================================== +# issueWarning.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"-1>0","", "#-") +epicsEnvUnset(ECMC_EXE_CMD) +ecmcConfigOrDie "Cfg.CreateAxis(2,1,0,0)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.health")" +ecmcConfigOrDie "Cfg.SetAxisModRange(2, 0)" +ecmcConfigOrDie "Cfg.SetAxisModType(2, 0)" +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/issueWarning.cmd "EXPR_STR='-1>0',WARNING_STR='WARNING: ECMC_ACCL setting is deprecated. Please use ECMC_ACCS_EGU_PER_S2 instead..'" +#============================================================================== +# issueWarning.cmd +ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"-1>0","", "#-") +epicsEnvUnset(ECMC_EXE_CMD) +ecmcEpicsEnvSetCalcTernary(ECMC_BLOCK_ACCL,"'EMPTY'!='EMPTY'","", "#-") +ecmcEpicsEnvSetCalcTernary(ECMC_BLOCK_ACCS,"'EMPTY'=='EMPTY'","", "#-") + ecmcConfigOrDie "Cfg.SetAxisAcc(2,10)" + ecmcConfigOrDie "Cfg.SetAxisDec(2,10)" +ecmcConfigOrDie "Cfg.SetAxisJerk(2,0)" +ecmcConfigOrDie "Cfg.SetAxisVel(2,10.0)" +ecmcConfigOrDie "Cfg.SetAxisEmergDeceleration(2,100)" +ecmcConfigOrDie "Cfg.SetAxisHomeVelTwordsCam(2,5)" +ecmcConfigOrDie "Cfg.SetAxisHomeVelOffCam(2,4)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKp(2,15.0)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKi(2,0.02)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKd(2,0.0)" +ecmcConfigOrDie "Cfg.SetAxisCntrlKff(2,1.0)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s4.positionActual01,"ax2.enc.actpos")" +ecmcConfigOrDie "Cfg.SetAxisEncScaleDenom(2,2000)" +ecmcConfigOrDie "Cfg.SetAxisEncScaleNum(2,60)" +ecmcConfigOrDie "Cfg.SetAxisEncType(2,0)" +ecmcConfigOrDie "Cfg.SetAxisEncBits(2,16)" +ecmcConfigOrDie "Cfg.SetAxisEncAbsBits(2,0)" +ecmcConfigOrDie "Cfg.SetAxisEncOffset(2,0)" +ecmcConfigOrDie "Cfg.SetAxisEncVelFilterSize(2,100)" +ecmcConfigOrDie "Cfg.SetAxisEncPosFilterSize(2,1)" +ecmcConfigOrDie "Cfg.SetAxisEncPosFilterEnable(2,0)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.reset")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.alarm0")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.alarm1")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.alarm2")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.warning")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.latchpos")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.latchcontrol")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.enc.latchstatus")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveControl01.0,"ax2.drv.control")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveStatus01.1,"ax2.drv.status")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.velocitySetpoint01,"ax2.drv.velocity")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.drv.position")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax2.drv.brake")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveControl01.2,"ax2.drv.reducetorque")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveControl01.1,"ax2.drv.reset")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveStatus01.3,"ax2.drv.alarm0")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveStatus01.7,"ax2.drv.alarm1")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveStatus01.14,"ax2.drv.alarm2")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s9.driveStatus01.2,"ax2.drv.warning")" +ecmcConfigOrDie "Cfg.SetAxisDrvScaleDenom(2,32768.0)" +ecmcConfigOrDie "Cfg.SetAxisDrvScaleNum(2,-600.0)" +ecmcConfigOrDie "Cfg.SetAxisDrvBrakeOpenDelayTime(2,0)" +ecmcConfigOrDie "Cfg.SetAxisDrvBr2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.613 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.614 OK +2022/01/24 16:04:07.615 OK +2022/01/24 16:04:07.615 OK +2022/01/24 16:04:07.615 OK +2022/01/24 16:04:07.615 OK +2022/01/24 16:04:07.615 OK +2022/01/24 16:04:07.615 OK +2022/01/24 16:04:07.616 ecmcMotorRecord:: setIntegerParam(2 motorPowerAutoOnOff_)=2 +2022/01/24 16:04:07.616 ecmcMotorRecord:: setDoubleParam(2 motorPowerOnDelay_)=6 +2022/01/24 16:04:07.616 ecmcMotorRecord:: setDoubleParam(2 motorPowerOffDelay_=-1 +2022/01/24 16:04:07.616 ecmcMotorRecord:: udateMotorLimitsRO(2) enabledHighAndLow=1 valid=1 fValueHigh=20 fValueLow=-130 +2022/01/24 16:04:07.616 ecmcMotorRecord:: connected(2) +2022/01/24 16:04:07.616 ecmcMotorRecord:: initialPoll(2) status=0 +akeCloseAheadTime(2,0)" +ecmcConfigOrDie "Cfg.SetAxisSoftLimitPosBwd(2,-130)" +ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitBwd(2,1)" +ecmcConfigOrDie "Cfg.SetAxisSoftLimitPosFwd(2,20)" +ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitFwd(2,1)" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.binaryInput06.0,"ax2.mon.lowlim")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.binaryInput05.0,"ax2.mon.highlim")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s1.binaryInput07.0,"ax2.mon.homesensor")" +ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s0.ONE.0,"ax2.mon.extinterlock")" +ecmcConfigOrDie "Cfg.SetAxisMonAtTargetTol(2,0.1)" +ecmcConfigOrDie "Cfg.SetAxisMonAtTargetTime(2,100)" +ecmcConfigOrDie "Cfg.SetAxisMonEnableAtTargetMon(2,1)" +ecmcConfigOrDie "Cfg.SetAxisMonPosLagTol(2,1.0)" +ecmcConfigOrDie "Cfg.SetAxisMonPosLagTime(2,10)" +ecmcConfigOrDie "Cfg.SetAxisMonEnableLagMon(2,1)" +ecmcConfigOrDie "Cfg.SetAxisMonMaxVel(2,100.0)" +ecmcConfigOrDie "Cfg.SetAxisMonEnableMaxVel(2,1)" +ecmcConfigOrDie "Cfg.SetAxisMonMaxVelDriveILDelay(2,200)" +ecmcConfigOrDie "Cfg.SetAxisMonMaxVelTrajILDelay(2,100)" +ecmcConfigOrDie "Cfg.SetAxisMonHomeSwitchPolarity(2,0)" +ecmcConfigOrDie "Cfg.SetAxisHomeLatchCountOffset(2,0.0)" +ecmcConfigOrDie "Cfg.SetAxisHomePosition(2,0.0)" +ecmcConfigOrDie "Cfg.SetAxisHomePostMoveEnable(2, 0)" +ecmcConfigOrDie "Cfg.SetAxisHomePostMoveTargetPosition(2, 0)" + ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_mr.cmd",1) + iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_mr.cmd +#============================================================================== +# ecmc_axis_mr.cmd +ecmcMotorRecordCreateAxis(MCU1, "2", "6", ) +ecmcEpicsEnvSetCalc("ECMC_TEMP_SREV","if(abs(2000)>0){RESULT:=abs(2000);} else {RESULT:=1.0};","%d") +ecmcEpicsEnvSetCalc("ECMC_TEMP_UREV","if(abs(60)>0){RESULT:=abs(60);} else {RESULT:=1.0};","%lf") +ecmcFileExist(ecmcMotorRecord.template,1,1) + dbLoadRecords(ecmcMotorRecord.template, "PREFIX=IOC_TEST:, MOTOR_NAME=Axis2, MOTOR_PORT=MCU1, AXIS_NO=2, DESC=MCU1021 Upper Axis (2), EGU=mm, PREC=3, VELO=10.0, JVEL=5, JAR=0.0, ACCS=10, RDBD=0.1, DLLM=-130, DHLM=20, HOMEPROC=3,SREV=2000,UREV=60.000000, ") +epicsEnvSet("ECMC_AXISFIELDINIT", "") +ecmcFileExist(ecmcMotorRecordhome.template,1,1) +dbLoadRecords(ecmcMotorRecordhome.template, "PREFIX=IOC_TEST:, MOTOR_NAME=Axis2, MOTOR_PORT=MCU1, AXIS_NO=2,HOMEPROC=3, HOMEPOS=0.0, HVELTO=5, HVELFRM=4, HOMEACC=21, HOMEDEC=100") +epicsEnvUnset(ECMC_TEMP_SREV) +epicsEnvUnset(ECMC_TEMP_UREV) +epicsEnvUnset(ECMC_BLOCK_ACCL) +epicsEnvUnset(ECMC_BLOCK_ACCS) +ecmcFileExist("ecmcAxis.db",1,1) +dbLoadRecords("ecmcAxis.db","P=IOC_TEST:,AXIS_NAME=Axis2,AXIS_NO=2,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,T_SMP_MS=10,TSE=-2") +ecmcFileExist("ecmcAxisType.db",1,1) +dbLoadRecords("ecmcAxisType.db","P=IOC_TEST:,AXIS_NAME=Axis2,AXIS_TYPE=1") +ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd,1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd +#============================================================================== +# ecmc_axis_unset.cmd +epicsEnvUnset(ECMC_AXISCONFIG) +epicsEnvUnset(ECMC_AXISFIELDINIT) +epicsEnvUnset(ECMC_PREC) +epicsEnvUnset(ECMC_EGU) +epicsEnvUnset(ECMC_DESC) +epicsEnvUnset(ECMC_R) +epicsEnvUnset(ECMC_MOTOR_NAME) +epicsEnvUnset(ECMC_EC_AXIS_HEALTH) +epicsEnvUnset(ECMC_MOD_RANGE) +epicsEnvUnset(ECMC_MOD_TYPE) +epicsEnvUnset(ECMC_EMERG_DECEL) +epicsEnvUnset(ECMC_VELO) +epicsEnvUnset(ECMC_ACCL) +epicsEnvUnset(ECMC_ACCS_EGU_PER_S2) +epicsEnvUnset(ECMC_HOME_VEL_TO) +epicsEnvUnset(ECMC_HOME_VEL_FRM) +epicsEnvUnset(ECMC_CNTRL_KP) +epicsEnvUnset(ECMC_CNTRL_KI) +epicsEnvUnset(ECMC_CNTRL_KD) +epicsEnvUnset(ECMC_CNTRL_KFF) +epicsEnvUnset(ECMC_EC_ENC_ACTPOS) +epicsEnvUnset(ECMC_EC_ENC_LATCHPOS) +epicsEnvUnset(ECMC_EC_ENC_LATCH_CONTROL) +epicsEnvUnset(ECMC_EC_ENC_LATCH_STATUS) +epicsEnvUnset(ECMC_HOME_LATCH_COUNT_OFFSET) +epicsEnvUnset(ECMC_ENC_SCALE_DENOM) +epicsEnvUnset(ECMC_ENC_SCALE_NUM) +epicsEnvUnset(ECMC_ENC_TYPE) +epicsEnvUnset(ECMC_ENC_BITS) +epicsEnvUnset(ECMC_ENC_ABS_BITS) +epicmacLib: macro ECMC_EXE_CMD is undefined (expanding string ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'${ECMC_MODE=FULL}'='DAQ'","ecmcExit Error: ECMC started in DAQ mode. Motion not supported..","#-")${ECMC_EXE_CMD}) +macLib: macro ECMC_EXE_CMD is undefined (expanding string ${ECMC_EXE_CMD}) +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +sEnvUnset(ECMC_ENC_ABS_OFFSET) +epicsEnvUnset(ECMC_ENC_VEL_FILTER_SIZE) +epicsEnvUnset(ECMC_ENC_POS_FILTER_SIZE) +epicsEnvUnset(ECMC_ENC_POS_FILTER_ENABLE) +epicsEnvUnset(ECMC_EC_ENC_RESET) +epicsEnvUnset(ECMC_EC_ENC_ALARM_0) +epicsEnvUnset(ECMC_EC_ENC_ALARM_1) +epicsEnvUnset(ECMC_EC_ENC_ALARM_2) +epicsEnvUnset(ECMC_EC_ENC_WARNING) +epicsEnvUnset(ECMC_EC_DRV_CONTROL) +epicsEnvUnset(ECMC_EC_DRV_STATUS) +epicsEnvUnset(ECMC_EC_DRV_VELOCITY) +epicsEnvUnset(ECMC_EC_DRV_BRAKE) +epicsEnvUnset(ECMC_EC_DRV_REDUCE_TORQUE) +epicsEnvUnset(ECMC_EC_DRV_RESET) +epicsEnvUnset(ECMC_EC_DRV_ALARM_0) +epicsEnvUnset(ECMC_EC_DRV_ALARM_1) +epicsEnvUnset(ECMC_EC_DRV_ALARM_2) +epicsEnvUnset(ECMC_EC_DRV_WARNING) +epicsEnvUnset(ECMC_DRV_SCALE_DENOM) +epicsEnvUnset(ECMC_DRV_SCALE_NUM) +epicsEnvUnset(ECMC_DRV_BRAKE_OPEN_DLY_TIME) +epicsEnvUnset(ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME) +epicsEnvUnset(ECMC_SOFT_LOW_LIM) +epicsEnvUnset(ECMC_DXLM_ENABLE) +epicsEnvUnset(ECMC_SOFT_HIGH_LIM) +epicsEnvUnset(ECMC_DXLM_ENABLE) +epicsEnvUnset(ECMC_EC_MON_LOWLIM) +epicsEnvUnset(ECMC_EC_MON_HIGHLIM) +epicsEnvUnset(ECMC_EC_MON_HOME_SWITCH) +epicsEnvUnset(ECMC_EC_MON_EXT_INTERLOCK) +epicsEnvUnset(ECMC_MON_AT_TARGET_TOL) +epicsEnvUnset(ECMC_MON_AT_TARGET_TIME) +epicsEnvUnset(ECMC_MON_AT_TARGET_ENA) +epicsEnvUnset(ECMC_MON_LAG_MON_TOL) +epicsEnvUnset(ECMC_MON_LAG_MON_TIME) +epicsEnvUnset(ECMC_MON_LAG_MON_ENA) +epicsEnvUnset(ECMC_MON_VELO_MAX) +epicsEnvUnset(ECMC_MON_VELO_MAX_ENA) +epicsEnvUnset(ECMC_MON_VELO_MAX_DRV_TIME) +epicsEnvUnset(ECMC_MON_VELO_MAX_TRAJ_TIME) +epicsEnvUnset(ECMC_JOG_VEL) +epicsEnvUnset(ECMC_JAR) +epicsEnvUnset(ECMC_HOME_PROC) +epicsEnvUnset(ECMC_HOME_POS) +epicsEnvUnset(ECMC_HOME_ACC) +epicsEnvUnset(ECMC_HOME_DEC) +epicsEnvUnset(ECMC_DRV_TYPE) +epicsEnvUnset(ECMC_VELO) +epicsEnvUnset(ECMC_SOFT_LOW_LIM) +epicsEnvUnset(ECMC_SOFT_HIGH_LIM) +epicsEnvUnset(ECMC_HOME_POS_MOVE_ENA) +epicsEnvUnset(ECMC_HOME_POS_MOVE_TARG_POS) +epicsEnvUnset(ECMC_TRAJ_TYPE) +epicsEnvUnset(ECMC_JERK) +epicsEnvSet("ECMC_PREFIX" "IOC_TEST:") +# Set external setpoints +iocshLoad (/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyAxisSynchronization.cmd, CONFIG=./cfg/linear_2.sax) +#============================================================================== +# applyAxisSynchronization.cmd +epicsEnvUnset(ECMC_EXE_CMD) +iocshLoad ./cfg/linear_2.sax +############# Encoder +epicsEnvSet("ECMC_ENC_SOURCE", "0") # 0 Internal (from hardware), 1 from PLC +epicsEnvSet("ECMC_ENC_VELO_FILT_ENABLE", "1") # Enable velocity filter +epicsEnvSet("ECMC_ENC_VELO_FILT_SIZE", "20") # Encoder velocity Low pass filter size +############# Trajectory +epicsEnvSet("ECMC_TRAJ_SOURCE", "1") # 0 Internal (from hardware), 1 from PLC +epicsEnvSet("ECMC_TRAJ_VELO_FILT_ENABLE", "1") # Enable velocity filter +epicsEnvSet("ECMC_TRAJ_VELO_FILT_SIZE", "20") # Trajectory velocity Low pass filter size +############# Commands +epicsEnvSet("ECMC_CMD_FRM_OTHER_PLC_ENABLE", "1") # Allow commands from PLC +epicsEnvSet("ECMC_CMD_AXIS_PLC_ENABLE", "0") # Enable Axis PLC +# Each line below is appended to one single expression/source. +# Executed in sync with axis (before) +epicsEnvSet("ECMC_AXIS_EXPR_LINE_1", "var a:=1|") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_2", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_3", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_4", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_5", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_6", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_7", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_8", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_9", "") +epicsEnvSet("ECMC_AXIS_EXPR_LINE_10", "") +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync.cmd +#============================================================================== +# ecmc_axis_sync.cmd +ecmcConfigOrDie "Cfg.SetAxisAllowCommandsFromPLC(2,1)" +ecmcConfigOrDie "Cfg.SetAxisPLCEnable(2,0)" +e2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.628 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +2022/01/24 16:04:07.629 OK +cmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=var a:=1|" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=" +ecmcConfigOrDie "Cfg.SetAxisPLCEncVelFilterSize(2,20)" +ecmcConfigOrDie "Cfg.SetAxisPLCEncVelFilterEnable(2,1)" +ecmcConfigOrDie "Cfg.SetAxisEncSourceType(2,0)" +ecmcConfigOrDie "Cfg.SetAxisPLCTrajVelFilterSize(2,20)" +ecmcConfigOrDie "Cfg.SetAxisPLCTrajVelFilterEnable(2,1)" +ecmcConfigOrDie "Cfg.SetAxisTrajSourceType(2,1)" +ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd,1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd +#============================================================================== +# ecmc_axis_sync_unset.cmd +epicsEnvUnset(ECMC_CMD_FRM_OTHER_PLC_ENABLE) +epicsEnvUnset(ECMC_CMD_AXIS_PLC_ENABLE) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_1) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_2) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_3) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_4) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_5) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_6) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_7) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_8) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_9) +epicsEnvUnset(ECMC_AXIS_EXPR_LINE_10) +epicsEnvUnset(ECMC_ENC_VELO_FILT_SIZE) +epicsEnvUnset(ECMC_ENC_VELO_FILT_ENABLE) +epicsEnvUnset(ECMC_ENC_SOURCE) +epicsEnvUnset(ECMC_TRAJ_VELO_FILT_SIZE) +epicsEnvUnset(ECMC_TRAJ_VELO_FILT_ENABLE) +epicsEnvUnset(ECMC_TRAJ_SOURCE) +############################################################################## +## Load plugin: +epicsEnvSet("PLUGIN_VER" ,"develop") +require ecmc_plugin_grbl develop +Module ecmc_plugin_grbl version develop found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/ +Module ecmc_plugin_grbl depends on asyn 4.41.0 +Module asyn version 4.41.0 already loaded +Module ecmc_plugin_grbl depends on ecmc ruckig +Module ecmc version ruckig already loaded +Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so +Loaded ecmc_plugin_grbl version develop +Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/dbd/ecmc_plugin_grbl.dbd +Calling function ecmc_plugin_grbl_registerRecordDeviceDriver +Loading module info records for ecmc_plugin_grbl +epicsEnvSet(ECMC_PLUGIN_FILNAME,"/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so") +epicsEnvSet(ECMC_PLUGIN_CONFIG,"DBG_PRINT=1;X_AXIS=1;Y_AXIS=2;AUTO_ENABLE=1;") # Only one option implemented in this plugin +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/loadPlugin.cmd, "PLUGIN_ID=0,FILE=/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so,CONFIG='DBG_PRINT=1;X_AXIS=1;Y_AXIS=2;AUTO_ENABLE=1;', REPORT=1" +#============================================================================== +# loadPlugin.cmd +ecmcConfigOrDie "Cfg.LoadPlugin(0,/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so,DBG_PRINT=1;X_AXIS=1;Y_AXIS=2;AUTO_ENABLE=1;)" +../ecmc_plugin_grbl/ecmcGrbl.cpp:doReadWorker:223 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doMainWorker:261 +../grbl/grbl_serial.c:serial_init:70: +../grbl/grbl_eeprom.c:ecmc_init_file:53 +../grbl/grbl_settings.c:settings_restore:132 settings_restore complete!!!.. +../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file.. +../grbl/grbl_stepper.c:stepper_init:607 +../grbl/grbl_system.c:system_init:26: +../grbl/grbl_gcode.c:gc_init:44: +../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file.. +../grbl/grbl_spindle_control.c:spindle_init:31 Not supported yet.. +../grbl/grbl_coolant_contro2022/01/24 16:04:07.835 OK +2022/01/24 16:04:07.836 OK +l.c:coolant_init:25 Not supported yet.. +../grbl/grbl_limits.c:limits_init:44 Not supported yet.. +../grbl/grbl_probe.c:probe_init:31 Not supported yet.. +../grbl/grbl_stepper.c:st_reset:574 +../grbl/grbl_stepper.c:st_go_idle:261 +Waiting for grbl init..../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:235 +../grbl/grbl_stepper.c:st_generate_step_dir_invert_masks:552 +../grbl/grbl_gcode.c:gc_sync_position:59: +../grbl/grbl_protocol.c:protocol_main_loop:40 +../grbl/grbl_system.c:system_check_safety_door_ajar:93: +../grbl/grbl_system.c:system_execute_startup:107: +../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file.. +../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file.. + +Grbl 1.1h ['$' for help] +.ecmcEpicsEnvSetCalcTernary("ECMC_PLUGIN_REPORT", "1>0","","#") +ecmcConfigOrDie "Cfg.ReportPlugin(0)" +Plugin info: + Index = 0 + Name = ecmcPluginGrbl + Description = grbl plugin for use with ecmc. + Option description = + DBG_PRINT=<1/0> : Enables/disables printouts from plugin, default = disabled (=0). + X_AXIS=: Ecmc Axis id for use as grbl X axis, default = disabled (=-1). + Y_AXIS=: Ecmc Axis id for use as grbl Y axis, default = disabled (=-1). + Z_AXIS=: Ecmc Axis id for use as grbl Z axis, default = disabled (=-1). + SPINDLE_AXIS=: Ecmc Axis id for use as grbl spindle axis, default = disabled (=-1). + AUTO_ENABLE=<1/0>: Auto enable the linked ecmc axes autmatically before start, default = disabled (=0). + + Filename = /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so + Config string = DBG_PRINT=1;X_AXIS=1;Y_AXIS=2;AUTO_ENABLE=1; + Version = 2 + Interface version = 65536 (ecmc = 65536) + max plc funcs = 64 + max plc func args = 10 + max plc consts = 64 + Construct func = @0xb4e1df98 + Enter realtime func = @0xb4e1df40 + Exit realtime func = @0xb4e1df48 + Realtime func = @0xb4e1df88 + Destruct func = @0xb4e1df60 + dlhandle = @0x9d3338 + Plc functions: + funcs[00]: + Name = "grbl_connect();" + Desc = double grbl_connect() : Connect to grbl interface (from config str). + Arg count = 0 + func = @0xb4e1df50 + Plc constants: + +epicsEnvUnset(ECMC_PLUGIN_REPORT); +epicsEnvUnset(ECMC_PLUGIN_FILNAME) +epicsEnvUnset(ECMC_PLUGIN_CONFIG) +ecmcGrblAddCommand("G1X20Y20F180"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 1 +ecmcGrblAddCommand("G4P1"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 2 +ecmcGrblAddCommand("G2X0Y0R20"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 3 +ecmcGrblAddCommand("G0X10Y10"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 4 +ecmcGrblAddCommand("G4P1"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 5 +ecmcGrblAddCommand("G1X10Y0F360"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 6 +ecmcGrblAddCommand("G4P1"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 7 +ecmcGrblAddCommand("G1X50Y50F180"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 8 +ecmcGrblAddCommand("G4P1"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 9 +ecmcGrblAddCommand("G1X0Y0F360"); +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:466: +../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:470: Buffer size 10 +# +#ecmcGrblAddCommand("$"); +# +#ecmcGrblAddCommand("G0X10Y100"); +# +#ecmcGrblAddCommand("$G"); +# +#ecmcGrblAddCommand("G4P1"); +# +#ecmcGrblAddCommand("G1X202022/01/24 16:04:07.836 OK +2022/01/24 16:04:07.837 OK +2022/01/24 16:04:07.837 OK +2022/01/24 16:04:07.837 OK +2022/01/24 16:04:07.837 OK +2022/01/24 16:04:07.837 OK +2022/01/24 16:04:07.841 INFO: Locking memory +2022/01/24 16:04:07.941 ../devEcmcSup/motion/ecmcMonitor.cpp/checkLimits:501: ERROR_MON_BOTH_LIMIT_INTERLOCK (0x14c10). +2022/01/24 16:04:07.942 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315). +2022/01/24 16:04:07.942 ../devEcmcSup/motion/ecmcMonitor.cpp/checkLimits:501: ERROR_MON_BOTH_LIMIT_INTERLOCK (0x14c10). +2022/01/24 16:04:07.942 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 0: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 1: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 2: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 3: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 4: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 5: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 6: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 8: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 9: Not operational (0x24011). +2022/01/24 16:04:07.942 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011). +2022/01/24 16:04:08.017 Starting up EtherCAT bus: 0 second(s). Max wait time 30 second(s). +2022/01/24 16:04:08.029 ecmcMotorRecord:: poll(1) homed=1 +2022/01/24 16:04:08.029 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000062 +2022/01/24 16:04:08.030 ecmcMotorRecord:: poll(1) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315 +2022/01/24 16:04:08.030 ecmcMotorRecord:: sErrorMessage(1)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK" +2022/01/24 16:04:08.030 ecmcMotorRecord:: poll(1) callParamCallbacksUpdateError Error=1 old=-1 ErrID=0x14315 old=0x0 Warn=0 nCmd=0 old=0 txt=E: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315) +2022/01/24 16:04:08.030 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000014 +2022/01/24 16:04:08.030 ecmcMotorRecord:: poll(2) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315 +2022/01/24 16:04:08.030 ecmcMotorRecord:: sErrorMessage(2)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK" +2022/01/24 16:04:08.030 ecmcMotorRecord:: poll(2) callParamCallbacksUpdateError Error=1 old=-1 ErrID=0x14315 old=0x0 Warn=0 nCmd=0 old=0 txt=E: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315) +2022/01/24 16:04:08.230 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000011 +2022/01/24 16:04:08.230 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000007 +2022/01/24 16:04:08.431 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000011 +2022/01/24 16:04:08.431 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000006 +2022/01/24 16:04:08.631 ecmcMotorRecord:: poll(1) LLS=0 +2022/01/24 16:04:08.631 ecmcMotorRecord:: poll(1) HLS=0 +2022/01/24 16:04:08.631 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000083 +2022/01/24 16:04:08.631 ecmcMotorRecord:: poll(2) LLS=0 +2022/01/24 16:04:08.631 ecmcMotorRecord:: poll(2) HLS=0 +2022/01/24 16:04:08.631 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000037 +2022/01/24 16:04:08.831 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000012 +2022/01/24 16:04:08.831 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=94.95 time=0.000008 +2022/01/24 16:04:09.004 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:328: WARNING (axis 1): Drive hardware in warning state. +2022/01/24 16:04:09.017 Starting up EtherCAT bus: 1 second(s). Max wait time 30 second(s). +2022/01/24 16:04:09.031 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000014 +2022/01/24 16:04:09.031 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=94.95 time=0.000104 +2022/01/24 16:04:09.232 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000013 +2022/01/24 16:04:09.232 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=94.95 time=0.000007 +2022/01/24 16:04:09.278 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:328: WARNING (axis 2): Drive hardware in warning state. +2022/01/24 16:04:09.432 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000013 +2022/01/24 16:04:09.432 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=94.95 time=0.000007 +2022/01/24 16:04:09.445 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0). +2022/01/24 16:04:09.445 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0). +2022/01/24 16:04:09.445 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0). +2022/01/24 16:04:09.445 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0). +2022/01/24 16:04:09.445 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0). +2022/01/24 16:04:09.632 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000012 +2022/01/24 16:04:09.632 ecmcMotorRecord:: poll(1) bError=0 drvlocal.statusBinData.onChangeData.error=0x0 +2022/01/24 16:04:09.632 ecmcMotorRecord:: poll(1) callParamCallbacksUpdateError Error=0 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL +2022/01/24 16:04:09.632 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000008 +2022/01/24 16:04:09.632 ecmcMotorRecord:: poll(2) bError=0 drvlocal.statusBinData.onChangeData.error=0x0 +2022/01/24 16:04:09.632 ecmcMotorRecord:: poll(2) callParamCallbacksUpdateError Error=4 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL +2022/01/24 16:04:09.832 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000012 +2022/01/24 16:04:09.832 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000007 +2022/01/24 16:04:10.032 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000012 +2022/01/24 16:04:10.033 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000006 +2022/01/24 16:04:10.233 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000019 +2022/01/24 16:04:10.233 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000011 +2022/01/24 16:04:10.433 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000020 +2022/01/24 16:04:10.433 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000013 +2022/01/24 16:04:10.633 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000097 +2022/01/24 16:04:10.633 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000009 +2022/01/24 16:04:10.834 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000012 +2022/01/24 16:04:10.834 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000006 +2022/01/24 16:04:11.017 EtherCAT bus started! +2022/01/24 16:04:11.017 OK +2022/01/24 16:04:11.017 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocBuild (0). Allow callbacks: true. +Starting iocInit +2022/01/24 16:04:11.017 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtBeginning (1). Allow callbacks: true. +2022/01/24 16:04:11.032 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCallbackInit (2). Allow callbacks: true. +2022/01/24 16:04:11.034 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000020 +2022/01/24 16:04:11.034 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000007 +2022/01/24 16:04:11.038 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaLinkInit (3). Allow callbacks: true. +2022/01/24 16:04:11.038 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDrvSup (4). Allow callbacks: true. +2022/01/24 16:04:11.038 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitRecSup (5). Allow callbacks: true. +2022/01/24 16:04:11.042 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDevSup (6). Allow callbacks: true. +2022/01/24 16:04:11.046 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.positionActual01 linked to record (asyn reason 1). +2022/01/24 16:04:11.047 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderLatchPostion01 linked to record (asyn reason 2). +2022/01/24 16:04:11.047 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderControl01 linked to record (asyn reason 3). +2022/01/24 16:04:11.048 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderValue01 linked to record (asyn reason 4). +2022/01/24 16:04:11.048 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.positionActual01 linked to record (asyn reason 5). +2022/01/24 16:04:11.048 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderLatchPostion01 linked to record (asyn reason 6). +2022/01/24 16:04:11.048 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderControl01 linked to record (asyn reason 7). +2022/01/24 16:04:11.048 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderValue01 linked to record (asyn reason 8). +2022/01/24 16:04:11.049 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchPositive01 linked to record (asyn reason 9). +2022/01/24 16:04:11.049 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchNegative01 linked to record (asyn reason 10). +2022/01/24 16:04:11.049 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchPositive02 linked to record (asyn reason 11). +2022/01/24 16:04:11.049 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchNegative02 linked to record (asyn reason 12). +2022/01/24 16:04:11.050 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.driveControl01 linked to record (asyn reason 13). +2022/01/24 16:04:11.050 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.velocitySetpoint01 linked to record (asyn reason 14). +2022/01/24 16:04:11.050 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.positionActual01 linked to record (asyn reason 15). +2022/01/24 16:04:11.050 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderLatchPostion01 linked to record (asyn reason 16). +2022/01/24 16:04:11.051 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderControl01 linked to record (asyn reason 17). +2022/01/24 16:04:11.051 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderValue01 linked to record (asyn reason 18). +2022/01/24 16:04:11.052 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.driveControl01 linked to record (asyn reason 19). +2022/01/24 16:04:11.052 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.velocitySetpoint01 linked to record (asyn reason 20). +2022/01/24 16:04:11.052 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.positionActual01 linked to record (asyn reason 21). +2022/01/24 16:04:11.053 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderLatchPostion01 linked to record (asyn reason 22). +2022/01/24 16:04:11.053 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderControl01 linked to record (asyn reason 23). +2022/01/24 16:04:11.054 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderValue01 linked to record (asyn reason 24). +2022/01/24 16:04:11.055 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.actpos linked to record (asyn reason 25). +2022/01/24 16:04:11.056 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.setpos linked to record (asyn reason 26). +2022/01/24 16:04:11.057 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.poserr linked to record (asyn reason 27). +2022/01/24 16:04:11.057 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax1.plc.error linked to record (asyn reason 28). +2022/01/24 16:04:11.059 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.actpos linked to record (asyn reason 29). +2022/01/24 16:04:11.060 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.setpos linked to record (asyn reason 30). +2022/01/24 16:04:11.060 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.poserr linked to record (asyn reason 31). +2022/01/24 16:04:11.061 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.error linked to record (asyn reason 32). +2022/01/24 16:04:11.062 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.appmode linked to record (asyn reason 33). +2022/01/24 16:04:11.063 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.id linked to record (asyn reason 34). +2022/01/24 16:04:11.064 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.latency.min linked to record (asyn reason 35). +2022/01/24 16:04:11.065 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.latency.max linked to record (asyn reason 36). +2022/01/24 16:04:11.066 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.period.min linked to record (asyn reason 37). +2022/01/24 16:04:11.067 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.period.max linked to record (asyn reason 38). +2022/01/24 16:04:11.068 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.execute.min linked to record (asyn reason 39). +2022/01/24 16:04:11.069 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.execute.max linked to record (asyn reason 40). +2022/01/24 16:04:11.071 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.send.min linked to record (asyn reason 41). +2022/01/24 16:04:11.072 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.send.max linked to record (asyn reason 42). +2022/01/24 16:04:11.074 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput01 linked to record (asyn reason 43). +2022/01/24 16:04:11.076 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput02 linked to record (asyn reason 44). +2022/01/24 16:04:11.078 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput03 linked to record (asyn reason 45). +2022/01/24 16:04:11.079 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput04 linked to record (asyn reason 46). +2022/01/24 16:04:11.081 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput05 linked to record (asyn reason 47). +2022/01/24 16:04:11.082 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput06 linked to record (asyn reason 48). +2022/01/24 16:04:11.084 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput07 linked to record (asyn reason 49). +2022/01/24 16:04:11.085 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput08 linked to record (asyn reason 50). +2022/01/24 16:04:11.087 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput01 linked to record (asyn reason 51). +2022/01/24 16:04:11.090 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput02 linked to record (asyn reason 52). +2022/01/24 16:04:11.094 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput03 linked to record (asyn reason 53). +2022/01/24 16:04:11.097 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput04 linked to record (asyn reason 54). +2022/01/24 16:04:11.099 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput05 linked to record (asyn reason 55). +2022/01/24 16:04:11.102 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput06 linked to record (asyn reason 56). +2022/01/24 16:04:11.104 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput07 linked to record (asyn reason 57). +2022/01/24 16:04:11.110 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput08 linked to record (asyn reason 58). +2022/01/24 16:04:11.111 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.powerOk01 linked to record (asyn reason 59). +2022/01/24 16:04:11.114 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.overload01 linked to record (asyn reason 60). +2022/01/24 16:04:11.116 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.binaryInput01 linked to record (asyn reason 61). +2022/01/24 16:04:11.119 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.binaryInput02 linked to record (asyn reason 62). +2022/01/24 16:04:11.122 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax1.plc.enable linked to record (asyn reason 63). +2022/01/24 16:04:11.125 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax1.plc.firstscan linked to record (asyn reason 64). +2022/01/24 16:04:11.129 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.enable linked to record (asyn reason 65). +2022/01/24 16:04:11.132 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.firstscan linked to record (asyn reason 66). +2022/01/24 16:04:11.135 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.ok linked to record (asyn reason 67). +2022/01/24 16:04:11.138 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.diagnostic linked to record (asyn reason 68). +2022/01/24 16:04:11.140 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.plc.expression linked to record (asyn reason 69). +2022/01/24 16:04:11.141 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.diagnostic linked to record (asyn reason 70). +2022/01/24 16:04:11.143 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.plc.expression linked to record (asyn reason 71). +2022/01/24 16:04:11.144 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.msg linked to record (asyn reason 72). +2022/01/24 16:04:11.145 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.updated linked to record (asyn reason 73). +2022/01/24 16:04:11.147 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.command linked to record (asyn reason 74). +2022/01/24 16:04:11.150 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.command linked to record (asyn reason 75). +Y20F20"); +# +#ecmcGrblAddCommand("G4P1"); +# +#ecmcGrblAddCommand("G2X40Y40R20"); +# +#ecmcGrblAddCommand("$"); +############################################################################## +## PLC 0 +# $(SCRIPTEXEC) $(ecmccfg_DIR)loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_MS=1000,FILE=./plc/can.plc") +############################################################################## +############# Configure diagnostics: +ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)" +ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)" +ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)" +ecmcConfigOrDie "Cfg.SetDiagAxisIndex(1)" +ecmcConfigOrDie "Cfg.SetDiagAxisFreq(2)" +ecmcConfigOrDie "Cfg.SetDiagAxisEnable(0)" +iocshLoad (/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/setAppMode.cmd) +#============================================================================== +# setAppMode.cmd +ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/general.cmd",1) +iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/general.cmd +#============================================================================== +# general.cmd +ecmcFileExist("ecmcGeneral.db",1,1) +dbLoadRecords("ecmcGeneral.db","P=IOC_TEST:,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,T_SMP_MS=10,TSE=-2,ECMC_PROC_HOOK=") +# Examples of commands for info: +# ecmcReport or asynReport +# ecmcReport 3 +# ecmcGrepParam +# List all ecmc params for ethercat slave 2: +# ecmcGrepParam *s2* +# +ecmcEpicsEnvSetCalcTernary(ECMC_MASTER_CMD, "0>=0", "","#- ") + ecmcFileExist("ecmcEc.db",1,1) + dbLoadRecords("ecmcEc.db","P=IOC_TEST:,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,T_SMP_MS=10,TSE=-2") +ecmcConfigOrDie "Cfg.SetAppMode(1)" +iocInit() +############################################################################ +## EPICS R7.0.5-E3-7.0.5-patch +## Rev. 2021-05-05T19:45+0200 +############################################################################ +ECATtimestamp aSubRecord: IOC_TEST:m0s006-BI01-TimeRiseTS +ECATtimestamp aSubRecord: IOC_TEST:m0s006-BI01-TimeFallTS +ECATtimestamp aSubRecord: IOC_TEST:m0s006-BI02-TimeRiseTS +ECATtimestamp aSubRecord: IOC_TEST:m0s006-BI02-TimeFallTS +2022/01/24 16:04:11.154 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.ONE linked to record (asyn reason 76). +2022/01/24 16:04:11.157 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.ZERO linked to record (asyn reason 77). +2022/01/24 16:04:11.160 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.ONE linked to record (asyn reason 78). +2022/01/24 16:04:11.162 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.ZERO linked to record (asyn reason 79). +2022/01/24 16:04:11.165 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.ONE linked to record (asyn reason 80). +2022/01/24 16:04:11.169 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.ZERO linked to record (asyn reason 81). +2022/01/24 16:04:11.171 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.ONE linked to record (asyn reason 82). +2022/01/24 16:04:11.174 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.ZERO linked to record (asyn reason 83). +2022/01/24 16:04:11.177 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.ONE linked to record (asyn reason 84). +2022/01/24 16:04:11.179 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.ZERO linked to record (asyn reason 85). +2022/01/24 16:04:11.182 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.ONE linked to record (asyn reason 86). +2022/01/24 16:04:11.184 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.ZERO linked to record (asyn reason 87). +2022/01/24 16:04:11.186 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.ONE linked to record (asyn reason 88). +2022/01/24 16:04:11.189 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.ZERO linked to record (asyn reason 89). +2022/01/24 16:04:11.191 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.ONE linked to record (asyn reason 90). +2022/01/24 16:04:11.193 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.ZERO linked to record (asyn reason 91). +2022/01/24 16:04:11.196 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.ONE linked to record (asyn reason 92). +2022/01/24 16:04:11.199 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.ZERO linked to record (asyn reason 93). +2022/01/24 16:04:11.202 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.cmddata linked to record (asyn reason 94). +2022/01/24 16:04:11.206 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.cmddata linked to record (asyn reason 95). +2022/01/24 16:04:11.209 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.slavestatus linked to record (asyn reason 96). +2022/01/24 16:04:11.212 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.slavestatus linked to record (asyn reason 97). +2022/01/24 16:04:11.214 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.slavestatus linked to record (asyn reason 98). +2022/01/24 16:04:11.217 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.slavestatus linked to record (asyn reason 99). +2022/01/24 16:04:11.219 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.slavestatus linked to record (asyn reason 100). +2022/01/24 16:04:11.222 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.slavestatus linked to record (asyn reason 101). +2022/01/24 16:04:11.225 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.slavestatus linked to record (asyn reason 102). +2022/01/24 16:04:11.227 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.slavestatus linked to record (asyn reason 103). +2022/01/24 16:04:11.230 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.slavestatus linked to record (asyn reason 104). +2022/01/24 16:04:11.234 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.status linked to record (asyn reason 105). +2022/01/24 16:04:11.234 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000014 +2022/01/24 16:04:11.234 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000151 +2022/01/24 16:04:11.237 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.errorid linked to record (asyn reason 106). +2022/01/24 16:04:11.240 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.status linked to record (asyn reason 107). +2022/01/24 16:04:11.242 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.errorid linked to record (asyn reason 108). +2022/01/24 16:04:11.246 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.masterstatus linked to record (asyn reason 109). +2022/01/24 16:04:11.248 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.slavecounter linked to record (asyn reason 110). +2022/01/24 16:04:11.251 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.memmapcounter linked to record (asyn reason 111). +2022/01/24 16:04:11.254 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.domainfailcountertotal linked to record (asyn reason 112). +2022/01/24 16:04:11.257 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.entrycounter linked to record (asyn reason 113). +2022/01/24 16:04:11.259 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.domainstatus linked to record (asyn reason 114). +2022/01/24 16:04:11.263 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.control linked to record (asyn reason 115). +2022/01/24 16:04:11.266 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.control linked to record (asyn reason 116). +2022/01/24 16:04:11.269 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderStatus01 linked to record (asyn reason 117). +2022/01/24 16:04:11.273 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderStatus01 linked to record (asyn reason 118). +2022/01/24 16:04:11.277 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.status01 linked to record (asyn reason 119). +2022/01/24 16:04:11.280 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.status02 linked to record (asyn reason 120). +2022/01/24 16:04:11.283 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.driveStatus01 linked to record (asyn reason 121). +2022/01/24 16:04:11.287 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderStatus01 linked to record (asyn reason 122). +2022/01/24 16:04:11.290 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.driveStatus01 linked to record (asyn reason 123). +2022/01/24 16:04:11.293 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderStatus01 linked to record (asyn reason 124). +2022/01/24 16:04:11.331 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.targpos linked to record (asyn reason 125). +2022/01/24 16:04:11.335 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.targvelo linked to record (asyn reason 126). +2022/01/24 16:04:11.340 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.targpos linked to record (asyn reason 127). +2022/01/24 16:04:11.344 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.targvelo linked to record (asyn reason 128). +2022/01/24 16:04:11.361 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.reset linked to record (asyn reason 129). +2022/01/24 16:04:11.365 ecmcMotorRecord:: setIntegerParam(1 motorUpdateStatus_)=0 +2022/01/24 16:04:11.365 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000008 +2022/01/24 16:04:11.366 ecmcMotorRecord:: setIntegerParam(2 motorUpdateStatus_)=0 +2022/01/24 16:04:11.366 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000008 +2022/01/24 16:04:11.412 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDatabase (7). Allow callbacks: true. +2022/01/24 16:04:11.412 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterFinishDevSup (8). Allow callbacks: true. +2022/01/24 16:04:11.434 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000013 +2022/01/24 16:04:11.434 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000006 +2022/01/24 16:04:11.635 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000018 +2022/01/24 16:04:11.635 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000010 +2022/01/24 16:04:11.835 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000014 +2022/01/24 16:04:11.835 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000008 +2022/01/24 16:04:11.951 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterScanInit (9). Allow callbacks: true. +2022/01/24 16:04:11.952 ecmcMotorRecord:: setIntegerParam(1 HomProc_)=3 motorNotHomedProblem=0 +2022/01/24 16:04:11.952 ecmcMotorRecord:: setIntegerParam(2 HomProc_)=3 motorNotHomedProblem=0 +2022/01/24 16:04:11.954 ecmcMotorRecord:: setDoubleParam(1 HomPos_)=0.000000 +2022/01/24 16:04:11.954 ecmcMotorRecord:: setDoubleParam(2 HomPos_)=0.000000 +2022/01/24 16:04:11.954 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitialProcess (10). Allow callbacks: true. +2022/01/24 16:04:11.964 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (11). Allow callbacks: true. +2022/01/24 16:04:11.964 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocBuilt (12). Allow callbacks: true. +2022/01/24 16:04:12.012 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocRun (13). Allow callbacks: true. +2022/01/24 16:04:12.012 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterDatabaseRunning (14). Allow callbacks: true. +2022/01/24 16:04:12.013 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInterruptAccept (28). Allow callbacks: true. +2022/01/24 16:04:12.013 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaServerRunning (15). Allow callbacks: true. +2022/01/24 16:04:12.013 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (29). Allow callbacks: true. +iocRun: All initialization complete +2022/01/24 16:04:12.035 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000015 +2022/01/24 16:04:12.035 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000177 +2022/01/24 16:04:12.066 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocRunning (16). Allow callbacks: true. +2022/01/24 16:04:12.070 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:336: INFO (axis 1): Drive hardware warning state cleared. +2022/01/24 16:04:12.070 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:336: INFO (axis 2): Drive hardware warning state cleared. +2022/01/24 16:04:12.236 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000010 +2022/01/24 16:04:12.236 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000006 +2022/01/24 16:04:11.365 [devMotorAsyn.c:439 IOC_TEST:Axis1] init_record IOC_TEST:Axis1 position=0.000000 encoderPos=0.000000 velocity=0.000000 MSTAstatus=0x4d00 flagsValue=0x3f flagsWritten=0x3f pmr->mflg=0x0 +2022/01/24 16:04:11.365 [devMotorAsyn.c:185 IOC_TEST:Axis1] init_controller IOC_TEST:Axis1 set encoder ratio=1.000000 status=0 +2022/01/24 16:04:11.365 [devMotorAsyn.c:266 IOC_TEST:Axis1] update_soft_limits IOC_TEST:Axis1 RawHLM_RO=130.000000 RawLLM_RO=-20.000000 valid=1 DHLM_RO=130.000000 DLLM_RO=-20.000000 +2022/01/24 16:04:11.365 [motorDevSup.c:327 IOC_TEST:Axis1] PositionRestoreNeeded IOC_TEST:Axis1 rstm=2 dval=0.000000 drbv=0.000000 pmr->rdbd=0.100000 rdbd=0.100000 pmr->mres=0.030000 pmr->mflg=0x3f dval_non_zero_pos_near_zero=0 ret=0 +2022/01/24 16:04:11.365 [motorRecord.cc:782 IOC_TEST:Axis1] init_re_init start neverPolled=0 stat=17 nsta=0 +2022/01/24 16:04:11.365 [motorRecord.cc:720 IOC_TEST:Axis1] enforceMinRetryDeadband spdb=0.100000 rdbd=0.100000 mres=0.030000 +2022/01/24 16:04:11.365 [motorRecord.cc:4484 IOC_TEST:Axis1] pmr->dhlm=130 softLimitRO=130 +2022/01/24 16:04:11.365 [motorRecord.cc:4545 IOC_TEST:Axis1] pmr->dllm=-20 softLimitRO=-20 +2022/01/24 16:04:11.365 [motorRecord.cc:833 IOC_TEST:Axis1] init_re_init end dval=0.000000 drbv=0.000000 rdbd=0.100000 spdb=0.100000 +2022/01/24 16:04:11.365 [motorRecord.cc:968 IOC_TEST:Axis1] init_record process_reason="callbackdata + soft limits" dval=0.000000 drbv=0.000000 rdbd=0.100000 spdb=0.100000 stat=0 msta=0x4d00 neverPolled=0 +2022/01/24 16:04:11.365 [devMotorAsyn.c:439 IOC_TEST:Axis2] init_record IOC_TEST:Axis2 position=0.000000 encoderPos=0.000000 velocity=0.000000 MSTAstatus=0x0f00 flagsValue=0x3f flagsWritten=0x3f pmr->mflg=0x0 +2022/01/24 16:04:11.365 [devMotorAsyn.c:185 IOC_TEST:Axis2] init_controller IOC_TEST:Axis2 set encoder ratio=1.000000 status=0 +2022/01/24 16:04:11.365 [devMotorAsyn.c:266 IOC_TEST:Axis2] update_soft_limits IOC_TEST:Axis2 RawHLM_RO=20.000000 RawLLM_RO=-130.000000 valid=1 DHLM_RO=20.000000 DLLM_RO=-130.000000 +2022/01/24 16:04:11.365 [motorDevSup.c:327 IOC_TEST:Axis2] PositionRestoreNeeded IOC_TEST:Axis2 rstm=2 dval=0.000000 drbv=0.000000 pmr->rdbd=0.100000 rdbd=0.100000 pmr->mres=0.030000 pmr->mflg=0x3f dval_non_zero_pos_near_zero=0 ret=0 +2022/01/24 16:04:11.365 [motorRecord.cc:782 IOC_TEST:Axis2] init_re_init start neverPolled=0 stat=17 nsta=0 +2022/01/24 16:04:11.365 [motorRecord.cc:720 IOC_TEST:Axis2] enforceMinRetryDeadband spdb=0.100000 rdbd=0.100000 mres=0.030000 +2022/01/24 16:04:11.365 [motorRecord.cc:4484 IOC_TEST:Axis2] pmr->dhlm=20 softLimitRO=20 +2022/01/24 16:04:11.365 [motorRecord.cc:4545 IOC_TEST:Axis2] pmr->dllm=-130 softLimitRO=-130 +2022/01/24 16:04:11.365 [motorRecord.cc:833 IOC_TEST:Axis2] init_re_init end dval=0.000000 drbv=0.000000 rdbd=0.100000 spdb=0.100000 +2022/01/24 16:04:11.365 [motorRecord.cc:968 IOC_TEST:Axis2] init_record process_reason="callbackdata + soft limits" dval=0.000000 drbv=0.000000 rdbd=0.100000 spdb=0.100000 stat=0 msta=0xf00 neverPolled=0 +# Set the IOC Prompt String One +epicsEnvSet IOCSH_PS1 "raspberrypi-16029 > " +# +raspberrypi-16029 > 2022/01/24 16:04:12.436 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65535 fPos=0 fActPosition=0 time=0.000010 +2022/01/24 16:04:12.436 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000006 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 13!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 1024!!! +Adding G to buffer +Adding 1 to buffer G +Adding X to buffer G1 +Adding 2 to buffer G1X +Adding 0 to buffer G1X2 +Adding Y to buffer G1X20 +Adding 2 to buffer G1X20Y +Adding 0 to buffer G1X20Y2 +Adding F to buffer G1X20Y20 +Adding 1 to buffer G1X20Y20F +Adding 8 to buffer G1X20Y20F1 +Adding 0 to buffer G1X20Y20F18 +Adding + to buffer G1X20Y20F180 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 5!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 1011!!! +Adding G to buffer G1X20Y20F180 + +Adding 4 to buffer G1X20Y20F180 +G +Adding P to buffer G1X20Y20F180 +G4 +Adding 1 to buffer G1X20Y20F180 +G4P +Adding + to buffer G1X20Y20F180 +G4P1 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 10!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 1006!!! +Adding G to buffer G1X20Y20F180 +G4P1 + +Adding 2 to buffer G1X20Y20F180 +G4P1 +G +Adding X to buffer G1X20Y20F180 +G4P1 +G2 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X +Adding Y to buffer G1X20Y20F180 +G4P1 +G2X0 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y +Adding R to buffer G1X20Y20F180 +G4P1 +G2X0Y0 +Adding 2 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R2 +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 9!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 996!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 + +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G +Adding X to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X1 +Adding Y to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y1 +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 5!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 987!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 + +Adding 4 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G +Adding P to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 12!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 982!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 + +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G +Adding X to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X1 +Adding Y to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y +Adding F to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0 +Adding 3 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F +Adding 6 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F3 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F36 +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 5!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 970!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 + +Adding 4 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G +Adding P to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 13!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 965!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 + +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G +Adding X to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1 +Adding 5 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X5 +Adding Y to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50 +Adding 5 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y5 +Adding F to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F +Adding 8 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F1 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F18 +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 5!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 952!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 + +Adding 4 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G +Adding P to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4 +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:238: Command in buffer!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Command length 11!!! +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:244: Available bytes 947!!! +Adding G to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 + +Adding 1 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G +Adding X to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X +Adding Y to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0Y +Adding F to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0Y0 +Adding 3 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0Y0F +Adding 6 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0Y0F3 +Adding 0 to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X12022/01/24 16:04:12.636 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65532 fPos=0.116 fActPosition=0.09 time=0.000015 +0Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0Y0F36 +Adding + to buffer G1X20Y20F180 +G4P1 +G2X0Y0R20 +G0X10Y10 +G4P1 +G1X10Y0F360 +G4P1 +G1X50Y50F180 +G4P1 +G1X0Y0F360 +../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:250: Writing!! +../grbl/grbl_gcode.c:gc_execute_line:71:G1X20Y20F180 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_line:33 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G4P1 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_dwell:200 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_stepper.c:st_wake_up:230 +2022/01/24 16:04:12.636 [motorRecord.cc:1522 IOC_TEST:Axis1] msta.Bits.EA_POSITION power on=1 +2022/01/24 16:04:12.636 [motorRecord.cc:1627 IOC_TEST:Axis1] mipSetBit EXTERNAL(Ex) old='' new=EXTERNAL(Ex) +2022/01/24 16:04:12.636 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3168 fPos=0.12 fActPosition=0.09 time=0.000148 +2022/01/24 16:04:12.637 [motorRecord.cc:1522 IOC_TEST:Axis2] msta.Bits.EA_POSITION power on=1 +2022/01/24 16:04:12.637 [motorRecord.cc:1627 IOC_TEST:Axis2] mipSetBit EXTERNAL(Ex) old='' new=EXTERNAL(Ex) +2022/01/24 16:04:12.837 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65518 fPos=0.504 fActPosition=0.51 time=0.000013 +2022/01/24 16:04:12.837 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3182 fPos=0.504 fActPosition=0.51 time=0.000010 +2022/01/24 16:04:13.037 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65504 fPos=0.908 fActPosition=0.93 time=0.000071 +2022/01/24 16:04:13.038 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3196 fPos=0.908 fActPosition=0.93 time=0.000009 +2022/01/24 16:04:13.238 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65491 fPos=1.308 fActPosition=1.32 time=0.000009 +2022/01/24 16:04:13.238 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3209 fPos=1.308 fActPosition=1.32 time=0.000007 +2022/01/24 16:04:13.438 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65478 fPos=1.708 fActPosition=1.71 time=0.000010 +2022/01/24 16:04:13.438 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3222 fPos=1.708 fActPosition=1.71 time=0.000131 +2022/01/24 16:04:13.639 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65464 fPos=2.108 fActPosition=2.13 time=0.000010 +2022/01/24 16:04:13.639 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3236 fPos=2.108 fActPosition=2.13 time=0.000008 +2022/01/24 16:04:13.839 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65451 fPos=2.508 fActPosition=2.52 time=0.000009 +2022/01/24 16:04:13.839 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3248 fPos=2.508 fActPosition=2.49 time=0.000007 +2022/01/24 16:04:14.039 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65438 fPos=2.912 fActPosition=2.91 time=0.000070 +2022/01/24 16:04:14.040 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3262 fPos=2.912 fActPosition=2.91 time=0.000008 +2022/01/24 16:04:14.240 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65424 fPos=3.312 fActPosition=3.33 time=0.000010 +2022/01/24 16:04:14.240 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3276 fPos=3.312 fActPosition=3.33 time=0.000008 +2022/01/24 16:04:14.440 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65411 fPos=3.712 fActPosition=3.72 time=0.000010 +2022/01/24 16:04:14.440 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3289 fPos=3.712 fActPosition=3.72 time=0.000007 +2022/01/24 16:04:14.641 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65398 fPos=4.112 fActPosition=4.11 time=0.000009 +2022/01/24 16:04:14.641 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3302 fPos=4.112 fActPosition=4.11 time=0.000007 +2022/01/24 16:04:14.841 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65384 fPos=4.512 fActPosition=4.53 time=0.000009 +2022/01/24 16:04:14.841 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3316 fPos=4.512 fActPosition=4.53 time=0.000006 +2022/01/24 16:04:15.041 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65371 fPos=4.912 fActPosition=4.92 time=0.000013 +2022/01/24 16:04:15.041 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3329 fPos=4.916 fActPosition=4.92 time=0.000011 +2022/01/24 16:04:15.242 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65358 fPos=5.316 fActPosition=5.31 time=0.000011 +2022/01/24 16:04:15.242 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3342 fPos=5.316 fActPosition=5.31 time=0.000007 +2022/01/24 16:04:15.442 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65344 fPos=5.716 fActPosition=5.73 time=0.000012 +2022/01/24 16:04:15.442 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3356 fPos=5.716 fActPosition=5.73 time=0.000007 +2022/01/24 16:04:15.643 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65331 fPos=6.116 fActPosition=6.12 time=0.000014 +2022/01/24 16:04:15.643 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3369 fPos=6.116 fActPosition=6.12 time=0.000011 +2022/01/24 16:04:15.843 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65318 fPos=6.516 fActPosition=6.51 time=0.000011 +2022/01/24 16:04:15.843 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3382 fPos=6.516 fActPosition=6.51 time=0.000007 +2022/01/24 16:04:16.044 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65304 fPos=6.92 fActPosition=6.93 time=0.000088 +2022/01/24 16:04:16.044 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3396 fPos=6.92 fActPosition=6.93 time=0.000010 +2022/01/24 16:04:16.244 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65291 fPos=7.32 fActPosition=7.32 time=0.000012 +2022/01/24 16:04:16.244 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3409 fPos=7.32 fActPosition=7.32 time=0.000007 +2022/01/24 16:04:16.444 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65278 fPos=7.72 fActPosition=7.71 time=0.000010 +2022/01/24 16:04:16.444 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3422 fPos=7.72 fActPosition=7.71 time=0.000008 +2022/01/24 16:04:16.645 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65264 fPos=8.12 fActPosition=8.13 time=0.000012 +2022/01/24 16:04:16.645 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3436 fPos=8.12 fActPosition=8.13 time=0.000007 +2022/01/24 16:04:16.845 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65251 fPos=8.52 fActPosition=8.52 time=0.000011 +2022/01/24 16:04:16.845 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3449 fPos=8.52 fActPosition=8.52 time=0.000007 +2022/01/24 16:04:17.045 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65238 fPos=8.92 fActPosition=8.91 time=0.000011 +2022/01/24 16:04:17.045 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3462 fPos=8.924 fActPosition=8.91 time=0.000007 +2022/01/24 16:04:17.246 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65224 fPos=9.324 fActPosition=9.33 time=0.000011 +2022/01/24 16:04:17.246 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3476 fPos=9.324 fActPosition=9.33 time=0.000006 +2022/01/24 16:04:17.446 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65211 fPos=9.724 fActPosition=9.72 time=0.000010 +2022/01/24 16:04:17.446 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3489 fPos=9.724 fActPosition=9.72 time=0.000008 +2022/01/24 16:04:17.646 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65198 fPos=10.124 fActPosition=10.11 time=0.000010 +2022/01/24 16:04:17.646 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3502 fPos=10.124 fActPosition=10.11 time=0.000008 +2022/01/24 16:04:17.847 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65184 fPos=10.524 fActPosition=10.53 time=0.000012 +2022/01/24 16:04:17.847 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3516 fPos=10.524 fActPosition=10.53 time=0.000008 +2022/01/24 16:04:18.047 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65171 fPos=10.924 fActPosition=10.92 time=0.000010 +2022/01/24 16:04:18.047 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3529 fPos=10.924 fActPosition=10.92 time=0.000007 +2022/01/24 16:04:18.247 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65158 fPos=11.328 fActPosition=11.31 time=0.000069 +2022/01/24 16:04:18.248 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3542 fPos=11.328 fActPosition=11.31 time=0.000009 +2022/01/24 16:04:18.448 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65144 fPos=11.728 fActPosition=11.73 time=0.000010 +2022/01/24 16:04:18.448 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3556 fPos=11.728 fActPosition=11.73 time=0.000007 +2022/01/24 16:04:18.648 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65131 fPos=12.128 fActPosition=12.12 time=0.000010 +2022/01/24 16:04:18.648 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3569 fPos=12.128 fActPosition=12.12 time=0.000031 +2022/01/24 16:04:18.849 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65117 fPos=12.528 fActPosition=12.54 time=0.000010 +2022/01/24 16:04:18.849 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3583 fPos=12.528 fActPosition=12.54 time=0.000006 +2022/01/24 16:04:19.049 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65104 fPos=12.928 fActPosition=12.93 time=0.000010 +2022/01/24 16:04:19.049 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3596 fPos=12.928 fActPosition=12.93 time=0.000007 +2022/01/24 16:04:19.249 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65091 fPos=13.328 fActPosition=13.32 time=0.000010 +2022/01/24 16:04:19.249 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3609 fPos=13.332 fActPosition=13.32 time=0.000008 +2022/01/24 16:04:19.450 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65077 fPos=13.732 fActPosition=13.74 time=0.000010 +2022/01/24 16:04:19.450 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3623 fPos=13.732 fActPosition=13.74 time=0.000008 +2022/01/24 16:04:19.650 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65064 fPos=14.132 fActPosition=14.13 time=0.000010 +2022/01/24 16:04:19.650 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3636 fPos=14.132 fActPosition=14.13 time=0.000008 +2022/01/24 16:04:19.850 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65051 fPos=14.532 fActPosition=14.52 time=0.000011 +2022/01/24 16:04:19.851 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3649 fPos=14.532 fActPosition=14.52 time=0.000007 +2022/01/24 16:04:20.051 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65037 fPos=14.932 fActPosition=14.94 time=0.000011 +2022/01/24 16:04:20.051 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3663 fPos=14.932 fActPosition=14.94 time=0.000008 +2022/01/24 16:04:20.251 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65024 fPos=15.332 fActPosition=15.33 time=0.000010 +2022/01/24 16:04:20.251 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3676 fPos=15.336 fActPosition=15.33 time=0.000008 +2022/01/24 16:04:20.452 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65011 fPos=15.736 fActPosition=15.72 time=0.000010 +2022/01/24 16:04:20.452 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3689 fPos=15.736 fActPosition=15.72 time=0.000008 +2022/01/24 16:04:20.652 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64997 fPos=16.136 fActPosition=16.14 time=0.000009 +2022/01/24 16:04:20.652 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3703 fPos=16.136 fActPosition=16.14 time=0.000007 +2022/01/24 16:04:20.852 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64983 fPos=16.536 fActPosition=16.56 time=0.000011 +2022/01/24 16:04:20.853 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3716 fPos=16.536 fActPosition=16.53 time=0.000008 +2022/01/24 16:04:21.053 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64970 fPos=16.936 fActPosition=16.95 time=0.000011 +2022/01/24 16:04:21.053 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3730 fPos=16.936 fActPosition=16.95 time=0.000007 +2022/01/24 16:04:21.253 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64957 fPos=17.336 fActPosition=17.34 time=0.000017 +2022/01/24 16:04:21.254 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3743 fPos=17.34 fActPosition=17.34 time=0.000149 +2022/01/24 16:04:21.454 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64943 fPos=17.74 fActPosition=17.76 time=0.000011 +2022/01/24 16:04:21.454 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3756 fPos=17.74 fActPosition=17.73 time=0.000008 +2022/01/24 16:04:21.654 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64930 fPos=18.14 fActPosition=18.15 time=0.000012 +2022/01/24 16:04:21.654 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3770 fPos=18.14 fActPosition=18.15 time=0.000131 +2022/01/24 16:04:21.855 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64917 fPos=18.54 fActPosition=18.54 time=0.000012 +2022/01/24 16:04:21.855 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3783 fPos=18.54 fActPosition=18.54 time=0.000007 +2022/01/24 16:04:22.055 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64903 fPos=18.94 fActPosition=18.96 time=0.000012 +2022/01/24 16:04:22.055 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3797 fPos=18.94 fActPosition=18.96 time=0.000008 +2022/01/24 16:04:22.255 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64890 fPos=19.344 fActPosition=19.35 time=0.000108 +2022/01/24 16:04:22.256 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3810 fPos=19.344 fActPosition=19.35 time=0.000007 +2022/01/24 16:04:22.456 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64877 fPos=19.744 fActPosition=19.74 time=0.000011 +2022/01/24 16:04:22.456 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3823 fPos=19.744 fActPosition=19.74 time=0.000008 +2022/01/24 16:04:22.656 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64868 fPos=19.996 fActPosition=20.01 time=0.000011 +2022/01/24 16:04:22.656 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3832 fPos=19.996 fActPosition=20.01 time=0.000007 +2022/01/24 16:04:22.856 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64869 fPos=20 fActPosition=19.98 time=0.000011 +../grbl/grbl_stepper.c:st_go_idle:261 +2022/01/24 16:04:22.857 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3832 fPos=20 fActPosition=20.01 time=0.000008 +2022/01/24 16:04:23.057 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000015 +2022/01/24 16:04:23.057 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3831 fPos=20 fActPosition=19.98 time=0.000009 +2022/01/24 16:04:23.257 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000010 +2022/01/24 16:04:23.257 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3831 fPos=20 fActPosition=19.98 time=0.000007 +2022/01/24 16:04:23.458 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000165 +2022/01/24 16:04:23.458 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3832 fPos=20 fActPosition=20.01 time=0.000012 +2022/01/24 16:04:23.658 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64869 fPos=20 fActPosition=19.98 time=0.000017 +2022/01/24 16:04:23.658 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3832 fPos=20 fActPosition=20.01 time=0.000011 +2022/01/24 16:04:23.858 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64869 fPos=20 fActPosition=19.98 time=0.000012 +2022/01/24 16:04:23.859 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3828 fPos=19.88 fActPosition=19.89 time=0.000008 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G2X0Y0R20 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_arc:91 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_update_plan_block_parameters:641 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_stepper.c:st_wake_up:230 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:24.059 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64869 fPos=19.992 fActPosition=19.98 time=0.000011 +2022/01/24 16:04:24.059 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3811 fPos=19.408 fActPosition=19.38 time=0.000007 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:24.259 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64869 fPos=19.968 fActPosition=19.98 time=0.000011 +2022/01/24 16:04:24.259 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3792 fPos=18.836 fActPosition=18.81 time=0.000007 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:24.459 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64871 fPos=19.924 fActPosition=19.92 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:24.460 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3774 fPos=18.264 fActPosition=18.27 time=0.000007 +2022/01/24 16:04:24.660 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64873 fPos=19.864 fActPosition=19.86 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:24.660 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3755 fPos=17.696 fActPosition=17.7 time=0.000007 +2022/01/24 16:04:24.860 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64875 fPos=19.792 fActPosition=19.8 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:24.860 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3735 fPos=17.124 fActPosition=17.1 time=0.000112 +2022/01/24 16:04:25.061 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64878 fPos=19.704 fActPosition=19.71 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:25.061 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3717 fPos=16.56 fActPosition=16.56 time=0.000007 +2022/01/24 16:04:25.261 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64882 fPos=19.592 fActPosition=19.59 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:25.261 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3698 fPos=15.996 fActPosition=15.99 time=0.000007 +2022/01/24 16:04:25.461 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64886 fPos=19.468 fActPosition=19.47 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:25.461 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3679 fPos=15.424 fActPosition=15.42 time=0.000008 +2022/01/24 16:04:25.662 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64891 fPos=19.328 fActPosition=19.32 time=0.000009 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:25.662 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3660 fPos=14.86 fActPosition=14.85 time=0.000007 +2022/01/24 16:04:25.862 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64896 fPos=19.168 fActPosition=19.17 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:25.862 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3642 fPos=14.296 fActPosition=14.31 time=0.000008 +2022/01/24 16:04:26.062 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64902 fPos=18.988 fActPosition=18.99 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:26.063 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3623 fPos=13.732 fActPosition=13.74 time=0.000007 +2022/01/24 16:04:26.263 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64909 fPos=18.796 fActPosition=18.78 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:26.263 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3604 fPos=13.172 fActPosition=13.17 time=0.000008 +2022/01/24 16:04:26.463 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64915 fPos=18.584 fActPosition=18.6 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:26.463 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3585 fPos=12.616 fActPosition=12.6 time=0.000008 +2022/01/24 16:04:26.663 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64923 fPos=18.356 fActPosition=18.36 time=0.000071 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:26.664 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3567 fPos=12.068 fActPosition=12.06 time=0.000008 +2022/01/24 16:04:26.864 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64931 fPos=18.128 fActPosition=18.12 time=0.000012 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:26.864 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3550 fPos=11.556 fActPosition=11.55 time=0.000006 +2022/01/24 16:04:27.064 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64939 fPos=17.88 fActPosition=17.88 time=0.000012 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:27.064 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3533 fPos=11.04 fActPosition=11.04 time=0.000105 +2022/01/24 16:04:27.265 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64948 fPos=17.608 fActPosition=17.61 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:27.265 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3516 fPos=10.524 fActPosition=10.53 time=0.000008 +2022/01/24 16:04:27.465 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64957 fPos=17.328 fActPosition=17.34 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:27.465 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3499 fPos=10.012 fActPosition=10.02 time=0.000007 +2022/01/24 16:04:27.665 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64968 fPos=17.032 fActPosition=17.01 time=0.000217 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:27.666 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3482 fPos=9.52 fActPosition=9.51 time=0.000009 +2022/01/24 16:04:27.866 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64978 fPos=16.724 fActPosition=16.71 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:27.866 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3466 fPos=9.036 fActPosition=9.03 time=0.000008 +2022/01/24 16:04:28.066 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64989 fPos=16.4 fActPosition=16.38 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:28.066 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3450 fPos=8.556 fActPosition=8.55 time=0.000007 +2022/01/24 16:04:28.267 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65000 fPos=16.056 fActPosition=16.05 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:28.267 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3434 fPos=8.08 fActPosition=8.07 time=0.000007 +2022/01/24 16:04:28.467 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65012 fPos=15.704 fActPosition=15.69 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:28.467 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3419 fPos=7.616 fActPosition=7.62 time=0.000007 +2022/01/24 16:04:28.667 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65023 fPos=15.348 fActPosition=15.36 time=0.000009 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:28.667 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3404 fPos=7.176 fActPosition=7.17 time=0.000007 +2022/01/24 16:04:28.868 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65036 fPos=14.968 fActPosition=14.97 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:28.868 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3389 fPos=6.736 fActPosition=6.72 time=0.000007 +2022/01/24 16:04:29.068 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65050 fPos=14.568 fActPosition=14.55 time=0.000009 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:29.068 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3375 fPos=6.296 fActPosition=6.3 time=0.000007 +2022/01/24 16:04:29.268 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65063 fPos=14.16 fActPosition=14.16 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_motion_control.c:mc_line:33 +2022/01/24 16:04:29.268 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3361 fPos=5.872 fActPosition=5.88 time=0.000008 +2022/01/24 16:04:29.469 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65077 fPos=13.74 fActPosition=13.74 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_motion_control.c:mc_line:33 +2022/01/24 16:04:29.469 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3347 fPos=5.468 fActPosition=5.46 time=0.000008 +2022/01/24 16:04:29.669 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65092 fPos=13.3 fActPosition=13.29 time=0.000009 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:29.669 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3334 fPos=5.064 fActPosition=5.07 time=0.000007 +2022/01/24 16:04:29.869 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65107 fPos=12.86 fActPosition=12.84 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:29.869 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3321 fPos=4.684 fActPosition=4.68 time=0.000007 +2022/01/24 16:04:30.070 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65121 fPos=12.42 fActPosition=12.42 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:30.070 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3309 fPos=4.324 fActPosition=4.32 time=0.000007 +2022/01/24 16:04:30.270 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65136 fPos=11.964 fActPosition=11.97 time=0.000010 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:30.270 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3297 fPos=3.972 fActPosition=3.96 time=0.000007 +2022/01/24 16:04:30.470 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65152 fPos=11.484 fActPosition=11.49 time=0.000009 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:30.470 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3286 fPos=3.628 fActPosition=3.63 time=0.000007 +2022/01/24 16:04:30.671 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65169 fPos=11.004 fActPosition=10.98 time=0.000009 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:30.671 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3275 fPos=3.304 fActPosition=3.3 time=0.000007 +2022/01/24 16:04:30.871 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65184 fPos=10.52 fActPosition=10.53 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:30.871 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3265 fPos=2.992 fActPosition=3 time=0.000007 +2022/01/24 16:04:31.071 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65201 fPos=10.028 fActPosition=10.02 time=0.000011 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:31.071 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3255 fPos=2.696 fActPosition=2.7 time=0.000008 +2022/01/24 16:04:31.272 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65218 fPos=9.52 fActPosition=9.51 time=0.000015 +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:31.272 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3245 fPos=2.412 fActPosition=2.4 time=0.000007 +2022/01/24 16:04:31.472 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65235 fPos=9.004 fActPosition=9 time=0.000010 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G0X10Y10 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_line:33 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:31.472 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3236 fPos=2.144 fActPosition=2.13 time=0.000009 +2022/01/24 16:04:31.672 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65252 fPos=8.488 fActPosition=8.49 time=0.000011 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G4P1 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_dwell:200 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:31.673 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3228 fPos=1.892 fActPosition=1.89 time=0.000008 +2022/01/24 16:04:31.873 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65270 fPos=7.976 fActPosition=7.95 time=0.000010 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:31.873 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3220 fPos=1.66 fActPosition=1.65 time=0.000008 +2022/01/24 16:04:32.073 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65287 fPos=7.436 fActPosition=7.44 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:32.074 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3213 fPos=1.436 fActPosition=1.44 time=0.000154 +2022/01/24 16:04:32.274 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65306 fPos=6.872 fActPosition=6.87 time=0.000013 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:32.274 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3206 fPos=1.22 fActPosition=1.23 time=0.000007 +2022/01/24 16:04:32.474 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65325 fPos=6.316 fActPosition=6.3 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:32.474 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3199 fPos=1.024 fActPosition=1.02 time=0.000125 +2022/01/24 16:04:32.675 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65343 fPos=5.752 fActPosition=5.76 time=0.000012 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:32.675 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3193 fPos=0.848 fActPosition=0.84 time=0.000008 +2022/01/24 16:04:32.875 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65362 fPos=5.188 fActPosition=5.19 time=0.000012 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:32.875 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3188 fPos=0.684 fActPosition=0.69 time=0.000015 +2022/01/24 16:04:33.075 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65381 fPos=4.62 fActPosition=4.62 time=0.000115 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:33.076 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3183 fPos=0.544 fActPosition=0.54 time=0.000008 +2022/01/24 16:04:33.276 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65400 fPos=4.056 fActPosition=4.05 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:33.276 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3179 fPos=0.416 fActPosition=0.42 time=0.000007 +2022/01/24 16:04:33.476 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65419 fPos=3.488 fActPosition=3.48 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:33.476 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3175 fPos=0.304 fActPosition=0.3 time=0.000084 +2022/01/24 16:04:33.677 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65438 fPos=2.916 fActPosition=2.91 time=0.000010 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:33.677 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3172 fPos=0.216 fActPosition=0.21 time=0.000007 +2022/01/24 16:04:33.877 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65457 fPos=2.348 fActPosition=2.34 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:33.877 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3170 fPos=0.14 fActPosition=0.15 time=0.000007 +2022/01/24 16:04:34.077 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65476 fPos=1.78 fActPosition=1.77 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:34.077 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3168 fPos=0.08 fActPosition=0.09 time=0.000008 +2022/01/24 16:04:34.278 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65495 fPos=1.208 fActPosition=1.2 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:34.278 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3166 fPos=0.036 fActPosition=0.03 time=0.000008 +2022/01/24 16:04:34.478 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65514 fPos=0.64 fActPosition=0.63 time=0.000010 +2022/01/24 16:04:34.478 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3165 fPos=0.012 fActPosition=0 time=0.000007 +2022/01/24 16:04:34.678 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65531 fPos=0.144 fActPosition=0.12 time=0.000011 +../grbl/grbl_stepper.c:st_next_block_index:654 +2022/01/24 16:04:34.678 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3166 fPos=0 fActPosition=0.03 time=0.000007 +2022/01/24 16:04:34.879 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65535 fPos=0.028 fActPosition=0 time=0.000010 +2022/01/24 16:04:34.879 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3166 fPos=0.028 fActPosition=0.03 time=0.000007 +2022/01/24 16:04:35.079 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65522 fPos=0.376 fActPosition=0.39 time=0.000010 +2022/01/24 16:04:35.079 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3178 fPos=0.376 fActPosition=0.39 time=0.000007 +2022/01/24 16:04:35.279 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65499 fPos=1.092 fActPosition=1.08 time=0.000011 +2022/01/24 16:04:35.279 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3202 fPos=1.092 fActPosition=1.11 time=0.000007 +2022/01/24 16:04:35.480 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65462 fPos=2.172 fActPosition=2.19 time=0.000011 +2022/01/24 16:04:35.480 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3238 fPos=2.172 fActPosition=2.19 time=0.000007 +2022/01/24 16:04:35.680 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65414 fPos=3.624 fActPosition=3.63 time=0.000010 +2022/01/24 16:04:35.680 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3286 fPos=3.624 fActPosition=3.63 time=0.000007 +2022/01/24 16:04:35.880 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65358 fPos=5.292 fActPosition=5.31 time=0.000011 +2022/01/24 16:04:35.880 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3342 fPos=5.3 fActPosition=5.31 time=0.000007 +2022/01/24 16:04:36.081 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65303 fPos=6.944 fActPosition=6.96 time=0.000012 +2022/01/24 16:04:36.081 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3397 fPos=6.944 fActPosition=6.96 time=0.000008 +2022/01/24 16:04:36.281 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65259 fPos=8.264 fActPosition=8.28 time=0.000011 +2022/01/24 16:04:36.281 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3441 fPos=8.264 fActPosition=8.28 time=0.000007 +2022/01/24 16:04:36.481 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65228 fPos=9.212 fActPosition=9.21 time=0.000011 +2022/01/24 16:04:36.481 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3472 fPos=9.216 fActPosition=9.21 time=0.000008 +2022/01/24 16:04:36.682 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65208 fPos=9.796 fActPosition=9.81 time=0.000011 +2022/01/24 16:04:36.682 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3492 fPos=9.796 fActPosition=9.81 time=0.000007 +2022/01/24 16:04:36.904 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.022428 +../grbl/grbl_stepper.c:st_go_idle:261 +2022/01/24 16:04:36.905 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3499 fPos=10 fActPosition=10.02 time=0.000073 +2022/01/24 16:04:37.105 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65202 fPos=10 fActPosition=9.99 time=0.000010 +2022/01/24 16:04:37.105 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3498 fPos=10 fActPosition=9.99 time=0.000007 +2022/01/24 16:04:37.305 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000012 +2022/01/24 16:04:37.305 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3498 fPos=10 fActPosition=9.99 time=0.000009 +2022/01/24 16:04:37.506 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000009 +2022/01/24 16:04:37.506 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3498 fPos=10 fActPosition=9.99 time=0.000006 +2022/01/24 16:04:37.706 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65202 fPos=10 fActPosition=9.99 time=0.000009 +2022/01/24 16:04:37.706 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3498 fPos=10 fActPosition=9.99 time=0.000006 +2022/01/24 16:04:37.906 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65202 fPos=10 fActPosition=9.99 time=0.000018 +2022/01/24 16:04:37.906 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3498 fPos=10 fActPosition=9.99 time=0.000010 +2022/01/24 16:04:38.106 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65202 fPos=10 fActPosition=9.99 time=0.000010 +2022/01/24 16:04:38.106 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3492 fPos=9.796 fActPosition=9.81 time=0.000007 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G1X10Y0F360 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_line:33 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G4P1 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_dwell:200 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_stepper.c:st_wake_up:230 +2022/01/24 16:04:38.307 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000011 +2022/01/24 16:04:38.307 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3472 fPos=9.232 fActPosition=9.21 time=0.000006 +2022/01/24 16:04:38.507 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000010 +2022/01/24 16:04:38.507 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3441 fPos=8.292 fActPosition=8.28 time=0.000007 +2022/01/24 16:04:38.707 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000075 +2022/01/24 16:04:38.707 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3401 fPos=7.088 fActPosition=7.08 time=0.000007 +2022/01/24 16:04:38.908 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000010 +2022/01/24 16:04:38.908 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3361 fPos=5.892 fActPosition=5.88 time=0.000007 +2022/01/24 16:04:39.108 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000010 +2022/01/24 16:04:39.108 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3321 fPos=4.692 fActPosition=4.68 time=0.000006 +2022/01/24 16:04:39.308 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000010 +2022/01/24 16:04:39.308 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3281 fPos=3.492 fActPosition=3.48 time=0.000006 +2022/01/24 16:04:39.508 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000015 +2022/01/24 16:04:39.509 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3241 fPos=2.288 fActPosition=2.28 time=0.000006 +2022/01/24 16:04:39.709 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000010 +2022/01/24 16:04:39.709 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3204 fPos=1.184 fActPosition=1.17 time=0.000007 +2022/01/24 16:04:39.909 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000015 +2022/01/24 16:04:39.909 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3179 fPos=0.436 fActPosition=0.42 time=0.000007 +2022/01/24 16:04:40.109 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000011 +2022/01/24 16:04:40.109 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3166 fPos=0.052 fActPosition=0.03 time=0.000007 +2022/01/24 16:04:40.310 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65202 fPos=10 fActPosition=9.99 time=0.000012 +../grbl/grbl_stepper.c:st_go_idle:261 +2022/01/24 16:04:40.310 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000008 +2022/01/24 16:04:40.510 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000011 +2022/01/24 16:04:40.510 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000007 +2022/01/24 16:04:40.710 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000009 +2022/01/24 16:04:40.710 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000053 +2022/01/24 16:04:40.910 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000017 +2022/01/24 16:04:40.911 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000011 +2022/01/24 16:04:41.111 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10 fActPosition=10.02 time=0.000016 +2022/01/24 16:04:41.111 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=3165 fPos=0 fActPosition=0 time=0.000012 +2022/01/24 16:04:41.311 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65201 fPos=10.024 fActPosition=10.02 time=0.000014 +2022/01/24 16:04:41.311 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3166 fPos=0.032 fActPosition=0.03 time=0.000008 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G1X50Y50F180 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_line:33 +ok +../grbl/grbl_gcode.c:gc_execute_line:71:G4P1 +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_gcode.c:gc_execute_line:348: +../grbl/grbl_motion_control.c:mc_dwell:200 +../grbl/grbl_stepper.c:st_next_block_index:654 +../grbl/grbl_stepper.c:st_wake_up:230 +2022/01/24 16:04:41.511 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65192 fPos=10.296 fActPosition=10.29 time=0.000010 +2022/01/24 16:04:41.512 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3178 fPos=0.372 fActPosition=0.39 time=0.000007 +2022/01/24 16:04:41.712 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65180 fPos=10.644 fActPosition=10.65 time=0.000011 +2022/01/24 16:04:41.712 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3192 fPos=0.808 fActPosition=0.81 time=0.000007 +2022/01/24 16:04:41.912 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65168 fPos=10.996 fActPosition=11.01 time=0.000010 +2022/01/24 16:04:41.912 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3207 fPos=1.248 fActPosition=1.26 time=0.000089 +2022/01/24 16:04:42.113 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65157 fPos=11.348 fActPosition=11.34 time=0.000010 +2022/01/24 16:04:42.113 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3221 fPos=1.684 fActPosition=1.68 time=0.000008 +2022/01/24 16:04:42.313 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65145 fPos=11.696 fActPosition=11.7 time=0.000010 +2022/01/24 16:04:42.313 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3236 fPos=2.12 fActPosition=2.13 time=0.000007 +2022/01/24 16:04:42.513 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65134 fPos=12.048 fActPosition=12.03 time=0.000010 +2022/01/24 16:04:42.513 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3250 fPos=2.56 fActPosition=2.55 time=0.000008 +2022/01/24 16:04:42.714 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65121 fPos=12.4 fActPosition=12.42 time=0.000011 +2022/01/24 16:04:42.714 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3265 fPos=3 fActPosition=3 time=0.000007 +2022/01/24 16:04:42.914 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65110 fPos=12.748 fActPosition=12.75 time=0.000012 +2022/01/24 16:04:42.914 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3280 fPos=3.436 fActPosition=3.45 time=0.000007 +2022/01/24 16:04:43.114 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65098 fPos=13.1 fActPosition=13.11 time=0.000065 +2022/01/24 16:04:43.115 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3294 fPos=3.876 fActPosition=3.87 time=0.000007 +2022/01/24 16:04:43.315 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65086 fPos=13.452 fActPosition=13.47 time=0.000011 +2022/01/24 16:04:43.315 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3309 fPos=4.312 fActPosition=4.32 time=0.000007 +2022/01/24 16:04:43.515 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65075 fPos=13.8 fActPosition=13.8 time=0.000011 +2022/01/24 16:04:43.515 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3323 fPos=4.752 fActPosition=4.74 time=0.000007 +2022/01/24 16:04:43.715 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65063 fPos=14.152 fActPosition=14.16 time=0.000122 +2022/01/24 16:04:43.716 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3338 fPos=5.188 fActPosition=5.19 time=0.000008 +2022/01/24 16:04:43.916 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65052 fPos=14.5 fActPosition=14.49 time=0.000017 +2022/01/24 16:04:43.916 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3353 fPos=5.628 fActPosition=5.64 time=0.000007 +2022/01/24 16:04:44.116 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65040 fPos=14.852 fActPosition=14.85 time=0.000010 +2022/01/24 16:04:44.116 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3367 fPos=6.068 fActPosition=6.06 time=0.000008 +2022/01/24 16:04:44.317 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65028 fPos=15.204 fActPosition=15.21 time=0.000011 +2022/01/24 16:04:44.317 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3382 fPos=6.504 fActPosition=6.51 time=0.000007 +2022/01/24 16:04:44.517 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65017 fPos=15.552 fActPosition=15.54 time=0.000011 +2022/01/24 16:04:44.517 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3397 fPos=6.94 fActPosition=6.96 time=0.000007 +2022/01/24 16:04:44.717 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65005 fPos=15.904 fActPosition=15.9 time=0.000010 +2022/01/24 16:04:44.717 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3411 fPos=7.38 fActPosition=7.38 time=0.000008 +2022/01/24 16:04:44.918 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64993 fPos=16.256 fActPosition=16.26 time=0.000009 +2022/01/24 16:04:44.918 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3425 fPos=7.82 fActPosition=7.8 time=0.000007 +2022/01/24 16:04:45.118 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64981 fPos=16.604 fActPosition=16.62 time=0.000010 +2022/01/24 16:04:45.118 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3440 fPos=8.256 fActPosition=8.25 time=0.000008 +2022/01/24 16:04:45.318 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64970 fPos=16.956 fActPosition=16.95 time=0.000011 +2022/01/24 16:04:45.318 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=3455 fPos=8.696 fActPosition=8.7 time=0.000007 diff --git a/iocsh/test.script b/iocsh/test.script index f3ad6e2..dbdb7a4 100644 --- a/iocsh/test.script +++ b/iocsh/test.script @@ -1,6 +1,7 @@ ############################################################################## -## Example: Demo of ecmc SocketCAN plugin -## https://github.com/anderssandstrom/e3-ecmc_plugin_socketcan +## Example: Demo of ecmc grbl g-code plugin +## https://github.com/anderssandstrom/ecmc_plugin_grbl +## https://github.com/anderssandstrom/e3-ecmc_plugin_grbl ## ## The plugin exposes: ##