Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Softkey anwählen beim Rückübersetzen

Beitrag 21.07.2015, 07:20 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Hallo zusammen,

ich bin gerade dabei das Gravieren unserer Logos in die HMI unserer Milltap einzubinden.
Soweit klappt das auch ganz gut, ein Problem habe ich aber noch.
Der Eingabedialog ist bei allen Logos der gleiche, und ich möchte nun durch drücken einen vertikalen Softkeys die richtige Codezeile ausgeben.
Klappt auch, nur habe ich beim Rücksprung mit pfeil rechts in die Maske nicht mehr den richtigen Softkey aktiv, und muss ihn daher bei jeder Änderung noch mal drücken. Wie bekomme ich es hin, dass je nach NC-Code auch der passende SK angewählt wird?

Hier der Code:

QUOTE
;PROJEKTIERUNSGDATEI FUER Logos
;------------------------------------------------------------
;################ EINGABEPARAMETER #################
;_xstart ;STARTPUNKT X
;_ystart ;STARTPUNKT Y
;_m_faktor ;FAKTOR GROESSE
;_e_feed ;EINTAUCHVORSCHUB
;_fr_feed ;FRAESVORSCHUB
;_depth ;GRAVIERTIEFE
;_workplane_z ;KOORDINATENOBERFLAECHE
;_safety_z ;SICHERHEIT Z
;###################################################

//m(Logos/"DDS-Logos")

def _xstart = (r//0/"Startpunkt X","X-Start"//" mm")
def _ystart = (r//0/"Startpunkt Y","Y-Start"//" mm")
def _m_faktor = (r//1/"Massfaktor fuer Groesse","Groesse"//" mm")
def _e_feed = (i/0,40000/100/"Eintauchvorschub","F-Eintauchen"//" mm/min")
def _fr_feed = (i/0,40000/500/"Fraesvorschub","F-Fraes"//" mm/min")
def _depth = (r/0,999/0.3/"Fraestiefe","Tiefe"//" mm")
def _workplane_z = (r/-999,999/0/"Koordinatenoberflaeche Z","Z Ebene"//" mm")
def _safety_z = (r/0,999/2/"Sicherheitsabstand Z","Z Sicherheit"//" mm")

vs1 = ("DNV")
vs2 = ("ABS")
vs3 = ("BV")
vs4 = ("Ar...")
vs7 = ("\\FD_cancel.png")
vs8 = ("\\FD_ok.png",ac4)

output(LOGO_DNV)
"LOGO_DNV(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

output(LOGO_ABS)
"LOGO_ABS(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

output(LOGO_BV)
"LOGO_BV(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

output(LOGO_ARSCH)
"LOGO_ARSCH(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

press(vs1)
vs1.se = 3
vs2.se = 1
vs3.se = 1
vs4.se = 1
end_press

press(vs2)
vs2.se = 3
vs1.se = 1
vs3.se = 1
vs4.se = 1
end_press

press(vs3)
vs3.se = 3
vs1.se = 1
vs2.se = 1
vs4.se = 1
end_press

press(vs4)
vs4.se = 3
vs1.se = 1
vs2.se = 1
vs3.se = 1
end_press

press(vs7)
lm("dds_zyklen","dds_zyklen.com")
end_press

press(vs8)

IF vs1.se == 3
GC("LOGO_DNV")
endif

IF vs2.se == 3
GC("LOGO_ABS")
endif

IF vs3.se == 3
GC("LOGO_BV")
endif

IF vs4.se == 3
GC("LOGO_ARSCH")
endif

exit
end_press

press(sl)
exit
end_press

//end


Vielen Dank für eure Hilfe!
   
Beitrag 21.07.2015, 08:42 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Ok, ich habe die Lösung gefunden.
Damit andere nicht dumm sterben müssen, hier ist Sie:

QUOTE
;PROJEKTIERUNSGDATEI FUER Logos
;------------------------------------------------------------
;################ EINGABEPARAMETER #################
;_xstart ;STARTPUNKT X
;_ystart ;STARTPUNKT Y
;_m_faktor ;FAKTOR GROESSE
;_e_feed ;EINTAUCHVORSCHUB
;_fr_feed ;FRAESVORSCHUB
;_depth ;GRAVIERTIEFE
;_workplane_z ;KOORDINATENOBERFLAECHE
;_safety_z ;SICHERHEIT Z
;###################################################

//m(Logos/"DDS-Logos")

def _logo = (s//"DNV"//wr0)
def _xstart = (r//0/"Startpunkt X","X-Start"//" mm")
def _ystart = (r//0/"Startpunkt Y","Y-Start"//" mm")
def _m_faktor = (r//1/"Massfaktor fuer Groesse","Groesse"//" mm")
def _e_feed = (i/0,40000/100/"Eintauchvorschub","F-Eintauchen"//" mm/min")
def _fr_feed = (i/0,40000/500/"Fraesvorschub","F-Fraes"//" mm/min")
def _depth = (r/0,999/0.3/"Fraestiefe","Tiefe"//" mm")
def _workplane_z = (r/-999,999/0/"Koordinatenoberflaeche Z","Z Ebene"//" mm")
def _safety_z = (r/0,999/2/"Sicherheitsabstand Z","Z Sicherheit"//" mm")

vs1 = ("DNV")
vs2 = ("ABS")
vs3 = ("BV")
vs4 = ("Ar...")
vs7 = ("\\FD_cancel.png")
vs8 = ("\\FD_ok.png",ac4)

load
if _logo == "DNV"
vs1.se = 3
endif
if _logo == "ABS"
vs2.se = 3
endif
if _logo == "BV"
vs3.se = 3
endif
if _logo == "Ar..."
vs4.se = 3
endif
end_load

output(LOGO_DNV)
"LOGO_DNV(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

output(LOGO_ABS)
"LOGO_ABS(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

output(LOGO_BV)
"LOGO_BV(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

output(LOGO_ARSCH)
"LOGO_ARSCH(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

press(vs1)
_logo = "DNV"
vs1.se = 3
vs2.se = 1
vs3.se = 1
vs4.se = 1
end_press

press(vs2)
_logo = "ABS"
vs2.se = 3
vs1.se = 1
vs3.se = 1
vs4.se = 1
end_press

press(vs3)
_logo = "BV"
vs3.se = 3
vs1.se = 1
vs2.se = 1
vs4.se = 1
end_press

press(vs4)
_logo = "Ar..."
vs4.se = 3
vs1.se = 1
vs2.se = 1
vs3.se = 1
end_press

press(vs7)
lm("dds_zyklen","dds_zyklen.com")
end_press

press(vs8)

IF vs1.se == 3
GC("LOGO_DNV")
endif

IF vs2.se == 3
GC("LOGO_ABS")
endif

IF vs3.se == 3
GC("LOGO_BV")
endif

IF vs4.se == 3
GC("LOGO_ARSCH")
endif

exit
end_press

press(sl)
exit
end_press

//end
   
Beitrag 21.07.2015, 15:39 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Direkt die nächste Frage hinterher:

Ich versuche unseren Standard Programmkopf mit einer Maske zu füllen. Soll etwa so aussehen:

;Artikelnummer: 08154711
;Artikelbez. : Flansch
;Kunde : Peter Pan
;Spannmittel : Futter 200

usw, usf.

Das erzeugen des Codes klappt einwandfrei, das Rückübersetzen leider gar nicht. Mittlerweile ist mir auch klar warum:
Weil die Steuerung dadurch, dass die erste Zeile mit einem Kommentar beginnt, dass alles als Rückübersetzungskommentar ansieht.
Lasse ich die Kommentarzeilen weg, bekomme ich natürlich einen Syntaxerror. Wenn ich Spasseshalber in der ersten und letzten Zeile ein "G0" ausgebe, schluckt sie auch die kommentarzeilen. Was wäre eine Saubere Lösung? Leere Zeilen funktionieren leider auch nicht. Gruppierung klappt auch nicht...

Gruß, Lucas
   
Beitrag 21.07.2015, 18:08 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
Wie wäre es mit einem Label?

CODE
PROGRAMMKOPF_S:
;Artikelnummer: 08154711
;Artikelbez. : Flansch
;Kunde : Peter Pan
;Spannmittel : Futter 200
PROGRAMMKOPF_E:


Zu deiner anderen Maske:
Wieso machst du vier Output Methoden, wenn du den einzigen wechselnden Teil schon als String gespeichert hast?
Wie wäre es so:

CODE
;PROJEKTIERUNSGDATEI FUER Logos
;------------------------------------------------------------
;################ EINGABEPARAMETER #################
;_xstart;STARTPUNKT X
;_ystart;STARTPUNKT Y
;_m_faktor;FAKTOR GROESSE
;_e_feed;EINTAUCHVORSCHUB
;_fr_feed;FRAESVORSCHUB
;_depth;GRAVIERTIEFE
;_workplane_z;KOORDINATENOBERFLAECHE
;_safety_z;SICHERHEIT Z
;###################################################

//m(Logos/"DDS-Logos")

def _logo = (s//"DNV"//wr0)
def _xstart = (r//0/"Startpunkt X","X-Start"//" mm")
def _ystart = (r//0/"Startpunkt Y","Y-Start"//" mm")
def _m_faktor = (r//1/"Massfaktor fuer Groesse","Groesse"//" mm")
def _e_feed = (i/0,40000/100/"Eintauchvorschub","F-Eintauchen"//" mm/min")
def _fr_feed = (i/0,40000/500/"Fraesvorschub","F-Fraes"//" mm/min")
def _depth = (r/0,999/0.3/"Fraestiefe","Tiefe"//" mm")
def _workplane_z = (r/-999,999/0/"Koordinatenoberflaeche Z","Z Ebene"//" mm")
def _safety_z = (r/0,999/2/"Sicherheitsabstand Z","Z Sicherheit"//" mm")

vs1 = ("DNV")
vs2 = ("ABS")
vs3 = ("BV")
vs4 = ("Ar...")
vs7 = ("\\FD_cancel.png")
vs8 = ("\\FD_ok.png",ac4)

load
if _logo == "DNV"
  vs1.se = 3
endif
if _logo == "ABS"
  vs2.se = 3
endif
if _logo == "BV"
  vs3.se = 3
endif
if _logo == "Ar..."
  vs4.se = 3
endif
end_load

output(LOGO)
"LOGO_" _logo "(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

press(vs1)
_logo = "DNV"
vs1.se = 3
vs2.se = 1
vs3.se = 1
vs4.se = 1
end_press

press(vs2)
_logo = "ABS"
vs2.se = 3
vs1.se = 1
vs3.se = 1
vs4.se = 1
end_press

press(vs3)
_logo = "BV"
vs3.se = 3
vs1.se = 1
vs2.se = 1
vs4.se = 1
end_press

press(vs4)
_logo = "Ar..."
vs4.se = 3
vs1.se = 1
vs2.se = 1
vs3.se = 1
end_press

press(vs7)
lm("dds_zyklen","dds_zyklen.com")
end_press

press(vs8)
GC("LOGO")
exit
end_press

press(sl)
exit
end_press

//end


Ich finde es allgemein etwas unschön, dass du bei deinem IF den Status der Softkeys abgefragt hast statt die Variable, welche ja eigentlich bestimmend ist. Wenn du die Variable abgefragt hättest, wäre auch das Problem mit dem erneuten Drücken des Softkeys nicht aufgetreten.
Eine weitere Variante wäre eine Variable mit Toggle-Feld So könntest du dir deine Softkeys ganz sparen:

CODE
;PROJEKTIERUNSGDATEI FUER Logos
;------------------------------------------------------------
;################ EINGABEPARAMETER #################
;_xstart;STARTPUNKT X
;_ystart;STARTPUNKT Y
;_m_faktor;FAKTOR GROESSE
;_e_feed;EINTAUCHVORSCHUB
;_fr_feed;FRAESVORSCHUB
;_depth;GRAVIERTIEFE
;_workplane_z;KOORDINATENOBERFLAECHE
;_safety_z;SICHERHEIT Z
;###################################################

//m(Logos/"DDS-Logos")

; Variablen
def _logo = (s/*"DNV","ABS","BV","Ar..."//"Logo","Logo")
def _xstart = (r//0/"Startpunkt X","X-Start"//" mm")
def _ystart = (r//0/"Startpunkt Y","Y-Start"//" mm")
def _m_faktor = (r//1/"Massfaktor fuer Groesse","Groesse"//" mm")
def _e_feed = (i/0,40000/100/"Eintauchvorschub","F-Eintauchen"//" mm/min")
def _fr_feed = (i/0,40000/500/"Fraesvorschub","F-Fraes"//" mm/min")
def _depth = (r/0,999/0.3/"Fraestiefe","Tiefe"//" mm")
def _workplane_z = (r/-999,999/0/"Koordinatenoberflaeche Z","Z Ebene"//" mm")
def _safety_z = (r/0,999/2/"Sicherheitsabstand Z","Z Sicherheit"//" mm")

; Softkeys
vs7 = ("\\FD_cancel.png")
vs8 = ("\\FD_ok.png",ac4)

output(LOGO)
"LOGO_" _logo "(" _xstart "," _ystart "," _m_faktor "," _e_feed "," _fr_feed "," _depth "," _workplane_z "," _safety_z ")"
end_output

press(vs7)
lm("dds_zyklen","dds_zyklen.com")
end_press

press(vs8)
GC("LOGO")
exit
end_press

press(sl)
exit
end_press

//end


PS: Benutzt du das A-Logo bei Kunden die du nicht magst? tounge.gif

PSPS: Das Forum macht die ... ja automatisch, nicht mal fluchen darf man hier :doch:


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 21.07.2015, 18:46 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Danke, das ist doch schon mal etwas konstruktiver Input!
Das mit dem String ist eine gute Idee, das werde ich auf jeden Fall morgen umsetzen. Die Variante mit Toggle-Feld war mir auch bekannt, aber ich fand es irgendwie "schöner" über die Softkeys...
DIe Lösung mit dem Programmkopf ist eine Idee, aber ich glaube ich werde einfach in der ersten Zeile einmal G90 setzen. Sieht optisch dezent aus und kann man am Anfang eines Hauptprogramms auch nichts mit falsch machen wink.gif

Generell ist es etwas schade, dass sich scheinbar nur wenige Leute hier mit dem Thema beschäftigen. Ich bin jetzt seit etwa 2 Tagen damit zugange, und ich finde es echt super, was man sich damit für Erleichterungen schaffen kann. Also immer her mit dem Input wink.gif

Edit: Das mit Dem A.rsch-Logo kommt bei uns irgendwie aus der Historie biggrin.gif Ich wüsste auch gerne, wer das so genannt hat...

Der Beitrag wurde von faltklo bearbeitet: 21.07.2015, 18:47 Uhr
   
Beitrag 21.07.2015, 20:12 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (faltklo @ 21.07.2015, 19:46 Uhr) *
Generell ist es etwas schade, dass sich scheinbar nur wenige Leute hier mit dem Thema beschäftigen. Ich bin jetzt seit etwa 2 Tagen damit zugange, und ich finde es echt super, was man sich damit für Erleichterungen schaffen kann. Also immer her mit dem Input wink.gif


hey ... für zwei tage hut ab wink.gif
denk an das thema wagt sich keiner so richtig ran, weil a. verdammt viel zeit flöten geht und b. die geschichte recht verzwickt ist.

das mit dem rückübersetzen ist so eine sache ...
die erste zeile die generiert wird, hier steht die variablen belegung / formatierung der variablen usw. bild datei und hilfetext speicher ort.
das brauchst du um eben diesen code zurück lesen zu können und die zahl aus dem text in die richtige variable wieder zurück zu schreiben.
da er ja die kommentare zum rückübersetzen interpretiert wird, wird das so nicht gehen

warum willst denn das zurück übersetzen?
macht ja wenig sinn im programm kopf ...
sprich das programm erstellst du ja nur ein mal und ändern von hand ist deutlich schneller wie erst rück überstzen und dann die variablen ändern

per softkey ein kopf zu schreiben ist ne feine lösung ... aber rückübersetzen ist an der stelle vergeudete zeit und zu dem sieht sie auch nicht sonderlich hübsch aus.

jetzt kommt noch ein problem,
du willst nach dem kopf variablen definieren ...
jetzt kannst du das nicht mehr und musst es vor dem kopf machen, weil ja im kopf irgend welche befehle vergraben sind.


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 21.07.2015, 20:33 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
QUOTE (Hexogen @ 21.07.2015, 21:12 Uhr) *
hey ... für zwei tage hut ab wink.gif
denk an das thema wagt sich keiner so richtig ran, weil a. verdammt viel zeit flöten geht und b. die geschichte recht verzwickt ist.


Naja, ich habe mich natürlich schon mit diversen Formen der Variablenprogrammierung beschäftigt (Heidenhain Cycle Design etc), da fällt der Einstieg dann nicht mehr so schwer. Das schwierigste war für mich, das richtige Siemens Handbuch zu finden und darin das zu finden was ich brauche. Bei 720 Seiten gar nicht so einfach biggrin.gif Außerdem gibt es immer noch etiche Möglichkeiten, die ich damit nicht ausgelotet habe...

QUOTE
das mit dem rückübersetzen ist so eine sache ...
die erste zeile die generiert wird, hier steht die variablen belegung / formatierung der variablen usw. bild datei und hilfetext speicher ort.
das brauchst du um eben diesen code zurück lesen zu können und die zahl aus dem text in die richtige variable wieder zurück zu schreiben.
da er ja die kommentare zum rückübersetzen interpretiert wird, wird das so nicht gehen


Naja, wir kopieren halt relativ oft Programme. Bisher haben wir den Kopf immer manuell eingegeben, aber da passieren relativ leicht kleine Formatierungsfehler, die dann dazu führen, dass das richtige automatische abspeichern mit Cimco NC-Base nicht funktioniert.
Ich habe mir jetzt wie oben beschrieben mit einem einfachen G90 in der ersten Zeile beholfen. Da stört er nicht und soll von mir aus solange da bleiben, bis mir eine bessere Lösung einfällt.

QUOTE
warum willst denn das zurück übersetzen?
macht ja wenig sinn im programm kopf ...
sprich das programm erstellst du ja nur ein mal und ändern von hand ist deutlich schneller wie erst rück überstzen und dann die variablen ändern


Naja, siehe oben. Und ändern geht ja eben ohne Rückübersetzen leider nicht, da müsste man immer löschen und komplett neu schreiben, wenn man einen Fehler gemacht hat, oder etwas ändern will.

QUOTE
per softkey ein kopf zu schreiben ist ne feine lösung ... aber rückübersetzen ist an der stelle vergeudete zeit und zu dem sieht sie auch nicht sonderlich hübsch aus.

jetzt kommt noch ein problem,
du willst nach dem kopf variablen definieren ...
jetzt kannst du das nicht mehr und musst es vor dem kopf machen, weil ja im kopf irgend welche befehle vergraben sind.


Sollte aber doch eigentlich keine Probleme machen, oder? es werden zwar strings definiert, aber es wird ja ansonsten kein NC-Code abgearbeitet.
Ausserdem hatte ich mir das so vorgestellt, dass man die Strings aus dem Pogrammkopf zum Beispiel auch zum beschriften mit der Artikelnummmer o.Ä. verwursten könnte...

Der Beitrag wurde von faltklo bearbeitet: 21.07.2015, 20:34 Uhr
   
Beitrag 21.07.2015, 21:00 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (faltklo @ 21.07.2015, 21:33 Uhr) *
Sollte aber doch eigentlich keine Probleme machen, oder? es werden zwar strings definiert, aber es wird ja ansonsten kein NC-Code abgearbeitet.
Ausserdem hatte ich mir das so vorgestellt, dass man die Strings aus dem Pogrammkopf zum Beispiel auch zum beschriften mit der Artikelnummmer o.Ä. verwursten könnte...


global definierte strings stellen sicher kein problem dar...

G90
;Kopf

DEF REAL blabla

jedoch schon ... da du ja ein ein G90 vor DEF ausführst ...

was ich mir vorstellen kann ... als programm kopf ... ist einfach eine Parameter Beschreibung statt Kommentar

; * * * * * * * * * * * Porgamm Kopf * * * * * * * * * * * * * * * * *
DEF STRING[20] ARTIKELNUMMER = "08154711"
DEF STRING[20] ARTIKELBEZ = "Flansch"
DEF STRING[20] KUNDE = "Peter Pan"
DEF STRING[20] SPANMITTEL = "Futter 200"
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

und hier kannst du die variablen in der mmc auslesen und in anderen zyklen weiter verarbeiten ...
sprich in der mmc prozedur sind die variablen lokal die du definierst ...
das solltest auch mit Cimco einwandfrei interpretieren können.

naja cycle design find ich bei weitem freundlicher wie das was siemens besher hatte ...
aber es ist licht am ende des tunnels ... die neue hmi lässt hoffen ... wink.gif


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 21.07.2015, 22:07 Uhr
okumamori1
okumamori1
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 05.11.2006
Beiträge: 114
Hallo,

das hört sich echt interessant an wir haben auch eine Milltap, wie bekommt man das in die HMI rein ?


Mfg OkumaMori
   
Beitrag 21.07.2015, 22:59 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (faltklo @ 21.07.2015, 18:46 Uhr) *
Die Variante mit Toggle-Feld war mir auch bekannt, aber ich fand es irgendwie "schöner" über die Softkeys...


Der Vorteil vom Toggle Feld liegt in der einfachen Änderungs- und Ergänzungsmöglichkeit. Wenn du bei deinen vier Logos bleibst ist der Softkey kein Problem, wenn jedoch ein neues Logo hinzukommen würde musst du bei der Softkeylösung an diversen Orten anpassen. Bei der Toggle Lösung musst du nur in der Variable einen String hinzufügen und den Zyklus entsprechend benennen.

QUOTE
naja cycle design find ich bei weitem freundlicher wie das was siemens besher hatte ...
aber es ist licht am ende des tunnels ... die neue hmi lässt hoffen ... wink.gif

Schade dabei ist nur, dass man dafür eine Schulung und ein Programm benötigt. So nebenbei als "Hobby" wie ich das mache eigene Masken basteln wird so halt leider nichts.

Der Beitrag wurde von DMC635V bearbeitet: 21.07.2015, 23:00 Uhr


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 22.07.2015, 05:35 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (Hexogen @ 21.07.2015, 21:00 Uhr) *
naja cycle design find ich bei weitem freundlicher wie das was siemens besher hatte ...
aber es ist licht am ende des tunnels ... die neue hmi lässt hoffen ... wink.gif

wow.gif welche neue HMI ?
wird es da eine IDE für die Masken (Easyscreen) geben ?
   
Beitrag 22.07.2015, 05:55 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
QUOTE (okumamori1 @ 21.07.2015, 23:07 Uhr) *
Hallo,

das hört sich echt interessant an wir haben auch eine Milltap, wie bekommt man das in die HMI rein ?


Mfg OkumaMori


Achtung: Anwendung auf eigene Gefahr, ich schildere jetzt den Weg, wie es bei mir geklappt hat. Ob du es dann so anwendest und ob es bei dir auch funktioniert ist eigenes Risiko!

1. Herstellerkennwort setzen
2. Unter "Inbetriebnahme->Systemdaten" den Explorer für Systemdaten öffnen
3. Deine Zyklen ins Verzeichnis Anwenderzyklen kopieren.
4. Unter dem Pfad "System CF-Card->oem->sinumerik->hmi" findest du die Ordner "proj" und "ico"
5. In den Ordner "ico" kannst du unter der richtigen Auflösung deine Hilfsbilder uns Softkeybilder abspeichern
6. Im Ordner "proj" findest du die Datei "dmg_aeditor.com". Diese ist die Einstiegsdatei für Softkeyleisten und muss modifizeirt werden.

Alles weitere findest du dann im Handbuch "HMI-Advanced" im DocOnWeb.
Wenn du deinen Maschine im Sinutrain hast, dann immer erst am PC testen!

QUOTE (DMC635V)
Der Vorteil vom Toggle Feld liegt in der einfachen Änderungs- und Ergänzungsmöglichkeit. Wenn du bei deinen vier Logos bleibst ist der Softkey kein Problem, wenn jedoch ein neues Logo hinzukommen würde musst du bei der Softkeylösung an diversen Orten anpassen. Bei der Toggle Lösung musst du nur in der Variable einen String hinzufügen und den Zyklus entsprechend benennen.


Da hast du selbstverständlich recht!

QUOTE
Schade dabei ist nur, dass man dafür eine Schulung und ein Programm benötigt. So nebenbei als "Hobby" wie ich das mache eigene Masken basteln wird so halt leider nichts.


Ich persönlich finde Cycle Design auch verhältnismäßig umständlich in den Arbeitsroutinen. Ich muss immer mit Paint oder BMX-Design Softkeybilder erstellen, selbst wenn ich nur Texte auf den SKs haben will. Ich bin ehrlich gesagt mit der Siemens Methode fast schneller, wobei die Fehleranfälligkeit natürlich höher ist, wenn man mal nicht aufpasst.
   
Beitrag 22.07.2015, 06:04 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (nixalsverdruss @ 22.07.2015, 06:35 Uhr) *
wow.gif welche neue HMI ?
wird es da eine IDE für die Masken (Easyscreen) geben ?


genau das ... aber hab bisher selbst nix konkretes zu gesehen ...
ist die aussage von unseren siemens leuten wink.gif
speziell für touch soll es dann recht einfach sein masken zu stricken ...
smile.gif lässt mal hoffen für die zukunft


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 22.07.2015, 06:14 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (DMC635V @ 21.07.2015, 23:59 Uhr) *
Schade dabei ist nur, dass man dafür eine Schulung und ein Programm benötigt. So nebenbei als "Hobby" wie ich das mache eigene Masken basteln wird so halt leider nichts.


find da geht HDH den richtigen Weg, wobei man auch mit etwas Einarbeitung ohne Probleme rein kommt.

QUOTE
Ich persönlich finde Cycle Design auch verhältnismäßig umständlich in den Arbeitsroutinen. Ich muss immer mit Paint oder BMX-Design Softkeybilder erstellen, selbst wenn ich nur Texte auf den SKs haben will. Ich bin ehrlich gesagt mit der Siemens Methode fast schneller, wobei die Fehleranfälligkeit natürlich höher ist, wenn man mal nicht aufpasst.


das ist ja grad das gewisse etwas, und die Softkeys sind ja für Bilder ausgelegt ...
Mit Paint n schickes Softkey zu kreieren macht auch Laune ... wink.gif

Find Fanuc auch recht interessant, grad die "Rückübersetzung" ist viel besser gemacht wie die von Siemens...


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 22.07.2015, 13:36 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Ok, nächste Baustelle:

Ich möchte bei unserer bald kommenden CTX Beta (Revolvermaschine) eine Maske bauen, die aus dem aufrufenden NC-Programm alle Werkzuege ausliest, und mir dann diese (ähnlich wie mein Programmkopf) als Kommentarcode ausgibt.
Im Idealfall sieht das dann vom Format in der Maske ungefähr s auch, wie in der anhängenden Paint Zeichnung.
Wie würdet Ihr an die Sache ran gehen? Es geht mir quasi darum, dass der Maschinenbediener sein ganzes Programm schreibt, und zuletzt am Programmanfang die Maske einfügt, die sich dann quasi "von selbst" ausfüllt.
Jemand ne Idee?

Angehängte Datei  revolverliste.png ( 18.23KB ) Anzahl der Downloads: 32


Der Beitrag wurde von faltklo bearbeitet: 22.07.2015, 13:39 Uhr
   
Beitrag 22.07.2015, 14:04 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
na ... zeile für zeile lesen ... und die stelle suchen wo ein werkzeugwechsel vorkommt.
anders bekommst es nicht hin ...
gefundenes in string variablen sichern ...
und wenn der einmal von der vorgabe abweicht hast schon probleme die werkzeugwechselstelle zu suchen


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 22.07.2015, 20:40 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Ok, ich habe das nochmal überdacht. Am elegantesten fände ich eine Lösung, wo der Bediener die Revolverliste im Programm aus der Magazinbelegung übernehmen kann, und andersrum. Dafür will ich alle 24 Plätze prüfen und falls vorhanden den Werkzeugnamen auslesen. Das klappt wollte ich mit einer FOR-Schleife realisieren. Wie kann ich nun in dieser Schleife meine string-Variable hochzählen? also von _t1 auf _t2 und so weiter.
Hat da jemand eine Idee? Stringoperationen helfen mir doch nur bei den Ergebnissen, oder? Hier der Code:

CODE
N10 def string[32] _t1, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t10, _t11, _t12, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24
N20 def real _tnumber, _tnumber_exist

_tnumber = 1

FOR _tnumber = 1 TO 24
N30 _tnumber_exist = $TC_MPP6[1,_tnumber];tnr platz 1 auslesen
IF _tnumber_exist <> 0
  _t1 = $TC_TP2[$TC_MPP6[1,_tnumber]]
ELSE
  _t1 = "nicht belegt"
ENDIF
N40 MSG(_t1)
M0
ENDFOR

N50 M30


Das MSG und M0 ist natürlich erstmal nur für die Testläufe drin.

Vielen Dank!
   
Beitrag 23.07.2015, 07:57 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Sorry, dass ich hier so rumnerve, ich habe direkt das nächste Problem.

Ich habe es jetzt so gelöst, dass ich mir mit dem WRITE Befehl ein wunderbar lauffähiges Programm schreibe, welches mir dann meine variablen Befüllen soll. Das Programm entsteht auch und läuft durch, wenn ich es anwähle. Versuche ich es jedoch auc meinem anderen Programm aufzurufen, kommt immer "Programm REV_LIST nicht vorhanden oder wird editiert". Der ISFILE am Programmende gibt immer 1 zurück...

Einer ne Idee?

CODE
N10 def string[40] _tdummy, _pfad, _tstring
N20 def real _tnumber, _tnumber_exist
N30 def int _error
N40 def char _HK=34
def bool _filecheck



N50 _pfad = "/_N_WKS_DIR/REV_LIST_SPF"

_filecheck = ISFILE(_pfad);nur zur Kontrolle
MSG(_filecheck)
M0

N60 DELETE(_error,_pfad)
N70 WRITE(_error,_pfad,"DEF STRING[32] _t1, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t10, _t11, _t12, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24")
N80 WRITE(_error,_pfad," ")

N90 _tnumber = 1

N100 FOR _tnumber = 1 TO 24
N110 _tnumber_exist = $TC_MPP6[1,_tnumber];tnr platz auslesen
N120 IF _tnumber_exist;wenn tnr existiert
N130  _tdummy = $TC_TP2[$TC_MPP6[1,_tnumber]];tnamen auslesen
N140 ELSE
N150  _tdummy = " ";dummy ausgeben
N160 ENDIF
N170 _tstring = "_t"<<_tnumber<<" = "<<_HK<<_tdummy<<_HK
N180 WRITE(_error,_pfad,_tstring)
N190 ENDFOR

N200 WRITE(_error,_pfad," ")
N210 WRITE(_error,_pfad,"RET")

_filecheck = ISFILE(_pfad);nur zur Kontrolle
MSG(_filecheck)
M0

N220 STOPRE
N230 CALL _pfad

N240 M30


Gruß, Lucas
   
Beitrag 23.07.2015, 08:02 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (faltklo @ 22.07.2015, 21:40 Uhr) *
Ok, ich habe das nochmal überdacht. Am elegantesten fände ich eine Lösung, wo der Bediener die Revolverliste im Programm aus der Magazinbelegung übernehmen kann, und andersrum. Dafür will ich alle 24 Plätze prüfen und falls vorhanden den Werkzeugnamen auslesen. Das klappt wollte ich mit einer FOR-Schleife realisieren. Wie kann ich nun in dieser Schleife meine string-Variable hochzählen? also von _t1 auf _t2 und so weiter.


schlicht ... geht nicht.
da du keine feldvariablen als string anlegen kannst, soll aber laut siemens bald folgen ...
du kannst dir marken setzen in der for schleife ist zwar net schön aber viele möglichkeiten hast nicht ...
also lesen zu marke springen dann zu schluss der for schleife ...
GOTOC "N"<< _tnumber
oder
GOTOC "LABEL_"<< _tnumber


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 23.07.2015, 08:05 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
QUOTE (Hexogen @ 23.07.2015, 09:02 Uhr) *
schlicht ... geht nicht.
da du keine feldvariablen als string anlegen kannst, soll aber laut siemens bald folgen ...
du kannst dir marken setzen in der for schleife ist zwar net schön aber viele möglichkeiten hast nicht ...
also lesen zu marke springen dann zu schluss der for schleife ...
GOTOC "N"<< _tnumber
oder
GOTOC "LABEL_"<< _tnumber


Ok, gut zu wissen, Danke!
Hast du eventuell eine Idee zu meinem letzten Beitrag?

Gruß, Lucas
   
Beitrag 23.07.2015, 08:06 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (faltklo @ 23.07.2015, 08:57 Uhr) *
Sorry, dass ich hier so rumnerve, ich habe direkt das nächste Problem.

Ich habe es jetzt so gelöst, dass ich mir mit dem WRITE Befehl ein wunderbar lauffähiges Programm schreibe, welches mir dann meine variablen Befüllen soll. Das Programm entsteht auch und läuft durch, wenn ich es anwähle. Versuche ich es jedoch auc meinem anderen Programm aufzurufen, kommt immer "Programm REV_LIST nicht vorhanden oder wird editiert". Der ISFILE am Programmende gibt immer 1 zurück...

Einer ne Idee?

CODE
N10 def string[40] _tdummy, _pfad, _tstring
N20 def real _tnumber, _tnumber_exist
N30 def int _error
N40 def char _HK=34
def bool _filecheck



N50 _pfad = "/_N_WKS_DIR/REV_LIST_SPF"

_filecheck = ISFILE(_pfad);nur zur Kontrolle
MSG(_filecheck)
M0

N60 DELETE(_error,_pfad)
N70 WRITE(_error,_pfad,"DEF STRING[32] _t1, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t10, _t11, _t12, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24")
N80 WRITE(_error,_pfad," ")

N90 _tnumber = 1

N100 FOR _tnumber = 1 TO 24
N110 _tnumber_exist = $TC_MPP6[1,_tnumber];tnr platz auslesen
N120 IF _tnumber_exist;wenn tnr existiert
N130  _tdummy = $TC_TP2[$TC_MPP6[1,_tnumber]];tnamen auslesen
N140 ELSE
N150  _tdummy = " ";dummy ausgeben
N160 ENDIF
N170 _tstring = "_t"<<_tnumber<<" = "<<_HK<<_tdummy<<_HK
N180 WRITE(_error,_pfad,_tstring)
N190 ENDFOR

N200 WRITE(_error,_pfad," ")
N210 WRITE(_error,_pfad,"RET")

_filecheck = ISFILE(_pfad);nur zur Kontrolle
MSG(_filecheck)
M0

N220 STOPRE
N230 CALL _pfad

N240 M30


Gruß, Lucas


dein problem wird hier der CALL _pfad sein ...
musst du deinen "pfad" splitten ...
und das _SPF entfernen ..., bzw im write seperat schreiben


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 23.07.2015, 08:12 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
QUOTE (Hexogen @ 23.07.2015, 09:06 Uhr) *
dein problem wird hier der CALL _pfad sein ...
musst du deinen "pfad" splitten ...
und das _SPF entfernen ..., bzw im write seperat schreiben


Ich bekomme den Fehler aber auch, wenn ich Schreibe:

CALL "/_N_WKS_DIR/REV_LIST"
oder
CALL "REV_LIST"

Da hab ich gerade echt ne Blockade...
   
Beitrag 23.07.2015, 08:47 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (faltklo @ 23.07.2015, 09:12 Uhr) *
Ich bekomme den Fehler aber auch, wenn ich Schreibe:

CALL "/_N_WKS_DIR/REV_LIST"
oder
CALL "REV_LIST"

Da hab ich gerade echt ne Blockade...


welche zeile ist denn der fehler ?


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 23.07.2015, 09:01 Uhr
Guest_guest_*
Themenstarter
Gast


QUOTE (faltklo @ 23.07.2015, 09:12 Uhr) *
Ich bekomme den Fehler aber auch, wenn ich Schreibe:

CALL "/_N_WKS_DIR/REV_LIST"
oder
CALL "REV_LIST"

Da hab ich gerade echt ne Blockade...


Der Programm-Pfad ist hier der Übeltäter.
"/_N_WKS_DIR/" Ist das Verzeichnis.
"_N_REV_LIST_SPF" wäre die Datei.

Im Programm ist der Pfad zum Löschen der datei ja richtig geschrieben.

Um hier Schreibfehler zu umgehen rufe ich gerne indirekt auf.

_Verz="WKS"
_Prog="REV_LIST"
_ProgName="/_N_"<<_Verz<<"_DIR/_N_"<<_Prog<<"_SPF"

CALL _ProgName

das ist gleichbedeutend mit

CALL "/_N_WKS_DIR/_N_REV_LIST_SPF"

Der Beitrag wurde von guest bearbeitet: 23.07.2015, 09:04 Uhr
   
Beitrag 23.07.2015, 09:40 Uhr
Guest_guest_*
Themenstarter
Gast


Mir fällt aber gerade auf, daß die Datei direkt im Verzeichnis Werkstücke liegt.
Ich bin mir nicht sicher, ob dieser Zustand erlaubt ist, oder zu Problemen führt.
Besser wäre die Datei in einem Werkstück aufgehoben. Auch der Übersicht wegen.

<code>
def string[5] _praef="/_N_" ;Feldgroesse 5=4Zeichen+1Ende
def string[5] _vsuff="_DIR"
def string[5] _psuff="_SPF"
def string[26] _Verz
def string[26] _Prog
def string[75] _ProgName ; max.74 Zeichen

_Verz="WERKSTUECK"
_Prog="REV_LIST"

_ProgName="/_N_WPD_DIR"<<_praef<<_Verz<<_vsuff<<_praef<<_Prog<<_psuff

CALL _ProgName
</code>

Der Beitrag wurde von guest bearbeitet: 23.07.2015, 09:52 Uhr
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: