f-error high while rapid [solved]
02 Feb 2020 17:54 - 01 Mar 2020 11:16 #156394
by anfänger
f-error high while rapid [solved] was created by anfänger
Hi I have some trouble tuning the servos on my linuxcnc retrofit.
I set the parameters as good as I could from my old machine data from the sinumerik 810m.
But I get a strange result when I try to tune my servos. I followed the servo howtio here in the forum and till 600mm/min everything looks really good, but when I go to rapid:
f-error
by
Patrick Laible
, auf Flickr
the f-error rises to 0,4mm (I think while accelerating) and then stays more or less constant and gets smaller when decelerating.
It's more or less just happens at high speeds (5400mm/min). I tried to change acceleration (a real wide range) and output scale but this didn't change much.
has anyone an Idea what it could be?
Thanks Patrick
I set the parameters as good as I could from my old machine data from the sinumerik 810m.
But I get a strange result when I try to tune my servos. I followed the servo howtio here in the forum and till 600mm/min everything looks really good, but when I go to rapid:
the f-error rises to 0,4mm (I think while accelerating) and then stays more or less constant and gets smaller when decelerating.
It's more or less just happens at high speeds (5400mm/min). I tried to change acceleration (a real wide range) and output scale but this didn't change much.
has anyone an Idea what it could be?
Thanks Patrick
Last edit: 01 Mar 2020 11:16 by anfänger.
Please Log in or Create an account to join the conversation.
02 Feb 2020 18:06 #156395
by PCW
Replied by PCW on topic f-error high while rapid
With velocity mode servos, error proportional to velocity means you need to tune FF1
Too much FF1 means actual motion will lead the commanded position
Too little FF1 means the actual motion will lag the commanded position
Too much FF1 means actual motion will lead the commanded position
Too little FF1 means the actual motion will lag the commanded position
Please Log in or Create an account to join the conversation.
02 Feb 2020 19:02 - 02 Feb 2020 19:23 #156396
by anfänger
Replied by anfänger on topic f-error high while rapid
How do I start? I calculated this one 10/vmax 10 / 333.3333 = 0.03 in my case. I lowered it in steps to 0 and raised it to 1 without any changed still the 0.4mm after acceleration an deceleration.
Or is this something to change more?
The only thing that I know tat this error is proportional to the speed
Or is this something to change more?
The only thing that I know tat this error is proportional to the speed
Last edit: 02 Feb 2020 19:23 by anfänger.
Please Log in or Create an account to join the conversation.
02 Feb 2020 19:26 #156398
by PCW
Replied by PCW on topic f-error high while rapid
If you had no ferror change with changes in FF1, there is likely an error in your hal file.
can you post your hal and ini files here?
can you post your hal and ini files here?
Please Log in or Create an account to join the conversation.
02 Feb 2020 19:35 #156399
by anfänger
Replied by anfänger on topic f-error high while rapid
First of all many thanks for your help!
Here comes my INI
Here comes my INI
[EMC]
VERSION = 1.1
MACHINE = Igor
DEBUG = 0
[DISPLAY]
DISPLAY = qtpyvcp
VCP= probe_basic
POSITION = 0x0
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 2.000000
MIN_SPINDLE_OVERRIDE = 0.010000
DEFAULT_SPINDLE_SPEED = 1000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
; File Paths:
; File paths can be relative to the config dir:
; LOG_FILE = hazzy.log
; Or relative to $HOME: (May not be compatible with other GUIs!)
; LOG_FILE = ~/hazzy.log
; Or at an absolute location:
; LOG_FILE = /home/<USER>/hazzy.log
;If not specified, locations default to $HOME
LOG_FILE = sigor.log
PREFERENCE_FILE = igor.pref
PROGRAM_PREFIX = ~/linuxcnc/nc_files
INCREMENTS = JOG, 10.000, 1.000, 0.100, 0.010, 0.001
DEFAULT_LINEAR_VELOCITY = 50.0000
MAX_LINEAR_VELOCITY = 90
MIN_LINEAR_VELOCITY = 0.02000
MAX_RAPID_OVERRIDE = 2
DEFAULT_ANGULAR_VELOCITY = 12.0000
MAX_ANGULAR_VELOCITY = 180.0000
MIN_ANGULAR_VELOCITY = 1.6667
GEOMETRY = xyz
[VTK]
# VTK_Widget Options
MACHINE_BOUNDRY = True
MACHINE_TICKS = True
MACHINE_LABELS = False
PROGRAM_BOUNDRY = True
PROGRAM_TICKS = True
PROGRAM_LABELS = False
GRID_LINES = True
[FILTER]
PROGRAM_EXTENSION = .nc,.txt,.tap ; .ngc is always accepted
[RS274NGC]
PARAMETER_FILE = sim.var
RS274NGC_STARTUP_CODE = F10 S300 G21 G17 G40 G49 G54 G64 P0.001 G80 G90 G91.1 G92.1 G94 G97 G98
#FEATURES = 12
SUBROUTINE_PATH = ~/linuxcnc/configs/IgorProbe/nc_files/sub_progs/
USER_M_PATH = ~/linuxcnc/configs/IgorProbe/nc_files/
REMAP= M6 modalgroup=6 ngc=toolchange
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALFILE = hallib/core_igor.hal
POSTGUI_HALFILE = hallib/postgui.hal
HALUI = halui
[HALUI]
[TRAJ]
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_LINEAR_VELOCITY = 30.0000
MAX_LINEAR_VELOCITY = 90
MAX_LINEAR_ACCELERATION = 13.0
SPINDLES = 1
FORCE_NO_HOMING = 1 #später auskommentiren
POSITION_FILE = position.txt
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins coordinates=XYZ
JOINTS = 3
#==================
# X Axis
#==================
[AXIS_X]
MAX_VELOCITY = 90
MAX_ACCELERATION = 270
#MAX_ACCELERATION = 520.0
MIN_LIMIT = -535.0
MAX_LIMIT = 9.0
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 90
#MAX_ACCELERATION = 520.0
MAX_ACCELERATION = 270
BACKLASH = 0.000
FERROR = 0.5
MIN_FERROR = 0.1
ENCODER_SCALE = -1000
OUTPUT_SCALE = 333.333333
OUTPUT_OFFSET = 0.0
OUTPUT_MIN_LIMIT = -333.333333
OUTPUT_MAX_LIMIT = 333.333333
MAX_OUTPUT = 333.333333
MIN_LIMIT = -535.0
MAX_LIMIT = 9.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -10.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = -0.000000
HOME_SEQUENCE = 1
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
# PID tuning params
DEADBAND = 0.000015
P = 200
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0.0003
BIAS = 0
#==================
# Y Axis
#==================
[AXIS_Y]
MAX_VELOCITY = 291.666666
#MAX_ACCELERATION = 520.0
MAX_ACCELERATION = 180
MIN_LIMIT = -295.0
MAX_LIMIT = 9.0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 291.666666
#MAX_ACCELERATION = 520.0
MAX_ACCELERATION = 180
BACKLASH = 0.000
FERROR = 0.50
MIN_FERROR = 0.10
ENCODER_SCALE = -1000
OUTPUT_SCALE = 290
OUTPUT_OFFSET = 0.0
OUTPUT_MIN_LIMIT = -290
OUTPUT_MAX_LIMIT = 290
MAX_OUTPUT = 290
MIN_LIMIT = -295.0
MAX_LIMIT = 9.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -10.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = -0.000000
HOME_SEQUENCE = 1
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
# PID tuning params
DEADBAND = 0.000015
P = 200
I = 0
D = 0
FF0 = 0
FF1 = 0.03
FF2 = 0.01
BIAS = 0
#==================
# Z Axis
#==================
[AXIS_Z]
MAX_VELOCITY = 333.333333
#MAX_ACCELERATION = 520.0
MAX_ACCELERATION = 180
MIN_LIMIT = -419.0
MAX_LIMIT = 9.0
[JOINT_2]
YPE = LINEAR
MAX_VELOCITY = 333.333333
#MAX_ACCELERATION = 520.0
MAX_ACCELERATION = 180
BACKLASH = 0.000
FERROR = 0.50
MIN_FERROR = 0.10
ENCODER_SCALE = -1000
OUTPUT_SCALE = 333.333333
OUTPUT_OFFSET = 0.0
OUTPUT_MIN_LIMIT = -333.333333
OUTPUT_MAX_LIMIT = 333.333333
MAX_OUTPUT = 333.333333
MIN_LIMIT = -419.0
MAX_LIMIT = 9.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -10.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = -0.000000
HOME_SEQUENCE = 1
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
# PID tuning params
DEADBAND = 0.000015
P = 200
I = 0
D = 0
FF0 = 0
FF1 = 0.03
FF2 = 0.01
BIAS = 0
HOME = 0.000
#==================
# Spindle
#==================
[SPINDLE_9]
P = 1
#P = 0.0
I = 0
D = 0
FF0 = 0
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 10000
ENCODER_SCALE = 4096
OUTPUT_SCALE = -10000
OUTPUT_MIN_LIMIT = -10000
OUTPUT_MAX_LIMIT = 10000
Please Log in or Create an account to join the conversation.
02 Feb 2020 19:37 #156400
by anfänger
Replied by anfänger on topic f-error high while rapid
and here comes my Hal:
# first load all the RT modules that will be needed
# kinematics
loadrt [KINS]KINEMATICS
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS num_spindles=[TRAJ]SPINDLES
loadrt hostmot2
loadrt hm2_eth board_ip="192.168.1.121" config=" num_encoders=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx sserial_port_1=000xxx"
setp hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
# classic ladder
loadrt classicladder_rt #numBits=40 numWords=30 numArithmExpr=100
addf classicladder.0.refresh servo-thread
# Load the ladder
loadusr classicladder --nogui estop01.clp
#Spindle ramp
loadrt limit2 names=spindle-ramp
loadrt near names=spindle-atspeed
# add the Spindele functions to a thread
addf spindle-ramp servo-thread
addf spindle-atspeed servo-thread
# set the parameter for max rate-of-change
# (max spindle accel/decel in units per second)
setp spindle-ramp.maxv 1000
# add motion controller functions to servo thread
addf hm2_7i92.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_7i92.0.write servo-thread
# external output signals
# 7i71
net o-tool-clean hm2_7i92.0.7i71.1.1.output-00
net o-tool-01-down hm2_7i92.0.7i71.1.1.output-01
net o-tool-02-down hm2_7i92.0.7i71.1.1.output-02
net o-tool-03-down hm2_7i92.0.7i71.1.1.output-03
net o-tool-04-down hm2_7i92.0.7i71.1.1.output-04
net o-tool-05-down hm2_7i92.0.7i71.1.1.output-05
net o-tool-06-down hm2_7i92.0.7i71.1.1.output-06
net o-tool-07-down hm2_7i92.0.7i71.1.1.output-07
net o-tool-08-down hm2_7i92.0.7i71.1.1.output-08
net o-tool-09-down hm2_7i92.0.7i71.1.1.output-09
net o-tool-11-down hm2_7i92.0.7i71.1.1.output-10
net o-tool-10-down hm2_7i92.0.7i71.1.1.output-11
net o-tool-12-down hm2_7i92.0.7i71.1.1.output-12
net o-tool-basket-down hm2_7i92.0.7i71.1.1.output-13
net o-tool-basket-up hm2_7i92.0.7i71.1.1.output-14
net o-tool-open hm2_7i92.0.7i71.1.1.output-15
net o-tool-all-up hm2_7i92.0.7i71.1.1.output-16
net o-steuerung-1 hm2_7i92.0.7i71.1.1.output-18
net o-impulsfreigabe hm2_7i92.0.7i71.1.1.output-17
net o-pump-1 hm2_7i92.0.7i71.1.1.output-19
net o-airpressure-1 hm2_7i92.0.7i71.1.1.output-20
net o-chiptransport hm2_7i92.0.7i71.1.1.output-21
net o-pump-2 hm2_7i92.0.7i71.1.1.output-22
net o-power-drives hm2_7i92.0.7i71.1.1.output-23
net o-power-drives-delay hm2_7i92.0.7i71.1.1.output-24
#bei Transport auskommentieren
net o-brake-z hm2_7i92.0.7i71.1.1.output-25
#/bei Transport auskommentieren
net o-pump-3 hm2_7i92.0.7i71.1.1.output-27
# --- SPINDLE-ENABLE ---
#net spindle-enable hm2_7i92.0.7i71.1.1.output-26
net o-impulsfreigabe hm2_7i92.0.7i71.1.1.output-26
net spindle-enable hm2_7i92.0.7i77.0.0.output-01
# --- Table-Out ---
net o-table-up hm2_7i92.0.7i71.1.1.output-28
net o-table-lock hm2_7i92.0.7i71.1.1.output-29
net o-table-2 hm2_7i92.0.7i71.1.1.output-30
net o-table-1 hm2_7i92.0.7i71.1.1.output-31
net error1 hm2_7i92.0.7i71.1.1.output-32
net enable1 hm2_7i92.0.7i71.1.1.output-33
# --- COOLANT-FLOOD ---
net coolant-flood hm2_7i92.0.7i71.1.1.output-34
# --- COOLANT-MIST ---
net o-dummy35 hm2_7i92.0.7i71.1.1.output-35
net o-dummy36 hm2_7i92.0.7i71.1.1.output-36
net o-dummy37 hm2_7i92.0.7i71.1.1.output-37
# --- COOLANT-MIST ---
net coolant-mist hm2_7i92.0.7i71.1.1.output-38
net o-dummy39 hm2_7i92.0.7i71.1.1.output-39
net o-dummy40 hm2_7i92.0.7i71.1.1.output-40
net o-dummy41 hm2_7i92.0.7i71.1.1.output-41
net o-dummy42 hm2_7i92.0.7i71.1.1.output-42
net o-dummy43 hm2_7i92.0.7i71.1.1.output-43
#net o-dummy44 hm2_7i92.0.7i71.1.1.output-44
#bei Transport auskommentieren
net z-enable hm2_7i92.0.7i71.1.1.output-45
net y-enable hm2_7i92.0.7i71.1.1.output-46
net x-enable hm2_7i92.0.7i71.1.1.output-47
#/bei Transport auskommentieren
#7i77
# --- SPINDLE-BRAKE ---
#net spindle-brake hm2_7i92.0.7i77.0.0.output-05
net o-power-drives-delay hm2_7i92.0.7i77.0.0.output-00
net o-2dummy02 hm2_7i92.0.7i77.0.0.output-02
net o-2dummy03 hm2_7i92.0.7i77.0.0.output-03
net o-2dummy04 hm2_7i92.0.7i77.0.0.output-04
net o-2dummy05 hm2_7i92.0.7i77.0.0.output-05
net o-2dummy06 hm2_7i92.0.7i77.0.0.output-06
net o-2dummy07 hm2_7i92.0.7i77.0.0.output-07
net o-2dummy08 hm2_7i92.0.7i77.0.0.output-08
net o-2dummy09 hm2_7i92.0.7i77.0.0.output-09
net o-2dummy10 hm2_7i92.0.7i77.0.0.output-10
net o-2dummy11 hm2_7i92.0.7i77.0.0.output-11
net o-2dummy12 hm2_7i92.0.7i77.0.0.output-12
net o-2dummy13 hm2_7i92.0.7i77.0.0.output-13
net o-2dummy14 hm2_7i92.0.7i77.0.0.output-14
net o-2dummy15 hm2_7i92.0.7i77.0.0.output-15
# external input signals
# 7i70
net i-tool-03-is-up hm2_7i92.0.7i70.1.0.input-00
net i-tool-03-is-down hm2_7i92.0.7i70.1.0.input-01
net i-tool-02-is-up hm2_7i92.0.7i70.1.0.input-02
net i-tool-02-is-down hm2_7i92.0.7i70.1.0.input-03
net i-tool-01-is-up hm2_7i92.0.7i70.1.0.input-04
net i-tool-01-is-down hm2_7i92.0.7i70.1.0.input-05
net i-tool-12-is-up hm2_7i92.0.7i70.1.0.input-06
net i-tool-12-is-down hm2_7i92.0.7i70.1.0.input-07
net i-tool-05-is-down hm2_7i92.0.7i70.1.0.input-08
net i-tool-05-is-up hm2_7i92.0.7i70.1.0.input-09
net i-tool-04-is-up hm2_7i92.0.7i70.1.0.input-10
net i-tool-11-is-down hm2_7i92.0.7i70.1.0.input-12
net i-tool-is-open hm2_7i92.0.7i70.1.0.input-11
net i-tool-10-is-up hm2_7i92.0.7i70.1.0.input-13
net i-tool-10-is-down hm2_7i92.0.7i70.1.0.input-14
net i-tool-11-is-up hm2_7i92.0.7i70.1.0.input-15
net i-tool-09-is-down hm2_7i92.0.7i70.1.0.input-16
net i-tool-09-is-up hm2_7i92.0.7i70.1.0.input-17
net i-tool-08-is-down hm2_7i92.0.7i70.1.0.input-18
net i-tool-08-is-up hm2_7i92.0.7i70.1.0.input-19
net i-tool-07-is-down hm2_7i92.0.7i70.1.0.input-20
net i-tool-07-is-up hm2_7i92.0.7i70.1.0.input-21
net i-tool-06-is-down hm2_7i92.0.7i70.1.0.input-22
net i-tool-06-is-up hm2_7i92.0.7i70.1.0.input-23
net i-tool-basket-is-down hm2_7i92.0.7i70.1.0.input-30
net i-tool-basket-is-up hm2_7i92.0.7i70.1.0.input-31
net i-steuerung-ein hm2_7i92.0.7i70.1.0.input-25
net home-y hm2_7i92.0.7i70.1.0.input-29
net i-tool-04-is-down <= hm2_7i92.0.7i70.1.0.input-27
net home-z <= hm2_7i92.0.7i70.1.0.input-28
net i-power-io hm2_7i92.0.7i70.1.0.input-26
net i-door-1-open hm2_7i92.0.7i70.1.0.input-24
net i-door-1-closed hm2_7i92.0.7i70.1.0.input-32
net i-door-2-open hm2_7i92.0.7i70.1.0.input-33
net i-door-2-closed hm2_7i92.0.7i70.1.0.input-34
net i-door-3 hm2_7i92.0.7i70.1.0.input-35
net i-table-is-lock hm2_7i92.0.7i70.1.0.input-36
net i-table-is-up hm2_7i92.0.7i70.1.0.input-37
net i-table-is-1 hm2_7i92.0.7i70.1.0.input-38
net i-table-is-2 hm2_7i92.0.7i70.1.0.input-39
# --- HOME-Z ---
net home-x <= hm2_7i92.0.7i70.1.0.input-40
# --- HOME-A ---
net home-a <= hm2_7i92.0.7i70.1.0.input-41
net i-setup-a hm2_7i92.0.7i70.1.0.input-42
net i-dummy43 hm2_7i92.0.7i70.1.0.input-43
net i-dummy44 hm2_7i92.0.7i70.1.0.input-44
net i-dummy45 hm2_7i92.0.7i70.1.0.input-45
net i-dummy46 hm2_7i92.0.7i70.1.0.input-46
net i-dummy47 hm2_7i92.0.7i70.1.0.input-47
#7i77
net i-brake-z-is-on hm2_7i92.0.7i77.0.0.input-00
net i-machine-ready hm2_7i92.0.7i77.0.0.input-01
# --- MAX-X ---
net max-x <= hm2_7i92.0.7i77.0.0.input-02
net max-x-n <= hm2_7i92.0.7i77.0.0.input-02-not
# --- MAX-Y ---
net max-y <= hm2_7i92.0.7i77.0.0.input-03
net max-y-n <= hm2_7i92.0.7i77.0.0.input-03-not
# --- MIN-y ---
net max-z <= hm2_7i92.0.7i77.0.0.input-04
net max-z-n <= hm2_7i92.0.7i77.0.0.input-04-not
net estop-button hm2_7i92.0.7i77.0.0.input-06
net i-pressure-ok hm2_7i92.0.7i77.0.0.input-05
#?
net i-temp-bimetall hm2_7i92.0.7i77.0.0.input-07
net i-temp hm2_7i92.0.7i77.0.0.input-08
# --- ESTOP-EXT ---
net i-power-io classicladder.0.in-00
net max-x classicladder.0.in-01
net max-y classicladder.0.in-02
net max-z classicladder.0.in-03
net estop-button classicladder.0.in-04
#Druck überbrücken für tests ohne Kopressor, wenn Arme gesichert!
net estop-button classicladder.0.in-05
#net i-pressure-ok classicladder.0.in-05
#
net i-temp-bimetall classicladder.0.in-06
net estop-button classicladder.0.in-07
# --- ESTOP-OUT ---
net estop-ext classicladder.0.in-08
# --- MACHINE-IS-ENABLED ---
net machine-is-enabled classicladder.0.in-09
net i-steuerung-ein classicladder.0.in-10
# --- ladder-out
net estop-ext <= classicladder.0.out-00
net o-impulsfreigabe <= classicladder.0.out-02
net o-steuerung-1 <= classicladder.0.out-01
net o-power-drives <= classicladder.0.out-04
net o-power-drives-delay <= classicladder.0.out-05
net o-brake-z <= classicladder.0.out-06
net i-unknown1 hm2_7i92.0.7i77.0.0.input-09
net i-unkown2 hm2_7i92.0.7i77.0.0.input-10
net i-servo hm2_7i92.0.7i77.0.0.input-11
net i-spindle hm2_7i92.0.7i77.0.0.input-12
net i-2dummy13 hm2_7i92.0.7i77.0.0.input-13
net i-2dummy14 hm2_7i92.0.7i77.0.0.input-14
net i-2dummy15 hm2_7i92.0.7i77.0.0.input-15
net i-2dummy16 hm2_7i92.0.7i77.0.0.input-16
net i-2dummy17 hm2_7i92.0.7i77.0.0.input-17
net i-2dummy18 hm2_7i92.0.7i77.0.0.input-18
net i-2dummy19 hm2_7i92.0.7i77.0.0.input-19
net i-2dummy20 hm2_7i92.0.7i77.0.0.input-20
net i-2dummy21 hm2_7i92.0.7i77.0.0.input-21
net i-2dummy22 hm2_7i92.0.7i77.0.0.input-22
net i-2dummy23 hm2_7i92.0.7i77.0.0.input-23
net i-2dummy24 hm2_7i92.0.7i77.0.0.input-24
net i-2dummy25 hm2_7i92.0.7i77.0.0.input-25
net i-2dummy26 hm2_7i92.0.7i77.0.0.input-26
net i-2dummy27 hm2_7i92.0.7i77.0.0.input-27
net i-2dummy28 hm2_7i92.0.7i77.0.0.input-28
net i-2dummy29 hm2_7i92.0.7i77.0.0.input-29
net i-2dummy30 hm2_7i92.0.7i77.0.0.input-30
net i-2dummy31 hm2_7i92.0.7i77.0.0.input-31
#*******************
# JOINT X
#*******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-vel-cmd => pid.x.command-deriv
net x-pos-fb => pid.x.feedback
net x-output => pid.x.output
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout0-scalemax [JOINT_0]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout0-minlim [JOINT_0]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout0-maxlim [JOINT_0]OUTPUT_MAX_LIMIT
net x-output => hm2_7i92.0.7i77.0.1.analogout0
net x-pos-cmd joint.0.motor-pos-cmd
net x-enable joint.0.amp-enable-out
# enable _all_ sserial pwmgens
net x-enable hm2_7i92.0.7i77.0.1.analogena
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.00.counter-mode 0
setp hm2_7i92.0.encoder.00.filter 1
setp hm2_7i92.0.encoder.00.index-invert 0
setp hm2_7i92.0.encoder.00.index-mask 0
setp hm2_7i92.0.encoder.00.index-mask-invert 0
setp hm2_7i92.0.encoder.00.scale [JOINT_0]ENCODER_SCALE
net x-pos-fb <= hm2_7i92.0.encoder.00.position
net x-vel-fb <= hm2_7i92.0.encoder.00.velocity
net x-pos-fb => joint.0.motor-pos-fb
net x-index-enable joint.0.index-enable <=> hm2_7i92.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_7i92.0.encoder.00.rawcounts
# ---setup home / limit switch signals---
net home-x => joint.0.home-sw-in
net max-x-n => joint.0.neg-lim-sw-in
net max-x-n => joint.0.pos-lim-sw-in
#*******************
# JOINT Y
#*******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout1-scalemax [JOINT_1]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout1-minlim [JOINT_1]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout1-maxlim [JOINT_1]OUTPUT_MAX_LIMIT
net y-output => hm2_7i92.0.7i77.0.1.analogout1
net y-pos-cmd joint.1.motor-pos-cmd
net y-enable joint.1.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.01.counter-mode 0
setp hm2_7i92.0.encoder.01.filter 1
setp hm2_7i92.0.encoder.01.index-invert 0
setp hm2_7i92.0.encoder.01.index-mask 0
setp hm2_7i92.0.encoder.01.index-mask-invert 0
setp hm2_7i92.0.encoder.01.scale [JOINT_1]ENCODER_SCALE
net y-pos-fb <= hm2_7i92.0.encoder.01.position
net y-vel-fb <= hm2_7i92.0.encoder.01.velocity
net y-pos-fb => joint.1.motor-pos-fb
net y-index-enable joint.1.index-enable <=> hm2_7i92.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_7i92.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net home-y => joint.1.home-sw-in
net max-y-n => joint.1.neg-lim-sw-in
net max-y-n => joint.1.pos-lim-sw-in
#*******************
# JOINT Z
#*******************
setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-vel-cmd => pid.z.command-deriv
net z-pos-fb => pid.z.feedback
net z-output => pid.z.output
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout2-scalemax [JOINT_2]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout2-minlim [JOINT_2]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout2-maxlim [JOINT_2]OUTPUT_MAX_LIMIT
net z-output => hm2_7i92.0.7i77.0.1.analogout2
net z-pos-cmd joint.2.motor-pos-cmd
net z-enable joint.2.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.02.counter-mode 0
setp hm2_7i92.0.encoder.02.filter 1
setp hm2_7i92.0.encoder.02.index-invert 0
setp hm2_7i92.0.encoder.02.index-mask 0
setp hm2_7i92.0.encoder.02.index-mask-invert 0
setp hm2_7i92.0.encoder.02.scale [JOINT_2]ENCODER_SCALE
net z-pos-fb <= hm2_7i92.0.encoder.02.position
net z-vel-fb <= hm2_7i92.0.encoder.02.velocity
net z-pos-fb => joint.2.motor-pos-fb
net z-index-enable joint.2.index-enable <=> hm2_7i92.0.encoder.02.index-enable
net z-pos-rawcounts <= hm2_7i92.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net home-z => joint.2.home-sw-in
net max-z-n => joint.2.neg-lim-sw-in
net max-z-n => joint.2.pos-lim-sw-in
#*******************
# SPINDLE S
#*******************
setp pid.s.Pgain [SPINDLE_9]P
setp pid.s.Igain [SPINDLE_9]I
setp pid.s.Dgain [SPINDLE_9]D
setp pid.s.bias [SPINDLE_9]BIAS
setp pid.s.FF0 [SPINDLE_9]FF0
setp pid.s.FF1 [SPINDLE_9]FF1
setp pid.s.FF2 [SPINDLE_9]FF2
setp pid.s.deadband [SPINDLE_9]DEADBAND
setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT
setp pid.s.error-previous-target true
net spindle-index-enable <=> pid.s.index-enable
net spindle-enable => pid.s.enable
#net spindle-vel-cmd-rpm => pid.s.command
# the output of spindle ramp is sent to the scale in
net spindle-ramped <= spindle-ramp.out => => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout4-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout4-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout4-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
net spindle-output => hm2_7i92.0.7i77.0.1.analogout4
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.05.counter-mode 0
setp hm2_7i92.0.encoder.05.filter 1
setp hm2_7i92.0.encoder.05.index-invert 0
setp hm2_7i92.0.encoder.05.index-mask 0
setp hm2_7i92.0.encoder.05.index-mask-invert 0
setp hm2_7i92.0.encoder.05.scale [SPINDLE_9]ENCODER_SCALE
net spindle-revs <= hm2_7i92.0.encoder.05.position
net spindle-vel-fb-rps <= hm2_7i92.0.encoder.05.velocity
net spindle-index-enable <=> hm2_7i92.0.encoder.05.index-enable
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
#net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable
# hijack the spindle speed out and send it to spindle ramp in
net spindle-vel-cmd-rpm => spindle-ramp.in
# to know when to start the motion we send the near component
# (named spindle-at-speed) to the spindle commanded speed from
# the signal spindle-cmd and the actual spindle speed
# provided your spindle can accelerate at the maxv setting.
net spindle-vel-cmd-rpm => spindle-atspeed.in1
net spindle-ramped => spindle-atspeed.in2
#net spindle-vel-fb-rpm => spindle-atspeed.in2
# ---Setup spindle at speed signals---
# the output from spindle-at-speed is sent to motion.spindle-at-speed
# and when this is true motion will start
net spindle-at-speed <= spindle-atspeed.out => spindle.0.at-speed
#sets spindle-at-speed true
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
#änderungen
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
#Probe
#net spindle-fwd spindle.0.forward
#net spindle-rev spindle.0.reverse
#net spindle-speed spindle.0.speed-out
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
#probe
#net lube iocontrol.0.lube
#net flood iocontrol.0.coolant-flood
#net mist iocontrol.0.coolant-mist
# ---probe signal---
net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
# ---manual tool change signals---
net tool-change-confirmed iocontrol.0.tool-changed <= iocontrol.0.tool-change
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Please Log in or Create an account to join the conversation.
02 Feb 2020 19:50 #156401
by PCW
Replied by PCW on topic f-error high while rapid
If you delete all lines like:
net x-vel-cmd => pid.x.command-deriv
you will have a working FF1 term
net x-vel-cmd => pid.x.command-deriv
you will have a working FF1 term
The following user(s) said Thank You: anfänger
Please Log in or Create an account to join the conversation.
02 Feb 2020 20:45 #156405
by anfänger
Replied by anfänger on topic f-error high while rapid
many thanks
I got rid of
net x-vel-cmd =>
net y-vel-cmd =>
net z-vel-cmd =>
and now it looks way better and I can actually tune
Thanks again!
I got rid of
net x-vel-cmd =>
net y-vel-cmd =>
net z-vel-cmd =>
and now it looks way better and I can actually tune
Thanks again!
Please Log in or Create an account to join the conversation.
03 Feb 2020 15:33 #156443
by bbsr_5a
Replied by bbsr_5a on topic f-error high while rapid
Du solltest alle UMLAUTE auch in den # Kommentaren Vermeiden
warumm ist dein HOME_FINAL_VEL = -0 das sollte immer postive und mindestens 1 sein oder auskommentiert
Da du alles neu ausetzt Frage Solltest du die richtungen so verkabeln das die Motoren zur INI richtig laufen und NICHT Scale- und die
Endschalter dann auch drehen DAS kann dir die Maschine kosten !!
lieber hier 2min mehr investieren
warumm ist dein HOME_FINAL_VEL = -0 das sollte immer postive und mindestens 1 sein oder auskommentiert
Da du alles neu ausetzt Frage Solltest du die richtungen so verkabeln das die Motoren zur INI richtig laufen und NICHT Scale- und die
Endschalter dann auch drehen DAS kann dir die Maschine kosten !!
lieber hier 2min mehr investieren
The following user(s) said Thank You: anfänger
Please Log in or Create an account to join the conversation.
20 Feb 2020 20:13 #158056
by anfänger
Replied by anfänger on topic f-error high while rapid
Ich habe versucht alles so zu übernehmen wie es war und eigentlich auch nicht bei verkabelt sondern bin an die Stecker der alten Steuerung gegangen. Ich habe mir über die Zeit nen bisschen was angeeignet und vieles in der hal sind über try and error entstanden und aus diversen Sachen, die ich gefunden habe zusammenkopiert. Das alles negativ läuft habe ich eigentlich von der alten Steuerung übernommen. Und als das Kleid lief habe ich da nix mehr angefasst. Die endschalter und der Notaus werden die Maschine immer zum stehen bringen, da kann linuxcnc nicht eingreifen. Das ist fest verdrahtet.
Ich bin froh, das die Maschine erstmal wieder läuft.
Aber danke vielleicht sollte ich mir wenn wirklich alles so läuft wie ich mir es vorstelle das ganze nochmal sauber aufsetzen. Gruß Patrick
Ich bin froh, das die Maschine erstmal wieder läuft.
Aber danke vielleicht sollte ich mir wenn wirklich alles so läuft wie ich mir es vorstelle das ganze nochmal sauber aufsetzen. Gruß Patrick
Please Log in or Create an account to join the conversation.
Time to create page: 0.132 seconds