WinCC WinCC 7.5 und S7-400H

ducati

Level-3
Beiträge
9.806
Reaktionspunkte
2.831
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, vielleicht weiss das jemand aus dem Stehgreif.

Ich will ne WinCC 7 Singlestation übergangsweise einseitig per TCPIP an eine S7-400H anbinden. Also ohne in Step7 ne (hochverfügbare) S7-Verbindung zu projektieren. Die WinCC Station soll nur während der IBN aus einer S7 die Daten holen/schreiben.

Geht das? Und auch wenn die WinCC-Station nicht an den Master der 400H angebunden ist?

Redundanz brauch ich an der Stelle nicht, will nur unabhängig von projektierten Verbindungen und parallel zum "richigen" WinCC Server ne zusätzliche Bedienstation aufbauen...

Da Siemens nicht liefern kann, kann ichs aktuell nicht selber testen 😭

kann ich mit ner 400H überhaupt (einseitig) kommunizieren ohne ne Verbindung in Netpro anzulegen? :unsure:
 
Zuletzt bearbeitet:
Ich habe das mal so gemacht, dass ich insgesamt 3 Verbindungen in WinCC angelegt habe. Eine zu CPU1, eine zu CPU2, und noch eine CPU. Die Variablen sind dann unter CPU angelegt. Über ein Script wird anhand der Variablen in CPU1 und CPU2 bzw. dem Verbindungszustand geprüft, welche CPU aktiv ist, und dann über die @ Variablen die man zu einer Verbindung anlegen kann (@CPU@AlternateConnectionAddress, @CPU@ConnectionEstablishMode usw.) die Hauptverbindung entsprechend umkonfiguriert. Geht dann innerhalb ein paar Sekunden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das mal so gemacht, dass ich insgesamt 3 Verbindungen in WinCC angelegt habe. Eine zu CPU1, eine zu CPU2, und noch eine CPU. Die Variablen sind dann unter CPU angelegt. Über ein Script wird anhand der Variablen in CPU1 und CPU2 bzw. dem Verbindungszustand geprüft, welche CPU aktiv ist, und dann über die @ Variablen die man zu einer Verbindung anlegen kann (@CPU@AlternateConnectionAddress, @CPU@ConnectionEstablishMode usw.) die Hauptverbindung entsprechend umkonfiguriert. Geht dann innerhalb ein paar Sekunden.
OK, danke, muss ich mir mal zur Not anschauen.

Meine Idee ist aber, ich verbinde mein WinCC immer stur zur CPU0 (192.168.0.100) und kann da Werte abholen und schreiben, auch wenn CPU0 nicht der Master ist. Wenn CPU0 in Stop oder aus ist, würde dann natürlich nichts gehn, aber den Fall brauch ich für den IBN-Rechner nicht. Sollte doch gehn, oder nicht?
 
Meine Idee ist aber, ich verbinde mein WinCC immer stur zur CPU0 (192.168.0.100) und kann da Werte abholen und schreiben, auch wenn CPU0 nicht der Master ist. Wenn CPU0 in Stop oder aus ist, würde dann natürlich nichts gehn, aber den Fall brauch ich für den IBN-Rechner nicht. Sollte doch gehn, oder nicht?
Sollte meiner Meinung nach funktionieren. Ich habe gerade in einem Projekt nochmal nachgesehen, dort erfolgt die Umschaltung nur wenn die Verbindung zu einer CPU gestört ist. Ich glaube das war nicht ganz so einfach zu realisieren, im SPS-Programm auszuwerten welche von den CPUs Master ist und das WinCC mitzuteilen. Mit einer eigenen Anwendung sollte das hingegen möglich sein, wenn man bei beiden CPUs separat SZL Anfragen stellt.
 
Ich glaube das war nicht ganz so einfach zu realisieren, im SPS-Programm auszuwerten welche von den CPUs Master ist
Code:
      CALL  "RDSYSST"
       REQ       :=#H_CPU.REQ
       SZL_ID    :=W#16#71              // 0071  H-CPU-Sammelinformation
       INDEX     :=W#16#0
       RET_VAL   :=#H_CPU.Fehler
       BUSY      :=#H_CPU.BUSY
       SZL_HEADER:=#H_CPU.HEADER
       DR        :="DIAGNOSE PN".H_System

// CPU Master
      L     "DIAGNOSE PN".H_System.mwstat1    // bit4 CPU0 Master; bit5 CPU1 Master
      L     16                          // bit4 ausmaskieren
      UW   
      L     0
      <>I   
      =     #ML_1_anWinCC                       // CPU0 ist Master

      L     "DIAGNOSE PN".H_System.mwstat1    // bit4 CPU0 Master; bit5 CPU1 Master
      L     32                          // bit5 ausmaskieren
      UW   
      L     0
      <>I   
      =     #ML_2_anWinCC                      // CPU1 ist Master

das geht eigentlich ganz gut. zumindest wie nicht eine CPU komplett tot ist... Gibts halt 1000 Sonderfälle, die hab ich nicht alle ausgetestet...
 
Ich habe das mal so gemacht, dass ich insgesamt 3 Verbindungen in WinCC angelegt habe. Eine zu CPU1, eine zu CPU2, und noch eine CPU. Die Variablen sind dann unter CPU angelegt. Über ein Script wird anhand der Variablen in CPU1 und CPU2 bzw. dem Verbindungszustand geprüft, welche CPU aktiv ist, und dann über die @ Variablen die man zu einer Verbindung anlegen kann (@CPU@AlternateConnectionAddress, @CPU@ConnectionEstablishMode usw.) die Hauptverbindung entsprechend umkonfiguriert. Geht dann innerhalb ein paar Sekunden.
Diese Konstruktion kenne ich vom Comfortpaneln
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde es so probieren;

Ich nehme an das du AS OS Engineeren benutzt.
Also erst die Variablen mit übersetzen generieren.

Und dann die Variablen und Störmeldungen auf die neue TCP IP verbindung umrangieren.

Ob dies so einfach geht weiss ich nicht. Möglich erst exportieren und dann bearbeiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt fällt mir auch wieder ein woher das bei WinCC stammt. Es gibt im Dynamic-Wizard eine Funktion "Redundante Verbindung einrichten", welche die dazu die entsprechenden @-Variablen sowie das Umschaltscript generiert. Allerdings war das imho so, dass die Umschaltung nur vollzogen wird wenn eine CPU über Netzwerk nicht mehr erreichbar ist, und nicht wenn eine eingeschaltet aber in Stopp Modus sein sollte. Das haben wir dann entsprechend durch eine eigene Auswertung angepasst, und darum auch die drei Verbindungen in WinCC.
 
Hab mir jetzt nochmal das Handbuch für die TIA-Panels durchgelesen. Zu meiner Frage steht da aber auch keine eindeutige Antwort drinn.
Ich vertraue jetzt mal der Aussage von Bram. Falls das nicht geht, kann ich immer noch ne händische Umschaltung gemäß Thomas baun 👍
Ich will halt keine große Zeit investieren, ist halt nur übergangsweise...
Die endgültige Visu läuft dann später auf ordentlichen redundanten WinCC-Servern. Die sind aber Bestand und im Produktivbetrieb und während der IBN hab ich da nur sporadisch und eingeschränkt Zugriff drauf und die endgültige ES steht auch sonstwo...
Deshalb mach ich die IBN mit meinem eigenen Rechner und kopier später alles auf den WinCC-Server.
 
Ich habe noch mal nachgeschaut wie das bei ein Comfortpanel aussieht.
Als erste hier ein Siemens Link;
https://support.industry.siemens.co...en-(wincc-v16-und-step-7-v5-6)?dti=0&lc=de-DE

Dies haben wir vor ein paar Jahren mal umgesetzt mit V13. Also nur 1 mal vorgekommen.
Es gibt 3 wie gesagt 3 verbindungen für jede SPS. In unser Fall waren es 2 H-Systemen.


Verbindung.jpg

Skript Controller lost
Code:
Sub connectionController_lost()

'**********************************************************************************************
'****               VB Script for connecting a Comfort Panel to an H-System                  ****
'****                           Author: André Blochwitz                                    ****
'****                         Part 3 / 3 - connection lost                                 ****
'**********************************************************************************************

'Deactivation / Deaktivierung
'If the connections are not able to reset there status tag back to "1" they will be marked with 100 (disabled).
'Setzen die Verbindungen ihren Status nicht zyklisch auf 1 zurück werden sie als ausgefallen markiert

If SmartTags("Controller_con_state_PLC1") >= 5 Then
    SmartTags("Controller_con_state_PLC1") = 100
End If

If SmartTags("Controller_con_state_PLC2") >= 5 Then
    SmartTags("Controller_con_state_PLC2") = 100
End If

'If both connections are marked with "disabled", the connection memory will be set to "connection_lost"
'Sind beide Verbindungen als deaktiviert gekennzeichnet, wird der Verbindungsspeicher der Datenverbindung entsprechend mit "connection_lost" beschrieben

If SmartTags("Controller_con_state_PLC1") = 100 And SmartTags("Controller_con_state_PLC2") = 100 Then
    SmartTags("Controller_connected_to") = "connection lost"
End If


'Setting fault flag / Störungsmarkierung
'In each cycle of 1 minute the status tags of the connections will be set to 5.
'Im Zyklus von 1 Minute werden die Statusvariablen der beiden Verbindungen auf 5 gesetzt

If SmartTags("Controller_con_state_PLC1") < 5 Then
    SmartTags("Controller_con_state_PLC1") = 5
End If

If SmartTags("Controller_con_state_PLC2") < 5 Then
    SmartTags("Controller_con_state_PLC2") = 5
End If

End Sub

Skript Verbindung 1
Code:
Sub connectionController_PLC1()
'**********************************************************************************************
'****               VB Script for connecting a Comfort Panel to an H-System                  ****
'****                           Author: André Blochwitz                                    ****
'****                         Part 3 / 3 - connection lost                                 ****
'**********************************************************************************************


