Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 31

Thema: CPU315 + CP340 + Leuze Laserscanner. Jemand nen Plan?

  1. #11
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn du ja sowieso die CP340 hast, könntest du das Ergebnis des Scanners vom PC ja via RS232 zur SPS schicken (Bei wenigen Daten geht das fix und ist in VB oder Delphi schnell gemacht). Wenn es schneller gehen muß, dann entweder selbst programmieren (ProDave von Siemens, DLL von MHJ; Accon) oder einen OPC-Server verwenden. Zu diesen Themen gibt es hier diverse Threads.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  2. #12
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Hmmmm.... Ich hab das jetzt mal soweit zum Laufen, das der Scanner sich beim CP340 meldet. Aber nun steht ich vor einem Problem.
    Ich muss eine Kommando senden, das aus 16 Hex-Werten besteht.
    Die hab ich in nen DB gestellt. Jedoch der Scanner nimmt nur alle 20-30ms einen HexWert an, muss also warten, bis 30ms vergangen sind um die nächste Folge zu senden.
    Da es der Konfiguration-String ist, um den Scanner bei jedem Start der SPS oder nach Spannungsverlust für die Kommunikation fit zu machen, wollte ich das in den OB100 stellen. Aber das funktioniert irgendwie nicht.
    Zum senden nehme ich den FB3 von Siemens P_SEND, nenne dem den DB(120) und die Position (0) und die Länge (16). Aber der kann ja nicht alle 16 auf einmal versenden.
    Wie mach ich das denn nun, das der Scanner das schnallt?

  3. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Der OB100 wird nur ein einziges Mal beim Start durchlaufen.
    Im OB 100 setzt du dir nur einen INIT-Merker und resettest einen INIT_OK-Merker. Der INIT-Merker stößt dann die Initialisierung des Scanners in einem FB oder FC, der vom OB1 aufgerufen wird an.
    Wenn alle Byte gesendet sind, dann setzt du den INIT-Merker zurück und setzt den INIT_OK-Merker. Nur wenn der INIT_OK-Merker auf 1 ist startest du die normale Kommunikation mit dem Scanner, sonst Fehlermeldung und Reset INIT-Merker (evt. Neuanstoß bei Ack Fehlermeldung)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #14
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Sorry, weiß, das man sowas wissen sollte, aber wie mach ich es, das er nur alle 30ms ein Byte an Daten schickt und dann erst die nächsten Daten sendet, bis alle 16 raus sind?

  5. #15
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    So ich hab das mal so jetzt realisiert:

    NW1: 30ms für Daten senden generieren
    UN #SendeZeit
    UN T 129
    L S5T#30MS
    SE T 129

    NW2: Scanner auf Request stellen
    U #Initialisieren
    SPB M01
    UN #Initialisieren
    = #Ini_START

    UN T 129
    SPB END

    CALL "P_SEND" , DB3
    REQ :=#Ini_START
    R :=#Reset
    LADDR :=#Addr_CP340
    DB_NO :=120
    DBB_NO:=#DBB_Nummer
    LEN :=1
    DONE :=#SendenOK
    ERROR :=#SendenFEHLER
    STATUS:=#Status

    L #DBB_Nummer
    INC 1
    T #DBB_Nummer
    L #DBB_Nummer
    L 16
    ==I
    = #Initialisieren
    SPA END

    NW3: Requestanfrage an Scanner schicken
    M01: UN T 129
    ON #Start_Anfrage
    SPB END
    U #Start_Anfrage
    U #Anfrage_START
    SPB M02
    CALL "P_SEND" , DB3
    REQ :=#Start_Anfrage
    R :=#Reset
    LADDR :=#Addr_CP340
    DB_NO :=120
    DBB_NO:=#DBB_Nummer
    LEN :=1
    DONE :=#SendenOK
    ERROR :=#SendenFEHLER
    STATUS:=#Status

    L #DBB_Nummer
    INC 1
    T #DBB_Nummer
    L #DBB_Nummer
    L 24
    ==I
    = #Anfrage_START
    SPA END

    Jedoch das erste ist, das ich im NW3 ja das Anfordern eines Scans starte wobei die DBB_Nummer auf 24 erhöht werden soll. Jetzt fordere ich mehrer Male das Auslesen an. Dabei will ich den Wert von DBB_Nummer auf 16 immer setzen. Kann man sowas mit Pos.Flanke mache, also nen Wert dann laden?
    Desweitern hab ich das Problem, das der Scanner unterschiedlich lange Daten sendet. Der Empfangsbaustein von Siemens will aber wissen, wieviel Daten kommen. Das Senden der Daten vom Scanner geschied ohne Verzögerung, also direkt ohne 30ms Wartezeit. Am Anfang des DatenStrings vom Scanner bekomme ich mitgeteilt, wie groß die zu empfangenen Daten sind.
    Wie kann ich das nun so hinbekommen, das ich dann die Daten auslese um dann später zu gewährleisten, das der Baustein die Größe der letzten Daten kennt? Speichert der CP340 die Daten vom Scanner zwischen, sodas ich zuerst die Daten auslese um zu wissen, wie groß der Rest ist oder wie funktioniert das?
    Bissel Kompliziert im Moment *g*

  6. #16
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Krumnix schrieb:
    Jedoch das erste ist, das ich im NW3 ja das Anfordern eines Scans starte wobei die DBB_Nummer auf 24 erhöht werden soll. Jetzt fordere ich mehrer Male das Auslesen an. Dabei will ich den Wert von DBB_Nummer auf 16 immer setzen. Kann man sowas mit Pos.Flanke mache, also nen Wert dann laden?
    ????????????????????????????????????????????

    Trenne Initialisierung und Req-Anfrage, erst nach der Initialisierung holst du Daten,nimm eine andere Variable für DBB-Nummer beim Holen von Daten oder merk dir in einem Bit, daß die Initialisierung ok war und sperre mit diesem Bit die Neuinitialisierung.

    Der Empfangsbaustein von Siemens will aber wissen, wieviel Daten kommen
    Kennst du die Länge des längsten Datensatzes der kommt, was macht der Siemens-Baustein, wenn du die Datenlänge zu lang wählst, bringt er trotzdem die Daten ?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #17
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Eigentlich überspringe ich die Initialisieren, wenn ich sie erledigt hab.
    Danach erst starte ich ja die Request-Anfrage. Überspringe die ja ansonst immer.
    Mit dem Auslesen und definieren, das der String das Maximum sein soll, hab ich nicht getestet. Muss heute leider was anderes machen. Komme erst morgen wieder dazu. Ob das aber funktioniert, weiß ich nicht. Denke mal, das der Baustein solange wartet, bis er alle Daten hat.

  8. #18
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Jippie, es funktioniert. Ich bekomme die Daten in die SPS
    Hab einfach das Protokol der CP340 nach meinen Wünschen konzepiert und schon macht der Scanner alles was ich will *g*.
    Danke für eure Hilfe.

    Aber leider hab ich jetzt ein weiters Problem
    Da der Scanner die Werte ja im 150° Feld immer den Abstand zum Scanner mir liefert hab ich ja nur in der Mitte im Punkt 0 die Richtige Entfernung. Die anderen Messwerte sind ja Winkelmäßig mit einer Abweichung belegt. Und dann laufen die Messstrahlen ja auch noch mehrere Scannzonen durch, sodas z.B. Strahl Nummer 20 im Bereich 4 und 5 ist.
    Weiß da jemand Rat, wie ich das in einer CPU315 gelöst bekomme, das er mir immer die richtige Höhe (+-10mm) liefern kann. Muss ja mit Cosinus sicher arbeiten und dann einen x und einen y Wert errechnen, den dann in einem DB speichern und dann später unter den Werten (es kommen 36 Mess-Werte vom Scanner) die großten in den 6 Bereichen bestimmen.
    Kann mir da bitte jemand helfen? Danke

  9. #19
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Super, daß es doch ging :P ,

    Damit wir aber jetzt mal nicht soviel rumraten, mal doch am Besten mal deine Anordnung mit Bereichen, Scanner und Stapeln auf, ich komm mit der Beschreibung nicht so ganz klar .
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  10. #20
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Scanfeld mit einer Größe von 150°.
    Messwerte vom Scanner: 53 Stück auf 150° verteilt.
    Messwerte werden bei Anforderung Scannen in ein DB als INT gespeichert.
    "AASA_DB_SE".STAT0[100] - "AASA_DB_SE".STAT0[153] (DB120)

    Der Scanner hängt in 15m Höhe und liefert die Entfernung von sich zu einem Objekt. Also wenn ein Objekt 3m hoch ist, bekomme ich 12m gemeldet. Messwerte kommen in mm an. Ggf. sollte die Höhe variabel sein, wäre aber kein Problem.

    Nun habe ich 6 Bänder auf denen Objekte ich verschiedenen Höhen kommen. Diese sind nicht immer genau groß, aber wenn sie in einem Bereich liegen sollen sie zu Punkt a dann fahren oder zu Punkt b usw.
    Die Objekte schwanken zwischen 0 (also das Band selber ) und 10m Höhe.

    | 1 | 2 | 3 | 4 | 5 | 6 | Anordung der Bänder. Zwischenabstand unter 5 cm, deswegen vernachläßigbar bei der Entfernung. Scanner hängt genau zwischen 3 und 4.

    1. Problem: 15m Entfernung soll auf 0m Höhe gesetzt werden (bekomm ich noch hin)

    2. Problem: Ist auf Band 2 ein Objekt 7m hoch, so werden auch die Strahlen, die ich jetzt bei 0m fest für Band 1 gesetzt habe durch die 7m begrenzt und ich würde bei der jetztigen Denkweise auch auf Band 1 ein Objekt gemeldet bekommen. Die SPS muss also wissen, das wenn der Strahl früher abgelenkt wird, er niemals auf Band 1 sein kann.

    3. Problem: Der Scanner liefert immer die Entfernung in einem Radius um sich. Also 3m bei Nullstellung ist ok, da diese genau nach unten auf zwischen Band 3 und 4 strahlt. Aber 3,35m als Meldung von Strahl 20 z.B., der über Band 2 scant, stimmt dann ja nicht, weil er ja als Entfernung einen anderen Wert haben müsste.

    /|
    / |
    / | Entfernung 3m
    / |
    / |
    S1 S2
    Müsste also mit Cosinus was berechnen. Weiß aber leider nicht, wie ich das in der SPS machen kann.

    Hoffe, das du mit den Infos was anfangen kannst.
    Und danke für deine Hilfe.

    Gruß

Ähnliche Themen

  1. [B]Leuze RK85/4-800 usw
    Von Lars123 im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 11.09.2011, 12:26
  2. Suche Leuze MA 42 DP-k
    Von anfield24 im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 01.08.2010, 13:39
  3. 2 Sick Laserscanner 2D an SPS
    Von Björn im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 21.02.2010, 12:01
  4. Antworten: 8
    Letzter Beitrag: 25.01.2010, 20:14
  5. Siemens Laserscanner LS4
    Von Kleissler im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 30.01.2005, 10:39

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •