Kommunikation CPU 416-3 <-> MSR von Firma Pfister

romanz

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich versuche die Master-Slave Kommunikation zwischen CPU 416 und Mess-, Regel-,und Auswertungselektronik("MSR") herzustellen.
Die Punkt-zu-Punkt Verbinbung wird mit CP441-1 hergestellt.
Weil die MSR relativ weit entvernt ist, wird 20mA TTY Schnittstelle gewählt.
Telegramme (STx,Code-2Byte,Daten-6Byte,ETx) werden im ASCII-Format mit Zykluszeit 0,1s gesendet. Die MSR muss auf jede Anforderung mit Statustelegramm antworten. Wenn nach 0,5 s keine Antwort kommt, dann muss der Sendeworgang noch mal wiederholt und die Fehlermeldung (BOOL) ausgegeben werden.
Ich programmiere das mit SCL-Sprache, Für Senden und Empfanben benutze ich Standartbausteine BSEND (SFB12) und BRCV (SFB13).
Teste den Kommunikationsbaustein in CFC.
Die Telegrammen werden gesendet, aber ich bekomme keine Antwort. Ich weiß nicht mehr an was es ligt :cry:.

Was habe ich falsch gemacht ?
Hier ist mein Quellcode:
 

Anhänge

  • Kommunikationsbaustein.txt
    2,7 KB · Aufrufe: 23
Du mußt genauere angaben über deine Hardware machen MLFB (Bestellnummer)
oder das Projekt hochladen

MFG
SKg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke mal das du die gröbsten Fehlermöglichkeiten kontrolliert hast wie z.b.

Ist das korrekte Schnittstellenmodul gesteckt!
Ist die Verkabelung richtig!
Ist die Verbindung in Net Pro eingerichtet und übertragen worden!
Ist der CP441 richtig konfiguriert (Baudrate, Parität, Protokolltyp, Protokollzusammensetzung, Endzeichen keine Endzeichen,etc.

Wenn das alles stimmt (wie du es meinst) dann einfach mal den Hyper Terminal (oder auch ein anderes Terminalprogramm) drann hängen und schauen ob überhaupt etwas gesendet wird, wenn etwas gesendet wird erst dann kann man sich Gedanken darüber machen was mit dem Empfang los ist!

MFG
 
Danke für gute tips!
Meine Hardware:
CPU 416-3: 416-3XL00-0AB0
CP 443-1: 443-1EX11-0XE0
CP441-1: 441-1AA04-0AE0
Das alles habe ich schon geprüft.
Ich versuche jetzt andere Telegramm drann hängen, schauen mal was passiert.
 
Zuletzt bearbeitet:
Wenn du den ASCII Treiber verwendest mußt du schauen ob du noch ein CR/LF anhängen musst!

MFG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe schon STX/ETX und CR/LF ausprobiert, immen noch keine Antwort von MSR, an CP 441-1 Sende- und Empfangs-LEDs blinken.:confused:
Vielleich im Quellcode habe ich BRCV und BSEND nicht in richtiger Reihenfolge aufgerufen ?
Wahrscheinlich kann man geschickter diese SFB,s benutzen ?
 
Zuletzt bearbeitet:
Also wenn die empfangs LED flackert bekommst du daten das ist ein gutes zeichen, dann kann nurnoch etwas mit deiner auswertung falsch sein!


IDB_RECEIVE(EN_R :=R_EN_R
,ID := ID
,R_ID := RID
,RD_1 := "Empfangsfach".DATEN <<<< wo ist denn dieses Fach deklariert?
, LEN:=R_LEN
);
R_NDR := IDB_RECEIVE.NDR; // OUT: BOOL
R_ERROR := IDB_RECEIVE.ERROR; // OUT: BOOL
R_STATUS := IDB_RECEIVE.STATUS; // OUT: WORD

Zu deiner Verbindung in NET PRO wüste ich auch gerne wie du die Verbindungen konfiguriert hast besonders wichtig ist mir der Teil mit der Kommunikationsrichtung! siehe Bild im Anhang


Wenn du eine Verbiundung für beide Richtungen verwendest dann Versuch es mal mit mit 2 getrennten Verbindungen, eine zum senden und eine zum empfangen! ABER NICHT DIE KUMUNIKATIONSRICHTUNG VERGESSEN!!!!!

Vieleicht könntest du mal dein Step7 Projekt hochladen!


MFG
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    49,9 KB · Aufrufe: 14
Vielen Dank für Ihrer Antwort!

Wie mein Datenbank deklariert siehe im Anhang, da ist auch dazugehöriger Datentyp.
Ich verwende eine Verbindung für beide Richtungen. Ich werde jetzt es mit zwei getrennten Verbindungen versuchen.

Ich weiß auch nicht genau, ob ich den Protokoll richtig konfiguriert habe ?(siehe Anhang)

Mein Projekt ist zu groß, wahrscheinlich klappt es so, wie wir jetzt machen.
 

Anhänge

  • Empfangsfach.txt
    745 Bytes · Aufrufe: 9
  • Aufzeichnen.JPG
    Aufzeichnen.JPG
    56 KB · Aufrufe: 14
Zuviel Werbung?
-> Hier kostenlos registrieren
1. Bitte einmal die "Enderkennung eines Empfangstelegramms" auf "Nach ablauf der Zeichenverzugszeit" einstellen!

2. Die Datenzusammenstellung in deinem "MSR_ANTW" ist völlig falsch!
Ein String, in deinem Fall zb. CODE[2] ist nicht 2 Byte groß sondern 4 Byte das ist eine eigenart der Strings dem String sind 2 Byte voran gestellt, das 1.Byte beschreibt die gesamte größe des Strings und das 2. Byte beschreibt die tatsächliche länge des Strings!
Des weiteren mußt du damit rechnen das die MSR ihr telegramm zusätzlich mit CR/LF abschließt!

Dein Empfangsfach:

TYPE "MSR_ANTW"
STRUCT
STX : CHAR; // Startzeichen
CODE : STRING[2];
DATEN:STRING[6];
ETX :CHAR; // Endezeichen
END_STRUCT
END_TYPE


Mein Vorschlag:

TYPE "MSR_ANTW"
STRUCT
STX : CHAR; // Startzeichen
CODE1 : CHAR;
CODE2 : CHAR;
DATEN1 : CHAR;
DATEN1 : CHAR;
DATEN2 : CHAR;
DATEN3 : CHAR;
DATEN4 : CHAR;
DATEN5 : CHAR;
DATEN6 : CHAR;
ETX :CHAR; // Endezeichen
CR : CHAR;
LF : CHAR;
END_STRUCT
END_TYPE

MFG
 
Wo ist die Definition von Telegramm_2 ich vermute mal das du da auchnoch Strings drin stehen hast die Mußt du dann auchnoch korrigieren und die Länge der Sendedaten korrigieren!

Des weiteren wüsste ich gerne wie ein Sendetelegramm laut hersteller aussehen soll!

MFG
 
Danke für ihren Vorschlag !!!

An der MSR kann man einstellen: CR/LF oder STx/ETx und Protokol auch.
Ich habe Telegramm_2 auch dementsprechend geändert.
Es lag an MSR, die ist kaputt. Ich habe mit der anderen MSR ausprobiert, geht!!!!! Ich bekommen genau richtige Telegrammen, was ich erwartet habe.
Jetzt werde ich versuchen Kommandos und die Auswertung der Antwort dynamisch zu machen. Hoffentlich werde ich keine große Schwierigkeiten damit haben.
Vielen Dank für ihre Hilfe !!!!!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ja die Strings, da stolpert man immer wieder drüber Jetzt kann das Protokoll verfeinert werden (ob Endzeichen gesendet bzw. empfangen werden sollen).

Noch viel Erfolg
SKg
 
Zurück
Oben