From 15fc72e3264ad04d4ed55f57a00ca6658cd7890a Mon Sep 17 00:00:00 2001 From: Anders Sandstrom Date: Fri, 21 Jan 2022 09:41:07 +0100 Subject: [PATCH] WIP --- ecmc_plugin_grbl/ecmcGrbl.cpp | 38 +- iocsh/ecmc_grbl_eeprom.txt | Bin 1024 -> 0 bytes iocsh/log.log | 873 ---------------------------------- iocsh/test.script | 40 +- 4 files changed, 60 insertions(+), 891 deletions(-) delete mode 100644 iocsh/ecmc_grbl_eeprom.txt delete mode 100644 iocsh/log.log diff --git a/ecmc_plugin_grbl/ecmcGrbl.cpp b/ecmc_plugin_grbl/ecmcGrbl.cpp index 5821c83..c64db58 100644 --- a/ecmc_plugin_grbl/ecmcGrbl.cpp +++ b/ecmc_plugin_grbl/ecmcGrbl.cpp @@ -20,6 +20,8 @@ #include "ecmcAsynPortDriver.h" #include "ecmcAsynPortDriverUtils.h" #include "epicsThread.h" +#include + extern "C" { #include "grbl.h" @@ -316,6 +318,26 @@ void ecmcGrbl::doMainWorker() { } } } +// buf needs to store 30 characters +int timespec2str(char *buf, uint len, struct timespec *ts) { + int ret; + struct tm t; + + tzset(); + if (localtime_r(&(ts->tv_sec), &t) == NULL) + return 1; + + ret = strftime(buf, len, "%F %T", &t); + if (ret == 0) + return 2; + len -= ret - 1; + + ret = snprintf(&buf[strlen(buf)], len, ".%09ld", ts->tv_nsec); + if (ret >= len) + return 3; + + return 0; +} // grb realtime thread!!! void ecmcGrbl::grblRTexecute() { @@ -326,8 +348,22 @@ void ecmcGrbl::grblRTexecute() { 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] ); + struct timespec timeAbs_; + clock_gettime(CLOCK_REALTIME, &timeAbs_); + const uint TIME_FMT = strlen("2012-12-31 12:59:59.123456789") + 1; + char timestr[TIME_FMT]; +// struct timespec ts, res; +// clock_getres(clk_id, &res); +// clock_gettime(clk_id, &ts); + + timespec2str(timestr, sizeof(timestr), &timeAbs_); + + //IOC_TEST:ec0-s4-EL7211-Enc-PosAct 2020-12-14 13:29:18.273839 -2.587392807 + //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] ); + printf("IOC_TEST:Axis-X-PosAct %s %d\n",timestr,sys_position[X_AXIS]); + printf("IOC_TEST:Axis-Y-PosAct %s %d\n",timestr,sys_position[Y_AXIS]); + printf("IOC_TEST:Axis-Z-PosAct %s %d\n",timestr,sys_position[Z_AXIS]); } // Avoid issues with std:to_string() diff --git a/iocsh/ecmc_grbl_eeprom.txt b/iocsh/ecmc_grbl_eeprom.txt deleted file mode 100644 index 2a0b79cb9291cfe234e6a6b4c697b8cbae6298a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmd;LV5o9N;9o#C6ffX$XMkY_kHZX5%*DVU$;iOKz;#{OCSQoz8mQL=$c2Ivjv)QN Vz`O=~2bl0EJsJX|Aut$20001q6B7Uc diff --git a/iocsh/log.log b/iocsh/log.log deleted file mode 100644 index 93f2d20..0000000 --- a/iocsh/log.log +++ /dev/null @@ -1,873 +0,0 @@ -registerChannelProviderLocal firstTime true -# -# Start at "2022-W03-Jan20-1717-24-CET" -# -# Version information: -# European Spallation Source ERIC : iocsh.bash (3.4.0-PID-12063) -# -# --->--> 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-12063" -# -# Enable an exit subroutine for sotfioc -dbLoadRecords "/home/pi/epics/base-7.0.5/db/softIocExit.db" "IOC=REQMOD:raspberrypi-12063" -# -# 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 SocketCAN plugin -## https://github.com/anderssandstrom/e3-ecmc_plugin_socketcan -## -## 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 7.0.1 -Module ecmccfg version 7.0.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/ -Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/lib/linux-arm/libecmccfg.so -Loaded ecmccfg version 7.0.1 -Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/dbd/ecmccfg.dbd -Calling function ecmccfg_registerRecordDeviceDriver -Loading module info records for ecmccfg -# 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/7.0.1/startup.cmd, "IOC=IOC_TEST,ECMC_VER=7.0.1,MASTER_ID=-1" -#============================================================================== -# startup.cmd -on error halt -require ecmc "7.0.1" -Module ecmc version 7.0.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/7.0.1/ -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 7.0.6 -Module motor version 7.0.6 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/7.0.6/ -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/7.0.6/lib/linux-arm/libmotor.so -Loaded motor version 7.0.6 -Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/7.0.6/dbd/motor.dbd -Calling function motor_registerRecordDeviceDriver -Loading module info records for motor -Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/7.0.1/lib/linux-arm/libecmc.so -Loaded ecmc version 7.0.1 -Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/7.0.1/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/7.0.1/") -epicsEnvSet("ECMC_CONFIG_DB", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/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'=='FULL'","","# MODE == DAQ, DISABLING MOTION.") -epicsEnvShow(ECMC_SUPPORT_MOTION) -ECMC_SUPPORT_MOTION= -ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAll.cmd",1) -iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAll.cmd" -#============================================================================== -# initAll.cmd -ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/init.cmd",1) -iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/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/7.0.1/initAxis.cmd",1) -iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAxis.cmd" -#============================================================================== -# initAxis.cmd -epicsEnvSet("ECMC_MOTOR_NAME", "NOT SET") -epicsEnvSet("ECMC_R", "NOT SET") -epicsEnvSet("ECMC_AXIS_NO", "NOT SET") -epicsEnvSet("ECMC_DESC", "NOT SET") -epicsEnvSet("ECMC_EGU", "NOT SET") # Motor Record Unit -epicsEnvSet("ECMC_PREC", "NOT SET") # Motor Record Precision -epicsEnvSet("ECMC_AXISCONFIG", "NOT SET") # Extra parameters to driver -epicsEnvSet("ECMC_EC_AXIS_HEALTH", "NOT SET") # Entry for axis health output (example: ec0.s1.BO_1.0) -epicsEnvSet("ECMC_ENC_SCALE_NUM", "NOT SET") -epicsEnvSet("ECMC_ENC_SCALE_DENOM", "NOT SET") -epicsEnvSet("ECMC_ENC_BITS", "NOT SET") -epicsEnvSet("ECMC_ENC_TYPE", "NOT SET") # Type: 0=Incremental, 1=Absolute -epicsEnvSet("ECMC_EC_ENC_ACTPOS", "NOT SET") # Ethercat entry for actual position input (encoder) -epicsEnvSet("ECMC_ENC_ABS_BITS", "NOT SET") # Absolute bit count (for absolute encoders) always least significant part -epicsEnvSet("ECMC_ENC_ABS_OFFSET", "NOT SET") # Encoder offset in eng units (for absolute encoders) -epicsEnvSet("ECMC_EC_ENC_LATCHPOS", "") # Ethercat entry for latch position (only valid for home seq 11,12) -epicsEnvSet("ECMC_EC_ENC_LATCH_CONTROL", "") # Ethercat entry for latch control (only valid for home seq 11,12) -epicsEnvSet("ECMC_EC_ENC_LATCH_STATUS", "") # Ethercat entry for latch status (only valid for home seq 11,12) -epicsEnvSet("ECMC_DRV_SCALE_NUM", "NOT SET") -epicsEnvSet("ECMC_DRV_SCALE_DENOM", "NOT SET") -epicsEnvSet("ECMC_EC_DRV_CONTROL", "NOT SET") # Ethercat entry for control word or bit output -epicsEnvSet("ECMC_EC_DRV_STATUS", "NOT SET") # Ethercat entry for status word or bit input -epicsEnvSet("ECMC_EC_DRV_VELOCITY", "NOT SET") # Ethercat entry for velocity setpoint output -epicsEnvSet("ECMC_EC_DRV_BRAKE", "NOT SET") # Ethercat entry for brake output -epicsEnvSet("ECMC_EC_DRV_REDUCE_TORQUE", "NOT SET") # Ethercat entry for reduce torque output -epicsEnvSet("ECMC_DRV_BRAKE_OPEN_DLY_TIME", "NOT SET") # Brake timing parameter in cycles (default 1kHz) -epicsEnvSet("ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME", "NOT SET") # Brake timing parameter in cycles (default 1kHz) -epicsEnvSet("ECMC_VELO", "NOT SET") -epicsEnvSet("ECMC_JOG_VEL", "NOT SET") -epicsEnvSet("ECMC_JAR", "NOT SET") # JAR defaults to VELO/ACCL -epicsEnvSet("ECMC_ACCL", "NOT SET") -epicsEnvSet("ECMC_EMERG_DECEL", "NOT SET") # Emergency deceleration -epicsEnvSet("ECMC_HOME_PROC", "NOT SET") -epicsEnvSet("ECMC_HOME_POS", "NOT SET") -epicsEnvSet("ECMC_HOME_VEL_TO", "NOT SET") -epicsEnvSet("ECMC_HOME_VEL_FRM", "NOT SET") -epicsEnvSet("ECMC_HOME_ACC", "NOT SET") -epicsEnvSet("ECMC_HOME_DEC", "NOT SET") -epicsEnvSet("ECMC_HOME_LATCH_COUNT_OFFSET","0") -epicsEnvSet("ECMC_CNTRL_KP", "NOT SET") -epicsEnvSet("ECMC_CNTRL_KI", "NOT SET") -epicsEnvSet("ECMC_CNTRL_KD", "NOT SET") -epicsEnvSet("ECMC_CNTRL_KFF", "NOT SET") -epicsEnvSet("ECMC_EC_MON_LOWLIM", "NOT SET") # Ethercat entry for low limit switch input -epicsEnvSet("ECMC_EC_MON_HIGHLIM", "NOT SET") # Ethercat entry for high limit switch inpuit -epicsEnvSet("ECMC_EC_MON_HOME_SWITCH", "NOT SET") # Ethercat entry for home switch input -epicsEnvSet("ECMC_EC_MON_EXT_INTERLOCK", "NOT SET") # Ethercat entry for external interlock input -epicsEnvSet("ECMC_SOFT_LOW_LIM", "NOT SET") -epicsEnvSet("ECMC_SOFT_HIGH_LIM", "NOT SET") -epicsEnvSet("ECMC_DXLM_ENABLE", "NOT SET") -epicsEnvSet("ECMC_MON_LAG_MON_TOL", "NOT SET") -epicsEnvSet("ECMC_MON_LAG_MON_TIME", "NOT SET") -epicsEnvSet("ECMC_MON_LAG_MON_ENA", "NOT SET") -epicsEnvSet("ECMC_MON_AT_TARGET_TOL", "NOT SET") -epicsEnvSet("ECMC_MON_AT_TARGET_TIME", "NOT SET") -epicsEnvSet("ECMC_MON_AT_TARGET_ENA", "NOT SET") -epicsEnvSet("ECMC_MON_VELO_MAX", "NOT SET") -epicsEnvSet("ECMC_MON_VELO_MAX_TRAJ_TIME","NOT SET") -epicsEnvSet("ECMC_MON_VELO_MAX_DRV_TIME", "NOT SET") -epicsEnvSet("ECMC_MON_VELO_MAX_ENA", "NOT SET") -epicsEnvSet("ECMC_EGU", "mm") -epicsEnvSet("ECMC_PREC", 3) -epicsEnvSet("ECMC_AXISFIELDINIT", "") # Extra field init 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, paramTableSi2022/01/20 17:17:25.134 -ECMC Initializes............. -2022/01/20 17:17:25.134 ESS Open Source EtherCAT Motion Control Epics Module2022/01/20 17:17:25.134 -Mode: Configuration -2022/01/20 17:17:25.134 OK -2022/01/20 17:17:25.134 OK -2022/01/20 17:17:25.135 OK -2022/01/20 17:17:25.159 OK -2022/01/20 17:17:25.159 OK -2022/01/20 17:17:25.159 OK -ze = 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, "-1>=0", "","#- ") -epicsEnvSet("ECMC_EC_MASTER_ID" ,-1) -epicsEnvSet("ECMC_TMP_DIR", "/tmp/IOC_TEST/EcMaster_-1/") -system "mkdir -p /tmp/IOC_TEST/EcMaster_-1/" -epicsEnvSet("ECMC_TMP_DIR", "/tmp/IOC_TEST/EcMaster_-1/") -system "mkdir -p /tmp/IOC_TEST/EcMaster_-1/" -ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/setDiagnostics.cmd",1) -iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/setDiagnostics.cmd -#============================================================================== -# setDiagnostics.cmd -ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)" -ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)" -ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)" -epicsEnvSet("ECMCCFG_INIT" ,"#") -############################################################################## -## Configure hardware: -# No EtherCAT hardware (in this example).. -############################################################################## -## 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 7.0.1 -Module ecmc version 7.0.1 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;") # Only one option implemented in this plugin -iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/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;', 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;2022/01/20 17:17:25.365 OK -2022/01/20 17:17:25.365 OK -)" -../ecmc_plugin_grbl/ecmcGrbl.cpp:doReadWorker:207 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doMainWorker:245 -../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:625 -../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_control.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:592 -../grbl/grbl_stepper.c:st_go_idle:296 -Waiting for grbl init..../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:219 -../grbl/grbl_stepper.c:st_generate_step_dir_invert_masks:570 -../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). - - 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; - Version = 2 - Interface version = 65536 (ecmc = 65536) - max plc funcs = 64 - max plc func args = 10 - max plc consts = 64 - Construct func = @0xb4f20990 - Enter realtime func = @0xb4f20928 - Exit realtime func = @0xb4f20930 - Realtime func = @0xb4f20970 - Destruct func = @0xb4f20948 - dlhandle = @0x2247ae0 - Plc functions: - funcs[00]: - Name = "grbl_connect();" - Desc = double grbl_connect() : Connect to grbl interface (from config str). - Arg count = 0 - func = @0xb4f20938 - Plc constants: - -epicsEnvUnset(ECMC_PLUGIN_REPORT); -epicsEnvUnset(ECMC_PLUGIN_FILNAME) -epicsEnvUnset(ECMC_PLUGIN_CONFIG) -ecmcGrblAddCommand("G0X10Y100"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 1 -ecmcGrblAddCommand("$"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 2 - -ecmcGrblAddCommand("G0X10Y100"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 3 - -ecmcGrblAddCommand("$G"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 4 - -ecmcGrblAddCommand("G4P4"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 5 - -ecmcGrblAddCommand("G1X20Y200F20"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 6 - -ecmcGrblAddCommand("G4P4"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 7 - -ecmcGrblAddCommand("G2X40Y220R20"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 8 - -ecmcGrblAddCommand("$"); -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342: -../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 9 -############################################################################## -## PLC 0 -# $(SCRIPTEXEC) $(ecmccfg_DIR)loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_2022/01/20 17:17:25.366 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocBuild (0). Allow callbacks: true. -Starting iocInit -2022/01/20 17:17:25.366 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtBeginning (1). Allow callbacks: true. -2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCallbackInit (2). Allow callbacks: true. -2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaLinkInit (3). Allow callbacks: true. -2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDrvSup (4). Allow callbacks: true. -2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitRecSup (5). Allow callbacks: true. -2022/01/20 17:17:25.368 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDevSup (6). Allow callbacks: true. -MS=1000,FILE=./plc/can.plc") -iocInit() -############################################################################ -## EPICS R7.0.5-E3-7.0.5-patch -## Rev. 2021-05-05T19:45+0200 -############################################################################ -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 10!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1024!!! -Adding G to buffer -Adding 0 to buffer G -Adding X to buffer G0 -Adding 1 to buffer G0X -Adding 0 to buffer G0X1 -Adding Y to buffer G0X10 -Adding 1 to buffer G0X10Y -Adding 0 to buffer G0X10Y1 -Adding 0 to buffer G0X10Y10 -Adding - to buffer G0X10Y100 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 2!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1014!!! -Adding $ to buffer G0X10Y100 - -Adding - to buffer G0X10Y100 -$ -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 10!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1012!!! -Adding G to buffer G0X10Y100 -$ - -Adding 0 to buffer G0X10Y100 -$ -G -Adding X to buffer G0X10Y100 -$ -G0 -Adding 1 to buffer G0X10Y100 -$ -G0X -Adding 0 to buffer G0X10Y100 -$ -G0X1 -Adding Y to buffer G0X10Y100 -$ -G0X10 -Adding 1 to buffer G0X10Y100 -$ -G0X10Y -Adding 0 to buffer G0X10Y100 -$ -G0X10Y1 -Adding 0 to buffer G0X10Y100 -$ -G0X10Y10 -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 3!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1002!!! -Adding $ to buffer G0X10Y100 -$ -G0X10Y100 - -Adding G to buffer G0X10Y100 -$ -G0X10Y100 -$ -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -$G -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 5!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 999!!! -Adding G to buffer G0X10Y100 -$ -G0X10Y100 -$G - -Adding 4 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G -Adding P to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4 -Adding 4 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 13!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 994!!! -Adding G to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 - -Adding 1 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G -Adding X to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1 -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X2 -Adding Y to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20 -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y2 -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y20 -Adding F to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200 -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F2 -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 5!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 981!!! -Adding G to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 - -Adding 4 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G -Adding P to buffer G0X10Y100 -$ -G02022/01/20 17:17:25.370 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDatabase (7). Allow callbacks: true. -X10Y100 -$G -G4P4 -G1X20Y200F20 -G4 -Adding 4 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 13!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 976!!! -Adding G to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 - -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G -Adding X to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2 -Adding 4 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X4 -Adding Y to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40 -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y2 -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y22 -Adding R to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y220 -Adding 2 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y220R -Adding 0 to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y220R2 -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y220R20 -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 2!!! -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 963!!! -Adding $ to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y220R20 - -Adding - to buffer G0X10Y100 -$ -G0X10Y100 -$G -G4P4 -G1X20Y200F20 -G4P4 -G2X40Y220R20 -$ -../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!! -../grbl/grbl_gcode.c:gc_execute_line:71:G0X10Y100 -1 -letter=G -value=0.000000 -int_value=0 -mantissa=0 -axis_command=2 -here!! -here 2!! -here 3!! -../grbl/grbl_gcode.c:gc_execute_line:348: -1 -letter=X -value=10.000000 -int_value=10 -mantissa=0 -../grbl/grbl_gcode.c:gc_execute_line:348: -1 -letter=Y -value=100.000000 -int_value=100 -mantissa=0 -../grbl/grbl_gcode.c:gc_execute_line:348: -../grbl/grbl_gcode.c:gc_execute_line:383:axis_words=3 -../grbl/grbl_gcode.c:gc_execute_line:384:axis_command=2 -../grbl/grbl_gcode.c:gc_execute_line:389:axis_command=2 -../grbl/grbl_gcode.c:gc_execute_line:395 -../grbl/grbl_gcode.c:gc_execute_line:410:gc_parser_flags=0 -../grbl/grbl_gcode.c:gc_execute_line:416:gc_block.modal.feed_rate=0 -../grbl/grbl_gcode.c:gc_execute_line:443:gc_state.feed_rate=0.000000 -../grbl/grbl_motion_control.c:mc_line:33 - -../grbl/grbl_system.c:system_execute_line:134:################### -../grbl/grbl_system.c:system_execute_line:135:$ -system_execute_line switch line[1]= -../grbl/grbl_gcode.c:gc_execute_line:71:G0X10Y100 -1 -letter=G -value=0.000000 -int_value=0 -mantissa=0 -axis_command=2 -here!! -here 2!! -here 3!! -../grbl/grbl_gcode.c:gc_execute_line:348: -1 -letter=X -value=10.000000 -int_value=10 -mantissa=0 -../grbl/grbl_gcode.c:gc_execute_line:348: -1 -letter=Y -value=100.000000 -int_value=100 -mantissa=0 -../grbl/grbl_gcode.c:gc_execute_line:348: -../grbl/grbl_gcode.c:gc_execute_line:383:axis_words=3 -../grbl/grbl_gcode.c:gc_execute_line:384:axis_command=2 -../grbl/grbl_gcode.c:gc_execute_line:389:axis_command=2 -../grbl/grbl_gcode.c:gc_execute_line:395 -../grbl/grbl_gcode.c:gc_execute_line:410:gc_parser_flags=0 -../grbl/grbl_gcode.c:gc_execute_line:416:gc_block.modal.feed_rate=0 -../grbl/grbl_gcode.c:gc_execute_line:443:gc_state.feed_rate=0.000000 -../grbl/grbl_motion_control.c:mc_line:33 - -../grbl/grbl_system.c:system_execute_line:134:################### -../grbl/grbl_system.c:system_execute_line:135:$G -system_execute_line switch line[1]=G -../grbl/grbl_gcode.c:gc_execute_line:71:G4P4 -1 -letter=G -value=4.000000 -int_value=4 -mantissa=0 -here 2!! -here 3!! -../grbl/grbl_gcode.c:gc_execute_line:348: -1 -letter=P -value=4.000000 -int_value=4 -mantissa=0 -../grbl/grbl_gcode.c:gc_execute_line:348: -../2022/01/20 17:17:25.371 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterFinishDevSup (8). Allow callbacks: true. -2022/01/20 17:17:25.889 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterScanInit (9). Allow callbacks: true. -2022/01/20 17:17:25.889 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitialProcess (10). Allow callbacks: true. -2022/01/20 17:17:25.891 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (11). Allow callbacks: true. -2022/01/20 17:17:25.891 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocBuilt (12). Allow callbacks: true. -2022/01/20 17:17:26.184 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocRun (13). Allow callbacks: true. -2022/01/20 17:17:26.184 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterDatabaseRunning (14). Allow callbacks: true. -2022/01/20 17:17:26.185 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInterruptAccept (28). Allow callbacks: true. -2022/01/20 17:17:26.185 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaServerRunning (15). Allow callbacks: true. -2022/01/20 17:17:26.185 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (29). Allow callbacks: true. -iocRun: All initialization complete -2022/01/20 17:17:26.223 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocRunning (16). Allow callbacks: true. -grbl/grbl_gcode.c:gc_execute_line:383:axis_words=0 -../grbl/grbl_gcode.c:gc_execute_line:384:axis_command=0 -../grbl/grbl_gcode.c:gc_execute_line:389:axis_command=0 -../grbl/grbl_gcode.c:gc_execute_line:395 -../grbl/grbl_gcode.c:gc_execute_line:410:gc_parser_flags=0 -../grbl/grbl_gcode.c:gc_execute_line:416:gc_block.modal.feed_rate=0 -../grbl/grbl_gcode.c:gc_execute_line:443:gc_state.feed_rate=0.000000 -../grbl/grbl_motion_control.c:mc_dwell:200 -../grbl/grbl_stepper.c:st_next_block_index:672 -../grbl/grbl_stepper.c:st_wake_up:265 -ok -[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x] -ok -ok -[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0] -ok -# Set the IOC Prompt String One -epicsEnvSet IOCSH_PS1 "raspberrypi-12063 > " -# -raspberrypi-12063 > \ No newline at end of file diff --git a/iocsh/test.script b/iocsh/test.script index e5dd372..457eaa8 100644 --- a/iocsh/test.script +++ b/iocsh/test.script @@ -30,23 +30,29 @@ ${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=0,FILE=${ECMC_PLUGIN_FILN epicsEnvUnset(ECMC_PLUGIN_FILNAME) epicsEnvUnset(ECMC_PLUGIN_CONFIG) -ecmcGrblAddCommand("G0X10Y100"); - -ecmcGrblAddCommand("$"); - -ecmcGrblAddCommand("G0X10Y100"); - -ecmcGrblAddCommand("$G"); - -ecmcGrblAddCommand("G4P4"); - -ecmcGrblAddCommand("G1X20Y200F20"); - -ecmcGrblAddCommand("G4P4"); - -ecmcGrblAddCommand("G2X40Y220R20"); - -ecmcGrblAddCommand("$"); +ecmcGrblAddCommand("G1X0Y20F20"); +ecmcGrblAddCommand("G2X0Y-20R20"); +ecmcGrblAddCommand("G0X10Y10"); +ecmcGrblAddCommand("G4P1"); +ecmcGrblAddCommand("G1X10Y0F20"); +ecmcGrblAddCommand("G1X100Y100F20"); +ecmcGrblAddCommand("G1X0Y0F20"); +# +#ecmcGrblAddCommand("$"); +# +#ecmcGrblAddCommand("G0X10Y100"); +# +#ecmcGrblAddCommand("$G"); +# +#ecmcGrblAddCommand("G4P1"); +# +#ecmcGrblAddCommand("G1X20Y20F20"); +# +#ecmcGrblAddCommand("G4P1"); +# +#ecmcGrblAddCommand("G2X40Y40R20"); +# +#ecmcGrblAddCommand("$"); ############################################################################## ## PLC 0