Willkommen, Gast    Noch kein Mitglied? KOSTENLOS ANMELDEN

Mathem. Funktion EXP(..), Wie genau soll das aussehen?

   Antworten Neues Thema
 
 
Beitrag 10.12.2011, 16:14 Uhr
 
 
woaldy
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 07.05.2006
Beiträge: 216
Hallo zusammen,

ich möchte ein Zahl mit einem Exponenten verrechnen. Z.B:
1.2345 * 103

Bis hierher komme ich:
R1 = 1.2345 * (10 EXP(R2))
Damit ernte ich aber nur einen Fehler, und das Handbuch ist in dem Punkt auch keine Hilfe...

Kann jemand von euch mir auf die Sprünge helfen?

woaldy
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 10.12.2011, 18:58 Uhr
 
 
hapo
Level 6 = CNC-Arena-Doktor
******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 10.03.2005
Beiträge: 880
ZITAT(woaldy @ 10.12.2011, 16:14 Uhr) index.php?act=findpost&pid=358119
Hallo zusammen,

ich möchte ein Zahl mit einem Exponenten verrechnen. Z.B:
1.2345 * 103

Bis hierher komme ich:
R1 = 1.2345 * (10 EXP(R2))
Damit ernte ich aber nur einen Fehler, und das Handbuch ist in dem Punkt auch keine Hilfe...

Kann jemand von euch mir auf die Sprünge helfen?

woaldy


Im Programmierhandbuch Grundlagen habe ich folgendes gefunden:

Den Rechenparametern können Sie Werte im folgenden Bereich zuweisen:
±(0.000 0001 ... 9999 9999) (8 Dezimalstellen und Vorzeichen und Dezimalpunkt)
• Bei ganzzahligen Werten kann der Dezimalpunkt entfallen.
• Ein positives Vorzeichen kann stets entfallen.
Beispiel:
R0=3.5678 R1=-37.3 R2=2 R3=-7
R4=-45678.1234
Mit der Exponentialschreibweise kann ein erweiterter Zahlenbereich zugewiesen werden:
Beispiel:
± (10-300 ... 10+300)
Der Wert des Exponenten wird nach den Zeichen EX geschrieben; maximale
Gesamtzeichenzahl: 10 (einschließlich der Vorzeichen und Dezimalpunkt)
Wertebereich von EX: -300 bis +300
Beispiel:
R0=-0.1EX-5 ;Bedeutung: R0 = -0,000 001
R1=1.874EX8 ;Bedeutung: R1 = 187 400 000

Ich hoffe das hilft dir weiter wink.gif
TOP     Richtlinien bestätigt am: 28.04.2012 - 11:06 Antworten   Zitieren  
 
 
 
Beitrag 15.12.2011, 10:52 Uhr
 
 
woaldy
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 07.05.2006
Beiträge: 216
ZITAT
Beispiel:
R0=-0.1EX-5 ;Bedeutung: R0 = -0,000 001
R1=1.874EX8 ;Bedeutung: R1 = 187 400 000

Das funktioniert genau wie Du beschrieben hast. Leider habe ich das nicht in Kombination mit Parametern
hin bekommen. Ein R3=R2 EX(R1) kriege ich so nicht hin.

Unter MillPlus konnte ich das direkt ohne Funktion schreiben:
E1 = E2*10^E3

POT(..) ist nur eine Quadratfunktion (x²)

EXP(..) ist eine Exponentialfunktion. de.wikipedia.org/wiki/Exponentialfunktion
R1=EXP(1) -> R1=2.718...
R1=EXP(2) -> R1=5....
R1=EXP(3) -> R1=7...
R1=EXP(4) -> R1=22...

Zur Not kann ich ja immer noch einzeln um eine 10er Stelle verschieben:
GOTOF JETZTNICHT
EINESTELLE:
R1=R1/10
ENDLABEL
JETZTNICHT:
...
REPEAT EINESTELLE P=R2


Gruß woaldy
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 15.12.2011, 14:44 Uhr
 
 
hapo
Level 6 = CNC-Arena-Doktor
******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 10.03.2005
Beiträge: 880
Hallo woaldy,

was hast du denn eigentlich vor?

Die Exponetial-Schreibweise der SINUMERIK ermöglicht es lediglich, den R-Parametern Werte über den erlaubten Bereich (8 Stellen vor dem Komma und 8 Stellen nach dem Komma) zuzuordnen. Hier handelt es sich also um eine Schreibweise in Zehnerpotenzen.

Über die Exponential-Funktion (EXP()) habe ich, außer der Auflistung und "R13=EXP(R1)" , auch nichts weiterführendes in den Handbüchern gefunden.
ZITAT
Zur Not kann ich ja immer noch einzeln um eine 10er Stelle verschieben:
GOTOF JETZTNICHT
EINESTELLE:
R1=R1/10
ENDLABEL
JETZTNICHT:
...
REPEAT EINESTELLE P=R2


... hat aber nichts mit der Exponetial-Funktion EXP() zu tun.
Und ist auch nicht "Siemenslike", sondern eher "Heidenhainlike" (ENDLABEL) wink.gif

Der Beitrag wurde von hapo bearbeitet: 15.12.2011, 14:57 Uhr
TOP     Richtlinien bestätigt am: 28.04.2012 - 11:06 Antworten   Zitieren  
 
 
 
Beitrag 15.12.2011, 16:00 Uhr
 
 
hapo
Level 6 = CNC-Arena-Doktor
******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 10.03.2005
Beiträge: 880
ZITAT
Das funktioniert genau wie Du beschrieben hast. Leider habe ich das nicht in Kombination mit Parametern
hin bekommen. Ein R3=R2 EX(R1) kriege ich so nicht hin.

