Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: WinCC7 - E/A Feld Alt- und Neuwert in C-Script

  1. #1
    Registriert seit
    08.04.2011
    Beiträge
    15
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum!

    Ich baue mir gerade Bedienmeldungen in WinCC, unter anderem für die EA-Felder mit den Sollwerten.
    Es läuft auch ganz wunderbar, nur wird mir beim Thema Eingabe- und Ausgabewert der EA Felder wieder schwindelig.

    Ich brauche für die erzeugte Meldung den Variablenwert des Feldes vor und nach der Änderung. Die Datenaufbereitung und der Aufruf für die Bedienmeldung steht in "Propertythemen->Ausgabe/Eingabe->Eingabewert->Änderung" des EA-Feldes.

    An Neu- und Altwert komme ich über folgende funktionen...

    Code:
    float  fVal =(float) GetInputValueDouble(lpszPictureName,lpszObjectName);      
    float  fValOld =(float) GetOutputValueDouble(lpszPictureName,lpszObjectName);
    Wird der Eingabewert per Script noch umgerechnet (Nachkommastellen), ist auch alles in Ordnung. Wenn er allerdings "direkt" verarbeitet wird, scheint die Verarbeitung "zu schnell" zu laufen. Ich bekomme dann schon den neuen Wert im OutputValue.

    Gibt es eine bessere/richtigere/schönere Möglichkeit an den Variablenwert vor und nach Änderung zu gelangen?

    Schon mal danke für die Hilfe!
    Der Ruhrpott grüßt.
    Zitieren Zitieren WinCC7 - E/A Feld Alt- und Neuwert in C-Script  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Wenn du WinCC V7 verwendest kannst du auch die vorgefertigen Bedienmeldungen verwenden, das muss man bei dem EA-Feld nur aktivieren und eine Einstellung im Alarmlogging anpassen. Da sollten zumindest laut Beschreibung auch Alt- und Neuwert erfasst werden.
    http://support.automation.siemens.co...ew/en/24325381

    Ansonsten ist das mit zwei Feldern machbar, ich glaube fast nicht dass das mit einem einzelnen EA/Feld zuverlässig funktioniert.
    Denn so wie es scheint, wird bei einem EA-Feld als erstes auf die Variable geschrieben, und erst dann das Änderungs-Ereignis ausgelöst.

    Mit zwei separaten Feldern hättest du ein Feld nur für die Ausgabe und das andere Feld ist nur Eingabewert ohne direkte Verknüpfung zu einer Variable. Im Änderungsereignis liest du dann mit GetTagXY den Altwert aus und mit GetPropXY den Neuwert. Dann mit SetTagXY den Neuwert schreiben und Meldung erzeugen.
    Ich würde evtl. sogar eine SetTagWait Funktion verwenden, dann kannst du die Bedienmeldung erst generieren wenn der Wert wirklich in der Steuerung gelandet ist.

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    ducati (04.07.2013)

  4. #3
    clr brain ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.04.2011
    Beiträge
    15
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Moin,

    Die Idee mit den doppelten EA-Feldern scheint noch das sauberste zu sein. Ich bin mir nur nicht sicher ob ich mir das geben will. Ich rüste die Bedienmeldungen in einem bestehenden Projekt mit etwa 300 EA "mal eben" nach. Ich hatte irgendwo im Hinterkopf, das Siemens sowas für den Ein- und Ausgabewert im Sinn hatte. Bin mir aber auch nicht mehr so sicher. Ob ich damit nun die Kerntemperatur eines Reaktors steuern würde seih dahin gestellt... für Bedienmeldungen würde es mir reichen.

    Zu den fertigen Bedienmeldungen aus der Box. Auch die habe ich mir angeschaut, hatte aber ein, zwei Probleme damit. Ich glaube mich erinnern zu können, das der aktuelle Benutzername nirgends hinterlegt wird (bin mir aber nicht mehr sicher). Mein Hauptproblem lag aber darin, das WinCC nur den geänderten Variablennamen in das Alarmlogging feuert. Der ist mir für den Kunden leider zu kryptisch. Ich könnte von drei runterzählen bis der Anruf mit bitte um Klartext kommt. Mit der Scriptvariante (24325381_ISALG_OperationLog) bin ich da wesentlich flexibler unterwegs.

  5. #4
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von clr brain Beitrag anzeigen
    Die Idee mit den doppelten EA-Feldern scheint noch das sauberste zu sein.
    Naja, ob das sauber ist?

    Die mitgelieferten Bedienmeldungen für die EA-Felder sehen standardmäßig so aus: "aktueller Benutzer" neu="neuer Wert" alt="alter Wert" Bei Herkunft steht der WinCC-Variablenname.
    Das kannst Du im Alarmlogging auch noch konfigurieren. Oder evtl. auch noch das verwendete Script modifizieren (allerdings nur im Notfall!).

    Gruß.

  6. #5
    clr brain ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.04.2011
    Beiträge
    15
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von ducati Beitrag anzeigen
    Naja, ob das sauber ist?
    Stimmt schon, nicht sauber aber gedanklich am einfachsten nachzuvollziehen... bevor man anfängt sich kleine 3d Bildchen von EA Felder zu malen und versucht zu verstehen was, wann, wo ankommt.

    Die Variablennamen im originalen Bedienmeldungsscript durch klartexte ersetzen zu lassen, wäre auch eine idee. Mache ich aber auch ungern. Ist eben keine Projektfunktion, bei Neuinstallation oder Update fängt der nächste (oder noch schlimmer, ich!) dann an zu würgen.

    Vielleicht missbrauche ich gleich noch mal die Fachberatung.

  7. #6
    clr brain ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.04.2011
    Beiträge
    15
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Kurzes Feedback...
    Problem tritt nur auf wenn Variable direkt in Dynamik vom Ausgabewert steht. Auch dann nur bei erster Änderung nach Bildaufruf.

    Bisheriger Pfad.... Bestätigung meiner "Alt-Neuwert Ausleseidee" bei der Fachberatung ("sollte gehen!") ... weiter an Hotline .... nun schon bei der Entwicklungsabteilung. Habe wieder einen Joker gezogen.

    Wünsche ein schönes Wochenende.

  8. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    D.h. es sollte doch mit einem einzigen EA-Feld gehen? Da bin ich mal gespannt.

    Dass man bei eigenen Meldungen eine bessere Kontrolle über den Meldetext hat ist ein Vorteil. Leider gibt es im WinCC bei Variablen kein Kommentarfeld aus dem man einen lesbaren Text auslesen könnte. Ich würde wohl hingehen, und für jeden Sollwert eine weitere interne Variable vom Typ Text anlegen, in dem der Meldetext für die Bedienmeldung steht.
    Z.B. wenn die Sollwertvariable ML01_SW01 heißt, dann heißt die Variable für den Meldetext ML01_SW01_MSG. Dann kann man mit GetLinkedVariable() die verknüpfte Variable auslesen. Wenn es eine Variable mit +_MSG gibt, dann wird der dort enthaltene Text für die Meldung verwendet, ansonsten der Variablenname (falls jemand vergessen hat die MSG-Variable anzulegen).

  9. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    clr brain (10.07.2013)

  10. #8
    clr brain ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.04.2011
    Beiträge
    15
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    aallsoooo...

    Bisher hatte ich das Feedback bekommen, man könne es durchaus über das auslesen von Ausgabe- und Eingabewert machen. Der letzt Kollege der Siemens Hotline war aber plötzlich anderer Meinung.
    Zuerst einmal funktioniert es schon. Man hat allerdings keine Garantie, daß man im Ausgabewert auch wirklich noch den alten Variablenwert bekommt. Zu sehen in meinem Beispiel, Nach aufruf des Bildes wird der Wert bei erster Änderung "zu schnell" weitergegeben.

    Nach der Frage "Bug oder feature?" startete der übliche Tanz um den heissen Brei. Man kennt das verhalten, auch der Kollege nebenan kennt es... aber machen sie doch besser was anderes.

    Ich denke ich nehme jetzt mal die letzte Idee auf. Bei klick auf das EA Feld, Ausgabewert in globale Variable speichern. Bei Änderung, Bedienmeldung abfeuern mit Neuwert aus Eingabewert und Altwert aus dem neuen Zwischenspeicher.

    @Thomas: Auch eine Idee... bin jetzt aber schon zu weit um noch neues einzubauen.

  11. #9
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Leider gibt es im WinCC bei Variablen kein Kommentarfeld aus dem man einen lesbaren Text auslesen könnte. Ich würde wohl hingehen, und für jeden Sollwert eine weitere interne Variable vom Typ Text anlegen, in dem der Meldetext für die Bedienmeldung steht.
    Zitat Zitat von clr brain Beitrag anzeigen
    Bei klick auf das EA Feld, Ausgabewert in globale Variable speichern.
    Naja, das mit den zusätzliche internen Variablen macht ja immer ziemlich viel Arbeit. Ich und auch Siemens bei z.B. PCS7 machen es so:

    Man verwendet als Speicher entweder unbenutzte Objekteigenschaften (für den Kommentar könnte man ja evtl. den Tooltiptext nehmen). Die 2. Variante: man baut ein Anwenderobjekt oder Faceplatetype (*.fpt) dort kann man unsichtbare Objekte mit einbauen, welche als Speicher für irgendwelche Dinge verwendet werden.
    Der Vorteil, mann muss nicht zusätzliche Interne Variablen anlegen, sondern man kann im Graphicseditor bleiben und dort einfach das Anwenderobjekt kopieren, fertig.

    Gruß.

  12. #10
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Leider gibt es im WinCC bei Variablen kein Kommentarfeld aus dem man einen lesbaren Text auslesen könnte. Ich würde wohl hingehen, und für jeden Sollwert eine weitere interne Variable vom Typ Text anlegen, in dem der Meldetext für die Bedienmeldung steht.
    Z.B. wenn die Sollwertvariable ML01_SW01 heißt, dann heißt die Variable für den Meldetext ML01_SW01_MSG.
    CFC hat den Vorteil, dass texte beim AS-OS-Übersetzen aus dem CFC ins WinCC als interne Variable übersetzt werden. Z.B der Bausteinkommentar, oder auch Einheit oder Texte von einzelnen Bausteineingängen. Daraus lässt sich dann automatisiert einiges in WinCC anstellen, ohne dass man händisch Variablen anlegen muss und auch noch konsistent die texte bearbeiten muss. Bei Verwendung von CFC wird das alles automatisch generiert.
    Wenn man sich da mal ein System erarbeitet hat, will man nix anderes mehr

    Gruß.

  13. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    clr brain (10.07.2013)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 18.11.2012, 10:28
  2. Antworten: 3
    Letzter Beitrag: 06.10.2012, 19:14
  3. Antworten: 3
    Letzter Beitrag: 22.08.2011, 20:55
  4. SmartClient und Tastenkombis (Alt-Tab usw.)
    Von ssound1de im Forum HMI
    Antworten: 1
    Letzter Beitrag: 11.02.2011, 15:42
  5. Wenn ich alt bin und nicht mehr kann, werde ich:
    Von Lebenslang im Forum Stammtisch
    Antworten: 16
    Letzter Beitrag: 02.09.2008, 16:12

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •