Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: CM1241 Empfangsprobleme mit Endzeichen

  1. #1
    Registriert seit
    09.11.2012
    Ort
    Hamburg
    Beiträge
    15
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ich krieg momentan einen Fehler nicht beseitigt und dachte mir ich poste mal hier, vielleicht hat jemand schon ein ähnliches Problem gehabt:

    Mein Setup:
    S7-1200 (FW 3.0.2) mit CM1241 RS422/485 (FW 1.1.0) verbunden mit Nanotec SMCI174-S-2.


    Ich schreibe ein Befehl auf den Bus und die Nanotec Steuerung antwortet auch darauf.


    Nun passiert aber folgendes:
    Beim ersten Auslesen mit RCV_PTP bekomme ich keine Daten in mein Char Array.
    Im zweiten Aufruf bekomme ich 4 Char zu viel, danach sind die Nachrichten von der Länge richtig, aber immer um 4 Char verschoben.


    Die Konfiguration des CM1241 hat als Nachrichtenende 0x0D, also $R.


    Empfangen sollte ich und ist auch physikalisch auf dem Bus:
    0x 30 30 31 24 31 36 31 0D

    Beim ersten Auslesen steht im Array:
    0x 30 30 31 24 31 36 31 0D 30 30 31 24


    In meinem Array liegt immer:
    0x 31 36 31 0D 30 30 31 24


    Ich habe mittlerweile versucht den Buffer mit RCV_RST zu löschen, aber dann fängt er mit dem Problem nur wieder von vorne an.

    Ich habe das Endzeichen auf irgendeinen Wert in der Mitte der Nachricht gelegt, danach kamen ab dem neuen Endzeichen 4 Byte zuviel.

    Das einzige, was funktioniert hat, ist das Abschalten der Endzeichenerkennung und das Erkennen des Nachritenendes durch Timeout.
    Ich würde aber lieber aufs Endzeichen gehen aus Timing Gründen.

    Hat jemand noch ne gute Idee oder muss ich einfach auf das Timeout gehen?

    Danke
    Zitieren Zitieren CM1241 Empfangsprobleme mit Endzeichen  

  2. #2
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Sind die Telegramme immer gleich lang? Wenn ja, kannst auch eine bestimmte Telegrammlänge (z.B. 9 Byte) als End-Bedingung angeben.
    Das hab ich an einem kleinem BUS-System (mit dem CB1241) so am laufen und es funktioniert.
    Im Vergleich zum Timeout hast du auch eine schnelle Reaktion.


    Gruß,

    Ottmar

  3. #3
    HarryHirn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.11.2012
    Ort
    Hamburg
    Beiträge
    15
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    hi

    leider sind die nachrichten von der länge her variabel :/

  4. #4
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Hm, okay...

    Ist der BUS richtig terminiert? Also ca. 150 Ohm am ersten und letzten Teilnehmer?
    Beim CB1241 kann man Brücken auf RB und RA machen, damit ist dann der Abschlusswiderstand für die CPU erledigt.
    Wie das beim CM1241 ist weiß ich leider nicht, hier musst du ggf. nachsehen.

    Kann es sein, dass dein Empfangspuffer teilweise von deinem eigenen Programm überschrieben wird?
    Gibt es noch andere Teilnehmer im BUS, oder sind die beiden Geräte die einzigen?
    Du sagst du hast die Zeichen "physikalisch" auf dem BUS - hast du den Diagnoseadapter mal weggenommen und dann getestet?


    Gruß,

    Ottmar

  5. #5
    HarryHirn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.11.2012
    Ort
    Hamburg
    Beiträge
    15
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Also ich hab in keiner Verdrahtungsanleitung was von Widerständen gelesen.
    Ist ja eigentlich auch nur Punkt zu Punkt.
    Aber ich schlag das noch mal nach.
    Wenn ich aber die richtigen Zeichen im Puffer habe, dann kann das ja nicht so verkehrt sein, richtig?

    Ich habe ein Scope dran, mit dem ich die Leitungen angezapft habe...
    Mein Programm ist auch minimal und auf den Puffer greift nur das RCV_PTP zu.

    Ich hab das Scope erst drangehängt als ich so komische Probleme hatte, aber abnehmen kann man ja mal

  6. #6
    Registriert seit
    06.07.2006
    Beiträge
    101
    Danke
    6
    Erhielt 13 Danke für 13 Beiträge

    Standard

    Hi

    was hast du am RCV_PtP als Empfangspuffer angegeben?
    ich musste bei mir eine absolutadresse angeben danach funktionierte das ganze
    siehe:
    http://support.automation.siemens.co...ard&viewreg=WW
    Gruss Chris

  7. #7
    HarryHirn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.11.2012
    Ort
    Hamburg
    Beiträge
    15
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Moin Moin,

    ich habe ein Array of Char angegeben, weil in der Hilfe ja auch explizit steht dass man kein String benutzen soll.
    Eben wegen der String Mismatch Geschichte...
    Und dann sehe ich ja jedes Byte, was da reingeschrieben wird.

    Ich weiß allerdings nicht wirklich wie man da die Absolutadresse angeben kann.

    Achja, ich arbeite in SCL...

  8. #8
    Registriert seit
    06.07.2006
    Beiträge
    101
    Danke
    6
    Erhielt 13 Danke für 13 Beiträge

    Standard

    Hi
    Absolut Adrsse steht in dem Link von meinem letzten Beitrag
    Global-DB erstellen mit Empfangspuffer zb Empfang der erhält dann einen Offset zb 0.0
    danach %DBxx.DBX2.0 BYTE xx
    gruss chris

  9. #9
    HarryHirn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.11.2012
    Ort
    Hamburg
    Beiträge
    15
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    So, ich habe es mit einem sehr engagierten Mitarbeiter vom Siemens Support lösen können.

    Meine Routinen waren richtig, allerdings die Art und Weise wie ich die Konfiguration interpretiert habe waren nicht mit der Vorstellung von Siemens konform.

    Bei der Konfiguration des CM in TIA11 kann man "Erkenne Nachrichtenende mit einer Zeichenkette" anhaken.
    Dann kann man 5 Zeichen definieren, welche er als Nachrichtenende erkennt.
    Ich habe nur ein Zeichen und habe es in Feld 1 geschrieben.
    TIA dachte nun aber da kommen noch 4 weitere Zeichen (obwohl ich diese 4 Zeichen nicht durch ein Häkchen im Feld aktiviert habe), wodurch er noch 4 Byte gewartet hat.

    Man muss diese Felder also von hinten befüllen.
    Will man, so wie ich, nur auf ein Endzeichen warten, dann muss das in das Feld für Endzeichen 5.

    Sehr irreführend, aber nun läuft es.

    Danke euch!

  10. Folgender Benutzer sagt Danke zu HarryHirn für den nützlichen Beitrag:

    Ottmar (10.04.2013)

  11. #10
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi!

    Wäre es dir möglich mir mal deinen Programmcode zu senden?
    Ich hab nämlich auch noch ein Problem mit der Kommunikation, indem ich manchmal (sporadisch) keine Antwort vom Teilnehmer erhalte.
    Nun würde ich gerne wissen, ob ich denn das Handling der Siemens-Bausteine wirklich richtig umgesetzt habe...

    Vielen Dank!


    Gruß,

    Ottmar

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •