Visu kommuniziert nicht mit SPS

Zuviel Werbung?
-> Hier kostenlos registrieren
Standardprozedur bei der Inbetriebnahme von Netzwerk-Komponenten:
- Ping-Test auf beide Teilnehmer
- ggf. Kabel überprüfen
- Status-LEDs beachten
- ist die HW-Konfig auch in die Teilnehmer geladen?
- gibt es Fehler-Protokolle oder Diagnose-Einträge? Spezialdiagnose CP343-1 anschauen.

Die punkte prüfe ich noch...
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    118,5 KB · Aufrufe: 20
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt funktioniert die Ausgabe in der Visu, d.h. ich bekomme zustände angezeigt. Nur ich kann keine Eingabe machen, d.h. Buttons werden wohl nicht von VIsu in den DB4 geschrieben oder nicht von der SPS ausgelesen oder beides.

Wie erreiche ich, dass von der Visu bits in dem DB4 bearbeitet werden, und daraufhin die mein SPS Programm den DB4 ausließt?
 
Ich habe mir Live den DB4 angeschaut. Wenn ich einen Button auf der Visu drücke bleibt die entsrpechende Adresse im DB4 auf false. Also liegt hier der Fehler. in der Simulation funktioniert das Button drücken soweit.
 
Sobald die Kommunikation Visu zu SPS funktioniert, dann geht das in beiden Richtungen.

Werden die Button-Bits von der Visu im SPS-Programm überschrieben?
Stimmen die Bit-Adressen in der Visu und in der SPS überein?
Hast Du mal ein einfaches E/A-Feld projektiert und ausprobiert?
Wie sind Deine Buttons projektiert?

Ich nehme in WinCC flex fast immer Schalter, um Bits in der SPS zu setzen. Da sieht man, wenn man sie drückt und Schalter können auch mit Multiplexvariablen.
In der SPS lösche ich am Ende des OB1 alle Tastenbits von der Visu (egal ob von Schalter oder von Schaltfläche). So sind natürlich alle Tastenbits von der Visu in der SPS nur 1 OB1-Zyklus lang auf 1. So bleiben bei Kommunikationsproblemen aber garantiert keine Tastenbits gesetzt. Wenn die Schalter in der Visu sichtbar "gedrückt" bleiben, dann stimmt was nicht mit der Kommunikation zur SPS. Schalter kann man in der Visu auch wieder ausschalten, falls die SPS das Bit nicht rücksetzt.

Mal ein Beispiel:
In WinCCflex
* Tasten-Variablen
- S_Taste_1 | Bool | DB 4 DBX 0.0 | Zyklisch bei Verwendung
- S_Taste_2 | Bool | DB 4 DBX 0.1 | Zyklisch bei Verwendung
* Schalter
Allgemein > Variable: S_Taste_1
* Schaltfläche
Ereignisse > Klicken: SetzeBit S_Taste_2

In der SPS
* 32 Tastenbits in DB4: DBX0.0 S_Taste_1, DBX0.1 S_Taste_2, ..., DBX3.7 S_Taste_32
* im Programm die Tastenbits verknüpfen. Achtung! die sind nur 1 Zyklus lang 1, wie "Stromstoßschalter"
* am Ende des OB1:
Code:
L 0
T DB4.DBD 0 //alle 32 Tastenbits löschen

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Harald:
das war sein Koppelbereich mit dem er arbeitet :
Netzwerk 1:
L EB 0
T DB4.DBB 0
L EB 124
T DB4.DBB 1
L EB 125
T DB4.DBB 2
L AB 8
T DB4.DBB 3
L AB 124
T DB4.DBB 4
L AB 125
T DB4.DBB 5
L EB 126
T DB4.DBB 6
L MB 1
T DB4.DBB 7

@TE:
Wenn du z.B. mit einer Taste (oder sonst etwas) das DB4.DBB3 beschreibst (oder ein Bit davon) so wird das von der CPU sofort und immer wieder überschrieben - da kannst du machen, was du willst.
Vielleicht sooltest du deine Methodik doch noch einmal überdenken ...

Gruß
Larry
 
@ Larry Laffer

Du schreibst ich sollte meine Methodik nochmal überdenken. Wie man aus dem threath erkennen kann, finde ich von mir aus keine Lösung.

Teile dein Wissen mit mir und sag mir doch wie du es lösen würdest!

@ PN/DP

Irgendwas ist in dem Koppelbereich

Netzwerk 1:
L EB 0
T DB4.DBB 0
L EB 124
T DB4.DBB 1
L EB 125
T DB4.DBB 2
L AB 8
T DB4.DBB 3
L AB 124
T DB4.DBB 4
L AB 125
T DB4.DBB 5
L EB 126
T DB4.DBB 6
L MB 1
T DB4.DBB 7


Falsch.

Was muss ich in dem FC 1 stehen haben damit meine Kommunikation funktioniert?

Gruß.

 
Naja ... jetzt wird es philosophisch ...

Bei mir läuft das so :
Ein- und Ausgänge lese ich direkt in die Visu ein - zeige deren Zustand aber nur an.
Wenn ich etwas steuern will dann nehme ich dafür auch z.B. einen DB her. Die in dem DB angesteuerten Variablen (ob nun Bits oder Sollwerte) schreibe ich dann im SPS-Programm an die benötigten Stellen.
Ein Steuerbit könnte z.B. (stark vereinfacht) die Funktion "Motor_Ein" haben und ein anderes die Funktion "Motor_Aus". Nun würde "Motor_Ein" den Ausgang setzen und "Motor_Aus" in wieder rücksetzen - wohlgemerkt : im SPS-Programm - nicht in der Visu ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, bin aber jetzt nicht unbedingt schlauer.

Ich muss mich wirlklich ganz blöd stellen:

Ich habe ein SPS programm mit dem der eingang 126.0 eine schrittkette gestartet wird.

Diesen eingang habe ich mit

L EB 126
T DB4.DBB6

im FC1

geladen

Nun habe ich im DB 4 DBX6.0 mein mein E126.0

wenn ich jetzt einen Button in der Visu den DB4 DBX6.0 auf 1 lade, und danach den DB4 live anschaue bleibt dieser DBX6.0 aber auf FALSE.

ALSO weiß ich jetzt, das ich irgendwas FALSCH gemacht habe. Ich denke mir das ich im FC1 irgendwas falsch gemacht habe.

Wie mach ich das denn jetzt nun (über meinen DB4) das es funktioniert`?
 
@Harald:
das war sein Koppelbereich mit dem er arbeitet :
OK, meine Anleitung sollte nur ein Beispiel für die Tastenprojektierung sein. Ich hätte andere Adressen als Beispiel wählen sollen.
Ich bin davon ausgegangen, daß Sepp1301 in seinem Projekt für die Buttons sowieso andere Adressen benutzt (die er uns aber nicht mitgeteilt hat), weil:
in der Simulation funktioniert das Button drücken soweit.
War das eine WinCCflex-Simulation mit dem Variablen-Simulator? Der Variablen-Simulator verhält sich nicht wie eine echte SPS!
Ich bin davon ausgegangen, daß es eine Simulation der Flex-Runtime mit PLCSIM ist, weil ich das immer so mache.
Wie man wieder mal sieht, ist es äußerst hilfreich, wenn der Fragesteller von sich aus möglichst viele genaue Informationen und möglichst auch Programmcode hergibt.
Das Problem mit dem falsch eingestellten CPU-Steckplatz hätte auch gleich am ersten Tag des Threads geklärt werden können, hätte Sepp1301 den Screenshot von der Verbindungsprojektierung gleich angehängt.

Also etwas weiter ausholen:
Die SPS und die Visu dürfen nicht in die selben Variablen (Adressen) schreiben, sonst "gewinnt" dann immer die SPS.
Für alle Variablen von/zur Visu erstelle ich mehrere DB, z.B.
* DB100 wo nur die Visu reinschreibt (Tasten-Bits)(OK, der OB1 überschreibt die Tasten-Bits am Ende mit 0)
* DB101 mit allen Visu-Anzeigewerten, in den die SPS Kopien interner Variablen für die Visu reinschreibt
* DB102 für Einstellwerte/Sollwerte die die Visu anzeigt und nur bei Änderung (Eingabe) reinschreibt
* ...
Das mache ich so, damit ich die meisten DB problemlos erweitern und stoßfrei in die SPS laden kann.

Auf Sepp1301 bezogen könnte das dann so aussehen:
- die Visu-Tastenbits liegen in DB100.DBX0.0 ...
- die Visu-Anzeigewerte liegen in DB101.DBB0 ... (das was sein DB4 ist)

In der Visu gibt es 2 Tasten-Variablen: "S_A1_Ein" auf DB100.DBX0.0 und "S_A1_Aus" auf DB100.DBX0.1
2 Schaltflächen (oder Schalter) setzen bei Drücken oder Klicken (oder Schalten) diese Variablen.

Das SPS-Programm (die Adressen noch an Deine Gegebenheiten anpassen!):
Der FC1
Code:
//E/A-Status in Visu-Anzeigewerte kopieren
      L     EB     0
      T     DB101.DBB    0
      L     EB   124
      T     DB101.DBB    1
      L     EB   125
      T     DB101.DBB    2
      L     AB     8
      T     DB101.DBB    3
      L     AB   124
      T     DB101.DBB    4
      L     AB   125
      T     DB101.DBB    5
      L     EB   126
      T     DB101.DBB    6
      L     MB     1
      T     DB101.DBB    7
Irgendwo im Programm mit den Visu-Tasten den SPS-Ausgang A124.0 schalten:
Code:
      U     DB100.DBX    0.0            //von Visu: S_A1_Ein
      S     A    124.0
      U     DB100.DBX    0.1            //von Visu: S_A1_Aus
      R     A    124.0
      NOP   0
Am Ende vom OB1
Code:
//Visu-Tastenbits löschen
      L     0
      T     DB100.DBD    0              // DBX0.0 - DBX3.7
Weil hier die Tastenbits immer auf 0 gelöscht werden, können die Tastenbits nicht beobachtet werden, wie sie nach Tastendruck in der Visu für 1 Zyklus lang 1 werden.
Der DB100 mit den Tastenbits muß in diesem Beispiel mindestens 4 Byte groß sein.
Wenn Du Deine Visu-Adressen nicht zu DB101... ändern willst, dann mußt Du alle DB101 durch DB4 ersetzen.

Noch ein Tip:
Wenn Du das WinCCflex-Visu-Projekt in das Step7-SPS-Projekt integrierst, dann kannst Du bei den Variablen-Adressen kaum noch Fehler machen. Der CPU-Steckplatz bei der Verbindungs-Projektierung wäre auch automatisch richtig eingetragen worden.

Harald
 
L EB 126
T DB4.DBB6

im FC1

geladen

Nun habe ich im DB 4 DBX6.0 mein mein E126.0

wenn ich jetzt einen Button in der Visu den DB4 DBX6.0 auf 1 lade, und danach den DB4 live anschaue bleibt dieser DBX6.0 aber auf FALSE.

ALSO weiß ich jetzt, das ich irgendwas FALSCH gemacht habe. Ich denke mir das ich im FC1 irgendwas falsch gemacht habe.
Der FC1 (Netzwerk 1) kann durchaus so bleiben. Du kannst nur nicht mit der Visu auf die selben DB4-Adressen schreiben, weil nach dem Beschreiben von der Visu der FC1 wieder ausgeführt wird und die DB4-Adressen mit den Eingängen überschreibt.
Die Visu muß in eigene Variablen schreiben. Das Programm muß dann den Eingang und das Bit von der Visu Oder-verknüpfen:
Code:
      O     E    126.0                  //Taster am SPS-Eingang
      O     DB100.DBX    0.2            //Visu-Taste
      S     M      1.0                  //Start Schrittkette

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, bin aber jetzt nicht unbedingt schlauer.

Ich muss mich wirlklich ganz blöd stellen:

Ich habe ein SPS programm mit dem der eingang 126.0 eine schrittkette gestartet wird.

Diesen eingang habe ich mit

L EB 126
T DB4.DBB6

im FC1

geladen

Nun habe ich im DB 4 DBX6.0 mein mein E126.0

wenn ich jetzt einen Button in der Visu den DB4 DBX6.0 auf 1 lade, und danach den DB4 live anschaue bleibt dieser DBX6.0 aber auf FALSE.

ALSO weiß ich jetzt, das ich irgendwas FALSCH gemacht habe. Ich denke mir das ich im FC1 irgendwas falsch gemacht habe.

Wie mach ich das denn jetzt nun (über meinen DB4) das es funktioniert`?

Die VISU schreibt direkt in den DB, hier in deinem Beispiel auf DB4.DBX6.0
Im nächsten Zyklus kommt dein FC1, in dem steht lade Eingangsbyte 126 und schreibs auf DB4.DBB6. Somit wird dein Bit von der Visu wieder überschrieben mit dem Status des EB126 .

Irgendwann muss doch des Zehnerl fallen :ROFLMAO:
 
Ich meine ... der Harald hat sich wieder (wie immer) wieder viel Mühe gegeben, das Problem zu beschreiben - allerdings an den TE :

@TE:
Wenn du z.B. mit einer Taste (oder sonst etwas) das DB4.DBB3 beschreibst (oder ein Bit davon) so wird das von der CPU sofort und immer wieder überschrieben - da kannst du machen, was du willst.

Wie schreibt doch ein anderer Freund von mir immer so treffend 8in seiner Signatur) : "Wer lesen kann ist klar im Vorteil"

Ich hoffe, es ist dann jetzt klar ... :rolleyes:

Gruß
Larry
 
@ Larry Laffer

Für die einen reicht deine schlaue erlärung aus, für die anderen eben nicht. Und das hat auch nichts mit Lesen können zu tun!

@ Harald

Danke
 
Zuletzt bearbeitet:
Zurück
Oben