CPU315 + CP340 + Leuze Laserscanner. Jemand nen Plan?

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
Zuviel Werbung?
->Hier kostenlos registrieren
Hiho.

Muss bis Mittwoch nen Leuze Laserscanner rotoScan ROD-4 in
der SPS auswerten. Und zwar soll er die Entfernung zu einem Opjekt messen, das in 6 verschiedene Bereiche sich befinden kann.
Der Scanner ist fest montiert. Die Bereiche auch. In den 6 Bereichen kommen immer unterschiedlich hohe Gütter an und die SPS soll dann anhand der Größe der Güter den weitern Weg schalten.
Nun brauche ich die Auswertung des Signals vom Scanner in welchem Breich sich ein Objekt befindet und wie hoch es ist (Angabe in cm).
Als SPS hab ich eine CPU315-2 DP und der Scanner hängt an einem CP340 RS232C. Ansonst ist keine Hardware im Moment dran.
Weiß da jemand nen Tipp, wie ich den Scanner dazu bringe mir Daten an die SPS zu schicken oder wie ich die Daten vom CP in der SPS auswerten kann?
Danke
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.401
Punkte Reaktionen
3.373
Hallo Krumnix,

ich hab mir das gerade angesehen und denke daß du Probleme damit haben wirst.

Wenn ich Alles richtig gelesen habe ist das ein Flächenscanner, d.h eine Höhe kann der nicht ermitteln. (Doku unter www.leuze.de)

Die Schnittstelle X2 (Serielle SS) ist lt. Leuze nicht für den Sicherheitsbetrieb (es ist ja ein Sicherheitsgerät) vorgesehen, man darf nichts dranstecken außer zum Einrichten.
Selbst wenn, muß man ersteinmal wissen, welche Daten das Gerät liefert, das kann man höchsens von Leuze bekommen und ist sicher sehr umfangreich, da man am PC das ganze Scanfeld angezeigt bekommt. (190° in 0,36°-Schritten)
Also solltest du dich am Besten mit den Programmierern von Leuze in Verbindung setzen.

Bis Mittwoch ist es sicher nicht zu schaffen, selbst wenn das Gerät kann, was du dir davon erhoffst.

Ich hätte dir gerne positivere Auskünfte gegeben.
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
Zuviel Werbung?
->Hier kostenlos registrieren
Hmmmm, sowas hab ich mir schon fast gedacht. Aber das Gerät hängt an der Decke und bekommt von der SPS ein Signal, das es scannen soll. Also aktiviere ich damit dann den Baustein, der dem Scanner einen Scann abfragt. Da die Objekte, die weitergeleitet werden durch einen Stopper an einer definierten Stelle stehn bleiben und ich von oben scanne müsste der Scanner mir ja die Entfernung zu dem Objekt liefern?!
Ich hab hier nen Script mit nen Haufen Seiten, die das Sende und Empfangsprotokoll des Scanners erklären. Aber für mich ist das Neuland ein Protokoll schreiben zu müssen.
Ich weiß halt auch nicht, wie ich über den CP340 in der SPS so ein Protokoll erstellen kann.
Die Beschreibung des Protkolls liegt mir in der Version 1.5 vor und die Datei nennt sich rs4_protocol_nsk.pdf . Leider hab ich sie nur als gedrucke Version. Ansonst hätte ich sie als Link hier reingestellt.
Aber schonmal Danke für die ersten Infos. Muss jetzt nur schauen, wie mein Chef dann am Montag darauf reagiert, wenn ich ihm sage, das Mittwoch nicht zu halten ist *g*
 

Limbo

Well-known member
Beiträge
154
Punkte Reaktionen
0
Wenn nur die Entfernung gemessen, und in "Fenster" klassifiziert werden soll. würde ich mit einem Sonar-BERO arbeiten.
Von Siemens gibt es Sonar-Beros mit separaten, einstellbaren Ansprechbereichen. Die Einstellung erfolgt über einen merhrstelligen (2/4) BCD-Codierschalter.

Mit viel Zeit und Hilfe von Siemens bekäme man da wohl mit einem System hin. Aber auf die Schnelle mußt Du wenigstens für jeden Bereich ein Auswertegerät nehmen, und den Sensor mit Relais mit Goldkontakten umschalten.

Vielleicht kannst Du Dir ja vorübergehend mit Lichtschranken helfen, bis Du die richtige Meßmethode betriebsbereit hast.

Limbo
 
A

Anonymous

Guest
Dobre Vecer!
Probier es mit Schutzfeld- bzw. Warnfeld-Umschaltung;
bei diesem Gerät kannst Du mehrere Schutzfelder projektieren, die dann einen Ausgang aktivieren, wenn das Feld "betätigt" wird.
Die Schutzfelder sind mit dem entsprechenden Ausgang anzusteuern.
Als "Eingang" vom RS4 kommt Warnfeld verletzt! - somit kannst Du unterscheiden, wo sich was befindet;
 

smoe

Well-known member
Beiträge
334
Punkte Reaktionen
10
Zuviel Werbung?
->Hier kostenlos registrieren
Warum ein teures Sicherheitsgerät verwenden wenn es nicht um die Sicherheit geht?
Um die Objekthöhe zu ermitteln reicht auch ein Entfernungsmessgerät (Ultraschall oder Laser) mit analogen Ausgang. Eingelesenen mit eingestellten Werten in der SPS vergleichen -> fertig.
Noch einfacher und u.U. billiger aber unflexibler sind dann noch Lichtschranken für jede Höhe.

smoe
 
A

Anonymous

Guest
Das ist mir schon alles klar, das es mit anderen Komponenten viel einfacher und günstiger funktioniert. Aber die beauftragende Firma will halt diese Komponenten und solange sie dafür bezahlt ist es ja auch gut.
Nur wenns dann im Endeffekt so schwer wird, muss man mit denen wohl neu verhandeln. Aber da sehe ich keine guten Karten dafür.... :roll:
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.401
Punkte Reaktionen
3.373
Zuviel Werbung?
->Hier kostenlos registrieren
Wenn es nur darum geht, zu ermitteln, ob ein Objekt in einem bestimmten Bereich ist, oder ob eine bestimmte Höhe überschritten wird könnte das Schutz- und Warnfeld ausreichen (@Jonny_be). Du hat 4 umschaltbare Bereiche jeweils mit einem Schutz- und einem Warnfeld. Damit kannst du 8 unterschiedliche "Fälle selektieren", mehr wird nicht gehen.
Die PDF als Link wäre schon eine Hilfe, mal nachsehen, was das Gerät anbietet.

Schau mal das an,

http://www.pro-4-pro.com/media/downloads/product/8331171_1_ppi03.pdf

Mit einem Scanner wirst du nicht auskommen, da er nur eine Fläche abscannen kann, das wird aus der Werbe-PDF deutlich.
Für den Rest (Software) bieten die doch Ihre Hilfe an, da sollte man vieleicht eine Beispiel-Applikation mit Datenübergabe vom Scanner bekommen.
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
Das PDF hab ich leider nur als ausgedruckte Version hier liegen....
Hab auf der Seite geschaut, ob die es dort irgendwo anbieten, aber leider nix gefunden.
Der von Leuze meinte auch, das es eine Auswertung in der SPS noch nicht gegeben hat und ich der erste wäre, der das machen würde.
Naja, dann muss ich entweder das Rad neu erfinden bezüglich des Protocols zur Komunication mit dem Leuze oder das ganze irgendwie auf einen PC hauen. Weil die Auswertung über PC mit allem, was ich da machen will, gibt es schon.
Weiß einer, wie ich Daten in die SPS bekomme, wenn ich das ganze über einen PC realisieren will, also in "Echtzeit" über MPI oder DP?
Das wäre dann aber der letzter Weg. Würd mich mehr freuen, wenn ichs irgendwie so hinbekomme.... :roll:
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.401
Punkte Reaktionen
3.373
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.
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
Zuviel Werbung?
->Hier kostenlos registrieren
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? :cry:
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.401
Punkte Reaktionen
3.373
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)
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
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?
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
Zuviel Werbung?
->Hier kostenlos registrieren
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* 8) :?
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.401
Punkte Reaktionen
3.373
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 ?
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
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.
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
Zuviel Werbung?
->Hier kostenlos registrieren
Jippie, es funktioniert. Ich bekomme die Daten in die SPS :lol: :lol: :lol:
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 :oops:
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
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.401
Punkte Reaktionen
3.373
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 :oops: .
 
OP
K

Krumnix

Well-known member
Beiträge
1.376
Punkte Reaktionen
175
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ß
 
Oben