TIA ASCII Code senden S7-1200 mit CM1241

Steffen Wiegand

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Mahlzeit,

ich möchte einen ASCII Code an ein Graviergerät senden, habe eine CPU1214DC/DC/DC mit dem kommunikationsmodul CM1241(RS232) verbaut.
Die beiden Geräte sind mit einem gekreuztem Kabel Verbunden.
Ich habe es mit dem Baustein SEND_PTP versucht. Die Kommunikationslampe am CM Modul geht auch an nur leider wird der Code wohl nicht übertragen.
Der Code soll laut Hersteller so aussehen: <STX>Steuerung<ETX><STX>A01<SOH><STX>130916A01/S60540B<SOH><EOT>
Hat jemand eine Idee warum das nicht geht?
Danke
 

Anhänge

  • Code senden.JPG
    Code senden.JPG
    36 KB · Aufrufe: 93
Zuerstmal die üblichen Verdächtigen:
Baudrate, Parity, Stopbits, Handshake.

Du weißt daß STX,ETX,SOH Steuerzeichen sind?
Also nicht die Zeichenkette STX übertragen, sondern 02 Dezimal

Gruß
Dieter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau Dir mal die Belegung der Schnittstelle an der Graviermaschine an, kann sein das Du da kein gekreuztes Kabel brauchst. Wenn deren RS-232 Schnittstelle eine Buchse ist liegt der Verdacht nahe.
Soweit Du einen PC mit RS-232 Schnittstelle hast kannst Du ja auch erstmal testen, ob die Daten an diesem ankommen, sprich ob das CM überhaupt was sendet.
Geprüft ob die Schnittstelle am Graviergerät tatsächlich eine RS-232 und nicht eine RS-485 oder RS-422 ist hast Du vorher aber schon? Serielle Schnittstellen sind das nämlich alle.
 
Die Hardwareconfig ist richtig eingestellt, kann mir jemand zufällig mal den oben genannten Code als beispiel vorbereiten , da ich noch nie mit ASCII Codes gearbeitet habe.
Stehe da etwas auf dem Schlauch
Danke!!!
 
Wikipedia ASCII Tabelle

Code:
//Nachricht initialisieren oder Zeichen hineinspeichern:
//<STX>Steuerung<ETX><STX>A01<SOH><STX>130916A01/S60540B<SOH><EOT>
//(das sind vermutlich 28 Zeichen)

Msg : ARRAY [1..50] OF CHAR ;

Msg[1] := B#16#02 ;  // <STX>
Msg[2] := B#16#01 ;  // ?? <Steuerung> siehe Graviergerät-Dokumentation
Msg[3] := B#16#03 ;  // <ETX>
Msg[4] := B#16#02 ;  // <STX>
Msg[5] := B#16#41 ;  // 'A'
Msg[6] := B#16#30 ;  // '0'
Msg[7] := B#16#31 ;  // '1'
Msg[8] := B#16#01 ;  // <SOH>
Msg[9] := B#16#02 ;  // <STX>
Msg[10]:= B#16#31 ;  // '1'
Msg[11]:= B#16#33 ;  // '3'
Msg[12]:= B#16#30 ;  // '0'
Msg[13]:= B#16#39 ;  // '9'
Msg[14]:= B#16#31 ;  // '1'
Msg[15]:= B#16#36 ;  // '6'
Msg[16]:= B#16#41 ;  // 'A'
Msg[17]:= B#16#30 ;  // '0'
Msg[18]:= B#16#31 ;  // '1'
Msg[19]:= B#16#2F ;  // '/'
Msg[20]:= B#16#53 ;  // 'S'
Msg[21]:= B#16#36 ;  // '6'
Msg[22]:= B#16#30 ;  // '0'
Msg[23]:= B#16#35 ;  // '5'
Msg[24]:= B#16#34 ;  // '4'
Msg[25]:= B#16#30 ;  // '0'
Msg[26]:= B#16#42 ;  // 'B'
Msg[27]:= B#16#01 ;  // <SOH>
Msg[28]:= B#16#04 ;  // <EOT>
Die Nachricht (Msg) an "SEND_PTP_DB".BUFFER übergeben, "SEND_PTP_DB".LENGTH = 28

Harald
 
Die Buchstaben und Zahlen sind in meinem Beispiel schon umgewandelt bzw. im ASCII-Code eingetragen:
- das Zeichen 'A' hat den ASCII-Code 16#41 (65 dezimal)
- die Ziffer '0' hat den ASCII-Code 16#30 (48 dezimal)
- ...

STRING_VAL kann man nicht für die Erzeugung der Nachricht benutzen. Was machst Du mit der Anweisung STRING_VAL?
STRING_VAL erzeugt aus einer Zeichenkette einen numerischen Wert. Für die Nachricht braucht man eher das Gegenteil: aus einem numerischen Wert eine Zeichenkette machen.

Harald
 
Zurück
Oben