CPU315 + CP340 + Leuze Laserscanner. Jemand nen Plan?

Zuviel Werbung?
-> Hier kostenlos registrieren
Zum Cosinus gehts hierlang http://www.mathematik.net/trigonometrie/tr2s3.htm :wink:

Die 315 kann den Cosinus berechnen (COS, SIN), ist also kein Problem.

Wenn ich richtig verstanden habe, wird jeder Strahl (1-53) immer im selben Winkel vom Scanner abgestrahlt, der Scanner hängt an der Decke und blickt nach unten. Damit kennst du den Winkel und die Entfernung, du kannst damit den Auftreffpunkt im Raum bestimmen. Der Auftreffpunkt hat eine A- und eine H-Entfernung zum Scanner, H für Hohe und A für Abstand zum senkrechten Lot des Scanners.
Code:
                    _____A__________
__________________________________________Decke
                   |    (       |_____|   Scanner
                   |     (   W    /
                   |      (     /   W=Winkel  
                   |       (  /    
                H  |        /      
                   |      /    
                   |    /Entfernung
                   |  /
                   |/
              ----------              
             |   S1     |

H = Entfernung * sin(W)
A = Entfernung * cos(W)

Stapelhöhe = 15m - H + Bandhöhe
Anhand der Entfernung E kannst du S1-6 bestimmen

So, das bedarf der Überprüfung, hab schon über 15 Jahre kein Mathe mehr gemacht :shock:
 
Tschuldigung, Antwort hat zu lang gedauert (Malerei :p ), Gast war ich.

Noch folgende Berichtigung:

Anhand der Entfernung A kannst du S1-6 bestimmen.

Den wahren Winkel mußt du ermitteln, es kann sein daß der 30°-Winkel des Scanners nicht 30° zwischen Decke und Strahl entspricht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
LOL, ja Mathetechnisch hätte ich das auch noch hinbekommen. Hab nur in der Hilfe absolut nix von COS gefunden. Aber durch deine Info hab ich mal tiefer gesucht und auch was gefunden *g*.
Durch deinen Ansatz hat sich jetzt alles wieder bei mir in den Geiste zurückgemeldet.
Und die Antwort war superschnell. Danke.
Jetzt funktioniert es wie ein geölter Motor *g*.
Super Unterstützung.... :D :D
 
So, ein letztes Mal muss ich noch nerven *g*.
Wenn ich cos oder sin verwende, dann bekomme ich mal nen positiven, mal einen negativen Wert raus. Hab bemerkt, das die S7 in Rad rechnet, ich aber Grad haben will *g*
Kann man das einstellen?
Hier mal ein paar Winkel. Kann man mit dem Rechner von Windows testen. Rad macht S7, Grad macht der Scanner:

75,00
72,17
69,34
66,51
63,68
60,85
58,02
55,19
52,36
49,53

usw.....
 
Winkel in Rad=3.1415...(Pi) *Winkel in Grad / 180.
Der Cosinus ist positiv von 0-90 Grad (0 - Pi/2 rad) und negativ von 90-180 Grad (Pi/2 - Pi rad).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey, danke habt mir schon sehr viel weiter geholfen :D
Doch ich hab leider noch ein Frage :oops:

Wenn ich jetzt die berechneten Werte für die Entfernung des Objektes zum Scanner habe, dann ist ja mal der Wert im Bereich X1, mal in X2 dieses Strahles.
Jetzt weiß ich ja, das die Breite der gesamten Anlage 12m ist und ich ab 6 Messbereiche. Also 12/6 ergibt ja 2 *g*
Somit habe ich alle 2 Meter einen neues Bereich X.
Kann man in der SPS so eine Art case .. of .. Anweisung in AWL erstellen?
Also wenn X.. zwischen 0-2m (X >= 0, X < 2) ist, soll der Wert Y in Pos1 eingetragen werden. Wenn X.. zwischen 2-4 (X >=2, X < 4) liegt dann Wert Y in Pos2.... etc.
Hab 54 Werte für x und y (0-53, sind also 54 und wie ich vorher schrieb 53 ;) ).
Gibt es da was?
Danke :lol:
 
"case of" gibt es nicht aber einen Sprungverteiler. Habe nur gerade vergessen, wie der genau aussieht. Abhängig von einer Variablen wird eine Sprungmarke aus einer Liste angesprungen. Die Einzelheiten kannst du der onlin-Hilfe entnehmen.

Problem:
Genau wie "case" in C oder Pascal braucht es eine ganzzahlige Variable. Die kannst du natürlich bekommen, indem du die Entfernung durch 6i teilst und rundest.
Ich würde es aber anders machen: Ich vermute, das ein Objekt das bei 1,99 oder 2,01m steht, keine normale Situation darstellt. Außerdem wirken sich Meß- Und Winkelfehler nach außen hin sicher stärker aus.
Ich würde daher individuelle Start- und Endwerte für die Bahnen oder Zonen festlegen:

if (x>Zone1Start) and (x<Zone1End) then Zone=1
else if (x>Zone2Start) and (x<Zone2End) then Zone=2
...
else Messfehler

Damit läßt sich das Programm auch leicht an bauliche Änderungen (verschieden breite Bahnen, Scanner nicht mittig, verbotene Zonen) anpassen.
 
Dazu kann man den Sprungverteiler benutzen:


Code:
// Sprungverteiler
      L     MW100 (Werte 0-53)
      SPL   ENDE
      SPA   S1                       
      SPA   S1                       
      SPA   S1                       
      SPA   S2                        
      SPA   S2                       
      SPA   S2
           .
           .
           .
      SPA   S6
      SPA   S6
      SPA   S6
      SPA   S6


ENDE: SPA   LEER


//Stapel 1
S1: SET   
      


      SPA   LEER

//Stapel 2
S2: SET   
      


      SPA   LEER

//Stapel 3
S3: SET   
      


      SPA   LEER

//Stapel 4
S4: SET   
      


      SPA   LEER

//Stapel 5
S5: SET   
      


      SPA   LEER

//Stapel 6
S6: SET   
      


      SPA   LEER

// Ende
LEER: NOP   0

oder du bildest mit Vergleichern 6 Bereiche

Code:
L MW100 (0-53)
L 6
<=I
SPB S1

TAK
L 12
<=I
SPB S2

usw.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmmmm.... Ich hab mir jetzt sowas ausgedacht:
Ich hab ne Schleife (LOOP) in der ich die Werte von der Entfernung überprüfe. Ist er in dem einen Bereich, soll er dorthin springen ist er im anderen, soll er dorthin springen.
Die Abfrag läuft so wie Ralle es genannt hat:

Code:
L MW100 (0-53) 
L 6 
<=I 
SPB S1 

TAK 
L 12 
<=I 
SPB S2

Jedoch stehen die errechneten Werte im DB ab Pos 100 und Pos 200.
Wie kann ich jetzt auf die Werte Schleifentypisch zugreifen?
Das hier macht er nicht:
Code:
      L     0
      T     #Mess1
      T     #Mess2
      T     #Mess3
      T     #Mess4
      T     #Mess5
      T     #Mess6
      L     100
      T     #DB_POS
      L     26
N1:   T     #SCHLEIFE
      L     "AASA_DB_SE".STAT0[#DB_POS]
      L     2000
      <=I   
      SPB   S1

      TAK   
      L     4000
      <=I   
      SPB   S2

      TAK   
      L     6000
      <=I   
      SPB   S3

      TAK   
      L     8000
      <=I   
      SPB   S4

      TAK   
      L     10000
      <=I   
      SPB   S5

      TAK   
      L     12000
      <=I   
      SPB   S6

      L     #DB_POS
      L     1
      +I    
      T     #DB_POS

 SP1:....
 SP2:....
 SP3:....
 SP4:....
 SP5:....
 SP6:....

      LOOP  N1

Der Eintrag "L "AASA_DB_SE".STAT0[#DB_POS]" wird leider rot dargestellt..... :oops:
 
So Leute.
Danke für eure Hilfe. Habt mir sehr geholfen. Hab das Ding am Freitag fertig bekommen und konnte es am Montag dem Kunde geben *g*.
Vielen Dank nochmal.

Ich hab mich aber jetzt mal noch hingesetzt und das ganze dann ohne Stress so programmiert, das man sogut wie jede Scannereinstellung machen kann. Der Baustein ist somit parametrierbar.
Das Problem nun ist, da nun alles berechnet wird, braucht die SPS beim Start eines Scans bis zu 80 ms *g*....

Danke :lol:
 
Zurück
Oben