f-error high while rapid [solved]

More
02 Feb 2020 17:54 - 01 Mar 2020 11:16 #156394 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:

File Attachment:
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
Last edit: 01 Mar 2020 11:16 by anfänger.

Please Log in or Create an account to join the conversation.

More
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

Please Log in or Create an account to join the conversation.

More
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
Last edit: 02 Feb 2020 19:23 by anfänger.

Please Log in or Create an account to join the conversation.

More
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?

Please Log in or Create an account to join the conversation.

More
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

[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.

More
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.

More
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
The following user(s) said Thank You: anfänger

Please Log in or Create an account to join the conversation.

More
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 :D

Thanks again!

Please Log in or Create an account to join the conversation.

More
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
The following user(s) said Thank You: anfänger

Please Log in or Create an account to join the conversation.

More
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

Please Log in or Create an account to join the conversation.

Time to create page: 0.106 seconds
Powered by Kunena Forum