Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Satzvorlauf - Endlos

Beitrag 15.03.2022, 09:10 Uhr
Stefan_M
Stefan_M
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 04.05.2020
Beiträge: 14
Guten Morgen zusammen,

ich habe mir ein Programm geschrieben welches nach Tasten in "Z" planen soll.
Das Planaufmass verieiert und somit muss ich mal 2mm planen oder auch mal 5mm

Mein Prog. läuft soweit eigetlich ganz ordentlich. Nur wenn ich einen Satzsuchlauf starte, wird Endlos geuscht.
Ich bin mir sicher es liegt an N298-N302, habe aber keine Idee wie ich es umgehen kann. ( Wald und Bäume und sooo...)
Satt Achsposition würde bestimmt auch ein Zähler gehen, oder??

Bin für jeden Tipp dankbar.
Beste Grüße
Stefan

N10 R40=0.5
N12 R54=R47+1
N14 R55=ROUND(R54+1)
N16 G40 G17 G71 G90
N18 G64 G0 X-151.612 Y-140.025 S1230 M3
N20 G0 Z=R55 ;Z POSITIONIEREN
N22 _START:
N24 G91 ;INKREMENTAL
N26 Z=-R40;ZUSTELLUNG Z0.5 IN MINUS
N28 G90 ;ABSOLUT
N30 M7 M8 ;WASSER AN
N31 G0 X-149.489 Y-137.905
.
.
.
.
N282 G1 X10.432 Y-7.11
N284 G91 ;INKREMENTAL
N286 G0 Z=R40 ;ABHEBEN IN Z UM 0.5
N288 G90 ; ABSOLUT
N290 G0 X-149.489 Y-137.905
N292 G91
N294 G0 Z=-R40 ; ZUSTELLUNG IN Z MINUS
N296 G90
N298 R56=$AA_IW[Z] ; AUSLESEN AKTUELLE Z POSITION MIT SCHREIBEN IN R56
N300 IF R56==0.5 GOTOF _END ; IST GLEICH VERGLEICH
N302 IF R56>0.5 GOTOB _START ; IST GROESSER VERGLEICH
N304 _END:
N306 G0 Z15.
N308 M5 M9
N310 M17
   
Beitrag 15.03.2022, 17:30 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
Hey Stefan

Füge
CODE
IF $P_SEARCH GOTOF _END


ein


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


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 15.03.2022, 18:49 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.926
Ganz unabhängig vom Satzsuchlauthema: Wozu ist der Satz N300 gut?
Denn kannst du auch einfach weglassen. Wenn der Wert von R56 kleiner gleich 0.5 ist ist die Bedingung im Satz N310 nicht erfüllt,und du kommst dann ohnehin am Label _END an.
Außerdem ist eine Abfrage auf Gleichheit bei Gleitkommazahlen eine ziemlich wackelige Angelegenheit. Das sollte man nur machen, wenn man genau weiß, was man tut (bei 0.5 geht das zufälligerweise, aber das ist nicht immer so).
   
Beitrag 16.03.2022, 08:30 Uhr
Stefan_M
Stefan_M
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 04.05.2020
Beiträge: 14
Guten Morgen zusammen,

@Hexogen das klappt, danke.


@CNCFr, stimmt, N300 ist übrflüssig.

QUOTE
Außerdem ist eine Abfrage auf Gleichheit bei Gleitkommazahlen eine ziemlich wackelige Angelegenheit. Das sollte man nur machen, wenn man genau weiß, was man tut (bei 0.5 geht das zufälligerweise, aber das ist nicht immer so).
Klär micht bitte auf.
   
Beitrag 16.03.2022, 10:01 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.926
QUOTE (Stefan_M @ 16.03.2022, 08:30 Uhr) *
Klär micht bitte auf.


Die Gleitkommaformat können viele (eigentlich fast alle) Zahlen nicht exakt, sondern nur näherungsweise dargestellt werden. Das gilt z.B. für so "harmlose" Zahlen wie 0,1 oder 0,2. Die haben im Binärsystem unendlich viele Nachkommastellen. 0,5 kann dagegen exakt mit einer Nachkommastelle dargestellt werden, weil es genau 2^-1 (zwei hoch minus 1) ist. Das bedeutet, dass die meisten Zahlen mit einem Rundungsfehler gespeichert werden müssen.
Du vergleichst dann zwangsläufig zwei Zahlen, die beide einen Rundungsfehler haben. Häufig überblickt man nicht mit Sicherheit, ob zwei Zahlen, die theoretisch eigentlich gleich sein müssten, tatsächlich bis aufs letzte (das 52-igste) Bit identisch sind, wenn die zu vergleichenden Werte auf unterschiedliche Art und Weise berechnet wurden.
Man sollte deshalb Abfragen auf Gleichheit von Gleitkommazahlen nach Möglichkeit vermeiden. Wenn man statt dessen abfragt, ob ein Wert z.B. nur um einen kleinen Toleranzwert vom Testwert abweicht, ist man jedenfalls auf der sicheren Seite.
   
Beitrag 21.03.2022, 07:24 Uhr
Stefan_M
Stefan_M
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 04.05.2020
Beiträge: 14
Guten morgen zsm,

danke für die Ausführung.
Angenehme Arbeitswoche.


Grüße
Stefan
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: