EA-Feld Konfiguration

M0rti

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
bin relativ neu auf dem Gebiet der SPS und bin auf zwei Probleme gestoßen, bei denen ich absolut nicht weiter weiß. Ich arbeite als HiWi an einer Uni-internen sehr komplexen und großen Anlage und arbeite entsprechend an einem bereits bestehendem Projekt.

1. Es gab einige Änderungen an der Anlage, es wurden neue Aktoren eingebaut sowie eine dazugehörende Baugruppe. Baugruppe ist konfiguriert, Symbole und Variablen wurden angelegt. Die direkte Steuerung der analogen Aktoren funktioniert auch problemlos. Jetzt soll das ganze auch im HMI angepasst werden. Doch wenn ich dort die EA-Feld Konfiguration öffne, um ein von mir gezogenes Feld mit der entsprechenden Variable zu verknüfen, kann ich dieses im Projekt nicht finden.
Gebe ich jedoch die Variable einfach selbst per Hand ein, bekomme ich aber auch keinen Fehler, dass Feld bzw. der Button funktioniert aber natürlich nicht. Warum finde ich die angelegte Variable nicht? (Habe alle Variablen auch geflagged falls das die Frage ist)

2. Nachdem ich generell die DB's etc für die Änderungen der neuen Aktoren angepasst habe, klappt eine visuelle Darstellung nicht mehr. Jeder Aktor im HMI, z.B ein Ventil, hat optische Eigenschaften (hier Farbe) wenn es benutzt wird.
Ventile lassen sich im HMI über 2 Buttons in den Handbetrieb versetzen. Wird der erste Button geklickt, so färbt sich der Rahmen des Ventils orange und es wird angeziegt das sich das Ventil nun im Handbetrieb befindet. Durch klicken eines weiteren Buttons, wird das Ventil entweder geöffnet oder geschlossen(hier nur bool). Ist es offen, färbt sich das ganze Ventil grün, ist es geschlossen bleibt es grau. Nach den Arbeiten in den DB's etc kommt es jedoch zu keiner Grünfärbung mehr ALLER Aktoren im HMI! Lediglich die erste Stellung, also orange wird noch angezeigt. Die Funktionsweise bleibt beim öffnen und schließen ERHALTEN, aber die Farbe ändert sich nicht mehr beim ein und ausschalten. Hat jemand eine Idee wieso?

Viele Grüße
 
Hallo,

als erstes einmal, mti welchen Systemen arbeitest Du?
WinCC / WinCCflexible / ProTool oder was ganz anderem?
Da Du von DBs sprichst, gehe ich mal davon aus, daß wir uns in der Siemens-Welt befinden?
Was bedeutet
Nachdem ich generell die DB's etc für die Änderungen der neuen Aktoren angepasst habe
?
Was genau hast Du gemacht?
Hast Du irgendwo in der Mitte Daten eingefügt, so daß sich andere Daten verschoben haben?
Ist die Verknüpfung in der Visualisierung absolut oder symbolisch? Ist sie symbolisch, kannst Du vielleicht die Variablen neu verbinden und alles ist gut.
Haben sich Daten verschoben und Du hast in der Visualisierung eine absolute Verknüpfung, so hast Du eine Menge Arbeit vor Dir: Entweder die Änderungen rückgängig machen oder alle Variablenverbindungen anpassen.

Gruß
JS
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich arbeite mit WinCC über den SIMATIC Manager, ja genau wir befinden uns in der Siemens Welt, sorry war etwas schnell mit meiner Frage.
Richtig. die DB's wurden natürlich um die neuen Variablen erweitert, immer am Ende der DB, auch FB's wurden angepasst, damit auch weiterhin die Kommunikation zwischen SPS und SPS-Sicherheit gewährleistet ist(Wir haben 2 SPS) . Oh ich weiß nicht genau ob die absolut oder symbolisch sind, wie kann ich das prüfen?

Gruß
M0rti
 
Bei WinCC wüßte ich nicht, daß es eine symbolische Verknüpfung gibt. Aber das wäre z.B. bei WinCCflexible so. Da gibt es einen Haken "mit Symbol", dann wird die Adresse ans Symbol gebunden.
Aber zurück zu WinCC.
Dann prüf doch bitte erst einmal, ob die Adressen der Variablen, die nicht funktionieren, mit den Adressen im DB übereinstimmen.
Das kannst Du ja an einem einzelnen Ventil mal nachvollziehen:
Welche Variable ist für den Farbumschlag verantwortlich?
Diese im Variablenbaum suchen und dann steht dort in der Tabelle auch direkt die Adresse.
Ist die korrekt, kannst Du mal den Mauszeiger auf den Variablennamen bewegen und den Tooltip abwarten. Da steht dann normalerweise der letzte gelesene Wert bzw. eine Fehlermeldung drin.
Vielleicht hilft das ja schon weiter.

Zu deinem ersten Problem mit dem EA-Feld:
Es gibt keine direkte Verknüpfung zwischen WinCC und Step7, so wie das bei WinCCflexible der Fall ist.
Hier mußt Du jede Variable anlegen. Dazu mußt Du in Deinem Projekt von WinCC in den Variablenbaum gehen, Deine Verbindung raussuchen und dort die Variable anlegen.
Gegebenenfalls mußt Du auch die Variablenverbindung im OPC-Server aktualisieren, so daß dieser die Variablen in der S7 findet und WinCC bereitstellen kann.
Ist das geschehen, kannst Du die Variable an Dein EA-Feld anbinden.

Gruß
JS
 
Hey JS,
das merkwürdige ist ja, dass an den Objekteigenschaften in WinCC nichts verändert wurde. Sprich ich nehme das alte Backup-Projekt, in dem alles funktioniert (Farbe etc) und editiere nur die DB's. Schwubs funktioniert ein Farbumschlag nicht mehr.
Diese Obejekte haben je eine Farbeigenschaft für den Rahmen und den Hintergrund. Letzteres funktioniert dann plötzlich nicht mehr. Die Verknüpfung der Variable ist aber natürlich noch da.

Zu dem EA-Feld. Also genau das habe ich ja gemacht, vorausgesetzt ich habe dich richtig verstanden ;) Zuerst habe ich ein Symbol für die Baugruppe angelegt und danach eine entsprechende Varibale in einem DB. In WinCC finde ich diese Variable jedoch nicht im Projekt. Ich finde alle anderen Variablen, die bereits angelgt wurden, aber eben nicht die neue.

Gruß
M0rti
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Sprich ich nehme das alte Backup-Projekt, in dem alles funktioniert (Farbe etc) und editiere nur die DB's.
Wenn Du die neuen Variablen tatsächlich AUSSCHLIESSLICH am Ende einfügst, ist das tatsächlich merkwürdig.
Kannst Du die Änderungen mal irgendwie hochladen? Als AWL oder als Screenshot?

