Search Results (Searched for: stepper spindle)
28 Aug 2024 19:00
Jon
Replied by jmelson on topic MCG Server Controller for 4th axis
MCG Server Controller for 4th axis
Category: Driver Boards
Yes, I am pretty sure you are right, the Mesa board probably will send step/direction to a motor drive, and the MCG drive wants analog. But, a Gecko 320X will do what you want. steps in -- brush motor out.The idea is to use it as a 4th Axis in a CNC mill. The machine already has closed loop stepper drives for x, y and z controlled via a Mesa 7i96s.
So if I understand this correctly, wiring the MCG servo amp directly to the 7i96s control the motor wont work (I'm using the analog pins for the spindle currently).
I need to have an intermediary device such as the Gecko 320X to convert the signals? or would it be easier to just get a DCS810 and use it directly with step/dir wiring to the 7i96 ? Or is it likely that this motor doesn't do step/ dir, only analog ?
Jon
28 Aug 2024 18:30
Replied by spacestate1 on topic MCG Server Controller for 4th axis
MCG Server Controller for 4th axis
Category: Driver Boards
The idea is to use it as a 4th Axis in a CNC mill. The machine already has closed loop stepper drives for x, y and z controlled via a Mesa 7i96s.
The servo motor is most likely brushed based on similar motors I've seen for sale.
So if I understand this correctly, wiring the MCG servo amp directly to the 7i96s control the motor wont work (I'm using the analog pins for the spindle currently). I need to have an intermediary device such as the Gecko 320X to convert the signals? or would it be easier to just get a DCS810 and use it directly with step/dir wiring to the 7i96 ? Or is it likely that this motor doesn't do step/ dir, only analog ?
Sorry I don;t have a ton of experience with servos.
The servo motor is most likely brushed based on similar motors I've seen for sale.
So if I understand this correctly, wiring the MCG servo amp directly to the 7i96s control the motor wont work (I'm using the analog pins for the spindle currently). I need to have an intermediary device such as the Gecko 320X to convert the signals? or would it be easier to just get a DCS810 and use it directly with step/dir wiring to the 7i96 ? Or is it likely that this motor doesn't do step/ dir, only analog ?
Sorry I don;t have a ton of experience with servos.
27 Aug 2024 15:39
8 Spindle Gang Router was created by Todd Zuercher
8 Spindle Gang Router
Category: Show Your Stuff
This 8 spindle gang router with 8 independent Z axis (using closed loop stepper motors), tandem servos for the Y axis gantry, and a servo on they X axis.
This machine has evolved a bit over time. It was my very first Linuxcnc(EMC2) retrofit. I have shared some details of it through the years. Here is a link to what it looked like when I was first setting it up on Linuxcnc.
forum.linuxcnc.org/38-general-linuxcnc-q...-help?start=50#11052
The machine originally only had 3 joints, with a single servo moving a large (2ft x 8ft) aluminum plate up and down via a centrally mounted lead screw. All 8 spindles were bolted to that plate with a hand actuated screw to fine tune each spindle's depth. The Y axis was moved by a set of helical rack and pinion gears on each end of the gantry, connected together by a 12ft long torque tube drive shaft, then a 12:1 belt reduction to the servo motor. The X axis was driven by a servo/lead screw combo. After 20years of use all of the linear components needed refreshed, so we decided to redesign most of it.
X axis received the least change, changing from a high lead lead screw connected to the servo via a belt reduction, to a new 25mm x 5mm lead ball screw directly coupled to the servo, and new linear ways.
Y axis, got new larger linear ways, and replaced the rack and pinions with two 25mm x 10mm lead ball screws and 2:1 belt reduction to the old Y and former Z servos.
For the Zs, I removed the large 3/4inch thick by 2ft x 8ft plate, cut off 8 pieces 5inch x 24inch and milled them to mount a pair of linear ways and a ball screw for each spindle and a NEMA 23 closed loop stepper motor for each.
Here is a link to a Google photo album containing some photos of the pieces I milled for each of the 8 Z-axis joints.
photos.app.goo.gl/Tx2oYkS272xBUMvZ7
Then I'm attaching a copy of my config directory so others can see how I implemented the individual Z axis joints. The Z axis is set up as a dummy master joint that automatically homes. Each spindle joint is set up as an "extra" joint. There is a GladeVCP panel that lets the operator enable and disable each of the spindles. When a spindle is enabled, that spindle's Z-joint is connected to the dummy master's position plus a tool offset. When it is disabled the spindle's joint is moved back up to it's home position. This way only the spindles actually being used are ever moved with the Z axis.
There are also buttons on the Glade panel for tool probing routines for each of the spindle Z-axis. These disable all of the other spindle Z-axis and enable the one being probed, then sets the tool offset for that spindle according to the probe results.
Then I created a GladeVCP tab window for displaying and manipulating the tool offsets for each of the spindles.
This machine has evolved a bit over time. It was my very first Linuxcnc(EMC2) retrofit. I have shared some details of it through the years. Here is a link to what it looked like when I was first setting it up on Linuxcnc.
forum.linuxcnc.org/38-general-linuxcnc-q...-help?start=50#11052
The machine originally only had 3 joints, with a single servo moving a large (2ft x 8ft) aluminum plate up and down via a centrally mounted lead screw. All 8 spindles were bolted to that plate with a hand actuated screw to fine tune each spindle's depth. The Y axis was moved by a set of helical rack and pinion gears on each end of the gantry, connected together by a 12ft long torque tube drive shaft, then a 12:1 belt reduction to the servo motor. The X axis was driven by a servo/lead screw combo. After 20years of use all of the linear components needed refreshed, so we decided to redesign most of it.
X axis received the least change, changing from a high lead lead screw connected to the servo via a belt reduction, to a new 25mm x 5mm lead ball screw directly coupled to the servo, and new linear ways.
Y axis, got new larger linear ways, and replaced the rack and pinions with two 25mm x 10mm lead ball screws and 2:1 belt reduction to the old Y and former Z servos.
For the Zs, I removed the large 3/4inch thick by 2ft x 8ft plate, cut off 8 pieces 5inch x 24inch and milled them to mount a pair of linear ways and a ball screw for each spindle and a NEMA 23 closed loop stepper motor for each.
Here is a link to a Google photo album containing some photos of the pieces I milled for each of the 8 Z-axis joints.
photos.app.goo.gl/Tx2oYkS272xBUMvZ7
Then I'm attaching a copy of my config directory so others can see how I implemented the individual Z axis joints. The Z axis is set up as a dummy master joint that automatically homes. Each spindle joint is set up as an "extra" joint. There is a GladeVCP panel that lets the operator enable and disable each of the spindles. When a spindle is enabled, that spindle's Z-joint is connected to the dummy master's position plus a tool offset. When it is disabled the spindle's joint is moved back up to it's home position. This way only the spindles actually being used are ever moved with the Z axis.
There are also buttons on the Glade panel for tool probing routines for each of the spindle Z-axis. These disable all of the other spindle Z-axis and enable the one being probed, then sets the tool offset for that spindle according to the probe results.
Then I created a GladeVCP tab window for displaying and manipulating the tool offsets for each of the spindles.
26 Aug 2024 13:19 - 26 Aug 2024 13:32
Replied by Todd Zuercher on topic What's the Oddest Machine You Have Powered with LinuxCNC
What's the Oddest Machine You Have Powered with LinuxCNC
Category: Off Topic and Test Posts
It is used for decorative wood carving (signs, plaques...). Carving 8 pieces at a time. Originally it only had a single Z axis. with a hand screw for fine adjustment of each spindle height. This was difficult to maintain and adjust the Z depth between each spindle for varying material thicknesses or when changing tools. So I recently rebuilt the machine with a separate closed loop stepper motor, ball screw and linear guides on each spindle. I also replaced the old single servo, 12ft torque tube, rack and pinion drive system for the Y axis with new larger linear ways, two ball screws and 2 servos. Then after doing all of that work I found out that the majority of the slop in the old system wasn't due to compliance in the old drive train, but fex in the bridge. So I stiffened the bridge, and it is greatly improved. (The X also got new ways, and replaced a belt driven lead screw with a direct drive ball screw and added tool touch probe and probing routine.)
16 Aug 2024 16:16 - 16 Aug 2024 16:18
Replied by DougM on topic Mesa 7I92TM Parallel port pin mapping
Mesa 7I92TM Parallel port pin mapping
Category: PnCConf Wizard
Successfully flashed 7i92t_5abobx2d.bin onto the MESA card (and performed a reload).
Here is the output of readhmid:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Configuration Name: HOSTMOT2
General configuration information:
BoardName : MESA7I92
FPGA Size: 20 KGates
FPGA Pins: 256
Number of IO Ports: 2
Width of one I/O port: 17
Clock Low frequency: 100.0000 MHz
Clock High frequency: 180.0000 MHz
IDROM Type: 3
Instance Stride 0: 4
Instance Stride 1: 64
Register Stride 0: 256
Register Stride 1: 256
Modules in configuration:
Module: DPLL
There are 1 of DPLL in configuration
Version: 0
Registers: 7
BaseAddress: 7000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: WatchDog
There are 1 of WatchDog in configuration
Version: 0
Registers: 3
BaseAddress: 0C00
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: IOPort
There are 2 of IOPort in configuration
Version: 0
Registers: 5
BaseAddress: 1000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: QCount
There are 2 of QCount in configuration
Version: 2
Registers: 5
BaseAddress: 3000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: StepGen
There are 10 of StepGen in configuration
Version: 2
Registers: 10
BaseAddress: 2000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: PWM
There are 2 of PWM in configuration
Version: 0
Registers: 5
BaseAddress: 4100
ClockFrequency: 180.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: LED
There are 1 of LED in configuration
Version: 0
Registers: 1
BaseAddress: 0200
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Configuration pin-out:
IO Connections for P2
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 0 IOPort PWM 0 PWM (Out)
14 1 IOPort None
2 2 IOPort StepGen 0 Step/Table1 (Out)
15 3 IOPort None
3 4 IOPort StepGen 0 Dir/Table2 (Out)
16 5 IOPort StepGen 8 Step/Table1 (Out)
4 6 IOPort StepGen 1 Step/Table1 (Out)
17 7 IOPort StepGen 8 Dir/Table2 (Out)
5 8 IOPort StepGen 1 Dir/Table2 (Out)
6 9 IOPort StepGen 2 Step/Table1 (Out)
7 10 IOPort StepGen 2 Dir/Table2 (Out)
8 11 IOPort StepGen 3 Step/Table1 (Out)
9 12 IOPort StepGen 3 Dir/Table2 (Out)
10 13 IOPort None
11 14 IOPort QCount 0 Quad-A (In)
12 15 IOPort QCount 0 Quad-B (In)
13 16 IOPort QCount 0 Quad-IDX (In)
IO Connections for P1
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 17 IOPort PWM 1 PWM (Out)
14 18 IOPort None
2 19 IOPort StepGen 4 Step/Table1 (Out)
15 20 IOPort None
3 21 IOPort StepGen 4 Dir/Table2 (Out)
16 22 IOPort StepGen 9 Step/Table1 (Out)
4 23 IOPort StepGen 5 Step/Table1 (Out)
17 24 IOPort StepGen 9 Dir/Table2 (Out)
5 25 IOPort StepGen 5 Dir/Table2 (Out)
6 26 IOPort StepGen 6 Step/Table1 (Out)
7 27 IOPort StepGen 6 Dir/Table2 (Out)
8 28 IOPort StepGen 7 Step/Table1 (Out)
9 29 IOPort StepGen 7 Dir/Table2 (Out)
10 30 IOPort None
11 31 IOPort QCount 1 Quad-A (In)
12 32 IOPort QCount 1 Quad-B (In)
13 33 IOPort QCount 1 Quad-IDX (In)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
and here is the current HAL file (after manual edits for num_encoders, num_stepgens and num_pwmgens)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Generated by PNCconf at Fri Aug 16 08:59:19 2024
# Using LinuxCNC version: Master (2.9)
# 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_eth board_ip="10.10.10.10" config="num_encoders=2 num_pwmgens=0 num_stepgens=3 sserial_port_0=00xxxxxx"
setp hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
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
setp hm2_7i92.0.dpll.01.timer-us -50
setp hm2_7i92.0.stepgen.timer-number 1
# external output signals
# external input signals
#*******************
# 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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500
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
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp hm2_7i92.0.stepgen.01.dirhold [JOINT_0]DIRHOLD
setp hm2_7i92.0.stepgen.01.steplen [JOINT_0]STEPLEN
setp hm2_7i92.0.stepgen.01.stepspace [JOINT_0]STEPSPACE
setp hm2_7i92.0.stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp hm2_7i92.0.stepgen.01.step_type 0
setp hm2_7i92.0.stepgen.01.control-type 1
setp hm2_7i92.0.stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.01.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => hm2_7i92.0.stepgen.01.velocity-cmd
net x-pos-fb <= hm2_7i92.0.stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_7i92.0.stepgen.01.enable
# ---setup home / limit switch signals---
net x-home-sw => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500
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
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.00.dirsetup [JOINT_1]DIRSETUP
setp hm2_7i92.0.stepgen.00.dirhold [JOINT_1]DIRHOLD
setp hm2_7i92.0.stepgen.00.steplen [JOINT_1]STEPLEN
setp hm2_7i92.0.stepgen.00.stepspace [JOINT_1]STEPSPACE
setp hm2_7i92.0.stepgen.00.position-scale [JOINT_1]STEP_SCALE
setp hm2_7i92.0.stepgen.00.step_type 0
setp hm2_7i92.0.stepgen.00.control-type 1
setp hm2_7i92.0.stepgen.00.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.00.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => hm2_7i92.0.stepgen.00.velocity-cmd
net y-pos-fb <= hm2_7i92.0.stepgen.00.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_7i92.0.stepgen.00.enable
# ---setup home / limit switch signals---
net y-home-sw => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500
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
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i92.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i92.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i92.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i92.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i92.0.stepgen.02.step_type 0
setp hm2_7i92.0.stepgen.02.control-type 1
setp hm2_7i92.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => hm2_7i92.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_7i92.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_7i92.0.stepgen.02.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-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---
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
# ---Use external manual tool change dialog---
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number
# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
I still get no movement in any of the axes. I wonder if there's something I am not properly enabling? I didn't setup the Home or e-stop signals.
Thank you for your continued assistance,
Here is the output of readhmid:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Configuration Name: HOSTMOT2
General configuration information:
BoardName : MESA7I92
FPGA Size: 20 KGates
FPGA Pins: 256
Number of IO Ports: 2
Width of one I/O port: 17
Clock Low frequency: 100.0000 MHz
Clock High frequency: 180.0000 MHz
IDROM Type: 3
Instance Stride 0: 4
Instance Stride 1: 64
Register Stride 0: 256
Register Stride 1: 256
Modules in configuration:
Module: DPLL
There are 1 of DPLL in configuration
Version: 0
Registers: 7
BaseAddress: 7000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: WatchDog
There are 1 of WatchDog in configuration
Version: 0
Registers: 3
BaseAddress: 0C00
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: IOPort
There are 2 of IOPort in configuration
Version: 0
Registers: 5
BaseAddress: 1000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: QCount
There are 2 of QCount in configuration
Version: 2
Registers: 5
BaseAddress: 3000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: StepGen
There are 10 of StepGen in configuration
Version: 2
Registers: 10
BaseAddress: 2000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: PWM
There are 2 of PWM in configuration
Version: 0
Registers: 5
BaseAddress: 4100
ClockFrequency: 180.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: LED
There are 1 of LED in configuration
Version: 0
Registers: 1
BaseAddress: 0200
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Configuration pin-out:
IO Connections for P2
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 0 IOPort PWM 0 PWM (Out)
14 1 IOPort None
2 2 IOPort StepGen 0 Step/Table1 (Out)
15 3 IOPort None
3 4 IOPort StepGen 0 Dir/Table2 (Out)
16 5 IOPort StepGen 8 Step/Table1 (Out)
4 6 IOPort StepGen 1 Step/Table1 (Out)
17 7 IOPort StepGen 8 Dir/Table2 (Out)
5 8 IOPort StepGen 1 Dir/Table2 (Out)
6 9 IOPort StepGen 2 Step/Table1 (Out)
7 10 IOPort StepGen 2 Dir/Table2 (Out)
8 11 IOPort StepGen 3 Step/Table1 (Out)
9 12 IOPort StepGen 3 Dir/Table2 (Out)
10 13 IOPort None
11 14 IOPort QCount 0 Quad-A (In)
12 15 IOPort QCount 0 Quad-B (In)
13 16 IOPort QCount 0 Quad-IDX (In)
IO Connections for P1
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 17 IOPort PWM 1 PWM (Out)
14 18 IOPort None
2 19 IOPort StepGen 4 Step/Table1 (Out)
15 20 IOPort None
3 21 IOPort StepGen 4 Dir/Table2 (Out)
16 22 IOPort StepGen 9 Step/Table1 (Out)
4 23 IOPort StepGen 5 Step/Table1 (Out)
17 24 IOPort StepGen 9 Dir/Table2 (Out)
5 25 IOPort StepGen 5 Dir/Table2 (Out)
6 26 IOPort StepGen 6 Step/Table1 (Out)
7 27 IOPort StepGen 6 Dir/Table2 (Out)
8 28 IOPort StepGen 7 Step/Table1 (Out)
9 29 IOPort StepGen 7 Dir/Table2 (Out)
10 30 IOPort None
11 31 IOPort QCount 1 Quad-A (In)
12 32 IOPort QCount 1 Quad-B (In)
13 33 IOPort QCount 1 Quad-IDX (In)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
and here is the current HAL file (after manual edits for num_encoders, num_stepgens and num_pwmgens)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Generated by PNCconf at Fri Aug 16 08:59:19 2024
# Using LinuxCNC version: Master (2.9)
# 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_eth board_ip="10.10.10.10" config="num_encoders=2 num_pwmgens=0 num_stepgens=3 sserial_port_0=00xxxxxx"
setp hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
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
setp hm2_7i92.0.dpll.01.timer-us -50
setp hm2_7i92.0.stepgen.timer-number 1
# external output signals
# external input signals
#*******************
# 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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500
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
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp hm2_7i92.0.stepgen.01.dirhold [JOINT_0]DIRHOLD
setp hm2_7i92.0.stepgen.01.steplen [JOINT_0]STEPLEN
setp hm2_7i92.0.stepgen.01.stepspace [JOINT_0]STEPSPACE
setp hm2_7i92.0.stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp hm2_7i92.0.stepgen.01.step_type 0
setp hm2_7i92.0.stepgen.01.control-type 1
setp hm2_7i92.0.stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.01.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => hm2_7i92.0.stepgen.01.velocity-cmd
net x-pos-fb <= hm2_7i92.0.stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_7i92.0.stepgen.01.enable
# ---setup home / limit switch signals---
net x-home-sw => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500
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
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.00.dirsetup [JOINT_1]DIRSETUP
setp hm2_7i92.0.stepgen.00.dirhold [JOINT_1]DIRHOLD
setp hm2_7i92.0.stepgen.00.steplen [JOINT_1]STEPLEN
setp hm2_7i92.0.stepgen.00.stepspace [JOINT_1]STEPSPACE
setp hm2_7i92.0.stepgen.00.position-scale [JOINT_1]STEP_SCALE
setp hm2_7i92.0.stepgen.00.step_type 0
setp hm2_7i92.0.stepgen.00.control-type 1
setp hm2_7i92.0.stepgen.00.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.00.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => hm2_7i92.0.stepgen.00.velocity-cmd
net y-pos-fb <= hm2_7i92.0.stepgen.00.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_7i92.0.stepgen.00.enable
# ---setup home / limit switch signals---
net y-home-sw => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500
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
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i92.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i92.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i92.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i92.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i92.0.stepgen.02.step_type 0
setp hm2_7i92.0.stepgen.02.control-type 1
setp hm2_7i92.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => hm2_7i92.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_7i92.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_7i92.0.stepgen.02.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-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---
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
# ---Use external manual tool change dialog---
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number
# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
I still get no movement in any of the axes. I wonder if there's something I am not properly enabling? I didn't setup the Home or e-stop signals.
Thank you for your continued assistance,
13 Aug 2024 20:25
MESA 7c81 HELP! was created by waukeenahBob
MESA 7c81 HELP!
Category: Driver Boards
I have a good bit of experience with CNC... built 2 machines in the past... one Mach3 another GRBL. Long time linux admin. Have built lots of things with RPI, New to LinuxCNC.
I am refactoring a vertical mill that I converted to CNC and Mach 3 several years ago to use LinuxCNC. In the past I used a UC ETH-300 which of course is not compatible with LinuxCNC. So I bought a Mesa 7c81 and an 8gb Raspberry Pi 4.
I have everything connected, Installed LinuxCNC 2.9.2 using the RPI image, have enabled SPI and it appears that I am talking to the Mesa card.
I have a standard chinese BOB connected to port 1 and plan to use ports 2 and 7 for home/limit switches, probe, spindle etc.
Started with pncconf selected my card and the 5ABOB3 firmware, looked up my stepper drivers for time, space, hold etc...
Cannot figure out the P1, P2, P7 Mesa Card config pages as far as pins goes... expecting to assign pin2 for step X etc... according to the BOB documentation.
I have assigned the Axis StepGen's to P1 0:, 1:, and 2: just to be able to write the config out.
When I try to test/tune an axis I hear the relay trip on the BOB which is encouraging... and when I try to jog I see the numbers changing on the Hal Meter etc but I get nothing from my steppers... they do feel slightly warm so I believe there is current going to them... but no movement at all
if I try to launch LinuxCNC using the config pncconf created I see some errors come up
"Unexpected realtime delay on task0 with period 70000" and hm2/hm2_7c81.0 Watchdog was bit.
My plan is to get basic stuff working and then add complexity...
Wondering if anyone has a config they would be willing to share?
Or advice on where to go next... been googling and searching my tail off and figure there is something basic I am missing and once I see it properly configured I will have a big DUH moment
Any help would be appreciated!
I am refactoring a vertical mill that I converted to CNC and Mach 3 several years ago to use LinuxCNC. In the past I used a UC ETH-300 which of course is not compatible with LinuxCNC. So I bought a Mesa 7c81 and an 8gb Raspberry Pi 4.
I have everything connected, Installed LinuxCNC 2.9.2 using the RPI image, have enabled SPI and it appears that I am talking to the Mesa card.
I have a standard chinese BOB connected to port 1 and plan to use ports 2 and 7 for home/limit switches, probe, spindle etc.
Started with pncconf selected my card and the 5ABOB3 firmware, looked up my stepper drivers for time, space, hold etc...
Cannot figure out the P1, P2, P7 Mesa Card config pages as far as pins goes... expecting to assign pin2 for step X etc... according to the BOB documentation.
I have assigned the Axis StepGen's to P1 0:, 1:, and 2: just to be able to write the config out.
When I try to test/tune an axis I hear the relay trip on the BOB which is encouraging... and when I try to jog I see the numbers changing on the Hal Meter etc but I get nothing from my steppers... they do feel slightly warm so I believe there is current going to them... but no movement at all
if I try to launch LinuxCNC using the config pncconf created I see some errors come up
"Unexpected realtime delay on task0 with period 70000" and hm2/hm2_7c81.0 Watchdog was bit.
My plan is to get basic stuff working and then add complexity...
Wondering if anyone has a config they would be willing to share?
Or advice on where to go next... been googling and searching my tail off and figure there is something basic I am missing and once I see it properly configured I will have a big DUH moment
Any help would be appreciated!
10 Aug 2024 21:33
Trouble getting PWM to work with 7i92TF and BoB but steppers working fine
Category: PnCConf Wizard
Hi everyone, I've managed so far after all these years to get all the info I need on these boards by being a lurker, so thank you everyone for all the knowledge on here. I'm at a crossroads with this one though as I'm still quite new with the mesa boards.
I have the following BoB below and can confirm I can get the PWM working using software stepping by setting it on Pin 1 in the Stepconf wizard.
When setting this up using the Mesa board (7i92TF), I followed the guide below which works perfectly fine for running my steppers.
forum.linuxcnc.org/49-basic-configuratio...rallel-port-bob-g540
What needs to be changed on my setup to get this working? Mind you the config on my mesa board is whatever came straight out of the box.
My intention is to use this PWM signal to control a laser since I mainly control my spindle manually (or RS485). I'm currently testing this potential laser setup right now with an LED. If this helps, one thing I also noticed differently between software stepping and the mesa board, is that during PC boot the LED is already lit versus when it is connected to parallel port it is not.
I've attached my INI and HAL file for the mesa config. Any help would be appreciated, thanks!
I have the following BoB below and can confirm I can get the PWM working using software stepping by setting it on Pin 1 in the Stepconf wizard.
When setting this up using the Mesa board (7i92TF), I followed the guide below which works perfectly fine for running my steppers.
forum.linuxcnc.org/49-basic-configuratio...rallel-port-bob-g540
What needs to be changed on my setup to get this working? Mind you the config on my mesa board is whatever came straight out of the box.
My intention is to use this PWM signal to control a laser since I mainly control my spindle manually (or RS485). I'm currently testing this potential laser setup right now with an LED. If this helps, one thing I also noticed differently between software stepping and the mesa board, is that during PC boot the LED is already lit versus when it is connected to parallel port it is not.
I've attached my INI and HAL file for the mesa config. Any help would be appreciated, thanks!
10 Aug 2024 15:30
5x10 servo router rebuild - analog of step/dir with mesa card?
Category: General LinuxCNC Questions
I've got a 5' x 10' CNC router with a failed Mach 3 control. It has Yaskawa Servos (SGMGH-09ACA61) and was set up for step/dir with an ethernet smooth stepper. It was "open loop" with that control. It has four motors for the 3 main axis and a 5th motor for a rotary axis. I might not use the 5th axis but I do have a crazy idea for an automated dust collection "axis" that would probably use stepper motors.
I have a Mesa 7I76e that I bought several years ago for another machine that has yet to be completed and I think this would be my fastest/easiest control to drop in but would still leave me open loop to the control. Instead I've been thinking of running with analog servo signals and the encoder feedback into LinuxCNC using a 7I92TF with a 7I77 or a single 7I97T. It seems the 7I97T might be a bit light on general I/O since the machine has an ATC spindle and several other pneumatics that need to be controlled and sensed so I'm leaning towards the former combo.
Any suggestions wrt to Mesa card availability and the advantage of using analog vs step/dir in this application?
I have a Mesa 7I76e that I bought several years ago for another machine that has yet to be completed and I think this would be my fastest/easiest control to drop in but would still leave me open loop to the control. Instead I've been thinking of running with analog servo signals and the encoder feedback into LinuxCNC using a 7I92TF with a 7I77 or a single 7I97T. It seems the 7I97T might be a bit light on general I/O since the machine has an ATC spindle and several other pneumatics that need to be controlled and sensed so I'm leaning towards the former combo.
Any suggestions wrt to Mesa card availability and the advantage of using analog vs step/dir in this application?
07 Aug 2024 18:50 - 07 Aug 2024 18:52
Replied by Mecanix on topic LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
Category: Computers and Hardware
Just checked my stepper drives and as expected (a.k.a. modern equipment), they do have built-in isolation (optos). Same as my spindle BLDC motor drive, all built-in modern stuff. And so wtf, why the excessive legendary need for so called isolation on those motion control boards for exactly?
Calling the electron godz lol...
Calling the electron godz lol...
07 Aug 2024 18:32 - 07 Aug 2024 18:46
Replied by Mecanix on topic LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
Category: Computers and Hardware
I'm no control motion board expert by any trade. First one. The "Legend" has it that they are noisy and spikey. Mind you I'm having no issue running a colorlight on my lathe which share the same 5V&GND for pretty much everything (rotary encoder, switches, stepper drives, estop, everything basically). Just got isolation on the Spindle/BLDC motor drive (obviously), but that's on the drive itself not on the motion control board. And so I'm a bit lost as to what's best isolation design, low-cost, "convenience-wise".
btw - I apologize for hijacking your thread and abusing your kind generosity (and expertise!!). Just trying to get a semi-universal "RIO Control Board" schematic out for the community to copy/paste and ideally do their own...
Edit: perhaps worth using another forum for those sort of questions?! If so do not hesitate to recommend one/more/many, and I'll be on my way out!!
btw - I apologize for hijacking your thread and abusing your kind generosity (and expertise!!). Just trying to get a semi-universal "RIO Control Board" schematic out for the community to copy/paste and ideally do their own...
Edit: perhaps worth using another forum for those sort of questions?! If so do not hesitate to recommend one/more/many, and I'll be on my way out!!
07 Aug 2024 03:44 - 07 Aug 2024 04:22
Question regarding shielding was created by arijitdutta
Question regarding shielding
Category: General LinuxCNC Questions
Hi all,
This is my first time playing with electronics. I had almost zero knowledge but during the last 3 months I understand quite a bit now. I was quite afraid of it (especially Linuxcnc, I was keeping Acorn ahead because of the ease) but I am quite enjoying it now. I have wired my lathe previously with a printer BOB and it ran successfully. Now I am getting it hooked with a mesa 7i96s card with nema 23 motors and a spindle encoder. Getting a mesa board here in India is quite hectic so I will ask some questions frequently so that I dont mess anything up.
1. What are the 5V, GND pins on each stepper axis of the Mesa card used for?
2. I heard that you need shielded wires for steppers. So do I need to shield the pulse and direction wires from the mesa card to the drivers along with the wires from the drivers to the motor or just the latter is enough?
3. Even though I searched quite a bit about the enable signal of the drivers, I couldn't land on a decision on how to wire it. I understand that leaving it unconnected or having the pins low enables them and having them high disables them. I really dont want the steppers to be enabled all the time, maybe F1, F2 from Linuxcnc will disable-enable them. Any wiring suggestions?
4. There is a Frame GND on the Mesa card. Do I need to ground it?
Thanks in advance..
EDIT: I now understand what the 5v and GND is for on the mesa stepper axis segments. I somehow missed it on the manual..
This is my first time playing with electronics. I had almost zero knowledge but during the last 3 months I understand quite a bit now. I was quite afraid of it (especially Linuxcnc, I was keeping Acorn ahead because of the ease) but I am quite enjoying it now. I have wired my lathe previously with a printer BOB and it ran successfully. Now I am getting it hooked with a mesa 7i96s card with nema 23 motors and a spindle encoder. Getting a mesa board here in India is quite hectic so I will ask some questions frequently so that I dont mess anything up.
1. What are the 5V, GND pins on each stepper axis of the Mesa card used for?
2. I heard that you need shielded wires for steppers. So do I need to shield the pulse and direction wires from the mesa card to the drivers along with the wires from the drivers to the motor or just the latter is enough?
3. Even though I searched quite a bit about the enable signal of the drivers, I couldn't land on a decision on how to wire it. I understand that leaving it unconnected or having the pins low enables them and having them high disables them. I really dont want the steppers to be enabled all the time, maybe F1, F2 from Linuxcnc will disable-enable them. Any wiring suggestions?
4. There is a Frame GND on the Mesa card. Do I need to ground it?
Thanks in advance..
EDIT: I now understand what the 5v and GND is for on the mesa stepper axis segments. I somehow missed it on the manual..
05 Aug 2024 23:47
Replied by OGMaker on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
[ Vfdmod ] An easy VFD control over MODBUS RTU
Category: HAL
Hey aekhv,
Your github and docs seem to be in a bit of a scramble with your name change on github. Any estimate of when that will get straightened out? Love the project I was able to put together a working configuration for the StepperOnline EV200 pretty easily. Mb2hal just didn't work for this device. Still trying to figure out what their spindle speed register wants, but that is their documentation problem.
Your github and docs seem to be in a bit of a scramble with your name change on github. Any estimate of when that will get straightened out? Love the project I was able to put together a working configuration for the StepperOnline EV200 pretty easily. Mb2hal just didn't work for this device. Still trying to figure out what their spindle speed register wants, but that is their documentation problem.
05 Aug 2024 22:36
Replied by captain-panda on topic 3 Achs Fräse mit MESA 7C80 und Raspi 4
3 Achs Fräse mit MESA 7C80 und Raspi 4
Category: Deutsch
Hello,
Please excuse my crashing into this thread. I've found it very useful so far and managed to set up 6 out of 7 parts of my 30-year-old Gravograph Unica that I'm trying to convert to LinuxCNC running on a Raspberry Pi with a Mesa 7C80.
What's working fine so far are the 3 steppers and corresponding home switches X, Y & Z.
But: The spindle won't turn on.
I'd like to control it via PWM and as far as I can tell there should be PWM output on pin 2 of TB5 of the 7C80.
There's no useable output there, and I'm not sure where to search and what to do next ...
If there's any chance you could have a look at my .hal and .ini files, that would be very much appreciated
I also included the output of the terminal from where LinuxCNC was launched, and the output of "halcmd show signal spin".
Voltage between SINDLE+ and SPINDLE- seems to be just noise or in the mV-Magnitude.
Thank you for reading and best regards,
Erik
captain-panda
Please excuse my crashing into this thread. I've found it very useful so far and managed to set up 6 out of 7 parts of my 30-year-old Gravograph Unica that I'm trying to convert to LinuxCNC running on a Raspberry Pi with a Mesa 7C80.
What's working fine so far are the 3 steppers and corresponding home switches X, Y & Z.
But: The spindle won't turn on.
I'd like to control it via PWM and as far as I can tell there should be PWM output on pin 2 of TB5 of the 7C80.
There's no useable output there, and I'm not sure where to search and what to do next ...
If there's any chance you could have a look at my .hal and .ini files, that would be very much appreciated
I also included the output of the terminal from where LinuxCNC was launched, and the output of "halcmd show signal spin".
Voltage between SINDLE+ and SPINDLE- seems to be just noise or in the mV-Magnitude.
Thank you for reading and best regards,
Erik
captain-panda
04 Aug 2024 22:16
EtherCAT i/o board for spindle, estop and mpg was created by avive
EtherCAT i/o board for spindle, estop and mpg
Category: EtherCAT
I'm assembling a machine on EtherCAT. All the mechanics are ready, checked on stepper motors while the servo motors are still on the way. But the spindle is available and there was a question of connecting it. The speed can be controlled by 0-10 volts or PWM. Plus, I need to connect Estop and MPG. I'm considering the following options:
1. Since I have a computer with two network ports, I can connect RP2040 via Ethernet to one of them. Cheap and angry, but I would like to do everything on one technology.
2. Noname EtherCAT i/o board from Ali Express (but which one?)
3. Beckhoff EK1828 coupler with 4 digital inputs and 8 digital outputs. www.beckhoff.com/en-en/products/i-o/ethe...-coupler/ek1828.html But is it possible to issue a computer-generated PWM signal through it and receive feedback from the spindle about the speed?
I would like to do with one device that covers all needs except servos. What are your recommendations, colleagues?
1. Since I have a computer with two network ports, I can connect RP2040 via Ethernet to one of them. Cheap and angry, but I would like to do everything on one technology.
2. Noname EtherCAT i/o board from Ali Express (but which one?)
3. Beckhoff EK1828 coupler with 4 digital inputs and 8 digital outputs. www.beckhoff.com/en-en/products/i-o/ethe...-coupler/ek1828.html But is it possible to issue a computer-generated PWM signal through it and receive feedback from the spindle about the speed?
I would like to do with one device that covers all needs except servos. What are your recommendations, colleagues?
04 Aug 2024 03:13
Hello, I would like to add an EtherCAT IO device. What should I do
Category: EtherCAT
# Generated by PNCconf at Sat Sep 10 10:10:56 2016
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
#autoconverted trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=4
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf cia402.3.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf cia402.3.write-all servo-thread
addf lcec.write-all servo-thread
#*******************
# AXIS X
#*******************
# --- joint signals for motion
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-pos-fb <= joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
# --- connect stepper driver to joint
net x-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => cia402.0.pos-fb
net x-enable => cia402.0.enable
# --- ect60 settings
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 26214.4
# --- from stepper(ethercat) to cia402
net x-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
# --- from cia402 to stepper(ethercat)
net x-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
#*******************
# AXIS Y
#*******************
# --- joint signals for motion
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-pos-fb <= joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
# --- connect stepper driver to the joint
net y-pos-cmd => cia402.1.pos-cmd
net y-pos-fb => cia402.1.pos-fb
net y-enable => cia402.1.enable
# --- ect60 settings
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net y-statusword lcec.0.1.cia-statusword => cia402.1.statusword
net y-opmode-display lcec.0.1.opmode-display => cia402.1.opmode-display
net y-drv-act-pos lcec.0.1.actual-position => cia402.1.drv-actual-position
net y-drv-act-velo lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net y-controlword cia402.1.controlword => lcec.0.1.cia-controlword
net y-modes-of-operation cia402.1.opmode => lcec.0.1.opmode
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
net y-drv-target-velo cia402.1.drv-target-velocity => lcec.0.1.target-velocity
#*******************
# AXIS z
#*******************
# --- joint signals for motion
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-pos-fb <= joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
# --- connect stepper driver to the joint
net z-pos-cmd => cia402.2.pos-cmd
net z-pos-fb => cia402.2.pos-fb
net z-enable => cia402.2.enable
# --- ect60 settings
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net z-statusword lcec.0.2.cia-statusword => cia402.2.statusword
net z-opmode-display lcec.0.2.opmode-display => cia402.2.opmode-display
net z-drv-act-pos lcec.0.2.actual-position => cia402.2.drv-actual-position
net z-drv-act-velo lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net z-controlword cia402.2.controlword => lcec.0.2.cia-controlword
net z-modes-of-operation cia402.2.opmode => lcec.0.2.opmode
net z-drv-target-pos cia402.2.drv-target-position => lcec.0.2.target-position
net z-drv-target-velo cia402.2.drv-target-velocity => lcec.0.2.target-velocity
#*******************
# SPINDLE
#*******************
# --- joint signals for motion
net spindle-speed-cmd spindle.0.speed-out => cia402.3.velocity-cmd
net spindle-speed-fb cia402.3.velocity-fb => spindle.0.speed-in
net spindle-on spindle.0.on => cia402.3.enable
# --- ect60 settings
setp cia402.3.csp-mode 0
setp cia402.3.pos-scale 4000
setp cia402.3.velo-scale 400
# --- from servo(ethercat) to cia402
net s-statusword lcec.0.3.cia-statusword => cia402.3.statusword
net s-opmode-display lcec.0.3.opmode-display => cia402.3.opmode-display
net s-drv-act-pos lcec.0.3.actual-position => cia402.3.drv-actual-position
net s-drv-act-velo lcec.0.3.actual-velocity => cia402.3.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net s-controlword cia402.3.controlword => lcec.0.3.cia-controlword
net s-modes-of-operation cia402.3.opmode => lcec.0.3.opmode
net s-drv-target-pos cia402.3.drv-target-position => lcec.0.3.target-position
net s-drv-target-velo cia402.3.drv-target-velocity => lcec.0.3.target-velocity
#*********************
# E-STOP
#*********************
setp iocontrol.0.emc-enable-in 1
loadrt hal_parport cfg="0 in"
addf parport.0.read servo-thread
#addf mux4.0 servo-thread
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux4.0 servo-thread
# If your MPG outputs a quadrature signal per click set x4 to 1
# If your MPG puts out 1 pulse per click set x4 to 0
setp encoder.0.x4-mode 0
# For velocity mode, set to 1
# In velocity mode the axis stops when the dial is stopped
# even if that means the commanded motion is not completed,
# For position mode (the default), set to 0
# In position mode the axis will move exactly jog-scale
# units for each count, regardless of how long that might take,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0
# This sets the scale that will be used based on the input to the mux4
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001
# The inputs to the mux4 component
net scale1 mux4.0.sel0 <= parport.0.pin-08-in-not
net scale2 mux4.0.sel1 <= parport.0.pin-07-in-not
# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale
# The MPG inputs
net mpg-a encoder.0.phase-A <= parport.0.pin-13-in
net mpg-b encoder.0.phase-B <= parport.0.pin-10-in
# The Axis select inputs
net mpg-x axis.x.jog-enable <= parport.0.pin-15-in-not
net mpg-y axis.y.jog-enable <= parport.0.pin-11-in
net mpg-z axis.z.jog-enable <= parport.0.pin-14-in
# The encoder output counts to the axis. Only the selected axis will move.
net encoder-counts <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts
lite@LinuxCNC:~$ sudo ethercat slaves
0 0:0 OP + L7EC-400S(COE)
1 0:1 OP + L7EC-400S(COE)
2 0:2 OP + L7EC-400S(COE)
3 0:3 PREOP E EM32DX-E4
/* Master 0, Slave 3, "EM32DX-E4"
* Vendor ID: 0x00004321
* Product code: 0x01100073
* Revision number: 0x18050210
*/
ec_pdo_entry_info_t slave_3_pdo_entries[] = {
{0x7000, 0x01, 16}, /* OUT */
{0x6000, 0x01, 16}, /* IN */
};
ec_pdo_info_t slave_3_pdos[] = {
{0x1600, 1, slave_3_pdo_entries + 0}, /* RxPDO0-Map */
{0x1a00, 1, slave_3_pdo_entries + 1}, /* TxPDO1-Map */
};
ec_sync_info_t slave_3_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 1, slave_3_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 1, slave_3_pdos + 1, EC_WD_DISABLE},
{0xff}
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
#autoconverted trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=4
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf cia402.3.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf cia402.3.write-all servo-thread
addf lcec.write-all servo-thread
#*******************
# AXIS X
#*******************
# --- joint signals for motion
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-pos-fb <= joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
# --- connect stepper driver to joint
net x-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => cia402.0.pos-fb
net x-enable => cia402.0.enable
# --- ect60 settings
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 26214.4
# --- from stepper(ethercat) to cia402
net x-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
# --- from cia402 to stepper(ethercat)
net x-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
#*******************
# AXIS Y
#*******************
# --- joint signals for motion
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-pos-fb <= joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
# --- connect stepper driver to the joint
net y-pos-cmd => cia402.1.pos-cmd
net y-pos-fb => cia402.1.pos-fb
net y-enable => cia402.1.enable
# --- ect60 settings
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net y-statusword lcec.0.1.cia-statusword => cia402.1.statusword
net y-opmode-display lcec.0.1.opmode-display => cia402.1.opmode-display
net y-drv-act-pos lcec.0.1.actual-position => cia402.1.drv-actual-position
net y-drv-act-velo lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net y-controlword cia402.1.controlword => lcec.0.1.cia-controlword
net y-modes-of-operation cia402.1.opmode => lcec.0.1.opmode
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
net y-drv-target-velo cia402.1.drv-target-velocity => lcec.0.1.target-velocity
#*******************
# AXIS z
#*******************
# --- joint signals for motion
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-pos-fb <= joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
# --- connect stepper driver to the joint
net z-pos-cmd => cia402.2.pos-cmd
net z-pos-fb => cia402.2.pos-fb
net z-enable => cia402.2.enable
# --- ect60 settings
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net z-statusword lcec.0.2.cia-statusword => cia402.2.statusword
net z-opmode-display lcec.0.2.opmode-display => cia402.2.opmode-display
net z-drv-act-pos lcec.0.2.actual-position => cia402.2.drv-actual-position
net z-drv-act-velo lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net z-controlword cia402.2.controlword => lcec.0.2.cia-controlword
net z-modes-of-operation cia402.2.opmode => lcec.0.2.opmode
net z-drv-target-pos cia402.2.drv-target-position => lcec.0.2.target-position
net z-drv-target-velo cia402.2.drv-target-velocity => lcec.0.2.target-velocity
#*******************
# SPINDLE
#*******************
# --- joint signals for motion
net spindle-speed-cmd spindle.0.speed-out => cia402.3.velocity-cmd
net spindle-speed-fb cia402.3.velocity-fb => spindle.0.speed-in
net spindle-on spindle.0.on => cia402.3.enable
# --- ect60 settings
setp cia402.3.csp-mode 0
setp cia402.3.pos-scale 4000
setp cia402.3.velo-scale 400
# --- from servo(ethercat) to cia402
net s-statusword lcec.0.3.cia-statusword => cia402.3.statusword
net s-opmode-display lcec.0.3.opmode-display => cia402.3.opmode-display
net s-drv-act-pos lcec.0.3.actual-position => cia402.3.drv-actual-position
net s-drv-act-velo lcec.0.3.actual-velocity => cia402.3.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net s-controlword cia402.3.controlword => lcec.0.3.cia-controlword
net s-modes-of-operation cia402.3.opmode => lcec.0.3.opmode
net s-drv-target-pos cia402.3.drv-target-position => lcec.0.3.target-position
net s-drv-target-velo cia402.3.drv-target-velocity => lcec.0.3.target-velocity
#*********************
# E-STOP
#*********************
setp iocontrol.0.emc-enable-in 1
loadrt hal_parport cfg="0 in"
addf parport.0.read servo-thread
#addf mux4.0 servo-thread
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux4.0 servo-thread
# If your MPG outputs a quadrature signal per click set x4 to 1
# If your MPG puts out 1 pulse per click set x4 to 0
setp encoder.0.x4-mode 0
# For velocity mode, set to 1
# In velocity mode the axis stops when the dial is stopped
# even if that means the commanded motion is not completed,
# For position mode (the default), set to 0
# In position mode the axis will move exactly jog-scale
# units for each count, regardless of how long that might take,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0
# This sets the scale that will be used based on the input to the mux4
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001
# The inputs to the mux4 component
net scale1 mux4.0.sel0 <= parport.0.pin-08-in-not
net scale2 mux4.0.sel1 <= parport.0.pin-07-in-not
# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale
# The MPG inputs
net mpg-a encoder.0.phase-A <= parport.0.pin-13-in
net mpg-b encoder.0.phase-B <= parport.0.pin-10-in
# The Axis select inputs
net mpg-x axis.x.jog-enable <= parport.0.pin-15-in-not
net mpg-y axis.y.jog-enable <= parport.0.pin-11-in
net mpg-z axis.z.jog-enable <= parport.0.pin-14-in
# The encoder output counts to the axis. Only the selected axis will move.
net encoder-counts <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts
lite@LinuxCNC:~$ sudo ethercat slaves
0 0:0 OP + L7EC-400S(COE)
1 0:1 OP + L7EC-400S(COE)
2 0:2 OP + L7EC-400S(COE)
3 0:3 PREOP E EM32DX-E4
/* Master 0, Slave 3, "EM32DX-E4"
* Vendor ID: 0x00004321
* Product code: 0x01100073
* Revision number: 0x18050210
*/
ec_pdo_entry_info_t slave_3_pdo_entries[] = {
{0x7000, 0x01, 16}, /* OUT */
{0x6000, 0x01, 16}, /* IN */
};
ec_pdo_info_t slave_3_pdos[] = {
{0x1600, 1, slave_3_pdo_entries + 0}, /* RxPDO0-Map */
{0x1a00, 1, slave_3_pdo_entries + 1}, /* TxPDO1-Map */
};
ec_sync_info_t slave_3_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 1, slave_3_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 1, slave_3_pdos + 1, EC_WD_DISABLE},
{0xff}
Time to create page: 0.828 seconds