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