Damit konnte Igor das erste mal mit neuer Steuerung bewegt werden. Wie gesagt es war nicht alles so linear wir hier dargestellt. Das ganze hier dient mir mehr oder weniger als Dokumentation, Falls ich sowas nochmal machen muss, auch welchem Grund auch immer. Aber mit all den Voran gegangen Schritten ließ sich das ganze Starten und Homen:
Mit dem Schritt können wir uns nun dem Werkzeugwechsel und dem Wechseltisch widmen. Probe Basic arbeitet normalerweise mit einem Karussell-Wechsler, der sich doch etwas anders Verhält als der Korbwechsler von Igor. Daher habe ich die Seite für den Werkzeugwechsel an meine Bedürfnisse angepasst und mich dabei an den Funktionen orientiert, die auch in der Sinumerik zur Verfügung standen
Die einzelnen Knöpfe mit den dazugehörigen Programmen werde ich hier durch gehen. Doch zuvor kommen noch zwei kleine Programme, die helfen Fehler zu vermeiden weil bestimmte Parameter nicht erreicht wurden waitfor liegt im $USER/bin/ Ordner:
#!/bin/bash
n=0
if [ $# != 2 ]; then
echo usage: $0 SignalName DesiredValue
exit 1
fi
signal=$1
value=$2
while :; do
set -- $(halcmd -s show sig $signal)
if [ x"$2" == x"$value" ]; then
exit 0
fi
sleep 0.25
if [ $n -gt 20 ]; then
zenity --info --text "$signal hat nach $n Zyklen den Wert $value nicht erreicht"
fi
let "n++"
done
Fangen wir dem dem “ATC Manual Control Panel” hier haben wir mehr oder weniger die Komplette Steuerung der einzelnen Teilschritte, die für den Tisch und Werkzeugwechsel notwendig sind Jeweils der Knopf und das dazugehörige Programm dazu:
Drawbar loose - MDI Buttom - M110
#!/bin/bash
#Werkzeug lösen
halcmd sets o-tool-open true
waitfor i-tool-is-open TRUE
exit 0
Drawbar Tight - MDI Buttom - M111
#!/bin/bash
#Werkzeug spannen
halcmd sets o-tool-open FALSE
waitfor i-tool-is-open FALSE
exit 0
ATC UP - MDI Button - M113
#!/bin/bash
#Korb anheben
halcmd sets o-tool-basket-down FALSE
halcmd sets o-tool-basket-up TRUE
#waitfor i-tool-basket-is-down FALSE
waitfor i-tool-basket-is-up TRUE
halcmd sets o-tool-open FALSE
waitfor i-tool-is-open FALSE
exit 0
ATC Down - MDI Button - M112
#!/bin/bash
#Kor Absenken
halcmd sets o-tool-open true
waitfor i-tool-is-open TRUE
halcmd sets o-tool-basket-up FALSE
halcmd sets o-tool-basket-down TRUE
waitfor i-tool-basket-is-up FALSE
waitfor i-tool-basket-is-down TRUE
#halcmd sets o-tool-basket-down FALSE
exit 0
Arm Down - MDI Button M131 P#<Armnr>
#!/bin/bash
#Arm Absenken
P=$1
Q=$2
armnr=${P%.*}
waitfor i-tool-basket-is-down TRUE
halcmd sets o-tool-01-down FALSE
halcmd sets o-tool-02-down FALSE
halcmd sets o-tool-03-down FALSE
halcmd sets o-tool-04-down FALSE
halcmd sets o-tool-05-down FALSE
halcmd sets o-tool-06-down FALSE
halcmd sets o-tool-07-down FALSE
halcmd sets o-tool-08-down FALSE
halcmd sets o-tool-09-down FALSE
halcmd sets o-tool-10-down FALSE
halcmd sets o-tool-11-down FALSE
halcmd sets o-tool-12-down FALSE
halcmd sets o-tool-all-up TRUE
#
waitfor i-tool-01-is-down FALSE
waitfor i-tool-02-is-down FALSE
waitfor i-tool-03-is-down FALSE
waitfor i-tool-04-is-down FALSE
waitfor i-tool-05-is-down FALSE
waitfor i-tool-06-is-down FALSE
waitfor i-tool-07-is-down FALSE
waitfor i-tool-08-is-down FALSE
waitfor i-tool-09-is-down FALSE
waitfor i-tool-10-is-down FALSE
waitfor i-tool-11-is-down FALSE
waitfor i-tool-12-is-down FALSE
#
waitfor i-tool-01-is-up TRUE
waitfor i-tool-02-is-up TRUE
waitfor i-tool-03-is-up TRUE
waitfor i-tool-04-is-up TRUE
waitfor i-tool-05-is-up TRUE
waitfor i-tool-06-is-up TRUE
waitfor i-tool-07-is-up TRUE
waitfor i-tool-08-is-up TRUE
waitfor i-tool-09-is-up TRUE
waitfor i-tool-10-is-up TRUE
waitfor i-tool-11-is-up TRUE
waitfor i-tool-12-is-up TRUE
#
halcmd sets o-tool-all-up FALSE
#
echo $armnr
if [ $armnr = 1 ]; then
halcmd sets o-tool-01-down TRUE
waitfor i-tool-01-is-up FALSE
waitfor i-tool-01-is-down TRUE
halcmd sets o-tool-01-down FALSE
fi
#
if [ $armnr = 2 ]; then
halcmd sets o-tool-02-down TRUE
waitfor i-tool-02-is-up FALSE
waitfor i-tool-02-is-down TRUE
halcmd sets o-tool-02-down FALSE
fi
#
if [ $armnr = 3 ]; then
halcmd sets o-tool-03-down TRUE
waitfor i-tool-03-is-up FALSE
waitfor i-tool-03-is-down TRUE
halcmd sets o-tool-03-down FALSE
fi
#
if [ $armnr = 4 ]; then
halcmd sets o-tool-04-down TRUE
waitfor i-tool-04-is-up FALSE
waitfor i-tool-04-is-down TRUE
halcmd sets o-tool-04-down FALSE
fi
#
if [ $armnr = 5 ]; then
halcmd sets o-tool-05-down TRUE
waitfor i-tool-05-is-up FALSE
waitfor i-tool-05-is-down TRUE
halcmd sets o-tool-05-down FALSE
fi
#
if [ $armnr = 6 ]; then
halcmd sets o-tool-06-down TRUE
waitfor i-tool-06-is-up FALSE
waitfor i-tool-06-is-down TRUE
halcmd sets o-tool-06-down FALSE
fi
#
if [ $armnr = 7 ]; then
halcmd sets o-tool-07-down TRUE
waitfor i-tool-07-is-up FALSE
waitfor i-tool-07-is-down TRUE
halcmd sets o-tool-07-down FALSE
fi
#
if [ $armnr = 8 ]; then
halcmd sets o-tool-08-down TRUE
waitfor i-tool-08-is-up FALSE
waitfor i-tool-08-is-down TRUE
halcmd sets o-tool-08-down FALSE
fi
#
if [ $armnr = 9 ]; then
halcmd sets o-tool-09-down TRUE
waitfor i-tool-09-is-up FALSE
waitfor i-tool-09-is-down TRUE
halcmd sets o-tool-09-down FALSE
fi
#
if [ $armnr = 10 ]; then
halcmd sets o-tool-10-down TRUE
waitfor i-tool-10-is-up FALSE
waitfor i-tool-10-is-down TRUE
halcmd sets o-tool-10-down FALSE
fi
#
if [ $armnr = 11 ]; then
halcmd sets o-tool-11-down TRUE
waitfor i-tool-11-is-up FALSE
waitfor i-tool-11-is-down TRUE
halcmd sets o-tool-11-down FALSE
fi
#
if [ $armnr = 12 ]; then
halcmd sets o-tool-12-down TRUE
waitfor i-tool-12-is-up FALSE
waitfor i-tool-12-is-down TRUE
halcmd sets o-tool-12-down FALSE
fi
exit 0
Airblast - MDI Button - M130 P3
#!/bin/bash
#Kegel Ausblasen beginnen
P=$1
halcmd sets o-tool-clean TRUE
sleep $P
#Kegel Ausblasen beenden
halcmd sets o-tool-clean FALSE
exit 0
ALL UP - MDI Button - M116
#!/bin/bash
#Arme Anheben
waitfor i-tool-basket-is-down TRUE
halcmd sets o-tool-clean FALSE
halcmd sets o-tool-01-down FALSE
halcmd sets o-tool-02-down FALSE
halcmd sets o-tool-03-down FALSE
halcmd sets o-tool-04-down FALSE
halcmd sets o-tool-05-down FALSE
halcmd sets o-tool-06-down FALSE
halcmd sets o-tool-07-down FALSE
halcmd sets o-tool-08-down FALSE
halcmd sets o-tool-09-down FALSE
halcmd sets o-tool-10-down FALSE
halcmd sets o-tool-11-down FALSE
halcmd sets o-tool-12-down FALSE
halcmd sets o-tool-all-up TRUE
#
waitfor i-tool-01-is-down FALSE
waitfor i-tool-02-is-down FALSE
waitfor i-tool-03-is-down FALSE
waitfor i-tool-04-is-down FALSE
waitfor i-tool-05-is-down FALSE
waitfor i-tool-06-is-down FALSE
waitfor i-tool-07-is-down FALSE
waitfor i-tool-08-is-down FALSE
waitfor i-tool-09-is-down FALSE
waitfor i-tool-10-is-down FALSE
waitfor i-tool-11-is-down FALSE
waitfor i-tool-12-is-down FALSE
#
waitfor i-tool-01-is-up TRUE
waitfor i-tool-02-is-up TRUE
waitfor i-tool-03-is-up TRUE
waitfor i-tool-04-is-up TRUE
waitfor i-tool-05-is-up TRUE
waitfor i-tool-06-is-up TRUE
waitfor i-tool-07-is-up TRUE
waitfor i-tool-08-is-up TRUE
waitfor i-tool-09-is-up TRUE
waitfor i-tool-10-is-up TRUE
waitfor i-tool-11-is-up TRUE
waitfor i-tool-12-is-up TRUE
#
halcmd sets o-tool-all-up FALSE
exit 0
unlock table - MDI Button - M120
#!/bin/bash
#Tisch anheben M120
halcmd sets o-table-lock FALSE
waitfor o-table-lock FALSE
sleep 1
halcmd sets o-table-up TRUE
waitfor i-table-is-up TRUE
exit 0
Lock table - MDI Button - M121
#!/bin/bash
#Tisch verriegeln M121
while :; do
set -- $(halcmd -s show sig i-table-is-1)
seite1=$2
set -- $(halcmd -s show sig i-table-is-2)
seite2=$2
echo $seite1
echo $seite2
if [ "$seite1" == "TRUE" ] || [ "$seite2" == "TRUE" ] ; then
halcmd sets o-table-up FALSE
halcmd sets o-table-lock TRUE
waitfor i-table-is-up FALSE
waitfor o-table-lock TRUE
exit 0
fi
sleep 2
done
exit 0
Change Table - MDI Button - M124
#!/bin/bash
#Tisch wechseln M124
set -- $(halcmd -s show sig i-table-is-1)
seite1=$2
set -- $(halcmd -s show sig i-table-is-2)
seite2=$2
if [ "$seite1" == "TRUE" ] ; then
~/linuxcnc/configs/IgorProbe/nc_files/M123
fi
if [ "$seite2" == "TRUE" ] ; then
~/linuxcnc/configs/IgorProbe/nc_files/M122
fi
exit 0
1 - MDI Button - M122
#!/bin/bash
#Tisch Seite 1 M122
set -- $(halcmd -s show sig i-table-is-1)
seite1=$2
if [ "$seite1" == "TRUE" ] ; then
exit 0
else
~/linuxcnc/configs/IgorProbe/nc_files/M120
waitfor i-table-is-up TRUE
halcmd sets o-table-1 TRUE
waitfor i-table-is-1 TRUE
# sleep 3
~/linuxcnc/configs/IgorProbe/nc_files/M121
halcmd sets o-table-1 FALSE
fi
exit 0
2 - MDI Button - M123
#!/bin/bash
#Tisch Seite 2 M123
set -- $(halcmd -s show sig i-table-is-2)
seite2=$2
if [ "$seite2" == "TRUE" ] ; then
exit 0
else
~/linuxcnc/configs/IgorProbe/nc_files/M120
waitfor i-table-is-up TRUE
halcmd sets o-table-2 TRUE
waitfor i-table-is-2 TRUE
# sleep 3
~/linuxcnc/configs/IgorProbe/nc_files/M121
halcmd sets o-table-2 FALSE
fi
exit 0
Dann wäre da noch die Rechte Seite, bei der geht es um das Eigentliche Laden von Werkzeugen in den Wechsler:
Begin Load Basket - subcall Button - beginloadtoolchanger.ngc
o<beginloadtoolchanger> sub
(print, o<beginloadtoolchanger>)
O10 if [#<_current_tool> gt 0] ; checks if spindle empty
(MSG, Spindle not epmty)
o<toolchange> endsub [1]
M2
O10 endif
M110
M112
M116
o<beginloadtoolchanger> endsub [1]
M2
Load Toolchanger - subcall Button - loadtoolchanger.ngc
(author: PL)
(version: 0.1)
(date: 7.3.2020)
(Bring ATC Arm down for loading)
o<loadtoolchanger> sub
O10 if [#<_current_tool> gt 0] ; checks if spindle empty
(MSG, Spindle not epmty)
o<toolchange> endsub [1]
M2
O10 endif
O20 if [#<_hal[i-tool-basket-is-down]> eq 0 ] ; checks if basket is ready
(MSG, basket not ready)
o<toolchange> endsub [1]
M2
O20 endif
;assign the variables from UI to some parameters
#<loadarmnr_atc_page> = #1
#<tool_number_entry_atc_page> = #12
;M108 P#<tool_number_entry_atc_page> Q#<loadarmnr_atc_page>
M131 P#<loadarmnr_atc_page>
M132 P#<tool_number_entry_atc_page>
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.store_tool{#<loadarmnr_atc_page>, #<tool_number_entry_atc_page>}])
#[5189 + #<loadarmnr_atc_page>] = #<tool_number_entry_atc_page>
;M108 P[5189 + #<loadarmnr_atc_page>] Q#[5189 + #<loadarmnr_atc_page>]
M116
;assign the tool numbers in the pockets to the parameters
o<loadtoolchanger> endsub
M2
#!/bin/bash
#M132 Arm Laden
P=$1
Q=$2
newnr=$P
echo $newnr
toolline=$(grep "T$newnr " tool.tbl )
tool=$(cut -d ";" -f2 <<< $toolline)
temp=$(cut -d "Z" -f2 <<< $toolline)
Offset=${temp:1:3}
zenity --info --title="Korb Laden" --text "Werkzeug: T$newnr \n\n $tool \n\n Z-Offset: $Offset mm \n\n einsetzen"
zenity --info --title="Korb Laden" --text "Werkzeug T$P Gesichert?"
exit 0
#!/bin/bash
#M133 Arn leeren
P=$1
Q=$2
zenity --info --text "Werkzeug Aus Arm $P entfernen"
zenity --info --text "Arm $P Gesichert?"
exit 0
End Load Toolchanger - subcall button - endloadtoolchanger.ngc
o<endloadtoolchanger> sub
(print, o<endloadtoolchanger>)
M116
M113
M111
o<endloadtoolchanger> endsub [1]
M2
Copland pump 1 - MDI Button - M127
#!/bin/bash
#toggle relais 1
set -- $(halcmd -s show sig o-pump-1)
status=$2
if [ "$status" == "TRUE" ] ; then
halcmd sets o-pump-1 FALSE
else
halcmd sets o-pump-1 TRUE
fi
exit 0
ATC Automatic control Panel - subcall button - fillwidget.ngc
o<fillwidget> sub
(print, o<fillwidget>)
#1 = 0
o130 while [#1 LT 12]
#1 = [#1+1]
#2 = #[5189+#1]
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.store_tool{#1, #2}])
o130 endwhile
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.atc_message{"Igor"}])
o<fillwidget> endsub [1]
M2