Anzeige von Werten aus DBs in WinCC

Abbath

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Folgendes Problem:

Ich arbeite mit Step7 und habe WinCC eingebunden. Ich schreibe ein flexibel ausgelegtes SPS-Programm, es sollen also die benötigten Eingänge und die zu setzenden Ausgänge in E/A-Feldern in einem Touch-Panel eingegeben werden können. Klappt auch alles soweit ganz gut.

Die Ein-/Ausgänge werden zunächst in Datenbausteinen gespeichert, bevor sie in Step7 über Pointer gesetzt werden.
Bei einem Neustart von WinCC sollen die vorher gespeicherten Werte ebenfalls wieder im E/A-Feld angezeigt werden, damit man weiß was bereits gesetzt wurde, hierzu habe ich Startwerte definiert, die in einem Skript überprüft werden. (Startwert ist 255 --> wenn 255, dann mach nichts)
Soweit die Vorgeschichte. :wink:

Jetzt der Fehler:
Die Startwerte werden nicht immer übernommen, manchmal wird einfach wieder einen "0" übernommen, was zur Folge hat, das immer der Eingang "E 0.0" benötigt wird oder der Ausgang "A 0.0" gesetzt wird.
Vor allem scheinbar ohne System, mal klappt es, mal nicht ?!?

Sorry, ist ein bisschen viel Text geworden, wusste nicht, wie ich es kürzer formulieren soll. :wink:

Danke vorab!

Abbath

P.s. Arbeite mit Step 7 V5.3 und WinCC Flexible
Wusste nicht so genau, ob das jetzt eher zum Thema Step7 oder zu WinCC gehört.
 
Hallo Abbath,

ich habe zum Glück mit WinCC flexible noch nicht ernsthaft arbeiten müssen. Von anderen Systemen kenne ich es jedoch so, dass bei E/A-Feldern (Eingabe/Ausgabe) immer die aktuellen Daten aus der Steuerung angezeigt werden, auch nach Neustart. Hast du deine E/A-Felder auch auf Eingabe/Ausgabe eingestellt? Ein Script ist hierfür nicht notwendig.


Gruss, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Onkel,

die E/A-Felder sind auf Eingabe/Ausgabe gestellt. Wahrscheinlich liegt das Problem auch eher bei Step7. Wie ist das denn da mit den Anfangswerten, wann werden die übernommen?
Gestern hatte ich es so, das bei einer Gruppe von Feldern der Anfangswert (255) übernommen wurde und bei einer anderen der Wert 0. Obwohl beide aus dem gleichen DB stammen und mit dem gleichen Skript nur mit verschiedenen Variablen bearbeitet wurden.
Das Skript benutze ich um aus einem Feld (Eingabe z.B. 8.3) das Byte in ein Merkerbyte und das Bit in ein anderes Merkerbyte zu übergeben, damit bei der Eingabe überhaupt der Punkt gesetzt werden kann (String).

Abbath
 
Mittlerweile glaube ich, dass das Problem wohl wirklich nur bei Step7 zu suchen ist. Direkt nach Übertragung des DB an die CPU (PLCSIM) wird nur bei einem Teil der Werte der Anfangswert übernommen. Woran kann das liegen.
Jetzt bin ich wohl doch im falschen Forenordner.
 
Welche CPU benutzt Du? Ich hatte Probleme vor einigen Monaten mit einem 317-2 DP wo ich Fehler beim STRING-handling hatte mit einem Programm das ohne Probleme auf einem 314C-2 DP und WinAC lief. Nachdem ich die Firmware von 2.13 auf 2.30 aufgerüstet hatte war das Problem weg.

Im Doku für den Upgrade war ungefähr 1 A4-Seite Bugfixes - mein Problem war aber nicht dabei!

Guck mal bei Siemens Support ob es Firmware-Upgrade für Dein CPU gibt. Ich habe das Gefühl, dass mit den neuesten CPUs, Siemens lässt den Kunden Beta-Tester spielen.
 
Also, bevor du lange suchst, teste am Besten mit einer echten S7, PCLSIM würde ich in diesem Fall nicht unbedingt trauen, ist ebend "nur" ein Simulator.
 
Hallo,
kann ich nur bestättigen, probiert und probiert, lief nicht auf PLC-Sim, auf einer echten ohne Fehler.
mfg
dietmar
 
Moin!
So, ich betreibe das ganze jetzt an einer "echten" SPS, aber der Fehler ist geblieben. Ich schreibe mal einen Teil eines Skripts auf, mit dem ich auf die in den DB gespeicherten Werte zugreife, um diese in WinCC anzuzeigen. Ich habe das Gefühl, das in dem Moment, wo diese Skripte aufgerufen werden, die Werte im DB auf "0" gesetzt werden.

Code:
If Not SmartTags("Step1_Ein1_1") = 255 And Not SmartTags("Step1_Ein1_2") = 255 Then
SmartTags("Step1Ein1") = SmartTags("Step1_Ein1_1") & "." & SmartTags("Step1_Ein1_2")
End If
Dieses Skript ist nur dafür da, um früher unter WinCC geänderte Werte bei Neustart von WinCC wieder anzuzeigen.
Hierbei sind "Step1_Ein1_1 und ..._2 die Werte im DB und Step1Ein1 eine interne Variable von WinCC. Ich forme mir also aus zwei INT-Werten wieder den String, der den Eingang anzeigt.
Bisschen umständlich, aber eine andere Lösung, den Eingang mit "." anzuzeigen, ist mir nicht eingefallen. Bis auf den Fehler geht das auch sehr gut. :wink:

Abbath
 
Hmm tja.

Hab immer noch keine Lösung gefunden.
Wenn die Runtime neugestartet wird und das erste mal einens der im vorherigen Beitrag geschriebenen Skripte aufgerufen wird, überschreibt er mir die Werte im DB.
Manchmal komplett, manchmal nur einen Teil und manchmal auch gar nicht :?: :?: :?:
Wenn WinCC RT einmal läuft, dann greift er die Werte auch nicht mehr an. Kann es sein, das WinCC die Werte seiner eigenen Variablen auch irgendwo speichert und diese bei Start null setzt?

So kann das ganze natürlich auf keiner Anlage laufen!

Hilfe! Ist ein Praktikum und ich hab nur noch 5 Wochen Zeit! :wink:

Abbath
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin!

Ich werde nie wieder (zumindest erst mal :wink: ) über die Siemens-Hotline meckern!
Nachdem ich etwa 1 Stunde mit einem netten Herren da telefoniert hatte und im dann Teile meines Programms hab zukommen lassen hat er sich die in aller Ruhe zu Gemüte geführt und mich zwei Tage später wieder angerufen und mein Problem gelöst!

Der Fehler lag einfach nur daran: Das eine Skript liest die Daten aus der SPS aus, leider wurde ein anderes Skript welches die Daten in die SPS (bei Änderung) überträgt ebenfalls gestartet! Da die internen Variablen von WinCC aber wohl noch nicht richtig initialisiert waren, hat er mir alle Daten mit null überschrieben!
Juhu! 3-4 Wochen habe ich eine Lösung für das Problem gesucht! Endlich geschafft! :D :D :D

Abbath
 
Zurück
Oben