7i96 Configuration Tool

More
23 Dec 2018 18:03 #122786 by Ewok2
Replied by Ewok2 on topic 7i96 Configuration Tool
Yes of course
The ini file is below :
# This file was created with the 7i96 Wizard on Dec 23 2018 15:02:21
# Changes to most things are ok and will be read by the wizard

[EMC]
VERSION = 1.1
MACHINE = schugart_LinuxCNC
DEBUG = 0x00000000

[HOSTMOT2]
DRIVER = hm2_eth
IPADDRESS = "10.10.10.10"
BOARD = 7i96
STEPGENS = 3
ENCODERS = 1
SSERIAL_PORT = 1

[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
CYCLE_TIME = 0.1
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 0
OPEN_FILE = ""

[KINS]
KINEMATICS = trivkins
JOINTS = 3

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = schugart_LinuxCNC.tbl

[RS274NGC]
PARAMETER_FILE = schugart_LinuxCNC.var

[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 50.00

[HAL]
HALFILE = schugart_LinuxCNC.hal
HALFILE = io.hal
HALFILE = custom.hal
HALFILE = postgui.hal

[HALUI]

[AXIS_X]
MIN_LIMIT = -0.01
MAX_LIMIT = 345.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 750.0

[AXIS_Y]
MIN_LIMIT = -0.01
MAX_LIMIT = 250.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 750.0

[AXIS_Z]
MIN_LIMIT = -10.01
MAX_LIMIT = 35.0
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0

[JOINT_0]
AXIS = X
MIN_LIMIT = -0.01
MAX_LIMIT = 345.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 750.0
TYPE = LINEAR
SCALE = 1
STEPGEN_MAX_VEL = 60.0
STEPGEN_MAX_ACC = 900.0
FERROR = 0.0002
MIN_FERROR = 0.0001
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 4000
STEPSPACE = 1000
DEADBAND = 0
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0.00013
BIAS = 0
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 0.0
HOME_OFFSET = 0.0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.01
MAX_LIMIT = 250.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 750.0
TYPE = LINEAR
SCALE = 1
STEPGEN_MAX_VEL = 60.0
STEPGEN_MAX_ACC = 900.0
FERROR = 0.0002
MIN_FERROR = 0.0001
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 4000
STEPSPACE = 1000
DEADBAND = 0
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0.00013
BIAS = 0
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 0.0
HOME_OFFSET = 0.0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

[JOINT_2]
AXIS = Z
MIN_LIMIT = -10.01
MAX_LIMIT = 35.0
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 1
STEPGEN_MAX_VEL = 18.0
STEPGEN_MAX_ACC = 600.0
FERROR = 0.0002
MIN_FERROR = 0.0001
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 4000
STEPSPACE = 1000
DEADBAND = 0
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0.00013
BIAS = 0
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 0.0
HOME_OFFSET = 0.0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

[INPUTS]
# DO NOT change the input text
INPUT_0 = None
INPUT_JOINT_0 = False
INPUT_1 = None
INPUT_JOINT_1 = False
INPUT_2 = None
INPUT_JOINT_2 = False
INPUT_3 = None
INPUT_JOINT_3 = False
INPUT_4 = None
INPUT_JOINT_4 = False
INPUT_5 = None
INPUT_JOINT_5 = False
INPUT_6 = None
INPUT_JOINT_6 = False
INPUT_7 = None
INPUT_JOINT_7 = False
INPUT_8 = None
INPUT_JOINT_8 = False
INPUT_9 = None
INPUT_JOINT_9 = False
INPUT_10 = None
INPUT_JOINT_10 = False

[OUTPUTS]
# DO NOT change the output text
OUTPUT_0 = None
OUTPUT_1 = None
OUTPUT_2 = None
OUTPUT_3 = None
OUTPUT_4 = None

[OPTIONS]
MANUAL_TOOL_CHANGE = False
HALUI = False
PYVCP = False
GLADEVCP = False
LADDER = False

The Hal file is below
# This file was created with the 7i96 Wizard on Dec 23 2018 15:02:21
# If you make changes to this file your screwed

# kinematics
loadrt [KINS]KINEMATICS

# motion controller
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS

# standard components
loadrt pid num_chan=3 

# hostmot2 driver
loadrt hostmot2

loadrt [HOSTMOT2](DRIVER) board_ip=[HOSTMOT2](IPADDRESS) config="num_encoders=[HOSTMOT2](ENCODERS)num_stepgens=[HOSTMOT2](STEPGENS)"sserial_port_0=[HOSTMOT2](SSERIAL_PORT)
setp hm2_[HOSTMOT2](BOARD).0.watchdog.timeout_ns 25000000

# THREADS
addf hm2_[HOSTMOT2](BOARD).0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf pid.2.do-pid-calcs servo-thread
addf hm2_[HOSTMOT2](BOARD).0.write servo-thread

# Joint 0
# axis enable chain
newsig emcmot.0.enable bit
sets emcmot.0.enable FALSE
net emcmot.0.enable <= joint.0.amp-enable-out
net emcmot.0.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable pid.0.enable

# position command and feedback
net emcmot.0.pos-cmd joint.0.motor-pos-cmd => pid.0.command
net motor.0.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-fb joint.0.motor-pos-fb pid.0.feedback
net motor.0.command pid.0.output hm2_[HOSTMOT2](BOARD).0.stepgen.00.velocity-cmd
setp pid.0.error-previous-target true

setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [JOINT_0]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [JOINT_0]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [JOINT_0]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.control-type 1

setp pid.0.Pgain [JOINT_0]P
setp pid.0.Igain [JOINT_0]I
setp pid.0.Dgain [JOINT_0]D
setp pid.0.bias [JOINT_0]BIAS
setp pid.0.FF0 [JOINT_0]FF0
setp pid.0.FF1 [JOINT_0]FF1
setp pid.0.FF2 [JOINT_0]FF2
setp pid.0.deadband [JOINT_0]DEADBAND
setp pid.0.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.0.maxerror [JOINT_0]MAX_ERROR

# Joint 1
# axis enable chain
newsig emcmot.1.enable bit
sets emcmot.1.enable FALSE
net emcmot.1.enable <= joint.1.amp-enable-out
net emcmot.1.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.01.enable pid.1.enable

# position command and feedback
net emcmot.1.pos-cmd joint.1.motor-pos-cmd => pid.1.command
net motor.1.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-fb joint.1.motor-pos-fb pid.1.feedback
net motor.1.command pid.1.output hm2_[HOSTMOT2](BOARD).0.stepgen.01.velocity-cmd
setp pid.1.error-previous-target true

setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 0
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.control-type 1

setp pid.1.Pgain [JOINT_1]P
setp pid.1.Igain [JOINT_1]I
setp pid.1.Dgain [JOINT_1]D
setp pid.1.bias [JOINT_1]BIAS
setp pid.1.FF0 [JOINT_1]FF0
setp pid.1.FF1 [JOINT_1]FF1
setp pid.1.FF2 [JOINT_1]FF2
setp pid.1.deadband [JOINT_1]DEADBAND
setp pid.1.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.1.maxerror [JOINT_1]MAX_ERROR

# Joint 2
# axis enable chain
newsig emcmot.2.enable bit
sets emcmot.2.enable FALSE
net emcmot.2.enable <= joint.2.amp-enable-out
net emcmot.2.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.02.enable pid.2.enable

# position command and feedback
net emcmot.2.pos-cmd joint.2.motor-pos-cmd => pid.2.command
net motor.2.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-fb joint.2.motor-pos-fb pid.2.feedback
net motor.2.command pid.2.output hm2_[HOSTMOT2](BOARD).0.stepgen.02.velocity-cmd
setp pid.2.error-previous-target true

setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.step_type 0
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.control-type 1

setp pid.2.Pgain [JOINT_2]P
setp pid.2.Igain [JOINT_2]I
setp pid.2.Dgain [JOINT_2]D
setp pid.2.bias [JOINT_2]BIAS
setp pid.2.FF0 [JOINT_2]FF0
setp pid.2.FF1 [JOINT_2]FF1
setp pid.2.FF2 [JOINT_2]FF2
setp pid.2.deadband [JOINT_2]DEADBAND
setp pid.2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.2.maxerror [JOINT_2]MAX_ERROR

# Standard I/O Block - EStop, Etc
# create a signal for the estop loopback
net estop-loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in

Thanks for your help

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

More
23 Dec 2018 18:30 - 23 Dec 2018 18:35 #122787 by PCW
Replied by PCW on topic 7i96 Configuration Tool
These are likely the problem:

FERROR = 0.0002
MIN_FERROR = 0.0001

These numbers make sense for inch machines but not for mm.
I would scale them up by 25X and see how you do

In addition, for minimum following error I would enable the DPLL:

# latch stepgen position 100 usec before nominal read time (- means before):
setp hm2_[HOSTMOT2](BOARD).0.dpll.01.timer-us -100
setp hm2_[HOSTMOT2](BOARD).0.stepgen.timer-number 1
Last edit: 23 Dec 2018 18:35 by PCW.

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

More
23 Dec 2018 19:42 #122792 by Ewok2
Replied by Ewok2 on topic 7i96 Configuration Tool
Thanks, no more error but It should be something else with inches constant.
The motor make noise but does not move

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

More
23 Dec 2018 19:57 - 23 Dec 2018 19:59 #122795 by PCW
Replied by PCW on topic 7i96 Configuration Tool
That may be an indication that your acceleration or velocity is too high and the step motors are stalling

(With you current acceleration settings, you get to full speed in 66.6 ms, this sounds a bit aggressive to me)
Last edit: 23 Dec 2018 19:59 by PCW.
The following user(s) said Thank You: Ewok2

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

More
23 Dec 2018 20:17 #122796 by Ewok2
Replied by Ewok2 on topic 7i96 Configuration Tool
Wonderful it work again
In fact with the 7i96 tools my STEP_SCALE of 400 as disapear, but by putting manualy the SCALE in the GUI to 400 it works again :-)

Many thanks ! PCW

For resuming of what to change in the tools for metrics :
- import of servo Period remove one zero
- FERROR ans MIN_FERROR still in inches and not in metrics
- STEP_SCALE not imported and replace by SCALE (not sure the CW or CCW works => the sign befor SCALE is not modified)

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

More
29 Dec 2018 18:13 #123107 by BigJohnT
Replied by BigJohnT on topic 7i96 Configuration Tool

Wonderful tools !!!
Thanks

Just 2 comments :
- In the Axis tab / Joint in the joint information, I get a distance to accelerate to max speed in inches despite the fact I select the Metric system in the First Tab :-)
- In the PC Tab, when I select the Read tMax I did not get a value in return ?


Thanks for the report, I'll look into the metric conversion as I'm sure it's just an oversight for me as I use inch.

Ahh I see an error I need to fix for tMax.

JT

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

More
29 Dec 2018 18:15 - 29 Dec 2018 23:21 #123108 by BigJohnT
Replied by BigJohnT on topic 7i96 Configuration Tool

Yes you are right with 1000000 it is better.
It seem's that the tools 7i96 put it again to 100000 even if previous ini file had 1000000.


I'll fix that as well...

JT
Last edit: 29 Dec 2018 23:21 by BigJohnT.
The following user(s) said Thank You: tommylight

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

More
29 Dec 2018 22:48 #123118 by BigJohnT
Replied by BigJohnT on topic 7i96 Configuration Tool

Is someone doing simultaneity to 7i92 ?


I have one started but not complete enough to use yet. Been busy programming chicken door and lights lol.

JT

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

More
29 Dec 2018 23:19 #123119 by BigJohnT
Replied by BigJohnT on topic 7i96 Configuration Tool

- In the PC Tab, when I select the Read tMax I did not get a value in return ?


Did you have the 7i96 connected to the PC and had the configuration up and running?

JT

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

More
03 Jan 2019 01:55 - 03 Jan 2019 02:55 #123383 by LinfieldGarage
Hey John,
new Linuxcnc user here. First of all, thank you for developing the config tool and contributing so much to the community. I have already learned a ton from your posts. I started setting up my 7i96 today and ran into a few issues with the 7i96 config tool that I wanted to run by you.

My setup:

Mesa 7i96 board
preempt RT kernel:
Linux Linuxcnc 3.2.0-6-rt-686-pae #1 SMP PREEMPT RT Debian 3.2.102-1 i686 GNU/Linux
Linuxcnc uspace 2.8 master branch
Python3 installed per your instructions

Observations:

-Sometimes the utility will create an empty folder with no HAL or INI files. It seems related to filling in certain fields but I cant identify which ones make this happen. Have you seen this?

-No configs that the utility creates will load in Linuxcnc. Even if I open gantry.ini, save it as a different name, and build a config with no changes, I get the error, see attached report.

File Attachment:

File Name: linuxcnc.report.txt
File Size:55 KB


Please let me know if you would like to see more details. Any help is appreciated.
Thanks,
Jamie
Attachments:
Last edit: 03 Jan 2019 02:55 by LinfieldGarage.

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

Moderators: PCWjmelson
Time to create page: 0.134 seconds
Powered by Kunena Forum