Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Easyscreen - Eigene Masken erstellen, Sammelthread für alle Interessierten

Beitrag 20.10.2015, 11:44 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Hallo Zusammen,

Schon etwas länger fällt mir auf, dass es hier ein paar Leute gibt, die sich ebenfalls mit der Projektierung von Eingabemasken für Siemens-Steuerungen beschäftigen. Das hier soll ein Versuch sein, Fragen zum Thema Masken- und Zyklenerstellung ein wenig zu bündeln. Ich persönlich möchte hier keinesfalls nur Wissen "abgreifen", sondern bin gerne auch selber bereit zu helfen. Der von mir hier gepostete Code darf selbstverständlich verwendet werden (Ausnahme: Maschinenhersteller, die verdienen ihr Geld damit und dürfen sich gerne eigene Gedanken machen ;-) ) Ich hoffe hier bildet sich ein reger Austausch zum Thema.

Ich fange einfach mal mit einem meiner Probleme an:

Ich habe eine Maske erstellt, mit der in der Betriebsart "Automatik" die Werkzeugkorrektur für Drehmaschinen vereinfacht werden soll.
Grundsätzlich funktioniert das ganz gut. Hier mal ein paar Bilder:

Angehängte Datei  1.JPG ( 49.5KB ) Anzahl der Downloads: 414


Angehängte Datei  2.JPG ( 52.77KB ) Anzahl der Downloads: 392


Angehängte Datei  3.JPG ( 62.04KB ) Anzahl der Downloads: 329


Angehängte Datei  4.JPG ( 61.56KB ) Anzahl der Downloads: 316



Mein Problem: Das aktuell eingeschwenkte Werkzeug kann nicht korrigiert werden, weil es anscheinend nicht mehr mit seinem Magazinplatz verknüpft ist, sondern in Bearbeitungsposition ist.
Wie kann ich nun auslesen, ob die eingegebene Platznummer auf berabeitungsposition steht, damit ich trotzdem korrigieren kann?

Hier der Code

CODE
//s(start)

hs6 = ("Werkzeug-%nKorrektur")

press(hs6)
lm("korrektur")
end_press

//end

