Profibus, Signal prellt

1985zottel

Level-1
Beiträge
90
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Ich habe folgendes Problem:
Steuerung 1 gibt ein Taktsignal über Profibus an Steuerung 2.
Zählung in Steuerung 2 weicht erheblich von 1 ab bzw. In Steuerung 2 wird gezählt, obwohl das Taktbit in Steuerung 1 dauerhaft auf True steht.

Es muss definitiv an der Verbindung liegen. Überlappende Speicherbereich alle kontrolliert.
Sieht so aus als würde das Signal kurz wegbrechen, beim beobachten nicht zu sehen (PE immer auf 1)

Natürlich könnte ich direkt in Steuerung 1 zählen und dann Zählerstand übertragen, nur leider habe ich kein Ausgangswort mehr frei auf dem DP/DP Koppler, und kann die Anlage nicht anhalten um
den Koppler in der Hardwarekonfig zu erweitern.

Hoffe ihr könnt mir helfen heraus zu finden wo dieses flackern her kommt.

Danke
 
Hast Du noch ein Signal in die Andere Richtung frei?

Du könntest dann folgendes Machen:

M1 setzt das Signal, M2 spiegelt es.
Wenn es zurückgespiegelt wird setzt M1 zurück, Spiegel geht weg.

Damit hast Du mal einen Handshake.

Wenn Du noch je ein weiteres Signal frei hast, könntest Du diese
genau invertiert nutzen. Ist nun Signal 1 TRUE und Signal 2 FALSE -> Ein Takt
sind beide False -> keine Unterbrechung, ist Signal 1 FALSE und Signal 2 TRUE -> False-Signal.

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gehen alle Datenpunkte gleichzeitig kurzzeitig auf 0? Hast Du Diagnosepuffereinträge in der CPU von Steuerung 2 (Stationsausfälle, Peripheriezugriffsfehler, ...)? Wenn da keine Profibus-Probleme verzeichnet sind, dann liegt es nicht an der Verbindung, dann wird das Bit im Anwenderprogramm von Steuerung 1 oder Steuerung 2 verändert. Oder das Bit ändert sich gar nicht doch Deine Zählroutine funktioniert falsch? (Wie sieht der Code aus?)

Du hast nicht zufällig am DP/DP-Koppler DIA aktiviert und Dein Bit ist das Bit 0 im ersten Eingangsbyte?

Harald
 
Zuletzt bearbeitet:
Danke für die Tipps.

Ich hab es jetzt den Fehler gefunden, allerdings verstehe ich ihn nicht.

Vorher sah der Code folgendermaßen aus:

NW1
U E24.3
= M105.0
U E24.4
= M105.1
U E24.5
= M105.2
L MW104
T PAW 254

Jetzt habe ich jede Zuweisung in ein eigenes Netzwerk geschrieben, seitdem funktioniert es.

NW1
U E24.3
= M105.0
NW2
U E24.4
= M105.1
NW3
U E24.5
= M105.2
NW4
L MW104
T PAW 254

Kann mir einer Erklären woran das liegt?
 
Dafür gibt es keinen mir bekannten Grund. Netzwerke haben eigentlich nichts mit dem Code in der SPS selbst zu tun. Beide Versionen sollten funktionieren. Sehr eigenartig. Waren die Bausteine vorher sicher on- und offline identisch?
 
Betrifft es das erste Bit E24.3/M105.0?
Was für Code steht vor dem "U E24.3"?

Der Klassiker: in dem Netzwerk vor dem Code wird die Zuweisung auskommentiert --> dann sieht man, daß Verknüpfungen nicht an Netzwerkgrenzen halt machen. :cool:

Versuche mal:
Code:
//NW1

CLR         // SET geht auch

U E24.3
= M105.0
U E24.4
= M105.1
U E24.5
= M105.2
L MW104
T PAW 254
Ich habe eine 314C (6CG03) da funktioniert an einer Programmstelle die VKE-Abgrenzung nicht (vermutlich ein Firmware-Problem). Mit dem zusätzlichen CLR funzt es.


Bist Du sicher, daß MW104 und die Teilbits M104.0-M105.7 nicht noch woanders benutzt werden? Womöglich in einer anderen OB-Ebene (z.B. OB3x, OB40)? Dein Code benutzt das uralte und unschöne S5-Prinzip von Schmiermerkern, was Fehler-anfällig bei Benutzung in verschiedenen OB-Ebenen ist. Besser baue das Word in einer Bitstruktur in TEMP zusammen:
Code:
VAR_TEMP
  TempWord : STRUCT 	
   Bit_08 : BOOL ;	
   Bit_09 : BOOL ;	
   Bit_10 : BOOL ;	
   Bit_11 : BOOL ;	
   Bit_12 : BOOL ;	
   Bit_13 : BOOL ;	
   Bit_14 : BOOL ;	
   Bit_15 : BOOL ;	
   Bit_00 : BOOL ;	
   Bit_01 : BOOL ;	
   Bit_02 : BOOL ;	
   Bit_03 : BOOL ;	
   Bit_04 : BOOL ;	
   Bit_05 : BOOL ;	
   Bit_06 : BOOL ;	
   Bit_07 : BOOL ;	
  END_STRUCT ;	
END_VAR

   LAR1 P##TempWord    //Anfangsadresse der Struktur in AR1 laden
   L 0
   T LW [AR1,P#0.0]    //alle 16 Bits der Struktur auf 0 initialisieren

   U E24.3
   = #TempWord.Bit_00
   U E24.4
   = #TempWord.Bit_01
   U E24.5
   = #TempWord.Bit_02

   L LW [AR1,P#0.0]    //alle 16 Bits der Struktur als WORD lesen
   T PAW 254
Zusammensetzen von 16 Bool zu Word gibt es auch als fertigen FC

Harald
 
Zurück
Oben