'Initialization / Initialisierung
'During initialization the default connection is saved into the memory of connections (connected_to).
'bei der Initialisierung wird die default - Verbindung in den Verbindungsspeicher gesichert (connected_to).

If SmartTags("Controller_connected_to") = "" Then
    SmartTags("Controller_connected_to") = "PLC_1"
End If


'Reset / Rücksetzen
'Reset of connection brake detection for PLC_1
'Rücksetzen der Verbindungsausfallerkennung für PLC_1

SmartTags("Controller_con_state_PLC1") = 1


'Fault detection / Störungserkennung
'Incrementation of the brake detection value for the connection to PLC_2
'Inkrementieren der Ausfallerkennung für die Verbindung zu PLC_2

If SmartTags("Controller_con_state_PLC2") <= 10 Then
    SmartTags("Controller_con_state_PLC2") = SmartTags("Controller_con_state_PLC2") +1
End If


' Switch over / Umschalten
'is the limit of the status tag for the connection to PLC_2 reached, the connection to PLC_1 will switch the data connection.
'Erreicht die Statusvariable für die Verbindung zu PLC2 einen Grenzwert, schaltet die Verbindung zu PLC1 die Datenverbindung auf Ihre Parameter um

If SmartTags("Controller_con_state_PLC2") >= 11 Then
    If SmartTags("Controller_connected_to") = "PLC_2" Then
        ChangeConnection "HMI-ControllerPLC", "192.168.0.210", 3, 0
        SmartTags("Controller_con_state_PLC2") = 100
        SmartTags("Controller_connected_to") = "PLC_1"
    ElseIf SmartTags("Controller_connected_to") = "PLC_1" Then
        SmartTags("Controller_con_state_PLC2") = 100
    End If
End If


'Reintegration / Wiedereintritt
'after a full connection brake the first repaired connection will activate the data connection
'Nach einem Totalausfall wird die Datenverbindung auf die Paramter der Verbindung umgeschalten, über die als erstes das Taktmerkerbit gelesen werden kann

If SmartTags("Controller_connected_to") = "connection lost" Then
    ChangeConnection "HMI-ControllerPLC", "192.168.0.210", 3, 0
    SmartTags("Controller_con_state_PLC2") = 100
    SmartTags("Controller_connected_to") = "PLC_1"
End If

End Sub


Skript Verbindung 2
Code:
Sub connectionController_PLC2()
 '**********************************************************************************************
'****               VB Script for connecting a Comfort Panel to an H-System                  ****
'****                           Author: André Blochwitz                                    ****
'****                         Part 3 / 3 - connection lost                                 ****
'**********************************************************************************************


'Initialization / Initialisierung
'During initialization the default connection is saved into the memory of connections (connected_to).
'bei der Initialisierung wird die default - Verbindung in den Verbindungsspeicher gesichert (connected_to).

If SmartTags("Controller_connected_to") = "" Then
    SmartTags("Controller_connected_to") = "PLC_1"
End If


'Reset / Rücksetzen
'Reset of connection brake detection for PLC_1
'Rücksetzen der Verbindungsausfallerkennung für PLC_1

SmartTags("Controller_con_state_PLC2") = 1


'Fault detection / Störungserkennung
'Incrementation of the brake detection value for the connection to PLC_2
'Inkrementieren der Ausfallerkennung für die Verbindung zu PLC_2

If SmartTags("Controller_con_state_PLC1") <= 10 Then
    SmartTags("Controller_con_state_PLC1") = SmartTags("Controller_con_state_PLC1") +1
End If


' Switch over / Umschalten
'is the limit of the status tag for the connection to PLC_2 reached, the connection to PLC_1 will switch the data connection.
'Erreicht die Statusvariable für die Verbindung zu PLC2 einen Grenzwert, schaltet die Verbindung zu PLC1 die Datenverbindung auf Ihre Parameter um

If SmartTags("Controller_con_state_PLC1") >= 11 Then
    If SmartTags("Controller_connected_to") = "PLC_1" Then
        ChangeConnection "HMI-ControllerPLC", "192.168.0.211", 3, 1
        SmartTags("Controller_con_state_PLC1") = 100
        SmartTags("Controller_connected_to") = "PLC_2"
    ElseIf SmartTags("Controller_connected_to") = "PLC_2" Then
        SmartTags("Controller_con_state_PLC1") = 100
    End If
End If


'Reintegration / Wiedereintritt
'after a full connection brake the first repaired connection will activate the data connection
'Nach einem Totalausfall wird die Datenverbindung auf die Paramter der Verbindung umgeschalten, über die als erstes das Taktmerkerbit gelesen werden kann

If SmartTags("Controller_connected_to") = "connection lost" Then
    ChangeConnection "HMI-ControllerPLC", "192.168.0.211", 3, 1
    SmartTags("Controller_con_state_PLC1") = 100
    SmartTags("Controller_connected_to") = "PLC_2"
End If

End Sub
 
Zuletzt bearbeitet:
Zurück
Oben