Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

UGUD, GUD - Definition mit Feld für Buchstaben und Zahlen

Beitrag 07.12.2019, 13:35 Uhr
Lindenmann_Hirner
Lindenmann_Hirne...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.12.2019
Beiträge: 12
Hallo,

...eigentlich ist es ja wie ein R-Parameter.
Wir benötigen eine Definition, welche man Zahlen, Buchstaben und evtl. Sonderzeichen anzeigen lassen kann.
Z.Bsp. " DURCHMESSER_MIT_TOLERANZ" und eine MSG in das Feld schreiben, z. Bsp. D6(-20/+20)

Normal sieht es ja im Programm so aus:

DURCHMESSER_MIT_TOLERANZ=10 ( beliebiger Wert )

Wir möchten anzeigen lassen:

DURCHMESSER_MIT_TOLERANZ= MSG( " D6(-20/+20) ")

Muss nicht unbedingt eine Message sein, geht auch nur Text.
Geht dieses?
Welche Definition benötigen wir?





%_N_UGUD_DEF
;$PATH=/_N_DEF_DIR
DEF NCK REAL DURCHMESSER_MIT_TOLERANZ

DEF NCK REAL DURCHMESSER_UNTERE_TOLERANZ

DEF NCK REAL DURCHMESSER_OBERE_TOLERANZ

DEF NCK REAL DURCHMESSER_ISTMASS_ANWENDER

DEF NCK REAL TIEFE_MIT_TOLERANZ

DEF NCK REAL TIEFE_UNTERE_TOLERANZ

DEF NCK REAL TIEFE_OBERE_TOLERANZ

DEF NCK REAL TIEFE_ISTMASS_ANWENDER

DEF NCK REAL GEWINDEGROESSE

DEF NCK REAL GEWINDE_LEHRBAR

DEF NCK REAL GEWINDETIEFE_MINDESTMASS

DEF NCK REAL GEWINDETIEFE_ISTMASS_ANWENDER

M30

Gruß
Hartmut
   
Beitrag 07.12.2019, 21:52 Uhr
otti.ms
otti.ms
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 19.03.2005
Beiträge: 94
Leider verstehe ich Deine Frage nicht.
Den Inhalt der Variable von "DURCHMESSER_MIT_TOLERANZ" durch MSG schreibst Du so.

MSG(<<DURCHMESSER_MIT_TOLERANZ<<" -0,20/+0,20")
   
Beitrag 08.12.2019, 21:23 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.921
QUOTE (Lindenmann_Hirner @ 07.12.2019, 14:35 Uhr) *
Hallo,

...eigentlich ist es ja wie ein R-Parameter.
Wir benötigen eine Definition, welche man Zahlen, Buchstaben und evtl. Sonderzeichen anzeigen lassen kann.
Z.Bsp. " DURCHMESSER_MIT_TOLERANZ" und eine MSG in das Feld schreiben, z. Bsp. D6(-20/+20)

Normal sieht es ja im Programm so aus:

DURCHMESSER_MIT_TOLERANZ=10 ( beliebiger Wert )

Wir möchten anzeigen lassen:

DURCHMESSER_MIT_TOLERANZ= MSG( " D6(-20/+20) ")

Muss nicht unbedingt eine Message sein, geht auch nur Text.


Mir geht es wie oti.ms: Ich verstehe nicht wirklich was du anzeigen willst.
Soll in dem oben zitierten Beispiel vielleicht folgendes angezeigt werden (der Text zwischen den Gänsefüsschen)?

"DURCHMESSER_MIT_TOLERANZ = 10 (-20/20)"
wobei die Zahl zehn aus der Variablen DURCHMESSER_MIT_TOLERANZ stammt. Das gingen dann folgendermaßen:

MSG("DURCHMESSER_MIT_TOLERANZ = " << DURCHMESSER_MIT_TOLERANZ << " (-20/20)"
Wenn die Toleranz [das ist - denke ich - der Teil (-20/20)] nicht fest ist, sondern ebenfalls in einer Variablen steht, kann man das genauso wie für den Durchmesser realisieren.
   
Beitrag 09.12.2019, 06:51 Uhr
Lindenmann_Hirner
Lindenmann_Hirne...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.12.2019
Beiträge: 12
QUOTE (CNCFr @ 08.12.2019, 21:23 Uhr) *
Mir geht es wie oti.ms: Ich verstehe nicht wirklich was du anzeigen willst.
Soll in dem oben zitierten Beispiel vielleicht folgendes angezeigt werden (der Text zwischen den Gänsefüsschen)?

"DURCHMESSER_MIT_TOLERANZ = 10 (-20/20)"
wobei die Zahl zehn aus der Variablen DURCHMESSER_MIT_TOLERANZ stammt. Das gingen dann folgendermaßen:

MSG("DURCHMESSER_MIT_TOLERANZ = " << DURCHMESSER_MIT_TOLERANZ << " (-20/20)"
Wenn die Toleranz [das ist - denke ich - der Teil (-20/20)] nicht fest ist, sondern ebenfalls in einer Variablen steht, kann man das genauso wie für den Durchmesser realisieren.


Hallo,

ich habe eine UGUD-Datei erstellt.
Die Felder sind ja nur mit Zahlen, Ganzkommazahlen zu belegen, keine Sonderzeichen oder Buchstaben.
Also wie R-Parameter und nur zum anzeigen oder für Rechenoperationen.
Der "real" - Befehle wird falsch sein.

Gibt es einen Befehl wie real, string, frame, etc wo ich definieren kann welche dann Buchstaben, Sonderzeichen oder gar eine Messege eintragen kann.
   
Beitrag 09.12.2019, 07:43 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.921
Ein Message gibt immer einen String aus. IN meinem Beispiel taucht ja ein Zahlenwert auf ( der Teil << DURCHMESSER_MIT_TOLERANZ). Aber dieser Zahlenwert wird ja ebenfalls in einen String konvertiert bevor er an die Message übergeben wird.
Du kannst auch unabhängig von der Message einen String definieren. Das ist bsonders dann sinnvol, wenn man den String Schritt für Schritt aufbauen will.
Ein Beispiel:
CODE
DEF REAL _REAL_WERT = 17.1
DEF STRING[200] _MSG_TEXT = TESTAUSGABE = "
DEF STRING[200] _EXEXSTRING

N10_MSG_TEXT = _MSG_TEXT << _REAL_WERT

N20 MSG(_MSG_TEXT)
N30 _EXEXSTRING ="MSG(_MSG_TEXT)"
N40 EXECSTRING(_EXECSTRING)


Im Satz N10 wird der String aus zwei Teilen zusammengesetzt (einem fixen Text und einem als Real definierten Zahlenwert). Man kann auch mehr als zwei Teile in einer Anweisung zusammenbauen und / oder den Aufbau des Strings auf mehrere Zeilen aufteilen.
Den fertigen String kann man dann mit der Anweisung N20 ausgeben.
Wenn du unbedingt das ganze Kommando abspeichern willst (wofür es keinen Grund gibt, kannst du das wie in den Zeilen N30 und N40 machen: In N30 wird das Kommando in eine Stringvariable geschrieben und dann in N40 mit EXEXSTRING ausgeführt.
   
Beitrag 09.12.2019, 17:13 Uhr
otti.ms
otti.ms
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 19.03.2005
Beiträge: 94
Ich rate mal weiter.

Du möchtest in Deiner UGUD eine Variable vom Typ String (Zeichenkette) haben?

Zum Beispiel:

N10 DEF CHAN STRING[32] MEINTEXT = "Hallo Forum" ;kann eine beliebiger Zeichenkette enhalten, die 32 steht für die reservierten Bytes
N11 DEF CHAN INT MEINZAEHLER =1 ;ganzahliger Wert, ohne Nachkommastellen
N12 DEF CHAN REAL MEINWERT = 3.14159265 ;gebrochene Zahl
N13 M30

"DEF NCK" verwende ich nur bei mehrkanaligen Steuerungen. wenn die Variable auf allen Kanälen gebraucht wird.
   
Beitrag 20.12.2019, 07:17 Uhr
Lindenmann_Hirner
Lindenmann_Hirne...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.12.2019
Beiträge: 12
QUOTE (otti.ms @ 09.12.2019, 17:13 Uhr) *
Ich rate mal weiter.

Du möchtest in Deiner UGUD eine Variable vom Typ String (Zeichenkette) haben?

Zum Beispiel:

N10 DEF CHAN STRING[32] MEINTEXT = "Hallo Forum" ;kann eine beliebiger Zeichenkette enhalten, die 32 steht für die reservierten Bytes
N11 DEF CHAN INT MEINZAEHLER =1 ;ganzahliger Wert, ohne Nachkommastellen
N12 DEF CHAN REAL MEINWERT = 3.14159265 ;gebrochene Zahl
N13 M30

"DEF NCK" verwende ich nur bei mehrkanaligen Steuerungen. wenn die Variable auf allen Kanälen gebraucht wird.


Hallo,
danke für die Hinweise.
Funktioniert jetzt auch.

1. Frage hätte ich noch,

- "DURCHMESSER_ISTMASS_ANWENDER" ist richtig eingetragen, ist in Toleranz

Die Steuerung springt mir trotzdem in die " IF-Abfrage" ( Satznummer N365 ) rein.
Könnt Ihr euch einmal die Abfrage anschauen ob eine Fehler ist?
Sie sollte eigentlich bei einem richtigen Wert zu Satz N405/N410 springen

Danke.
Angehängte Datei(en)
Angehängte Datei  CNC_ARENA.JPG ( 262.04KB ) Anzahl der Downloads: 43
 
   
Beitrag 20.12.2019, 08:34 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.921
Wenn ich das richtige sehe (hab's nicht ausprobiert) stimmt deine IF - ENDIF-Struktur nicht.
Es fehlt ein ENDIF zwischen N375 und N380.
Das gleiche Problem gibt es nochmals zwischen N430 und N435.

Wenn du die Teile zwischen IF und ENDIF jeweils einrückst sieht man besser was beabsichtigt ist, und wie der Ablauf funktioniert.
   
Beitrag 20.12.2019, 09:51 Uhr
Lindenmann_Hirner
Lindenmann_Hirne...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.12.2019
Beiträge: 12
QUOTE (CNCFr @ 20.12.2019, 08:34 Uhr) *
Wenn ich das richtige sehe (hab's nicht ausprobiert) stimmt deine IF - ENDIF-Struktur nicht.
Es fehlt ein ENDIF zwischen N375 und N380.
Das gleiche Problem gibt es nochmals zwischen N430 und N435.

Wenn du die Teile zwischen IF und ENDIF jeweils einrückst sieht man besser was beabsichtigt ist, und wie der Ablauf funktioniert.



Hallo,
ich habe nun ein stopre vor der If-Abfrage gesetzt, funktioniert
   
Beitrag 20.12.2019, 11:52 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.921
QUOTE (Lindenmann_Hirner @ 20.12.2019, 10:51 Uhr) *
Hallo,
ich habe nun ein stopre vor der If-Abfrage gesetzt, funktioniert

Mit einem STOPRE kann man den durch die Programmlogik vorgegebenen Ablauf nicht verändern. Irgend etwas passt da nicht zusammen.
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: