Anilam 3000m to Linuxcnc questions.
08 Mar 2021 21:14 #201486
by SteveCorr
Anilam 3000m to Linuxcnc questions. was created by SteveCorr
I have been all over the web, and this forum and I can't for the life of me find the answer to how to retrofit my mill to linuxcnc
I recently purchased a Supermax mill (my first mill) and it came equipped with Analim 3000m controller and drives.
Here's my question, what do I need to purchase to convert it to Linuxcnc? I gather I need a 7I77 and a 7192M, I'd prefer the ethernet interface, I'd like to keep the Analam drives and DC servo motors. How do I go about this? can someone give me a basic set of instructions to do this? I have lots of experience with computers, 3d printers, and am an electrician by trade, I do some lite programming for fun, but have never gotten into motion controllers, I would really appreciate it if someone would to point me in the right direction.
Thanks in advance for any help you may be willing to give.
I recently purchased a Supermax mill (my first mill) and it came equipped with Analim 3000m controller and drives.
Here's my question, what do I need to purchase to convert it to Linuxcnc? I gather I need a 7I77 and a 7192M, I'd prefer the ethernet interface, I'd like to keep the Analam drives and DC servo motors. How do I go about this? can someone give me a basic set of instructions to do this? I have lots of experience with computers, 3d printers, and am an electrician by trade, I do some lite programming for fun, but have never gotten into motion controllers, I would really appreciate it if someone would to point me in the right direction.
Thanks in advance for any help you may be willing to give.
Please Log in or Create an account to join the conversation.
08 Mar 2021 23:01 #201499
by andypugh
Replied by andypugh on topic Anilam 3000m to Linuxcnc questions.
You need to work out what lines are the drive enable wiring, and which lines carry the +/-10V motor velocity commands. Then you connect those to the 7i77 rather than the existing controller.
Similarly for the encoder signals. (probably glass scales on the ways for an Anilam?)
Then a certain amount of configuration using the pncconf wizard, and you should have a machine that moves, but poorly controlled.
You then need to tune the PID settings to get accurate, stable control, and it's done.
Try installing LinuxCNC and running the pncconf wizard. Work out which answers it asks that you don't yet know the answers to.
Similarly for the encoder signals. (probably glass scales on the ways for an Anilam?)
Then a certain amount of configuration using the pncconf wizard, and you should have a machine that moves, but poorly controlled.
You then need to tune the PID settings to get accurate, stable control, and it's done.
Try installing LinuxCNC and running the pncconf wizard. Work out which answers it asks that you don't yet know the answers to.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19067
- Thank you received: 6391
08 Mar 2021 23:29 #201502
by tommylight
Replied by tommylight on topic Anilam 3000m to Linuxcnc questions.
Some info on wiring and tuning here:
forum.linuxcnc.org/10-advanced-configura...ning-detailed-how-to
forum.linuxcnc.org/10-advanced-configura...ning-detailed-how-to
Please Log in or Create an account to join the conversation.
09 Mar 2021 00:43 #201507
by SteveCorr
Replied by SteveCorr on topic Anilam 3000m to Linuxcnc questions.
You guys are awesome, thank you, this gives me somewhere to start.
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
19 Mar 2021 22:38 #202905
by BigJohnT
Replied by BigJohnT on topic Anilam 3000m to Linuxcnc questions.
I'm not sure how different the 3000M is from the 1100M but I basically tossed out everything but the drives and power supply and use a 5i25 and 7i77 (7i92's were not available then). IIRC the drives had to have the enable pin grounded to enable them, so I use a relay for that.
JT
JT
The following user(s) said Thank You: Kylizer
Please Log in or Create an account to join the conversation.
21 Mar 2021 21:33 #203159
by SteveCorr
Replied by SteveCorr on topic Anilam 3000m to Linuxcnc questions.
So I was doing some digging and it's a crusader m with the 3000m update, so I'm guessing it's virtually identical to your setup. I have a 6i25 and a 7i77 that came in yesterday, I'm working my way through pncconf, however I'm unclear on how to go about getting the 7i77 into pncconf, I see options like 7i76-7i77, is that what I'm supposed to use? Also I understand the 6i25 is the same as the 5i25, so just tell pncconf it's 5i25 and move on.
As always thanks for any help, it's greatly appreciated.
As always thanks for any help, it's greatly appreciated.
Please Log in or Create an account to join the conversation.
21 Mar 2021 21:49 #203161
by andypugh
You want something that has the 7i77 on the DB25 connector, not the internal expansion header. I would suggest "7i77x2 with one 7i77" is the right choice.
Replied by andypugh on topic Anilam 3000m to Linuxcnc questions.
So I was doing some digging and it's a crusader m with the 3000m update, so I'm guessing it's virtually identical to your setup. I have a 6i25 and a 7i77 that came in yesterday, I'm working my way through pncconf, however I'm unclear on how to go about getting the 7i77 into pncconf, I see options like 7i76-7i77, is that what I'm supposed to use?
You want something that has the 7i77 on the DB25 connector, not the internal expansion header. I would suggest "7i77x2 with one 7i77" is the right choice.
Please Log in or Create an account to join the conversation.
24 Apr 2021 03:12 - 26 Apr 2021 12:17 #206930
by SteveCorr
Replied by SteveCorr on topic Anilam 3000m to Linuxcnc questions.
Im getting Joint following errors for all (0,1,2) axis. I'm unsure why, or what Im doing wrong. I understand that I should post my hal file, so here it is
As always any help would be greatly appreciated. thank you
# Generated by PNCconf at Fri Apr 23 20:00:07 2021
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=3 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx"
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
addf hm2_5i25.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_5i25.0.write servo-thread
# external output signals
# --- COOLANT-MIST ---
net coolant-mist => hm2_5i25.0.7i77.0.0.output-08
# external input signals
# --- ALL-LIMIT ---
net all-limit <= hm2_5i25.0.7i77.0.0.input-16-not
#*******************
# AXIS X JOINT 0
#*******************
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-pos-fb => pid.x.feedback
net x-output <= pid.x.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [JOINT_0]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [JOINT_0]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [JOINT_0]OUTPUT_MAX_LIMIT
net x-output => hm2_5i25.0.7i77.0.1.analogout2
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_5i25.0.7i77.0.1.analogena
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [JOINT_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.00.position
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-pos-fb => joint.0.motor-pos-fb
net x-index-enable joint.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
# ---setup home / limit switch signals---
net x-home-sw => joint.0.home-sw-in
net all-limit => joint.0.neg-lim-sw-in
net all-limit => joint.0.pos-lim-sw-in
#*******************
# AXIS Y JOINT 1
#*******************
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-pos-fb => pid.y.feedback
net y-output <= pid.y.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [JOINT_1]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout1-minlim [JOINT_1]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [JOINT_1]OUTPUT_MAX_LIMIT
net y-output => hm2_5i25.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_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [JOINT_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.01.position
net y-vel-fb <= hm2_5i25.0.encoder.01.velocity
net y-pos-fb => joint.1.motor-pos-fb
net y-index-enable joint.1.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net y-home-sw => joint.1.home-sw-in
net all-limit => joint.1.neg-lim-sw-in
net all-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS Z JOINT 2
#*******************
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-pos-fb => pid.z.feedback
net z-output <= pid.z.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [JOINT_2]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout0-minlim [JOINT_2]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [JOINT_2]OUTPUT_MAX_LIMIT
net z-output => hm2_5i25.0.7i77.0.1.analogout0
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-enable <= joint.2.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [JOINT_2]ENCODER_SCALE
net z-pos-fb <= hm2_5i25.0.encoder.02.position
net z-vel-fb <= hm2_5i25.0.encoder.02.velocity
net z-pos-fb => joint.2.motor-pos-fb
net z-index-enable joint.2.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net z-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net all-limit => joint.2.neg-lim-sw-in
net all-limit => joint.2.pos-lim-sw-in
#******************************
# 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
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
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 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-out => iocontrol.0.emc-enable-in
# ---manual tool change signals---
loadusr -W hal_manualtoolchange
net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
As always any help would be greatly appreciated. thank you
Last edit: 26 Apr 2021 12:17 by andypugh.
Please Log in or Create an account to join the conversation.
24 Apr 2021 03:14 - 26 Apr 2021 12:18 #206931
by SteveCorr
Replied by SteveCorr on topic Anilam 3000m to Linuxcnc questions.
# Generated by PNCconf at Fri Apr 23 20:00:06 2021
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = SuperMax
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/steve/linuxcnc/nc_files
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.416667
MAX_LINEAR_VELOCITY = 0.833333
MIN_LINEAR_VELOCITY = 0.016670
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xyz
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
# **** This is for info only ****
CARD0=hm2_5i25.0
[HAL]
HALUI = halui
HALFILE = SuperMax.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.10
MAX_LINEAR_VELOCITY = 1.00
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
TOOL_CHANGE_QUILL_UP = 1
#******************************************
[AXIS_X]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -0.001
MAX_LIMIT = 30.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
P = 50.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = 25399.9991872
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.001
MAX_LIMIT = 30.0
HOME_OFFSET = 0.0
#******************************************
#******************************************
[AXIS_Y]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -0.001
MAX_LIMIT = 8.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
P = 50.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = 25399.9991872
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.001
MAX_LIMIT = 8.0
HOME_OFFSET = 0.0
#******************************************
#******************************************
[AXIS_Z]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -4.0
MAX_LIMIT = 0.001
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
P = 50.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = -4000.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -4.0
MAX_LIMIT = 0.001
HOME_OFFSET = 0.0
#******************************************
Last edit: 26 Apr 2021 12:18 by andypugh.
Please Log in or Create an account to join the conversation.
24 Apr 2021 03:33 - 24 Apr 2021 03:45 #206932
by PCW
Replied by PCW on topic Anilam 3000m to Linuxcnc questions.
Following errors are expected before tuning
Are you sure the analog output polarities are correct?
(if this is wrong you will get a runaway as soon as you enable the drives
or may a small move)
John Thorntons tuning tutorial is a good start:
gnipsel.com/linuxcnc/tuning/servo.html
Are you sure the analog output polarities are correct?
(if this is wrong you will get a runaway as soon as you enable the drives
or may a small move)
John Thorntons tuning tutorial is a good start:
gnipsel.com/linuxcnc/tuning/servo.html
Last edit: 24 Apr 2021 03:45 by PCW.
The following user(s) said Thank You: SteveCorr
Please Log in or Create an account to join the conversation.
Moderators: piasdom
Time to create page: 0.100 seconds