Die Syntax ist ohne Leerzeichen. Wenn du allerdings R3=R2EXR1 wird's sicher Motze geben.
versuch doch mal:

R3=R2<<EX<<R1 ;=R2*10^R1

Ich kann das hier leider nicht ausprobieren.
TOP     Richtlinien bestätigt am: 28.04.2012 - 11:06 Antworten   Zitieren  
 
 
 
Beitrag 15.12.2011, 23:01 Uhr
 
 
woaldy
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 07.05.2006
Beiträge: 216
ZITAT
Hallo woaldy,

was hast du denn eigentlich vor?


Ich möchte eine Zahl gravieren. Nur leider hat mein Maschinenhersteller den
Gravurzyklus nicht mit drauf gepackt. Statt dessen soll ich für 3T€ seinen nehmen... wacko.gif
Jetzt zerlege ich die Zahl in einzelne Ziffern und graviere die als Unterprogramm.
Den Schritt wollte ich im Programm erledigen, z.Zt . von Hand.

ZITAT
... hat aber nichts mit der Exponetial-Funktion EXP()


Das ich POT() nicht nutzen kann hatte ich aus der Hilfe schon mitgekriegt.
Als mathematische Funktion (^) war es nicht aufgeführt. Da habe ich eben zu
EXP() gegriffen in der Hoffnung das der passt.
Wie setze ich sonst xy um?

Werde es morgen testen und mich dann noch mal melden.

Gruß woaldy
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 16.12.2011, 00:31 Uhr
 
 
hapo
Level 6 = CNC-Arena-Doktor
******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 10.03.2005
Beiträge: 880
Dann würde ich doch einfach die Zahl in einen String wandeln und von links nach rechts auflösen.

def real abstand=5.25
def char zeichen
def int position, anzahl
def string[11] text ; für einen 10-stelligen Text
R1=123 ; eine 3-stellige Zahl
text="NUMMER:"<<R1 ;123

;text auflösen
anzahl=STRLEN(text) ;Textlänge ermitteln
Anfang:
zeichen=string[position] ;1.Zeichen (position 0)
ZEICHEN_FRAESEN(zeichen) ;Unterprogramm zum Fräsen eines einzelnen Zeichens
ATRANS X=abstand ; Verschiebung in X um Zeichenabstand
position=position+1
if position<anzahl gotob Anfang
TRANS ;Verschiebungen zurücksetzen
M17

Der Gravurzyklus (CYCLE60) gehört eigentlich seit einigen Jahren bei Neumaschinen zum Standard. Oder ist die Steuerung schon etwas sehr "angegraut"? wink.gif

Der Beitrag wurde von hapo bearbeitet: 16.12.2011, 00:43 Uhr
TOP     Richtlinien bestätigt am: 28.04.2012 - 11:06 Antworten   Zitieren  
 
 
 
Beitrag 19.12.2011, 16:45 Uhr
 
 
woaldy
Level 3 = CNC-Arena-Techniker
***
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 07.05.2006
Beiträge: 216
ZITAT
R3=R2<<EX<<R1


EX scheint nur mit Zahlen zu funktionieren. Sobald ich mit "<<" einen Parameter
davor und/oder dahinter einbinde gibt es einen Fehler.

ZITAT
Dann würde ich doch einfach die Zahl in einen String wandeln und von links nach rechts auflösen.

Werde es jetzt auch so o.ä. lösen. Hatte einfach eine bestehende Lösung versucht zu portieren. Neuschreiben
wäre jetzt im Nachhinein wirklich einfacher gewesen. wink.gif Aber so kann man wenigstens was dazulernen.
ZITAT
Oder ist die Steuerung schon etwas sehr "angegraut"?

Den Sofwarestand und Version habe ich noch nicht gefunden. Als Vergleich habe ich nur eine 2010er DMG
Maschine mit Shopmill Oberfläche. Und die beiden haben - bedingt durch viel Eigenentwicklung bei meiner
neuen Maschine - "nur noch die Tastatur" gemein...

Gruß woaldy
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
 
Beitrag 19.12.2011, 19:22 Uhr
 
 
hapo
Level 6 = CNC-Arena-Doktor
******
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 10.03.2005
Beiträge: 880
ZITAT
EX scheint nur mit Zahlen zu funktionieren. Sobald ich mit "<<" einen Parameter
davor und/oder dahinter einbinde gibt es einen Fehler.

Gut, das war auch nur eine Idee....
ZITAT
Werde es jetzt auch so o.ä. lösen. Hatte einfach eine bestehende Lösung versucht zu portieren. Neuschreiben
wäre jetzt im Nachhinein wirklich einfacher gewesen. Aber so kann man wenigstens was dazulernen.

Na dann viel Erfolg... thumbs-up.gif
TOP     Richtlinien bestätigt am: 28.04.2012 - 11:06 Antworten   Zitieren  
 
 
 
Beitrag 20.12.2011, 09:00 Uhr
 
 
camand
Level 1 = CNC-Arena-Lehrling
*
  Gruppe: CNC-Arena-Mitglied
Mitglied seit: 17.07.2007
Beiträge: 14
Hallo woaldy,

vielleicht hilft Dir ja das weiter:

R1=5 ;Basis
R2=3 ;Exponent
R3=EXP(R2*LN(R1)) ;Ergebnis des Potenzierens

Dies wäre ein funktionsfähiger Baustein, welcher auf einer S840D das Potenzieren mittels R-Parametern ermöglicht. Obiges Beispiel wäre dann 5^3, d.h. in R3 steht als Ergebnisparameter 125.

Ist es das, was Du suchst ?

Gruß

Markus
TOP     Richtlinien bestätigt am: -- Antworten   Zitieren  
 
 
Suchbegriff finden          Antworten    Neues Thema

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

 OK

Anzeige