Step 7 CP340 - RS232 ASCII Datenübertragung CR/LF Problem

Napster

Level-2
Beiträge
56
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

bin gerade an einer Inbetriebnahme eines CP340 - RS232 ASCII Code

Wenn ich über den PC an das Gerät ein "A" sende wird automatisch das "cr" mit gesendet

Ich habe jetzt einen DB erstellt und sende ihn mit P_Send.
Comment1 char 'A'
Comment2 char 'cr'

Wenn ich die Übertragung anstoße leuchtet dann auch kurz TX/RX an der CP340 auf.

Habt ihr eine Idee was ich falsch mache? Wird einen Recive Baustein benötigt?


Gruß
Napster




Code:
// DB Struktur
Comment1    CHAR    'A'        
Ende_CR    BYTE    B#16#D        



// Bausteinaufruf
      CALL  "READ" , DB3
       REQ   :=M150.5 // Start Trigger
       R     :=M10.1
       LADDR :=256
       DB_NO :=100
       DBB_NO:=0
       LEN   :=2
       DONE  :=M10.3
       ERROR :=M10.4
       STATUS:=MW20
 
Zuletzt bearbeitet:
Wie überprüfst du dein Ergebnis? Woran machst du fest, das da ein Fehler auftritt? Hast du einen Rechner mit serieller Schnittstelle der als Empfänger dienen kann? Welchen Status bringt der Baustein?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es handelt sich um eine RS232 Platine wo man über Befehle Steuern kann. Es werden keine daten von der Platine zurück geschickt!!

Der Baustein bringt keinen Fehler.
 
Ich sende das CR Byte Codiert!

Das Senden Funktioniert jetzt soweit. Aber hat einer eine Idee warum man keine String Variable verwenden kann ?

attachment.php
 

Anhänge

  • 2015-07-23 09_43_01-KOP_AWL_FUP  - [DB10 -- SKRS232_SIMATIC 300(1)_CPU 314C-2 PN_DP].png
    2015-07-23 09_43_01-KOP_AWL_FUP - [DB10 -- SKRS232_SIMATIC 300(1)_CPU 314C-2 PN_DP].png
    4,7 KB · Aufrufe: 83
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke, du kannst eine Stringvariable im Db verwenden, mußt aber ja ohnehin an P_Send DB-Nummer, Datenbytenummer und Länge seperat angeben.
 
Die Datenlänge wird immer angepasst!

Habe gerade einen kleinen Test gemacht:
Wenn ich Typ Char "A" Sende fuinktioniert es
Wenn ich Typ String[1] Sende funktioniert es nicht!!!!!!


attachment.php
 

Anhänge

  • 2015-07-23 09_53_04-KOP_AWL_FUP  - [DB10 -- SKRS232_SIMATIC 300(1)_CPU 314C-2 PN_DP].png
    2015-07-23 09_53_04-KOP_AWL_FUP - [DB10 -- SKRS232_SIMATIC 300(1)_CPU 314C-2 PN_DP].png
    5 KB · Aufrufe: 80
Zuletzt bearbeitet:
Nein, den String mußt du dann schon selbst befüllen.
Also 'A' und dann 0Dhex in den String Comment 1. Die Länge kannst da anpassen, aber die nutzt P_Send ja nicht.
Dort schreibst du eine 2 an DBBNO und eine 2 an LEN.

Oder du verbindest beide mit Concat (IEC-Library) und nutzt dann den entstandenen String zum senden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, den String mußt du dann schon selbst befüllen.
Also 'A' und dann 0Dhex in den String Comment 1. Die Länge kannst da anpassen, aber die nutzt P_Send ja nicht.
Dort schreibst du eine 2 an DBBNO und eine 2 an LEN.

Oder du verbindest beide mit Concat (IEC-Library) und nutzt dann den entstandenen String zum senden.

Habe ich dich jetzt richtig versenden einen String verwenden und dort "A0D" Senden??
 
Wenn du intern in der SPS eine String verwenden willst, kannst du das machen, du kannst zwei Comment_1 und Comment_2 als String definieren, in deinem Fall String[1] oder auch länger (nach Bedarf) und dann bei der Initialisierung die Stings eintragen. Die tatsächliche Länge (Byte 0) wird von Step7 entsprechend eingetragen.
Dann kannst du beide miteinander Verbinden (Fit. Concat). Ergebnisstring kannst du als String[50] (Länge beliebig) definieren, wenn du Comment_1 und Comment_2 verkettest wird bei der tatsächlichen Länge von Ergebnisstring eine 2 stehen.

Du kannst diesen String aber so nciht P_Send übergeben, denn das machst du ja "zu Fuß".

Also DB-Nummer an PSsen.
Wenn Ergebnisstring ab W100 im DB steht, dann eine 102 an DBB_NO (die ersten beiden Byte sind ja max.Länge (Byte 0) und tatsächliche Länge (Byte 1)), eine 2 an LEN.
Die 2 könnstest du dir auch durch ienen indirekten Zugriff aus dem String holen, aber das muß nicht sein, wenn du die Länge kennst, kannst du sie ja direkt an LEN schreiben.
 
Zurück
Oben