TWOPASS error (should be User Error)
02 Oct 2019 08:58 #146869
by phillc54
TWOPASS error was created by phillc54
I am getting a twopass error when loading a userspace component from a .tcl HAL file in Gmoccapy.
The same component using the same .tcl HAL file loads fine from Axis.
I tried the last three lines (one at a time) of the .tcl file and the behaviour was identical.
I then tried a .hal HAL file using the last two lines (one at a time) and again the behaviour was identical.
Gmoccapy terminal output:
phill@stretch ~ $ /media/imac/git/linuxcnc-dev/scripts/linuxcnc linuxcnc/configs/gmocca_metric/gmocca_metric.ini
LINUXCNC - 2.8.0~pre1
Machine configuration directory is '/home/phill/linuxcnc/configs/gmocca_metric'
Machine configuration file is 'gmocca_metric.ini'
Starting LinuxCNC...
twopass:invoked with <verbose> options
twopass: pass0:BEGIN
twopass:found ./machine.hal
twopass: converted hal line for tcl from ./machine.hal:
twopass: hal: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=[TRAJ]SPINDLES
twopass: tcl: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=$::TRAJ(SPINDLES)
twopass: converted ./machine.hal to /tmp/tmp_machine.hal
twopass:found ./plasmac.tcl
twopass: tclfile: ./plasmac.tcl
twopass:found ./gmocca_metric_connections.hal
twopass: converted ./gmocca_metric_connections.hal to /tmp/tmp_gmocca_metric_connections.hal
twopass: sourcing: /tmp/tmp_machine.hal
twopass: sourcing: ./plasmac.tcl
twopass:pass0: loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
HAL: ERROR: exit called before init
twopass: Error in file ./plasmac.tcl:
waitpid failed ./hpmx.py hpmx
./hpmx.py exited without becoming ready
twopass: sourcing: /tmp/tmp_gmocca_metric_connections.hal
Shutting down and cleaning up LinuxCNC...
Note: Using POSIX non-realtime
LinuxCNC terminated with an error. You can find more information in the log:
/home/phill/linuxcnc_debug.txt
and
/home/phill/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal
Axis terminal output:
phill@stretch ~ $ /media/imac/git/linuxcnc-dev/scripts/linuxcnc linuxcnc/configs/axis_metric/axis_metric.ini
LINUXCNC - 2.8.0~pre1
Machine configuration directory is '/home/phill/linuxcnc/configs/axis_metric'
Machine configuration file is 'axis_metric.ini'
Starting LinuxCNC...
twopass:invoked with <verbose> options
twopass: pass0:BEGIN
twopass:found ./machine.hal
twopass: converted hal line for tcl from ./machine.hal:
twopass: hal: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=[TRAJ]SPINDLES
twopass: tcl: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=$::TRAJ(SPINDLES)
twopass: converted ./machine.hal to /tmp/tmp_machine.hal
twopass:found ./plasmac.tcl
twopass: tclfile: ./plasmac.tcl
twopass:found ./axis_metric_connections.hal
twopass: converted ./axis_metric_connections.hal to /tmp/tmp_axis_metric_connections.hal
twopass: sourcing: /tmp/tmp_machine.hal
twopass: sourcing: ./plasmac.tcl
twopass:pass0: loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
twopass: sourcing: /tmp/tmp_axis_metric_connections.hal
twopass: loadrt trivkins coordinates=xyyz
Note: Using POSIX non-realtime
twopass: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=3
twopass: loadrt pid names=J0_pid,J1_pid,J2_pid,J3_pid
twopass: loadrt mux2 names=J0_mux,J1_mux,J2_mux,J3_mux
twopass: loadrt ddt names=J0_vel,J0_accel,J1_vel,J1_accel,J2_vel,J2_accel,J3_vel,J3_accel
twopass: loadrt hypot names=hyp_xy,hyp_xyz
twopass: loadrt sim_home_switch names=J0_switch,J1_switch,J2_switch,J3_switch
twopass: loadrt sim_spindle names=sim_spindle
twopass: loadrt limit2 names=limit_speed
twopass: loadrt lowpass names=spindle_mass
twopass: loadrt near names=near_speed
twopass: loadrt plasmac
twopass: loadrt debounce cfg=3 cfg=3
twopass: pass0:END
twopass: pass1:BEGIN
twopass: sourcing: /tmp/tmp_machine.hal
twopass: sourcing: ./plasmac.tcl
twopass: sourcing: /tmp/tmp_axis_metric_connections.hal
twopass: deleting: /tmp/tmp_machine.hal
twopass: deleting: /tmp/tmp_axis_metric_connections.hal
twopass: pass1:END
APP: ./test/plasmac_test.py found: </home/phill/linuxcnc/configs/axis_metric/./test/plasmac_test.py>
note: MAXV max: 500.000 units/sec 30000.000 units/min
note: LJOG max: 500.000 units/sec 30000.000 units/min
note: LJOG default: 500.000 units/sec 30000.000 units/min
waiting for s.joints<0>, s.kinematics_type<0>
waiting for s.joints<0>, s.kinematics_type<0>
waiting for s.joints<0>, s.kinematics_type<0>
Warning: Forward kinematics must handle duplicate coordinate letters:yy
Note:
Individual axis homing is not currently supported for
KINEMATICS_IDENTITY with duplicate axis letter <Y>
note: jog_order='XYZ'
note: jog_invert=set([])
TCL file
# do not change the contents of this file as it will be overwiten by updates
# make custom changes in <machinename>_connections.hal
#***** PLASMAC COMPONENT *****
loadrt plasmac
addf plasmac servo-thread
# inputs
net plasmac:axis-x-position axis.x.pos-cmd => plasmac.axis-x-position
net plasmac:axis-y-position axis.y.pos-cmd => plasmac.axis-y-position
net plasmac:breakaway-switch-out debounce.0.1.out => plasmac.breakaway
net plasmac:current-velocity motion.current-vel => plasmac.current-velocity
net plasmac:feed-override halui.feed-override.value => plasmac.feed-override
net plasmac:feed-reduction motion.analog-out-03 => plasmac.feed-reduction
net plasmac:float-switch-out debounce.0.0.out => plasmac.float-switch
net plasmac:offset-current axis.z.eoffset => plasmac.offset-current
net plasmac:ohmic-probe-out debounce.0.2.out => plasmac.ohmic-probe
net plasmac:program-is-idle halui.program.is-idle => plasmac.program-is-idle
net plasmac:program-is-paused halui.program.is-paused => plasmac.program-is-paused
net plasmac:program-is-running halui.program.is-running => plasmac.program-is-running
net plasmac:spindle-is-on spindle.0.on => plasmac.spindle-on
net plasmac:thc_disable motion.digital-out-02 => plasmac.thc-disable
net plasmac:torch-off motion.digital-out-03 => plasmac.torch-off
net plasmac:units-per-mm halui.machine.units-per-mm => plasmac.units-per-mm
# outputs
net plasmac:adaptive-feed plasmac.adaptive-feed => motion.adaptive-feed
net plasmac:feed-hold plasmac.feed-hold => motion.feed-hold
net plasmac:offset-counts plasmac.offset-counts => axis.z.eoffset-counts
net plasmac:offset-enable plasmac.offset-enable => axis.z.eoffset-enable
net plasmac:offset-scale plasmac.offset-scale => axis.z.eoffset-scale
net plasmac:program-pause plasmac.program-pause => halui.program.pause
net plasmac:program-resume plasmac.program-resume => halui.program.resume
net plasmac:program-run plasmac.program-run => halui.program.run
net plasmac:program-stop plasmac.program-stop => halui.program.stop
net plasmac:torch-on plasmac.torch-on
# multiple spindles
if [info exists ::TRAJ(SPINDLES)] {
set num_spindles [lindex $::TRAJ(SPINDLES) 0]
if {$num_spindles > 1} {net plasmac:scribe-is-on spindle.1.on => plasmac.scribe-on}
if {$num_spindles > 2} {net plasmac:centre-spot-is-on spindle.2.on => plasmac.centre-spot-on}
}
# powermax serial communications
if [info exists ::PLASMAC(PM_PORT)] {loadusr -Wn hpmx ./hpmx.py [lindex $::PLASMAC(PM_PORT) 0]}
#loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
#loadusr -W ./hpmx.py /dev/ttyS0
HAL file
# do not change the contents of this file as it will be overwiten by updates
# make custom changes in <machinename>_connections.hal
#***** PLASMAC COMPONENT *****
loadrt plasmac
addf plasmac servo-thread
# inputs
net plasmac:axis-x-position axis.x.pos-cmd => plasmac.axis-x-position
net plasmac:axis-y-position axis.y.pos-cmd => plasmac.axis-y-position
net plasmac:breakaway-switch-out debounce.0.1.out => plasmac.breakaway
net plasmac:current-velocity motion.current-vel => plasmac.current-velocity
net plasmac:feed-override halui.feed-override.value => plasmac.feed-override
net plasmac:feed-reduction motion.analog-out-03 => plasmac.feed-reduction
net plasmac:float-switch-out debounce.0.0.out => plasmac.float-switch
net plasmac:offset-current axis.z.eoffset => plasmac.offset-current
net plasmac:ohmic-probe-out debounce.0.2.out => plasmac.ohmic-probe
net plasmac:program-is-idle halui.program.is-idle => plasmac.program-is-idle
net plasmac:program-is-paused halui.program.is-paused => plasmac.program-is-paused
net plasmac:program-is-running halui.program.is-running => plasmac.program-is-running
net plasmac:spindle-is-on spindle.0.on => plasmac.spindle-on
net plasmac:thc_disable motion.digital-out-02 => plasmac.thc-disable
net plasmac:torch-off motion.digital-out-03 => plasmac.torch-off
net plasmac:units-per-mm halui.machine.units-per-mm => plasmac.units-per-mm
# outputs
net plasmac:adaptive-feed plasmac.adaptive-feed => motion.adaptive-feed
net plasmac:feed-hold plasmac.feed-hold => motion.feed-hold
net plasmac:offset-counts plasmac.offset-counts => axis.z.eoffset-counts
net plasmac:offset-enable plasmac.offset-enable => axis.z.eoffset-enable
net plasmac:offset-scale plasmac.offset-scale => axis.z.eoffset-scale
net plasmac:program-pause plasmac.program-pause => halui.program.pause
net plasmac:program-resume plasmac.program-resume => halui.program.resume
net plasmac:program-run plasmac.program-run => halui.program.run
net plasmac:program-stop plasmac.program-stop => halui.program.stop
net plasmac:torch-on plasmac.torch-on
#loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
loadusr -W ./hpmx.py /dev/ttyS0
The same component using the same .tcl HAL file loads fine from Axis.
I tried the last three lines (one at a time) of the .tcl file and the behaviour was identical.
I then tried a .hal HAL file using the last two lines (one at a time) and again the behaviour was identical.
Gmoccapy terminal output:
Warning: Spoiler!
phill@stretch ~ $ /media/imac/git/linuxcnc-dev/scripts/linuxcnc linuxcnc/configs/gmocca_metric/gmocca_metric.ini
LINUXCNC - 2.8.0~pre1
Machine configuration directory is '/home/phill/linuxcnc/configs/gmocca_metric'
Machine configuration file is 'gmocca_metric.ini'
Starting LinuxCNC...
twopass:invoked with <verbose> options
twopass: pass0:BEGIN
twopass:found ./machine.hal
twopass: converted hal line for tcl from ./machine.hal:
twopass: hal: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=[TRAJ]SPINDLES
twopass: tcl: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=$::TRAJ(SPINDLES)
twopass: converted ./machine.hal to /tmp/tmp_machine.hal
twopass:found ./plasmac.tcl
twopass: tclfile: ./plasmac.tcl
twopass:found ./gmocca_metric_connections.hal
twopass: converted ./gmocca_metric_connections.hal to /tmp/tmp_gmocca_metric_connections.hal
twopass: sourcing: /tmp/tmp_machine.hal
twopass: sourcing: ./plasmac.tcl
twopass:pass0: loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
HAL: ERROR: exit called before init
twopass: Error in file ./plasmac.tcl:
waitpid failed ./hpmx.py hpmx
./hpmx.py exited without becoming ready
twopass: sourcing: /tmp/tmp_gmocca_metric_connections.hal
Shutting down and cleaning up LinuxCNC...
Note: Using POSIX non-realtime
LinuxCNC terminated with an error. You can find more information in the log:
/home/phill/linuxcnc_debug.txt
and
/home/phill/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal
Axis terminal output:
Warning: Spoiler!
phill@stretch ~ $ /media/imac/git/linuxcnc-dev/scripts/linuxcnc linuxcnc/configs/axis_metric/axis_metric.ini
LINUXCNC - 2.8.0~pre1
Machine configuration directory is '/home/phill/linuxcnc/configs/axis_metric'
Machine configuration file is 'axis_metric.ini'
Starting LinuxCNC...
twopass:invoked with <verbose> options
twopass: pass0:BEGIN
twopass:found ./machine.hal
twopass: converted hal line for tcl from ./machine.hal:
twopass: hal: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=[TRAJ]SPINDLES
twopass: tcl: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=$::TRAJ(SPINDLES)
twopass: converted ./machine.hal to /tmp/tmp_machine.hal
twopass:found ./plasmac.tcl
twopass: tclfile: ./plasmac.tcl
twopass:found ./axis_metric_connections.hal
twopass: converted ./axis_metric_connections.hal to /tmp/tmp_axis_metric_connections.hal
twopass: sourcing: /tmp/tmp_machine.hal
twopass: sourcing: ./plasmac.tcl
twopass:pass0: loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
twopass: sourcing: /tmp/tmp_axis_metric_connections.hal
twopass: loadrt trivkins coordinates=xyyz
Note: Using POSIX non-realtime
twopass: loadrt motmod base_period_nsec=32000 servo_period_nsec=1000000 num_joints=4 num_spindles=3
twopass: loadrt pid names=J0_pid,J1_pid,J2_pid,J3_pid
twopass: loadrt mux2 names=J0_mux,J1_mux,J2_mux,J3_mux
twopass: loadrt ddt names=J0_vel,J0_accel,J1_vel,J1_accel,J2_vel,J2_accel,J3_vel,J3_accel
twopass: loadrt hypot names=hyp_xy,hyp_xyz
twopass: loadrt sim_home_switch names=J0_switch,J1_switch,J2_switch,J3_switch
twopass: loadrt sim_spindle names=sim_spindle
twopass: loadrt limit2 names=limit_speed
twopass: loadrt lowpass names=spindle_mass
twopass: loadrt near names=near_speed
twopass: loadrt plasmac
twopass: loadrt debounce cfg=3 cfg=3
twopass: pass0:END
twopass: pass1:BEGIN
twopass: sourcing: /tmp/tmp_machine.hal
twopass: sourcing: ./plasmac.tcl
twopass: sourcing: /tmp/tmp_axis_metric_connections.hal
twopass: deleting: /tmp/tmp_machine.hal
twopass: deleting: /tmp/tmp_axis_metric_connections.hal
twopass: pass1:END
APP: ./test/plasmac_test.py found: </home/phill/linuxcnc/configs/axis_metric/./test/plasmac_test.py>
note: MAXV max: 500.000 units/sec 30000.000 units/min
note: LJOG max: 500.000 units/sec 30000.000 units/min
note: LJOG default: 500.000 units/sec 30000.000 units/min
waiting for s.joints<0>, s.kinematics_type<0>
waiting for s.joints<0>, s.kinematics_type<0>
waiting for s.joints<0>, s.kinematics_type<0>
Warning: Forward kinematics must handle duplicate coordinate letters:yy
Note:
Individual axis homing is not currently supported for
KINEMATICS_IDENTITY with duplicate axis letter <Y>
note: jog_order='XYZ'
note: jog_invert=set([])
TCL file
Warning: Spoiler!
# do not change the contents of this file as it will be overwiten by updates
# make custom changes in <machinename>_connections.hal
#***** PLASMAC COMPONENT *****
loadrt plasmac
addf plasmac servo-thread
# inputs
net plasmac:axis-x-position axis.x.pos-cmd => plasmac.axis-x-position
net plasmac:axis-y-position axis.y.pos-cmd => plasmac.axis-y-position
net plasmac:breakaway-switch-out debounce.0.1.out => plasmac.breakaway
net plasmac:current-velocity motion.current-vel => plasmac.current-velocity
net plasmac:feed-override halui.feed-override.value => plasmac.feed-override
net plasmac:feed-reduction motion.analog-out-03 => plasmac.feed-reduction
net plasmac:float-switch-out debounce.0.0.out => plasmac.float-switch
net plasmac:offset-current axis.z.eoffset => plasmac.offset-current
net plasmac:ohmic-probe-out debounce.0.2.out => plasmac.ohmic-probe
net plasmac:program-is-idle halui.program.is-idle => plasmac.program-is-idle
net plasmac:program-is-paused halui.program.is-paused => plasmac.program-is-paused
net plasmac:program-is-running halui.program.is-running => plasmac.program-is-running
net plasmac:spindle-is-on spindle.0.on => plasmac.spindle-on
net plasmac:thc_disable motion.digital-out-02 => plasmac.thc-disable
net plasmac:torch-off motion.digital-out-03 => plasmac.torch-off
net plasmac:units-per-mm halui.machine.units-per-mm => plasmac.units-per-mm
# outputs
net plasmac:adaptive-feed plasmac.adaptive-feed => motion.adaptive-feed
net plasmac:feed-hold plasmac.feed-hold => motion.feed-hold
net plasmac:offset-counts plasmac.offset-counts => axis.z.eoffset-counts
net plasmac:offset-enable plasmac.offset-enable => axis.z.eoffset-enable
net plasmac:offset-scale plasmac.offset-scale => axis.z.eoffset-scale
net plasmac:program-pause plasmac.program-pause => halui.program.pause
net plasmac:program-resume plasmac.program-resume => halui.program.resume
net plasmac:program-run plasmac.program-run => halui.program.run
net plasmac:program-stop plasmac.program-stop => halui.program.stop
net plasmac:torch-on plasmac.torch-on
# multiple spindles
if [info exists ::TRAJ(SPINDLES)] {
set num_spindles [lindex $::TRAJ(SPINDLES) 0]
if {$num_spindles > 1} {net plasmac:scribe-is-on spindle.1.on => plasmac.scribe-on}
if {$num_spindles > 2} {net plasmac:centre-spot-is-on spindle.2.on => plasmac.centre-spot-on}
}
# powermax serial communications
if [info exists ::PLASMAC(PM_PORT)] {loadusr -Wn hpmx ./hpmx.py [lindex $::PLASMAC(PM_PORT) 0]}
#loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
#loadusr -W ./hpmx.py /dev/ttyS0
HAL file
Warning: Spoiler!
# do not change the contents of this file as it will be overwiten by updates
# make custom changes in <machinename>_connections.hal
#***** PLASMAC COMPONENT *****
loadrt plasmac
addf plasmac servo-thread
# inputs
net plasmac:axis-x-position axis.x.pos-cmd => plasmac.axis-x-position
net plasmac:axis-y-position axis.y.pos-cmd => plasmac.axis-y-position
net plasmac:breakaway-switch-out debounce.0.1.out => plasmac.breakaway
net plasmac:current-velocity motion.current-vel => plasmac.current-velocity
net plasmac:feed-override halui.feed-override.value => plasmac.feed-override
net plasmac:feed-reduction motion.analog-out-03 => plasmac.feed-reduction
net plasmac:float-switch-out debounce.0.0.out => plasmac.float-switch
net plasmac:offset-current axis.z.eoffset => plasmac.offset-current
net plasmac:ohmic-probe-out debounce.0.2.out => plasmac.ohmic-probe
net plasmac:program-is-idle halui.program.is-idle => plasmac.program-is-idle
net plasmac:program-is-paused halui.program.is-paused => plasmac.program-is-paused
net plasmac:program-is-running halui.program.is-running => plasmac.program-is-running
net plasmac:spindle-is-on spindle.0.on => plasmac.spindle-on
net plasmac:thc_disable motion.digital-out-02 => plasmac.thc-disable
net plasmac:torch-off motion.digital-out-03 => plasmac.torch-off
net plasmac:units-per-mm halui.machine.units-per-mm => plasmac.units-per-mm
# outputs
net plasmac:adaptive-feed plasmac.adaptive-feed => motion.adaptive-feed
net plasmac:feed-hold plasmac.feed-hold => motion.feed-hold
net plasmac:offset-counts plasmac.offset-counts => axis.z.eoffset-counts
net plasmac:offset-enable plasmac.offset-enable => axis.z.eoffset-enable
net plasmac:offset-scale plasmac.offset-scale => axis.z.eoffset-scale
net plasmac:program-pause plasmac.program-pause => halui.program.pause
net plasmac:program-resume plasmac.program-resume => halui.program.resume
net plasmac:program-run plasmac.program-run => halui.program.run
net plasmac:program-stop plasmac.program-stop => halui.program.stop
net plasmac:torch-on plasmac.torch-on
#loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
loadusr -W ./hpmx.py /dev/ttyS0
Please Log in or Create an account to join the conversation.
02 Oct 2019 13:23 #146874
by pl7i92
Replied by pl7i92 on topic TWOPASS error
is this with gmoccapy 3.0 ?
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19106
- Thank you received: 6398
02 Oct 2019 13:37 #146875
by tommylight
Did you try it with this line omitted in hal ?
Replied by tommylight on topic TWOPASS error
For some reason this is failing for gmoccapy.Gmoccapy terminal output:
twopass:pass0: loadusr -Wn hpmx ./hpmx.py /dev/ttyS0
HAL: ERROR: exit called before init
twopass: Error in file ./plasmac.tcl:
waitpid failed ./hpmx.py hpmx
./hpmx.py exited without becoming ready
Did you try it with this line omitted in hal ?
Please Log in or Create an account to join the conversation.
03 Oct 2019 01:39 - 03 Oct 2019 01:45 #146937
by phillc54
Replied by phillc54 on topic TWOPASS error (should be User Error)
Attachments:
Last edit: 03 Oct 2019 01:45 by phillc54.
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
Time to create page: 0.176 seconds