TIA RS232 mit P2P Communication

Maher559

Level-2
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mitglieder,

ich muss mit einem RF Generator überRS232 Schnittstelle mit meiner S7-1500 communizieren.
dafür habe ich ein Modul "CM PtP RS232 HF" eingebaut und wie in der Anleitung richtig eingestellt.Siehe Bitte Anhang
ich habe die Anweisung send_P2P um ein Command (RF Generator: ON) gemäß den Protokol wie in der Anleitung auch. bitte Siehe Photos
Byte1 :=16#0A
Byte2:=16#42
Byte3 & Byte4:=Parameter Nummer, in meinem Fall Parameter:1001 (d.h 16#03E9)
Byte 5+6+7+8:=Parameter Value, in meinem Fall Parameter_Value:00 00 00 01 (d.h 16#1)

Die Sendung ist immer noch nicht erfolgreich, ich bekomme den Status 7000 oder 7002.

was könnte noch sein bitte?? das ist mir sehr wichtig zu erledigen.
Vielen Dank
 

Anhänge

  • Unbenannt1.PNG
    Unbenannt1.PNG
    529,3 KB · Aufrufe: 31
  • Unbenannt6.PNG
    Unbenannt6.PNG
    441,7 KB · Aufrufe: 28
  • Unbenannt5.PNG
    Unbenannt5.PNG
    445,4 KB · Aufrufe: 25
  • Unbenannt4.PNG
    Unbenannt4.PNG
    154,8 KB · Aufrufe: 24
  • Unbenannt3.PNG
    Unbenannt3.PNG
    668,7 KB · Aufrufe: 24
  • Unbenannt2.PNG
    Unbenannt2.PNG
    137,8 KB · Aufrufe: 25
Du solltest auf jeden Fall Done oder Error bekommen. Da diese beiden Bits aber nur 1 Zyklus lang True sind, mußt du diese "fangen".
Wenn Error True ist, kannst die gleichzeitig den Status ebenfalls in eine statische Variable schreiben, um die Fahlerusache diagnostzieren zu können.

Also z.Bsp.

IF #Send_PtP_Instance.Error then
#Send_Error := True;
#Error_Status := #Send_PtP_Instance.Status;
End_if;

If #Ack then
#Send_Error := False;
#Error_Status := 0;
End_if;

Das Done kannst du nutzen, um zu wissen, das alles gelaufen ist.
Ist der Request tatsächlich ein "Blinksignal"? Es braucht eine steigende Flanke, um zu Senden.
 
Du solltest auf jeden Fall Done oder Error bekommen. Da diese beiden Bits aber nur 1 Zyklus lang True sind, mußt du diese "fangen".
Wenn Error True ist, kannst die gleichzeitig den Status ebenfalls in eine statische Variable schreiben, um die Fahlerusache diagnostzieren zu können.

Also z.Bsp.

IF #Send_PtP_Instance.Error then
#Send_Error := True;
#Error_Status := #Send_PtP_Instance.Status;
End_if;

If #Ack then
#Send_Error := False;
#Error_Status := 0;
End_if;

Das Done kannst du nutzen, um zu wissen, das alles gelaufen ist.
Ist der Request tatsächlich ein "Blinksignal"? Es braucht eine steigende Flanke, um zu Senden.

ich habe auch so gemacht. gibt aber komischeweise kein Fehler.
der Status ändert sich zu 7002 ca jede 5 Sekunden.
 

Anhänge

  • Unbenannt8.PNG
    Unbenannt8.PNG
    651,8 KB · Aufrufe: 8
Zuviel Werbung?
-> Hier kostenlos registrieren
Du solltest auf jeden Fall Done oder Error bekommen. Da diese beiden Bits aber nur 1 Zyklus lang True sind, mußt du diese "fangen".
Wenn Error True ist, kannst die gleichzeitig den Status ebenfalls in eine statische Variable schreiben, um die Fahlerusache diagnostzieren zu können.

Also z.Bsp.

IF #Send_PtP_Instance.Error then
#Send_Error := True;
#Error_Status := #Send_PtP_Instance.Status;
End_if;

If #Ack then
#Send_Error := False;
#Error_Status := 0;
End_if;

Das Done kannst du nutzen, um zu wissen, das alles gelaufen ist.
Ist der Request tatsächlich ein "Blinksignal"? Es braucht eine steigende Flanke, um zu Senden.
Das Modul hat 8 Byte als Hardwareinput reserviert ab Byte 36 bis Byte 43.
hat damit was zu tun?
ich habe die Byte Online beobachtet Byte 37 läuft wie Zähler.
das habe ich gar nicht verstanden.
 

Anhänge

  • Unbenannt9.PNG
    Unbenannt9.PNG
    557,7 KB · Aufrufe: 10
  • Unbenannt10.PNG
    Unbenannt10.PNG
    733,4 KB · Aufrufe: 10
Hallo,
in der Anleitung steht wenn Länge =0 d.h wird alles übertragen werden.

ich würde trotzdem erst einmal die Länge auf die Nachrichtenlänge beschränken. So ballerst Du den Eingangspuffer des Empfängers mit 300 BByte voll. Vielleicht kommt der gar nicht damit klar.

Dann auch erst einmal die Sendefrequenz heruntersetzen, nicht gleich m2,5 mal in der Sekunde.

Schlußendlich ist das Beipiel etwas seltsam. In der Tabelle steht 0x42 = Read, im Text wird aber davon gesprochen, daß etwas geschrieben wird. Prüfe das auch noch einmal.

Gruß
 
Laut der Doku will das Gerät Modbus RTU und erwartet auch eine CRC. Im Example 4 ist leider die CRC unterschlagen. Ich würde der Einfachheit halber mal den entsprechenden FB von Siemens verwenden.
 
Zurück
Oben