Search Results (Searched for: )
- PCW
02 Jun 2024 13:39
Replied by PCW on topic 7i92 not pinging
7i92 not pinging
Category: General LinuxCNC Questions
I suspect there is a latency issue.
What are the CPU type and clock speed?
and what do
halcmd show param *.tmax
and
halcmd show pin hm2_7i92.0.packet-error-total
report (when LinuxCNC is running)
What are the CPU type and clock speed?
and what do
halcmd show param *.tmax
and
halcmd show pin hm2_7i92.0.packet-error-total
report (when LinuxCNC is running)
- Anton
- Anton
02 Jun 2024 13:18 - 02 Jun 2024 13:46
Replied by Anton on topic error finishing read!
error finishing read!
Category: Driver Boards
No, I am already pinging from 192.168.1.120 to 192.168.1.121. In the text, I accidentally copied the IP from the PCW instructions. The ping works, it is probably a latency problem.
- vre
- vre
02 Jun 2024 12:36 - 02 Jun 2024 12:39
Replied by vre on topic how to make my own custom page for qtdragon_hd?
how to make my own custom page for qtdragon_hd?
Category: Qtvcp
I will use qtdragon_hd.ui from master but i will copy to that your code
snippet that makes the buttons/leds so it will be compatible.
Qtdesigner is wysiwyg editor for this ui files(for example like netbeans swing gui editor for java)?
snippet that makes the buttons/leds so it will be compatible.
Qtdesigner is wysiwyg editor for this ui files(for example like netbeans swing gui editor for java)?
- besriworld
- besriworld
02 Jun 2024 12:35
Replied by besriworld on topic Hal help for home to index with stepgen firmware update
Hal help for home to index with stepgen firmware update
Category: HAL
Yes, it works fine now. Stupid mistake. . . I did not expect the solution to the problem to be in the other axis.
- rajsekhar
- rajsekhar
02 Jun 2024 12:34
Replied by rajsekhar on topic 7i92 not pinging
7i92 not pinging
Category: General LinuxCNC Questions
well, I did the network setup as per tommylight post dated 27/11/2018. Many thanks.
now, it is pinging and in the terminal I get,
==========================================================
raycnc1@debian:~/Desktop$ mesaflash --addr 10.10.10.10 --device=ETHER --readhmid
Configuration Name: HOSTMOT2
General configuration information:
BoardName : MESA7I92
FPGA Size: 9 KGates
FPGA Pins: 144
Number of IO Ports: 2
Width of one I/O port: 17
Clock Low frequency: 100.0000 MHz
Clock High frequency: 200.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 1 of QCount in configuration
Version: 2
Registers: 5
BaseAddress: 3000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: SSerial
There are 1 of SSerial in configuration
Version: 0
Registers: 6
BaseAddress: 5B00
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 64 bytes
Module: StepGen
There are 5 of StepGen in configuration
Version: 2
Registers: 10
BaseAddress: 2000
ClockFrequency: 100.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 StepGen 0 Dir/Table2 (Out)
14 1 IOPort StepGen 0 Step/Table1 (Out)
2 2 IOPort StepGen 1 Dir/Table2 (Out)
15 3 IOPort StepGen 1 Step/Table1 (Out)
3 4 IOPort StepGen 2 Dir/Table2 (Out)
16 5 IOPort StepGen 2 Step/Table1 (Out)
4 6 IOPort StepGen 3 Dir/Table2 (Out)
17 7 IOPort StepGen 3 Step/Table1 (Out)
5 8 IOPort StepGen 4 Dir/Table2 (Out)
6 9 IOPort StepGen 4 Step/Table1 (Out)
7 10 IOPort SSerial 0 TXData0 (Out)
8 11 IOPort SSerial 0 RXData0 (In)
9 12 IOPort SSerial 0 TXData1 (Out)
10 13 IOPort SSerial 0 RXData1 (In)
11 14 IOPort QCount 0 Quad-IDX (In)
12 15 IOPort QCount 0 Quad-B (In)
13 16 IOPort QCount 0 Quad-A (In)
IO Connections for P1
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 17 IOPort None
14 18 IOPort None
2 19 IOPort None
15 20 IOPort None
3 21 IOPort None
16 22 IOPort None
4 23 IOPort None
17 24 IOPort None
5 25 IOPort None
6 26 IOPort None
7 27 IOPort None
8 28 IOPort None
9 29 IOPort None
10 30 IOPort None
11 31 IOPort None
12 32 IOPort None
13 33 IOPort None
raycnc1@debian:~/Desktop$
===================================================
But the gmoccapy configuration is not working. Axes buttons are showing in joint numbers (numeric), motors not moving, showing following errors. HAL and INI file attached.
It is Linuxcnc 2.9.2.
Please guide.
now, it is pinging and in the terminal I get,
==========================================================
raycnc1@debian:~/Desktop$ mesaflash --addr 10.10.10.10 --device=ETHER --readhmid
Configuration Name: HOSTMOT2
General configuration information:
BoardName : MESA7I92
FPGA Size: 9 KGates
FPGA Pins: 144
Number of IO Ports: 2
Width of one I/O port: 17
Clock Low frequency: 100.0000 MHz
Clock High frequency: 200.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 1 of QCount in configuration
Version: 2
Registers: 5
BaseAddress: 3000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: SSerial
There are 1 of SSerial in configuration
Version: 0
Registers: 6
BaseAddress: 5B00
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 64 bytes
Module: StepGen
There are 5 of StepGen in configuration
Version: 2
Registers: 10
BaseAddress: 2000
ClockFrequency: 100.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 StepGen 0 Dir/Table2 (Out)
14 1 IOPort StepGen 0 Step/Table1 (Out)
2 2 IOPort StepGen 1 Dir/Table2 (Out)
15 3 IOPort StepGen 1 Step/Table1 (Out)
3 4 IOPort StepGen 2 Dir/Table2 (Out)
16 5 IOPort StepGen 2 Step/Table1 (Out)
4 6 IOPort StepGen 3 Dir/Table2 (Out)
17 7 IOPort StepGen 3 Step/Table1 (Out)
5 8 IOPort StepGen 4 Dir/Table2 (Out)
6 9 IOPort StepGen 4 Step/Table1 (Out)
7 10 IOPort SSerial 0 TXData0 (Out)
8 11 IOPort SSerial 0 RXData0 (In)
9 12 IOPort SSerial 0 TXData1 (Out)
10 13 IOPort SSerial 0 RXData1 (In)
11 14 IOPort QCount 0 Quad-IDX (In)
12 15 IOPort QCount 0 Quad-B (In)
13 16 IOPort QCount 0 Quad-A (In)
IO Connections for P1
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 17 IOPort None
14 18 IOPort None
2 19 IOPort None
15 20 IOPort None
3 21 IOPort None
16 22 IOPort None
4 23 IOPort None
17 24 IOPort None
5 25 IOPort None
6 26 IOPort None
7 27 IOPort None
8 28 IOPort None
9 29 IOPort None
10 30 IOPort None
11 31 IOPort None
12 32 IOPort None
13 33 IOPort None
raycnc1@debian:~/Desktop$
===================================================
But the gmoccapy configuration is not working. Axes buttons are showing in joint numbers (numeric), motors not moving, showing following errors. HAL and INI file attached.
It is Linuxcnc 2.9.2.
Please guide.
- tommylight
02 Jun 2024 12:21
Replied by tommylight on topic Bad Latency Fujitsu Esprimo D756 i5 6500
Bad Latency Fujitsu Esprimo D756 i5 6500
Category: Computers and Hardware
EPP mode is prefered, i am just used to set it to ECP from back in the IT days. Both should work with built in ports.
- tommylight
02 Jun 2024 12:17
Replied by tommylight on topic 7i92 not pinging
7i92 not pinging
Category: General LinuxCNC Questions
What does
Ip a
Return in a terminal ?
Ip a
Return in a terminal ?
- royka
- royka
02 Jun 2024 12:17
Replied by royka on topic Bad Latency Fujitsu Esprimo D756 i5 6500
Bad Latency Fujitsu Esprimo D756 i5 6500
Category: Computers and Hardware
You could first try to find these settings in the BIOS and turn them off like: speedstep, turbo, Hyper Threading, onboard audio.
Then there are kernel parameters, for example these worked well on a Dell Optiplex with a 6500T cpu:
isolcpus=3 intel_pstate=disable processor.max_cstate=0 idle=poll cpufreq.default_governor=performance ahci.mobile_lpm_policy=1 irqaffinity=0 nomodeset quiet
There are many more parameters you can find on Google and this forum to try.
Sometimes a newer kernel can also help, this one I compiled a few weeks ago:
drive.google.com/drive/folders/1L28lG0zD...2XQJx?usp=drive_link
I've read that Tommylight set his LPT port at ECP mode.
Then there are kernel parameters, for example these worked well on a Dell Optiplex with a 6500T cpu:
isolcpus=3 intel_pstate=disable processor.max_cstate=0 idle=poll cpufreq.default_governor=performance ahci.mobile_lpm_policy=1 irqaffinity=0 nomodeset quiet
There are many more parameters you can find on Google and this forum to try.
Sometimes a newer kernel can also help, this one I compiled a few weeks ago:
drive.google.com/drive/folders/1L28lG0zD...2XQJx?usp=drive_link
I've read that Tommylight set his LPT port at ECP mode.
- tommylight
02 Jun 2024 12:16 - 02 Jun 2024 13:44
Replied by tommylight on topic error finishing read!
error finishing read!
Category: Driver Boards
Deleted as i missed the screenshot showing the correct address.
- tommylight
02 Jun 2024 12:08
Replied by tommylight on topic 7i96s + 7i89 analog spindle and mpg troubles
7i96s + 7i89 analog spindle and mpg troubles
Category: PnCConf Wizard
Machine menu, show hal configuration, on the left side choose pins and on the right side you can see values and LED's for those pins and parameters.
- amanker
- amanker
02 Jun 2024 11:53
Replied by amanker on topic Need help in choosing controller board from small honby cnc.
Need help in choosing controller board from small honby cnc.
Category: Driver Boards
My Testing Setup.
- amanker
- amanker
02 Jun 2024 11:44
Replied by amanker on topic Need help in choosing controller board from small honby cnc.
Need help in choosing controller board from small honby cnc.
Category: Driver Boards
New MPG HAL file with working PRUencoder
# Jog Pendant
loadrt PRUencoder names=encoder.0
addf PRUencoder.capture-position servo-thread
#addf PRUencoder.update-counters base-thread
setp encoder.0.position-scale 1200.0
# connect the hal encoder to linuxcnc
net encoder-count <= remora.PV.0 => encoder.0.raw_count
loadrt conv_float_s32 count=1
addf conv-float-s32.0 servo-thread
loadrt mux4 count=1
#addf encoder.capture-position servo-thread
#addf PRUencoder.update-counters base-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 joint.0.jog-vel-mode 1
setp joint.1.jog-vel-mode 1
setp joint.2.jog-vel-mode 1
# 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 <= remora.input.9
net scale2 mux4.0.sel1 <= remora.input.10
# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => joint.0.jog-scale
net mpg-scale => joint.1.jog-scale
net mpg-scale => joint.2.jog-scale
#net mpg-scale => axis.a.jog-scale
#net mpg-scale => axis.c.jog-scale
# The MPG inputs
#net mpg-a encoder.0.phase-A <= remora.input.7
#net mpg-b encoder.0.phase-B <= remora.input.8
# The Axis select inputs
net mpg-x joint.0.jog-enable <= remora.input.11
net mpg-y joint.1.jog-enable <= remora.input.12
net mpg-z joint.2.jog-enable <= remora.input.13
#net mpg-a axis.a.jog-enable <= remora.input.14
#net mpg-c axis.c.jog-enable <= remora.input.15
# The encoder output counts to the axis. Only the selected axis will move.
net encoder-count conv-float-s32.0.in
net encoder-counts conv-float-s32.0.out
#net encoder-counts <= encoder.0.counts
net encoder-counts => joint.0.jog-counts
net encoder-counts => joint.1.jog-counts
net encoder-counts => joint.2.jog-counts
#net encoder-counts => axis.c.jog-counts
- amanker
- amanker
02 Jun 2024 11:16
Replied by amanker on topic Need help in choosing controller board from small honby cnc.
Need help in choosing controller board from small honby cnc.
Category: Driver Boards
Few Things
Base Thread was available after I added entry in [EMCMOT] base_period 0 to 50000. in ini file.
That didnt changed the response scale and axis selector switch its still delayed by 20-30 secs. only selector switch signals are delayed. Not the encoder signals.
I have defined remora.PV.0 and verified recoder is counting. hall meter shows inc/dec integers.
couldnt figureout how to use conv_float_s32 thing
Base Thread was available after I added entry in [EMCMOT] base_period 0 to 50000. in ini file.
That didnt changed the response scale and axis selector switch its still delayed by 20-30 secs. only selector switch signals are delayed. Not the encoder signals.
I have defined remora.PV.0 and verified recoder is counting. hall meter shows inc/dec integers.
couldnt figureout how to use conv_float_s32 thing
- amanker
- amanker
02 Jun 2024 11:10
Replied by amanker on topic Need help in choosing controller board from small honby cnc.
Need help in choosing controller board from small honby cnc.
Category: Driver Boards
End Stop Still Not working. Its N/C type. AND I have wired to GND. So Estop pin will be on GND normally. But When its pressed GND will be open.
My Config.txt
My Remora HAL
My Remora INI
My MPG HAL
My QT_Dragon POST_GUI HAL
My Config.txt
{
"Board": "BIGTREETECH SKR OCTOPUS PRO V1.0",
"Threads":[
{
"Thread": "Base",
"Frequency": 80000
}
],
"Modules":[
{
"Thread": "Servo",
"Type": "Reset Pin",
"Comment": "Reset pin",
"Pin": "PC_15"
},
{
"Thread": "Base",
"Type": "Stepgen",
"Comment": "X - Joint 0 step generator",
"Joint Number": 0,
"Step Pin": "PF_13",
"Direction Pin": "PF_12",
"Enable Pin": "PF_14"
},
{
"Thread": "Base",
"Type": "Stepgen",
"Comment": "Y - Joint 1 step generator",
"Joint Number": 1,
"Step Pin": "PG_0",
"Direction Pin": "PG_1",
"Enable Pin": "PF_15"
},
{
"Thread": "Base",
"Type": "Stepgen",
"Comment": "Z - Joint 2 step generator",
"Joint Number": 2,
"Step Pin": "PF_11",
"Direction Pin": "PG_3",
"Enable Pin": "PG_5"
},
{
"Thread": "Base",
"Type": "Stepgen",
"Comment": "E0 - Joint 3 step generator",
"Joint Number": 3,
"Step Pin": "PG_4",
"Direction Pin": "PC_1",
"Enable Pin": "PA_0"
},
{
"Thread": "Base",
"Type": "Stepgen",
"Comment": "E1 - Joint 4 step generator",
"Joint Number": 4,
"Step Pin": "PF_9",
"Direction Pin": "PF_10",
"Enable Pin": "PG_2"
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "X min",
"Pin": "PG_6",
"Mode": "Input",
"Data Bit": 0
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "X max",
"Pin": "PG_9",
"Mode": "Input",
"Invert": "True",
"Data Bit": 1
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Y min",
"Pin": "PG_10",
"Mode": "Input",
"Invert": "True",
"Data Bit": 2
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Y max",
"Pin": "PG_11",
"Mode": "Input",
"Invert": "True",
"Data Bit": 3
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Z min",
"Pin": "PG_12",
"Mode": "Input",
"Invert": "True",
"Data Bit": 4
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Z max",
"Pin": "PG_13",
"Mode": "Input",
"Invert": "True",
"Data Bit": 5
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Probe",
"Pin": "PC_5",
"Mode": "Input",
"Invert": "True",
"Data Bit": 6
},
{
"Thread": "Base",
"Type": "Encoder",
"Comment": "MPG encoder",
"ChA Pin": "PE_7",
"ChB Pin": "PE_8",
"Modifier": "Pull Up",
"PV[i]": 0
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "X1",
"Pin": "PE_9",
"Mode": "Input",
"Invert": "True",
"Data Bit": 9
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "X10",
"Pin": "PE_10",
"Mode": "Input",
"Invert": "True",
"Data Bit": 10
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Axis X",
"Pin": "PE_12",
"Mode": "Input",
"Invert": "True",
"Data Bit": 11
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Axis Y",
"Pin": "PE_13",
"Mode": "Input",
"Invert": "True",
"Data Bit": 12
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Axis Z",
"Pin": "PE_14",
"Mode": "Input",
"Invert": "True",
"Data Bit": 13
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Axis A",
"Pin": "PE_15",
"Mode": "Input",
"Invert": "True",
"Data Bit": 14
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "Axis C",
"Pin": "PB_1",
"Mode": "Input",
"Invert": "True",
"Data Bit": 15
},
{
"Thread": "Servo",
"Type": "Estop Pin",
"Comment": "Estop pin",
"Pin": "PF_3"
},
{
"Thread": "Servo",
"Type": "Digital Pin",
"Comment": "PWM0",
"Pin": "PA_8",
"Mode": "Output",
"Data Bit": 0
}
]
}
My Remora HAL
# load the realtime components
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
#loadrt remora
loadrt remora chip_type=STM SPI_clk_div=32 PRU_base_freq=80000
#loadrt remora chip_type=LPC SPI_clk_div=64
# estop loopback, SPI comms enable and feedback
net user-enable-out <= iocontrol.0.user-enable-out => remora.SPI-enable
net user-request-enable <= iocontrol.0.user-request-enable => remora.SPI-reset
net remora-status <= remora.SPI-status => iocontrol.0.emc-enable-in
# add the remora and motion functions to threads
addf remora.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf remora.update-freq servo-thread
addf remora.write servo-thread
# Joint 0 setup
setp remora.joint.0.scale [JOINT_0]SCALE
setp remora.joint.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd <= joint.0.motor-pos-cmd => remora.joint.0.pos-cmd
net j0pos-fb <= remora.joint.0.pos-fb => joint.0.motor-pos-fb
net j0enable <= joint.0.amp-enable-out => remora.joint.0.enable
# Joint 1 setup
setp remora.joint.1.scale [JOINT_1]SCALE
setp remora.joint.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net j1pos-cmd <= joint.1.motor-pos-cmd => remora.joint.1.pos-cmd
net j1pos-fb <= remora.joint.1.pos-fb => joint.1.motor-pos-fb
net j1enable <= joint.1.amp-enable-out => remora.joint.1.enable
# Joint 2 setup
setp remora.joint.2.scale [JOINT_2]SCALE
setp remora.joint.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net j2pos-cmd <= joint.2.motor-pos-cmd => remora.joint.2.pos-cmd
net j2pos-fb <= remora.joint.2.pos-fb => joint.2.motor-pos-fb
net j2enable <= joint.2.amp-enable-out => remora.joint.2.enable
# Joint 3 setup
setp remora.joint.3.scale [JOINT_3]SCALE
setp remora.joint.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
net j3pos-cmd <= joint.3.motor-pos-cmd => remora.joint.3.pos-cmd
net j3pos-fb <= remora.joint.3.pos-fb => joint.3.motor-pos-fb
net j3enable <= joint.3.amp-enable-out => remora.joint.3.enable
# Joint 4 setup
setp remora.joint.4.scale [JOINT_4]SCALE
setp remora.joint.4.maxaccel [JOINT_4]STEPGEN_MAXACCEL
net j4pos-cmd <= joint.4.motor-pos-cmd => remora.joint.4.pos-cmd
net j4pos-fb <= remora.joint.4.pos-fb => joint.4.motor-pos-fb
net j4enable <= joint.4.amp-enable-out => remora.joint.4.enable
# end-stops
net X-min remora.input.0 => joint.0.neg-lim-sw-in
net X-max remora.input.1 => joint.0.home-sw-in joint.0.pos-lim-sw-in
net Y-min remora.input.2 => joint.1.neg-lim-sw-in
net Y-max remora.input.3 => joint.1.home-sw-in joint.1.pos-lim-sw-in
net Z-min remora.input.4 => joint.2.neg-lim-sw-in
net Z-max remora.input.5 => joint.2.home-sw-in joint.2.pos-lim-sw-in
# Probe
net probe-input motion.probe-input <= remora.input.6
# net probe-input => qtdragon.led-probe
# Spindle
loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses servo-thread
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value
net spindle-on spindle.0.on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => remora.output.0
# Set the spindle's top speed in RPM
setp pwmgen.0.scale 12000
# net spindle-speed-feedback spindle.0.speed-out-rps => spindle.0.speed-in
My Remora INI
# Basic LinuxCNC config for testing of Remora firmware
[EMC]
MACHINE = Remora-XY
DEBUG = 5
VERSION = 1.1
[DISPLAY]
DISPLAY = qtvcp qtdragon_hd
USER_COMMAND_FILE = usercommand_regularmac_800.py
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.5
DEFAULT_SPINDLE_0_SPEED = 1200
SPINDLE_INCREMENT = 200
MIN_SPINDLE_0_SPEED = 200
MAX_SPINDLE_0_SPEED = 1200
MAX_SPINDLE_POWER = 500
DEFAULT_LINEAR_VELOCITY = 10.00
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 24.00
DEFAULT_ANGULAR_VELOCITY = 36.00
MIN_ANGULAR_VELOCITY = 0
MAX_ANGULAR_VELOCITY = 45.00
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = ~/linuxcnc/nc_files
INCREMENTS = Continuous, 50mm, 10mm, 5mm, 1mm, .5mm, .1mm, .05mm, .01mm
#ANGULAR_INCREMENTS = 1,5,10,30,45,90
NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc
[KINS]
JOINTS = 5
#KINEMATICS =trivkins coordinates=XYZ kinstype=BOTH
KINEMATICS =trivkins coordinates=XYZAC
[FILTER]
PROGRAM_EXTENSION = .py Python Script
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
SUBROUTINE_PATH = :~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs; \
~/linuxcnc/nc_files/examples/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/remap-subroutines: \
~/linuxcnc/nc_files/examples/ngcgui_lib/remap_lib
ON_ABORT_COMMAND=O <on_abort> call
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0005 G80 G90 G94 G97 M5 M9
[MDI_COMMAND_LIST]
# for macro buttons
MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMachn\nZero
[PROBE]
#USE_PROBE = versaprobe
USE_PROBE = basicprobe
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
[HAL]
HALFILE = remora-xyz.hal
HALFILE = mpg.hal
POSTGUI_HALFILE = qtdragon_hd_postgui.hal
#POSTGUI_HALFILE = postgui_call_list.hal
[TRAJ]
COORDINATES = X Y Z A C
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_LINEAR_VELOCITY = 10.00
MAX_LINEAR_VELOCITY = 40.00
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
[AXIS_X]
MAX_VELOCITY = 40.00
MAX_ACCELERATION = 20.0
MIN_LIMIT = 0.0
MAX_LIMIT = 300.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = 0.0
MAX_LIMIT = 300.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXACCEL = 2000.0
SCALE = 1600
FERROR = 2
MIN_FERROR = 2.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 2.0
HOME_LATCH_VEL = 2.0
HOME_SEQUENCE = 0
[AXIS_Y]
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 20.0
MIN_LIMIT = 0.0
MAX_LIMIT = 200.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = 0.0
MAX_LIMIT = 200.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXACCEL = 2000.0
SCALE = 1600.00
FERROR = 9.0
MIN_FERROR = 5.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 2.0
HOME_LATCH_VEL = 2.0
HOME_SEQUENCE = 1
[AXIS_Z]
OFFSET_AV_RATIO = 0.2
MAX_VELOCITY = 20.0
MAX_ACCELERATION = 20.0
MIN_LIMIT = 0
MAX_LIMIT = 200
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = 0
MAX_LIMIT = 200
MAX_VELOCITY = 20.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXACCEL = 300.0
SCALE = 1200.00
FERROR = 5
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_SEQUENCE = 0
[AXIS_A]
OFFSET_AV_RATIO = 0.2
MAX_VELOCITY = 35.0
MAX_ACCELERATION = 20.0
MIN_LIMIT = 0
MAX_LIMIT = 360
[JOINT_3]
TYPE = ANGULAR
HOME = 0.0
MIN_LIMIT = 0
MAX_LIMIT = 360
MAX_VELOCITY = 35.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXACCEL = 300.0
SCALE = 71.111
FERROR = 5
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_SEQUENCE = 0
[AXIS_C]
OFFSET_AV_RATIO = 0.2
MAX_VELOCITY = 35.0
MAX_ACCELERATION = 20.0
MIN_LIMIT = 0
MAX_LIMIT = 180
[JOINT_4]
TYPE = ANGULAR
HOME = 0.0
MIN_LIMIT = 0
MAX_LIMIT = 180
MAX_VELOCITY = 35.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXACCEL = 300.0
SCALE = 71.111
FERROR = 5
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_SEQUENCE = 0
My MPG HAL
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters base-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 joint.0.jog-vel-mode 1
setp joint.1.jog-vel-mode 1
setp joint.2.jog-vel-mode 1
# 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 <= remora.input.9
net scale2 mux4.0.sel1 <= remora.input.10
# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => joint.0.jog-scale
net mpg-scale => joint.1.jog-scale
net mpg-scale => joint.2.jog-scale
#net mpg-scale => axis.a.jog-scale
#net mpg-scale => axis.c.jog-scale
# The MPG inputs
#net mpg-a encoder.0.phase-A <= remora.input.7
#net mpg-b encoder.0.phase-B <= remora.input.8
# The Axis select inputs
net mpg-x joint.0.jog-enable <= remora.input.11
net mpg-y joint.1.jog-enable <= remora.input.12
net mpg-z joint.2.jog-enable <= remora.input.13
#net mpg-a axis.a.jog-enable <= remora.input.14
#net mpg-c axis.c.jog-enable <= remora.input.15
# The encoder output counts to the axis. Only the selected axis will move.
net encoder-counts <= encoder.0.counts
net encoder-counts => joint.0.jog-counts
net encoder-counts => joint.1.jog-counts
net encoder-counts => joint.2.jog-counts
#net encoder-counts => axis.c.jog-counts
My QT_Dragon POST_GUI HAL
# load components
########################################################################
loadrt logic names=logic-and personality=0x102
addf logic-and servo-thread
# load a summing component for adding spindle lift and Z compensation
loadrt scaled_s32_sums
addf scaled-s32-sums.0 servo-thread
loadusr -Wn z_level_compensation z_level_compensation
# method parameter must be one of nearest(2), linear(1), cubic (0)
setp z_level_compensation.fade-height 0.0
setp z_level_compensation.method 1
# connect signals
########################################################################
net spindle-speed-limited => spindle.0.speed-out-rps => spindle.0.speed-in
# the unlink pin commands are only used, because they are connected
# in core_sim.hal and we use this file to simulate
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed
unlinkp iocontrol.0.tool-prep-number
net tool-change hal_manualtoolchange.change <= iocontrol.0.tool-change
net tool-changed hal_manualtoolchange.changed <= iocontrol.0.tool-changed
net tool-prep-number hal_manualtoolchange.number <= iocontrol.0.tool-prep-number
net eoffset-clear axis.z.eoffset-clear
net eoffset-counts axis.z.eoffset-counts
setp axis.z.eoffset-scale .001
net eoffset-total axis.z.eoffset
net eoffset-total qtdragon.eoffset-value
setp axis.z.eoffset-enable True
## external offsets for spindle pause function
##################################################
net eoffset-clear qtdragon.eoffset-clear
net eoffset-spindle-count <= qtdragon.eoffset-spindle-count
net spindle-pause qtdragon.spindle-inhibit spindle.0.inhibit
net probe-input qtdragon.led-probe
## Z level compensation
####################################################
net eoffset-clr2 z_level_compensation.clear => logic-and.in-01
net xpos-cmd z_level_compensation.x-pos <= joint.0.motor-pos-cmd
net ypos-cmd z_level_compensation.y-pos <= joint.1.pos-cmd
net zpos-cmd z_level_compensation.z-pos <= joint.2.pos-cmd
net z_compensation_on z_level_compensation.enable-in <= qtdragon.comp-on
net eoffset-zlevel-count z_level_compensation.counts => qtdragon.eoffset-zlevel-count
net eoffset-spindle-count scaled-s32-sums.0.in0
net eoffset-zlevel-count scaled-s32-sums.0.in1
setp scaled-s32-sums.0.scale0 1000
net eoffset-counts scaled-s32-sums.0.out-s
- CADdy
02 Jun 2024 11:06 - 02 Jun 2024 11:12
Replied by CADdy on topic z_level_compensation
z_level_compensation
Category: Qtvcp
Hi Chris,
Where should the file z_level_compensation.py be located?
In my case there is only one file z_level_compensation under /usr/bin/ without the extension .py
Peter
Where should the file z_level_compensation.py be located?
In my case there is only one file z_level_compensation under /usr/bin/ without the extension .py
Peter
Time to create page: 0.548 seconds