Zuerst habe ich ein Symbol für die Baugruppe angelegt und danach eine entsprechende Varibale in einem DB.
Verstehe ich nicht? Was für ein Symbol für die Baugruppe?
Du öffnest einen DB und gehst ganz ans Ende, dort fügst Du eine Variable ein.
Damit ist sie noch nicht in WinCC.
Du mußt das Projekt vermutlich erst einmal im OPC-Server einlesen. Und dann kannst Du in WinCC über den OPC-Server auf die Variable zugreifen.
Aber Du kannst die Variablen im OPC nicht browsen. Du mußt die manuell anlegen. Guck mal, wie der Variablenpfad anderer Variablen in WinCC aussieht und gib Deine neue Variable nach der gleichen Syntax ein.
Ich hab hier leider kein laufendes WinCC im Moment, daher kann ich Dir das nicht demonstrieren und muß das aus dem Kopf erzählen... :-(

Gruß
JS
 
Hallo JS, so ich bin etwas weitergekommen. Der Rat den OPC-Server zu aktualisieren hat funktioniert!
Ich habe auch eine "Lösung" zu meinem Farbproblem gefunden, bin jedoch etwas verwirrt. Vielleicht hast du einen Rat bzw eine Idee.

Die entsprechenden Objekte in WinCC, z.B das besprochene Ventil, ist und WAR schon immer mit einem Dynamischen-Dialog für die Hintergrundfarbe belegt. An diesen Einstellungen wurde nie etwas geändert bzw verändert. Seitdem das das Projekt aber erweitert wurde, erfüllte dieser Dynamische-Dialog nicht mehr seinen Zweck. Die Aktion dahinter sieht so aus: Die verknüpfte Variable wird auf ein Bit geprüft. Bei Änderung dieses Bits soll eben die Farbe "gesetzt" werden.
Ich habe mir in der DB, in der sich die Variable befindet, die Werte zur Laufzeit angeschaut. Wie zu erwarten, ändert sich der angezeigte Hex-Wert bei Betätigung des Buttons. Ich habe mir beide Zustände in Binär umgerechnet und dort den Fehler gefunden! In dem Dynamischen Dialog wird Bit8 geprüft. Bit8 ändert sich jedoch nach Betätigung des Buttons nicht! Ich habe es folglich umgestellt, das auf das Bit geprüft wird, das sich auch wirklich ändert und zack es funktioniert!

Ich verstehe nur nicht, warum dies bei allen Objekten in WinCC nun der Fall ist! Vorher hat es ja funktioniert und wie bereits gesagt, an den Objekteigenschaften wurde NIE etwas verändert ganz nach dem Motto "Never touch a running system"
Trotzdem wird nun praktisch überall das falsche Bit überprüft. Wie kann das kommen?

Viele Grüße
M0rti
 
Welches Datenformat hat denn Deine Variable? Byte oder WORD?
Falls das ein WORD ist, hast Du vielleicht jetzt Bit 16 statt 8 gesetzt?
Du schriebst weiter oben, daß Du auch FBs geändert hast... Hast Du da etwas verändert, wodurch das falsche Bit gesetzt wird?
Da Du ja WinCC nicht geändert hast, kann es ja nur am Programm oder am Übertragungsweg liegen.
Beim Übertragungsweg könnte noch sein, daß am OPC-Server zwischen Motorola und Intel-Format umgerechnet wird und dann statt Bit 8 Bit 16 im WORD gesetzt wird...

Sonst kann ich da von hier aus auch nicht viel zu sagen..
Gruß
JS
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es handelt sich um ein WORD. In WinCC wird auf Bit 8 geprüft. Wie gesagt Bit 8 ändert sich jedoch nicht. Ich habe es nun selbst auf Bit 1 gesetzt, da sich dieses nach der Triggerung auch ändert.
Nicht das ich direkt wüsste. Alle Variablen die in WinCC davon betroffen sind bekommen ihre Werte auch lediglich über WinCC und werden nicht von FB's oder gar FC's verändert. Und genau da liegt das Problem, ich habe ja eben nichts in WinCC geändert, trotzdem scheint sich der Ausgangszustand geändert zu haben. Morgen arbeite ich erneut an der Anlage und prüfe mal, ob sonst noch von außerhalb darauf zugegriffen wird, bin mir aber ziemlich sicher das nur über WinCC "per Hand" Einfluss genommen werden kann. Evtl schicke ich dir morgen dann mal ein Screen von der Zuweisung des Hex-Werts.

Gruß,
M0rti
 
Verstehe ich nicht :-(
Du sagst doch, daß der Farbumschlag den Ventilzustand anzeigt. Wie / Wieso wird das über WinCC erledigt? Und warum dann über DB? Dann könnte man das über interne Variablen regeln....
Es wird doch wohl einen Ventil-FB geben, der entsprechend seiner Rückmeldungen den Zustand des Ventils setzt. Also kommt das ganze aus dem Programm, nicht aus WinCC. Von WinCC wird nur der Befehl Öffnen/Schließen gesetzt, gehe ich von aus.
Der Wert im DB wird aus irgendeinem FB/FC gesetzt, da bin ich mir sicher. Und wenn da was geändert ist, kann auch dann das falsche Bit gesetzt werden. In dem Falle hast Du EINE Änderung, die sich auf VIELE Ventile überträgt...
 
Hallo JS, sorry für die lange Pause, musste das Problem selbst erstmal genauer eingrenzen. Ich vermute nun eine Idee zu haben was dort passiert ist.
In meinem Datenbaustein stimmen Anfangswert und Aktualwert nicht mehr überein. Die Anfangswerte der hier betrachteten Ventile liegen bei W#16#0. Beobachte ich den Aktualwert ist dieser bei den meisten
jedoch W#16#1000 oder W#16#1020. Dieser "Offset" sorgt denke ich dafür das das "falsche" Bit überprüft wird und sich deswegen die Farbe auch nicht mehr ändert wie bereits oben erwähnt.
Die Frage ist nun, wie bekomme ich diesen Offset wieder weg. Ich möchte ja das mein Aktualwert meinem Anfangswert entspricht. Ich nehme mal an das sollte möglich sein oder?

Gruß,
M0rti
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Morti,

Du hast aber schon mit DBs gearbeitet, oder?
Der Anfangswert ist der Initialwert der Variable, wenn du den Baustein anlegst. Wenn Du den Anfangswert nicht änderst (z.B. weil die Variable irgendeine Einstellung speichert), ist der 0.
Die Aktualwerte sind die Werte, die nun durch den Prozeß in die Variablen geschrieben werden. Also Deine Prozeßwerte.
Wenn Du also in den Variablen den Zustand Deiner Ventile speicherst, so MUSS sich der Aktualwert vom Anfangswert unterscheiden (sonst wäre ja eine Speicherung des Zustands nicht notwendig!).
Anfangswert/Aktualwert 0 = Ventil hat keinen Zustand
Aktualwert 'irgendwas' = Programm läuft und das Ventil hat einen Zustand

Sobald das Programm läuft, hat der Anfangswert keine Bedeutung mehr. Der Anfangswert ist nur für den allerersten Zyklus des Programms auf der jungfräulichen SPS notwendig.
Du kannst allerdings auch während der Laufzeit alle Variablen auf Anfangswert setzen: Beobachten -> Menü Bearbeiten -> Baustein initialisieren. Dann werden die Aktualwerte mit den Anfangswerten überschrieben.

Also bitte lauf nicht in die falsche Richtung...

Wenn Du schreibst, die meisten Ventile haben entweder 16#1000 oder 16#1020, so wird ja hier das Bit 6 (von 1..16) getoggelt. Ist das auf/zu? Das hieße dann, daß auf Bit 6 (von 1..16) eine Rückmeldung liegt, z.B. offen. Dann ist 1=offen, 0=geschlossen. Bit 16 steht immer an, z.B. vielleicht für "Ventil OK". Das ist alles nur geraten und soll Dir nur als Hinweis dienen, wie es funktionieren könnte.
 
Bei W#16#1020 ist nach meiner Rechnung Bit 5 und Bit 12 (von 0..15) gesetzt.

Aktualwert = ist der Wert, den die Variable im Arbeitsspeicher hat. Kann durch das Programm gelesen und geschrieben/verändert werden - der normale Zweck einer Variable.
Anfangswert = ist der Wert, den die Variable im Ladespeicher hat. Auf diesen Wert wird der Aktualwert gesetzt (initialisiert), jedesmal wenn der DB vom Ladespeicher in den Arbeitsspeicher geladen wird (z.B. bei Urlöschen oder SFC83)


Die entsprechenden Objekte in WinCC, z.B das besprochene Ventil, ist und WAR schon immer mit einem Dynamischen-Dialog für die Hintergrundfarbe belegt. An diesen Einstellungen wurde nie etwas geändert bzw verändert. Seitdem das das Projekt aber erweitert wurde, erfüllte dieser Dynamische-Dialog nicht mehr seinen Zweck. Die Aktion dahinter sieht so aus: Die verknüpfte Variable wird auf ein Bit geprüft. Bei Änderung dieses Bits soll eben die Farbe "gesetzt" werden.
[...]
In dem Dynamischen Dialog wird Bit8 geprüft. Bit8 ändert sich jedoch nach Betätigung des Buttons nicht! Ich habe es folglich umgestellt, das auf das Bit geprüft wird, das sich auch wirklich ändert und zack es funktioniert!

Ich verstehe nur nicht, warum dies bei allen Objekten in WinCC nun der Fall ist! Vorher hat es ja funktioniert und wie bereits gesagt, an den Objekteigenschaften wurde NIE etwas verändert ganz nach dem Motto "Never touch a running system"
Trotzdem wird nun praktisch überall das falsche Bit überprüft. Wie kann das kommen?
Wie sieht der Dynamic-Dialog aus?
Wird da vielleicht mit einer global definierten Konstante oder Variable verknüpft?

Harald
 
Sprich ich nehme das alte Backup-Projekt, in dem alles funktioniert (Farbe etc) und editiere nur die DB's. Schwubs funktioniert ein Farbumschlag nicht mehr.
Hast du getestet, ob mit dem Backup alles richtig funktioniert?
Also:
- Backup einspielen
- Funktion testen

Die DBs sind hoffentlich keine Instanz-DBs.
Stell doch mal den DB hier rein.

Wenn ALLE Ventile nach einer Änderung nicht mehr richtig anzeigen, hast du wahrscheinlich den Ventilbaustein geändert.
Vermutlich gibt es EINEN Ventilbaustein, der bei jedem Ventil verwendet wird (instanziert). Eine Änderung an diesem Baustein wirkt sich dann auf alle Ventile aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

also ersteinmal bitte hier nicht mit den Bits vertun. Das Bit8, welches ich anspreche wird erst nach einer Aktion geprüft. Die entsprechenden Hex-Werte habe ich hier im Forum noch überhaupßt nicht angegeben.
Der prinzipielle Unterschied zwischen Anfangswert und Aktualwert ist mir schon klar. Meiner Meinung nach sollte sich der Aktualwert aber nicht vom Anfangswert unterscheiden, solange ich keine Aktion ausführe, denn auf die Variablen wird sonst auch nirgends zugegriffen.

Bis vor kurzem hat auch mit den Backups alles funktioniert, dies ist jetzt auch nicht mehr der Fall ich drehe noch am Rad :D

Die DB bzw einen Ausschnitt hab ich mal mitgeschickt, falls du es so haben wolltest. Denke die Version ist etwas älter, aber ich habe es ja nur übernommen ;)
Die Verknüpfung mit der Dynmaik sollte auch mitgeschickt worden sein.

Was sind denn genau Instanz-DBs und wie oder was würde das für mich bedeuten?

Gruß,
M0rti

Ach ja und nochmal. Weder an der DB (bis auf die Erweiterung neuer Variablen) noch an den Verknüpfungen in WinCC wurde seit der Erweiterung des Projekts etwas geändert! Deshalb vermute ich das es etwas mit dem Aktualwert zu tun hat.
 

Anhänge

  • DB.JPG
    DB.JPG
    190,4 KB · Aufrufe: 21
  • Dynamik.JPG
    Dynamik.JPG
    108,9 KB · Aufrufe: 25
Um die Sache vollständig zu machen und zu zeigen warum ich denke das es an den Aktualwerten liegt hier einmal der Code für die Handsteuerung eines Aktors.
Für jedes Ventil gibt es 2 Buttons in WinCC. Mit dem Button Hd-Strg wird der SPS gesagt das das Ventil per Hand gesteuert wird (da wir es in manchen Prozessen auch über Matlab automatisiert steuern können). Mit dem Button 1/0 (also Ein_Aus) kann dann das Ventil geöffnet bzw geschlossen werden.

Der Code "per Mousclick" ist beigefügt. Es sollte aus dem Code hervor gehen warum ich denke das es an den Aktualwerten bzw Anfangswerten liegen könnte. Ich wüsste sonst nicht wo der Fehler ist.
 

Anhänge

  • Hdstrg.JPG
    Hdstrg.JPG
    77,2 KB · Aufrufe: 23
  • Ein_Aus.JPG
    Ein_Aus.JPG
    77,5 KB · Aufrufe: 18
Deine Bilder zeigen:
- Die Hintergrundfarbe wird dynamisiert vom Bit .8
- Die erste Aktion (Hd-Strg) setzt/rücksetzt das Bit .15 wegen: mask=0x8000
- Die zweite Aktion (Ein_Aus) setzt/rücksetzt das Bit .1 wegen: mask=0x0002

Was davon war "schon immer" so und was hast Du geändert?

Ich denke, mit Deiner Theorie der Aktualwerte und Anfangswerte bist Du völlig auf dem Holzweg.
WinCC liest die Aktualwerte der Variablen. Wenn die Aktualwerte sich nicht ändern würden, dann würde es keine Farbumschläge geben.
Die Anfangswerte kann WinCC garnicht aus der SPS lesen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

Wie der Farbumschlag funktioniert ist mir bewusst, in dem Code bin ich sehr gut drin. Wie mehrfach erwähnt habe ich nichts an sämtlichen Einstellungen geändert, die du in den Bildern siehst.
Schon klar das die Aktualwerte die Ereignisse triggern. Da ich ja eben nichts geändert habe, müssen sich ja folglich die Aktualwerte seit Erweiterung des Projekts geändert haben.
 
Naja, aber die konkreten Aktualwerte sind doch bezüglich dieses C-Teils völlig egal.
Ist das Bit High wird es Low, und umgekehrt, vollkommen egal was im Aktualwert gerade stehen möge.
 
Der C-Code in den Aktionen ist ganz schönes Gebastel:
Mit GetTagWordWait wird eine Word-Variable gelesen, einer DWORD-Variablen zugewiesen, mit einem INT verknüpft und wieder auf den Word-Tag geschrieben ...

Harald
 
Zurück
Oben