17. Februar 2019, 14:49:51
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Zufallszahl erzeugen


normal_post Autor Thema: [offen] Zufallszahl erzeugen  (Gelesen 1377 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

25. September 2018, 16:56:36
Gelesen 1377 mal
Offline

DennisWo


Hallo,

ich bin neu hier und noch in Ausbildung zum Automatisierungstechniker. Wir haben in der Schule gerade das Thema Zufallszahl mit der Funktion RND zu erzeugen, wovon anscheinend nicht mal der Dozent Ahnung hat.....

Ich habe so einiges durch, komme aber nicht drauf und finde über Google auch nichts brauchbares dazu. Der Dozent hat daraufhin bei seinem Vorgänger eine Lösung geholt, die aber auch nicht in Cosimir Educational funktioniert. Es kommt bei 101 M1 = 1 Syntax Error.
Habe die Aufgabenstellung und die Lösung als PDF angehängt und hoffe, dass mir hier jemand helfen kann.

Melfa-Basic IV
Roboter: RV-2AJ

Viele Grüße
Dennis
« Letzte Änderung: 25. September 2018, 16:58:30 von DennisWo »
  • gefällt mir    Danke

Heute um 14:49:51
Antwort #1

Werbung

Gast

Heute um 14:49:51
Antwort #1

Werbung

Gast

28. September 2018, 11:21:23
Antwort #1
Offline

Urmel

Global Moderator
Hallo,

falls das eine Frage war, habe ich sie nicht verstanden.

Eine Google Suche nach "basic rnd" liefert eine Menge Treffer. Das ist nichts spezielles, den Befehl gab es früher auf den Homecomputern und beim Microsoft Basic auf dem PC. Auch in Excel und Visual Basic usw. gibt es das so ähnlich.

An dem M1 = 1 kann ich nichts falsches finden.

Die einzigen Zeilen, die in dem PDF merkwürdig aussehen, sind die 260 und 510. Da stehen eigentlich keine Klammern. Aber verboten sind sie eventuell nicht.

Grüße

  Urmel
  • gefällt mir    Danke

28. September 2018, 12:14:52
Antwort #2
Offline

DennisWo


Es tut mir Leid, wenn ich nicht deutlich rüber kam.

Nochmal. Wir lernen den Roboter mit der Programmiersprache Melfa-Basic 4 zu programmieren. Dazu nutzen wir das Programm Cosimir Educational.

Unsere Aufgabe ist es, 3 Werkstücke von zufällig ausgewählten Positionen auf der Palette abzuholen. Dieses zufällige Positionen der Palette anfahren sollen wir mit der Funktion RND machen. Zwecks RND habe ich aus dem Programmierhandbuch die Seite als PDF angefügt.

Meine Frage ist hier nun, wie muss ich programmieren, damit dies klappt ohne Syntax Error oder sonstige Fehler? Den Rest der Aufgabe habe ich selbst geschafft, mein einziges Problem ist diese zufälligen Positionen.

Viele Grüße
Dennis
  • gefällt mir    Danke

28. September 2018, 12:38:37
Antwort #3
Offline

Urmel

Global Moderator
Also Rnd(0) liefert Fliesskommazahlen zwischen 0 und 1. Bei jedem Aufruf eine andere.

Bei gleichem Startwert kommt immer die gleiche Zahlenfolge, deshalb heißen die Dinger auch Pseudozufallszahlen.

Das ist der Sinn hinter den Zeilen 78 und 80 in dem PDF ganz oben. Man holt sich am Programmanfang den Startwert aus den Sekunden von der Uhr, damit nicht immer wieder die gleiche "Zufallsfolge" kommt. Wirklich zufällig ist das ganze dann immer noch nicht, aber es kommt immer eine von 60 Zahlenfolgen. Man macht das eigentlich nur einmal im Programm, das sieht auf dem PDF etwas eigenartig aus.

Was man noch machen muss, ist aus der Zahl zwischen 0 und 1 eine Zahl zwischen 1 und "Anzahl der Positionen auf der Palette" zu machen. Auch da habe ich mit dem PDF etwas Probleme. In der Doku von Office sieht die Formel etwas anders aus
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/rnd-function

Ich würde da mal etwas probieren und erstmal die Zahlen ausgeben lassen.
  • gefällt mir    Danke

28. September 2018, 13:07:18
Antwort #4
Offline

Programmiersklave


Als jemand, der absolut NULL Ahnung hat von diesem Roboter, und weil heute Freitag ist:
zu Zeile 81 und 100 bis 107: wieso nimmt man nicht einfach INT( 8*RND(Start))+1 stattdessen?
zu Zeile 100/101: aus irgendeiner im Internet gefundenen Doku: 
Zitat
(7) Space
The space character, when used as part of a character string constant or within a comments step, is interpreted as a character. The space character is required as a delimiter immediately after a step No. or a command word, and between data items.
Aber wie gesagt, nur aus sportlichem Interesse  ;)
Ansonsten: im KUKA habe ich mir schon oft 'ne Zufallsfunktion gewünscht. Ich multipliziere dann immer Achswinkelfluktuationen...

Grüße,
Michael
  • gefällt mir    Danke

Heute um 14:49:51
Antwort #5

Werbung

Gast

28. September 2018, 14:49:24
Antwort #5
Offline

DennisWo


Danke euch, nach euren Beiträgen habe ich ein wenig überlegt und probiert und habe es geschafft :-)

Anbei ein Foto von dem Programm jetzt.
  • gefällt mir    Danke

17. Oktober 2018, 17:04:04
Antwort #6
Offline

DennisWo


Ich nochmal :-)

Ich muss ja bei dieser Palette 3 verschiedene Palettenpositionen anfahren. Meine Frage ist, hat jemand eine Idee, wie ich es hinbekomme, dass keine Zahl ein zweites mal vorkommt? Also das z.b keine 5 - 5- 3 kommt oder 5 - 3 - 5

Hab es schon mit IF Anweisungen probiert, aber das will irgendwie nicht.

Viele Grüße
Dennis
  • gefällt mir    Danke

18. Oktober 2018, 08:34:10
Antwort #7
Offline

Urmel

Global Moderator
Schau dir den Befehl "Dim" an. Du musst dir in einem Array merken, welche Positionen schon verwendet wurden.
  • gefällt mir    Danke

08. November 2018, 15:26:12
Antwort #8
Offline

DennisWo



Haben Sie auch ein kurzes Beispiel, wie ich das "Dim" anwende? Der Dozent hat das mal angesprochen, wüsste ich jetzt aber nicht, wie ich es anwende. Nehmen wir mal an M1 ist die erzeugte Zahl. Muss ich dann DIM 1(M1) schreiben?
  • gefällt mir    Danke

Heute um 14:49:51
Antwort #9

Werbung

Gast


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH