Umsetzung RS232 auf Profibus Step7

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo uns sorry, das ich mich 2 Wochen nicht gemeldet habe...

Wir haben soweit alles hinbekommen. Sprich können alles hochladen und wenn wir scannen leuchtet auch die RXD Lampe an der CP340. Nur in der DB20 kommt nichts an?!

Nun steht im Handbuch:
Code:
Senden
PEW 0: Schalten Sie nun an Ihrer "Eingangs SM323" die Bits 0.1 (Freigabe FC11 und
FC12), 0.6 (REQ für P_SEND) und 1.1 (Auswahl des Sendeauftrags von 10 Byte Länge) auf
"ON".
Der CP340 wird daraufhin ein Telegramm von 10 Byte Länge über die serielle Schnittstelle
senden (LED "TxD" blinkt). Um das Senden zu wiederholen, müssen Sie das Bit 0.6 (REQ
für P_SEND) zunächst auf "OFF" und dann wieder auf "ON" schalten.
Wir brauchen ja kein senden - muss das denn ausgeschaltet oder sogar gelöscht werden, damit es nicht zu Fehlern kommt?

Code:
Empfangen
Wenn Sie von Ihrem Kommunikationspartner aus Daten senden, werden diese ggf. vom
CP340 im DB20 empfangen. Die Zielangabe wird im FC12 bei den Labeln "A0:" bzw. "A1:"
erzeugt.
PEW0: Schalten Sie dazu an Ihrer "Eingangs SM323" die Bits 0.1 (Freigabe FC11 und
FC12), 0.7 (EN_R für P_RCV) und 1.2 (Auswahl des Zieloffsets "2" im DB20) auf "ON". Der
CP340 wird daraufhin über die serielle Schnittstelle Daten empfangen (LED "RxD" blinkt).
Wir haben jetzt das Problem, dass die nur Bausteine mit 4 Eingangen/Ausgängen haben. Im OB1 steht ja :

Code:
L     PEW    0                    // Copy inputs to the process image inputs
 T     MW     0

 CALL  "ORG_ZYK"                   // Cyclic operation of the CP340

 L     MW     8                    // Copy process image outputs to the outputs
 T     PAW    4
 BE
Und so dachten wir, wir schreiben die Werte einfach direkt ins MW0. Und genau da habe ich noch einmal Fragen.

Wir brauchen ja kein senden - muss das denn ausgeschaltet oder sogar gelöscht werden, damit es nicht zu Fehlern kommt?

Wenn ich es richtig verstehe ist ist ein WORD = 16 Bit, oder? Was genau ist denn PEW0? E0.0 bis E1.7? Und wenn ich eine Zahl in das MW0 schreiben will, wie sind dann die Wertigkeiten? 2^15...,2^1,2^1,2^0 - also E1.7,..., E0.2, E0.1, E0.0?

mfg
 
Irgendwie hab ich den Eindruck, daß du nicht genau weißt, wie du die Bausteine der CP340 einsetzen mußt.

Ich häng dir mal ein Beispiel als AWL-Quelle an. Diese kannst du importieren und übersetzen, dann wirst du einen FB100 und einen DB100 erhalten. Folgernder Aufruf kann dann in den OB1 oder einen FC eingefügt werden:

Code:
      CALL  "FB Scanner" , DB10
       Enable       :="Empfang_Ein"
       Start        :=M101.0
       Reset        :="Reset"
       LADDR        :=256
       String_DB_No :=100
       String_DBB_No:=0
       Error        :="Error"
       Len          :=MW102
Sobald du Enable auf True stellst, empfängt der FC Daten von der CP340. Diese legt er im DB100 ab DBB0 ab. Start war bei mit der Triggerstart für den Scanner. Damit habe ich gleichzeitig in dem DB100 den String gelöscht. Ansonsten, ohne den Startmerker, wird der String einfach überschrieben.

Im CP340 hatte ich die Parameter bei ASCII auf "Nach Ablauf der Zeichenverzugszeit" und diese auf 4ms gestellt. Damit lief das Ganze eigentlich.

PS: Der FB ist nur zu Testzwecken entstanden, kann durchaus auch sein, daß ich ein Siemens-Beispiel adaptiert hatte, das weiß ich nicht mehr so genau.
 

Anhänge

  • FB100_Scanner.zip
    900 Bytes · Aufrufe: 35
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke,

ja du hast recht, es fehlt einiges an Wissen. Wir haben gerade mal die Grundlagen durch, und das auch "nur" mit der Software von ABB. Ich fühle mich z.Z. etwas verloren in den unendlichen Weiten von Siemens. Aber na gut - da muss ich durch.

Brauch ich bei deinen Beispiel die Baussteine von Siemens zusätzlich? Hab da ja einen Haufen aus einem Beispielprogramm, mit den ich mich z.Z. rumschlage.

Ok, importieren heißt wohl Einfügen -> Externe Quelle... , oder.

mfg
 
Ja, einfügen, externe Quelle, dann übersetzen. Wenn es nicht FB100 und DB100 werden soll, dann in der Quelle entsprechend nach Wunsch ändern. Du brauchst den FB2 (P_RCV), der im CP-Paket enthalten ist und nach der Installation des Paketes unter "Bibliotheken/CP PtP/CP 340" im Übersichten-Fenster zu finden ist.

PS: Wenn du den FB2 anwählst und dann "F1" drückst kommt auch die zugehörige Hilfe auf den Schirm.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der FB100 ist gemeint, der, welchen ich gepostet habe.

Call FB100, DB10

Der DB 10 wird dann erzeugt, das ist der InstanzDB, des FB 100, du kannst auch eine andere DB-Nummer wählen. Dieser muß auch mit in das AG übertragen werden.

Hier noch einmal ohne Symbolik:
Code:
      CALL  FB   100 , DB10
       Enable       :=M100.0
       Start        :=M101.0
       Reset        :=M100.1
       LADDR        :=256
       String_DB_No :=100
       String_DBB_No:=0
       Error        :=M100.3
       Len          :=MW102
 
Ok, habe alles so gemacht.

Ich habe Enable direkt auf True gesetzt, hoffe das ist erlaubt.
Code:
Enable       :=TRUE

Die DB 100 kann ich online nicht anschauen, wie kann ich jetzt sehen ob und welche Daten ankommen?

mfg
 
Das geht bei String nicht. Mach eine Variablentabelle auf und dort unterreinander Byte 0 ... Byte 30 (Soviel, wie du sehen mußt). Diese dann auf Zeichen stellen. Besser geht es leider nicht bei Siemens mit Strings. Byte 0 und 1 enthalten übrigens die max. und aktuelle Länge des Strings, diese auf Hex oder Dez stellen.

PS: die richtige LADDR eintragen, die in der Hardwarerkonfig für die E-Adresse vergeben ist!
 

Anhänge

  • VT_Scanner.jpg
    VT_Scanner.jpg
    416 KB · Aufrufe: 26
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Klasse und herzlichen Dank für deine/eure Mühe - es kommt was an:TOOL:

Ok, wie es aussieht klappt es er schreibt in DB100.DBB0 und in DBB100.DBB1 jeweils 14 rein. Und in DB100.DBW2 sogar die richtigen Zahlen (wenn ich auf Zeichen umstelle) die der Strichkode darstellen soll. Aber was schreibt er in die weiteren? DBB4 bis X?

mfg
 
Wenn in DBB0 und 1 eine 14 Dez steht, dann müßten in DBB2 bis DBB16 die Zeichen stehen. Wenn dort kein "normales" Zeichen (Ziffer, Buchstabe) erkennbar ist, kannst du ja mal auf Hex umstellen und den angezeigten Hex-Code dann mit einer ASCII-Tabelle im Internet vergleichen.

z.Bsp. hier: http://www.torsten-horn.de/techdocs/ascii.htm

Was genau meinst du damit?

Und in DB100.DBW2 sogar die richtigen Zahlen (wenn ich auf Zeichen umstelle) die der Strichkode darstellen soll. Aber was schreibt er in die weiteren? DBB4 bis X?

In DBW2 steht Zeichen 1 und 2 des Strings, in DBW4 sollte dann Zeichen 3 und 4 stehen usw.
 
Zurück
Oben