//m(korrektur)
DEF _tnr = (i/1,24//"Platznummer","Platznummer"/al0///300,10/420,10,40),
    _d   = (i/1,4/1/"Schneidennummer","D "/al0///485,10/500,10,20)
DEF _tname = (s///"","Werkzeugname"/al0,WR1///300,50/420,50,150)
DEF _abs_x = (r///"Gesamt X ","Gesamt X"/al0,WR1///230,90/330,90,80),
    _dx  = (r/-1,1/0/"Korrektur X","DX "/al0///450,90/480,90,40)
DEF _abs_y = (r///"Gesamt Y ","Gesamt Y"/al0,WR1///230,110/330,110,80),    
    _dy  = (r/-1,1/0/"Korrektur Y","DY "/al0///450,110/480,110,40)
DEF _abs_Z = (r///"Gesamt Z ","Gesamt Z"/al0,WR1///230,130/330,130,80),    
    _dz  = (r/-1,1/0/"Korrektur Z","DZ "/al0///450,130/480,130,40)
DEF _abs_r = (r///"Gesamt D ","Gesamt D"/al0,WR1///230,150/330,150,80),    
    _dr  = (r/-1,1/0/"Korrektur Radius","DR "/al0///450,150/480,150,40)
DEF _tnumber_exist
DEF _toolnd
DEF _tool_type


VS7=("\\sk_cancel.png")
VS8=("\\sk_ok.png")

load
vs8.se = 2
_abs_x.wr = 0
_abs_x.bc = 129
_abs_x.fc = 6
_abs_x.st = ""
_abs_y.wr = 0
_abs_y.bc = 129
_abs_y.fc = 6
_abs_y.st = ""
_abs_z.wr = 0
_abs_z.bc = 129
_abs_z.fc = 6
_abs_z.st = ""
_abs_r.wr = 0
_abs_r.bc = 129
_abs_r.fc = 6
_abs_r.st = ""
_dr.wr = 0
_dr.st =""
lb("sub1")
end_load


change(_tnr)
call("read_tool")
end_change

change(_d)
call("read_tool")
end_change

change(_dx)
_abs_x = _abs_x + _dx
end_change

change(_dy)
_abs_y = _abs_y + _dy
end_change

change(_dz)
_abs_z = _abs_z + _dz
end_change

change(_dr)
_abs_r = _abs_r + _dr
end_change

press(vs7)
exit
end_press

press(vs8)
WNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]",_abs_x)
WNP("$TC_DP13["<<_tnumber_exist<<","<<_d<<"]",_abs_z)
WNP("$TC_DP14["<<_tnumber_exist<<","<<_d<<"]",_abs_y)  
IF _tool_type >= 100; Wenn Fräser oder Bohrer
IF _tool_type <= 299
  WNP("$TC_DP15["<<_tnumber_exist<<","<<_d<<"]",_abs_r)
ENDIF
ENDIF
exit
end_press


//end

//b(sub1)

sub(read_tool)
_tnumber_exist = RNP("$TC_MPP6[1,"<<_tnr<<"]");tnr platz auslesen
IF _tnumber_exist
_toolnd = RNP("$P_TOOLND["<<_tnumber_exist<<"]");Anzahl der Schneiden
_d.max = _toolnd
_tname = RNP("$TC_TP2["<<_tnumber_exist<<"]");tnamen auslesen
_tname.fc = 3
_tool_type = RNP("$TC_DP1["<<_tnumber_exist<<","<<_d<<"]");Werkzeugtyp auslesen
VS8.SE = 1
_abs_x.wr = 1
_abs_x.st = "Gesamt X"
_abs_x = RNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]")
_abs_y.wr = 1
_abs_y.st = "Gesamt Y"
_abs_y = RNP("$TC_DP14["<<_tnumber_exist<<","<<_d<<"]")
_abs_z.wr = 1
_abs_z.st = "Gesamt Z"
_abs_z = RNP("$TC_DP13["<<_tnumber_exist<<","<<_d<<"]")
  IF _tool_type >= 100; Wenn Fräser oder Bohrer
   IF _tool_type <= 299
    _abs_r.wr = 1
    _abs_r.st = "Gesamt Radius"
    _abs_r = RNP("$TC_DP15["<<_tnumber_exist<<","<<_d<<"]")
    _dr.wr = 2
    _dr.st = "DR "
   ELSE
    _abs_r.wr = 0
    _abs_r.st = ""
    _dr.wr = 0
    _dr.st = ""
   ENDIF
  ENDIF
ELSE
_tname = "Platz nicht belegt!"
_tname.fc = 7
_abs_x.wr = 0
_abs_x.st = ""
_abs_y.wr = 0
_abs_y.st = ""
_abs_z.wr = 0
_abs_z.st = ""
_abs_r.wr = 0
_abs_r.st = ""
VS8.SE = 2
ENDIF
_dx = 0
_dy = 0
_dz = 0
_dr = 0
end_sub

//end



Freue mich über Lösungsansätze oder Gegenfragen.
   
Beitrag 20.10.2015, 20:59 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Die Lösung für mein oben geschildertes Problem:

CODE
_act_tool_nr = RNP("$P_TOOLNO");aktive Werkzeugnummer
_act_tool_p = RNP("$A_MYMLN["<<_act_tool_nr<<"]");aktiver Magazinplatz


Damit kann der dem aktiven Werkzeug zugeordnete Platz ausgelesen werden.

Freue mich weiterhin auf Fragen und Anregungen.
   
Beitrag 03.11.2015, 08:01 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Auch wenn die Beteiligung an diesem Thema ja leider eher begrenzt ist, hätte ich noch eine Frage an euch:

Gibt es irgendeine Möglichkeit, in eigenen Zyklenmasken den Softkey "Werkzeug auswählen" so zu nutzen wie in ShopTurn-Zyklen?

Liebe Grüße, Lucas
   
Beitrag 03.11.2015, 09:38 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
QUOTE (faltklo @ 03.11.2015, 09:01 Uhr) *
Auch wenn die Beteiligung an diesem Thema ja leider eher begrenzt ist, hätte ich noch eine Frage an euch:

Gibt es irgendeine Möglichkeit, in eigenen Zyklenmasken den Softkey "Werkzeug auswählen" so zu nutzen wie in ShopTurn-Zyklen?

Liebe Grüße, Lucas



Hallo,
ich habe bei mir an der Maschine viele DMG Masken wo das möglich ist. Ich wollte das in meinen eigenen masken verwenden, leider erfolg los. Es ist schon längen her als ich mich damit beschäftigt habe, aber der Geheimnis liegt in einer .dll datei. Ich bin mir nicht sicher, ob ich den Code hier posten darf.

Ich finde Thema easyscreen sehr interessant. Ich habe selber ein paar schöne Anwenderzyklen mit Masken geschrieben, die ich jeden Tag nutze.
   
Beitrag 03.11.2015, 14:30 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
ist keine .dll sondern .xml Datei sorry.gif
hier ein Auszug aus der SINUMERIK 840D sl Basesoftware und Bedien-Software
13.4 Werkzeuglisten konfigurieren

QUOTE
Im Tag <LISTCONFIGURATION> befinden sich die Einträge zur Konfiguration folgender
Listenansichten:
● Fenster "Werkzeugliste", Kennung <SlTmToollistForm>, siehe 1. Beispiel.
● Fenster "Werkzeugverschleiß", Kennung <SlTmToolwearForm>
● Fenster "Magazin", Kennung <SlTmToolmagazinForm>
● Fenster "Werkzeugdaten OEM", Kennung <SlTmTooloemForm>
Dieses Fenster ist in der Standardkonfiguration ausgeblendet. Das Fenster wird erst
angezeigt, wenn Sie es mit <Enabled> frei schalten, siehe 2. Beispiel.
● Fenster "Werkzeugauswahl", Kennung <SlTmToolselectionForm>: Dieses Fenster kann in


die Kennung SlTmToolselectionForm befindet sich in der Datei sltmlistconfig.xml (sltmturninglistconfig.xml fürs drehen) in Pfad C:\Siemens\SinutrainOperate\04.05.01\hmi\siemens\sinumerik\hmi\appl

Ich vermute "SlTmToolselectionForm" ist eine art Unterprogramm die mann aufrufen kann.
z.B. so (nicht funktionsfähig)
VS1=("Werkzeug Auswahl",,SE1)
PRESS(VS1)
SlTmToolselectionForm
END_PRESS

Es ist aber nur eine Vermutung, wie das genau funktionier ist mir nicht bekannt.
   
Beitrag 03.11.2015, 14:57 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Das klingt auf jeden Fall interessant. Ich werde mein Glück mal versuchen.
Wenn es klappt, werde ich das Ergebnis selbstverständlich hier vorstellen.

Gruß, Lucas
   
Beitrag 05.11.2015, 18:23 Uhr
22-region
22-region
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 18.02.2015
Beiträge: 10
Hallo,
eine Frage vom nichts weiser, aber der es wiesen möchte. Über so was habe ich schon was gehört, aber weis ich nicht, wo man Infos bekommen kann. Können Sie wahrscheinlich mir weiter helfen. In welch Betriebsarten kann man es integrieren? Wie weist man die Softkeytaste zu? Was kann man da hinterlegen? (z.B. ein Text, der im Programm geschrieben werden muss, Selbstgeschriebene Zyklus) Wenn möglich, stellen sie Skrinshot als Beispiel aus, oder wo man über Easyscreen nachlesen kann.
Danke im Voraus.
   
Beitrag 05.11.2015, 19:20 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
Infos dazu findest du im "Inbetriebnahmehandbuch Basesoftware und Bedien-Software". Dieses kannst du auf der Siemens Seite herunterladen. Es lassen sich damit Masken für alles mögliche erstellen, z.B. Eingabemasken für Anwenderzyklen, automatische Korrekturmasken in Programmen... Es ist alles eine Frage vom Programmieraufwand den man betreibt. Freie Softkeys für Anwender gibt es in verschiedenen Bedienbereichen, manchmal werden diese aber bereits vom Maschinenhersteller benutzt. Wie man diese Softkeys erstellt hängt stark von der Version der HMI ab. Vor allem ob Operate, HMI Advanced oder HMI Embedded. Dazu gibt es auch bereits Themen hier im Forum.

Der Beitrag wurde von DMC635V bearbeitet: 05.11.2015, 19:21 Uhr


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 08.11.2015, 09:06 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
Hier ein Beispiel was man damit alles machen kann.

https://youtu.be/0p8RehFFfkE
   
Beitrag 26.11.2015, 07:47 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Moin Jungs und Mädels,

ich verzweifel mal wieder an einem Problem.

Ich habe eine Maske erstellt, die mir die Revolverbelegung unserer Drehmaschinen ausliest und übersichtlich formatiert ins Programm schreibt.
In dieser Maske gibt es einen vertikalen Softkey zum Auslesen der Revolverbelegung und einen zum Löschen der Liste.
Beide Softkeys funktionieren, springen aber danach in die letzte benutzte SK-Leiste zurück (siehe Bilder, in diesem Fall die "Edit"-Leiste).
Wenn ich die Maske allerdings nochmal (mit Pfeil rechts) aufrufe, funktionieren Sie ganz normal.
Kann jemand von euch mal darüber schauen und mir sagen, was ich übesehe? Vorab Entschuldigung für den gigantischen Code, aber leider gibt einem Siemens ja nicht viele Möglichkeiten an die Hand sich innerhalb von Projektionsdateien kurz zu fassen mad.gif wink.gif

Angehängte Datei  1.JPG ( 154.02KB ) Anzahl der Downloads: 214


Angehängte Datei  2.JPG ( 134.02KB ) Anzahl der Downloads: 144


CODE
//m(revolverbelegung/"DDS-Revolverbelegung")

;- Felder definieren

def _feld1 = (s///"Werkzeug 1","T1"/wr2///10,10,30/45,10,190,15),
    _feld13 = (s///"Werkzeug 13","T13"/wr2,al1///290,10,30/350,10,190,15)
def _feld2 = (s///"Werkzeug 2","T2"/wr2///10,35,30/45,35,190,15),
    _feld14 = (s///"Werkzeug 14","T14"/wr2,al1///290,35,30/350,35,190,15)
def _feld3 = (s///"Werkzeug 3","T3"/wr2///10,60,30/45,60,190,15),
    _feld15 = (s///"Werkzeug 15","T15"/wr2,al1///290,60,30/350,60,190,15)
def _feld4 = (s///"Werkzeug 4","T4"/wr2///10,85,30/45,85,190,15),
    _feld16 = (s///"Werkzeug 16","T16"/wr2,al1///290,85,30/350,85,190,15)
def _feld5 = (s///"Werkzeug 5","T5"/wr2///10,110,30/45,110,190,15),
    _feld17 = (s///"Werkzeug 17","T17"/wr2,al1///290,110,30/350,110,190,15)
def _feld6 = (s///"Werkzeug 6","T6"/wr2///10,135,30/45,135,190,15),
    _feld18 = (s///"Werkzeug 18","T18"/wr2,al1///290,135,30/350,135,190,15)    
def _feld7 = (s///"Werkzeug 7","T7"/wr2///10,160,30/45,160,190,15),
    _feld19 = (s///"Werkzeug 19","T19"/wr2,al1///290,160,30/350,160,190,15)
def _feld8 = (s///"Werkzeug 8","T8"/wr2///10,185,30/45,185,190,15),
    _feld20 = (s///"Werkzeug 20","T20"/wr2,al1///290,185,30/350,185,190,15)
def _feld9 = (s///"Werkzeug 9","T9"/wr2///10,210,30/45,210,190,15),
    _feld21 = (s///"Werkzeug 21","T21"/wr2,al1///290,210,30/350,210,190,15)
def _feld10 = (s///"Werkzeug 10","T10"/wr2///10,235,30/45,235,190,15),
    _feld22 = (s///"Werkzeug 22","T22"/wr2,al1///290,235,30/350,235,190,15)
def _feld11 = (s///"Werkzeug 11","T11"/wr2///10,260,30/45,260,190,15),
    _feld23 = (s///"Werkzeug 23","T23"/wr2,al1///290,260,30/350,260,190,15)
def _feld12 = (s///"Werkzeug 12","T12"/wr2///10,285,30/45,285,190,15),
    _feld24 = (s///"Werkzeug 24","T24"/wr2,al1///290,285,30/350,285,190,15)



;-------------------------Hilfsvariablen------------------------------
def _strlen
def _tnumber
def _tnumber_exist
def _tdummy
def _temp
def _act_tool_nr
def _act_tool_p
def _act_tool_name

def _bg_color_notool
def _bg_color_tool
def _letter_color

def _t1
def _t2
def _t3
def _t4
def _t5
def _t6
def _t7
def _t8
def _t9
def _t10
def _t11
def _t12
def _t13
def _t14
def _t15
def _t16
def _t17
def _t18
def _t19
def _t20
def _t21
def _t22
def _t23
def _t24

;------------------------Softkeys--------------------------------------
vs1 = ("Uebernahme%nMaschine")
vs2 = ("Liste%nloeschen")
vs7 = ("\\sk_cancel.png")
vs8 = ("\\sk_ok.png")

;----------------------- LOAD / UNLOAD ---------------------------------
load
_act_tool_nr = RNP("$P_TOOLNO");aktive Werkzeugnummer
_act_tool_p = RNP("$A_MYMLN["<<_act_tool_nr<<"]");aktiver Magazinplatz
_act_tool_name = RNP("$TC_TP2["<<_act_tool_nr<<"]")
_feld1.wr = 5
_feld2.wr = 5
_feld3.wr = 5
_feld4.wr = 5
_feld5.wr = 5
_feld6.wr = 5
_feld7.wr = 5
_feld8.wr = 5
_feld9.wr = 5
_feld10.wr = 5
_feld11.wr = 5
_feld12.wr = 5
_feld13.wr = 5
_feld14.wr = 5
_feld15.wr = 5
_feld16.wr = 5
_feld17.wr = 5
_feld18.wr = 5
_feld19.wr = 5
_feld20.wr = 5
_feld21.wr = 5
_feld22.wr = 5
_feld23.wr = 5
_feld24.wr = 5

LB("sub1")
_bg_color_notool = 4
_bg_color_tool = 3
_letter_color = 10

IF _feld1 == "                         "
_feld1.bc = _bg_color_notool
ELSE
_feld1.bc = 2
_feld1.fc = 1
ENDIF

IF _feld2 == "                         "
_feld2.bc = _bg_color_notool
ELSE
_feld2.bc = 2
_feld2.fc = 1
ENDIF


IF _feld3 == "                         "
_feld3.bc = _bg_color_notool
ELSE
_feld3.bc = 2
_feld3.fc = 1
ENDIF

IF _feld4 == "                         "
_feld4.bc = _bg_color_notool
ELSE
_feld4.bc = 2
_feld4.fc = 1
ENDIF

IF _feld5 == "                         "
_feld5.bc = _bg_color_notool
ELSE
_feld5.bc = 2
_feld5.fc = 1
ENDIF

IF _feld6 == "                         "
_feld6.bc = _bg_color_notool
ELSE
_feld6.bc = 2
_feld6.fc = 1
ENDIF

IF _feld7 == "                         "
_feld7.bc = _bg_color_notool
ELSE
_feld7.bc = 2
_feld7.fc = 1
ENDIF

IF _feld8 == "                         "
_feld8.bc = _bg_color_notool
ELSE
_feld8.bc = 2
_feld8.fc = 1
ENDIF

IF _feld9 == "                         "
_feld9.bc = _bg_color_notool
ELSE
_feld9.bc = 2
_feld9.fc = 1
ENDIF

IF _feld10 == "                         "
_feld10.bc = _bg_color_notool
ELSE
_feld10.bc = 2
_feld10.fc = 1
ENDIF

IF _feld11 == "                         "
_feld11.bc = _bg_color_notool
ELSE
_feld11.bc = 2
_feld11.fc = 1
ENDIF

IF _feld12 == "                         "
_feld12.bc = _bg_color_notool
ELSE
_feld12.bc = 2
_feld12.fc = 1
ENDIF

IF _feld13 == "                         "
_feld13.bc = _bg_color_notool
ELSE
_feld13.bc = 2
_feld13.fc = 1
ENDIF

IF _feld14 == "                         "
_feld14.bc = _bg_color_notool
ELSE
_feld14.bc = 2
_feld14.fc = 1
ENDIF

IF _feld15 == "                         "
_feld15.bc = _bg_color_notool
ELSE
_feld15.bc = 2
_feld15.fc = 1
ENDIF

IF _feld16 == "                         "
_feld16.bc = _bg_color_notool
ELSE
_feld16.bc = 2
_feld16.fc = 1
ENDIF

IF _feld17 == "                         "
_feld17.bc = _bg_color_notool
ELSE
_feld17.bc = 2
_feld17.fc = 1
ENDIF

IF _feld18 == "                         "
_feld18.bc = _bg_color_notool
ELSE
_feld18.bc = 2
_feld18.fc = 1
ENDIF

IF _feld19 == "                         "
_feld19.bc = _bg_color_notool
ELSE
_feld19.bc = 2
_feld19.fc = 1
ENDIF

IF _feld20 == "                         "
_feld20.bc = _bg_color_notool
ELSE
_feld20.bc = 2
_feld20.fc = 1
ENDIF

IF _feld21 == "                         "
_feld21.bc = _bg_color_notool
ELSE
_feld21.bc = 2
_feld21.fc = 1
ENDIF

IF _feld22 == "                         "
_feld22.bc = _bg_color_notool
ELSE
_feld22.bc = 2
_feld22.fc = 1
ENDIF

IF _feld23 == "                         "
_feld23.bc = _bg_color_notool
ELSE
_feld23.bc = 2
_feld23.fc = 1
ENDIF

IF _feld24 == "                         "
_feld24.bc = _bg_color_notool
ELSE
_feld24.bc = 2
_feld24.fc = 1
ENDIF
end_load

unload
_t1 = ""
_t2 = ""
_t3 = ""
_t4 = ""
_t5 = ""
_t6 = ""
_t7 = ""
_t8 = ""
_t9 = ""
_t10 = ""
_t11 = ""
_t12 = ""
_t13 = ""
_t14 = ""
_t15 = ""
_t16 = ""
_t17 = ""
_t18 = ""
_t19 = ""
_t20 = ""
_t21 = ""
_t22 = ""
_t23 = ""
_t24 = ""
end_unload

;-----------------------CHANGE-----------------------------------------
change(_feld1)
IF _feld1 <> _t1
_temp.val = _feld1.val
call("format25")
_feld1.val = _temp.val
endif
IF _feld1 == "                         "
_feld1.bc = _bg_color_notool
ELSE
_feld1.bc = _bg_color_tool
_feld1.fc = _letter_color
ENDIF
end_change

change(_feld2)
IF _feld2 <> _t2
_temp.val = _feld2.val
call("format25")
_feld2.val = _temp.val
endif
IF _feld2 == "                         "
_feld2.bc = _bg_color_notool
ELSE
_feld2.bc = _bg_color_tool
_feld2.fc = _letter_color
ENDIF
end_change

change(_feld3)
IF _feld3 <> _t3
_temp.val = _feld3.val
call("format25")
_feld3.val = _temp.val
endif
IF _feld3 == "                         "
_feld3.bc = _bg_color_notool
ELSE
_feld3.bc = _bg_color_tool
_feld3.fc = _letter_color
ENDIF
end_change

change(_feld4)
IF _feld4 <> _t4
_temp.val = _feld4.val
call("format25")
_feld4.val = _temp.val
endif
IF _feld4 == "                         "
_feld4.bc = _bg_color_notool
ELSE
_feld4.bc = _bg_color_tool
_feld4.fc = _letter_color
ENDIF
end_change

change(_feld5)
IF _feld5 <> _t5
_temp.val = _feld5.val
call("format25")
_feld5.val = _temp.val
endif
IF _feld5 == "                         "
_feld5.bc = _bg_color_notool
ELSE
_feld5.bc = _bg_color_tool
_feld5.fc = _letter_color
ENDIF
end_change

change(_feld6)
IF _feld6 <> _t6
_temp.val = _feld6.val
call("format25")
_feld6.val = _temp.val
endif
IF _feld6 == "                         "
_feld6.bc = _bg_color_notool
ELSE
_feld6.bc = _bg_color_tool
_feld6.fc = _letter_color
ENDIF
end_change

change(_feld7)
IF _feld7 <> _t7
_temp.val = _feld7.val
call("format25")
_feld7.val = _temp.val
endif
IF _feld7 == "                         "
_feld7.bc = _bg_color_notool
ELSE
_feld7.bc = _bg_color_tool
_feld7.fc = _letter_color
ENDIF
end_change

change(_feld8)
IF _feld8 <> _t8
_temp.val = _feld8.val
call("format25")
_feld8.val = _temp.val
endif
IF _feld8 == "                         "
_feld8.bc = _bg_color_notool
ELSE
_feld8.bc = _bg_color_tool
_feld8.fc = _letter_color
ENDIF
end_change

change(_feld9)
IF _feld9 <> _t9
_temp.val = _feld9.val
call("format25")
_feld9.val = _temp.val
endif
IF _feld9 == "                         "
_feld9.bc = _bg_color_notool
ELSE
_feld9.bc = _bg_color_tool
_feld9.fc = _letter_color
ENDIF
end_change

change(_feld10)
IF _feld10 <> _t10
_temp.val = _feld10.val
call("format25")
_feld10.val = _temp.val
endif
IF _feld10 == "                         "
_feld10.bc = _bg_color_notool
ELSE
_feld10.bc = _bg_color_tool
_feld10.fc = _letter_color
ENDIF
end_change

change(_feld11)
IF _feld11 <> _t11
_temp.val = _feld11.val
call("format25")
_feld11.val = _temp.val
endif
IF _feld11 == "                         "
_feld11.bc = _bg_color_notool
ELSE
_feld11.bc = _bg_color_tool
_feld11.fc = _letter_color
ENDIF
end_change

change(_feld12)
IF _feld12 <> _t12
_temp.val = _feld12.val
call("format25")
_feld12.val = _temp.val
endif
IF _feld12 == "                         "
_feld12.bc = _bg_color_notool
ELSE
_feld12.bc = _bg_color_tool
_feld12.fc = _letter_color
ENDIF
end_change

change(_feld13)
IF _feld13 <> _t13
_temp.val = _feld13.val
call("format25")
_feld13.val = _temp.val
endif
IF _feld13 == "                         "
_feld13.bc = _bg_color_notool
ELSE
_feld13.bc = _bg_color_tool
_feld13.fc = _letter_color
ENDIF
end_change

change(_feld14)
IF _feld14 <> _t14
_temp.val = _feld14.val
call("format25")
_feld14.val = _temp.val
endif
IF _feld14 == "                         "
_feld14.bc = _bg_color_notool
ELSE
_feld14.bc = _bg_color_tool
_feld14.fc = _letter_color
ENDIF
end_change

change(_feld15)
IF _feld15 <> _t15
_temp.val = _feld15.val
call("format25")
_feld15.val = _temp.val
endif
IF _feld15 == "                         "
_feld15.bc = _bg_color_notool
ELSE
_feld15.bc = _bg_color_tool
_feld15.fc = _letter_color
ENDIF
end_change

change(_feld16)
IF _feld16 <> _t16
_temp.val = _feld16.val
call("format25")
_feld16.val = _temp.val
endif
IF _feld16 == "                         "
_feld16.bc = _bg_color_notool
ELSE
_feld16.bc = _bg_color_tool
_feld16.fc = _letter_color
ENDIF
end_change

change(_feld17)
IF _feld17 <> _t17
_temp.val = _feld17.val
call("format25")
_feld17.val = _temp.val
endif
IF _feld17 == "                         "
_feld17.bc = _bg_color_notool
ELSE
_feld17.bc = _bg_color_tool
_feld17.fc = _letter_color
ENDIF
end_change

change(_feld18)
IF _feld18 <> _t18
_temp.val = _feld18.val
call("format25")
_feld18.val = _temp.val
endif
IF _feld18 == "                         "
_feld18.bc = _bg_color_notool
ELSE
_feld18.bc = _bg_color_tool
_feld18.fc = _letter_color
ENDIF
end_change

change(_feld19)
IF _feld19 <> _t19
_temp.val = _feld19.val
call("format25")
_feld19.val = _temp.val
endif
IF _feld19 == "                         "
_feld19.bc = _bg_color_notool
ELSE
_feld19.bc = _bg_color_tool
_feld19.fc = _letter_color
ENDIF
end_change

change(_feld20)
IF _feld20 <> _t20
_temp.val = _feld20.val
call("format25")
_feld20.val = _temp.val
endif
IF _feld20 == "                         "
_feld20.bc = _bg_color_notool
ELSE
_feld20.bc = _bg_color_tool
_feld20.fc = _letter_color
ENDIF
end_change

change(_feld21)
IF _feld21 <> _t21
_temp.val = _feld21.val
call("format25")
_feld21.val = _temp.val
endif
IF _feld21 == "                         "
_feld21.bc = _bg_color_notool
ELSE
_feld21.bc = _bg_color_tool
_feld21.fc = _letter_color
ENDIF
end_change

change(_feld22)
IF _feld22 <> _t22
_temp.val = _feld22.val
call("format25")
_feld22.val = _temp.val
endif
IF _feld22 == "                         "
_feld22.bc = _bg_color_notool
ELSE
_feld22.bc = _bg_color_tool
_feld22.fc = _letter_color
ENDIF
end_change

change(_feld23)
IF _feld23 <> _t23
_temp.val = _feld23.val
call("format25")
_feld23.val = _temp.val
endif
IF _feld23 == "                         "
_feld23.bc = _bg_color_notool
ELSE
_feld23.bc = _bg_color_tool
_feld23.fc = _letter_color
ENDIF
end_change

change(_feld24)
IF _feld24 <> _t23
_temp.val = _feld24.val
call("format25")
_feld24.val = _temp.val
endif
IF _feld24 == "                         "
_feld24.bc = _bg_color_notool
ELSE
_feld24.bc = _bg_color_tool
_feld24.fc = _letter_color
ENDIF
end_change

;----------------------- OUTPUT --------------------------------------
OUTPUT(Revolverliste)
"G90;*HD*"
";-------------------- REVOLVERBELEGUNG -------------------------"
";Hauptspindel:                    Gegenspindel:                 "
";T1  = "_feld1" T13 = "_feld13
";T2  = "_feld2" T14 = "_feld14
";T3  = "_feld3" T15 = "_feld15
";T4  = "_feld4" T16 = "_feld16
";T5  = "_feld5" T17 = "_feld17
";T6  = "_feld6" T18 = "_feld18
";T7  = "_feld7" T19 = "_feld19
";T8  = "_feld8" T20 = "_feld20
";T9  = "_feld9" T21 = "_feld21
";T10 = "_feld10" T22 = "_feld22
";T11 = "_feld11" T23 = "_feld23
";T12 = "_feld12" T24 = "_feld24
";---------------------------------------------------------------"
END_OUTPUT


;-----------------------PRESS-------------------------------------------
press(vs1);Uebernahme Maschine

_tnumber = 1
call("liste_lesen")
_t1 = _tdummy
_tnumber = 2
call("liste_lesen")
_t2 = _tdummy
_tnumber = 3
call("liste_lesen")
_t3 = _tdummy
_tnumber = 4
call("liste_lesen")
_t4 = _tdummy
_tnumber = 5
call("liste_lesen")
_t5 = _tdummy
_tnumber = 6
call("liste_lesen")
_t6 = _tdummy
_tnumber = 7
call("liste_lesen")
_t7 = _tdummy
_tnumber = 8
call("liste_lesen")
_t8 = _tdummy
_tnumber = 9
call("liste_lesen")
_t9 = _tdummy
_tnumber = 10
call("liste_lesen")
_t10 = _tdummy
_tnumber = 11
call("liste_lesen")
_t11 = _tdummy
_tnumber = 12
call("liste_lesen")
_t12 = _tdummy
_tnumber = 13
call("liste_lesen")
_t13 = _tdummy
_tnumber = 14
call("liste_lesen")
_t14 = _tdummy
_tnumber = 15
call("liste_lesen")
_t15 = _tdummy
_tnumber = 16
call("liste_lesen")
_t16 = _tdummy
_tnumber = 17
call("liste_lesen")
_t17 = _tdummy
_tnumber = 18
call("liste_lesen")
_t18 = _tdummy
_tnumber = 19
call("liste_lesen")
_t19 = _tdummy
_tnumber = 20
call("liste_lesen")
_t20 = _tdummy
_tnumber = 21
call("liste_lesen")
_t21 = _tdummy
_tnumber = 22
call("liste_lesen")
_t22 = _tdummy
_tnumber = 23
call("liste_lesen")
_t23 = _tdummy
_tnumber = 24
call("liste_lesen")
_t24 = _tdummy

;--- Formatieren auf 25 Zeichen
_temp = _t1
call("format25")
_t1 = _temp
_temp = _t2
call("format25")
_t2 = _temp
_temp = _t3
call("format25")
_t3 = _temp
_temp = _t4
call("format25")
_t4 = _temp
_temp = _t5
call("format25")
_t5 = _temp
_temp = _t6
call("format25")
_t6 = _temp
_temp = _t7
call("format25")
_t7 = _temp
_temp = _t8
call("format25")
_t8 = _temp
_temp = _t9
call("format25")
_t9 = _temp
_temp = _t10
call("format25")
_t10 = _temp
_temp = _t11
call("format25")
_t11 = _temp
_temp = _t12
call("format25")
_t12 = _temp
_temp = _t13
call("format25")
_t13 = _temp
_temp = _t14
call("format25")
_t14 = _temp
_temp = _t15
call("format25")
_t15 = _temp
_temp = _t16
call("format25")
_t16 = _temp
_temp = _t17
call("format25")
_t17 = _temp
_temp = _t18
call("format25")
_t18 = _temp
_temp = _t19
call("format25")
_t19 = _temp
_temp = _t20
call("format25")
_t20 = _temp
_temp = _t21
call("format25")
_t21 = _temp
_temp = _t22
call("format25")
_t22 = _temp
_temp = _t23
call("format25")
_t23 = _temp
_temp = _t24
call("format25")
_t24 = _temp

if _act_tool_p == 1
_temp = _act_tool_name
call("format25")
_t1 = _temp
endif

if _act_tool_p == 2
_temp = _act_tool_name
call("format25")
_t2 = _temp
endif

if _act_tool_p == 3
_temp = _act_tool_name
call("format25")
_t3 = _temp
endif

if _act_tool_p == 4
_temp = _act_tool_name
call("format25")
_t4 = _temp
endif

if _act_tool_p == 5
_temp = _act_tool_name
call("format25")
_t5 = _temp
endif

if _act_tool_p == 6
_temp = _act_tool_name
call("format25")
_t6 = _temp
endif

if _act_tool_p == 7
_temp = _act_tool_name
call("format25")
_t7 = _temp
endif

if _act_tool_p == 8
_temp = _act_tool_name
call("format25")
_t8 = _temp
endif

if _act_tool_p == 9
_temp = _act_tool_name
call("format25")
_t9 = _temp
endif

if _act_tool_p == 10
_temp = _act_tool_name
call("format25")
_t10 = _temp
endif

if _act_tool_p == 11
_temp = _act_tool_name
call("format25")
_t11 = _temp
endif

if _act_tool_p == 12
_temp = _act_tool_name
call("format25")
_t12 = _temp
endif

if _act_tool_p == 13
_temp = _act_tool_name
call("format25")
_t13 = _temp
endif

if _act_tool_p == 14
_temp = _act_tool_name
call("format25")
_t14 = _temp
endif

if _act_tool_p == 15
_temp = _act_tool_name
call("format25")
_t15 = _temp
endif

if _act_tool_p == 16
_temp = _act_tool_name
call("format25")
_t16 = _temp
endif

if _act_tool_p == 17
_temp = _act_tool_name
call("format25")
_t17 = _temp
endif

if _act_tool_p == 18
_temp = _act_tool_name
call("format25")
_t18 = _temp
endif

if _act_tool_p == 19
_temp = _act_tool_name
call("format25")
_t19 = _temp
endif

if _act_tool_p == 20
_temp = _act_tool_name
call("format25")
_t20 = _temp
endif

if _act_tool_p == 21
_temp = _act_tool_name
call("format25")
_t21 = _temp
endif

if _act_tool_p == 22
_temp = _act_tool_name
call("format25")
_t22 = _temp
endif

if _act_tool_p == 23
_temp = _act_tool_name
call("format25")
_t23 = _temp
endif

if _act_tool_p == 24
_temp = _act_tool_name
call("format25")
_t24 = _temp
endif



_feld1.val = _t1.val
_feld2.val = _t2.val
_feld3.val = _t3.val
_feld4.val = _t4.val
_feld5.val = _t5.val
_feld6.val = _t6.val
_feld7.val = _t7.val
_feld8.val = _t8.val
_feld9.val = _t9.val
_feld10.val = _t10.val
_feld11.val = _t11.val
_feld12.val = _t12.val
_feld13.val = _t13.val
_feld14.val = _t14.val
_feld15.val = _t15.val
_feld16.val = _t16.val
_feld17.val = _t17.val
_feld18.val = _t18.val
_feld19.val = _t19.val
_feld20.val = _t20.val
_feld21.val = _t21.val
_feld22.val = _t22.val
_feld23.val = _t23.val
_feld24.val = _t24.val

end_press

press(vs2)
;-------------- Liste Löschen ------------------
_feld1 = "                         "
_feld2 = "                         "
_feld3 = "                         "
_feld4 = "                         "
_feld5 = "                         "
_feld6 = "                         "
_feld7 = "                         "
_feld8 = "                         "
_feld9 = "                         "
_feld10 = "                         "
_feld11 = "                         "
_feld12 = "                         "
_feld13 = "                         "                                
_feld14 = "                         "                                
_feld15 = "                         "                                
_feld16 = "                         "                                
_feld17 = "                         "                                
_feld18 = "                         "                                
_feld19 = "                         "                                
_feld20 = "                         "                                
_feld21 = "                         "                                
_feld22 = "                         "                                
_feld23 = "                         "                                
_feld24 = "                         "
end_press

press(vs7);Cancel
exit
end_press

press(vs8);OK
GC("Revolverliste")
exit
end_press

press(sl)
if FOC == "_feld1"
exit
endif
if FOC == "_feld2"
exit
endif
if FOC == "_feld3"
exit
endif
if FOC == "_feld4"
exit
endif
if FOC == "_feld5"
exit
endif
if FOC == "_feld6"
exit
endif
if FOC == "_feld7"
exit
endif
if FOC == "_feld8"
exit
endif
if FOC == "_feld9"
exit
endif
if FOC == "_feld10"
exit
endif
if FOC == "_feld11"
exit
endif
if FOC == "_feld12"
exit
endif
end_press

//end

//b(sub1)

sub(liste_lesen)
_tnumber_exist.val = RNP("$TC_MPP6[1,"<<_tnumber<<"]");tnr platz auslesen
DEBUG(" _tnumber_exist = " << _tnumber_exist)
IF _tnumber_exist
_tdummy.val = RNP("$TC_TP2["<<_tnumber_exist<<"]");tnamen auslesen
DEBUG("IF _tnumber_exist, _tdummy: " << _tdummy)
ELSE
_tdummy.val = "";dummy ausgeben
ENDIF
end_sub

sub(format25)
_strlen = LEN(_temp)
IF _strlen == 0
_temp.val = "                         "      ;25 Zeichen Leerstring
ELSE
IF  _strlen == 1
_temp.val = _temp<<"                        "
  ELSE
  IF  _strlen == 2
  _temp.val = _temp<<"                       "
   ELSE
   IF  _strlen == 3
   _temp.val = _temp<<"                      "
    ELSE
    IF  _strlen == 4
    _temp.val = _temp<<"                     "
     ELSE
     IF  _strlen == 5
     _temp.val = _temp<<"                    "
      ELSE
      IF  _strlen == 6
      _temp.val = _temp<<"                   "
       ELSE
       IF  _strlen == 7
       _temp.val = _temp<<"                  "
        ELSE
        IF  _strlen == 8
        _temp.val = _temp<<"                 "
         ELSE
         IF  _strlen == 9
         _temp.val = _temp<<"                "
          ELSE
          IF  _strlen == 10
          _temp.val = _temp<<"               "
           ELSE
           IF  _strlen == 11
           _temp.val = _temp<<"              "
            ELSE
            IF  _strlen == 12
            _temp.val = _temp<<"             "
             ELSE
             IF  _strlen == 13
             _temp.val = _temp<<"            "
              ELSE
              IF  _strlen == 14
              _temp.val = _temp<<"           "
               ELSE
               IF  _strlen == 15
               _temp.val = _temp<<"          "
                ELSE
                IF  _strlen == 16
                _temp.val = _temp<<"         "
                 ELSE
                 IF  _strlen == 17
                 _temp.val = _temp<<"        "
                  ELSE
                  IF  _strlen == 18
                  _temp.val = _temp<<"       "        
                   ELSE
                   IF  _strlen == 19
                   _temp.val = _temp<<"      "
                    ELSE
                    IF  _strlen == 20
                    _temp.val = _temp<<"     "
                     ELSE
                     IF  _strlen == 21
                     _temp.val = _temp<<"    "
                      ELSE
                      IF  _strlen == 22
                      _temp.val = _temp<<"   "
                       ELSE
                       IF  _strlen == 23
                       _temp.val = _temp<<"  "
                        ELSE
                        IF  _strlen == 24
                        _temp.val = _temp<<" ";01 Zeichen Leerstring
                         ELSE
                         IF _strlen >= 25
                         _temp.val = LEFT(_temp,25);ueberzaehlige Zeichen abschneiden
                         ENDIF
                        ENDIF
                       ENDIF
                      ENDIF
                     ENDIF
                    ENDIF
                   ENDIF
                  ENDIF
                 ENDIF
                ENDIF
               ENDIF
              ENDIF
             ENDIF
            ENDIF
           ENDIF
          ENDIF
         ENDIF
        ENDIF
       ENDIF
      ENDIF
     ENDIF
    ENDIF
   ENDIF
  ENDIF
ENDIF
ENDIF
END_SUB


//end
   
Beitrag 27.11.2015, 09:41 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
Hallo,
ich habe den selben Problem bei mir auch. Ich konnte keine Ursache finden.
Hat das bei dir mit den Werkzeugliste Fenster geklappt? Ich hätte da eine Idee die ich nur nächste Woche testen kann.
   
Beitrag 27.11.2015, 11:30 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
QUOTE (MIXer18 @ 27.11.2015, 09:41 Uhr) *
Hallo,
ich habe den selben Problem bei mir auch. Ich konnte keine Ursache finden.
Hat das bei dir mit den Werkzeugliste Fenster geklappt? Ich hätte da eine Idee die ich nur nächste Woche testen kann.


Leider nicht, da bin ich auch noch nicht hintergekommen.
Kennst du vielleicht einen OEM-Zyklus, wo man spicken könnte?
   
Beitrag 27.11.2015, 19:30 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (faltklo @ 27.11.2015, 12:30 Uhr) *
Leider nicht, da bin ich auch noch nicht hintergekommen.
Kennst du vielleicht einen OEM-Zyklus, wo man spicken könnte?


Ladet euch doch mal die SinuTrain herunter, da sieht man vieles:

unter folgendem Verzeichnis findet man diverse dll Dateien und zugehörige xml Dateien:
C:\Siemens\SinuTrain\SINUMERIK CNC-SW 840D sl 4.7 SP1\hmi\siemens\sinumerik\hmi\appl

es gibt auch diverse Masken:
C:\Siemens\SinuTrain\SINUMERIK CNC-SW 840D sl 4.7 SP1\hmi\siemens\sinumerik\hmi\proj

und ein Beispiel mit Kommentaren für den an den ShopMill Positionen ankoppelnden Bohrzyklus ist auch vorhanden:
C:\Siemens\SinuTrain\SINUMERIK CNC-SW 840D sl 4.7 SP1\hmi\siemens\sinumerik\hmi\template\easyscreen\standard\milling\deu\bohren

Leider habe ich momentan keine Zeit das ganze zu analysieren, dort findet man aber bestimmt ein paar wertvolle Tricks.

Der Beitrag wurde von DMC635V bearbeitet: 27.11.2015, 19:31 Uhr


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 28.11.2015, 11:17 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
QUOTE (faltklo @ 27.11.2015, 12:30 Uhr) *
Leider nicht, da bin ich auch noch nicht hintergekommen.
Kennst du vielleicht einen OEM-Zyklus, wo man spicken könnte?


Ja es gibt ein Messzyklus von DMG L771 mit internen Werkzeugauswahl.
Hier ein ausschnitt:
QUOTE
press(vs1) ; Werkzeugauswahl
reg[12] = "name_l771"
tool_name_result = " "
wnp("i_easyscreen_str[0]","selectTool") ; call mask to selecting the tool name
tool_name_search_active = 1
end_press


Unter Sinutrain 4.5 funktioniert der Werkzeugauswahl nicht, nur auf reale Maschine.
was ist reg[12]?
   
Beitrag 28.11.2015, 12:13 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (MIXer18 @ 28.11.2015, 12:17 Uhr) *
Ja es gibt ein Messzyklus von DMG L771 mit internen Werkzeugauswahl.
Hier ein ausschnitt:


Unter Sinutrain 4.5 funktioniert der Werkzeugauswahl nicht, nur auf reale Maschine.
was ist reg[12]?

reg[12] Register[12]
ich lese mal aus dem Handbuch vor


QUOTE
Beschreibung Register
Register werden benötigt, um Daten zwischen verschiedenen Dialogen auszutauschen.
Register sind jeweils einem Dialog zugeordnet und werden beim Laden des ersten Dialogs
erzeugt und mit 0 oder Leer-String belegt.
Hinweis
Register dürfen nicht direkt in einem OUTPUT-Block zur NC-Code Generierung verwendet
werden.
Programmierung
Syntax: REG[x]
Beschreibung: Register definieren
Parameter: x Register-Index mit x = 0...19;
Typ: REAL oder STRING = VARIANT
Die Register mit x ≥ 20 sind bereits von Siemens belegt.


QUOTE
.....
wnp("i_easyscreen_str[0]","selectTool") ; call mask to selecting the tool name
.....


das der aufruf in Sinutrain nicht geht ist logisch.
da WNP in die PLC schreibt die aber bei Sinutrain nicht aktiv ist .
wenn ihr schon Reverse Engineering betreibt müsst ihr auch mal ein Handbuch lesen
   
Beitrag 28.11.2015, 21:43 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
reg[12]
   
Beitrag 28.11.2015, 22:13 Uhr
MIXer18
MIXer18
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 16.04.2010
Beiträge: 242
Nixalsverdruss wenn du nichts Besseres hast als in jeden 2ten Thread zu schreiben „ihr müsst auch mal ein Handbuch lesen“ dann kannst du dir das sparen, denn es geht mir schon echt auf die Nerven.
Das reg[12] ein Register Eintrag ist doch hier in Thread jeden klar, sagt doch lieber was diese reg[12] = "name_l771" zu bedeuten hat

QUOTE
da WNP in die PLC schreibt die aber bei Sinutrain nicht aktiv ist .
wenn ihr schon Reverse Engineering betreibt müsst ihr auch mal ein Handbuch lesen.


Glaubst du wirklich der faltklo und ich schreiben hier so komplexe Masken ohne ein Handbuch zu lesen?

In PLC Schreiben wollte hier niemand war nur ein Hinweis.

Du bist mir schon längst wegen deinen negativen und aggressiven Posts aufgefallen. Nur dumme Hinweise aufs Handbuch + Mobbing.
Wenn du wirklich über sinnvolle Infos verfügst, dann hilf doch einfach ohne dein klugSch***erei.
   
Beitrag 29.11.2015, 15:07 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
Hey leute wir sind hier nicht in Facebook oder sonst wo...
also kann man auch normal mit einander umgehen.

und wieso machst nicht bei press(vs2) vor dem ende nicht nochmal einen load screen?
ich mein wenn es anders nicht geht das sollte funktionieren.
gibt nochmals einen bildaufbau

und btw die register dienen eigentlich als schnelle zwischenspeicher und stehen einem immer zur verfügung ...


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


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 29.11.2015, 19:08 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (MIXer18 @ 28.11.2015, 23:13 Uhr) *
Nixalsverdruss wenn du nichts Besseres hast als in jeden 2ten Thread zu schreiben „ihr müsst auch mal ein Handbuch lesen“ dann kannst du dir das sparen, denn es geht mir schon echt auf die Nerven.

auch wenn es dir auf die Nerven geht werde ich nicht davon absehen diesen Hinweis immer wieder zugeben.
die Notwendigkeit lässt ja schon die nächste Zeile erkennen

QUOTE (MIXer18 @ 28.11.2015, 23:13 Uhr) *
Das reg[12] ein Register Eintrag ist doch hier in Thread jeden klar, sagt doch lieber was diese reg[12] = "name_l771" zu bedeuten hat

aber ich beantworte dir sogar mal diese Frage
dem REG[12] wird der String "name_I771" zugewiesen .

QUOTE (MIXer18 @ 28.11.2015, 23:13 Uhr) *
Du bist mir schon längst wegen deinen negativen und aggressiven Posts aufgefallen. Nur dumme Hinweise aufs Handbuch + Mobbing.
Wenn du wirklich über sinnvolle Infos verfügst, dann hilf doch einfach ohne dein klugSch***erei.


sachliche Kritik.( oder was soll das sein )

ich bin aber in der Richtung sehr entspannt ich habe hier schon mehr als einen von deiner Sorte überlebt
   
Beitrag 30.11.2015, 11:14 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Habt euch lieb. Die Wahrheit liegt wie immer in der Mitte.
Keiner in diesem Thread verweigert das Lesen eines Handbuches, allerdings sollte doch jeder der sich intensiver mit 840d und Co beschäftigt, wissen, dass man manchmal in dieser unfassbar umfangreichen Dokumentation den Wald vor lauter Bäumen nicht sieht.

Zurück zum Thema:

QUOTE
das der aufruf in Sinutrain nicht geht ist logisch.
da WNP in die PLC schreibt die aber bei Sinutrain nicht aktiv ist .


QUOTE
Mit dem Befehl WNP (Write NC PLC) können NC- oder PLC-Variable oder Maschinendaten
geschrieben werden.
Zugriffe auf NC-/PLC-Variable werden bei jeder Bearbeitung der Funktion WNP neu
ausgeführt, d.h. dass ein NC-/PLC-Zugriff in einer CHANGE-Methode immer ausgeführt
wird. Dies ist sinnvoll, wenn eine System- oder Anwendervariable häufig den Wert ändert.
Soll ein NC-/PLC-Zugriff nur einmalig ausgeführt werden, muss dies in einer LOAD- oder
UNLOAD-Methode projektiert werden.


QUOTE
wnp("i_easyscreen_str[0]","selectTool") ; call mask to selecting the tool name


Ernst gemeinte Frage: Woran erkennt man, dass in diesem Fall in die PLC geschrieben werden soll?

so etwas hier:

CODE
WNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]",_abs_x)


geht ja auch im Sinutrain.
Bitte nicht hauen, ich beschäftige mich erst seit ein paar Monaten mit dem Thema und versuche dazuzulernen.
   
Beitrag 30.11.2015, 12:56 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
also da muss ich naxialverdruss irgendwie recht geben.
bei gewissen fragen muss man einfach sagen > Handbuch lesen.
bei masken hab ich immer das handbuch als pdf auf oder doc on cd.
allein schon weil man die funktionen nicht immer alle im kopf hat.
und ultraedit (notepad++ würd es auch tun) extra dafür vorbereitet

und mit $TC werden NC Variablen beschrieben.
mit der Funktion kannst einzelne Bausteine der PLC beschreiben.
Beispiel
MB2300.1 soll mit einer 1 belegt werden
WNP("MB2300.1",1)
oder DualporRam DBB (atomatisierte anlagen werdem meistens damit angesteuert)

QUOTE (faltklo @ 30.11.2015, 12:14 Uhr) *
Ernst gemeinte Frage: Woran erkennt man, dass in diesem Fall in die PLC geschrieben werden soll?

CODE
WNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]",_abs_x)


geht ja auch im Sinutrain.
Bitte nicht hauen, ich beschäftige mich erst seit ein paar Monaten mit dem Thema und versuche dazuzulernen.


WNP = write nc to plc ...

QUOTE
Programmierung
Syntax: WNP("System- oder Anwendervariable", Wert)
Beschreibung: NC- oder PLC-Variable oder Maschinendaten schreiben
Parameter: System- oder Anwendervariable
Name der NC- oder PLC-Variablen
Wert Wert, der in die System- oder Anwendervariable
geschrieben werden soll.
Ist der Wert vom Typ String, muss er in Doppelhochkomma
geschrieben werden.


Lade dir mal Handbuch "BE2_de_de-DE.pdf" auf der Siemens Seite runter.


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


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 01.12.2015, 09:21 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Um von meiner Seite aus diese leidige Handbuch-Diskussion zu beenden:

Angehängte Datei  handbuch.JPG ( 45.48KB ) Anzahl der Downloads: 103


Und so sieht mein Desktop nicht erst seit gestern aus. Ich bitte also darum mir zu glauben, dass ich tatsächlich schon einmal ein Handbuch bemüht habe.
Ausserdem wüsste ich mal gerne welche MEINER Fragen klar mit einem dieser Handbücher zu benatworten ist. Danach dürft Ihr mir dann gerne Faulheit unterstellen.


@Topic:

QUOTE (Hexogen @ 30.11.2015, 12:56 Uhr) *
also da muss ich naxialverdruss irgendwie recht geben.
bei gewissen fragen muss man einfach sagen > Handbuch lesen.
bei masken hab ich immer das handbuch als pdf auf oder doc on cd.
allein schon weil man die funktionen nicht immer alle im kopf hat.
und ultraedit (notepad++ würd es auch tun) extra dafür vorbereitet

und mit $TC werden NC Variablen beschrieben.
mit der Funktion kannst einzelne Bausteine der PLC beschreiben.
Beispiel
MB2300.1 soll mit einer 1 belegt werden
WNP("MB2300.1",1)
oder DualporRam DBB (atomatisierte anlagen werdem meistens damit angesteuert)



WNP = write nc to plc ...



Lade dir mal Handbuch "BE2_de_de-DE.pdf" auf der Siemens Seite runter.



Also kann man vereinfacht sagen, alles was kein "$" in Namen trägt funktioniert unter Sinutrain nicht, weil es die PLC betrifft?

Gruß, Lucas
   
Beitrag 01.12.2015, 11:10 Uhr
Guest_guest_*
Themenstarter
Gast


$.... kennzeichnet Systemvariable.
Wenn du die Handbücher schon auf dem Desktop liegen hast, wäre der nächste Schritt: LESEN! wink.gif
   
Beitrag 01.12.2015, 13:36 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (faltklo @ 01.12.2015, 10:21 Uhr) *
Also kann man vereinfacht sagen, alles was kein "$" in Namen trägt funktioniert unter Sinutrain nicht, weil es die PLC betrifft?

Gruß, Lucas


-guest

sei ned so fieß tounge.gif
und habt euch Lieb ! steht ja Weihnachten vor der Tür.

@Lucas
alle Variablen die mit $ anfangen sind NC Variablen des Systems ... ich denk das wird etwas klarer.
Sprich du kannst die immer lesen und "teilweise" beschreiben.

Hab mich da etwas undeutlich ausgedrückt.
2. Versuch.

PLC Variablen sind die vom DualportRam > Sprich DBB / DBD / DBA oder Merkerbytes MB
Die kannst auch in Sinutrain beschreiben, wenn du die Belegung kennst.

mit
CODE
WNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]",_abs_x)


beschreibst den "$TC_DP12 [xx,yy] " sprich ein wert der Werkzeugverwaltung.
Da es sich um eine NC Variable handelt geht das.

wenn du jedoch eine PLC Variable beschreibst sieht das so aus:

CODE
WNP("MB2300.1",1)


mit dem Befehl setze ich den Merkerbyte 2300.1 auf 1 > MB2300.1 = 1 in der PLC


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


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 26.05.2016, 19:55 Uhr
faltklo
faltklo
Level 4 = Community-Meister
****
Gruppe: Mitglied
Mitglied seit: 03.11.2009
Beiträge: 379
Hallo zusammen,

Ich habe ja im Oktober für unsere erste Drehmaschine mit Siemens 840D eine eigene Maske für die Werkzeugkorrektur geschrieben.
Sie funktioniert nach dem Prinzip, dass der Bediener direkt aus der Betriebsart Programmlauf (Automatikbetrieb) die Maske öffnen kann.
Dann muss nur noch die Platznummer (1-24) des Werkzeugs eingegeben werden. Intern wird damit der Werkzeugname ermittelt, die bestehenden Korrekturen ausgelesen und angezeigt, und es kann eine neue additive Korrektur vorgenommen werden, die dann wieder in die Verschleissliste geschrieben wird.

Diese Maske funktioniert grundsätzlich einwandfrei und wurde von den Maschinenbedienern dankend angenommen. Mittlerweile haben wir drei identische Maschinen. Nun setzen wir immer öfter den Werkzeugtyp "Multitool" ein und damit stehe ich vor dem Problem, dass das Multitool als eine Art Untermagazin funktioniert und ich somit die Funktionalität ändern muss. Sollte ungefähr so aussehen:

- Maske öffnen
- Bediener gibt Platznummer ein
- prüfen ob dem Platz ein Multitool zugeordnet ist
- Wenn ja, wieviele Plätze hat das Multitool
- Platz innerhalb des Multitools eingeben, oder die Werkzeugnamen auf dem Multitool über Dropdown auswählen
- Wenn nein, funktionalität wie gehabt
- Korrekturen eingeben
- Maske mit VS8 schließen

Ich scheitere aktuell leider an Punkt 3. Hat jemand eine Idee?

Anbei der bisherige Code:

CODE
;Datei "dds_auto.com"
;Autor Lucas
;21.10.2015
;
;Funktionsweise:
;Diese Datei dient als Eintiegsdatei für den Automatikbetrieb
;und enthält unten näher beschrieben Masken


//s(start)

hs6 = ("Werkzeug-%nKorrektur")

press(hs6)
lm("korrektur")
end_press

//end

//m(korrektur)
;Maske "korrektur"
;Autor Lucas
;21.10.2015
;
;Funktionsweise:
;Diese Maske soll dem Maschinenbediener die Werkzeugkorrektur an Drehmaschinen erleichtern.
;Die Maske öffnet grundsätzich ohne vorbelegte Werte (Ausnahme: Schneidennummer "D" = 1)
;Der Bediener gibt den Revolver/Magazinplatz des zu korrigierenden Werkezeugs an.
;Daraufhin wird der Werkzeugname und die Anzahl der D-nummern ausgelesen.
;Wenn dem Platz kein Werkzeug zugeordnet ist, erscheint eine Fehlermeldung.
;Ist das Werkzeug vorhanden, werden die bisherigen Verschleisskorrekturen angezeigt.
;Beim Werkzeugtyp 100-299 (Fräser und Bohrer) wird zusätzlich der Radiusverschleiss angezeigt
;Der Bediener kann nun eine Additive Verschliesskorrektur durchführen.
;Der Gesamtverschleiss wird neu berechnet und angezeigt.
;Mit SK8 wird die Maske beendet und die neuen Werte werden in die Tabelle geschrieben.

DEF _tnr = (i/1,24//"Platznummer","Platznummer"/al0///300,10/420,10,40),
    _d   = (i/1,4/1/"Schneidennummer","D "/al0///485,10/500,10,20)
DEF _tname = (s///"","Werkzeugname"/al0,WR1///300,50/420,50,150)
DEF _abs_x = (r///"Gesamt X ","Gesamt X"/al0,WR1///230,90/330,90,80),
    _dx  = (r/-1,1/0/"Korrektur X","DX "/al0///450,90/480,90,40)
DEF _abs_y = (r///"Gesamt Y ","Gesamt Y"/al0,WR1///230,110/330,110,80),    
    _dy  = (r/-1,1/0/"Korrektur Y","DY "/al0///450,110/480,110,40)
DEF _abs_Z = (r///"Gesamt Z ","Gesamt Z"/al0,WR1///230,130/330,130,80),    
    _dz  = (r/-1,1/0/"Korrektur Z","DZ "/al0///450,130/480,130,40)
DEF _abs_r = (r///"Gesamt D ","Gesamt D"/al0,WR1///230,150/330,150,80),    
    _dr  = (r/-1,1/0/"Korrektur Radius","DR "/al0///450,150/480,150,40)
DEF _act_tool_nr
DEF _act_tool_p
DEF _tnumber_exist
DEF _toolnd
DEF _tool_type

;VS1=("Werkzeug-%nauswahl")
VS7=("\\sk_cancel.png")
VS8=("\\sk_ok.png")

load
_act_tool_nr = RNP("$P_TOOLNO");aktive Werkzeugnummer
_act_tool_p = RNP("$A_MYMLN["<<_act_tool_nr<<"]");aktiver Magazinplatz
vs8.se = 2
_abs_x.wr = 0
_abs_x.bc = 129
_abs_x.fc = 6
_abs_x.st = ""
_abs_y.wr = 0
_abs_y.bc = 129
_abs_y.fc = 6
_abs_y.st = ""
_abs_z.wr = 0
_abs_z.bc = 129
_abs_z.fc = 6
_abs_z.st = ""
_abs_r.wr = 0
_abs_r.bc = 129
_abs_r.fc = 6
_abs_r.st = ""
_dr.wr = 0
_dr.st =""
lb("sub1")
end_load


change(_tnr)
call("read_tool")
end_change

change(_d)
call("read_tool")
end_change

change(_dx)
_abs_x = _abs_x + _dx
end_change

change(_dy)
_abs_y = _abs_y + _dy
end_change

change(_dz)
_abs_z = _abs_z + _dz
end_change

change(_dr)
_abs_r = _abs_r + _dr
end_change

;press(vs1)
;wnp("i_easyscreen_str[0]","selectTool")       ; call mask to selecting the tool name
;end_press

press(vs7)
exit
end_press

press(vs8)
WNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]",_abs_x)
WNP("$TC_DP13["<<_tnumber_exist<<","<<_d<<"]",_abs_z)
WNP("$TC_DP14["<<_tnumber_exist<<","<<_d<<"]",_abs_y)  
IF _tool_type >= 100; Wenn Fräser oder Bohrer
IF _tool_type <= 299
  WNP("$TC_DP15["<<_tnumber_exist<<","<<_d<<"]",_abs_r)
ENDIF
ENDIF
exit
end_press


//end

//b(sub1)

sub(read_tool)
IF _tnr == _act_tool_p
_tnumber_exist = RNP("$P_TOOLNO")
ELSE
_tnumber_exist = RNP("$TC_MPP6[1,"<<_tnr<<"]");tnr platz auslesen
ENDIF
IF _tnumber_exist
_toolnd = RNP("$P_TOOLND["<<_tnumber_exist<<"]");Anzahl der Schneiden
_d.max = _toolnd
_tname = RNP("$TC_TP2["<<_tnumber_exist<<"]");tnamen auslesen
_tname.fc = 3
_tool_type = RNP("$TC_DP1["<<_tnumber_exist<<","<<_d<<"]");Werkzeugtyp auslesen
VS8.SE = 1
_abs_x.wr = 1
_abs_x.st = "Gesamt X"
_abs_x = RNP("$TC_DP12["<<_tnumber_exist<<","<<_d<<"]")
_abs_y.wr = 1
_abs_y.st = "Gesamt Y"
_abs_y = RNP("$TC_DP14["<<_tnumber_exist<<","<<_d<<"]")
_abs_z.wr = 1
_abs_z.st = "Gesamt Z"
_abs_z = RNP("$TC_DP13["<<_tnumber_exist<<","<<_d<<"]")
  IF _tool_type >= 100; Wenn Fräser oder Bohrer
   IF _tool_type <= 299
    _abs_r.wr = 1
    _abs_r.st = "Gesamt Radius"
    _abs_r = RNP("$TC_DP15["<<_tnumber_exist<<","<<_d<<"]")
    _dr.wr = 2
    _dr.st = "DR "
   ELSE
    _abs_r.wr = 0
    _abs_r.st = ""
    _dr.wr = 0
    _dr.st = ""
   ENDIF
  ENDIF
ELSE
_tname = "Platz nicht belegt!"
_tname.fc = 7
_abs_x.wr = 0
_abs_x.st = ""
_abs_y.wr = 0
_abs_y.st = ""
_abs_z.wr = 0
_abs_z.st = ""
_abs_r.wr = 0
_abs_r.st = ""
VS8.SE = 2
ENDIF
_dx = 0
_dy = 0
_dz = 0
_dr = 0
end_sub

//end


Vielen Dank!
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: