# Visu kommuniziert nicht mit SPS



## Sepp1301 (11 März 2011)

Guten Abend!

Mal wieder ein blöder fehler:

Ich habe eine SPS 313C mit ethernet cp343. Auf der SPS läuft ein kleines Programm. die CP343(192.168.0.162) ist in ein kleines Netzwerk eingebunden. Auf dem VISU PC(192.168.0.161) ebenso in dem Netzwerk läuft die RT. Auf der SPS habe ich einen DB4 angelegt, auf dem ich alle Eingäne und Ausgänge der SPS drauf hab. beim Live beobachten, sehe ich auch das manche TRUE und manche FALSE sind. Das bedeutet im DB4 ist alles in Ordnung. 

Im WinCC habe ich alle Variablen angelegt und auch bei Verbindungen alle einstelleung vorgenommen.

Wo könnte der Fehler liegen? Danke schonmal!!!


----------



## netmaster (11 März 2011)

WinCC oder WinCC Flexible?


----------



## PN/DP (12 März 2011)

Woher weißt Du, daß Deine Visu nicht mit der SPS kommuniziert bzw. wie sieht Dein Problem genau aus?

Harald


----------



## Schlüsselkind (12 März 2011)

Was steht denn unter Extras -> Status-Verbindung?


----------



## Sepp1301 (12 März 2011)

es handelt sich dabei um Winncc Flexible

Ich denke mir, das nicht kommuniziert wird, weil ich keine rückmeldungen der initiatoren in der visualisierung bekommen. Bzw. ich keine aktionen ausführen kann. Das heißt ich bekomme auf der visu oberfläche mein ruhe modus angezeigt. so als würde nichts laufen, obwohl z.b. motoren laufen oder ich einen eingang der sps angesprochen habe. aber nichts passiert.

	 		 		was unter Extras -> Status-Verbindung steht, weiß ich im moment nicht, die anlage befindet sich auf der arbeit. ich bin zuhause. ich werde nachschauen und mich am montag wieder zurückmelden.

danke vorab......


----------



## PN/DP (12 März 2011)

Extras -> Status-Verbindung gibt es bei WinCC flexible nicht.
Hast Du in Deiner Visu eine Meldeanzeige drin, die auch Systemmeldungen anzeigt?
Da stehen Einträge drin, wann die Verbindung zur CPU aufgebaut und abgebaut wurde.

Ist das eine neue Visu oder hat sie schon einmal funktioniert?
Hat der Visu-PC eine Desktop-Firewall?



Sepp1301 schrieb:


> ich bekomme auf der visu oberfläche mein ruhe modus angezeigt


Was meinst Du mit "mein ruhe modus" ?

Harald


----------



## Sepp1301 (13 März 2011)

Nein die Visu hat noch nicht funktioniert und eine Meldeanzeige habe ich auch nicht drin.

Ruhe modus beduetet das alle symbole und buttons so angezeigt werden, als wenn keine motoren laufen und ich keine inititatoren an die sps angeschlossen hätte obwohl welche angeschlossen sind und auch von der sps erkannt werden. nur eben nicht von der visu.

das mit der desktop firewall weiss ich nicht genau... muss man die ausschalten?


----------



## Sepp1301 (13 März 2011)

Nein die Visu hat noch nicht funktioniert und eine Meldeanzeige habe ich auch nicht drin.

Ruhe modus beduetet das alle symbole und buttons so angezeigt werden, als wenn keine motoren laufen und ich keine inititatoren an die sps angeschlossen hätte obwohl welche angeschlossen sind und auch von der sps erkannt werden. nur eben nicht von der visu.

das mit der desktop firewall weiss ich nicht genau... muss man die ausschalten?


----------



## PN/DP (13 März 2011)

Sepp1301 schrieb:


> das mit der desktop firewall weiss ich nicht genau... muss man die ausschalten?


Normalerweise nicht, Du kannst sie aber mal testweise deaktivieren.

Ist auf dem Visu-PC die PG/PC-Schnittstelle richtig eingestellt?

Visu-PC > Systemsteuerung > PG/PC-Schnittstelle einstellen
Zugangspunkt der Applikation: *S7ONLINE*
Schnittstellenparametrierung: *TCP/IP -> [Name der PC-Netzwerkkarte]*

Der Name des Zugangspunkt der Applikation muß der selbe sein, wie in WinCC flexible ES bei der Verbindungseinstellung angegeben, Standard: S7ONLINE

Wenn der Zugangspunkt richtig war, dann nochmal die Verbindungseinstellungen in WinCC flexible ES kontrollieren.
Kennst Du schon diesen Siemens-FAQ?
Wie kann eine Verbindung zwischen WinCC flexible Runtime (PC oder Panel) und einer SIMATIC S7-300 / S7-400 über Industrial Ethernet projektiert werden?

Harald


----------



## Sepp1301 (14 März 2011)

Habe jetzt die Einstellung vogenommen, nur Funktioniert es immernoch nicht! Muss man noch was im Step 7 vornehmen? Ich bin mir auch nicht ganz sicher, ob ich das mit dem DB richtig gemacht habe. Ich habe im prinzip das hier in meinem FC1 stehen:

 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

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

Und im DB4 stehen nun die ganzen Adressen von 0.0 bis 7.0 was ich eben brauche.

Ist das bis hier überhaupt richtig? UND:

Muss ich nun noch im OB1 noch etwas ergänzen?


----------



## netmaster (14 März 2011)

Sepp1301 schrieb:


> Netzwerk 2:
> L DB4.DBB 0
> T EB 0
> L DB4.DBB 1
> ...


 
Schon mal nachgedacht was dies bringt?


----------



## Larry Laffer (14 März 2011)

... da nur nur den Status sehen willst kannst du dir (solltest du dir) das Netzwerk 2 sparen.
Ob die Zuweisungen im Netzwerk 1 dem entsprechen, was du haben willst, weiß ich allerdings nicht.

Gruß
Larry

Nachsatz: ich hatte den beitrag von netmaster nicht gesehen ... da steht ja im Grunde dasselbe drin ...


----------



## Paule (14 März 2011)

Sepp1301 schrieb:


> UND:
> Muss ich nun noch im OB1 noch etwas ergänzen?


Hhhhhmmmm, eventuell den FC1 aufrufen. 

```
CALL FC1
```
Und wie Larry und Netmaster schon geschrieben haben,
Eingänge beschreiben ist Müll.

Und dass du die Ausgänge auf ein Datenwort schreibst und im nächsten Netzwerk genau dieses Datenwort wieder auf den Ausgang legst macht auch keinen Sinn.


----------



## Sepp1301 (14 März 2011)

Das Netzwerk 2 habe ich auch nachträglich reingenommen und bin mir selbst nicht sicher gewesen was das bingt.



> Zitat von *Larry Laffer*
> Ob die Zuweisungen im Netzwerk 1 dem entsprechen, was du haben willst, weiß ich allerdings nicht.


 
Was ich haben will ist ja bekannt. Funktioniert das demnach nicht so? Wenn nein was muss ich ändern?


----------



## Larry Laffer (14 März 2011)

... wenn du das EB0 im DB4.DBB0 haben willst dann ist das so korrekt.
Wie ich schon schrieb mußt du den Sinn und das ergebnis selbst bewerten - das kann ich nicht.

Du kannst in der Visu dann aber auch das EB0 genausogut direkt ansprechen - das macht es für den, der später mal daran muß, einfacher.
Das gilt genauso für die AB's etc.

Gruß
Larry


----------



## PN/DP (14 März 2011)

Ich meine, Du solltest zuerst feststellen, ob Deine PC-Visu tatsächlich mit der SPS kommuniziert.
Mache am besten ein E/A-Feld auf eine bisher unbenutzte SPS-Variable in die Visu und beobachte, 
ob sich der Wert in der SPS entsprechend Deiner Visu-Eingabe ändert und wenn Du per Variablentabelle 
den Wert in der SPS änderst, ob die Visu den richtigen Wert anzeigt.

Wenn das funktioniert, der Rest Deiner Visu aber nicht, dann suche den Fehler in Deiner Variablenanbindung.
Wenn Du mit der Variablentabelle die Werte im DB4 beobachtest, sind da einige Werte <> 0?
Hast Du Deine PC-Visu mal simuliert, ob sich die Symbole und Buttons wie gewünscht ändern?

Harald


----------



## Sepp1301 (14 März 2011)

@Larry Laffer

EB0 und alle anderen direkt ansprechen ist natürlich auch eine möglichkeit. Macht man das aber nicht normal über einen Datenbaustein?? Und wenn ich es über den Datenbaustein realisieren möchte, ist dann die vorgehnsweise richtig?


----------



## Larry Laffer (14 März 2011)

Ich würde sie direkt verwenden ... der Überschaubarkeit wegen ...

Aber wenn du es über ein DB machen möchtest dann wäre es korrekt, wie in deinem Code in NW1.


----------



## Sepp1301 (14 März 2011)

@Larry Laffer

Ok gut zu wissen.

@PN/DP



> PN/DP
> Ich meine, Du solltest zuerst feststellen, ob Deine PC-Visu tatsächlich mit der SPS kommuniziert.
> Mache am besten ein E/A-Feld auf eine bisher unbenutzte SPS-Variable in die Visu und beobachte,
> ob sich der Wert in der SPS entsprechend Deiner Visu-Eingabe ändert und wenn Du per Variablentabelle
> den Wert in der SPS änderst, ob die Visu den richtigen Wert anzeigt.


 
Es funktionert nicht



> PN/DP
> Hast Du Deine PC-Visu mal simuliert, ob sich die Symbole und Buttons wie gewünscht ändern?


 
Habe ich mit der Simulation gemacht, und es funktioniert. D.h. die Visu reagiert darauf und zeigt die Werte richtig an.

Wo könnte der Fehler sein?


----------



## PN/DP (14 März 2011)

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.

Wenn Netzwerk-Anschluß OK, dann testweise die Desktop-Firewall auf dem Visu-PC deaktivieren.
Verbindungsprojektierung im Visu-Projekt überprüfen!
Ist die Verbindung überhaupt aktiviert?
Lade doch mal einen Screenshot von Deiner Verbindungsprojektierung in WinCCflex hier hoch.
Kommunizieren weitere Teilnehmer mit dem CP343-1? (Anzahl der Verbindungen ist begrenzt)

Harald


----------



## Sepp1301 (15 März 2011)

> Standardprozedur bei der Inbetriebnahme von Netzwerk-Komponenten:
> - Ping-Test auf beide Teilnehmer
> - ggf. Kabel überprüfen
> - Status-LEDs beachten
> ...


 
Die punkte prüfe ich noch...


----------



## PN/DP (15 März 2011)

Bei der Verbindungsprojektierung muß rechts bei der Steuerung *Steckplatz: 2* stehen.

Harald


----------



## Sepp1301 (16 März 2011)

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?


----------



## Sepp1301 (16 März 2011)

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.


----------



## PN/DP (16 März 2011)

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:

```
L 0
T DB4.DBD 0 //alle 32 Tastenbits löschen
```

Harald


----------



## Larry Laffer (16 März 2011)

@Harald:
das war sein Koppelbereich mit dem er arbeitet :


Sepp1301 schrieb:


> Netzwerk 1:
> L EB 0
> T DB4.DBB 0
> L EB 124
> ...


 
@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


----------



## Sepp1301 (16 März 2011)

@ 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ß. _


----------



## Larry Laffer (16 März 2011)

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


----------



## Sepp1301 (16 März 2011)

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`?


----------



## PN/DP (16 März 2011)

Larry Laffer schrieb:


> @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:


Sepp1301 schrieb:


> 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

```
//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:

```
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

```
//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


----------



## PN/DP (16 März 2011)

Sepp1301 schrieb:


> L EB 126
> T DB4.DBB6
> 
> im FC1
> ...


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:

```
O     E    126.0                  //Taster am SPS-Eingang
      O     DB100.DBX    0.2            //Visu-Taste
      S     M      1.0                  //Start Schrittkette
```

Harald


----------



## Zefix (16 März 2011)

Sepp1301 schrieb:


> Ok, bin aber jetzt nicht unbedingt schlauer.
> 
> Ich muss mich wirlklich ganz blöd stellen:
> 
> ...


 
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


----------



## Larry Laffer (16 März 2011)

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



Larry Laffer schrieb:


> @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 ...  

Gruß
Larry


----------



## Sepp1301 (21 März 2011)

@ 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


----------

