3332 lines
218 KiB
Plaintext
3332 lines
218 KiB
Plaintext
registerChannelProviderLocal firstTime true
|
|
#
|
|
# Start at "2022-W05-Feb02-1154-13-CET"
|
|
#
|
|
# Version information:
|
|
# European Spallation Source ERIC : iocsh.bash (3.4.0-PID-17664)
|
|
#
|
|
# --->--> 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/berryconda3/envs/ecmccomgui_py35/bin:/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-17664"
|
|
#
|
|
# Enable an exit subroutine for sotfioc
|
|
dbLoadRecords "/home/pi/epics/base-7.0.5/db/softIocExit.db" "IOC=REQMOD:raspberrypi-17664"
|
|
#
|
|
# Set E3_IOCSH_TOP for the absolute path where iocsh.bash is executed.
|
|
epicsEnvSet E3_IOCSH_TOP "/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh"
|
|
#
|
|
#
|
|
# Load require module, which has the version 3.4.0
|
|
#
|
|
dlload /home/pi/epics/base-7.0.5/require/3.4.0/lib/linux-arm/librequire.so
|
|
dbLoadDatabase /home/pi/epics/base-7.0.5/require/3.4.0/dbd/require.dbd
|
|
require_registerRecordDeviceDriver
|
|
Loading module info records for require
|
|
#
|
|
# Set E3_CMD_TOP for the absolute path where test.script exists
|
|
epicsEnvSet E3_CMD_TOP "/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh"
|
|
#
|
|
iocshLoad 'test.script',''
|
|
##############################################################################
|
|
## Example: Demo of ecmc grbl g-code plugin
|
|
## https://github.com/anderssandstrom/ecmc_plugin_grbl
|
|
## https://github.com/anderssandstrom/e3-ecmc_plugin_grbl
|
|
##
|
|
## The plugin exposes:
|
|
##
|
|
## Initiation:
|
|
epicsEnvSet("IOC" ,"IOC_TEST")
|
|
epicsEnvSet("ECMCCFG_INIT" ,"") #Only run startup once (auto at PSI, need call at ESS), variable set to "#" in startup.cmd
|
|
epicsEnvSet("SCRIPTEXEC" ,"iocshLoad")
|
|
require ecmccfg ruckig
|
|
Module ecmccfg version ruckig found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/
|
|
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/lib/linux-arm/libecmccfg.so
|
|
Loaded ecmccfg version ruckig
|
|
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/dbd/ecmccfg.dbd
|
|
Calling function ecmccfg_registerRecordDeviceDriver
|
|
Loading module info records for ecmccfg
|
|
# Epics Motor record driver that will be used:
|
|
epicsEnvShow(ECMC_MR_MODULE)
|
|
ECMC_MR_MODULE is not an environment variable.
|
|
# run module startup.cmd (only needed at ESS PSI auto call at require)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/startup.cmd, "IOC=IOC_TEST,ECMC_VER=ruckig"
|
|
#==============================================================================
|
|
# startup.cmd
|
|
on error halt
|
|
require ecmc "ruckig"
|
|
Module ecmc version ruckig found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/ruckig/
|
|
Module ecmc depends on asyn 4.41.0
|
|
Module asyn version 4.41.0 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/
|
|
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/lib/linux-arm/libasyn.so
|
|
Loaded asyn version 4.41.0
|
|
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/dbd/asyn.dbd
|
|
Calling function asyn_registerRecordDeviceDriver
|
|
Loading module info records for asyn
|
|
Module ecmc depends on exprtk 1.2.1
|
|
Module exprtk version 1.2.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/exprtk/1.2.1/
|
|
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/exprtk/1.2.1/lib/linux-arm/libexprtk.so
|
|
Loaded exprtk version 1.2.1
|
|
exprtk has no dbd file
|
|
Loading module info records for exprtk
|
|
Module ecmc depends on motor develop
|
|
Module motor version develop found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/develop/
|
|
Module motor depends on asyn 4.41.0
|
|
Module asyn version 4.41.0 already loaded
|
|
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/develop/lib/linux-arm/libmotor.so
|
|
Loaded motor version develop
|
|
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/develop/dbd/motor.dbd
|
|
Calling function motor_registerRecordDeviceDriver
|
|
Loading module info records for motor
|
|
Module ecmc depends on ruckig 1.0.0
|
|
Module ruckig version 1.0.0 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ruckig/1.0.0/
|
|
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ruckig/1.0.0/lib/linux-arm/libruckig.so
|
|
Loaded ruckig version 1.0.0
|
|
ruckig has no dbd file
|
|
Loading module info records for ruckig
|
|
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/ruckig/lib/linux-arm/libecmc.so
|
|
Loaded ecmc version ruckig
|
|
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/ruckig/dbd/ecmc.dbd
|
|
Calling function ecmc_registerRecordDeviceDriver
|
|
Loading module info records for ecmc
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'ecmcMotorRecord'='EthercatMC'", "require EthercatMC 3.0.2 # Using EthercatMC motor record support.","# Using ecmcMotorRecord motor record support.")
|
|
# Using ecmcMotorRecord motor record support.
|
|
epicsEnvUnset(ECMC_EXE_CMD)
|
|
epicsEnvSet("ECMC_CONFIG_ROOT", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/")
|
|
epicsEnvSet("ECMC_CONFIG_DB", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/db")
|
|
epicsEnvSet("SCRIPTEXEC", "iocshLoad")
|
|
epicsEnvSet("SM_PREFIX", "IOC_TEST:") # colon added since IOC is _not_ PREFIX
|
|
epicsEnvSet("ECMC_PROC_HOOK", "")
|
|
epicsEnvSet(ECMC_MODE, FULL)
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SUPPORT_MOTION, "'FULL'!='DAQ'","","# MODE == DAQ, DISABLING MOTION.")
|
|
epicsEnvShow(ECMC_SUPPORT_MOTION)
|
|
ECMC_SUPPORT_MOTION=
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_USE_MOTOR_RECORD, "'FULL'=='FULL'","","# MODE != FULL, DISABLING MOTOR RECORD.")
|
|
epicsEnvShow(ECMC_USE_MOTOR_RECORD)
|
|
ECMC_USE_MOTOR_RECORD=
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAll.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAll.cmd"
|
|
#==============================================================================
|
|
# initAll.cmd
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/init.cmd",1)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/init.cmd
|
|
#==============================================================================
|
|
# init.cmd
|
|
epicsEnvSet("ECMC_ASYN_TIMEOUT", 1) # Asyn timeout
|
|
epicsEnvSet("ECMC_ASYN_ADDR", 0) # Asyn Address
|
|
epicsEnvSet("ECMC_MOTOR_PORT", "NOT SET")
|
|
epicsEnvSet("ECMC_ASYN_PORT", "NOT SET")
|
|
epicsEnvSet("ECMC_PREFIX", "NOT SET")
|
|
epicsEnvSet("ECMC_GEN_EC_RECORDS", "NOT SET")
|
|
epicsEnvSet("ECMC_GEN_AX_RECORDS", "NOT SET")
|
|
epicsEnvSet("ECMC_EC_AXIS_HEALTH", "NOT SET")
|
|
epicsEnvSet("ECMC_PLC_SAMPLE_RATE_MS", "NOT SET")
|
|
epicsEnvSet("ECMC_TSE", -2)
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAxis.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/initAxis.cmd"
|
|
#==============================================================================
|
|
# initAxis.cmd
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_unset.cmd"
|
|
#==============================================================================
|
|
# ecmc_axis_unset.cmd
|
|
epicsEnvUnset(ECMC_AXISCONFIG)
|
|
epicsEnvUnset(ECMC_AXISFIELDINIT)
|
|
epicsEnvUnset(ECMC_PREC)
|
|
epicsEnvUnset(ECMC_EGU)
|
|
epicsEnvUnset(ECMC_DESC)
|
|
epicsEnvUnset(ECMC_R)
|
|
epicsEnvUnset(ECMC_MOTOR_NAME)
|
|
epicsEnvUnset(ECMC_EC_AXIS_HEALTH)
|
|
epicsEnvUnset(ECMC_MOD_RANGE)
|
|
epicsEnvUnset(ECMC_MOD_TYPE)
|
|
epicsEnvUnset(ECMC_EMERG_DECEL)
|
|
epicsEnvUnset(ECMC_VELO)
|
|
epicsEnvUnset(ECMC_ACCL)
|
|
epicsEnvUnset(ECMC_ACCS_EGU_PER_S2)
|
|
epicsEnvUnset(ECMC_HOME_VEL_TO)
|
|
epicsEnvUnset(ECMC_HOME_VEL_FRM)
|
|
epicsEnvUnset(ECMC_CNTRL_KP)
|
|
epicsEnvUnset(ECMC_CNTRL_KI)
|
|
epicsEnvUnset(ECMC_CNTRL_KD)
|
|
epicsEnvUnset(ECMC_CNTRL_KFF)
|
|
epicsEnvUnset(ECMC_EC_ENC_ACTPOS)
|
|
epicsEnvUnset(ECMC_EC_ENC_LATCHPOS)
|
|
epicsEnvUnset(ECMC_EC_ENC_LATCH_CONTROL)
|
|
epicsEnvUnset(ECMC_EC_ENC_LATCH_STATUS)
|
|
epicsEnvUnset(ECMC_HOME_LATCH_COUNT_OFFSET)
|
|
epicsEnvUnset(ECMC_ENC_SCALE_DENOM)
|
|
epicsEnvUnset(ECMC_ENC_SCALE_NUM)
|
|
epicsEnvUnset(ECMC_ENC_TYPE)
|
|
epicsEnvUnset(ECMC_ENC_BITS)
|
|
epicsEnvUnset(ECMC_ENC_ABS_BITS)
|
|
epicsEnvUnset(ECMC_ENC_ABS_OFFSET)
|
|
epicsEnvUnset(ECMC_ENC_VEL_FILTER_SIZE)
|
|
epicsEnvUnset(ECMC_ENC_POS_FILTER_SIZE)
|
|
epicsEnvUnset(ECMC_ENC_POS_FILTER_ENABLE)
|
|
epicsEnvUnset(ECMC_EC_ENC_RESET)
|
|
epicsEnvUnset(ECMC_EC_ENC_ALARM_0)
|
|
epicsEnvUnset(ECMC_EC_ENC_ALARM_1)
|
|
epicsEnvUnset(ECMC_EC_ENC_ALARM_2)
|
|
epicsEnvUnset(ECMC_EC_ENC_WARNING)
|
|
epicsEnvUnset(ECMC_EC_DRV_CONTROL)
|
|
epicsEnvUnset(ECMC_EC_DRV_STATUS)
|
|
epicsEnvUnset(ECMC_EC_DRV_VELOCITY)
|
|
epicsEnvUnset(ECMC_EC_DRV_BRAKE)
|
|
epicsEnvUnset(ECMC_EC_DRV_REDUCE_TORQUE)
|
|
epicsEnvUnset(ECMC_EC_DRV_RESET)
|
|
epicsEnvUnset(ECMC_EC_DRV_ALARM_0)
|
|
epicsEnvUnset(ECMC_EC_DRV_ALARM_1)
|
|
epicsEnvUnset(ECMC_EC_DRV_ALARM_2)
|
|
epicsEnvUnset(ECMC_EC_DRV_WARNING)
|
|
epicsEnvUnset(ECMC_DRV_SCALE_DENOM)
|
|
epicsEnvUnset(ECMC_DRV_SCALE_NUM)
|
|
epicsEnvUnset(ECMC_DRV_BRAKE_OPEN_DLY_TIME)
|
|
epicsEnvUnset(ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME)
|
|
epicsEnvUnset(ECMC_SOFT_LOW_LIM)
|
|
epicsEnvUnset(ECMC_DXLM_ENABLE)
|
|
epicsEnvUnset(ECMC_SOFT_HIGH_LIM)
|
|
epicsEnvUnset(ECMC_DXLM_ENABLE)
|
|
epicsEnvUnset(ECMC_EC_MON_LOWLIM)
|
|
epicsEnvUnset(ECMC_EC_MON_HIGHLIM)
|
|
epicsEnvUnset(ECMC_EC_MON_HOME_SWITCH)
|
|
epicsEnvUnset(ECMC_EC_MON_EXT_INTERLOCK)
|
|
epicsEnvUnset(ECMC_MON_AT_TARGET_TOL)
|
|
epicsEnvUnset(ECMC_MON_AT_TARGET_TIME)
|
|
epicsEnvUnset(ECMC_MON_AT_TARGET_ENA)
|
|
epicsEnvUnset(ECMC_MON_LAG_MON_TOL)
|
|
epicsEnvUnset(ECMC_MON_LAG_MON_TIME)
|
|
epicsEnvUnset(ECMC_MON_LAG_MON_ENA)
|
|
epicsEnvUnset(ECMC_MON_VELO_MAX)
|
|
epicsEnvUnset(ECMC_MON_VELO_MAX_ENA)
|
|
epicsEnvUnset(ECMC_MON_VELO_MAX_DRV_TIME)
|
|
epicsEnvUnset(ECMC_MON_VELO_MAX_TRAJ_TIME)
|
|
epicsEnvUnset(ECMC_JOG_VEL)
|
|
epicsEnvUnset(ECMC_JAR)
|
|
epicsEnvUnset(ECMC_HOME_PROC)
|
|
epicsEnvUnset(ECMC_HOME_POS)
|
|
epicsEnvUnset(ECMC_HOME_ACC)
|
|
epicsEnvUnset(ECMC_HOME_DEC)
|
|
epicsEnvUnset(ECMC_DRV_TYPE)
|
|
epicsEnvUnset(ECMC_VELO)
|
|
epicsEnvUnset(ECMC_SOFT_LOW_LIM)
|
|
epicsEnvUnset(ECMC_SOFT_HIGH_LIM)
|
|
epicsEnvUnset(ECMC_HOME_POS_MOVE_ENA)
|
|
epicsEnvUnset(ECMC_HOME_POS_MOVE_TARG_POS)
|
|
epicsEnvUnset(ECMC_TRAJ_TYPE)
|
|
epicsEnvUnset(ECMC_JERK)
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmc_axis_sync_unset.cmd"
|
|
#==============================================================================
|
|
# ecmc_axis_sync_unset.cmd
|
|
epicsEnvUnset(ECMC_CMD_FRM_OTHER_PLC_ENABLE)
|
|
epicsEnvUnset(ECMC_CMD_AXIS_PLC_ENABLE)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_1)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_2)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_3)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_4)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_5)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_6)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_7)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_8)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_9)
|
|
epicsEnvUnset(ECMC_AXIS_EXPR_LINE_10)
|
|
epicsEnvUnset(ECMC_ENC_VELO_FILT_SIZE)
|
|
epicsEnvUnset(ECMC_ENC_VELO_FILT_ENABLE)
|
|
epicsEnvUnset(ECMC_ENC_SOURCE)
|
|
epicsEnvUnset(ECMC_TRAJ_VELO_FILT_SIZE)
|
|
epicsEnvUnset(ECMC_TRAJ_VELO_FILT_ENABLE)
|
|
epicsEnvUnset(ECMC_TRAJ_SOURCE)
|
|
epicsEnvSet("ECMC_EGU", "mm")
|
|
epicsEnvSet("ECMC_PREC", 3)
|
|
epicsEnvSet("ECMC_AXISFIELDINI2022/02/02 11:54:14.214
|
|
ECMC Initializes.............
|
|
2022/02/02 11:54:14.215 ESS Open Source EtherCAT Motion Control Epics Module2022/02/02 11:54:14.215
|
|
Mode: Configuration
|
|
2022/02/02 11:54:14.215 OK
|
|
2022/02/02 11:54:14.215 OK
|
|
2022/02/02 11:54:14.216 OK
|
|
2022/02/02 11:54:14.218 OK
|
|
2022/02/02 11:54:14.239 OK
|
|
2022/02/02 11:54:14.239 OK
|
|
2022/02/02 11:54:14.239 OK
|
|
T", "") # Extra field init to motor record
|
|
epicsEnvSet("ECMC_AXISCONFIG", "") # Extra parameters to driver
|
|
############################################################
|
|
############# ASYN Configuration:
|
|
epicsEnvSet("ECMC_MOTOR_PORT" "MCU1")
|
|
epicsEnvSet("ECMC_ASYN_PORT" "MC_CPU1")
|
|
epicsEnvSet("ECMC_PREFIX" "IOC_TEST:")
|
|
ecmcAsynPortDriverConfigure(MC_CPU1,1000,0,0,100)
|
|
ecmcAsynPortDriverConfigure: portName = MC_CPU1, 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:
|
|
# Hardware for X and Y in ESS crate
|
|
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)
|
|
iocshLoad2022/02/02 11:54:14.241 OK
|
|
2022/02/02 11:54:14.242 OK
|
|
2022/02/02 11:54:14.249 OK
|
|
2022/02/02 11:54:14.250 OK
|
|
2022/02/02 11:54:14.250 OK
|
|
2022/02/02 11:54:14.251 OK
|
|
"/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEK1100.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EK1100")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x044c2c52")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcSlaveVerify(0,0,0x2,0x044c2c52)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ")
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
ecmcConfigOrDie "Cfg.EcAddSlave(0,0,0x2,0x044c2c52)"
|
|
# deduce what the prefix should be
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=0,HWTYPE=EK1100"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "0","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s000")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s000-")
|
|
epicsEnvUnset(sid)
|
|
epicsEnvUnset(mid)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEK1100.substitutions,ECMC_P=IOC_TEST:m0s000-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEK1100.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEK1100.substitutions,"ECMC_P=IOC_TEST:m0s000-,ECMC_G=IOC_TEST:m0s000,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=0,HWTYPE=EK1100,T_SMP_MS=10,TSE=-2,NELM=1")
|
|
epicsEnvUnset(DEFAULT_SUBS)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s000-,ECMC_G=IOC_TEST:m0s000"
|
|
#==============================================================================
|
|
# applyTemplate.cmd
|
|
ecmcFileExist(ecmcEcSlave.template,1,1)
|
|
dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s000-,ECMC_G=IOC_TEST:m0s000,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=0,HWTYPE=EK1100,T_SMP_MS=10,TSE=-2,")
|
|
epicsEnvUnset(DEFAULT_SLAVE_PVS)
|
|
# increment SLAVE_ID
|
|
ecmcEpicsEnvSetCalc("SLAVE_ID", "0+1","%d")
|
|
#Configure EL1018 digital input terminal
|
|
ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "0+1")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=1, HW_DESC=EL1018"
|
|
#==============================================================================
|
|
# addSlave.cmd
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "1")
|
|
epicsEnvSet("HW_DESC", "EL1018")
|
|
epicsEnvSet("P_SCRIPT", "mXsXXX")
|
|
# add ${HW_DESC} to the bus at position ${SLAVE_ID}
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL1018.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL1018.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EL1018")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x03fa3052")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcSlaveVerify(0,1,0x2,0x03fa3052)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ")
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX1008.cmd
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a00,0x6000,0x1,B1,binaryInput01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a01,0x6010,0x1,B1,binaryInput02)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a02,0x6020,0x1,B1,binaryInput03)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2022/02/02 11:54:14.251 OK
|
|
2022/02/02 11:54:14.251 OK
|
|
2022/02/02 11:54:14.251 OK
|
|
2022/02/02 11:54:14.251 OK
|
|
2022/02/02 11:54:14.251 OK
|
|
2022/02/02 11:54:14.259 OK
|
|
2022/02/02 11:54:14.261 OK
|
|
2022/02/02 11:54:14.261 OK
|
|
2022/02/02 11:54:14.261 OK
|
|
2022/02/02 11:54:14.261 OK
|
|
2022/02/02 11:54:14.261 OK
|
|
2022/02/02 11:54:14.262 OK
|
|
2,0x03fa3052,2,0,0x1a03,0x6030,0x1,B1,binaryInput04)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a04,0x6040,0x1,B1,binaryInput05)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a05,0x6050,0x1,B1,binaryInput06)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a06,0x6060,0x1,B1,binaryInput07)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(1,0x2,0x03fa3052,2,0,0x1a07,0x6070,0x1,B1,binaryInput08)"
|
|
# deduce what the prefix should be
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=1,HWTYPE=EL1018"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "1","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s001")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s001-")
|
|
epicsEnvUnset(sid)
|
|
epicsEnvUnset(mid)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL1018.substitutions,ECMC_P=IOC_TEST:m0s001-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEL1018.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEL1018.substitutions,"ECMC_P=IOC_TEST:m0s001-,ECMC_G=IOC_TEST:m0s001,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=1,HWTYPE=EL1018,T_SMP_MS=10,TSE=-2,NELM=1")
|
|
epicsEnvUnset(DEFAULT_SUBS)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s001-,ECMC_G=IOC_TEST:m0s001"
|
|
#==============================================================================
|
|
# applyTemplate.cmd
|
|
ecmcFileExist(ecmcEcSlave.template,1,1)
|
|
dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s001-,ECMC_G=IOC_TEST:m0s001,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=1,HWTYPE=EL1018,T_SMP_MS=10,TSE=-2,")
|
|
epicsEnvUnset(DEFAULT_SLAVE_PVS)
|
|
# increment SLAVE_ID
|
|
ecmcEpicsEnvSetCalc("SLAVE_ID", "1+1","%d")
|
|
#Configure EL2808 digital output terminal
|
|
ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "1+1")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=2, HW_DESC=EL2808"
|
|
#==============================================================================
|
|
# addSlave.cmd
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "2")
|
|
epicsEnvSet("HW_DESC", "EL2808")
|
|
epicsEnvSet("P_SCRIPT", "mXsXXX")
|
|
# add ${HW_DESC} to the bus at position ${SLAVE_ID}
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL2808.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL2808.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EL2808")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x0af83052")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcSlaveVerify(0,2,0x2,0x0af83052)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ")
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX2008.cmd
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1600,0x7000,0x1,B1,binaryOutput01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1601,0x7010,0x1,B1,binaryOutput02)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1602,0x7020,0x1,B1,binaryOutput03)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1603,0x7030,0x1,B1,binaryOutput04)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1604,0x7040,0x1,B1,binaryOutput05)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1605,0x7050,0x1,B1,binaryOutput06)"
|
|
ecmc2022/02/02 11:54:14.262 OK
|
|
2022/02/02 11:54:14.262 OK
|
|
2022/02/02 11:54:14.272 OK
|
|
2022/02/02 11:54:14.342 OK
|
|
2022/02/02 11:54:14.422 14385
|
|
2022/02/02 11:54:14.423 OK
|
|
2022/02/02 11:54:14.423 OK
|
|
2022/02/02 11:54:14.423 OK
|
|
2022/02/02 11:54:14.423 OK
|
|
ConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1606,0x7060,0x1,B1,binaryOutput07)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(2,0x2,0x0af83052,1,0,0x1607,0x7070,0x1,B1,binaryOutput08)"
|
|
# deduce what the prefix should be
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=2,HWTYPE=EL2808"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "2","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s002")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s002-")
|
|
epicsEnvUnset(sid)
|
|
epicsEnvUnset(mid)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL2808.substitutions,ECMC_P=IOC_TEST:m0s002-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEL2808.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEL2808.substitutions,"ECMC_P=IOC_TEST:m0s002-,ECMC_G=IOC_TEST:m0s002,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=2,HWTYPE=EL2808,T_SMP_MS=10,TSE=-2,NELM=1")
|
|
epicsEnvUnset(DEFAULT_SUBS)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s002-,ECMC_G=IOC_TEST:m0s002"
|
|
#==============================================================================
|
|
# applyTemplate.cmd
|
|
ecmcFileExist(ecmcEcSlave.template,1,1)
|
|
dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s002-,ECMC_G=IOC_TEST:m0s002,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=2,HWTYPE=EL2808,T_SMP_MS=10,TSE=-2,")
|
|
epicsEnvUnset(DEFAULT_SLAVE_PVS)
|
|
# increment SLAVE_ID
|
|
ecmcEpicsEnvSetCalc("SLAVE_ID", "2+1","%d")
|
|
# Save the slave number for later
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM_DIG_OUT", "2")
|
|
#Configure EL5101 Incremental Encoder Interface
|
|
ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "2+1")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=3, HW_DESC=EL5101"
|
|
#==============================================================================
|
|
# addSlave.cmd
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "3")
|
|
epicsEnvSet("HW_DESC", "EL5101")
|
|
epicsEnvSet("P_SCRIPT", "mXsXXX")
|
|
# add ${HW_DESC} to the bus at position ${SLAVE_ID}
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL5101.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL5101.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EL5101")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x13ed3052")
|
|
ecmcFileExist(/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd,1)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd "RESET=true"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcSlaveVerify(0,3,0x2,0x13ed3052)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(3,0x1011,0x1,1684107116,4)"
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
ecmcConfig "EcReadSdo(3,0x100a,0x0,2)"
|
|
ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "14385", "0x%04x")
|
|
# Firmware version: 0x3831
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,1,2,0x1600,0x7000,0x01,8,encoderControl01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,1,2,0x1600,0x7000,0x02,16,encoderValue01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x00,16,encoderStatus01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x10,16,positionActual01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(3,0x2,0x13ed3052,2,3,0x1a03,0x6010,0x20,16,encoderLatchPostion02022/02/02 11:54:14.423 OK
|
|
2022/02/02 11:54:14.431 OK
|
|
2022/02/02 11:54:14.512 OK
|
|
2022/02/02 11:54:14.592 14385
|
|
2022/02/02 11:54:14.593 OK
|
|
2022/02/02 11:54:14.593 OK
|
|
2022/02/02 11:54:14.593 OK
|
|
2022/02/02 11:54:14.593 OK
|
|
2022/02/02 11:54:14.593 OK
|
|
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=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,HWTYP2022/02/02 11:54:14.601 OK
|
|
2022/02/02 11:54:14.602 OK
|
|
2022/02/02 11:54:14.602 OK
|
|
E=EL5101"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "4","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s004")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s004-")
|
|
epicsEnvUnset(sid)
|
|
epicsEnvUnset(mid)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL5101.substitutions,ECMC_P=IOC_TEST:m0s004-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEL5101.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEL5101.substitutions,"ECMC_P=IOC_TEST:m0s004-,ECMC_G=IOC_TEST:m0s004,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=4,HWTYPE=EL5101,T_SMP_MS=10,TSE=-2,NELM=1")
|
|
epicsEnvUnset(DEFAULT_SUBS)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s004-,ECMC_G=IOC_TEST:m0s004"
|
|
#==============================================================================
|
|
# applyTemplate.cmd
|
|
ecmcFileExist(ecmcEcSlave.template,1,1)
|
|
dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s004-,ECMC_G=IOC_TEST:m0s004,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=4,HWTYPE=EL5101,T_SMP_MS=10,TSE=-2,")
|
|
epicsEnvUnset(DEFAULT_SLAVE_PVS)
|
|
# increment SLAVE_ID
|
|
ecmcEpicsEnvSetCalc("SLAVE_ID", "4+1","%d")
|
|
# Configure EL9505 Power supply terminal 5V
|
|
ecmcEpicsEnvSetCalc(ECMC_EC_SLAVE_NUM, "4+1")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=5, HW_DESC=EL9505"
|
|
#==============================================================================
|
|
# addSlave.cmd
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "5")
|
|
epicsEnvSet("HW_DESC", "EL9505")
|
|
epicsEnvSet("P_SCRIPT", "mXsXXX")
|
|
# add ${HW_DESC} to the bus at position ${SLAVE_ID}
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL9505.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL9505.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EL9505")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x25213052")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcSlaveVerify(0,5,0x2,0x25213052)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "0>0", "","#- ")
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(5,0x2,0x25213052,2,0,0x1a00,0x6000,0x1,1,powerOk01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(5,0x2,0x25213052,2,0,0x1a00,0x6000,0x2,1,overload01)"
|
|
# deduce what the prefix should be
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=5,HWTYPE=EL9505"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "5","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s005")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s005-")
|
|
epicsEnvUnset(sid)
|
|
epicsEnvUnset(mid)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL9505.substitutions,ECMC_P=IOC_TEST:m0s005-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEL9505.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEL9505.substitutions,"ECMC_P=IOC_TEST:m0s005-,ECMC_G=IOC_TEST:m0s005,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=5,HWTYPE=EL9505,T_SMP_MS=10,TSE=-2,NELM=1")
|
|
epi2022/02/02 11:54:14.610 OK
|
|
2022/02/02 11:54:14.611 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
2022/02/02 11:54:14.612 OK
|
|
csEnvUnset(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: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=ecmcEc2022/02/02 11:54:14.622 OK
|
|
2022/02/02 11:54:14.732 OK
|
|
2022/02/02 11:54:14.842 12848
|
|
2022/02/02 11:54:14.844 OK
|
|
2022/02/02 11:54:14.844 OK
|
|
2022/02/02 11:54:14.845 OK
|
|
2022/02/02 11:54:14.845 OK
|
|
2022/02/02 11:54:14.846 OK
|
|
2022/02/02 11:54:14.846 OK
|
|
2022/02/02 11:54:14.846 OK
|
|
2022/02/02 11:54:14.846 OK
|
|
2022/02/02 11:54:14.846 OK
|
|
2022/02/02 11:54:14.847 OK
|
|
2022/02/02 11:54:14.847 OK
|
|
2022/02/02 11:54:14.847 OK
|
|
Slave.template,ECMC_P=IOC_TEST:m0s006-,ECMC_G=IOC_TEST:m0s006"
|
|
#==============================================================================
|
|
# 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", 2022/02/02 11:54:14.866 OK
|
|
2022/02/02 11:54:14.867 OK
|
|
2022/02/02 11:54:14.867 OK
|
|
2022/02/02 11:54:14.867 OK
|
|
2022/02/02 11:54:14.867 OK
|
|
2022/02/02 11:54:14.867 OK
|
|
"IOC_TEST:m0s008")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s008-")
|
|
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: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_DE2022/02/02 11:54:14.872 OK
|
|
2022/02/02 11:54:15.002 OK
|
|
2022/02/02 11:54:15.102 12848
|
|
2022/02/02 11:54:15.104 OK
|
|
2022/02/02 11:54:15.104 OK
|
|
2022/02/02 11:54:15.105 OK
|
|
2022/02/02 11:54:15.105 OK
|
|
2022/02/02 11:54:15.105 OK
|
|
2022/02/02 11:54:15.106 OK
|
|
2022/02/02 11:54:15.106 OK
|
|
2022/02/02 11:54:15.106 OK
|
|
2022/02/02 11:54:15.106 OK
|
|
2022/02/02 11:54:15.106 OK
|
|
2022/02/02 11:54:15.107 OK
|
|
2022/02/02 11:54:15.107 OK
|
|
SC=EL7037, NELM=1"
|
|
#==============================================================================
|
|
# addSlave.cmd
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "9")
|
|
epicsEnvSet("HW_DESC", "EL7037")
|
|
epicsEnvSet("P_SCRIPT", "mXsXXX")
|
|
# add ${HW_DESC} to the bus at position ${SLAVE_ID}
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7037.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EL7037")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x1b7d3052")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/slaveVerify.cmd "RESET=true"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_VERIFY, "0==0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcSlaveVerify(0,9,0x2,0x1b7d3052)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(9,0x1011,0x1,1684107116,4)"
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
ecmcConfig "EcReadSdo(9,0x100a,0x0,2)"
|
|
ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "12848", "0x%04x")
|
|
# Firmware version: 0x3230
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX70XX.cmd
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1600,0x7000,0x01,16,encoderControl01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1600,0x7000,0x11,16,encoderValue01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1602,0x7010,0x1,16,driveControl01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,1,2,0x1604,0x7010,0x21,16,1,velocitySetpoint01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x0,16,encoderStatus01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x11,16,positionActual01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a00,0x6000,0x12,16,encoderLatchPostion01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(9,0x2,0x1b7d3052,2,3,0x1a03,0x6010,0x1,16,driveStatus01)"
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0x5,1,1)"
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0xA,1,1)"
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0x8,1,1)"
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(9,0x8012,0x9,0,1)"
|
|
# deduce what the prefix should be
|
|
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcmXsXXX.cmd" "MASTER_ID=0,SLAVE_POS=9,HWTYPE=EL7037"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "9","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s009")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s009-")
|
|
epicsEnvUnset(sid)
|
|
epicsEnvUnset(mid)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SUBS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySubstitutions.cmd" "SUBST_FILE=ecmcEL7037.substitutions,ECMC_P=IOC_TEST:m0s009-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEL7037.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEL7037.substitutions,"ECMC_P=IOC_TEST:m0s009-,ECMC_G=IOC_TEST:m0s009,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=9,HWTYPE=EL7037,T_SMP_MS=10,TSE=-2,NELM=1")
|
|
epicsEnvUnset(DEFAULT_SUBS)
|
|
ecmcEpicsEnvSetCalcTernary(DEFAULT_SLAVE_PVS, "True", "","#- ")
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applyTemplate.cmd" "TEMPLATE_FILE=ecmcEcSlave.template,ECMC_P=IOC_TEST:m0s009-,ECMC_G=IOC_TEST:m0s009"
|
|
#==============================================================================
|
|
# applyTemplate.cmd
|
|
ecmcFileExist(ecmcEcSlave.template,1,1)
|
|
dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s009-,ECMC_G=IOC_TEST:m0s009,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=9,HWTYPE=EL7037,T_SMP_MS=10,TSE=-2,")
|
|
epicsEnvUnset(DEFAULT_SLAVE_PVS)
|
|
# increment SLAVE_ID
|
|
ecm2022/02/02 11:54:15.126 OK
|
|
2022/02/02 11:54:15.126 OK
|
|
2022/02/02 11:54:15.126 OK
|
|
2022/02/02 11:54:15.126 OK
|
|
2022/02/02 11:54:15.126 OK
|
|
2022/02/02 11:54:15.126 OK
|
|
2022/02/02 11:54:15.127 OK
|
|
2022/02/02 11:54:15.130 OK
|
|
2022/02/02 11:54:15.342 OK
|
|
2022/02/02 11:54:15.452 14385
|
|
2022/02/02 11:54:15.542 OK
|
|
2022/02/02 11:54:15.632 OK
|
|
2022/02/02 11:54:15.712 OK
|
|
2022/02/02 11:54:15.792 OK
|
|
2022/02/02 11:54:15.872 OK
|
|
cEpicsEnvSetCalc("SLAVE_ID", "9+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(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)"
|
|
# Use EL7211 as spindle
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "11")
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM_SPINDLE", "11")
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/addSlave.cmd, "SLAVE_ID=11, HW_DESC=EL7211-0010"
|
|
#==============================================================================
|
|
# addSlave.cmd
|
|
epicsEnvSet("ECMC_EC_SLAVE_NUM", "11")
|
|
epicsEnvSet("HW_DESC", "EL7211-0010")
|
|
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/ecmcEL7211-0010.cmd",1)
|
|
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEL7211-0010.cmd" "NELM=1"
|
|
epicsEnvSet("ECMC_EC_HWTYPE" "EL7211-0010")
|
|
epicsEnvSet("ECMC_EC_VENDOR_ID" "0x2")
|
|
epicsEnvSet("ECMC_EC_PRODUCT_ID" "0x1c2b3052")
|
|
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,11,0x2,0x1c2b3052)"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_SLAVE_RESET, "true>0", "","#- ")
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(11,0x1011,0x1,1684107116,4)"
|
|
epicsEnvSet(ECMC_EC_SLAVE_FW, "0x0000")
|
|
ecmcConfig "EcReadSdo(11,0x100a,0x0,2)"
|
|
ecmcEpicsEnvSetCalc("ECMC_EC_SLAVE_FW", "14385", "0x%04x")
|
|
# Firmware version: 0x3831
|
|
epicsEnvUnset(ECMC_SLAVE_VERIFY)
|
|
epicsEnvUnset(ECMC_COMMENT)
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(11,0x8008,0x1,1,1)"
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(11,0x8008,0x2,1,1)"
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(11,0x8008,0x3,1,1)"
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(11,0x8010,0x14,50,4)"
|
|
ecmcConfigOrDie "Cfg.EcWriteSdo(11,0x8010,0x15,50,4)"
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/ecmcEX72XX_CSV.cmd
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(11,0x2,0x1c2b3052022/02/02 11:54:15.873 OK
|
|
2022/02/02 11:54:15.873 OK
|
|
2022/02/02 11:54:15.874 OK
|
|
2022/02/02 11:54:15.874 OK
|
|
2022/02/02 11:54:15.874 OK
|
|
2022/02/02 11:54:15.877 OK
|
|
2022/02/02 11:54:15.877 OK
|
|
2022/02/02 11:54:15.879 OK
|
|
2022/02/02 11:54:15.879 OK
|
|
2022/02/02 11:54:15.880 OK
|
|
2,1,2,0x1600,0x7010,0x01,U16,driveControl01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(11,0x2,0x1c2b3052,1,2,0x1601,0x7010,0x06,S32,velocitySetpoint01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(11,0x2,0x1c2b3052,2,3,0x1a00,0x6000,0x11,U32,positionActual01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryDT(11,0x2,0x1c2b3052,2,3,0x1a01,0x6010,0x01,U16,driveStatus01)"
|
|
ecmcConfigOrDie "Cfg.EcAddEntryComplete(11,0x2,0x1c2b3052,2,3,0x1a02,0x6010,0x07,32,velocityActual01)"
|
|
ecmcEpicsEnvSetCalc("ECMC_TEMP_PERIOD_NANO_SECS",1000/1000*1E6)
|
|
ecmcEpicsEnvSetCalc("ECMC_TEMP_PERIOD_NANO_SECS_HALF",1000000/2)
|
|
ecmcConfigOrDie "Cfg.EcSlaveConfigDC(11,0x700,1000000,500000,0,0)"
|
|
# Peak current (to be overwritten by motor config)
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x11,1000,4)"
|
|
ecmcEpicsEnvSetCalc("ECMC_TEMP_WHATCHDOG_1",1000/1000*1000)
|
|
ecmcEpicsEnvSetCalc("ECMC_TEMP_WHATCHDOG_2",1000*10)
|
|
ecmcConfigOrDie "Cfg.EcSlaveConfigWatchDog(11,1000,10000)"
|
|
# NOTE: Sometimes the EL7211-0010 will not go to op with the following error in /var/log/messages:
|
|
# Sep 8 09:54:21 mcag-epics4 kernel: EtherCAT ERROR 0-40: SDO download 0x1C32:01 (2 bytes) aborted.
|
|
# Then if the below command is not executed the slave will go online abnd work. Could be related to firmware versions.. Also see below 0x1c33
|
|
#ecmcConfigOrDie "Cfg.EcAddSdo(${ECMC_EC_SLAVE_NUM},0x1C32,0x1,3,2)"
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x1C32,0x2,1000000,4)"
|
|
# NOTE: Sometimes the EL7211-0010 will not go to op with the following error in /var/log/messages:
|
|
# Sep 8 09:54:21 mcag-epics4 kernel: EtherCAT ERROR 0-40: SDO download 0x1C33:01 (2 bytes) aborted.
|
|
# Then if the below command is not executed the slave will go online abnd work. Could be related to firmware versions.. Also see above 0x1c32
|
|
#ecmcConfigOrDie "Cfg.EcAddSdo(${ECMC_EC_SLAVE_NUM},0x1C33,0x1,3,2)"
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x1C33,0x2,1000000,4)"
|
|
epicsEnvUnset(ECMC_TEMP_PERIOD_NANO_SECS)
|
|
epicsEnvUnset(ECMC_TEMP_PERIOD_NANO_SECS_HALF)
|
|
epicsEnvUnset(ECMC_TEMP_WHATCHDOG_1)
|
|
epicsEnvUnset(ECMC_TEMP_WHATCHDOG_2)
|
|
# 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=11,HWTYPE=EL7211-0010"
|
|
#==============================================================================
|
|
# ecmcmXsXXX.cmd
|
|
ecmcEpicsEnvSetCalc("sid", "11","%03d")
|
|
ecmcEpicsEnvSetCalc("mid", "0","%01d")
|
|
epicsEnvSet("ECMC_G", "IOC_TEST:m0s011")
|
|
epicsEnvSet("ECMC_P", "IOC_TEST:m0s011-")
|
|
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=ecmcEL7211-0010.substitutions,ECMC_P=IOC_TEST:m0s011-"
|
|
#==============================================================================
|
|
# applySubstitutions.cmd
|
|
ecmcFileExist(ecmcEL7211-0010.substitutions,1,1)
|
|
dbLoadTemplate(ecmcEL7211-0010.substitutions,"ECMC_P=IOC_TEST:m0s011-,ECMC_G=IOC_TEST:m0s011,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=11,HWTYPE=EL7211-0010,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:m0s011-,ECMC_G=IOC_TEST:m0s011"
|
|
#==============================================================================
|
|
# applyTemplate.cmd
|
|
ecmcFileExist(ecmcEcSlave.template,1,1)
|
|
dbLoadRecords("ecmcEcSlave.template", "ECMC_P=IOC_TEST:m0s011-,ECMC_G=IOC_TEST:m0s011,PORT=MC_CPU1,ADDR=0,TIMEOUT=1,MASTER_ID=0,SLAVE_POS=11,HWTYPE=EL7211-0010,T_SMP_MS=10,TSE=-2,")
|
|
epicsEnvUnset(DEFAULT_SLAVE_PVS)
|
|
# increment SLAVE_ID
|
|
ecmcEpicsEnvSetCalc("SLAVE_ID", "11+1","%d")
|
|
# Apply local 24V config (local here)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/applySlaveConfig.cmd, "LOCAL_CONFIG=./ecmcEL7211-0010-Motor-Beckhoff-AM8121-0F00-0000_24V.cmd"
|
|
#======================2022/02/02 11:54:15.892 OK
|
|
2022/02/02 11:54:15.892 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.893 OK
|
|
2022/02/02 11:54:15.894 OK
|
|
2022/02/02 11:54:15.894 OK
|
|
2022/02/02 11:54:15.894 OK
|
|
2022/02/02 11:54:15.894 OK
|
|
2022/02/02 11:54:15.894 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.895 OK
|
|
2022/02/02 11:54:15.896 OK
|
|
2022/02/02 11:54:15.896 OK
|
|
=========================================================
|
|
# applySlaveConfig.cmd
|
|
# Arguments: CONFIG _or_ LOCAL_CONFIG
|
|
epicsEnvSet("ECMC_CONFIG_FN", "./ecmcEL7211-0010-Motor-Beckhoff-AM8121-0F00-0000_24V.cmd")
|
|
ecmcFileExist("./ecmcEL7211-0010-Motor-Beckhoff-AM8121-0F00-0000_24V.cmd",1)
|
|
iocshLoad ./ecmcEL7211-0010-Motor-Beckhoff-AM8121-0F00-0000_24V.cmd
|
|
############################################################
|
|
############# Parmetrization of EL7211-0010 for motor AM8121-F00-0000
|
|
#
|
|
# Note: For important parameters see TwinCAT CoE startup list for the
|
|
# motor terminal configuration.
|
|
#Nominal voltage = 48V
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8010,0x19,24000,4)"
|
|
#Motor max current = 6A
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x11,6000,4)"
|
|
#Motor rated current = 4A
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x12,4000,4)"
|
|
#Motor pole pairs = 3
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x13,3,1)"
|
|
#Torque contstant = 125
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x16,125,4)"
|
|
#Winding inductance = 28
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x19,28,2)"
|
|
#Rotor moment of inertia = 134
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x18,134,4)"
|
|
#Commutation offset = 270
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x15,270,2)"
|
|
#Motor thermal time constant = 564
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x2d,564,2)"
|
|
#Motor speed limitation = 3378
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8011,0x1b,3378,4)"
|
|
#Current loop proportianal gain = 332
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8010,0x13,332,2)"
|
|
#Current loop integral time = 5
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8010,0x12,5,2)"
|
|
#Velocity loop proportianal gain = 95
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8010,0x15,95,4)"
|
|
#Velocity loop integral time = 150
|
|
ecmcConfigOrDie "Cfg.EcAddSdo(11,0x8010,0x14,150,4)"
|
|
#Apply hardware configuration (wrong here, should only be done once (also done in ecmcMCU1021_coupler), but will work)
|
|
ecmcConfigOrDie "Cfg.EcApplyConfig(1)"
|
|
#Does not work. Known issue DC-patch for etherlab manster needed...
|
|
#ecmcConfigOrDie "Cfg.EcSelectReferenceDC(0,$(ECMC_EC_SLAVE_NUM))"
|
|
# 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: X-axis
|
|
#
|
|
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_AXIS_NO", "1")
|
|
epicsEnvSet("ECMC_DESC", "MCU1021 Lower Axis (1)")
|
|
epicsEnvSet("ECMC_EGU", "mm") # Motor Record Unit
|
|
epicsEnvSet("ECMC_PREC", "3") # Motor Record Precision
|
|
epicsEnvSet("ECMC_AXISCONFIG", "") # Extra parameters to driver
|
|
epicsEnvSet("ECMC_EC_AXIS_HEALTH", "") # Entry for axis health output (example: ec0.s1.binaryOutput01.0)
|
|
epicsEnvSet("ECMC_MOD_RANGE" , "0") # Modulo range (traj setpoints and encoder values will be in range 0..ECMC_MOD_RANGE)
|
|
epicsEnvSet("ECMC_MOD_TYPE", "0") # For positioning and MOD_RANGE>0: 0 = Normal, 1 = Always Fwd, 2 = Always Bwd, 3 = Closest Distance
|
|
#Encoder
|
|
epicsEnvSet("ECMC_ENC_SCALE_NUM" "-60")
|
|
epicsEnvSet("ECMC_ENC_SCALE_DENOM" "2000")
|
|
epicsEnvSet("ECMC_ENC_TYPE" "1") # Type: 0=Incremental, 1=Absolute
|
|
epicsEnvSet("ECMC_ENC_BITS" "16") # Total bit count of encoder raw data
|
|
epicsEnvSet("ECMC_ENC_ABS_BITS", "0") # Absolute bit count (for absolute encoders) always least significant part of ECMC_ENC_BITS
|
|
epicsEnvSet("ECMC_ENC_ABS_OFFSET" "0") # Encoder offset in eng units (for absolute encoders)
|
|
epicsEnvSet("ECMC_EC_ENC_ACTPOS", "ec0.s3.positionActual01") # Ethercat entry for actual position input (encoder)
|
|
epicsEnvSet("ECMC_EC_ENC_RESET", "") # Reset (if no encoder reset bit then leave empty)
|
|
epicsEnvSet("ECMC_EC_ENC_ALARM_0", "") # Error 0 (if no encoder error bit then leave empty)
|
|
epicsEnvSet("ECMC_EC_ENC_ALARM_1", "") # Error 1 (if no encoder error bit then leave empty)
|
|
epicsEnvSet("ECMC_EC_ENC_ALARM_2", "") # Error 2 (if no encoder error bit then leave empty)
|
|
epicsEnvSet("ECMC_EC_ENC_WARNING", "") # Warning (if no encoder warning bit then leave empty)
|
|
#Drive
|
|
epicsEnvSet("ECMC_DRV_TYPE" "0") # Stepper: 0. DS402: 1 (DS402 = servos and advanced stepper drives)
|
|
epicsEnvSet("ECMC_DRV_SCALE_NUM" "600.0") # Fastest speed in engineering units
|
|
epicsEnvSet("ECMC_DRV_SCALE_DENOM" "32768.0") # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET
|
|
epicsEnvSet("ECMC_EC_DRV_CONTROL", "ec0.s8.driveControl01.0") # Ethercat entry for control word or bit output
|
|
epicsEnvSet("ECMC_EC_DRV_STATUS", "ec0.s8.driveStatus01.1") # Ethercat entry for status word or bit input
|
|
epicsEnvSet("ECMC_EC_DRV_VELOCITY", "ec0.s8.velocitySetpoint01") # Ethercat entry for velocity setpoint output
|
|
epicsEnvSet("ECMC_EC_DRV_REDUCE_TORQUE", "ec0.s8.driveControl01.2") # Ethercat entry for reduce torque output
|
|
epicsEnvSet("ECMC_EC_DRV_BRAKE", "") # Ethercat entry for brake output
|
|
epicsEnvSet("ECMC_DRV_BRAKE_OPEN_DLY_TIME", "0") # Brake timing parameter in cycles (default 1kHz)
|
|
epicsEnvSet("ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME", "0") # Brake timing parameter in cycles (default 1kHz)
|
|
epicsEnvSet("ECMC_EC_DRV_RESET", "ec0.s8.driveControl01.1") # Reset
|
|
epicsEnvSet("ECMC_EC_DRV_ALARM_0", "ec0.s8.driveStatus01.3") # Error
|
|
epicsEnvSet("ECMC_EC_DRV_ALARM_1", "ec0.s8.driveStatus01.7") # Stall
|
|
epicsEnvSet("ECMC_EC_DRV_ALARM_2", "ec0.s8.driveStatus01.14") # Sync error
|
|
epicsEnvSet("ECMC_EC_DRV_WARNING", "ec0.s8.driveStatus01.2") # Warning
|
|
#Trajectory
|
|
epicsEnvSet("ECMC_TRAJ_TYPE" "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_NUM value OK == 600.0...", "ecmcExit Error: ECMC_DRV_SCALE_NUM == 0...")
|
|
# ECMC_D2022/02/02 11:54:15.914 OK
|
|
2022/02/02 11:54:15.914 OK
|
|
2022/02/02 11:54:15.914 OK
|
|
2022/02/02 11:54:15.914 OK
|
|
2022/02/02 11:54:15.918 OK
|
|
2022/02/02 11:54:15.919 OK
|
|
2022/02/02 11:54:15.919 OK
|
|
2022/02/02 11:54:15.919 OK
|
|
2022/02/02 11:54:15.919 OK
|
|
2022/02/02 11:54:15.919 OK
|
|
2022/02/02 11:54:15.919 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.920 OK
|
|
2022/02/02 11:54:15.921 OK
|
|
2022/02/02 11:54:15.921 OK
|
|
2022/02/02 11:54:15.921 OK
|
|
2022/02/02 11:54:15.921 OK
|
|
2022/02/02 11:54:15.921 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.922 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.923 OK
|
|
2022/02/02 11:54:15.924 OK
|
|
2022/02/02 11:54:15.924 OK
|
|
RV_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,1)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncBits(1,16)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncAbsBits(1,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncOffset(1,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncVelFilterSize(1,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncPosFilterSize(1,1)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncPosFilterEnable(1,0)"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.reset")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.alarm0")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.alarm1")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.alarm2")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.warning")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.latchpos")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.latchcontrol")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.enc.latchstatus")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.0,"ax1.drv.control")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus01.1,"ax1.drv.status")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.velocitySetpoint01,"ax1.drv.velocity")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.drv.position")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax1.drv.brake")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.2,"ax1.drv.reducetorque")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveControl01.1,"ax1.drv.reset")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s8.driveStatus2022/02/02 11:54:15.924 OK
|
|
2022/02/02 11:54:15.924 OK
|
|
2022/02/02 11:54:15.924 OK
|
|
2022/02/02 11:54:15.924 OK
|
|
2022/02/02 11:54:15.924 OK
|
|
2022/02/02 11:54:15.925 OK
|
|
2022/02/02 11:54:15.925 OK
|
|
2022/02/02 11:54:15.925 OK
|
|
2022/02/02 11:54:15.925 OK
|
|
2022/02/02 11:54:15.925 OK
|
|
2022/02/02 11:54:15.926 OK
|
|
2022/02/02 11:54:15.926 OK
|
|
2022/02/02 11:54:15.926 OK
|
|
2022/02/02 11:54:15.926 OK
|
|
2022/02/02 11:54:15.926 OK
|
|
2022/02/02 11:54:15.926 OK
|
|
2022/02/02 11:54:15.927 OK
|
|
2022/02/02 11:54:15.927 OK
|
|
2022/02/02 11:54:15.927 OK
|
|
2022/02/02 11:54:15.927 OK
|
|
2022/02/02 11:54:15.927 OK
|
|
2022/02/02 11:54:15.927 OK
|
|
2022/02/02 11:54:15.928 OK
|
|
2022/02/02 11:54:15.928 OK
|
|
2022/02/02 11:54:15.928 OK
|
|
2022/02/02 11:54:15.928 OK
|
|
2022/02/02 11:54:15.928 OK
|
|
2022/02/02 11:54:15.928 OK
|
|
2022/02/02 11:54:15.929 OK
|
|
2022/02/02 11:54:15.929 OK
|
|
2022/02/02 11:54:15.929 OK
|
|
2022/02/02 11:54:15.930 ecmcMotorRecord:: setIntegerParam(1 motorPowerAutoOnOff_)=2
|
|
2022/02/02 11:54:15.930 ecmcMotorRecord:: setDoubleParam(1 motorPowerOnDelay_)=6
|
|
2022/02/02 11:54:15.930 ecmcMotorRecord:: setDoubleParam(1 motorPowerOffDelay_=-1
|
|
2022/02/02 11:54:15.930 ecmcMotorRecord:: udateMotorLimitsRO(1) enabledHighAndLow=1 valid=1 fValueHigh=130 fValueLow=-20
|
|
2022/02/02 11:54:15.931 ecmcMotorRecord:: connected(1)
|
|
2022/02/02 11:54:15.931 ecmcMotorRecord:: initialPoll(1) status=0
|
|
01.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_PER_S2)
|
|
epicsEnvUnset(ECMC_HOME_VEL_TO)
|
|
epicsEnvUnset(ECMC_HOME_VEL_FRM)
|
|
epicsEnmacLib: 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})
|
|
vUnset(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", "")
|
|
epicsEnvSet("ECMC_AXIS_EXPR_LINE_8", "")
|
|
epicsEnvSet("ECMC_AXIS_EXPR_2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.942 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
2022/02/02 11:54:15.943 OK
|
|
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: Y-axis
|
|
#
|
|
#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_DENOM == 0...")
|
|
# ECMC_DRV_SCALE_DENOM value OK == 32768.0...
|
|
epicsEnvUnse2022/02/02 11:54:15.954 OK
|
|
2022/02/02 11:54:15.955 OK
|
|
2022/02/02 11:54:15.955 OK
|
|
2022/02/02 11:54:15.955 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.957 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.958 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.959 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
t(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.SetAxisSoftLimitPosBwd(2,-130)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitBwd(2,2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.960 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.961 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.962 OK
|
|
2022/02/02 11:54:15.963 ecmcMotorRecord:: setIntegerParam(2 motorPowerAutoOnOff_)=2
|
|
2022/02/02 11:54:15.963 ecmcMotorRecord:: setDoubleParam(2 motorPowerOnDelay_)=6
|
|
2022/02/02 11:54:15.963 ecmcMotorRecord:: setDoubleParam(2 motorPowerOffDelay_=-1
|
|
2022/02/02 11:54:15.963 ecmcMotorRecord:: udateMotorLimitsRO(2) enabledHighAndLow=1 valid=1 fValueHigh=20 fValueLow=-130
|
|
2022/02/02 11:54:15.963 ecmcMotorRecord:: connected(2)
|
|
2022/02/02 11:54:15.963 ecmcMotorRecord:: initialPoll(2) status=0
|
|
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_VEL_FILTER_SIZE)
|
|
epicsEnvUnset(ECMC_ENC_POS_FILTER_SIZE)
|
|
epicsEnvUnset(EmacLib: 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/02/02 11:54:15.973 OK
|
|
2022/02/02 11:54:15.973 OK
|
|
2022/02/02 11:54:15.973 OK
|
|
2022/02/02 11:54:15.973 OK
|
|
CMC_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|"
|
|
ecmcConfigOrDie "Cfg.AppendAxisPLCExpr(2)="
|
|
ecmcConfigOrDie "Cfg.AppendAxi2022/02/02 11:54:15.973 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
2022/02/02 11:54:15.974 OK
|
|
sPLCExpr(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)
|
|
##############################################################################
|
|
## AXIS 3: Spindle
|
|
#
|
|
epicsEnvSet("DEV", "IOC_TEST")
|
|
iocshLoad (/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/configureAxis.cmd, CONFIG=./cfg/el7201_mod.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/el7201_mod.ax",1)
|
|
iocshLoad ./cfg/el7201_mod.ax ""
|
|
#General
|
|
epicsEnvSet("ECMC_MOTOR_NAME", "Axis1")
|
|
epicsEnvSet("ECMC_R", "Axis1-")
|
|
epicsEnvSet("ECMC_AXIS_NO", "3")
|
|
epicsEnvSet("ECMC_DESC", "EL7201 Test")
|
|
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 = Normal, 1 = Always Fwd, 2 = Always Bwd, 3 = Closest Distance
|
|
#Encoder
|
|
epicsEnvSet("ECMC_ENC_SCALE_NUM" "360")
|
|
epicsEnvSet("ECMC_ENC_SCALE_DENOM" "1048576")
|
|
epicsEnvSet("ECMC_ENC_TYPE" "0") # Type: 0=Incremental, 1=Absolute (in this case its single turn absolute (needs homing))
|
|
epicsEnvSet("ECMC_ENC_BITS" "32") # Total bit count of encoder raw data
|
|
epicsEnvSet("ECMC_ENC_ABS_BITS", "20") # 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.s11.positionActual01") # Ethercat entry for actual position input (encoder)
|
|
epicsEnvSet("ECMC_EC_ENC_RESET", "") # Reset handled by DS402 statemachine
|
|
epicsEnvSet("ECMC_EC_ENC_ALARM_0", "") # Error 0 handled by DS402 statemachine
|
|
epicsEnvSet("ECMC_EC_ENC_ALARM_1", "") # Error 1 handled by DS402 statemachine
|
|
epicsEnvSet("ECMC_EC_ENC_ALARM_2", "") # Error 2 handled by DS402 statemachine
|
|
epicsEnvSet("ECMC_EC_ENC_WARNING", "") # Warning handled by DS402 statemachine
|
|
#Drive
|
|
epicsEnvSet("ECMC_DRV_TYPE" "1") # Stepper: 0. DS402: 1 (DS402 = servos and advanced stepper drives)
|
|
# Scalings: Amplifier Max 8000Hz = 2880000 deg/s (8kHz Reverse engineered)
|
|
epicsEnvSet("ECMC_DRV_SCALE_NUM" "2880000") # Fastest speed in engineering units
|
|
epicsEnvSet("ECMC_DRV_SCALE_DENOM" "2147483648") # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET
|
|
epicsEnvSet("ECMC_EC_DRV_CONTROL", "ec0.s11.driveControl01") # Ethercat entry for control word or bit output
|
|
epicsEnvSet("ECMC_EC_DRV_STATUS", "ec0.s11.driveStatus01") # Ethercat entry for status word or bit input
|
|
epicsEnvSet("ECMC_EC_DRV_VELOCITY", "ec0.s11.velocitySetpoint01") # Ethercat entry for velocity setpoint output
|
|
epicsEnvSet("ECMC_EC_DRV_REDUCE_TORQUE", "") # 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", "") # Reset (handled by ds402 statemachine, but this bit can be used anyway if needed)
|
|
epicsEnvSet("ECMC_EC_DRV_ALARM_0", "") # Error 0 (handled by ds402 statemachine, but this bit can be used anyway if needed)
|
|
epicsEnvSet("ECMC_EC_DRV_ALARM_1", "") # Error 1 (handled by ds402 statemachine, but this bit can be used anyway if needed)
|
|
epicsEnvSet("ECMC_EC_DRV_ALARM_2", "") # Error 2 (handled by ds402 statemachine, but this bit can be used anyway if needed)
|
|
epicsEnvSet("ECMC_EC_DRV_WARNING", "") # Warning (handled by ds402 statemachine, but this bit can be used anyway if needed)
|
|
#Trajectory
|
|
epicsEnvSet("ECMC_TRAJ_TYPE", "1") # Trapetz: 0, S-Curve: 1
|
|
epicsEnvSet("ECMC_VELO", "1000.0")
|
|
epicsEnvSet("ECMC_JOG_VEL", "3600")
|
|
epicsEnvSet("ECMC_JAR", "0.0") # JAR defaults to VELO/ACCL
|
|
epicsEnvSet("ECMC_ACCS_EGU_PER_S2", "100")
|
|
epicsEnvSet("ECMC_EMERG_DECEL", "1000") # Emergency deceleration
|
|
epicsEnvSet("ECMC_JERK", "1000") # Only valid for ECMC_TRAJ_TYPE==1
|
|
#Homing
|
|
epicsEnvSet("ECMC_HOME_PROC", "1")
|
|
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", "50")
|
|
epicsEnvSet("ECMC_CNTRL_KI", "0.1")
|
|
epicsEnvSet("ECMC_CNTRL_KD", "0.0")
|
|
epicsEnvSet("ECMC_CNTRL_KFF", "1.0")
|
|
#Monitoring
|
|
# Switches
|
|
epicsEnvSet("ECMC_EC_MON_LOWLIM", "ec0.s11.ONE.0") # Ethercat entry for low limit switch input
|
|
epicsEnvSet("ECMC_EC_MON_HIGHLIM", "ec0.s11.ONE.0") # Ethercat entry for high limit switch inpuit
|
|
epicsEnvSet("ECMC_EC_MON_HOME_SWITCH", "ec0.s11.ONE.0") # Ethercat entry for home switch input
|
|
epicsEnvSet("ECMC_EC_MON_EXT_INTERLOCK", "ec0.s11.ONE.0") # Ethercat entry for external interlock input
|
|
# Softlimits (disable with 0,0,0)
|
|
epicsEnvSet("ECMC_SOFT_LOW_LIM", "0")
|
|
epicsEnvSet("ECMC_SOFT_HIGH_LIM", "0")
|
|
epicsEnvSet("ECMC_DXLM_ENABLE", "0")
|
|
# Position lag
|
|
epicsEnvSet("ECMC_MON_LAG_MON_TOL", "5")
|
|
epicsEnvSet("ECMC_MON_LAG_MON_TIME", "100")
|
|
epicsEnvSet("ECMC_MON_LAG_MON_ENA", "0")
|
|
# At target
|
|
epicsEnvSet("ECMC_MON_AT_TARGET_TOL", "0.3")
|
|
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", "0")
|
|
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(360)<>0',SUCCESS_STR='ECMC_ENC_SCALE_NUM value OK == 360...',ERROR_STR='ECMC_ENC_SCALE_NUM == 0...'"
|
|
#==============================================================================
|
|
# verifyOrDie.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(360)<>0","# ECMC_ENC_SCALE_NUM value OK == 360...", "ecmcExit Error: ECMC_ENC_SCALE_NUM == 0...")
|
|
# ECMC_ENC_SCALE_NUM value OK == 360...
|
|
epicsEnvUnset(ECMC_EXE_CMD)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(1048576)<>0',SUCCESS_STR='ECMC_ENC_SCALE_DENOM value OK == 1048576...',ERROR_STR='ECMC_ENC_SCALE_DENOM == 0...'"
|
|
#==============================================================================
|
|
# verifyOrDie.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(1048576)<>0","# ECMC_ENC_SCALE_DENOM value OK == 1048576...", "ecmcExit Error: ECMC_ENC_SCALE_DENOM == 0...")
|
|
# ECMC_ENC_SCALE_DENOM value OK == 1048576...
|
|
epicsEnvUnset(ECMC_EXE_CMD)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(2880000)<>0',SUCCESS_STR='ECMC_DRV_SCALE_NUM value OK == 2880000...',ERROR_STR='ECMC_DRV_SCALE_NUM == 0...'"
|
|
#==============================================================================
|
|
# verifyOrDie.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(2880000)<>0","# ECMC_DRV_SCALE_NUM value OK == 2880000...", "ecmcExit Error: ECMC_DRV_SCALE_NUM == 0...")
|
|
# ECMC_DRV_SCALE_NUM value OK == 2880000...
|
|
epicsEnvUnset(ECMC_EXE_CMD)
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/verifyOrDie.cmd "EXPR_STR='abs(2147483648)<>0',SUCCESS_STR='ECMC_DRV_SCALE_DENOM value OK == 2147483648...',ERROR_STR='ECMC_DRV_SCALE_DENOM == 0...'"
|
|
#=================================2022/02/02 11:54:15.983 OK
|
|
2022/02/02 11:54:15.984 OK
|
|
2022/02/02 11:54:15.984 OK
|
|
2022/02/02 11:54:15.984 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.986 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.987 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.988 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
=============================================
|
|
# verifyOrDie.cmd
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD,"abs(2147483648)<>0","# ECMC_DRV_SCALE_DENOM value OK == 2147483648...", "ecmcExit Error: ECMC_DRV_SCALE_DENOM == 0...")
|
|
# ECMC_DRV_SCALE_DENOM value OK == 2147483648...
|
|
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(3,1,1,1)"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.health")"
|
|
ecmcConfigOrDie "Cfg.SetAxisModRange(3, 0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisModType(3, 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(3,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisDec(3,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisJerk(3,1000)"
|
|
ecmcConfigOrDie "Cfg.SetAxisVel(3,1000.0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEmergDeceleration(3,1000)"
|
|
ecmcConfigOrDie "Cfg.SetAxisHomeVelTwordsCam(3,5)"
|
|
ecmcConfigOrDie "Cfg.SetAxisHomeVelOffCam(3,4)"
|
|
ecmcConfigOrDie "Cfg.SetAxisCntrlKp(3,50)"
|
|
ecmcConfigOrDie "Cfg.SetAxisCntrlKi(3,0.1)"
|
|
ecmcConfigOrDie "Cfg.SetAxisCntrlKd(3,0.0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisCntrlKff(3,1.0)"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.positionActual01,"ax3.enc.actpos")"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncScaleDenom(3,1048576)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncScaleNum(3,360)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncType(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncBits(3,32)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncAbsBits(3,20)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncOffset(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncVelFilterSize(3,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncPosFilterSize(3,1)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEncPosFilterEnable(3,0)"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.reset")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.alarm0")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.alarm1")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.alarm2")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.warning")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.latchpos")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.latchcontrol")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.enc.latchstatus")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.driveControl01,"ax3.drv.control")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.driveStatus01,"ax3.drv.status")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.velocitySetpoint01,"ax3.drv.velocity")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.position")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.brake")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.reducetorque")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.reset")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.alarm0")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.alarm1")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.alarm2")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(,"ax3.drv.warning")"
|
|
ecmcConfigOrDie "Cfg.SetAxisDrvScaleDenom(3,2147483648)"
|
|
ecmcConfigOrDie "Cfg.SetAxisDrvScaleNum(3,2880000)"
|
|
ecmcConfigOrDie "Cfg.SetAxisDrvBrakeOpenDelayTime(2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.989 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.990 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.991 OK
|
|
2022/02/02 11:54:15.992 ecmcMotorRecord:: setIntegerParam(3 motorPowerAutoOnOff_)=2
|
|
2022/02/02 11:54:15.992 ecmcMotorRecord:: setDoubleParam(3 motorPowerOnDelay_)=6
|
|
2022/02/02 11:54:15.992 ecmcMotorRecord:: setDoubleParam(3 motorPowerOffDelay_=-1
|
|
2022/02/02 11:54:15.992 ecmcMotorRecord:: connected(3)
|
|
2022/02/02 11:54:15.992 ecmcMotorRecord:: initialPoll(3) status=0
|
|
3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisDrvBrakeCloseAheadTime(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisSoftLimitPosBwd(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitBwd(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisSoftLimitPosFwd(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisEnableSoftLimitFwd(3,0)"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.ONE.0,"ax3.mon.lowlim")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.ONE.0,"ax3.mon.highlim")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.ONE.0,"ax3.mon.homesensor")"
|
|
ecmcConfigOrDie "Cfg.LinkEcEntryToObject(ec0.s11.ONE.0,"ax3.mon.extinterlock")"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonAtTargetTol(3,0.3)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonAtTargetTime(3,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonEnableAtTargetMon(3,1)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonPosLagTol(3,5)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonPosLagTime(3,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonEnableLagMon(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonMaxVel(3,100.0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonEnableMaxVel(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonMaxVelDriveILDelay(3,200)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonMaxVelTrajILDelay(3,100)"
|
|
ecmcConfigOrDie "Cfg.SetAxisMonHomeSwitchPolarity(3,0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisHomeLatchCountOffset(3,0.0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisHomePosition(3,0.0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisHomePostMoveEnable(3, 0)"
|
|
ecmcConfigOrDie "Cfg.SetAxisHomePostMoveTargetPosition(3, 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, "3", "6", )
|
|
ecmcEpicsEnvSetCalc("ECMC_TEMP_SREV","if(abs(1048576)>0){RESULT:=abs(1048576);} else {RESULT:=1.0};","%d")
|
|
ecmcEpicsEnvSetCalc("ECMC_TEMP_UREV","if(abs(360)>0){RESULT:=abs(360);} else {RESULT:=1.0};","%lf")
|
|
ecmcFileExist(ecmcMotorRecord.template,1,1)
|
|
dbLoadRecords(ecmcMotorRecord.template, "PREFIX=IOC_TEST:, MOTOR_NAME=Axis1, MOTOR_PORT=MCU1, AXIS_NO=3, DESC=EL7201 Test, EGU=mm, PREC=3, VELO=1000.0, JVEL=3600, JAR=0.0, ACCS=100, RDBD=0.3, DLLM=0, DHLM=0, HOMEPROC=1,SREV=1048576,UREV=360.000000, ")
|
|
epicsEnvSet("ECMC_AXISFIELDINIT", "")
|
|
ecmcFileExist(ecmcMotorRecordhome.template,1,1)
|
|
dbLoadRecords(ecmcMotorRecordhome.template, "PREFIX=IOC_TEST:, MOTOR_NAME=Axis1, MOTOR_PORT=MCU1, AXIS_NO=3,HOMEPROC=1, 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=3,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_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_ABSepicsMutex pthread_mutex_unlock epicsMutexOsdUnlock failed: error Operation not permitted
|
|
epicsMutex pthread_mutex_unlock epicsMutexOsdUnlock failed: error Operation not permitted
|
|
_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:")
|
|
##############################################################################
|
|
## 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=0;X_AXIS=1;Y_AXIS=2;SPINDLE_AXIS=3;AUTO_ENABLE=1;AUTO_START=0;") # 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=0;X_AXIS=1;Y_AXIS=2;SPINDLE_AXIS=3;AUTO_ENABLE=1;AUTO_START=0;', 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=0;X_AXIS=1;Y_AXIS=2;SPINDLE_AXIS=3;AUTO_ENABLE=1;AUTO_START=0;)"
|
|
../grbl/grbl_serial.c:serial_init:108:
|
|
../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_system.c:system_init:26:
|
|
../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_check2022/02/02 11:54:16.206 OK
|
|
2022/02/02 11:54:16.207 OK
|
|
sum:215 EEPROM simulated by file..
|
|
../grbl/grbl_spindle_control.c:spindle_init:31 Not supported yet..
|
|
../grbl/grbl_spindle_control.c:spindle_stop:110 Not supported yet..
|
|
../grbl/grbl_coolant_control.c:coolant_init:25 Not supported yet..
|
|
../grbl/grbl_limits.c:limits_init:44 Not supported yet..
|
|
../grbl/grbl_probe.c:probe_init:31 Not supported yet..
|
|
../grbl/grbl_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..
|
|
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).
|
|
AUTO_START=<1/0>: Auto start g-code at ecmc 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=0;X_AXIS=1;Y_AXIS=2;SPINDLE_AXIS=3;AUTO_ENABLE=1;AUTO_START=0;
|
|
Version = 2
|
|
Interface version = 65536 (ecmc = 65536)
|
|
max plc funcs = 64
|
|
max plc func args = 10
|
|
max plc consts = 64
|
|
Construct func = @0xb4e1d30c
|
|
Enter realtime func = @0xb4e1d25c
|
|
Exit realtime func = @0xb4e1d228
|
|
Realtime func = @0xb4e1d258
|
|
Destruct func = @0xb4e1d230
|
|
dlhandle = @0x169bed8
|
|
Plc functions:
|
|
funcs[00]:
|
|
Name = "grbl_set_execute(arg0);"
|
|
Desc = double grbl_set_execute(<exe>) : Trigg execution of loaded g-code at positive edge of <exe>
|
|
Arg count = 1
|
|
func = @0xb4e1d260
|
|
funcs[01]:
|
|
Name = "grbl_mc_halt(arg0);"
|
|
Desc = double grbl_mc_halt(<halt>) : Halt grbl motion at positive edge of <halt>
|
|
Arg count = 1
|
|
func = @0xb4e1d27c
|
|
funcs[02]:
|
|
Name = "grbl_mc_resume(arg0);"
|
|
Desc = double grbl_mc_resume(<resume>) : Resume halted grbl motion at positive edge of <resume>
|
|
Arg count = 1
|
|
func = @0xb4e1d298
|
|
funcs[03]:
|
|
Name = "grbl_mc_reset(arg0);"
|
|
Desc = double grbl_mc_reset(<reset>) : Reset grbl at positive edge of <reset>
|
|
Arg count = 1
|
|
func = @0xb4e1d2b4
|
|
funcs[04]:
|
|
Name = "grbl_get_busy();"
|
|
Desc = double grbl_get_busy() : Get grbl system busy (still executing motion code)
|
|
Arg count = 0
|
|
func = @0xb4e1d2d0
|
|
funcs[05]:
|
|
Name = "grbl_get_parser_busy();"
|
|
Desc = double grbl_get_parser_busy() : Get g-code parser busy.
|
|
Arg count = 0
|
|
func = @0xb4e1d2e4
|
|
funcs[06]:
|
|
Name = "grbl_get_code_row_num();"
|
|
Desc = double grbl_get_code_row_num() : Get g-code row number currently preparing for exe.
|
|
Arg count = 0
|
|
func = @0xb4e1d2f8
|
|
Plc constants:
|
|
|
|
epicsEnvUnset(ECMC_PLUGIN_REPORT);
|
|
epicsEnvUnset(ECMC_PLUGIN_FILNAME)
|
|
epicsEnvUnset(ECMC_PLUGIN_CONFIG)
|
|
ecmcGrblLoadFile("./plc/test.nc",0)
|
|
#ecmcGrblAddCommand("G1X20Y20F360");
|
|
#ecmcGrblAddCommand("G4P2");
|
|
#ecmcGrblAddCommand("G2X0Y0R20");
|
|
#ecmcGrblAddCommand("G4P2");
|
|
#ecmcGrblAddCommand("G0X10Y10");
|
|
#ecmcGrblAddCommand("G4P2");
|
|
#ecmcGrblAddCommand("G1X0Y0");
|
|
#ecmcGrblAddCommand("G2X0adadsdY0R20");
|
|
#ecmcGrblAddCommand("G1X0Y20");
|
|
#ecmcGrblAddCommand("G1X10Y0F36#
|
|
# Test of GRBL plugin for g-code parsing
|
|
#
|
|
|
|
println('GRBL busy:', grbl_get_busy());
|
|
|
|
if(not(grbl_get_busy())) {
|
|
static.counter+=1;
|
|
println('Retrigger g-code. Counter: ', static.counter);
|
|
grbl_set_execute(0);
|
|
grbl_set_execute(1);
|
|
};
|
|
2022/02/02 11:54:16.236 OK
|
|
2022/02/02 11:54:16.236 OK
|
|
2022/02/02 11:54:16.248 OK
|
|
2022/02/02 11:54:16.248 OK
|
|
2022/02/02 11:54:16.248 OK
|
|
2022/02/02 11:54:16.248 OK
|
|
2022/02/02 11:54:16.248 OK
|
|
2022/02/02 11:54:16.248 OK
|
|
2022/02/02 11:54:16.253 INFO: Locking memory
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/motion/ecmcMonitor.cpp/checkLimits:501: ERROR_MON_BOTH_LIMIT_INTERLOCK (0x14c10).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/motion/ecmcMonitor.cpp/checkLimits:501: ERROR_MON_BOTH_LIMIT_INTERLOCK (0x14c10).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/motion/ecmcDriveDS402.cpp/readEntries:120: ERROR_DRV_DS402_STATE_MACHINE_TIME_OUT (0x14652).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/motion/ecmcAxisReal.cpp/execute:185: ERROR_AXIS_HARDWARE_STATUS_NOT_OK (0x14315).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 0: Not operational (0x24011).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 1: Not operational (0x24011).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 2: Not operational (0x24011).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.353 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 3: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 4: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 5: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 6: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 8: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 9: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:374: ERROR: Slave 11: Not operational (0x24011).
|
|
2022/02/02 11:54:16.354 ../devEcmcSup/ethercat/ecmcEcSlave.cpp/checkConfigState:379: ERROR_EC_SLAVE_NOT_OPERATIONAL (0x24011).
|
|
2022/02/02 11:54:16.381 Starting up EtherCAT bus: 0 second(s). Max wait time 30 second(s).
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: poll(1) homed=1
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000067
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: poll(1) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: sErrorMessage(1)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK"
|
|
2022/02/02 11:54:16.615 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/02/02 11:54:16.615 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000009
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: poll(2) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: sErrorMessage(2)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK"
|
|
2022/02/02 11:54:16.615 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/02/02 11:54:16.615 ecmcMotorRecord:: poll(3) LLS=0
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: poll(3) HLS=0
|
|
2022/02/02 11:54:16.615 ecmcMotorRecord:: poll(3) mvnNRdy=0 bBusy=0 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000041
|
|
2022/02/02 11:54:16.616 ecmcMotorRecord:: poll(3) bError=1 drvlocal.statusBinData.onChangeData.error=0x14315
|
|
2022/02/02 11:54:16.616 ecmcMotorRecord:: sErrorMessage(3)="ERROR_AXIS_HARDWARE_STATUS_NOT_OK"
|
|
2022/02/02 11:54:16.616 ecmcMotorRecord:: poll(3) 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/02/02 11:54:16.816 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/02/02 11:54:16.816 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=0 fPos=0 fActPosition=0 time=0.000021
|
|
2022/02/02 11:54:17.016 ecmcMotorRecord:: poll(1) LLS=0
|
|
2022/02/02 11:54:17.016 ecmcMotorRecord:: poll(1) HLS=0
|
|
2022/02/02 11:54:17.016 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000091
|
|
2022/02/02 11:54:17.016 ecmcMotorRecord:: poll(2) LLS=0
|
|
2022/02/02 11:54:17.016 ecmcMotorRecord:: poll(2) HLS=0
|
|
2022/02/02 11:54:17.016 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000044
|
|
2022/02/02 11:54:17.216 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000013
|
|
2022/02/02 11:54:17.216 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000011
|
|
2022/02/02 11:54:17.264 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:328: WARNING (axis 1): Drive hardware in warning state.
|
|
2022/02/02 11:54:17.381 Starting up EtherCAT bus: 1 second(s). Max wait time 30 second(s).
|
|
2022/02/02 11:54:17.417 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:17.417 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000011
|
|
2022/02/02 11:54:17.507 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:328: WARNING (axis 2): Drive hardware in warning state.
|
|
2022/02/02 11:54:17.617 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000033
|
|
2022/02/02 11:54:17.617 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000007
|
|
2022/02/02 11:54:17.817 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:17.817 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:18.017 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000030
|
|
2022/02/02 11:54:18.017 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:18.217 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:18.218 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:18.381 Starting up EtherCAT bus: 2 second(s). Max wait time 30 second(s).
|
|
2022/02/02 11:54:18.418 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:18.418 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:18.618 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000009
|
|
2022/02/02 11:54:18.618 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:18.818 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:18.818 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000078
|
|
2022/02/02 11:54:19.018 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:19.018 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000008
|
|
2022/02/02 11:54:19.218 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000030
|
|
2022/02/02 11:54:19.219 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:19.381 Starting up EtherCAT bus: 3 second(s). Max wait time 30 second(s).
|
|
2022/02/02 11:54:19.419 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000009
|
|
2022/02/02 11:54:19.419 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:19.619 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:19.619 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:19.819 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:19.819 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000046
|
|
2022/02/02 11:54:20.019 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:20.019 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:20.219 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:20.220 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:20.381 Starting up EtherCAT bus: 4 second(s). Max wait time 30 second(s).
|
|
2022/02/02 11:54:20.420 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:20.420 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000007
|
|
2022/02/02 11:54:20.620 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:20.620 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000012
|
|
2022/02/02 11:54:20.820 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:20.820 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000010
|
|
2022/02/02 11:54:21.020 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:21.020 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000010
|
|
2022/02/02 11:54:21.221 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:21.221 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000010
|
|
2022/02/02 11:54:21.381 Starting up EtherCAT bus: 5 second(s). Max wait time 30 second(s).
|
|
2022/02/02 11:54:21.421 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000012
|
|
2022/02/02 11:54:21.421 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:21.621 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:21.621 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000079
|
|
2022/02/02 11:54:21.821 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:21.821 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=8.19 time=0.000006
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:21.865 ../devEcmcSup/main/ecmcError.cpp/errorReset:103: NO_ERROR (0x0).
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000020
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(1) bError=0 drvlocal.statusBinData.onChangeData.error=0x0
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(1) callParamCallbacksUpdateError Error=0 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000015
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(2) bError=0 drvlocal.statusBinData.onChangeData.error=0x0
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(2) callParamCallbacksUpdateError Error=4 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(3) bError=0 drvlocal.statusBinData.onChangeData.error=0x0
|
|
2022/02/02 11:54:22.022 ecmcMotorRecord:: poll(3) callParamCallbacksUpdateError Error=4 old=1 ErrID=0x0 old=0x14315 Warn=0 nCmd=0 old=0 txt=NULL
|
|
2022/02/02 11:54:22.223 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000045
|
|
2022/02/02 11:54:22.223 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000009
|
|
2022/02/02 11:54:22.423 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000015
|
|
2022/02/02 11:54:22.423 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000009
|
|
2022/02/02 11:54:22.623 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000015
|
|
2022/02/02 11:54:22.623 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000008
|
|
2022/02/02 11:54:22.823 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000016
|
|
2022/02/02 11:54:22.823 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000008
|
|
2022/02/02 11:54:23.024 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000015
|
|
2022/02/02 11:54:23.024 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000008
|
|
2022/02/02 11:54:23.224 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000014
|
|
2022/02/02 11:54:23.224 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000008
|
|
2022/02/02 11:54:23.381 EtherCAT bus started!
|
|
2022/02/02 11:54:23.381 OK
|
|
2022/02/02 11:54:23.382 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocBuild (0). Allow callbacks: true.
|
|
Starting iocInit
|
|
2022/02/02 11:54:23.382 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtBeginning (1). Allow callbacks: true.
|
|
2022/02/02 11:54:23.401 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCallbackInit (2). Allow callbacks: true.
|
|
2022/02/02 11:54:23.409 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaLinkInit (3). Allow callbacks: true.
|
|
2022/02/02 11:54:23.409 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDrvSup (4). Allow callbacks: true.
|
|
2022/02/02 11:54:23.409 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitRecSup (5). Allow callbacks: true.
|
|
2022/02/02 11:54:23.415 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDevSup (6). Allow callbacks: true.
|
|
2022/02/02 11:54:23.421 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.positionActual01 linked to record (asyn reason 1).
|
|
2022/02/02 11:54:23.422 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderLatchPostion01 linked to record (asyn reason 2).
|
|
2022/02/02 11:54:23.422 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderControl01 linked to record (asyn reason 3).
|
|
2022/02/02 11:54:23.423 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderValue01 linked to record (asyn reason 4).
|
|
2022/02/02 11:54:23.423 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.positionActual01 linked to record (asyn reason 5).
|
|
2022/02/02 11:54:23.424 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderLatchPostion01 linked to record (asyn reason 6).
|
|
2022/02/02 11:54:23.424 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000013
|
|
2022/02/02 11:54:23.424 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000116
|
|
2022/02/02 11:54:23.425 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderControl01 linked to record (asyn reason 7).
|
|
2022/02/02 11:54:23.426 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderValue01 linked to record (asyn reason 8).
|
|
2022/02/02 11:54:23.426 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchPositive01 linked to record (asyn reason 9).
|
|
2022/02/02 11:54:23.427 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchNegative01 linked to record (asyn reason 10).
|
|
2022/02/02 11:54:23.428 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchPositive02 linked to record (asyn reason 11).
|
|
2022/02/02 11:54:23.429 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.timestampLatchNegative02 linked to record (asyn reason 12).
|
|
2022/02/02 11:54:23.430 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.driveControl01 linked to record (asyn reason 13).
|
|
2022/02/02 11:54:23.431 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.velocitySetpoint01 linked to record (asyn reason 14).
|
|
2022/02/02 11:54:23.432 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.positionActual01 linked to record (asyn reason 15).
|
|
2022/02/02 11:54:23.433 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderLatchPostion01 linked to record (asyn reason 16).
|
|
2022/02/02 11:54:23.434 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderControl01 linked to record (asyn reason 17).
|
|
2022/02/02 11:54:23.435 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderValue01 linked to record (asyn reason 18).
|
|
2022/02/02 11:54:23.435 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.driveControl01 linked to record (asyn reason 19).
|
|
2022/02/02 11:54:23.437 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.velocitySetpoint01 linked to record (asyn reason 20).
|
|
2022/02/02 11:54:23.437 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.positionActual01 linked to record (asyn reason 21).
|
|
2022/02/02 11:54:23.438 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderLatchPostion01 linked to record (asyn reason 22).
|
|
2022/02/02 11:54:23.439 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderControl01 linked to record (asyn reason 23).
|
|
2022/02/02 11:54:23.440 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderValue01 linked to record (asyn reason 24).
|
|
2022/02/02 11:54:23.441 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.driveControl01 linked to record (asyn reason 25).
|
|
2022/02/02 11:54:23.442 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.velocitySetpoint01 linked to record (asyn reason 26).
|
|
2022/02/02 11:54:23.442 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.positionActual01 linked to record (asyn reason 27).
|
|
2022/02/02 11:54:23.444 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.actpos linked to record (asyn reason 28).
|
|
2022/02/02 11:54:23.445 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.setpos linked to record (asyn reason 29).
|
|
2022/02/02 11:54:23.446 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.poserr linked to record (asyn reason 30).
|
|
2022/02/02 11:54:23.447 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax3.plc.error linked to record (asyn reason 31).
|
|
2022/02/02 11:54:23.448 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.actpos linked to record (asyn reason 32).
|
|
2022/02/02 11:54:23.450 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.setpos linked to record (asyn reason 33).
|
|
2022/02/02 11:54:23.451 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.poserr linked to record (asyn reason 34).
|
|
2022/02/02 11:54:23.453 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.error linked to record (asyn reason 35).
|
|
2022/02/02 11:54:23.455 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.plc0.scantime linked to record (asyn reason 36).
|
|
2022/02/02 11:54:23.457 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.plc0.error linked to record (asyn reason 37).
|
|
2022/02/02 11:54:23.459 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.appmode linked to record (asyn reason 38).
|
|
2022/02/02 11:54:23.461 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.id linked to record (asyn reason 39).
|
|
2022/02/02 11:54:23.464 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.latency.min linked to record (asyn reason 40).
|
|
2022/02/02 11:54:23.466 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.latency.max linked to record (asyn reason 41).
|
|
2022/02/02 11:54:23.469 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.period.min linked to record (asyn reason 42).
|
|
2022/02/02 11:54:23.470 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.period.max linked to record (asyn reason 43).
|
|
2022/02/02 11:54:23.472 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.execute.min linked to record (asyn reason 44).
|
|
2022/02/02 11:54:23.473 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.execute.max linked to record (asyn reason 45).
|
|
2022/02/02 11:54:23.475 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.send.min linked to record (asyn reason 46).
|
|
2022/02/02 11:54:23.476 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.thread.send.max linked to record (asyn reason 47).
|
|
2022/02/02 11:54:23.477 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput01 linked to record (asyn reason 48).
|
|
2022/02/02 11:54:23.479 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput02 linked to record (asyn reason 49).
|
|
2022/02/02 11:54:23.481 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput03 linked to record (asyn reason 50).
|
|
2022/02/02 11:54:23.482 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput04 linked to record (asyn reason 51).
|
|
2022/02/02 11:54:23.484 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput05 linked to record (asyn reason 52).
|
|
2022/02/02 11:54:23.486 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput06 linked to record (asyn reason 53).
|
|
2022/02/02 11:54:23.488 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput07 linked to record (asyn reason 54).
|
|
2022/02/02 11:54:23.489 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.binaryInput08 linked to record (asyn reason 55).
|
|
2022/02/02 11:54:23.490 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput01 linked to record (asyn reason 56).
|
|
2022/02/02 11:54:23.492 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput02 linked to record (asyn reason 57).
|
|
2022/02/02 11:54:23.494 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput03 linked to record (asyn reason 58).
|
|
2022/02/02 11:54:23.498 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput04 linked to record (asyn reason 59).
|
|
2022/02/02 11:54:23.501 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput05 linked to record (asyn reason 60).
|
|
2022/02/02 11:54:23.504 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput06 linked to record (asyn reason 61).
|
|
2022/02/02 11:54:23.506 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput07 linked to record (asyn reason 62).
|
|
2022/02/02 11:54:23.507 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.binaryOutput08 linked to record (asyn reason 63).
|
|
2022/02/02 11:54:23.509 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.powerOk01 linked to record (asyn reason 64).
|
|
2022/02/02 11:54:23.512 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.overload01 linked to record (asyn reason 65).
|
|
2022/02/02 11:54:23.514 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.binaryInput01 linked to record (asyn reason 66).
|
|
2022/02/02 11:54:23.516 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.binaryInput02 linked to record (asyn reason 67).
|
|
2022/02/02 11:54:23.519 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax3.plc.enable linked to record (asyn reason 68).
|
|
2022/02/02 11:54:23.522 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax3.plc.firstscan linked to record (asyn reason 69).
|
|
2022/02/02 11:54:23.525 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.enable linked to record (asyn reason 70).
|
|
2022/02/02 11:54:23.528 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.ax2.plc.firstscan linked to record (asyn reason 71).
|
|
2022/02/02 11:54:23.531 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.ok linked to record (asyn reason 72).
|
|
2022/02/02 11:54:23.534 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.diagnostic linked to record (asyn reason 73).
|
|
2022/02/02 11:54:23.536 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.plc.expression linked to record (asyn reason 74).
|
|
2022/02/02 11:54:23.538 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.diagnostic linked to record (asyn reason 75).
|
|
2022/02/02 11:54:23.540 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.plc.expression linked to record (asyn reason 76).
|
|
2022/02/02 11:54:23.541 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.msg linked to record (asyn reason 77).
|
|
2022/02/02 11:54:23.543 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.updated linked to record (asyn reason 78).
|
|
2022/02/02 11:54:23.544 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.command linked to record (asyn reason 79).
|
|
2022/02/02 11:54:23.548 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.command linked to record (asyn reason 80).
|
|
0");
|
|
#ecmcGrblAddCommand("G4P1");
|
|
#ecmcGrblAddCommand("G1X50Y50F180");
|
|
#ecmcGrblAddCommand("G1X0Y0");
|
|
##############################################################################
|
|
## PLC 0
|
|
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/ruckig/loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_MS=1000,FILE=./plc/grbl.plc")
|
|
#==============================================================================
|
|
# loadPLCFile.cmd
|
|
epicsEnvSet("ECMC_PLC_ID", "0")
|
|
ecmcEpicsEnvSetCalc(ECMC_PLC_RATE_, "1000/1000", "%f")
|
|
epicsEnvSet("ECMC_PLC_SAMPLE_RATE_MS", "1000")
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_PLC_SAMPLE_RATE_MS, "1000>0", "1000","1.000000")
|
|
epicsEnvUnset(ECMC_PLC_RATE_) # clean up, temp variable
|
|
epicsEnvSet("ECMC_TMP_FILE", "/tmp/PLC0.plc")
|
|
ecmcFileExist("./plc/grbl.plc",1)
|
|
system "msi -V -M 'EMPTY' -o /tmp/PLC0.plc ./plc/grbl.plc"
|
|
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, 1=1,"", "#-" )
|
|
########### Parsed PLC file:
|
|
system "cat /tmp/PLC0.plc"
|
|
############ PLC file end
|
|
#
|
|
epicsEnvUnset(ECMC_EXE_CMD)
|
|
ecmcFileExist("/tmp/PLC0.plc",1)
|
|
ecmcConfigOrDie "Cfg.CreatePLC(0,1000)"
|
|
ecmcConfigOrDie "Cfg.LoadPLCFile(0,/tmp/PLC0.plc)"
|
|
system "rm -f /tmp/PLC0.plc"
|
|
ecmcFileExist(ecmcPlc.substitutions,1,1)
|
|
ecmcEpicsEnvSetCalc(ECMC_PLC_ID_2_CHARS, "0", "%02d")
|
|
dbLoadTemplate(ecmcPlc.substitutions, "PORT=MC_CPU1,A=0,Index=0,Name=IOC_TEST:,Index2Char=00,T_SMP_MS=10")
|
|
epicsEnvUnset(ECMC_PLC_ID_2_CHARS)
|
|
##############################################################################
|
|
############# 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)"
|
|
GRBL busy: 1.00000
|
|
GRBL busy: 1.00000
|
|
#asynSetTraceMask(MC_CPU1, -1, 0x41)
|
|
# Note need to test 0x21 later..
|
|
#asynSetTraceMask(MC_CPU1, -1, 0x21)
|
|
asynSetTraceMask(MC_CPU1, -1, 0x41)
|
|
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/02/02 11:54:23.552 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.ONE linked to record (asyn reason 81).
|
|
2022/02/02 11:54:23.554 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.ZERO linked to record (asyn reason 82).
|
|
2022/02/02 11:54:23.557 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.ONE linked to record (asyn reason 83).
|
|
2022/02/02 11:54:23.560 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.ZERO linked to record (asyn reason 84).
|
|
2022/02/02 11:54:23.563 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.ONE linked to record (asyn reason 85).
|
|
2022/02/02 11:54:23.565 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.ZERO linked to record (asyn reason 86).
|
|
2022/02/02 11:54:23.568 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.ONE linked to record (asyn reason 87).
|
|
2022/02/02 11:54:23.570 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.ZERO linked to record (asyn reason 88).
|
|
2022/02/02 11:54:23.574 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.ONE linked to record (asyn reason 89).
|
|
2022/02/02 11:54:23.577 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.ZERO linked to record (asyn reason 90).
|
|
2022/02/02 11:54:23.580 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.ONE linked to record (asyn reason 91).
|
|
2022/02/02 11:54:23.582 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.ZERO linked to record (asyn reason 92).
|
|
2022/02/02 11:54:23.585 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.ONE linked to record (asyn reason 93).
|
|
2022/02/02 11:54:23.589 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.ZERO linked to record (asyn reason 94).
|
|
2022/02/02 11:54:23.591 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.ONE linked to record (asyn reason 95).
|
|
2022/02/02 11:54:23.594 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.ZERO linked to record (asyn reason 96).
|
|
2022/02/02 11:54:23.597 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.ONE linked to record (asyn reason 97).
|
|
2022/02/02 11:54:23.600 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.ZERO linked to record (asyn reason 98).
|
|
2022/02/02 11:54:23.603 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.ONE linked to record (asyn reason 99).
|
|
2022/02/02 11:54:23.606 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.ZERO linked to record (asyn reason 100).
|
|
2022/02/02 11:54:23.609 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.cmddata linked to record (asyn reason 101).
|
|
2022/02/02 11:54:23.613 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.cmddata linked to record (asyn reason 102).
|
|
2022/02/02 11:54:23.616 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s0.slavestatus linked to record (asyn reason 103).
|
|
2022/02/02 11:54:23.618 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s1.slavestatus linked to record (asyn reason 104).
|
|
2022/02/02 11:54:23.621 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s2.slavestatus linked to record (asyn reason 105).
|
|
2022/02/02 11:54:23.624 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.slavestatus linked to record (asyn reason 106).
|
|
2022/02/02 11:54:23.624 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:23.625 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000007
|
|
2022/02/02 11:54:23.627 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.slavestatus linked to record (asyn reason 107).
|
|
2022/02/02 11:54:23.630 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s5.slavestatus linked to record (asyn reason 108).
|
|
2022/02/02 11:54:23.633 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.slavestatus linked to record (asyn reason 109).
|
|
2022/02/02 11:54:23.636 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.slavestatus linked to record (asyn reason 110).
|
|
2022/02/02 11:54:23.639 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.slavestatus linked to record (asyn reason 111).
|
|
2022/02/02 11:54:23.642 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.slavestatus linked to record (asyn reason 112).
|
|
2022/02/02 11:54:23.646 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.status linked to record (asyn reason 113).
|
|
2022/02/02 11:54:23.649 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.errorid linked to record (asyn reason 114).
|
|
2022/02/02 11:54:23.652 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.status linked to record (asyn reason 115).
|
|
2022/02/02 11:54:23.655 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.errorid linked to record (asyn reason 116).
|
|
2022/02/02 11:54:23.659 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.masterstatus linked to record (asyn reason 117).
|
|
2022/02/02 11:54:23.662 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.slavecounter linked to record (asyn reason 118).
|
|
2022/02/02 11:54:23.665 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.memmapcounter linked to record (asyn reason 119).
|
|
2022/02/02 11:54:23.669 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.domainfailcountertotal linked to record (asyn reason 120).
|
|
2022/02/02 11:54:23.672 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.entrycounter linked to record (asyn reason 121).
|
|
2022/02/02 11:54:23.675 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.domainstatus linked to record (asyn reason 122).
|
|
2022/02/02 11:54:23.679 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.control linked to record (asyn reason 123).
|
|
2022/02/02 11:54:23.682 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.control linked to record (asyn reason 124).
|
|
2022/02/02 11:54:23.686 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s3.encoderStatus01 linked to record (asyn reason 125).
|
|
2022/02/02 11:54:23.689 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s4.encoderStatus01 linked to record (asyn reason 126).
|
|
2022/02/02 11:54:23.693 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.status01 linked to record (asyn reason 127).
|
|
2022/02/02 11:54:23.696 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s6.status02 linked to record (asyn reason 128).
|
|
2022/02/02 11:54:23.699 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.driveStatus01 linked to record (asyn reason 129).
|
|
2022/02/02 11:54:23.703 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s8.encoderStatus01 linked to record (asyn reason 130).
|
|
2022/02/02 11:54:23.707 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.driveStatus01 linked to record (asyn reason 131).
|
|
2022/02/02 11:54:23.710 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s9.encoderStatus01 linked to record (asyn reason 132).
|
|
2022/02/02 11:54:23.713 ecmcAsynPortDriver:drvUserCreate: Parameter ec0.s11.driveStatus01 linked to record (asyn reason 133).
|
|
2022/02/02 11:54:23.758 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.targpos linked to record (asyn reason 134).
|
|
2022/02/02 11:54:23.762 ecmcAsynPortDriver:drvUserCreate: Parameter ax3.targvelo linked to record (asyn reason 135).
|
|
2022/02/02 11:54:23.767 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.targpos linked to record (asyn reason 136).
|
|
2022/02/02 11:54:23.771 ecmcAsynPortDriver:drvUserCreate: Parameter ax2.targvelo linked to record (asyn reason 137).
|
|
2022/02/02 11:54:23.786 ecmcAsynPortDriver:drvUserCreate: Parameter plcs.plc0.enable linked to record (asyn reason 138).
|
|
2022/02/02 11:54:23.792 ecmcAsynPortDriver:drvUserCreate: Parameter ecmc.error.reset linked to record (asyn reason 139).
|
|
2022/02/02 11:54:23.796 ecmcMotorRecord:: setIntegerParam(3 motorUpdateStatus_)=0
|
|
2022/02/02 11:54:23.797 ecmcMotorRecord:: setIntegerParam(2 motorUpdateStatus_)=0
|
|
2022/02/02 11:54:23.797 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000007
|
|
2022/02/02 11:54:23.825 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:23.825 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000008
|
|
2022/02/02 11:54:23.843 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDatabase (7). Allow callbacks: true.
|
|
2022/02/02 11:54:23.843 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterFinishDevSup (8). Allow callbacks: true.
|
|
2022/02/02 11:54:24.025 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000009
|
|
2022/02/02 11:54:24.025 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000006
|
|
2022/02/02 11:54:24.225 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000046
|
|
2022/02/02 11:54:24.225 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000009
|
|
2022/02/02 11:54:23.796 [devMotorAsyn.c:439 IOC_TEST:Axis1] init_record IOC_TEST:Axis1 position=-0.002747 encoderPos=-0.002747 velocity=0.000000 MSTAstatus=0x0b0a flagsValue=0x3f flagsWritten=0x3f pmr->mflg=0x0
|
|
2022/02/02 11:54:23.796 [devMotorAsyn.c:185 IOC_TEST:Axis1] init_controller IOC_TEST:Axis1 set encoder ratio=1.000000 status=0
|
|
2022/02/02 11:54:23.796 [devMotorAsyn.c:266 IOC_TEST:Axis1] update_soft_limits IOC_TEST:Axis1 RawHLM_RO=0.000000 RawLLM_RO=0.000000 valid=0 DHLM_RO=0.000000 DLLM_RO=0.000000
|
|
2022/02/02 11:54:23.796 [motorDevSup.c:327 IOC_TEST:Axis1] PositionRestoreNeeded IOC_TEST:Axis1 rstm=2 dval=0.000000 drbv=-0.002747 pmr->rdbd=0.300000 rdbd=0.300000 pmr->mres=0.000343 pmr->mflg=0x3f dval_non_zero_pos_near_zero=0 ret=0
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:782 IOC_TEST:Axis1] init_re_init start neverPolled=0 stat=17 nsta=0
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:720 IOC_TEST:Axis1] enforceMinRetryDeadband spdb=0.300000 rdbd=0.300000 mres=0.000343
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:833 IOC_TEST:Axis1] init_re_init end dval=-0.002747 drbv=-0.002747 rdbd=0.300000 spdb=0.300000
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:968 IOC_TEST:Axis1] init_record process_reason="callbackdata + soft limits" dval=-0.002747 drbv=-0.002747 rdbd=0.300000 spdb=0.300000 stat=0 msta=0xb0a neverPolled=0
|
|
2022/02/02 11:54:23.796 [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/02/02 11:54:23.796 [devMotorAsyn.c:185 IOC_TEST:Axis2] init_controller IOC_TEST:Axis2 set encoder ratio=1.000000 status=0
|
|
2022/02/02 11:54:23.796 [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/02/02 11:54:23.796 [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/02/02 11:54:23.796 [motorRecord.cc:782 IOC_TEST:Axis2] init_re_init start neverPolled=0 stat=17 nsta=0
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:720 IOC_TEST:Axis2] enforceMinRetryDeadband spdb=0.100000 rdbd=0.100000 mres=0.030000
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:4484 IOC_TEST:Axis2] pmr->dhlm=20 softLimitRO=20
|
|
2022/02/02 11:54:23.796 [motorRecord.cc:4545 IOC_TEST:Axis2] pmr->dllm=-130 softLimitRO=-130
|
|
2022/02/02 11:54:23.797 [motorRecord.cc:833 IOC_TEST:Axis2] init_re_init end dval=0.000000 drbv=0.000000 rdbd=0.100000 spdb=0.100000
|
|
2022/02/02 11:54:23.797 [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
|
|
2022/02/02 11:54:24.376 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterScanInit (9). Allow callbacks: true.
|
|
2022/02/02 11:54:24.377 ecmcMotorRecord:: setIntegerParam(3 HomProc_)=1 motorNotHomedProblem=0
|
|
2022/02/02 11:54:24.377 ecmcMotorRecord:: setIntegerParam(2 HomProc_)=3 motorNotHomedProblem=0
|
|
2022/02/02 11:54:24.379 ecmcMotorRecord:: setDoubleParam(3 HomPos_)=0.000000
|
|
2022/02/02 11:54:24.379 ecmcMotorRecord:: setDoubleParam(2 HomPos_)=0.000000
|
|
2022/02/02 11:54:24.379 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitialProcess (10). Allow callbacks: true.
|
|
2022/02/02 11:54:24.388 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (11). Allow callbacks: true.
|
|
2022/02/02 11:54:24.388 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocBuilt (12). Allow callbacks: true.
|
|
2022/02/02 11:54:24.425 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=0 fActPosition=10.02 time=0.000015
|
|
2022/02/02 11:54:24.426 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000008
|
|
GRBL busy: 1.00000
|
|
2022/02/02 11:54:24.436 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocRun (13). Allow callbacks: true.
|
|
2022/02/02 11:54:24.436 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterDatabaseRunning (14). Allow callbacks: true.
|
|
2022/02/02 11:54:24.436 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInterruptAccept (28). Allow callbacks: true.
|
|
2022/02/02 11:54:24.436 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaServerRunning (15). Allow callbacks: true.
|
|
2022/02/02 11:54:24.441 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (29). Allow callbacks: true.
|
|
iocRun: All initialization complete
|
|
2022/02/02 11:54:24.498 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocRunning (16). Allow callbacks: true.
|
|
2022/02/02 11:54:24.502 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:336: INFO (axis 1): Drive hardware warning state cleared.
|
|
2022/02/02 11:54:24.502 ../devEcmcSup/motion/ecmcDriveBase.cpp/readEntries:336: INFO (axis 2): Drive hardware warning state cleared.
|
|
2022/02/02 11:54:24.626 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=10.02 fActPosition=10.02 time=0.000010
|
|
2022/02/02 11:54:24.626 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000006
|
|
2022/02/02 11:54:24.626 ecmcMotorRecord:: poll(3) mvnNRdy=0 bBusy=0 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=8.36063e+08 fPos=-0.00411987 fActPosition=-0.00274658 time=0.000012
|
|
dbpf IOC_TEST:Axis1.SPAM 0
|
|
DBF_SHORT: 0 = 0x0
|
|
dbpf IOC_TEST:Axis2.SPAM 0
|
|
DBF_SHORT: 0 = 0x0
|
|
# Set the IOC Prompt String One
|
|
epicsEnvSet IOCSH_PS1 "raspberrypi-17664 > "
|
|
#
|
|
raspberrypi-17664 > 2022/02/02 11:54:24.826 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=65201 fPos=10.02 fActPosition=10.02 time=0.000015
|
|
2022/02/02 11:54:24.826 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000101
|
|
2022/02/02 11:54:25.026 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10.02 fActPosition=10.02 time=0.000011
|
|
2022/02/02 11:54:25.027 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000007
|
|
2022/02/02 11:54:25.227 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=65201 fPos=10.02 fActPosition=10.02 time=0.000016
|
|
2022/02/02 11:54:25.227 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=273 fPos=0 fActPosition=0 time=0.000011
|
|
2022/02/02 11:54:25.428 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65201 fPos=10.032 fActPosition=10.02 time=0.000014
|
|
2022/02/02 11:54:25.428 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=274 fPos=0.028 fActPosition=0.03 time=0.000009
|
|
2022/02/02 11:54:25.628 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65195 fPos=10.2 fActPosition=10.2 time=0.000142
|
|
2022/02/02 11:54:25.629 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=285 fPos=0.36 fActPosition=0.36 time=0.000012
|
|
2022/02/02 11:54:25.829 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65183 fPos=10.548 fActPosition=10.56 time=0.000019
|
|
2022/02/02 11:54:25.829 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=309 fPos=1.06 fActPosition=1.08 time=0.000245
|
|
2022/02/02 11:54:26.030 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65166 fPos=11.052 fActPosition=11.07 time=0.000015
|
|
2022/02/02 11:54:26.030 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=342 fPos=2.068 fActPosition=2.07 time=0.000009
|
|
2022/02/02 11:54:26.230 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65149 fPos=11.568 fActPosition=11.58 time=0.000064
|
|
2022/02/02 11:54:26.230 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=377 fPos=3.104 fActPosition=3.12 time=0.000012
|
|
2022/02/02 11:54:26.431 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65132 fPos=12.084 fActPosition=12.09 time=0.000016
|
|
2022/02/02 11:54:26.431 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=411 fPos=4.14 fActPosition=4.14 time=0.000216
|
|
2022/02/02 11:54:26.632 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65115 fPos=12.6 fActPosition=12.6 time=0.000020
|
|
2022/02/02 11:54:26.632 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=446 fPos=5.172 fActPosition=5.19 time=0.000012
|
|
2022/02/02 11:54:26.832 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65098 fPos=13.116 fActPosition=13.11 time=0.000018
|
|
2022/02/02 11:54:26.833 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=480 fPos=6.208 fActPosition=6.21 time=0.000012
|
|
2022/02/02 11:54:27.033 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65080 fPos=13.632 fActPosition=13.65 time=0.000018
|
|
2022/02/02 11:54:27.033 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=514 fPos=7.244 fActPosition=7.23 time=0.000011
|
|
2022/02/02 11:54:27.234 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65063 fPos=14.148 fActPosition=14.16 time=0.000020
|
|
2022/02/02 11:54:27.234 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=549 fPos=8.272 fActPosition=8.28 time=0.000011
|
|
2022/02/02 11:54:27.434 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65046 fPos=14.664 fActPosition=14.67 time=0.000017
|
|
2022/02/02 11:54:27.434 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=584 fPos=9.308 fActPosition=9.33 time=0.000011
|
|
2022/02/02 11:54:27.635 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65029 fPos=15.18 fActPosition=15.18 time=0.000013
|
|
2022/02/02 11:54:27.635 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=618 fPos=10.336 fActPosition=10.35 time=0.000008
|
|
2022/02/02 11:54:27.835 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65012 fPos=15.696 fActPosition=15.69 time=0.000019
|
|
2022/02/02 11:54:27.836 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=652 fPos=11.372 fActPosition=11.37 time=0.000011
|
|
2022/02/02 11:54:28.036 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64995 fPos=16.208 fActPosition=16.2 time=0.000019
|
|
2022/02/02 11:54:28.036 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=687 fPos=12.408 fActPosition=12.42 time=0.000011
|
|
2022/02/02 11:54:28.237 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64977 fPos=16.728 fActPosition=16.74 time=0.000014
|
|
2022/02/02 11:54:28.237 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=721 fPos=13.44 fActPosition=13.44 time=0.000008
|
|
2022/02/02 11:54:28.437 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64960 fPos=17.24 fActPosition=17.25 time=0.000018
|
|
2022/02/02 11:54:28.438 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=755 fPos=14.476 fActPosition=14.46 time=0.000450
|
|
2022/02/02 11:54:28.638 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64943 fPos=17.756 fActPosition=17.76 time=0.000023
|
|
2022/02/02 11:54:28.638 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=790 fPos=15.512 fActPosition=15.51 time=0.000009
|
|
2022/02/02 11:54:28.839 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64926 fPos=18.276 fActPosition=18.27 time=0.000015
|
|
2022/02/02 11:54:28.839 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=825 fPos=16.54 fActPosition=16.56 time=0.000010
|
|
2022/02/02 11:54:29.039 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64909 fPos=18.788 fActPosition=18.78 time=0.000014
|
|
2022/02/02 11:54:29.039 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=859 fPos=17.576 fActPosition=17.58 time=0.000009
|
|
2022/02/02 11:54:29.240 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64892 fPos=19.304 fActPosition=19.29 time=0.000016
|
|
2022/02/02 11:54:29.240 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=893 fPos=18.604 fActPosition=18.6 time=0.000012
|
|
2022/02/02 11:54:29.440 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64877 fPos=19.724 fActPosition=19.74 time=0.000102
|
|
2022/02/02 11:54:29.440 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=922 fPos=19.444 fActPosition=19.47 time=0.000011
|
|
2022/02/02 11:54:29.641 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64870 fPos=19.952 fActPosition=19.95 time=0.000019
|
|
2022/02/02 11:54:29.641 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=937 fPos=19.908 fActPosition=19.92 time=0.000012
|
|
2022/02/02 11:54:29.841 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000016
|
|
2022/02/02 11:54:29.842 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000011
|
|
2022/02/02 11:54:29.842 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36063e+08 fPos=0.0506316 fActPosition=0.0260925 time=0.000012
|
|
2022/02/02 11:54:29.842 ecmcMotorRecord:: poll(3) callParamCallbacksUpdateError Error=4 old=4 ErrID=0x0 old=0x0 Warn=0 nCmd=1 old=0 txt=NULL
|
|
2022/02/02 11:54:30.042 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000017
|
|
2022/02/02 11:54:30.042 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000010
|
|
2022/02/02 11:54:30.042 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.3607e+08 fPos=2.45755 fActPosition=2.45544 time=0.000012
|
|
2022/02/02 11:54:30.243 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000017
|
|
2022/02/02 11:54:30.243 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=939 fPos=20 fActPosition=19.98 time=0.000012
|
|
2022/02/02 11:54:30.243 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.3609e+08 fPos=8.85755 fActPosition=9.039 time=0.000010
|
|
2022/02/02 11:54:30.443 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000018
|
|
2022/02/02 11:54:30.443 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=939 fPos=20 fActPosition=19.98 time=0.000010
|
|
2022/02/02 11:54:30.443 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36119e+08 fPos=19.3196 fActPosition=19.2247 time=0.000011
|
|
2022/02/02 11:54:30.644 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000018
|
|
2022/02/02 11:54:30.644 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000011
|
|
2022/02/02 11:54:30.644 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36163e+08 fPos=33.8217 fActPosition=34.276 time=0.000167
|
|
2022/02/02 11:54:30.845 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000020
|
|
2022/02/02 11:54:30.845 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000011
|
|
2022/02/02 11:54:30.845 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36217e+08 fPos=52.2617 fActPosition=52.847 time=0.000010
|
|
2022/02/02 11:54:31.045 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000017
|
|
2022/02/02 11:54:31.045 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000099
|
|
2022/02/02 11:54:31.045 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36283e+08 fPos=74.824 fActPosition=75.4225 time=0.000010
|
|
2022/02/02 11:54:31.246 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64869 fPos=20 fActPosition=19.98 time=0.000018
|
|
2022/02/02 11:54:31.246 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=939 fPos=20 fActPosition=19.98 time=0.000010
|
|
2022/02/02 11:54:31.246 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36357e+08 fPos=101.284 fActPosition=100.933 time=0.000012
|
|
2022/02/02 11:54:31.447 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64869 fPos=20 fActPosition=19.98 time=0.000295
|
|
2022/02/02 11:54:31.447 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000015
|
|
2022/02/02 11:54:31.447 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36449e+08 fPos=131.906 fActPosition=132.411 time=0.000013
|
|
2022/02/02 11:54:31.648 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=20 fActPosition=20.01 time=0.000290
|
|
2022/02/02 11:54:31.648 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=940 fPos=20 fActPosition=20.01 time=0.000012
|
|
2022/02/02 11:54:31.648 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36547e+08 fPos=166.569 fActPosition=166.154 time=0.000011
|
|
2022/02/02 11:54:31.848 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64869 fPos=20 fActPosition=19.98 time=0.000191
|
|
2022/02/02 11:54:31.849 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=939 fPos=19.968 fActPosition=19.98 time=0.000012
|
|
2022/02/02 11:54:31.849 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36659e+08 fPos=205.271 fActPosition=204.63 time=0.000012
|
|
2022/02/02 11:54:32.049 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=1 wf=0 ENC=64868 fPos=19.996 fActPosition=20.01 time=0.000009
|
|
2022/02/02 11:54:32.049 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=927 fPos=19.62 fActPosition=19.62 time=0.000006
|
|
2022/02/02 11:54:32.049 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36784e+08 fPos=248.014 fActPosition=247.411 time=0.000007
|
|
2022/02/02 11:54:32.249 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64869 fPos=19.968 fActPosition=19.98 time=0.000011
|
|
2022/02/02 11:54:32.250 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=903 fPos=18.904 fActPosition=18.9 time=0.000007
|
|
2022/02/02 11:54:32.250 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.36924e+08 fPos=294.554 fActPosition=295.668 time=0.000006
|
|
2022/02/02 11:54:32.450 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64872 fPos=19.88 fActPosition=19.89 time=0.000009
|
|
2022/02/02 11:54:32.450 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=867 fPos=17.824 fActPosition=17.82 time=0.000006
|
|
2022/02/02 11:54:32.450 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.37067e+08 fPos=345.094 fActPosition=344.758 time=0.000007
|
|
2022/02/02 11:54:32.650 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64878 fPos=19.72 fActPosition=19.71 time=0.000009
|
|
2022/02/02 11:54:32.650 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=829 fPos=16.676 fActPosition=16.68 time=0.000006
|
|
2022/02/02 11:54:32.650 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.37233e+08 fPos=399.917 fActPosition=401.694 time=0.000006
|
|
2022/02/02 11:54:32.851 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64885 fPos=19.5 fActPosition=19.5 time=0.000008
|
|
2022/02/02 11:54:32.851 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=792 fPos=15.572 fActPosition=15.57 time=0.000007
|
|
2022/02/02 11:54:32.851 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.37402e+08 fPos=458.477 fActPosition=459.463 time=0.000005
|
|
2022/02/02 11:54:33.051 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64894 fPos=19.22 fActPosition=19.23 time=0.000010
|
|
2022/02/02 11:54:33.051 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=755 fPos=14.472 fActPosition=14.46 time=0.000006
|
|
2022/02/02 11:54:33.051 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.37585e+08 fPos=521.36 fActPosition=522.431 time=0.000052
|
|
2022/02/02 11:54:33.251 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64907 fPos=18.864 fActPosition=18.84 time=0.000009
|
|
2022/02/02 11:54:33.251 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=718 fPos=13.356 fActPosition=13.35 time=0.000006
|
|
2022/02/02 11:54:33.252 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.37777e+08 fPos=587.94 fActPosition=588.393 time=0.000007
|
|
2022/02/02 11:54:33.452 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64921 fPos=18.436 fActPosition=18.42 time=0.000010
|
|
2022/02/02 11:54:33.452 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=681 fPos=12.244 fActPosition=12.24 time=0.000006
|
|
2022/02/02 11:54:33.452 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.37982e+08 fPos=658.52 fActPosition=658.86 time=0.000006
|
|
2022/02/02 11:54:33.652 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64936 fPos=17.96 fActPosition=17.97 time=0.000109
|
|
2022/02/02 11:54:33.652 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=647 fPos=11.204 fActPosition=11.22 time=0.000006
|
|
2022/02/02 11:54:33.652 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.382e+08 fPos=733.483 fActPosition=733.546 time=0.000006
|
|
2022/02/02 11:54:33.853 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64954 fPos=17.424 fActPosition=17.43 time=0.000010
|
|
2022/02/02 11:54:33.853 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=612 fPos=10.18 fActPosition=10.17 time=0.000005
|
|
2022/02/02 11:54:33.853 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.38429e+08 fPos=812.083 fActPosition=812.043 time=0.000006
|
|
2022/02/02 11:54:34.053 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64974 fPos=16.824 fActPosition=16.83 time=0.000008
|
|
2022/02/02 11:54:34.053 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=579 fPos=9.192 fActPosition=9.18 time=0.000007
|
|
2022/02/02 11:54:34.053 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.38671e+08 fPos=895.106 fActPosition=895.243 time=0.000049
|
|
2022/02/02 11:54:34.253 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=64996 fPos=16.172 fActPosition=16.17 time=0.000010
|
|
2022/02/02 11:54:34.253 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=548 fPos=8.236 fActPosition=8.25 time=0.000006
|
|
2022/02/02 11:54:34.254 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.38925e+08 fPos=981.726 fActPosition=982.521 time=0.000006
|
|
2022/02/02 11:54:34.454 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65019 fPos=15.464 fActPosition=15.48 time=0.000009
|
|
2022/02/02 11:54:34.454 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=517 fPos=7.316 fActPosition=7.32 time=0.000006
|
|
2022/02/02 11:54:34.454 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.39188e+08 fPos=1072.35 fActPosition=1072.81 time=0.000006
|
|
2022/02/02 11:54:34.654 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65040 fPos=14.704 fActPosition=14.85 time=0.000132
|
|
2022/02/02 11:54:34.654 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=493 fPos=6.44 fActPosition=6.6 time=0.000006
|
|
2022/02/02 11:54:34.654 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=1 bEnabled=1 atTarget=0 wf=0 ENC=8.39411e+08 fPos=1167.45 fActPosition=1149.25 time=0.000007
|
|
2022/02/02 11:54:34.658 ../devEcmcSup/motion/ecmcDriveDS402.cpp/readEntries:223: ERROR_DRV_DS402_FAULT_STATE (0x14655).
|
|
2022/02/02 11:54:34.658 ../devEcmcSup/motion/ecmcAxisBase.cpp/getErrorID:512: ERROR_DRV_DS402_FAULT_STATE (0x14655).
|
|
2022/02/02 11:54:34.855 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65072 fPos=13.9 fActPosition=13.89 time=0.000010
|
|
2022/02/02 11:54:34.855 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=460 fPos=5.62 fActPosition=5.61 time=0.000006
|
|
2022/02/02 11:54:34.855 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39439e+08 fPos=1179.84 fActPosition=1158.88 time=0.000007
|
|
2022/02/02 11:54:34.855 ecmcMotorRecord:: poll(3) bError=1 drvlocal.statusBinData.onChangeData.error=0x14655
|
|
2022/02/02 11:54:34.855 ecmcMotorRecord:: sErrorMessage(3)="ERROR_DRV_DS402_FAULT_STATE"
|
|
2022/02/02 11:54:34.855 ecmcMotorRecord:: poll(3) callParamCallbacksUpdateError Error=1 old=4 ErrID=0x14655 old=0x0 Warn=0 nCmd=1 old=1 txt=E: ERROR_DRV_DS402_FAULT_STATE (0x14655)
|
|
2022/02/02 11:54:35.055 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65101 fPos=13.02 fActPosition=13.02 time=0.000050
|
|
2022/02/02 11:54:35.055 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=433 fPos=4.82 fActPosition=4.8 time=0.000007
|
|
2022/02/02 11:54:35.055 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39442e+08 fPos=1179.84 fActPosition=1159.97 time=0.000007
|
|
2022/02/02 11:54:35.256 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65131 fPos=12.14 fActPosition=12.12 time=0.000009
|
|
2022/02/02 11:54:35.256 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=410 fPos=4.104 fActPosition=4.11 time=0.000006
|
|
2022/02/02 11:54:35.256 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39442e+08 fPos=1179.84 fActPosition=1159.9 time=0.000006
|
|
2022/02/02 11:54:35.456 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65162 fPos=11.18 fActPosition=11.19 time=0.000011
|
|
2022/02/02 11:54:35.456 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=387 fPos=3.416 fActPosition=3.42 time=0.000118
|
|
2022/02/02 11:54:35.456 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39442e+08 fPos=1179.84 fActPosition=1159.9 time=0.000006
|
|
2022/02/02 11:54:35.656 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65194 fPos=10.224 fActPosition=10.23 time=0.000009
|
|
2022/02/02 11:54:35.657 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=367 fPos=2.812 fActPosition=2.82 time=0.000005
|
|
2022/02/02 11:54:35.657 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39442e+08 fPos=1179.84 fActPosition=1159.9 time=0.000006
|
|
2022/02/02 11:54:35.857 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65229 fPos=9.184 fActPosition=9.18 time=0.000009
|
|
2022/02/02 11:54:35.857 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=348 fPos=2.236 fActPosition=2.25 time=0.000006
|
|
2022/02/02 11:54:35.857 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39442e+08 fPos=1179.84 fActPosition=1159.9 time=0.000006
|
|
2022/02/02 11:54:36.057 ecmcMotorRecord:: poll(1) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=65263 fPos=8.156 fActPosition=8.16 time=0.000210
|
|
2022/02/02 11:54:36.058 ecmcMotorRecord:: poll(2) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=1 atTarget=0 wf=0 ENC=331 fPos=1.74 fActPosition=1.74 time=0.000007
|
|
2022/02/02 11:54:36.058 ecmcMotorRecord:: poll(3) mvnNRdy=1 bBusy=1 bExecute=0 bEnabled=0 atTarget=1 wf=0 ENC=8.39442e+08 fPos=1179.84 fActPosition=1159.9 time=0.000008
|