- Configuring LinuxCNC
- Advanced Configuration
- setting up schaublin 125 cnc lathe with carousel toolchanger
setting up schaublin 125 cnc lathe with carousel toolchanger
29 Jan 2019 20:22 #125204
by trilobyte
i'm retrofitting a schaublin 125 cnc lathe. i use a 7i76e. most works well.
but i have some problemes with the carousel component.
the toolchanger uses 4 switches. every position has its own switch.
i wired these to the carousel.0.sense-0,1,2,3
if i start a toolchange with T1 M6 then the toolchanger begins to turn. but he will not stopp.
with the hal whatch list i can see the sense signals, but the current position is always 3 exept the sense 3 input is true, then the current position is for a moment 2.
here is video
and the code from the hal:
#
# HAL for Schaublin 125 Turret
#
# Load components
loadrt carousel pockets=4 encoding=single num_sense=4 dir=1
loadrt timedelay count=2
loadrt or2
# Adding function to realtime thread
addf carousel.0 servo-thread
addf timedelay.0 servo-thread
addf timedelay.1 servo-thread
addf or2.0 servo-thread
# Wire up stuff
# Setup time for air supply before toolchange, e.g 1sec
setp timedelay.0.on-delay 1
setp timedelay.0.off-delay 0
net tool_prepare iocontrol.0.tool-prepare => or2.0.in0 timedelay.0.in
net tool_prepared iocontrol.0.tool-prepared <= timedelay.0.out
# Holding time for air supply after tool change, e.g 0.5sec
setp timedelay.0.on-delay 0
setp timedelay.0.off-delay 0.5
net setup1 or2.0.out => timedelay.1.in
net setup2 timedelay.1.out => hm2_7i76e.0.7i76.0.0.output-04
net tool_change iocontrol.0.tool-change => carousel.0.enable
net tool_changed iocontrol.0.tool-changed <= carousel.0.ready
net tool_number iocontrol.0.tool-prep-number => carousel.0.pocket-number
net tc_pos_1 hm2_7i76e.0.7i76.0.0.input-15 => carousel.0.sense-0
net tc_pos_2 hm2_7i76e.0.7i76.0.0.input-14 => carousel.0.sense-1
net tc_pos_3 hm2_7i76e.0.7i76.0.0.input-13 => carousel.0.sense-2
net tc_pos_4 hm2_7i76e.0.7i76.0.0.input-12 => carousel.0.sense-3
net active_out carousel.0.active => or2.0.in1
net rotate_out carousel.0.motor-fwd => hm2_7i76e.0.7i76.0.0.output-05
but i have some problemes with the carousel component.
the toolchanger uses 4 switches. every position has its own switch.
i wired these to the carousel.0.sense-0,1,2,3
if i start a toolchange with T1 M6 then the toolchanger begins to turn. but he will not stopp.
with the hal whatch list i can see the sense signals, but the current position is always 3 exept the sense 3 input is true, then the current position is for a moment 2.
here is video
and the code from the hal:
#
# HAL for Schaublin 125 Turret
#
# Load components
loadrt carousel pockets=4 encoding=single num_sense=4 dir=1
loadrt timedelay count=2
loadrt or2
# Adding function to realtime thread
addf carousel.0 servo-thread
addf timedelay.0 servo-thread
addf timedelay.1 servo-thread
addf or2.0 servo-thread
# Wire up stuff
# Setup time for air supply before toolchange, e.g 1sec
setp timedelay.0.on-delay 1
setp timedelay.0.off-delay 0
net tool_prepare iocontrol.0.tool-prepare => or2.0.in0 timedelay.0.in
net tool_prepared iocontrol.0.tool-prepared <= timedelay.0.out
# Holding time for air supply after tool change, e.g 0.5sec
setp timedelay.0.on-delay 0
setp timedelay.0.off-delay 0.5
net setup1 or2.0.out => timedelay.1.in
net setup2 timedelay.1.out => hm2_7i76e.0.7i76.0.0.output-04
net tool_change iocontrol.0.tool-change => carousel.0.enable
net tool_changed iocontrol.0.tool-changed <= carousel.0.ready
net tool_number iocontrol.0.tool-prep-number => carousel.0.pocket-number
net tc_pos_1 hm2_7i76e.0.7i76.0.0.input-15 => carousel.0.sense-0
net tc_pos_2 hm2_7i76e.0.7i76.0.0.input-14 => carousel.0.sense-1
net tc_pos_3 hm2_7i76e.0.7i76.0.0.input-13 => carousel.0.sense-2
net tc_pos_4 hm2_7i76e.0.7i76.0.0.input-12 => carousel.0.sense-3
net active_out carousel.0.active => or2.0.in1
net rotate_out carousel.0.motor-fwd => hm2_7i76e.0.7i76.0.0.output-05
Please Log in or Create an account to join the conversation.
29 Jan 2019 20:24 #125205
by trilobyte
Replied by trilobyte on topic setting up schaublin 125 cnc lathe with carousel toolchanger
is "single" the correct encoding option?
btw: i am using the latest 2.8 linuxcnc...
Peter
btw: i am using the latest 2.8 linuxcnc...
Peter
Please Log in or Create an account to join the conversation.
- Mike_Eitel
- Offline
- Platinum Member
Less
More
- Posts: 1150
- Thank you received: 184
29 Jan 2019 21:43 #125210
by Mike_Eitel
Replied by Mike_Eitel on topic setting up schaublin 125 cnc lathe with carousel toolchanger
Hi Peter
I have no glue about carousel, but watching your film the pros-switches seams to be always high, but one for short moment...
m5c
Mike
I have no glue about carousel, but watching your film the pros-switches seams to be always high, but one for short moment...
m5c
Mike
Please Log in or Create an account to join the conversation.
29 Jan 2019 23:23 - 29 Jan 2019 23:26 #125227
by andypugh
It looks like it:
github.com/LinuxCNC/linuxcnc/blob/master...s/carousel.comp#L184
If you look at the individual sense pins (halmeter for example) is there only ever one true at a time?
Looking at the video, this is the problem. The switches are active-low.
(I hate how halshow uses red for false and yellow for true!)
You need to connect to the in-not (inverted) inputs of the 7i76.
I am not sure how well-tested "Single" is.
Replied by andypugh on topic setting up schaublin 125 cnc lathe with carousel toolchanger
is "single" the correct encoding option?
It looks like it:
github.com/LinuxCNC/linuxcnc/blob/master...s/carousel.comp#L184
Looking at the video, this is the problem. The switches are active-low.
(I hate how halshow uses red for false and yellow for true!)
You need to connect to the in-not (inverted) inputs of the 7i76.
I am not sure how well-tested "Single" is.
Last edit: 29 Jan 2019 23:26 by andypugh.
Please Log in or Create an account to join the conversation.
30 Jan 2019 21:50 #125344
by trilobyte
Replied by trilobyte on topic setting up schaublin 125 cnc lathe with carousel toolchanger
it was the problem with the inverted inputs!
@andy: the toolchanger works well for position 1-2-3, but in position 0 the enable gets true but the motor fwd command not.
is there a bug in the 2.8 version?
a video of the toolchanger in action: video
this is the code from the hal:
#
# HAL for Schaublin 125 Turret
#
# Load components
loadrt carousel pockets=4 encoding=single num_sense=4 dir=1
loadrt timedelay count=2
loadrt logic count=2 personality=0x202,0x204 # 2-Input OR, 4-inputs OR gate
# Adding function to realtime thread
addf carousel.0 servo-thread
addf timedelay.0 servo-thread
addf timedelay.1 servo-thread
addf logic.0 servo-thread
addf logic.1 servo-thread
# Wire up stuff
# Setup time for air supply before toolchange, e.g 1sec
setp timedelay.0.on-delay 1
setp timedelay.0.off-delay 0
net tool_prepare iocontrol.0.tool-prepare => logic.0.in-00 timedelay.0.in
net tool_prepared iocontrol.0.tool-prepared <= timedelay.0.out
# Holding time for air supply after tool change, e.g 0.5sec
setp timedelay.0.on-delay 0
setp timedelay.0.off-delay 0.5
net setup1 logic.0.or => timedelay.1.in
net setup2 timedelay.1.out => hm2_7i76e.0.7i76.0.0.output-05
net tool_change iocontrol.0.tool-change => carousel.0.enable
net tool_changed iocontrol.0.tool-changed <= carousel.0.ready
net tool_number iocontrol.0.tool-prep-number => carousel.0.pocket-number
net tc_pos_1 hm2_7i76e.0.7i76.0.0.input-15-not => carousel.0.sense-0 logic.1.in-00
net tc_pos_2 hm2_7i76e.0.7i76.0.0.input-14-not => carousel.0.sense-1 logic.1.in-01
net tc_pos_3 hm2_7i76e.0.7i76.0.0.input-13-not => carousel.0.sense-2 logic.1.in-02
net tc_pos_4 hm2_7i76e.0.7i76.0.0.input-12-not => carousel.0.sense-3 logic.1.in-03
net tc_pos_valid logic.1.or => carousel.0.strobe
net active_out carousel.0.active => logic.0.in-01
net rotate_out carousel.0.motor-fwd => hm2_7i76e.0.7i76.0.0.output-04
peter
@andy: the toolchanger works well for position 1-2-3, but in position 0 the enable gets true but the motor fwd command not.
is there a bug in the 2.8 version?
a video of the toolchanger in action: video
this is the code from the hal:
#
# HAL for Schaublin 125 Turret
#
# Load components
loadrt carousel pockets=4 encoding=single num_sense=4 dir=1
loadrt timedelay count=2
loadrt logic count=2 personality=0x202,0x204 # 2-Input OR, 4-inputs OR gate
# Adding function to realtime thread
addf carousel.0 servo-thread
addf timedelay.0 servo-thread
addf timedelay.1 servo-thread
addf logic.0 servo-thread
addf logic.1 servo-thread
# Wire up stuff
# Setup time for air supply before toolchange, e.g 1sec
setp timedelay.0.on-delay 1
setp timedelay.0.off-delay 0
net tool_prepare iocontrol.0.tool-prepare => logic.0.in-00 timedelay.0.in
net tool_prepared iocontrol.0.tool-prepared <= timedelay.0.out
# Holding time for air supply after tool change, e.g 0.5sec
setp timedelay.0.on-delay 0
setp timedelay.0.off-delay 0.5
net setup1 logic.0.or => timedelay.1.in
net setup2 timedelay.1.out => hm2_7i76e.0.7i76.0.0.output-05
net tool_change iocontrol.0.tool-change => carousel.0.enable
net tool_changed iocontrol.0.tool-changed <= carousel.0.ready
net tool_number iocontrol.0.tool-prep-number => carousel.0.pocket-number
net tc_pos_1 hm2_7i76e.0.7i76.0.0.input-15-not => carousel.0.sense-0 logic.1.in-00
net tc_pos_2 hm2_7i76e.0.7i76.0.0.input-14-not => carousel.0.sense-1 logic.1.in-01
net tc_pos_3 hm2_7i76e.0.7i76.0.0.input-13-not => carousel.0.sense-2 logic.1.in-02
net tc_pos_4 hm2_7i76e.0.7i76.0.0.input-12-not => carousel.0.sense-3 logic.1.in-03
net tc_pos_valid logic.1.or => carousel.0.strobe
net active_out carousel.0.active => logic.0.in-01
net rotate_out carousel.0.motor-fwd => hm2_7i76e.0.7i76.0.0.output-04
peter
Please Log in or Create an account to join the conversation.
31 Jan 2019 16:42 - 31 Jan 2019 16:43 #125406
by andypugh
Replied by andypugh on topic setting up schaublin 125 cnc lathe with carousel toolchanger
I think that there is a bug in single mode.
Sorry about that.
Everywhere else in the code the assumption is that pocket numbering begins at 1. But the S mode begins at 0.
Luckily carousel is a .comp, so it's something you can fix yourself.
github.com/LinuxCNC/linuxcnc/blob/master...s/carousel.comp#L184
Where it saysit needs to sayAre you in a position to try that out?
You need to edit carousel.comp then
Sorry about that.
Everywhere else in the code the assumption is that pocket numbering begins at 1. But the S mode begins at 0.
Luckily carousel is a .comp, so it's something you can fix yourself.
github.com/LinuxCNC/linuxcnc/blob/master...s/carousel.comp#L184
Where it says
p = i;
p = i + 1;
You need to edit carousel.comp then
sudo halcompile --install carousel.comp
Last edit: 31 Jan 2019 16:43 by andypugh.
Please Log in or Create an account to join the conversation.
31 Jan 2019 21:13 - 31 Jan 2019 21:27 #125434
by inoxix
Replied by inoxix on topic setting up schaublin 125 cnc lathe with carousel toolchanger
I think this is not the only problem with the S mode.
1. Senor(0) is never correct evaluated, the loop aborts at i=0 regardless of signal stateIf no sensor is active p is then always assigned 0 (or 1 as above).
2. current_position is only updated when strobe is set.The moving state machine keeps just moving the turret. To use strobe doesn't make much sense in S mode. So, current_position is always 0. Of course we could bind all sensor signals with an or together and generate a strobe as workaround.
Regards,
Tom
1. Senor(0) is never correct evaluated, the loop aborts at i=0 regardless of signal state
case 'S': // individual sensors
for (i = inst_sense - 1; sense(i) == 0 && i > 0 ; i--) {}
p = i;
break;
2. current_position is only updated when strobe is set.
if (strobe) {
current_position = p;
parity_error = (pcalc != (inst_parity ^ parity_));
}
Regards,
Tom
Last edit: 31 Jan 2019 21:27 by inoxix.
Please Log in or Create an account to join the conversation.
31 Jan 2019 21:24 #125435
by trilobyte
Replied by trilobyte on topic setting up schaublin 125 cnc lathe with carousel toolchanger
halcompile does not work on my computer:
trilobyte@trilobyte:~$ ls
Bilder Dokumente linuxcnc Öffentlich Videos
carousel.comp Downloads Musik Schreibtisch Vorlagen
trilobyte@trilobyte:~$ sudo halcompile --install carousel.comp
[sudo] Passwort für trilobyte:
Traceback (most recent call last):
File "/usr/bin/halcompile", line 1431, in <module>
main()
File "/usr/bin/halcompile", line 1401, in main
process(f, mode, outfile)
File "/usr/bin/halcompile", line 1267, in process
a, b = parse(filename)
File "/usr/bin/halcompile", line 424, in parse
a, b = f.split("\n;;\n", 1)
ValueError: need more than 1 value to unpack
trilobyte@trilobyte:~$
its a installation from this image:
www.linuxcnc.org/testing-stretch-rtpreempt/
i addet these stanzas:
deb buildbot.linuxcnc.org/ stretch master-rtpreempt
deb-src buildbot.linuxcnc.org/ stretch master-rtpreempt
to my sources.list.d
i updated the system with apt-get update, apt-get dist-upgrade
peter
trilobyte@trilobyte:~$ ls
Bilder Dokumente linuxcnc Öffentlich Videos
carousel.comp Downloads Musik Schreibtisch Vorlagen
trilobyte@trilobyte:~$ sudo halcompile --install carousel.comp
[sudo] Passwort für trilobyte:
Traceback (most recent call last):
File "/usr/bin/halcompile", line 1431, in <module>
main()
File "/usr/bin/halcompile", line 1401, in main
process(f, mode, outfile)
File "/usr/bin/halcompile", line 1267, in process
a, b = parse(filename)
File "/usr/bin/halcompile", line 424, in parse
a, b = f.split("\n;;\n", 1)
ValueError: need more than 1 value to unpack
trilobyte@trilobyte:~$
its a installation from this image:
www.linuxcnc.org/testing-stretch-rtpreempt/
i addet these stanzas:
deb buildbot.linuxcnc.org/ stretch master-rtpreempt
deb-src buildbot.linuxcnc.org/ stretch master-rtpreempt
to my sources.list.d
i updated the system with apt-get update, apt-get dist-upgrade
peter
Please Log in or Create an account to join the conversation.
01 Feb 2019 14:06 #125467
by andypugh
Good point. Something like this is probably required
Replied by andypugh on topic setting up schaublin 125 cnc lathe with carousel toolchanger
I think this is not the only problem with the S mode.
1. Senor(0) is never correct evaluated, the loop aborts at i=0 regardless of signal state
Good point. Something like this is probably required
case 'S': // individual sensors
for (i = inst_sense - 1; sense(i) == 0 && i > 0 ; i--) {}
if (sense(i)) p = i + 1;
break;
That would be one approach but doesn't solve the off-by-one. (Note that strobe is set TRUE by default, it can only be FALSE if it is actually connected in HAL)Of course we could bind all sensor signals with an or together and generate a strobe as workaround.
Please Log in or Create an account to join the conversation.
01 Feb 2019 14:10 #125468
by andypugh
This indicates that your carousel.comp file has been passed through a Windows (or Classic Mac) system and the end-of-line characters are no longer a simple \n (linefeed)
The line above is looking for the ";;" delimiter in a .comp file that separates the setup instructions from the actual C code.
And halcompile really ought to deal better with this situation.
If you can correct the end-of-line characters then it ought to work.
Replied by andypugh on topic setting up schaublin 125 cnc lathe with carousel toolchanger
halcompile does not work on my computer:
...
a, b = f.split("\n;;\n", 1)
ValueError: need more than 1 value to unpackr
This indicates that your carousel.comp file has been passed through a Windows (or Classic Mac) system and the end-of-line characters are no longer a simple \n (linefeed)
The line above is looking for the ";;" delimiter in a .comp file that separates the setup instructions from the actual C code.
And halcompile really ought to deal better with this situation.
If you can correct the end-of-line characters then it ought to work.
Please Log in or Create an account to join the conversation.
- Configuring LinuxCNC
- Advanced Configuration
- setting up schaublin 125 cnc lathe with carousel toolchanger
Time to create page: 0.112 seconds