Anilam 3000m to Linuxcnc questions.

More
5 years 7 months ago #201486 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.

Please Log in to join the conversation.

More
5 years 7 months ago #201499 by andypugh
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.

Please Log in to join the conversation.

More
5 years 7 months ago #201502 by tommylight

Please Log in to join the conversation.

More
5 years 7 months ago #201507 by SteveCorr
You guys are awesome, thank you, this gives me somewhere to start.

Please Log in to join the conversation.

More
5 years 7 months ago #202905 by BigJohnT
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

Please Log in to join the conversation.

More
5 years 7 months ago #203159 by SteveCorr
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.

Please Log in to join the conversation.

More
5 years 7 months ago #203161 by andypugh

SteveCorr wrote: 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 to join the conversation.

More
5 years 6 months ago #206930 by SteveCorr
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
Code:
# 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

Please Log in to join the conversation.

More
5 years 6 months ago #206931 by SteveCorr
Code:
# 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 #******************************************

Please Log in to join the conversation.

More
5 years 6 months ago #206932 by PCW
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

Please Log in to join the conversation.

Time to create page: 0.068 seconds
Powered by Kunena Forum