Files
ecmc_plugin_grbl/iocsh/log2.log
2022-01-21 12:34:43 +01:00

3634 lines
202 KiB
Plaintext

registerChannelProviderLocal firstTime true
#
# Start at "2022-W03-Jan21-1233-04-CET"
#
# Version information:
# European Spallation Source ERIC : iocsh.bash (3.4.0-PID-5240)
#
# --->--> 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-5240"
#
# Enable an exit subroutine for sotfioc
dbLoadRecords "/home/pi/epics/base-7.0.5/db/softIocExit.db" "IOC=REQMOD:raspberrypi-5240"
#
# 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 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 init to motor record
epicsEnvSet("ECMC_AXISCONFIG", 2022/01/21 12:33:04.693
ECMC Initializes.............
2022/01/21 12:33:04.694 ESS Open Source EtherCAT Motion Control Epics Module2022/01/21 12:33:04.694
Mode: Configuration
2022/01/21 12:33:04.694 OK
2022/01/21 12:33:04.694 OK
2022/01/21 12:33:04.695 OK
2022/01/21 12:33:04.697 OK
2022/01/21 12:33:04.718 OK
2022/01/21 12:33:04.718 OK
2022/01/21 12:33:04.718 OK
"") # 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" "NELM=1"
epicsEnvSet("ECMC_EC_HWTYPE" "EK112022/01/21 12:33:04.720 OK
2022/01/21 12:33:04.721 OK
2022/01/21 12:33:04.728 OK
2022/01/21 12:33:04.729 OK
2022/01/21 12:33:04.729 OK
2022/01/21 12:33:04.729 OK
2022/01/21 12:33:04.730 OK
00")
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.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a04,0x6040,0x1,B1,binaryI2022/01/21 12:33:04.730 OK
2022/01/21 12:33:04.730 OK
2022/01/21 12:33:04.730 OK
2022/01/21 12:33:04.730 OK
2022/01/21 12:33:04.739 OK
2022/01/21 12:33:04.740 OK
2022/01/21 12:33:04.740 OK
2022/01/21 12:33:04.741 OK
2022/01/21 12:33:04.741 OK
2022/01/21 12:33:04.741 OK
2022/01/21 12:33:04.741 OK
2022/01/21 12:33:04.741 OK
nput05)"
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,binaryOutput07)"
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af8302022/01/21 12:33:04.742 OK
2022/01/21 12:33:04.751 OK
2022/01/21 12:33:04.842 OK
2022/01/21 12:33:04.922 14385
2022/01/21 12:33:04.923 OK
2022/01/21 12:33:04.923 OK
2022/01/21 12:33:04.923 OK
2022/01/21 12:33:04.923 OK
2022/01/21 12:33:04.923 OK
52,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/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1)
2022/01/21 12:33:04.931 OK
2022/01/21 12:33:05.022 OK
2022/01/21 12:33:05.102 14385
2022/01/21 12:33:05.103 OK
2022/01/21 12:33:05.103 OK
2022/01/21 12:33:05.103 OK
2022/01/21 12:33:05.103 OK
2022/01/21 12:33:05.103 OK
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"
#==============================================================================
# ecmcmXsXXX.cmd
ecmcEpicsEnvSetCalc("sid", "4"2022/01/21 12:33:05.111 OK
2022/01/21 12:33:05.112 OK
2022/01/21 12:33:05.112 OK
,"%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", "","#- ")
iocshLoad "/home/pi/epics/base-7.0.5/require/3.42022/01/21 12:33:05.120 OK
2022/01/21 12:33:05.121 OK
2022/01/21 12:33:05.122 OK
2022/01/21 12:33:05.122 OK
2022/01/21 12:33:05.122 OK
2022/01/21 12:33:05.122 OK
2022/01/21 12:33:05.122 OK
2022/01/21 12:33:05.122 OK
2022/01/21 12:33:05.122 OK
.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/21 12:33:05.132 OK
2022/01/21 12:33:05.242 OK
2022/01/21 12:33:05.322 12848
2022/01/21 12:33:05.325 OK
2022/01/21 12:33:05.325 OK
2022/01/21 12:33:05.326 OK
2022/01/21 12:33:05.326 OK
2022/01/21 12:33:05.326 OK
2022/01/21 12:33:05.326 OK
2022/01/21 12:33:05.327 OK
2022/01/21 12:33:05.327 OK
2022/01/21 12:33:05.327 OK
2022/01/21 12:33:05.327 OK
2022/01/21 12:33:05.327 OK
2022/01/21 12:33:05.328 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-")
epicsEnvUnset(sid)
epicsEnvUnset(mid)
ecmcEpicsEnvSetCalcTern2022/01/21 12:33:05.347 OK
2022/01/21 12:33:05.347 OK
2022/01/21 12:33:05.347 OK
2022/01/21 12:33:05.348 OK
2022/01/21 12:33:05.348 OK
2022/01/21 12:33:05.348 OK
ary(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"
#==============================================================================
# addSlave.cmd
epicsEnvSet("ECMC_EC_SL2022/01/21 12:33:05.353 OK
2022/01/21 12:33:05.462 OK
2022/01/21 12:33:05.542 12848
2022/01/21 12:33:05.544 OK
2022/01/21 12:33:05.544 OK
2022/01/21 12:33:05.545 OK
2022/01/21 12:33:05.545 OK
2022/01/21 12:33:05.545 OK
2022/01/21 12:33:05.546 OK
2022/01/21 12:33:05.546 OK
2022/01/21 12:33:05.546 OK
2022/01/21 12:33:05.546 OK
2022/01/21 12:33:05.547 OK
2022/01/21 12:33:05.547 OK
2022/01/21 12:33:05.547 OK
AVE_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}
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/s2022/01/21 12:33:05.573 OK
2022/01/21 12:33:05.573 OK
2022/01/21 12:33:05.573 OK
2022/01/21 12:33:05.574 OK
2022/01/21 12:33:05.574 OK
2022/01/21 12:33:05.575 OK
2022/01/21 12:33:05.575 OK
2022/01/21 12:33:05.576 OK
2022/01/21 12:33:05.576 OK
2022/01/21 12:33:05.576 OK
2022/01/21 12:33:05.577 OK
2022/01/21 12:33:05.577 OK
2022/01/21 12:33:05.577 OK
2022/01/21 12:33:05.578 OK
2022/01/21 12:33:05.578 OK
iteMods/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" "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.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" "1") # 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
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(600.0)<>0","# ECMC_DRV_SCALE_NU2022/01/21 12:33:05.608 OK
2022/01/21 12:33:05.609 OK
2022/01/21 12:33:05.609 OK
2022/01/21 12:33:05.609 OK
2022/01/21 12:33:05.614 OK
2022/01/21 12:33:05.614 OK
2022/01/21 12:33:05.614 OK
2022/01/21 12:33:05.614 OK
2022/01/21 12:33:05.614 OK
2022/01/21 12:33:05.615 OK
2022/01/21 12:33:05.615 OK
2022/01/21 12:33:05.615 OK
2022/01/21 12:33:05.615 OK
2022/01/21 12:33:05.615 OK
2022/01/21 12:33:05.615 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.616 OK
2022/01/21 12:33:05.617 OK
2022/01/21 12:33:05.617 OK
2022/01/21 12:33:05.617 OK
2022/01/21 12:33:05.617 OK
2022/01/21 12:33:05.617 OK
2022/01/21 12:33:05.617 OK
2022/01/21 12:33:05.618 OK
2022/01/21 12:33:05.618 OK
2022/01/21 12:33:05.618 OK
2022/01/21 12:33:05.618 OK
2022/01/21 12:33:05.618 OK
2022/01/21 12:33:05.619 OK
2022/01/21 12:33:05.619 OK
2022/01/21 12:33:05.619 OK
2022/01/21 12:33:05.620 OK
2022/01/21 12:33:05.620 OK
2022/01/21 12:33:05.620 OK
M 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,1)"
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,0)"
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")"
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.2022/01/21 12:33:05.621 OK
2022/01/21 12:33:05.621 OK
2022/01/21 12:33:05.622 OK
2022/01/21 12:33:05.622 OK
2022/01/21 12:33:05.622 OK
2022/01/21 12:33:05.622 OK
2022/01/21 12:33:05.622 OK
2022/01/21 12:33:05.623 OK
2022/01/21 12:33:05.623 OK
2022/01/21 12:33:05.623 OK
2022/01/21 12:33:05.623 OK
2022/01/21 12:33:05.623 OK
2022/01/21 12:33:05.624 OK
2022/01/21 12:33:05.624 OK
2022/01/21 12:33:05.624 OK
2022/01/21 12:33:05.624 OK
2022/01/21 12:33:05.624 OK
2022/01/21 12:33:05.624 OK
2022/01/21 12:33:05.625 OK
2022/01/21 12:33:05.625 OK
2022/01/21 12:33:05.625 OK
2022/01/21 12:33:05.625 OK
2022/01/21 12:33:05.626 OK
2022/01/21 12:33:05.626 OK
2022/01/21 12:33:05.626 OK
2022/01/21 12:33:05.626 OK
2022/01/21 12:33:05.626 OK
2022/01/21 12:33:05.627 OK
2022/01/21 12:33:05.627 OK
2022/01/21 12:33:05.627 OK
2022/01/21 12:33:05.627 OK
2022/01/21 12:33:05.628 OK
2022/01/21 12:33:05.628 ecmcMotorRecord:: setIntegerParam(1 motorPowerAutoOnOff_)=2
2022/01/21 12:33:05.629 ecmcMotorRecord:: setDoubleParam(1 motorPowerOnDelay_)=6
2022/01/21 12:33:05.629 ecmcMotorRecord:: setDoubleParam(1 motorPowerOffDelay_=-1
2022/01/21 12:33:05.630 ecmcMotorRecord:: udateMotorLimitsRO(1) enabledHighAndLow=1 valid=1 fValueHigh=130 fValueLow=-20
2022/01/21 12:33:05.630 ecmcMotorRecord:: connected(1)
2022/01/21 12:33:05.630 ecmcMotorRecord:: initialPoll(1) status=0
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)
epicsEnvUnset(ECMC_ACCL)
epicsEnvUnset(ECMC_ACCS_EGU_PmacLib: 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})
ER_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", "")
epicsEnvSet("ECMC_AXIS_EXPR_LINE_7", "")
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.648 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
2022/01/21 12:33:05.649 OK
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 value OK == 32768.0...", "ecmcExit Error: ECMC_DRV_SCALE_DEN2022/01/21 12:33:05.661 OK
2022/01/21 12:33:05.661 OK
2022/01/21 12:33:05.661 OK
2022/01/21 12:33:05.662 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.665 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.666 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.667 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
OM == 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.SetAxisDrvBrakeCloseAheadTime(2,0)"
ecmcConfigOrDie "Cfg.SetAxisSof2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.668 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.669 OK
2022/01/21 12:33:05.670 OK
2022/01/21 12:33:05.670 ecmcMotorRecord:: setIntegerParam(2 motorPowerAutoOnOff_)=2
2022/01/21 12:33:05.670 ecmcMotorRecord:: setDoubleParam(2 motorPowerOnDelay_)=6
2022/01/21 12:33:05.670 ecmcMotorRecord:: setDoubleParam(2 motorPowerOffDelay_=-1
2022/01/21 12:33:05.670 ecmcMotorRecord:: udateMotorLimitsRO(2) enabledHighAndLow=1 valid=1 fValueHigh=20 fValueLow=-130
2022/01/21 12:33:05.670 ecmcMotorRecord:: connected(2)
2022/01/21 12:33:05.670 ecmcMotorRecord:: initialPoll(2) status=0
tLimitPosBwd(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)
epicsEnvUnset(ECMC_ENC_ABS_OFFSET)
epicsEnvUnset(ECMC_ENC_VmacLib: 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/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
EL_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)"
ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)=var a:=1|"
ecm2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.681 OK
2022/01/21 12:33:05.682 OK
2022/01/21 12:33:05.682 OK
2022/01/21 12:33:05.682 OK
2022/01/21 12:33:05.682 OK
2022/01/21 12:33:05.682 OK
2022/01/21 12:33:05.682 OK
2022/01/21 12:33:05.682 OK
cConfigOrDie "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:222
../ecmc_plugin_grbl/ecmcGrbl.cpp:doMainWorker:260
../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:626
../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_li2022/01/21 12:33:05.887 OK
2022/01/21 12:33:05.888 OK
mits.c:limits_init:44 Not supported yet..
../grbl/grbl_probe.c:probe_init:31 Not supported yet..
../grbl/grbl_stepper.c:st_reset:593
../grbl/grbl_stepper.c:st_go_idle:297
Waiting for grbl init..../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234
../grbl/grbl_stepper.c:st_generate_step_dir_invert_masks:571
../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=<axis id>: Ecmc Axis id for use as grbl X axis, default = disabled (=-1).
Y_AXIS=<axis id>: Ecmc Axis id for use as grbl Y axis, default = disabled (=-1).
Z_AXIS=<axis id>: Ecmc Axis id for use as grbl Z axis, default = disabled (=-1).
SPINDLE_AXIS=<axis id>: 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 = @0xb5014c80
Enter realtime func = @0xb5014c28
Exit realtime func = @0xb5014c30
Realtime func = @0xb5014c70
Destruct func = @0xb5014c48
dlhandle = @0x1b71d28
Plc functions:
funcs[00]:
Name = "grbl_connect();"
Desc = double grbl_connect() : Connect to grbl interface (from config str).
Arg count = 0
func = @0xb5014c38
Plc constants:
epicsEnvUnset(ECMC_PLUGIN_REPORT);
epicsEnvUnset(ECMC_PLUGIN_FILNAME)
epicsEnvUnset(ECMC_PLUGIN_CONFIG)
ecmcGrblAddCommand("G1X20Y20F20");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 1
ecmcGrblAddCommand("G4P1");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 2
ecmcGrblAddCommand("G2X0Y0R20");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 3
ecmcGrblAddCommand("G0X10Y10");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 4
ecmcGrblAddCommand("G4P1");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 5
ecmcGrblAddCommand("G1X10Y0F10");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 6
ecmcGrblAddCommand("G4P1");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 7
ecmcGrblAddCommand("G1X50Y50F10");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 8
ecmcGrblAddCommand("G4P1");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 9
ecmcGrblAddCommand("G1X0Y0F10");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:416:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:420: Buffer size 10
#
#ecmcGrblAddCommand("$");
#
#ecmcGrblAddCommand("G0X10Y100");
#
#ecmcGrblAddCommand("$G");
#
#ecmcGrblAddCommand("G4P1");
#
#ecmcGrblAddCommand("G1X20Y20F20");
#
#ecmcGrblAddCommand("G4P1");
#
#ecmcGrblAd2022/01/21 12:33:05.888 OK
2022/01/21 12:33:05.888 OK
2022/01/21 12:33:05.888 OK
2022/01/21 12:33:05.889 OK
2022/01/21 12:33:05.889 OK
2022/01/21 12:33:05.889 OK
2022/01/21 12:33:05.893 INFO: Locking memory
2022/01/21 12:33:05.993 ../devEcmcSup/motion/ecmcMonitor.cpp/checkLimits:501: ERROR_MON_BOTH_LIMIT_INTERLOCK (0x14c10).
2022/01/21 12:33:05.993 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315).
2022/01/21 12:33:05.993 ../devEcmcSup/motion/ecmcMonitor.cpp/checkLimits:501: ERROR_MON_BOTH_LIMIT_INTERLOCK (0x14c10).
2022/01/21 12:33:05.993 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 0: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 1: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 2: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 3: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 4: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 5: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 6: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 8: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 9: Not operational (0x24011).
2022/01/21 12:33:05.994 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
2022/01/21 12:33:06.015 Starting up EtherCAT bus: 0 second(s). Max wait time 30 second(s).
2022/01/21 12:33:06.094 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000015
2022/01/21 12:33:06.094 ecmcMotorRecord:: poll(1) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315
2022/01/21 12:33:06.094 ecmcMotorRecord:: sErrorMessage(1)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK"
2022/01/21 12:33:06.094 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/21 12:33:06.095 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000012
2022/01/21 12:33:06.095 ecmcMotorRecord:: poll(2) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315
2022/01/21 12:33:06.095 ecmcMotorRecord:: sErrorMessage(2)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK"
2022/01/21 12:33:06.095 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/21 12:33:06.295 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000012
2022/01/21 12:33:06.295 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/21 12:33:06.495 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000019
2022/01/21 12:33:06.495 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:06.695 ecmcMotorRecord:: poll(1) LLS=0
2022/01/21 12:33:06.695 ecmcMotorRecord:: poll(1) HLS=0
2022/01/21 12:33:06.695 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=42.33 time=0.000105
2022/01/21 12:33:06.695 ecmcMotorRecord:: poll(2) LLS=0
2022/01/21 12:33:06.695 ecmcMotorRecord:: poll(2) HLS=0
2022/01/21 12:33:06.695 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=6.12 time=0.000041
2022/01/21 12:33:06.896 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=42.33 time=0.000013
2022/01/21 12:33:06.896 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=6.12 time=0.000006
2022/01/21 12:33:06.973 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:328: WARNING (axis 1): Drive hardware in warning state.
2022/01/21 12:33:07.015 Starting up EtherCAT bus: 1 second(s). Max wait time 30 second(s).
2022/01/21 12:33:07.096 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=42.33 time=0.000012
2022/01/21 12:33:07.096 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=6.12 time=0.000005
2022/01/21 12:33:07.204 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:328: WARNING (axis 2): Drive hardware in warning state.
2022/01/21 12:33:07.296 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=42.33 time=0.000013
2022/01/21 12:33:07.296 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=6.12 time=0.000006
2022/01/21 12:33:07.496 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=42.33 time=0.000012
2022/01/21 12:33:07.496 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=6.12 time=0.000010
2022/01/21 12:33:07.497 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
2022/01/21 12:33:07.497 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
2022/01/21 12:33:07.497 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
2022/01/21 12:33:07.497 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
2022/01/21 12:33:07.497 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
2022/01/21 12:33:07.696 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000014
2022/01/21 12:33:07.696 ecmcMotorRecord:: poll(1) bError=0 drvlocal.statusBinData.onChangeData.error=0x0
2022/01/21 12:33:07.696 ecmcMotorRecord:: poll(1) callParamCallbacksUpdateError Error=4 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL
2022/01/21 12:33:07.697 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000008
2022/01/21 12:33:07.697 ecmcMotorRecord:: poll(2) bError=0 drvlocal.statusBinData.onChangeData.error=0x0
2022/01/21 12:33:07.697 ecmcMotorRecord:: poll(2) callParamCallbacksUpdateError Error=4 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL
2022/01/21 12:33:07.897 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:07.897 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000006
2022/01/21 12:33:08.097 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000018
2022/01/21 12:33:08.097 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009
2022/01/21 12:33:08.297 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000143
2022/01/21 12:33:08.298 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:08.498 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000020
2022/01/21 12:33:08.498 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009
2022/01/21 12:33:08.698 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000019
2022/01/21 12:33:08.698 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:08.898 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000012
2022/01/21 12:33:08.898 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000007
2022/01/21 12:33:09.015 EtherCAT bus started!
2022/01/21 12:33:09.015 OK
2022/01/21 12:33:09.015 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocBuild (0). Allow callbacks: true.
Starting iocInit
2022/01/21 12:33:09.015 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtBeginning (1). Allow callbacks: true.
2022/01/21 12:33:09.029 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCallbackInit (2). Allow callbacks: true.
2022/01/21 12:33:09.035 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaLinkInit (3). Allow callbacks: true.
2022/01/21 12:33:09.035 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDrvSup (4). Allow callbacks: true.
2022/01/21 12:33:09.035 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitRecSup (5). Allow callbacks: true.
2022/01/21 12:33:09.040 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDevSup (6). Allow callbacks: true.
2022/01/21 12:33:09.043 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.positionActual01 linked to record (asyn reason 1).
2022/01/21 12:33:09.044 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderLatchPostion01 linked to record (asyn reason 2).
2022/01/21 12:33:09.044 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderControl01 linked to record (asyn reason 3).
2022/01/21 12:33:09.045 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderValue01 linked to record (asyn reason 4).
2022/01/21 12:33:09.045 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.positionActual01 linked to record (asyn reason 5).
2022/01/21 12:33:09.045 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderLatchPostion01 linked to record (asyn reason 6).
2022/01/21 12:33:09.046 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderControl01 linked to record (asyn reason 7).
2022/01/21 12:33:09.046 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderValue01 linked to record (asyn reason 8).
2022/01/21 12:33:09.046 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchPositive01 linked to record (asyn reason 9).
2022/01/21 12:33:09.050 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchNegative01 linked to record (asyn reason 10).
2022/01/21 12:33:09.051 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchPositive02 linked to record (asyn reason 11).
2022/01/21 12:33:09.051 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchNegative02 linked to record (asyn reason 12).
2022/01/21 12:33:09.051 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.driveControl01 linked to record (asyn reason 13).
2022/01/21 12:33:09.051 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.velocitySetpoint01 linked to record (asyn reason 14).
2022/01/21 12:33:09.052 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.positionActual01 linked to record (asyn reason 15).
2022/01/21 12:33:09.052 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderLatchPostion01 linked to record (asyn reason 16).
2022/01/21 12:33:09.053 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderControl01 linked to record (asyn reason 17).
2022/01/21 12:33:09.053 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderValue01 linked to record (asyn reason 18).
2022/01/21 12:33:09.054 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.driveControl01 linked to record (asyn reason 19).
2022/01/21 12:33:09.054 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.velocitySetpoint01 linked to record (asyn reason 20).
2022/01/21 12:33:09.054 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.positionActual01 linked to record (asyn reason 21).
2022/01/21 12:33:09.055 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderLatchPostion01 linked to record (asyn reason 22).
2022/01/21 12:33:09.055 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderControl01 linked to record (asyn reason 23).
2022/01/21 12:33:09.056 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderValue01 linked to record (asyn reason 24).
2022/01/21 12:33:09.057 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.actpos linked to record (asyn reason 25).
2022/01/21 12:33:09.058 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.setpos linked to record (asyn reason 26).
2022/01/21 12:33:09.058 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.poserr linked to record (asyn reason 27).
2022/01/21 12:33:09.059 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax1.plc.error linked to record (asyn reason 28).
2022/01/21 12:33:09.060 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.actpos linked to record (asyn reason 29).
2022/01/21 12:33:09.060 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.setpos linked to record (asyn reason 30).
2022/01/21 12:33:09.061 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.poserr linked to record (asyn reason 31).
2022/01/21 12:33:09.062 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.error linked to record (asyn reason 32).
2022/01/21 12:33:09.063 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.appmode linked to record (asyn reason 33).
2022/01/21 12:33:09.064 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.id linked to record (asyn reason 34).
2022/01/21 12:33:09.064 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.latency.min linked to record (asyn reason 35).
2022/01/21 12:33:09.069 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.latency.max linked to record (asyn reason 36).
2022/01/21 12:33:09.070 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.period.min linked to record (asyn reason 37).
2022/01/21 12:33:09.071 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.period.max linked to record (asyn reason 38).
2022/01/21 12:33:09.072 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.execute.min linked to record (asyn reason 39).
2022/01/21 12:33:09.073 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.execute.max linked to record (asyn reason 40).
2022/01/21 12:33:09.075 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.send.min linked to record (asyn reason 41).
2022/01/21 12:33:09.076 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.send.max linked to record (asyn reason 42).
2022/01/21 12:33:09.078 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput01 linked to record (asyn reason 43).
2022/01/21 12:33:09.079 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput02 linked to record (asyn reason 44).
2022/01/21 12:33:09.081 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput03 linked to record (asyn reason 45).
2022/01/21 12:33:09.083 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput04 linked to record (asyn reason 46).
2022/01/21 12:33:09.086 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput05 linked to record (asyn reason 47).
2022/01/21 12:33:09.088 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput06 linked to record (asyn reason 48).
2022/01/21 12:33:09.090 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput07 linked to record (asyn reason 49).
2022/01/21 12:33:09.092 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput08 linked to record (asyn reason 50).
2022/01/21 12:33:09.095 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput01 linked to record (asyn reason 51).
2022/01/21 12:33:09.096 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput02 linked to record (asyn reason 52).
2022/01/21 12:33:09.098 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput03 linked to record (asyn reason 53).
2022/01/21 12:33:09.099 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000047
2022/01/21 12:33:09.099 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000012
2022/01/21 12:33:09.100 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput04 linked to record (asyn reason 54).
2022/01/21 12:33:09.102 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput05 linked to record (asyn reason 55).
2022/01/21 12:33:09.105 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput06 linked to record (asyn reason 56).
2022/01/21 12:33:09.107 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput07 linked to record (asyn reason 57).
2022/01/21 12:33:09.109 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput08 linked to record (asyn reason 58).
2022/01/21 12:33:09.113 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.powerOk01 linked to record (asyn reason 59).
2022/01/21 12:33:09.115 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.overload01 linked to record (asyn reason 60).
2022/01/21 12:33:09.118 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.binaryInput01 linked to record (asyn reason 61).
2022/01/21 12:33:09.121 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.binaryInput02 linked to record (asyn reason 62).
2022/01/21 12:33:09.125 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax1.plc.enable linked to record (asyn reason 63).
2022/01/21 12:33:09.128 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax1.plc.firstscan linked to record (asyn reason 64).
2022/01/21 12:33:09.131 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.enable linked to record (asyn reason 65).
2022/01/21 12:33:09.134 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.firstscan linked to record (asyn reason 66).
2022/01/21 12:33:09.138 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.ok linked to record (asyn reason 67).
2022/01/21 12:33:09.141 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.diagnostic linked to record (asyn reason 68).
2022/01/21 12:33:09.142 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.plc.expression linked to record (asyn reason 69).
2022/01/21 12:33:09.144 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.diagnostic linked to record (asyn reason 70).
2022/01/21 12:33:09.145 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.plc.expression linked to record (asyn reason 71).
2022/01/21 12:33:09.147 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.msg linked to record (asyn reason 72).
2022/01/21 12:33:09.148 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.updated linked to record (asyn reason 73).
2022/01/21 12:33:09.149 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.command linked to record (asyn reason 74).
2022/01/21 12:33:09.153 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.command linked to record (asyn reason 75).
dCommand("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 <level> or asynReport <level>
# ecmcReport 3
# ecmcGrepParam <pattern>
# 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/21 12:33:09.157 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.ONE linked to record (asyn reason 76).
2022/01/21 12:33:09.159 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.ZERO linked to record (asyn reason 77).
2022/01/21 12:33:09.162 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.ONE linked to record (asyn reason 78).
2022/01/21 12:33:09.165 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.ZERO linked to record (asyn reason 79).
2022/01/21 12:33:09.167 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.ONE linked to record (asyn reason 80).
2022/01/21 12:33:09.170 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.ZERO linked to record (asyn reason 81).
2022/01/21 12:33:09.172 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.ONE linked to record (asyn reason 82).
2022/01/21 12:33:09.176 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.ZERO linked to record (asyn reason 83).
2022/01/21 12:33:09.178 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.ONE linked to record (asyn reason 84).
2022/01/21 12:33:09.181 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.ZERO linked to record (asyn reason 85).
2022/01/21 12:33:09.184 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.ONE linked to record (asyn reason 86).
2022/01/21 12:33:09.187 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.ZERO linked to record (asyn reason 87).
2022/01/21 12:33:09.189 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.ONE linked to record (asyn reason 88).
2022/01/21 12:33:09.192 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.ZERO linked to record (asyn reason 89).
2022/01/21 12:33:09.195 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.ONE linked to record (asyn reason 90).
2022/01/21 12:33:09.197 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.ZERO linked to record (asyn reason 91).
2022/01/21 12:33:09.200 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.ONE linked to record (asyn reason 92).
2022/01/21 12:33:09.203 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.ZERO linked to record (asyn reason 93).
2022/01/21 12:33:09.206 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.cmddata linked to record (asyn reason 94).
2022/01/21 12:33:09.209 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.cmddata linked to record (asyn reason 95).
2022/01/21 12:33:09.212 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.slavestatus linked to record (asyn reason 96).
2022/01/21 12:33:09.215 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.slavestatus linked to record (asyn reason 97).
2022/01/21 12:33:09.218 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.slavestatus linked to record (asyn reason 98).
2022/01/21 12:33:09.220 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.slavestatus linked to record (asyn reason 99).
2022/01/21 12:33:09.222 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.slavestatus linked to record (asyn reason 100).
2022/01/21 12:33:09.225 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.slavestatus linked to record (asyn reason 101).
2022/01/21 12:33:09.228 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.slavestatus linked to record (asyn reason 102).
2022/01/21 12:33:09.231 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.slavestatus linked to record (asyn reason 103).
2022/01/21 12:33:09.234 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.slavestatus linked to record (asyn reason 104).
2022/01/21 12:33:09.237 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.status linked to record (asyn reason 105).
2022/01/21 12:33:09.239 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.errorid linked to record (asyn reason 106).
2022/01/21 12:33:09.243 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.status linked to record (asyn reason 107).
2022/01/21 12:33:09.246 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.errorid linked to record (asyn reason 108).
2022/01/21 12:33:09.248 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.masterstatus linked to record (asyn reason 109).
2022/01/21 12:33:09.251 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.slavecounter linked to record (asyn reason 110).
2022/01/21 12:33:09.254 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.memmapcounter linked to record (asyn reason 111).
2022/01/21 12:33:09.256 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.domainfailcountertotal linked to record (asyn reason 112).
2022/01/21 12:33:09.259 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.entrycounter linked to record (asyn reason 113).
2022/01/21 12:33:09.262 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.domainstatus linked to record (asyn reason 114).
2022/01/21 12:33:09.266 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.control linked to record (asyn reason 115).
2022/01/21 12:33:09.269 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.control linked to record (asyn reason 116).
2022/01/21 12:33:09.273 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderStatus01 linked to record (asyn reason 117).
2022/01/21 12:33:09.276 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderStatus01 linked to record (asyn reason 118).
2022/01/21 12:33:09.279 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.status01 linked to record (asyn reason 119).
2022/01/21 12:33:09.282 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.status02 linked to record (asyn reason 120).
2022/01/21 12:33:09.286 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.driveStatus01 linked to record (asyn reason 121).
2022/01/21 12:33:09.289 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderStatus01 linked to record (asyn reason 122).
2022/01/21 12:33:09.292 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.driveStatus01 linked to record (asyn reason 123).
2022/01/21 12:33:09.295 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderStatus01 linked to record (asyn reason 124).
2022/01/21 12:33:09.299 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000017
2022/01/21 12:33:09.299 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000006
2022/01/21 12:33:09.332 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.targpos linked to record (asyn reason 125).
2022/01/21 12:33:09.336 ecmcAsynPortDriver:drvUserCreate: Parameter ax1.targvelo linked to record (asyn reason 126).
2022/01/21 12:33:09.341 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.targpos linked to record (asyn reason 127).
2022/01/21 12:33:09.345 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.targvelo linked to record (asyn reason 128).
2022/01/21 12:33:09.360 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.reset linked to record (asyn reason 129).
2022/01/21 12:33:09.365 ecmcMotorRecord:: setIntegerParam(1 motorUpdateStatus_)=0
2022/01/21 12:33:09.365 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000010
2022/01/21 12:33:09.365 ecmcMotorRecord:: setIntegerParam(2 motorUpdateStatus_)=0
2022/01/21 12:33:09.365 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000008
2022/01/21 12:33:09.410 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDatabase (7). Allow callbacks: true.
2022/01/21 12:33:09.410 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterFinishDevSup (8). Allow callbacks: true.
2022/01/21 12:33:09.499 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000013
2022/01/21 12:33:09.499 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000008
2022/01/21 12:33:09.699 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000139
2022/01/21 12:33:09.700 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009
2022/01/21 12:33:09.900 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000015
2022/01/21 12:33:09.900 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000013
2022/01/21 12:33:09.944 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterScanInit (9). Allow callbacks: true.
2022/01/21 12:33:09.945 ecmcMotorRecord:: setIntegerParam(1 HomProc_)=3 motorNotHomedProblem=0
2022/01/21 12:33:09.945 ecmcMotorRecord:: setIntegerParam(2 HomProc_)=3 motorNotHomedProblem=0
2022/01/21 12:33:09.947 ecmcMotorRecord:: setDoubleParam(1 HomPos_)=0.000000
2022/01/21 12:33:09.947 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitialProcess (10). Allow callbacks: true.
2022/01/21 12:33:09.947 ecmcMotorRecord:: setDoubleParam(2 HomPos_)=0.000000
2022/01/21 12:33:09.960 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (11). Allow callbacks: true.
2022/01/21 12:33:09.960 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocBuilt (12). Allow callbacks: true.
2022/01/21 12:33:10.027 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocRun (13). Allow callbacks: true.
2022/01/21 12:33:10.028 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterDatabaseRunning (14). Allow callbacks: true.
2022/01/21 12:33:10.032 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInterruptAccept (28). Allow callbacks: true.
2022/01/21 12:33:10.032 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaServerRunning (15). Allow callbacks: true.
2022/01/21 12:33:10.033 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (29). Allow callbacks: true.
iocRun: All initialization complete
2022/01/21 12:33:10.083 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocRunning (16). Allow callbacks: true.
2022/01/21 12:33:10.087 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:336: INFO (axis 1): Drive hardware warning state cleared.
2022/01/21 12:33:10.087 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:336: INFO (axis 2): Drive hardware warning state cleared.
2022/01/21 12:33:10.100 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000015
2022/01/21 12:33:10.100 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000006
2022/01/21 12:33:09.365 [devMotorAsyn.c:439 IOC_TEST:Axis1] init_record IOC_TEST:Axis1 position=0.000000 encoderPos=0.000000 velocity=0.000000 MSTAstatus=0x0f00 flagsValue=0x3f flagsWritten=0x3f pmr->mflg=0x0
2022/01/21 12:33:09.365 [devMotorAsyn.c:185 IOC_TEST:Axis1] init_controller IOC_TEST:Axis1 set encoder ratio=1.000000 status=0
2022/01/21 12:33:09.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/21 12:33:09.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/21 12:33:09.365 [motorRecord.cc:782 IOC_TEST:Axis1] init_re_init start neverPolled=0 stat=17 nsta=0
2022/01/21 12:33:09.365 [motorRecord.cc:720 IOC_TEST:Axis1] enforceMinRetryDeadband spdb=0.100000 rdbd=0.100000 mres=0.030000
2022/01/21 12:33:09.365 [motorRecord.cc:4484 IOC_TEST:Axis1] pmr->dhlm=130 softLimitRO=130
2022/01/21 12:33:09.365 [motorRecord.cc:4545 IOC_TEST:Axis1] pmr->dllm=-20 softLimitRO=-20
2022/01/21 12:33:09.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/21 12:33:09.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=0xf00 neverPolled=0
2022/01/21 12:33:09.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/21 12:33:09.365 [devMotorAsyn.c:185 IOC_TEST:Axis2] init_controller IOC_TEST:Axis2 set encoder ratio=1.000000 status=0
2022/01/21 12:33:09.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/21 12:33:09.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/21 12:33:09.365 [motorRecord.cc:782 IOC_TEST:Axis2] init_re_init start neverPolled=0 stat=17 nsta=0
2022/01/21 12:33:09.365 [motorRecord.cc:720 IOC_TEST:Axis2] enforceMinRetryDeadband spdb=0.100000 rdbd=0.100000 mres=0.030000
2022/01/21 12:33:09.365 [motorRecord.cc:4484 IOC_TEST:Axis2] pmr->dhlm=20 softLimitRO=20
2022/01/21 12:33:09.365 [motorRecord.cc:4545 IOC_TEST:Axis2] pmr->dllm=-130 softLimitRO=-130
2022/01/21 12:33:09.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/21 12:33:09.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-5240 > "
#
raspberrypi-5240 > 2022/01/21 12:33:10.300 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000018
2022/01/21 12:33:10.300 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000152
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 12!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: 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 2 to buffer G1X20Y20F
Adding 0 to buffer G1X20Y20F2
Adding
to buffer G1X20Y20F20
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 5!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 1012!!!
Adding G to buffer G1X20Y20F20
Adding 4 to buffer G1X20Y20F20
G
Adding P to buffer G1X20Y20F20
G4
Adding 1 to buffer G1X20Y20F20
G4P
Adding
to buffer G1X20Y20F20
G4P1
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 10!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 1007!!!
Adding G to buffer G1X20Y20F20
G4P1
Adding 2 to buffer G1X20Y20F20
G4P1
G
Adding X to buffer G1X20Y20F20
G4P1
G2
Adding 0 to buffer G1X20Y20F20
G4P1
G2X
Adding Y to buffer G1X20Y20F20
G4P1
G2X0
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y
Adding R to buffer G1X20Y20F20
G4P1
G2X0Y0
Adding 2 to buffer G1X20Y20F20
G4P1
G2X0Y0R
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R2
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 9!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 997!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G
Adding X to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X1
Adding Y to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y1
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 5!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 988!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
Adding 4 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G
Adding P to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 11!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 983!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G
Adding X to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X1
Adding Y to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y
Adding F to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F1
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 5!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 972!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
Adding 4 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G
Adding P to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 12!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 967!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G
Adding X to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1
Adding 5 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X5
Adding Y to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50
Adding 5 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y5
Adding F to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F1
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 5!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 955!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
Adding 4 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G
Adding P to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:237: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:242: Command length 10!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:243: Available bytes 950!!!
Adding G to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G
Adding X to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X
Adding Y to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X0
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X0Y
Adding F to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X0Y0
Adding 1 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X0Y0F
Adding 0 to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X0Y0F1
Adding
to buffer G1X20Y20F20
G4P1
G2X0Y0R20
G0X10Y10
G4P1
G1X10Y0F10
G4P1
G1X50Y50F10
G4P1
G1X0Y0F10
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:249: Writing!!
../grbl/grbl_gcode.c:gc_execute_line:71:G1X20Y20F20
1
letter=G
value=1.000000
int_value=1
mantissa=0
axis_command=2
here!!
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=X
valu2022/01/21 12:33:10.501 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000011
e=20.000000
int_value=20
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=Y
value=20.000000
int_value=20
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=F
value=20.000000
int_value=20
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_motion_control.c:mc_line:33
../grbl/grbl_gcode.c:gc_execute_line:71:G4P1
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=1.000000
int_value=1
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../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=20.000000
../grbl/grbl_motion_control.c:mc_dwell:200
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_wake_up:266
ok
2022/01/21 12:33:10.501 [motorRecord.cc:1522 IOC_TEST:Axis1] msta.Bits.EA_POSITION power on=1
2022/01/21 12:33:10.501 [motorRecord.cc:1627 IOC_TEST:Axis1] mipSetBit EXTERNAL(Ex) old='' new=EXTERNAL(Ex)
2022/01/21 12:33:10.501 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009
2022/01/21 12:33:10.501 [motorRecord.cc:1522 IOC_TEST:Axis2] msta.Bits.EA_POSITION power on=1
2022/01/21 12:33:10.501 [motorRecord.cc:1627 IOC_TEST:Axis2] mipSetBit EXTERNAL(Ex) old='' new=EXTERNAL(Ex)
2022/01/21 12:33:10.701 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64024 fPos=3 fActPosition=3 time=0.000011
2022/01/21 12:33:10.701 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=305 fPos=3.016 fActPosition=3.03 time=0.000010
2022/01/21 12:33:10.902 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63923 fPos=6.016 fActPosition=6.03 time=0.000011
2022/01/21 12:33:10.902 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=405 fPos=6.016 fActPosition=6.03 time=0.000006
2022/01/21 12:33:11.102 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63822 fPos=9.016 fActPosition=9.06 time=0.000011
2022/01/21 12:33:11.102 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=505 fPos=9.016 fActPosition=9.03 time=0.000006
2022/01/21 12:33:11.302 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63722 fPos=12.028 fActPosition=12.06 time=0.000115
2022/01/21 12:33:11.303 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=606 fPos=12.028 fActPosition=12.06 time=0.000006
2022/01/21 12:33:11.503 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63622 fPos=15.028 fActPosition=15.06 time=0.000011
2022/01/21 12:33:11.503 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=706 fPos=15.028 fActPosition=15.06 time=0.000006
2022/01/21 12:33:11.703 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63522 fPos=18.028 fActPosition=18.06 time=0.000010
2022/01/21 12:33:11.703 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=806 fPos=18.028 fActPosition=18.06 time=0.000006
2022/01/21 12:33:11.903 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63448 fPos=20 fActPosition=20.28 time=0.000011
Segment buffer empty!!!!!!!!!!!!!!!!!!!!!../grbl/grbl_stepper.c:st_go_idle:297
2022/01/21 12:33:11.904 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=880 fPos=20 fActPosition=20.28 time=0.000006
2022/01/21 12:33:12.104 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63458 fPos=20 fActPosition=19.98 time=0.000011
2022/01/21 12:33:12.104 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=870 fPos=20 fActPosition=19.98 time=0.000007
2022/01/21 12:33:12.304 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63458 fPos=20 fActPosition=19.98 time=0.000014
2022/01/21 12:33:12.304 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=870 fPos=20 fActPosition=19.98 time=0.000008
2022/01/21 12:33:12.504 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63459 fPos=20 fActPosition=19.95 time=0.000019
2022/01/21 12:33:12.505 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=870 fPos=20 fActPosition=19.98 time=0.000012
2022/01/21 12:33:12.705 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63458 fPos=20 fActPosition=19.98 time=0.000020
2022/01/21 12:33:12.705 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=870 fPos=20 fActPosition=19.98 time=0.000011
2022/01/21 12:33:12.905 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63458 fPos=19.988 fActPosition=19.98 time=0.000096
2022/01/21 12:33:12.906 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=851 fPos=19.312 fActPosition=19.41 time=0.000011
../grbl/grbl_gcode.c:gc_execute_line:71:G2X0Y0R20
1
letter=G
value=2.000000
int_value=2
mantissa=0
axis_command=2
here!!
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=X
value=0.000000
int_value=0
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=Y
value=0.000000
int_value=0
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=R
value=20.000000
int_value=20
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=20.000000
../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:660
../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:673
../grbl/grbl_stepper.c:st_wake_up:266
ok
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
2022/01/21 12:33:13.106 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63469 fPos=19.656 fActPosition=19.65 time=0.000011
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:13.106 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=746 fPos=16.312 fActPosition=16.26 time=0.000006
2022/01/21 12:33:13.306 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63496 fPos=18.848 fActPosition=18.84 time=0.000011
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:13.306 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=646 fPos=13.296 fActPosition=13.26 time=0.000007
2022/01/21 12:33:13.507 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63541 fPos=17.488 fActPosition=17.49 time=0.000010
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:13.507 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=546 fPos=10.296 fActPosition=10.26 time=0.000006
2022/01/21 12:33:13.707 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63610 fPos=15.448 fActPosition=15.42 time=0.000011
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:13.707 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=446 fPos=7.296 fActPosition=7.26 time=0.000006
2022/01/21 12:33:13.907 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63706 fPos=12.564 fActPosition=12.54 time=0.000048
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
2022/01/21 12:33:13.907 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=351 fPos=4.44 fActPosition=4.41 time=0.000006
2022/01/21 12:33:14.108 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63806 fPos=9.564 fActPosition=9.54 time=0.000011
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
2022/01/21 12:33:14.108 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=284 fPos=2.436 fActPosition=2.4 time=0.000007
2022/01/21 12:33:14.308 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63906 fPos=6.564 fActPosition=6.54 time=0.000011
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_gcode.c:gc_execute_line:71:G0X10Y10
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=10.000000
int_value=10
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=20.000000
../grbl/grbl_motion_control.c:mc_line:33
ok
../grbl/grbl_gcode.c:gc_execute_line:71:G4P1
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=1.000000
int_value=1
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../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=20.000000
../grbl/grbl_motion_control.c:mc_dwell:200
ok
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:14.308 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=240 fPos=1.112 fActPosition=1.08 time=0.000007
2022/01/21 12:33:14.508 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64007 fPos=3.548 fActPosition=3.51 time=0.000043
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:14.509 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=215 fPos=0.32 fActPosition=0.33 time=0.000006
2022/01/21 12:33:14.709 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64106 fPos=0.548 fActPosition=0.54 time=0.000012
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:14.709 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=204 fPos=0.008 fActPosition=0 time=0.000007
2022/01/21 12:33:14.909 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64043 fPos=2.452 fActPosition=2.43 time=0.000012
../grbl/grbl_stepper.c:st_next_block_index:673
2022/01/21 12:33:14.909 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=286 fPos=2.464 fActPosition=2.46 time=0.000106
2022/01/21 12:33:15.110 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63875 fPos=7.292 fActPosition=7.47 time=0.000011
2022/01/21 12:33:15.110 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=453 fPos=7.292 fActPosition=7.47 time=0.000006
2022/01/21 12:33:15.314 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63790 fPos=9.98 fActPosition=10.02 time=0.003624
Segment buffer empty!!!!!!!!!!!!!!!!!!!!!../grbl/grbl_stepper.c:st_go_idle:297
2022/01/21 12:33:15.314 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=552 fPos=10 fActPosition=10.44 time=0.000046
2022/01/21 12:33:15.514 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000010
2022/01/21 12:33:15.514 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=537 fPos=10 fActPosition=9.99 time=0.000007
2022/01/21 12:33:15.714 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63792 fPos=10 fActPosition=9.96 time=0.000011
2022/01/21 12:33:15.714 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=536 fPos=10 fActPosition=9.96 time=0.000007
2022/01/21 12:33:15.915 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000018
2022/01/21 12:33:15.915 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=537 fPos=10 fActPosition=9.99 time=0.000011
2022/01/21 12:33:16.115 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000018
2022/01/21 12:33:16.115 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=537 fPos=10 fActPosition=9.99 time=0.000080
2022/01/21 12:33:16.316 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000018
2022/01/21 12:33:16.316 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=537 fPos=10 fActPosition=9.99 time=0.000012
2022/01/21 12:33:16.516 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000011
2022/01/21 12:33:16.516 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=437 fPos=7 fActPosition=6.99 time=0.000006
../grbl/grbl_gcode.c:gc_execute_line:71:G1X10Y0F10
1
letter=G
value=1.000000
int_value=1
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=0.000000
int_value=0
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=F
value=10.000000
int_value=10
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_motion_control.c:mc_line:33
../grbl/grbl_gcode.c:gc_execute_line:71:G4P1
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=1.000000
int_value=1
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../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=10.000000
../grbl/grbl_motion_control.c:mc_dwell:200
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_wake_up:266
ok
ok
2022/01/21 12:33:16.716 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000009
2022/01/21 12:33:16.716 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=336 fPos=3.984 fActPosition=3.96 time=0.000054
2022/01/21 12:33:16.917 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000010
2022/01/21 12:33:16.917 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=236 fPos=0.984 fActPosition=0.96 time=0.000006
2022/01/21 12:33:17.117 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000010
2022/01/21 12:33:17.117 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=201 fPos=0 fActPosition=-0.09 time=0.000006
Segment buffer empty!!!!!!!!!!!!!!!!!!!!!../grbl/grbl_stepper.c:st_go_idle:297
2022/01/21 12:33:17.317 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000011
2022/01/21 12:33:17.317 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000006
2022/01/21 12:33:17.517 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63790 fPos=10 fActPosition=10.02 time=0.000011
2022/01/21 12:33:17.518 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000006
2022/01/21 12:33:17.718 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63790 fPos=10 fActPosition=10.02 time=0.000010
2022/01/21 12:33:17.718 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000007
2022/01/21 12:33:17.918 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=63791 fPos=10 fActPosition=9.99 time=0.000014
2022/01/21 12:33:17.918 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000008
2022/01/21 12:33:18.118 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63747 fPos=11.32 fActPosition=11.31 time=0.000011
../grbl/grbl_gcode.c:gc_execute_line:71:G1X50Y50F10
1
letter=G
value=1.000000
int_value=1
mantissa=0
axis_command=2
here!!
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=X
value=50.000000
int_value=50
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=Y
value=50.000000
int_value=50
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=F
value=10.000000
int_value=10
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_motion_control.c:mc_line:33
../grbl/grbl_gcode.c:gc_execute_line:71:G4P1
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=1.000000
int_value=1
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../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=10.000000
../grbl/grbl_motion_control.c:mc_dwell:200
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_wake_up:266
ok
ok
2022/01/21 12:33:18.118 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=259 fPos=1.664 fActPosition=1.65 time=0.000083
2022/01/21 12:33:18.319 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63666 fPos=13.732 fActPosition=13.74 time=0.000011
2022/01/21 12:33:18.319 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=360 fPos=4.664 fActPosition=4.68 time=0.000006
2022/01/21 12:33:18.519 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63586 fPos=16.132 fActPosition=16.14 time=0.000012
2022/01/21 12:33:18.519 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=460 fPos=7.664 fActPosition=7.68 time=0.000006
2022/01/21 12:33:18.719 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63505 fPos=18.544 fActPosition=18.57 time=0.000011
2022/01/21 12:33:18.720 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=561 fPos=10.68 fActPosition=10.71 time=0.000006
2022/01/21 12:33:18.920 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63425 fPos=20.944 fActPosition=20.97 time=0.000010
2022/01/21 12:33:18.920 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=660 fPos=13.68 fActPosition=13.68 time=0.000006
2022/01/21 12:33:19.120 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63346 fPos=23.344 fActPosition=23.34 time=0.000011
2022/01/21 12:33:19.120 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=760 fPos=16.68 fActPosition=16.68 time=0.000006
2022/01/21 12:33:19.320 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63265 fPos=25.756 fActPosition=25.77 time=0.000011
2022/01/21 12:33:19.321 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=861 fPos=19.696 fActPosition=19.71 time=0.000006
2022/01/21 12:33:19.521 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63185 fPos=28.156 fActPosition=28.17 time=0.000010
2022/01/21 12:33:19.521 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=961 fPos=22.696 fActPosition=22.71 time=0.000006
2022/01/21 12:33:19.721 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63105 fPos=30.556 fActPosition=30.57 time=0.000011
2022/01/21 12:33:19.721 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1061 fPos=25.696 fActPosition=25.71 time=0.000007
2022/01/21 12:33:19.921 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63025 fPos=32.968 fActPosition=32.97 time=0.000011
2022/01/21 12:33:19.922 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1161 fPos=28.708 fActPosition=28.71 time=0.000006
2022/01/21 12:33:20.122 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62945 fPos=35.368 fActPosition=35.37 time=0.000011
2022/01/21 12:33:20.122 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1261 fPos=31.708 fActPosition=31.71 time=0.000006
2022/01/21 12:33:20.322 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62865 fPos=37.768 fActPosition=37.77 time=0.000011
2022/01/21 12:33:20.322 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1361 fPos=34.708 fActPosition=34.71 time=0.000006
2022/01/21 12:33:20.522 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62784 fPos=40.18 fActPosition=40.2 time=0.000057
2022/01/21 12:33:20.523 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1462 fPos=37.724 fActPosition=37.74 time=0.000007
2022/01/21 12:33:20.723 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62704 fPos=42.58 fActPosition=42.6 time=0.000010
2022/01/21 12:33:20.723 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1562 fPos=40.724 fActPosition=40.74 time=0.000006
2022/01/21 12:33:20.923 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62625 fPos=44.98 fActPosition=44.97 time=0.000011
2022/01/21 12:33:20.923 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1662 fPos=43.74 fActPosition=43.74 time=0.000110
2022/01/21 12:33:21.124 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62544 fPos=47.392 fActPosition=47.4 time=0.000012
2022/01/21 12:33:21.124 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1762 fPos=46.74 fActPosition=46.74 time=0.000007
2022/01/21 12:33:21.324 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62464 fPos=49.792 fActPosition=49.8 time=0.000010
2022/01/21 12:33:21.324 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1862 fPos=49.74 fActPosition=49.74 time=0.000007
2022/01/21 12:33:21.524 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62457 fPos=50 fActPosition=50.01 time=0.000011
Segment buffer empty!!!!!!!!!!!!!!!!!!!!!../grbl/grbl_stepper.c:st_go_idle:297
2022/01/21 12:33:21.525 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1871 fPos=50 fActPosition=50.01 time=0.000007
2022/01/21 12:33:21.725 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=62458 fPos=50 fActPosition=49.98 time=0.000011
2022/01/21 12:33:21.725 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=1869 fPos=50 fActPosition=49.95 time=0.000006
2022/01/21 12:33:21.925 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=62458 fPos=50 fActPosition=49.98 time=0.000010
2022/01/21 12:33:21.925 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=1869 fPos=50 fActPosition=49.95 time=0.000006
2022/01/21 12:33:22.125 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=62458 fPos=50 fActPosition=49.98 time=0.000024
2022/01/21 12:33:22.125 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=1870 fPos=50 fActPosition=49.98 time=0.000006
2022/01/21 12:33:22.326 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=62458 fPos=50 fActPosition=49.98 time=0.000018
2022/01/21 12:33:22.326 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=1870 fPos=50 fActPosition=49.98 time=0.000009
2022/01/21 12:33:22.526 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62537 fPos=47.616 fActPosition=47.61 time=0.000020
../grbl/grbl_gcode.c:gc_execute_line:71:G1X0Y0F10
1
letter=G
value=1.000000
int_value=1
mantissa=0
axis_command=2
here!!
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=X
value=0.000000
int_value=0
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=Y
value=0.000000
int_value=0
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=F
value=10.000000
int_value=10
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_motion_control.c:mc_line:33
../grbl/grbl_stepper.c:st_next_block_index:673
../grbl/grbl_stepper.c:st_wake_up:266
ok
ok
2022/01/21 12:33:22.527 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1790 fPos=47.6 fActPosition=47.58 time=0.000261
2022/01/21 12:33:22.727 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62638 fPos=44.6 fActPosition=44.58 time=0.000019
2022/01/21 12:33:22.727 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1689 fPos=44.6 fActPosition=44.55 time=0.000012
2022/01/21 12:33:22.927 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62738 fPos=41.584 fActPosition=41.58 time=0.000039
2022/01/21 12:33:22.928 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1589 fPos=41.584 fActPosition=41.55 time=0.000011
2022/01/21 12:33:23.128 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62839 fPos=38.584 fActPosition=38.55 time=0.000018
2022/01/21 12:33:23.129 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1489 fPos=38.572 fActPosition=38.55 time=0.000458
2022/01/21 12:33:23.329 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=62939 fPos=35.572 fActPosition=35.55 time=0.000018
2022/01/21 12:33:23.329 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1388 fPos=35.556 fActPosition=35.52 time=0.000088
2022/01/21 12:33:23.530 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63039 fPos=32.556 fActPosition=32.55 time=0.000021
2022/01/21 12:33:23.530 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1288 fPos=32.556 fActPosition=32.52 time=0.000010
2022/01/21 12:33:23.730 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63140 fPos=29.54 fActPosition=29.52 time=0.000120
2022/01/21 12:33:23.731 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1188 fPos=29.54 fActPosition=29.52 time=0.000010
2022/01/21 12:33:23.931 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63240 fPos=26.54 fActPosition=26.52 time=0.000015
2022/01/21 12:33:23.931 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=1088 fPos=26.54 fActPosition=26.52 time=0.000008
2022/01/21 12:33:24.131 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63340 fPos=23.524 fActPosition=23.52 time=0.000012
2022/01/21 12:33:24.132 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=987 fPos=23.524 fActPosition=23.49 time=0.000007
2022/01/21 12:33:24.332 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63440 fPos=20.524 fActPosition=20.52 time=0.000012
2022/01/21 12:33:24.332 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=888 fPos=20.524 fActPosition=20.52 time=0.000007
2022/01/21 12:33:24.532 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63540 fPos=17.524 fActPosition=17.52 time=0.000011
2022/01/21 12:33:24.532 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=787 fPos=17.512 fActPosition=17.49 time=0.000136
2022/01/21 12:33:24.733 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63641 fPos=14.512 fActPosition=14.49 time=0.000012
2022/01/21 12:33:24.733 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=687 fPos=14.512 fActPosition=14.49 time=0.000006
2022/01/21 12:33:24.933 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63741 fPos=11.512 fActPosition=11.49 time=0.000018
2022/01/21 12:33:24.933 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=587 fPos=11.496 fActPosition=11.49 time=0.000203
2022/01/21 12:33:25.134 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63841 fPos=8.496 fActPosition=8.49 time=0.000020
2022/01/21 12:33:25.134 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=487 fPos=8.496 fActPosition=8.49 time=0.000011
2022/01/21 12:33:25.334 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=63942 fPos=5.48 fActPosition=5.46 time=0.000109
2022/01/21 12:33:25.335 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=386 fPos=5.48 fActPosition=5.46 time=0.000011
2022/01/21 12:33:25.535 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64042 fPos=2.48 fActPosition=2.46 time=0.000019
2022/01/21 12:33:25.535 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=286 fPos=2.464 fActPosition=2.46 time=0.000199
2022/01/21 12:33:25.736 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64138 fPos=0 fActPosition=-0.42 time=0.000019
Segment buffer empty!!!!!!!!!!!!!!!!!!!!!../grbl/grbl_stepper.c:st_go_idle:297
2022/01/21 12:33:25.736 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=190 fPos=0 fActPosition=-0.42 time=0.000013
2022/01/21 12:33:25.936 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64123 fPos=0 fActPosition=0.03 time=0.000097
2022/01/21 12:33:25.937 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000010
2022/01/21 12:33:26.137 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64123 fPos=0 fActPosition=0.03 time=0.000027
2022/01/21 12:33:26.137 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000013
2022/01/21 12:33:26.337 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64123 fPos=0 fActPosition=0.03 time=0.000015
2022/01/21 12:33:26.338 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=206 fPos=0 fActPosition=0.06 time=0.000010
2022/01/21 12:33:26.538 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64123 fPos=0 fActPosition=0.03 time=0.000018
2022/01/21 12:33:26.538 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000012
2022/01/21 12:33:26.739 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64123 fPos=0 fActPosition=0.03 time=0.000268
2022/01/21 12:33:26.739 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=205 fPos=0 fActPosition=0.03 time=0.000012
2022/01/21 12:33:26.939 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000021
2022/01/21 12:33:26.939 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000012
2022/01/21 12:33:27.139 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64123 fPos=0 fActPosition=0.03 time=0.000020
2022/01/21 12:33:27.140 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:27.340 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:27.340 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000006
2022/01/21 12:33:27.540 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:27.540 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000007
2022/01/21 12:33:27.740 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000011
2022/01/21 12:33:27.741 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000006
2022/01/21 12:33:27.941 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000020
2022/01/21 12:33:27.941 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009
2022/01/21 12:33:28.141 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000014
2022/01/21 12:33:28.141 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009
2022/01/21 12:33:28.341 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000015
2022/01/21 12:33:28.341 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000010
2022/01/21 12:33:28.542 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64124 fPos=0 fActPosition=0 time=0.000017
2022/01/21 12:33:28.542 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=204 fPos=0 fActPosition=0 time=0.000009