Files
ecmc_plugin_grbl/iocsh/log.log
Anders Sandstrom 08053a9896 WIP
2022-01-20 17:34:45 +01:00

873 lines
32 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
registerChannelProviderLocal firstTime true
#
# Start at "2022-W03-Jan20-1717-24-CET"
#
# Version information:
# European Spallation Source ERIC : iocsh.bash (3.4.0-PID-12063)
#
# --->--> snip -->-->
# Please Use Version and other environment variables
# in order to report or debug this shell
#
# HOSTDISPLAY=""
# WINDOWID=""
# PWD="/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh"
# USER="pi"
# LOGNAME="pi"
# EPICS_HOST_ARCH="linux-arm"
# EPICS_BASE="/home/pi/epics/base-7.0.5"
# E3_REQUIRE_NAME="require"
# E3_REQUIRE_VERSION="3.4.0"
# E3_REQUIRE_LOCATION="/home/pi/epics/base-7.0.5/require/3.4.0"
# E3_REQUIRE_BIN="/home/pi/epics/base-7.0.5/require/3.4.0/bin"
# E3_REQUIRE_DB="/home/pi/epics/base-7.0.5/require/3.4.0/db"
# E3_REQUIRE_DBD="/home/pi/epics/base-7.0.5/require/3.4.0/dbd"
# E3_REQUIRE_INC="/home/pi/epics/base-7.0.5/require/3.4.0/include"
# E3_REQUIRE_LIB="/home/pi/epics/base-7.0.5/require/3.4.0/lib"
# EPICS_DRIVER_PATH="/home/pi/epics/base-7.0.5/require/3.4.0/siteMods:/home/pi/epics/base-7.0.5/require/3.4.0/siteApps"
# EPICS_CA_AUTO_ADDR_LIST=""
# EPICS_CA_ADDR_LIST=""
# PATH="/home/pi/epics/base-7.0.5/require/3.4.0/bin:/home/pi/epics/base-7.0.5/bin/linux-arm:/home/pi/berryconda3/bin:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games"
# --->--> snip -->-->
#
# Set REQUIRE_IOC for its internal PVs
epicsEnvSet REQUIRE_IOC "REQMOD:raspberrypi-12063"
#
# Enable an exit subroutine for sotfioc
dbLoadRecords "/home/pi/epics/base-7.0.5/db/softIocExit.db" "IOC=REQMOD:raspberrypi-12063"
#
# Set E3_IOCSH_TOP for the absolute path where iocsh.bash is executed.
epicsEnvSet E3_IOCSH_TOP "/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh"
#
#
# Load require module, which has the version 3.4.0
#
dlload /home/pi/epics/base-7.0.5/require/3.4.0/lib/linux-arm/librequire.so
dbLoadDatabase /home/pi/epics/base-7.0.5/require/3.4.0/dbd/require.dbd
require_registerRecordDeviceDriver
Loading module info records for require
#
# Set E3_CMD_TOP for the absolute path where test.script exists
epicsEnvSet E3_CMD_TOP "/home/pi/sources/e3-ecmc_plugin_grbl/ecmc_plugin_grbl-dev/iocsh"
#
iocshLoad 'test.script',''
##############################################################################
## Example: Demo of ecmc SocketCAN plugin
## https://github.com/anderssandstrom/e3-ecmc_plugin_socketcan
##
## The plugin exposes:
##
## Initiation:
epicsEnvSet("IOC" ,"IOC_TEST")
epicsEnvSet("ECMCCFG_INIT" ,"") #Only run startup once (auto at PSI, need call at ESS), variable set to "#" in startup.cmd
epicsEnvSet("SCRIPTEXEC" ,"iocshLoad")
require ecmccfg 7.0.1
Module ecmccfg version 7.0.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/lib/linux-arm/libecmccfg.so
Loaded ecmccfg version 7.0.1
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/dbd/ecmccfg.dbd
Calling function ecmccfg_registerRecordDeviceDriver
Loading module info records for ecmccfg
# run module startup.cmd (only needed at ESS PSI auto call at require)
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/startup.cmd, "IOC=IOC_TEST,ECMC_VER=7.0.1,MASTER_ID=-1"
#==============================================================================
# startup.cmd
on error halt
require ecmc "7.0.1"
Module ecmc version 7.0.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/7.0.1/
Module ecmc depends on asyn 4.41.0
Module asyn version 4.41.0 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/lib/linux-arm/libasyn.so
Loaded asyn version 4.41.0
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/asyn/4.41.0/dbd/asyn.dbd
Calling function asyn_registerRecordDeviceDriver
Loading module info records for asyn
Module ecmc depends on exprtk 1.2.1
Module exprtk version 1.2.1 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/exprtk/1.2.1/
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/exprtk/1.2.1/lib/linux-arm/libexprtk.so
Loaded exprtk version 1.2.1
exprtk has no dbd file
Loading module info records for exprtk
Module ecmc depends on motor 7.0.6
Module motor version 7.0.6 found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/7.0.6/
Module motor depends on asyn 4.41.0
Module asyn version 4.41.0 already loaded
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/7.0.6/lib/linux-arm/libmotor.so
Loaded motor version 7.0.6
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/motor/7.0.6/dbd/motor.dbd
Calling function motor_registerRecordDeviceDriver
Loading module info records for motor
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/7.0.1/lib/linux-arm/libecmc.so
Loaded ecmc version 7.0.1
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc/7.0.1/dbd/ecmc.dbd
Calling function ecmc_registerRecordDeviceDriver
Loading module info records for ecmc
ecmcEpicsEnvSetCalcTernary(ECMC_EXE_CMD, "'ecmcMotorRecord'='EthercatMC'", "require EthercatMC 3.0.2 # Using EthercatMC motor record support.","# Using ecmcMotorRecord motor record support.")
# Using ecmcMotorRecord motor record support.
epicsEnvUnset(ECMC_EXE_CMD)
epicsEnvSet("ECMC_CONFIG_ROOT", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/")
epicsEnvSet("ECMC_CONFIG_DB", "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/db")
epicsEnvSet("SCRIPTEXEC", "iocshLoad")
epicsEnvSet("SM_PREFIX", "IOC_TEST:") # colon added since IOC is _not_ PREFIX
epicsEnvSet("ECMC_PROC_HOOK", "")
epicsEnvSet(ECMC_MODE, FULL)
ecmcEpicsEnvSetCalcTernary(ECMC_SUPPORT_MOTION, "'FULL'=='FULL'","","# MODE == DAQ, DISABLING MOTION.")
epicsEnvShow(ECMC_SUPPORT_MOTION)
ECMC_SUPPORT_MOTION=
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAll.cmd",1)
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAll.cmd"
#==============================================================================
# initAll.cmd
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/init.cmd",1)
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/init.cmd
#==============================================================================
# init.cmd
epicsEnvSet("ECMC_ASYN_TIMEOUT", 1) # Asyn timeout
epicsEnvSet("ECMC_ASYN_ADDR", 0) # Asyn Address
epicsEnvSet("ECMC_MOTOR_PORT", "NOT SET")
epicsEnvSet("ECMC_ASYN_PORT", "NOT SET")
epicsEnvSet("ECMC_PREFIX", "NOT SET")
epicsEnvSet("ECMC_GEN_EC_RECORDS", "NOT SET")
epicsEnvSet("ECMC_GEN_AX_RECORDS", "NOT SET")
epicsEnvSet("ECMC_EC_AXIS_HEALTH", "NOT SET")
epicsEnvSet("ECMC_PLC_SAMPLE_RATE_MS", "NOT SET")
epicsEnvSet("ECMC_TSE", -2)
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAxis.cmd",1)
iocshLoad "/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/initAxis.cmd"
#==============================================================================
# initAxis.cmd
epicsEnvSet("ECMC_MOTOR_NAME", "NOT SET")
epicsEnvSet("ECMC_R", "NOT SET")
epicsEnvSet("ECMC_AXIS_NO", "NOT SET")
epicsEnvSet("ECMC_DESC", "NOT SET")
epicsEnvSet("ECMC_EGU", "NOT SET") # Motor Record Unit
epicsEnvSet("ECMC_PREC", "NOT SET") # Motor Record Precision
epicsEnvSet("ECMC_AXISCONFIG", "NOT SET") # Extra parameters to driver
epicsEnvSet("ECMC_EC_AXIS_HEALTH", "NOT SET") # Entry for axis health output (example: ec0.s1.BO_1.0)
epicsEnvSet("ECMC_ENC_SCALE_NUM", "NOT SET")
epicsEnvSet("ECMC_ENC_SCALE_DENOM", "NOT SET")
epicsEnvSet("ECMC_ENC_BITS", "NOT SET")
epicsEnvSet("ECMC_ENC_TYPE", "NOT SET") # Type: 0=Incremental, 1=Absolute
epicsEnvSet("ECMC_EC_ENC_ACTPOS", "NOT SET") # Ethercat entry for actual position input (encoder)
epicsEnvSet("ECMC_ENC_ABS_BITS", "NOT SET") # Absolute bit count (for absolute encoders) always least significant part
epicsEnvSet("ECMC_ENC_ABS_OFFSET", "NOT SET") # Encoder offset in eng units (for absolute encoders)
epicsEnvSet("ECMC_EC_ENC_LATCHPOS", "") # Ethercat entry for latch position (only valid for home seq 11,12)
epicsEnvSet("ECMC_EC_ENC_LATCH_CONTROL", "") # Ethercat entry for latch control (only valid for home seq 11,12)
epicsEnvSet("ECMC_EC_ENC_LATCH_STATUS", "") # Ethercat entry for latch status (only valid for home seq 11,12)
epicsEnvSet("ECMC_DRV_SCALE_NUM", "NOT SET")
epicsEnvSet("ECMC_DRV_SCALE_DENOM", "NOT SET")
epicsEnvSet("ECMC_EC_DRV_CONTROL", "NOT SET") # Ethercat entry for control word or bit output
epicsEnvSet("ECMC_EC_DRV_STATUS", "NOT SET") # Ethercat entry for status word or bit input
epicsEnvSet("ECMC_EC_DRV_VELOCITY", "NOT SET") # Ethercat entry for velocity setpoint output
epicsEnvSet("ECMC_EC_DRV_BRAKE", "NOT SET") # Ethercat entry for brake output
epicsEnvSet("ECMC_EC_DRV_REDUCE_TORQUE", "NOT SET") # Ethercat entry for reduce torque output
epicsEnvSet("ECMC_DRV_BRAKE_OPEN_DLY_TIME", "NOT SET") # Brake timing parameter in cycles (default 1kHz)
epicsEnvSet("ECMC_DRV_BRAKE_CLOSE_AHEAD_TIME", "NOT SET") # Brake timing parameter in cycles (default 1kHz)
epicsEnvSet("ECMC_VELO", "NOT SET")
epicsEnvSet("ECMC_JOG_VEL", "NOT SET")
epicsEnvSet("ECMC_JAR", "NOT SET") # JAR defaults to VELO/ACCL
epicsEnvSet("ECMC_ACCL", "NOT SET")
epicsEnvSet("ECMC_EMERG_DECEL", "NOT SET") # Emergency deceleration
epicsEnvSet("ECMC_HOME_PROC", "NOT SET")
epicsEnvSet("ECMC_HOME_POS", "NOT SET")
epicsEnvSet("ECMC_HOME_VEL_TO", "NOT SET")
epicsEnvSet("ECMC_HOME_VEL_FRM", "NOT SET")
epicsEnvSet("ECMC_HOME_ACC", "NOT SET")
epicsEnvSet("ECMC_HOME_DEC", "NOT SET")
epicsEnvSet("ECMC_HOME_LATCH_COUNT_OFFSET","0")
epicsEnvSet("ECMC_CNTRL_KP", "NOT SET")
epicsEnvSet("ECMC_CNTRL_KI", "NOT SET")
epicsEnvSet("ECMC_CNTRL_KD", "NOT SET")
epicsEnvSet("ECMC_CNTRL_KFF", "NOT SET")
epicsEnvSet("ECMC_EC_MON_LOWLIM", "NOT SET") # Ethercat entry for low limit switch input
epicsEnvSet("ECMC_EC_MON_HIGHLIM", "NOT SET") # Ethercat entry for high limit switch inpuit
epicsEnvSet("ECMC_EC_MON_HOME_SWITCH", "NOT SET") # Ethercat entry for home switch input
epicsEnvSet("ECMC_EC_MON_EXT_INTERLOCK", "NOT SET") # Ethercat entry for external interlock input
epicsEnvSet("ECMC_SOFT_LOW_LIM", "NOT SET")
epicsEnvSet("ECMC_SOFT_HIGH_LIM", "NOT SET")
epicsEnvSet("ECMC_DXLM_ENABLE", "NOT SET")
epicsEnvSet("ECMC_MON_LAG_MON_TOL", "NOT SET")
epicsEnvSet("ECMC_MON_LAG_MON_TIME", "NOT SET")
epicsEnvSet("ECMC_MON_LAG_MON_ENA", "NOT SET")
epicsEnvSet("ECMC_MON_AT_TARGET_TOL", "NOT SET")
epicsEnvSet("ECMC_MON_AT_TARGET_TIME", "NOT SET")
epicsEnvSet("ECMC_MON_AT_TARGET_ENA", "NOT SET")
epicsEnvSet("ECMC_MON_VELO_MAX", "NOT SET")
epicsEnvSet("ECMC_MON_VELO_MAX_TRAJ_TIME","NOT SET")
epicsEnvSet("ECMC_MON_VELO_MAX_DRV_TIME", "NOT SET")
epicsEnvSet("ECMC_MON_VELO_MAX_ENA", "NOT SET")
epicsEnvSet("ECMC_EGU", "mm")
epicsEnvSet("ECMC_PREC", 3)
epicsEnvSet("ECMC_AXISFIELDINIT", "") # Extra field init to motor record
epicsEnvSet("ECMC_AXISCONFIG", "") # Extra parameters to driver
############################################################
############# ASYN Configuration:
epicsEnvSet("ECMC_MOTOR_PORT" "MCU1")
epicsEnvSet("ECMC_ASYN_PORT" "MC_CPU1")
epicsEnvSet("ECMC_PREFIX" "IOC_TEST:")
ecmcAsynPortDriverConfigure(MC_CPU1,1000,0,0,100)
ecmcAsynPortDriverConfigure: portName = MC_CPU1, paramTableSi2022/01/20 17:17:25.134
ECMC Initializes.............
2022/01/20 17:17:25.134 ESS Open Source EtherCAT Motion Control Epics Module2022/01/20 17:17:25.134
Mode: Configuration
2022/01/20 17:17:25.134 OK
2022/01/20 17:17:25.134 OK
2022/01/20 17:17:25.135 OK
2022/01/20 17:17:25.159 OK
2022/01/20 17:17:25.159 OK
2022/01/20 17:17:25.159 OK
ze = 1000, disableAutoConnect = 0, priority = 0, defaultSampleRateMS = 100.000000
asynOctetSetOutputEos(MC_CPU1, -1, ";\n")
asynOctetSetInputEos(MC_CPU1, -1, ";\n")
asynSetTraceMask(MC_CPU1, -1, 0x41)
asynSetTraceIOMask(MC_CPU1, -1, 6)
asynSetTraceInfoMask(MC_CPU1, -1, 1)
ecmcMotorRecordCreateController(MCU1, MC_CPU1, "64", 200, 1000, "")
############################################################
############# Misc settings:
# Disable function call trace printouts
ecmcConfigOrDie "Cfg.SetEnableFuncCallDiag(0)"
# Disable on change printouts from objects (enable for easy logging)
ecmcConfigOrDie "Cfg.SetTraceMaskBit(15,0)"
# Choose to generate EPICS-records for EtherCAT-entries
# (For records use ECMC_GEN_EC_RECORDS="-records" otherwise ECMC_GEN_EC_RECORDS="")
epicsEnvSet("ECMC_GEN_EC_RECORDS", "-records")
# Choose to generate EPICS-records for ax-entries (PosAct, SetPos,..)
# (For records use ECMC_GEN_AX_RECORDS="-records" otherwise ECMC_GEN_AX_RECORDS="")
epicsEnvSet("ECMC_GEN_AX_RECORDS", "-records")
# suffix for pva enabled scripts, templates and substitutions
ecmcEpicsEnvSetCalcTernary(ECMC_PVA, "0", "Pva","")
# Set EtherCAT frequency (defaults to 1000)
ecmcConfigOrDie "Cfg.SetSampleRate(1000)"
epicsEnvSet("ECMC_EC_SAMPLE_RATE" , 1000)
ecmcEpicsEnvSetCalc("ECMC_EC_SAMPLE_RATE_MS" ,1000/1000)
# Update records in 10ms (100Hz) for FULL MODE and in EC_RATE for DAQ mode
ecmcEpicsEnvSetCalcTernary(ECMC_SAMPLE_RATE_MS, "'FULL'=='DAQ'","1","10")
epicsEnvSet("ECMC_P_SCRIPT", "mXsXXX")
ecmcEpicsEnvSetCalcTernary(ECMC_MASTER_CMD, "-1>=0", "","#- ")
epicsEnvSet("ECMC_EC_MASTER_ID" ,-1)
epicsEnvSet("ECMC_TMP_DIR", "/tmp/IOC_TEST/EcMaster_-1/")
system "mkdir -p /tmp/IOC_TEST/EcMaster_-1/"
epicsEnvSet("ECMC_TMP_DIR", "/tmp/IOC_TEST/EcMaster_-1/")
system "mkdir -p /tmp/IOC_TEST/EcMaster_-1/"
ecmcFileExist("/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/setDiagnostics.cmd",1)
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/setDiagnostics.cmd
#==============================================================================
# setDiagnostics.cmd
ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)"
ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)"
ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)"
epicsEnvSet("ECMCCFG_INIT" ,"#")
##############################################################################
## Configure hardware:
# No EtherCAT hardware (in this example)..
##############################################################################
## Load plugin:
epicsEnvSet("PLUGIN_VER" ,"develop")
require ecmc_plugin_grbl develop
Module ecmc_plugin_grbl version develop found in /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/
Module ecmc_plugin_grbl depends on asyn 4.41.0
Module asyn version 4.41.0 already loaded
Module ecmc_plugin_grbl depends on ecmc 7.0.1
Module ecmc version 7.0.1 already loaded
Loading library /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so
Loaded ecmc_plugin_grbl version develop
Loading dbd file /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/dbd/ecmc_plugin_grbl.dbd
Calling function ecmc_plugin_grbl_registerRecordDeviceDriver
Loading module info records for ecmc_plugin_grbl
epicsEnvSet(ECMC_PLUGIN_FILNAME,"/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so")
epicsEnvSet(ECMC_PLUGIN_CONFIG,"DBG_PRINT=1;X_AXIS=1;") # Only one option implemented in this plugin
iocshLoad /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmccfg/7.0.1/loadPlugin.cmd, "PLUGIN_ID=0,FILE=/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so,CONFIG='DBG_PRINT=1;X_AXIS=1;', REPORT=1"
#==============================================================================
# loadPlugin.cmd
ecmcConfigOrDie "Cfg.LoadPlugin(0,/home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so,DBG_PRINT=1;X_AXIS=1;2022/01/20 17:17:25.365 OK
2022/01/20 17:17:25.365 OK
)"
../ecmc_plugin_grbl/ecmcGrbl.cpp:doReadWorker:207
../ecmc_plugin_grbl/ecmcGrbl.cpp:doMainWorker:245
../grbl/grbl_serial.c:serial_init:70:
../grbl/grbl_eeprom.c:ecmc_init_file:53
../grbl/grbl_settings.c:settings_restore:132 settings_restore complete!!!..
../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file..
../grbl/grbl_stepper.c:stepper_init:625
../grbl/grbl_system.c:system_init:26:
../grbl/grbl_gcode.c:gc_init:44:
../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file..
../grbl/grbl_spindle_control.c:spindle_init:31 Not supported yet..
../grbl/grbl_coolant_control.c:coolant_init:25 Not supported yet..
../grbl/grbl_limits.c:limits_init:44 Not supported yet..
../grbl/grbl_probe.c:probe_init:31 Not supported yet..
../grbl/grbl_stepper.c:st_reset:592
../grbl/grbl_stepper.c:st_go_idle:296
Waiting for grbl init..../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:219
../grbl/grbl_stepper.c:st_generate_step_dir_invert_masks:570
../grbl/grbl_gcode.c:gc_sync_position:59:
../grbl/grbl_protocol.c:protocol_main_loop:40
../grbl/grbl_system.c:system_check_safety_door_ajar:93:
../grbl/grbl_system.c:system_execute_startup:107:
../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file..
../grbl/grbl_eeprom.c:memcpy_from_eeprom_with_checksum:215 EEPROM simulated by file..
Grbl 1.1h ['$' for help]
.ecmcEpicsEnvSetCalcTernary("ECMC_PLUGIN_REPORT", "1>0","","#")
ecmcConfigOrDie "Cfg.ReportPlugin(0)"
Plugin info:
Index = 0
Name = ecmcPluginGrbl
Description = grbl plugin for use with ecmc.
Option description =
DBG_PRINT=<1/0> : Enables/disables printouts from plugin, default = disabled (=0).
Filename = /home/pi/epics/base-7.0.5/require/3.4.0/siteMods/ecmc_plugin_grbl/develop/lib/linux-arm/libecmc_plugin_grbl.so
Config string = DBG_PRINT=1;X_AXIS=1;
Version = 2
Interface version = 65536 (ecmc = 65536)
max plc funcs = 64
max plc func args = 10
max plc consts = 64
Construct func = @0xb4f20990
Enter realtime func = @0xb4f20928
Exit realtime func = @0xb4f20930
Realtime func = @0xb4f20970
Destruct func = @0xb4f20948
dlhandle = @0x2247ae0
Plc functions:
funcs[00]:
Name = "grbl_connect();"
Desc = double grbl_connect() : Connect to grbl interface (from config str).
Arg count = 0
func = @0xb4f20938
Plc constants:
epicsEnvUnset(ECMC_PLUGIN_REPORT);
epicsEnvUnset(ECMC_PLUGIN_FILNAME)
epicsEnvUnset(ECMC_PLUGIN_CONFIG)
ecmcGrblAddCommand("G0X10Y100");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 1
ecmcGrblAddCommand("$");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 2
ecmcGrblAddCommand("G0X10Y100");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 3
ecmcGrblAddCommand("$G");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 4
ecmcGrblAddCommand("G4P4");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 5
ecmcGrblAddCommand("G1X20Y200F20");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 6
ecmcGrblAddCommand("G4P4");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 7
ecmcGrblAddCommand("G2X40Y220R20");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 8
ecmcGrblAddCommand("$");
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:342:
../ecmc_plugin_grbl/ecmcGrbl.cpp:addCommand:346: Buffer size 9
##############################################################################
## PLC 0
# $(SCRIPTEXEC) $(ecmccfg_DIR)loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_2022/01/20 17:17:25.366 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocBuild (0). Allow callbacks: true.
Starting iocInit
2022/01/20 17:17:25.366 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtBeginning (1). Allow callbacks: true.
2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCallbackInit (2). Allow callbacks: true.
2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaLinkInit (3). Allow callbacks: true.
2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDrvSup (4). Allow callbacks: true.
2022/01/20 17:17:25.367 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitRecSup (5). Allow callbacks: true.
2022/01/20 17:17:25.368 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDevSup (6). Allow callbacks: true.
MS=1000,FILE=./plc/can.plc")
iocInit()
############################################################################
## EPICS R7.0.5-E3-7.0.5-patch
## Rev. 2021-05-05T19:45+0200
############################################################################
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 10!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1024!!!
Adding G to buffer
Adding 0 to buffer G
Adding X to buffer G0
Adding 1 to buffer G0X
Adding 0 to buffer G0X1
Adding Y to buffer G0X10
Adding 1 to buffer G0X10Y
Adding 0 to buffer G0X10Y1
Adding 0 to buffer G0X10Y10
Adding
to buffer G0X10Y100
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 2!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1014!!!
Adding $ to buffer G0X10Y100
Adding
to buffer G0X10Y100
$
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 10!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1012!!!
Adding G to buffer G0X10Y100
$
Adding 0 to buffer G0X10Y100
$
G
Adding X to buffer G0X10Y100
$
G0
Adding 1 to buffer G0X10Y100
$
G0X
Adding 0 to buffer G0X10Y100
$
G0X1
Adding Y to buffer G0X10Y100
$
G0X10
Adding 1 to buffer G0X10Y100
$
G0X10Y
Adding 0 to buffer G0X10Y100
$
G0X10Y1
Adding 0 to buffer G0X10Y100
$
G0X10Y10
Adding
to buffer G0X10Y100
$
G0X10Y100
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 3!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 1002!!!
Adding $ to buffer G0X10Y100
$
G0X10Y100
Adding G to buffer G0X10Y100
$
G0X10Y100
$
Adding
to buffer G0X10Y100
$
G0X10Y100
$G
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 5!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 999!!!
Adding G to buffer G0X10Y100
$
G0X10Y100
$G
Adding 4 to buffer G0X10Y100
$
G0X10Y100
$G
G
Adding P to buffer G0X10Y100
$
G0X10Y100
$G
G4
Adding 4 to buffer G0X10Y100
$
G0X10Y100
$G
G4P
Adding
to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 13!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 994!!!
Adding G to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
Adding 1 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G
Adding X to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X2
Adding Y to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y2
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y20
Adding F to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F2
Adding
to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 5!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 981!!!
Adding G to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
Adding 4 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G
Adding P to buffer G0X10Y100
$
G02022/01/20 17:17:25.370 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitDatabase (7). Allow callbacks: true.
X10Y100
$G
G4P4
G1X20Y200F20
G4
Adding 4 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P
Adding
to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 13!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 976!!!
Adding G to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G
Adding X to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2
Adding 4 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X4
Adding Y to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y2
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y22
Adding R to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y220
Adding 2 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y220R
Adding 0 to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y220R2
Adding
to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y220R20
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:222: Command in buffer!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:227: Command length 2!!!
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:228: Available bytes 963!!!
Adding $ to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y220R20
Adding
to buffer G0X10Y100
$
G0X10Y100
$G
G4P4
G1X20Y200F20
G4P4
G2X40Y220R20
$
../ecmc_plugin_grbl/ecmcGrbl.cpp:doWriteWorker:234: Writing!!
../grbl/grbl_gcode.c:gc_execute_line:71:G0X10Y100
1
letter=G
value=0.000000
int_value=0
mantissa=0
axis_command=2
here!!
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=X
value=10.000000
int_value=10
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=Y
value=100.000000
int_value=100
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../grbl/grbl_gcode.c:gc_execute_line:383:axis_words=3
../grbl/grbl_gcode.c:gc_execute_line:384:axis_command=2
../grbl/grbl_gcode.c:gc_execute_line:389:axis_command=2
../grbl/grbl_gcode.c:gc_execute_line:395
../grbl/grbl_gcode.c:gc_execute_line:410:gc_parser_flags=0
../grbl/grbl_gcode.c:gc_execute_line:416:gc_block.modal.feed_rate=0
../grbl/grbl_gcode.c:gc_execute_line:443:gc_state.feed_rate=0.000000
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_system.c:system_execute_line:134:###################
../grbl/grbl_system.c:system_execute_line:135:$
system_execute_line switch line[1]=
../grbl/grbl_gcode.c:gc_execute_line:71:G0X10Y100
1
letter=G
value=0.000000
int_value=0
mantissa=0
axis_command=2
here!!
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=X
value=10.000000
int_value=10
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=Y
value=100.000000
int_value=100
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../grbl/grbl_gcode.c:gc_execute_line:383:axis_words=3
../grbl/grbl_gcode.c:gc_execute_line:384:axis_command=2
../grbl/grbl_gcode.c:gc_execute_line:389:axis_command=2
../grbl/grbl_gcode.c:gc_execute_line:395
../grbl/grbl_gcode.c:gc_execute_line:410:gc_parser_flags=0
../grbl/grbl_gcode.c:gc_execute_line:416:gc_block.modal.feed_rate=0
../grbl/grbl_gcode.c:gc_execute_line:443:gc_state.feed_rate=0.000000
../grbl/grbl_motion_control.c:mc_line:33
../grbl/grbl_system.c:system_execute_line:134:###################
../grbl/grbl_system.c:system_execute_line:135:$G
system_execute_line switch line[1]=G
../grbl/grbl_gcode.c:gc_execute_line:71:G4P4
1
letter=G
value=4.000000
int_value=4
mantissa=0
here 2!!
here 3!!
../grbl/grbl_gcode.c:gc_execute_line:348:
1
letter=P
value=4.000000
int_value=4
mantissa=0
../grbl/grbl_gcode.c:gc_execute_line:348:
../2022/01/20 17:17:25.371 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterFinishDevSup (8). Allow callbacks: true.
2022/01/20 17:17:25.889 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterScanInit (9). Allow callbacks: true.
2022/01/20 17:17:25.889 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInitialProcess (10). Allow callbacks: true.
2022/01/20 17:17:25.891 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (11). Allow callbacks: true.
2022/01/20 17:17:25.891 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocBuilt (12). Allow callbacks: true.
2022/01/20 17:17:26.184 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAtIocRun (13). Allow callbacks: true.
2022/01/20 17:17:26.184 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterDatabaseRunning (14). Allow callbacks: true.
2022/01/20 17:17:26.185 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterInterruptAccept (28). Allow callbacks: true.
2022/01/20 17:17:26.185 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterCaServerRunning (15). Allow callbacks: true.
2022/01/20 17:17:26.185 ecmcAsynPortDriver:getEpicsState: EPICS state: Unknown state (29). Allow callbacks: true.
iocRun: All initialization complete
2022/01/20 17:17:26.223 ecmcAsynPortDriver:getEpicsState: EPICS state: initHookAfterIocRunning (16). Allow callbacks: true.
grbl/grbl_gcode.c:gc_execute_line:383:axis_words=0
../grbl/grbl_gcode.c:gc_execute_line:384:axis_command=0
../grbl/grbl_gcode.c:gc_execute_line:389:axis_command=0
../grbl/grbl_gcode.c:gc_execute_line:395
../grbl/grbl_gcode.c:gc_execute_line:410:gc_parser_flags=0
../grbl/grbl_gcode.c:gc_execute_line:416:gc_block.modal.feed_rate=0
../grbl/grbl_gcode.c:gc_execute_line:443:gc_state.feed_rate=0.000000
../grbl/grbl_motion_control.c:mc_dwell:200
../grbl/grbl_stepper.c:st_next_block_index:672
../grbl/grbl_stepper.c:st_wake_up:265
ok
[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x]
ok
ok
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
ok
# Set the IOC Prompt String One
epicsEnvSet IOCSH_PS1 "raspberrypi-12063 > "
#
raspberrypi-12063 >