# WinCC flexible Kurvenanzeige



## Nordkurve

hey leute,

habe mal eine kleine bescheidene Frage, will mit WinCC flexible Runtime eine Kurvendarstellung realisieren. In dieser Kurve sollen mir Verläufe einer Regelung angezeigt werden. Bekommen dies auch hin, nur leider kann ich bei den Kurven nur eine minimale Zeit (Impuls) von 0,1s eintragen (siehe Anhang). Da meine Abtastung der Regelung mit einer Zeit von 6 ms geschieht, sind mir bei der Kurvenaufnahme 0,1s zu wenig. Gibt es eine Möglichkeit, diese Zeit kleiner als 0,1s hinzubekommen?

Bin für jeden Ratschlag dankbar!


Bis denne

p.s. Zur info: WinCC flexible 2005 Hotfix7


----------



## Larry Laffer

Hallo,
ich beschäftige mich sehr viel mit dieser Thematik (nur das ich Kräfte messe). Bei kleinen Mess-Intervallen hast du nur die Möglichkeit die Messwerte in der SPS in einem DB aufzuzeichnen (Intervall z.B. über OB35) und nach Abschluss der Messung alle Werte als Profilkurve an die Visualisierung zu übergeben.

Zu diesem Thema (Profilkurve) ist hier im Forum auch schon einiges veröffentlicht, ich stehe aber auch gerne weiter zur Verfügung ...


----------



## Nordkurve

*Profilkurve*

Hey,

erstmal danke, habe zwar ein wenig ahnung von wincc, aber mit den kurven habe ich noch nicht soviel gearbeitet.

wie erstelle ich denn eine profilkurve? habe im forum schon gesucht, aber nichts dementsprechendes gefunden. wäre nett, wenn du mir nochmal helfen könntest. 

nochmal eben zur vergewisserung. bei meiner regelung der drehzahl rufe ich alle 6 ms den ob35 auf. jetzt lade ich bei jedem aufruf die aktuelle drehzahl und speichere diese in einem db ab. und dann kommt die profilkurve in wincc flexible, wo ich die adressen innerhalb des db angebe? richtig verstanden, dann mußt du mir nochmal einen denkanstoss zur realisierung der profilkurve geben.

bis denne

bis denne


----------



## Larry Laffer

Hallo,
ich bin auch nicht der WinnCC-Flex-Mann. Ich weiß aber, dass das genauso funktioniert wie in ProTool - und damit mache ich es.

Der OB35 wir automatisch aufgerufen mit dem Intervall, dass du unter "Hardware - Eigenschaften CPU - Weckalarme" eingestellt hast.

Du machst einen DB mit einem ARRAY of REAL (z.B.) mit der Anzahl von Elementen, die du aufzeichnen willst. Im OB35 programmierst du das Abfragen deines Analogwertes und das Schreiben in den DB (und das Hochsetzen des Schreib-Pointers). Hast du die gewünschte Anzahl von Messwerten eingelesen sperrst du die weitere Aufzeichnung und gibst an die Visualisierung ein Triggerbit, was diese dann veranlasst, den kompletten Datenblock von der SPS abzuholen.

In der Visu legst du dein Daten-ARRAY als Kurve an (nicht vergessen die richtige Anzahl von Elementen mit anzugeben)

Soviel erstmal dazu - ich hoffe es hilft erst mal ein bißchen weiter ...


----------



## Nordkurve

Ok, wo wir jetzt das Problem mit dem abspeichern der Werte im anderen Thema geklrät haben, nochmal ne Frage hierzu:

Ich ziehe in wincc flexible das feld kurvenanzeige hineinein. dann unter eigenschaften kurven kann ich die kurve einstellen. als kurventyp stelle ich "puffer bitgetriggert" ein. kann dann aber auch nur eine variable laden und nicht den ganzen db mit den werten. was ist da falsch?


bis denne


----------



## Larry Laffer

Du nimmst als Kurvenvariable das erste ARRAY-Element und gibst dann die Anzahl der Werte an  (400 ?)


----------



## Larry Laffer

Klappt es mit dem Speichern jetzt wie gewünscht ?


----------



## Nordkurve

so, das mit dem speichern der werte klappt jetzt wunderbar, nochmal besten dank!

habe dir im anhang mal die möglichen einstellungen gepackt. wincc sagt mir nämlich immer, das ich das nicht anwählen darf.


----------



## Larry Laffer

Du hast auf jeden Fall die Kurven-Anforderung noch nicht projektiert.

Leider kann ich im Augenblick nicht auf WinCC-Flex zugreifen. Wir müssen ggf. also so weitermachen, das du Bilder mit einstellst ...


----------



## Larry Laffer

Für die Kurven-Übertragung musst du in der SPS dann das von dir definierte Triggerbit setzen und zusätzlich das Sammelbit [Bit 15 des gleichen Wortes] ...


----------



## Nordkurve

hey, 

können wir vielleicht auf meinen letzten anhang zurückkommen, was muß ich denn jetzt genau in welchem feld eintragen.


----------



## Larry Laffer

Du must im Feld Kurven-Anforderung eine Variable vom Typ Word hinterlegen.


----------



## Nordkurve

hey larry,

habe jetzt wenigstens die parametrierung der kurve hinbekommen, das sie mir keinen fehler mehr anzeigt.

habe aber noch ne frage zu den triggerbits.

Zitat von dir: Für die Kurven-Übertragung musst du in der SPS dann das von dir definierte Triggerbit setzen und zusätzlich das Sammelbit [Bit 15 des gleichen Wortes] ...


sind das zwei verschiedene bits die du da nennst? setze zur zeit nur ein bit, wenn ich meine werte abgescpeichert habe. muß ich dieses bit nun in der sps setzen oder in wincc flexible?

bis denne


----------



## volker

beide in der sps



		Code:
	

Kurvenübertragung1
Dieser Datenbereich dient zur Triggerung von Kurven. 
Sobald das Steuerungsprogramm das der Kurve zugeordnete Bit
und das Kurven-Sammelbit im Kurvenübertragungsbereich setzt,
erkennt das Bediengerät die Triggerung und liest, je nach Projektierung,
einen Wert oder den gesamten Puffer aus.


----------



## Larry Laffer

Genau wie Volker geschrieben hat. Wichtig ist dabei auch, dass BEIDE Bits lange genug anstehen, dass die Visu sie auch mitbekommt (sicherheitshalber "Erfassungszyklus" * 2 evtl. geht auch 1,5).


----------



## Nordkurve

hey leute,

habe soweit euer vorgehen mal durchgeführt, bekomme jedoch nicht meine kurve dargestellt.

zuerst mal eben ne frage, um dies auszuuschließen: minuswerte kann die kurve doch darstellen?


jetzt mal zu meinem vorgehen:
ich lade 400 werte in einen db5. wenn diese 400 geladen sind, setzte ich das bit m100.7 und m110.7 (beide für wincc flexible).
in wincc flexible habe ich nun folgende einstellungen in der kurve vorgenommen. mein kurvenpuffer ist der db5 (ist auch als array). Puffer wechseln habe ich undefiniert gelassen. als bit wurde 7 angegeben. kurvenanforderung ist das mw110 und als kurventransfer 1 das mw100. kurventransfer 2 ist undefiniert.
als kurventyp habe ich puffer bitgetriggert eingestellt.

seht ihr in diesen einstellungen einen fehler? 

bis denne


----------



## Larry Laffer

Hallo,
-selbstverständlich kannst du negative Werte darstellen.

-M100.7 ist als Sammelbit auf jeden Fall richtig. Ob M101.7 auch richtig ist kann ich so nicht beurteilen. Es müßte dir aber bei der Kurve selbst als Triggerbit angezeigt werden. Wenn das so ist, stimmt das. Es wäre bei automatischer Vergabe auf jeden Fall das Triggerbit für die 8. Kurve.

- Hast du in der Kurven-Anzeige die Achs-Skalierung entsprechend der (zu erwartenden) Werte in deinem DB gewählt ?

Bis bald - viel Erfolg weiterhin


----------



## Larry Laffer

Halt ! Korrektur - ich hatte nicht richtig gelesen ...

M110.7 wäre das Sammelbit für die Übertragung und M111.0 das Triggerbit für Kurve 1 (entsprechend M111.7 für Kurve 8. Vielleicht liegt es schon daran ...


----------



## Nordkurve

hey, nochmal dazu eine frage,

ich muß doch zwei verschiedene merkerwörter(MW100 & MW110) angeben für die Kurvenanforderung und Kurventransfer. bei beiden das selbe Merkerwort anzugeben klappt nämlich nicht. dann gibt er mir immer einen fehler. sehe ich das richtig?

bis denne


----------



## Larry Laffer

vollkommen ...

Die Steuerung der Kurven-Triggerung erfolgt aber nur über das Eine. Ich kann dir im Augenblick auch nicht den tieferen Sinn des anderen Wortes sagen, außer, dass es da sein muss.

In meinen Programmen habe ich für die beiden Worte immer schon einen Platz in dem zugehörigen DB reserviert ...


----------



## Larry Laffer

Hallo Nordkurve,
habe schon lange nichts mehr gehört ...
Funktioniert es jetzt oder hast du aufgegeben ?


----------



## Nordkurve

ne larry,

aufgegeben habe ich noch nicht. ist für meine diplomarbeit. ich möchte ganz gerne praktische kurven vorzeigen und nicht nur simulierte. bin jetzt aber eher am schreiben, da in 3 wochen abgabe ist und mir dies wichtiger ist. ansonsten bleiben halt praktische kurven raus.
werde vielleicht morgen mein glück mal wieder probieren!

bis denne

werde mich auf jeden fall melden, wie die sache ausgegangen ist.

glück auf!


----------



## Nordkurve

so leute, ich bins nochmal. es funtkioniert immer noch nicht, deswegen benötige ich nochmal eure hilfe, schreibe euch die programmteile zum speichern der werte auch hier rein.

im ob1 lass ich wenn in wincc rt eine schaltfläche gedrückt (m0.3) wird eine null in den schleifenzähler (MW30) schreiben, damit eine neue aufnahme von messwerten geschieht:

  UN    M      0.3
      SPB   end
      SET   
      L     0
      T     MW    30
      R     M      0.3
end:  NOP   0


im ob 35 speichere ich die messwerte alle 6ms fortlaufend ab. dies funtioniert auch. wenn er 400 gespeichert hat, setzt er mir den m100.1 zur kurvenanforderung. diesen merker kann ich nur über wincc rt mit einer schaltfläche wieder zurücksetzen.

      L     MW    30
      L     400
      >I    
      SPB   END
      L     MW    30
      ITD   
      L     4
      *D    
      SLD   3
      T     MD    40

      L     DB11.DBD   10
      AUF   DB     5
      T     DBD [MD    40]
      L     MW    30
      L     1
      +I    
      T     MW    30

END:  SET   
      S     M    100.1
      NOP   0


in wincc rt habe ich als kurvenpuffer den db5 mit den abgespeicherten werten angegeben. als kurvenanforderung ist das mw 100 angegeben und das bit 1 (m100.1 wir ja gesetzt, wenn werte fertig aufgenommen). als kurventransfer wurde mw110 angewählt. auch so, zur info, puffer wechseln ist undefiniert und kurventransfer 2somit auch nicht benannt. 
unter den eigenschaften x-achse wurde werte angewählt. andere wahl war variable/konstante oder uhrzeit.

kann mir einer sagen, wo da einer fehler steckt oder ich verbesserungen vornehmen kann?

schonmal besten dank!

bis denne


----------



## Kai

Nordkurve schrieb:


> in wincc rt habe ich als kurvenpuffer den db5 mit den abgespeicherten werten angegeben. als *kurvenanforderung* ist das *mw 100* angegeben und das bit 1 (m100.1 wir ja gesetzt, wenn werte fertig aufgenommen). als *kurventransfer* wurde *mw110* angewählt. auch so, zur info, puffer wechseln ist undefiniert und kurventransfer 2somit auch nicht benannt.
> unter den eigenschaften x-achse wurde werte angewählt. andere wahl war variable/konstante oder uhrzeit.


 
Aus der WinCC flexible Hilfe:


*Kurvenanforderungsbereich (MW100)*

Wird am Bediengerät ein Bild mit einer oder mehreren Kurven aufgeschlagen, setzt das Bediengerät die zugehörigen Bits im Kurvenanforderungsbereich. Nach Abwahl des Bildes setzt das Bediengerät die entsprechenden Bits im Kurvenanforderungsbereich zurück.
Über den Kurvenanforderungsbereich kann in der Steuerung ausgewertet werden, welche Kurve am Bediengerät gerade dargestellt wird. Kurven können auch ohne Auswertung des Kurvenanforderungsbereiches getriggert werden.

*Kurvenübertragungsbereich 1 (MW110)*

Dieser Bereich dient zur Triggerung von Kurven. Sie müssen in Ihrem Steuerungsprogramm das der *Kurve zugeordnete Bit im Kurvenübertragungsbereich* *(M 111.1)* sowie das *Kurven-Sammelbit* *(M110.7)* setzen. Das Kurven-Sammelbit ist das letzte Bit im Kurvenübertragungsbereich. Das Bediengerät erkennt die Triggerung und liest entweder einen Wert oder den gesamten Puffer aus der Steuerung. *Danach setzt es das Kurvenbit und das Kurven-Sammelbit zurück*.


Du musst also in Deinem Programm einmalig die Merker M111.1 und M110.7 setzten.

Gruß Kai


----------



## Larry Laffer

Hallo Nordkurve,
Kai hat es dir jetzt ja noch einmal in schön geschrieben. Im wesentlich aber nichts anderes, wie ich es dir ein paar Beiträge vorher auch schon geschrieben habe : *Du musst 2 Bits setzen, damit deine Kurve getriggert wird* - das Sammelbit und das Kurven-Bit. Das Kurven-Bit hast du an deiner Kurve festgelegt. In deinem Fall ist M111.0 das Bit für Kurve 1, M111.1 für Kurve 2 usw. (bei automatischer Vergabe).
Wenn du beide Bits setzt, dann klappt es auch - bestimmt ...


----------



## Nordkurve

hey leute,

habe nochmal ne frage. habe jetzt auch einen link im netz dazu gefunden.

http://support.automation.siemens.c...lib.csinfo&lang=de&objid=21913876&caller=view

habe alles so ausgeführt, wie da beschrieben, also, was ihr hier geschrieben hatte passt schon. jetzt zu meiner frage, kann es möglich sein, das dies nur mit INT-Werten funktioniert und nicht mit REAL?

denn meins funktioniert immer noch nicht.

bis denne


----------



## Larry Laffer

Hey,
ich arbeitet normalerweise mit INT-Werten, liegt aber daran, dass das in der Genauigkeit ausreicht. Mit REAL-Werten funktioniert es aber genauso (habe ich schon gemacht). Wichtig ist, dass deine Kurvenskalierung in der Anzeige passt. Kriegst du gar keine Linie angezeigt ? Wenn ja, dann könnte das bedeuten, dass sie außerhalb des Anzeigebereichs ist ...


----------



## Nordkurve

das stimmt, ich bekomme keine kurve angezeigt. habe aber gerade den wert der kurve von -999 bis +999 gestellt. meine messwerte liegen bei so -250. also sollte das ja reichen. das komische ist aber auch, das mir in der wertetabelle ###### für den wert angezeigt wird. eigentlich heist das doch, das es keine verbindung zur cpu gibt. jedoch kann ich betriebsarten über die runtime starten. 

habe dann zur kontrolle mal ein textfeld genommen und lasse mir einen wert als zahl von den messwerten anzeigen, das macht er auch!

hast du noch einen tip? siemens hotline kann mir leider auch nicht weiterhelfen.

bis denne


----------



## Larry Laffer

Also,
was mir noch so einfällt der Reihe nach (wie es bei ProTool gemacht wird) :
- in der Kurvendarstellung legst du bei der Kurvenauswahl fest, ob die Skalierung von der Y-Achse Rechts oder Links kommt. Entsprechung musst du dann auch bei dieser Achse deine Grenzwerte eintragen.
- bei X-Achse musst du angeben, wieviele Werte abgeholt werden sollen.
- mit der ######-Geschichte kann ich nichts anfangen. Wo wird das angezeigt.
- das du in einem Ausgabefeld die Werte richtig angezeigt bekommst ist normal. Du hast ja auch die richtigen Werte in deinem DB.
- ich habe mir zum Testen in meine Bilder eine Refresh-Taste eingebaut. Diese setzt auf Tastendruck das Sammelbit und das Triggerbit und rücksetzt sie bei Loslassen wieder. Entsprechend lassen ich mir per Animation das anzeigen (um die SPS-Funktion zu kontrollieren). 
- denk dran, dass es einige Zeit braucht um 400 REAL-Werte von der SPS zur Visu zu übertragen. Die Triggerbits müssen für 1600 Bytes schon eine Weile anstehen ...

Mehr weiß ich jetzt nicht. Vielleicht kommst du damit weiter ...


----------



## Nordkurve

hey,

das war mal ein guter tipp mit dem anzeigen.

ich setzte die beiden variablen (kurvenbit und Kurven-Sammelbit) sowieso nur über eine schaltfläche und nicht im sps programm. habe diese beiden variablen jetzt mal grün hinterlegen lassen, wenn sie gesetzt sind. wenn ich die schaltfläche drücke, werden sie grün aber nicht wieder zurückgesetzt. muß ich damit arbeiten, das die nur gedrückt sind, wenn ich die schaltfläche drücke? ich denke nicht, weil doch wincc die beiden variablen wieder rurücksetzt, wenn er die daten gelesen hat.

habe dir im anhang mal den fehler mit den ##### dargestellt.


----------



## Larry Laffer

Ist den bei dir "Kurve_1" auch die erste Kurve ?
Welches Bit hast du als Triggerbit für die Kurve ? Ist es M111.0 ?

Ansonsten : Das Bild sieht schon mal toll aus ...


----------



## Nordkurve

nochmal eben zur verständlichkeit.

kurvenübertragungsbereich mw110
kurvenanforderung mw100

wenn ich bit0 nehme ist das kurvenbit m111.0 (wieso nicht m110.0??)
wenn ich bit1 nehme ist das kurvenbit m111.1 (wieso nicht m110.1??)


das kurvensammelbit soll ja das letzte bit sein. warum also nicht M111.7??? immoment ist m110.7 als kurvensammelbit gesetzt.

bis denne


----------



## Kai

Nordkurve schrieb:


> nochmal eben zur verständlichkeit.
> 
> kurvenübertragungsbereich mw110
> kurvenanforderung mw100
> 
> wenn ich bit0 nehme ist das kurvenbit m111.0 (wieso nicht m110.0??)
> wenn ich bit1 nehme ist das kurvenbit m111.1 (wieso nicht m110.1??)
> 
> 
> das kurvensammelbit soll ja das letzte bit sein. warum also nicht M111.7??? immoment ist m110.7 als kurvensammelbit gesetzt.


 
Es gilt folgendes:



		Code:
	

              MW110
 
     MB110             MB111
 
M110.7 - M110.0   M111.7 - M111.0
 
Bit 15 - Bit 08   Bit 07 - Bit 00

 
Gruß Kai


----------



## Larry Laffer

@Kai : Danke für die schöne Darstellung. Ich hätte es nicht schöner hin gekriegt ...

@Nordkurve : Alles klar ?


----------



## Larry Laffer

Auf jeden Fall, wenn du das so hast, dann müssen auf "Tastendruck" Daten kommen. Versuch mal die Taste etwas länger festzuhalten ...


----------



## Kai

Oder mal in STEP 7 eine VAT (Variablentabelle) anlegen, dort das MW110 eintragen und die Merker M110.7 (Kurvensammelbit) und M111.0 (Kurvenübertragungsbit Kurve 1) im Online-Betrieb gleichzeitig setzen.

Gruß Kai


----------



## Nordkurve

ok leute, das ist mir jetzt schon alles klar. nur klar ist mir noch nicht, warum es nicht funktioniert!!!!
habe es gerade noch mit den schaltflächen ausprobiert. wenn ich die schaltfläche drücke werden die beiden bits gesetzt und beim loslassen rückgesetzt. funkt trotzdem noch nicht!

bis denne


----------



## Nordkurve

das mit der vat tabelle habe ich schon probiert, die bits werden gesetzt. aber die kurve erscheint trotzdem nicht!

bis denne


----------



## Kai

Nordkurve schrieb:


> habe es gerade noch mit den schaltflächen ausprobiert. wenn ich die schaltfläche drücke werden die beiden bits gesetzt und beim loslassen rückgesetzt.


 
Das die Bits beim Loslassen der Schaltfläche zurückgesetzt werden, ist nicht richtig. WinCC flexible setzt die Bits selber zurück, wenn die Kurve vollständig eingelesen wurde.

Deine Schaltfläche sollte also nur beim Drücken die Bits setzen und nicht beim Loslassen zurücksetzen.

Gruß Kai


----------



## Nordkurve

ok, das hatte ich auch schon mal probiert. jetzt gerade nochmla probiert, aber die werden nicht zurückgesetzt. warum? weil er die kurve nicht hat?


----------



## Kai

Hast Du in WinCC flexible Deinen Kurven die richtigen Kurvenübertragungsbits zugeordnet?  

Kurve 1 = Bit 0
Kurve 2 = Bit 1 
...

Gruß Kai


----------



## Nordkurve

jup,

habe ich gemacht, bit 0 und dann den m111.0 als kurvenbit mit der schaltfläche gesetzt und zusätzlich das sammelbit m110.7


mw110 kurvenübertragung
mw100 kurvenanforderung


----------



## Nordkurve

hey, wenn ich mir das mw100 (kurvenanforderung) anschaue in der vat tabelle, da setzt wincc kein bit. das ist doch falsch oder?


----------



## Larry Laffer

Jetzt mal ne ganz dumme Frage ...
Ist es denn eventuell möglich, dass du eins von den beiden MW's irgendwo anders im Programm noch schreibend benutzt ? (MB100,MB101,MD98,MD100,MW101 etc. ?)


----------



## Kai

Es wird in MW100 erst das entsprechende Kurvenbit gesetzt, wenn eine Kurve erfolgreich eingelesen und angezeigt wurde. Da bei Dir aber keine Kurve eingelesen wird, wird auch kein Bit gesetzt.

Gruß Kai


----------



## Nordkurve

hatte ich auch schon gedacht und nachgeguckt. ist nicht der fall. ich habe auch nur mit dbs gearbeitet. habe jetzt zum ausprobieren nur die beiden mws benutzt.


----------



## Larry Laffer

war auch nur so eine Idee ...


----------



## Nordkurve

habe gerade nochmal mit der siemens hotline telefoniert, er kann mir aber nicht weiterhelfen.

hat vielleicht nochmla jemand ne idee?

ich verzweifel!


----------



## Larry Laffer

Ich habe da noch eine Idee ...
In der Anwendung, in der ich mit REAL-Zahlen gearbeitet habe hatte ich 100 Werte. Das hatte funktioniert. Mit meinen INT's arbeite ich aktuell normalerweise mit 200 Werte in einer Kurve. Das geht auch ... allerdings mit ProTool, aber ich glaube nicht, dass das den Unterschied macht.

Setz doch einfach mal die Anzahl der Kurven-Werte auf 100 herunter. Vielleicht gibt es ja einen Max.-Wert oder irgendwas ähnliches. Es geht ja zunächst erstmal darum, das Ganze zum Rennen zu kriegen ...


----------



## Kai

Larry Laffer schrieb:


> Setz doch einfach mal die Anzahl der Kurven-Werte auf 100 herunter. Vielleicht gibt es ja einen Max.-Wert oder irgendwas ähnliches.


 
Bei mir funktioniert die Kurvenanzeige auch mit 400 Werten ohne Probleme.

Gruß Kai


----------



## PLCTEC

Hi

kann man eigentlich mehrere X-Achsen in einem Trend anzeigen ????
Mehrere Kurven ist kein Problem.

Gruß


----------



## Kai

In WinCC V6 ist das kein Problem, WinCC flexible 2005 kann das aber scheinbar nicht. Zumindest habe ich in WinCC flexible 2005 keine Einstellungen gefunden, mit denen man mehrere X-Achsen in einem Trend anzeigen könnte.

Gruß Kai


----------



## PLCTEC

Genau das habe ich auch gemerkt....... weil in WinCC 6 mache ich das auch immer mit 2,3, X-Achse

gruß


----------



## Larry Laffer

auch eine Werte-gesteuerte X-Achse (also ein echtes X-Y-Diagram) wäre eine schöne Sache ...


----------



## Larry Laffer

@Nordkurve:
das könnte der Fehler sein. Vergleiche mal die beiden Kurven-Variablen (deine und die von mir eingefügte letzte ...)


----------



## Kai

Ich habe mal in WinCC flexible 2005 eine Kurvenanzeige für 2 Kurven projektiert. Von der Projektierung habe ich einige Bilder gemacht und die Bilder in ZIP-Archiven als Anhang beigefügt. Vielleicht hilft mein Beispielprojekt ja weiter.  

Gruß Kai


----------



## Nordkurve

hey,

vielen dank für eure mühe! werde es morgen früh gleich mal ausprobieren! werde mich dann hier wieder melden! also einen schönen feierabend!

bis denne


----------



## Larry Laffer

Hallo,
noch mal zur Klarstellung : Ich nehme an, dass Nordkurve als Kurven-Variable sein komplettes Array genommen hat. Das kann ich unter ProTool nicht machen, sondern nur das erste Array-Element und dann gebe ich die Anzahl der Gesamt-Elemente an. Das kann man auch unter WinCC-Flex so machen (mein Beispiel in der unteren Zeile). Da ich keine Möglichkeit habe, das auszuprobieren und ich sonst auf anhieb keinen Fehler erkennen konnte (Kai scheinbar auch nicht) wäre das zumindest einen Versuch wert ...
 oder


----------



## Kai

Larry Laffer schrieb:


> Ich nehme an, dass Nordkurve als Kurven-Variable sein komplettes Array genommen hat. Das kann ich unter ProTool nicht machen, sondern nur das erste Array-Element und dann gebe ich die Anzahl der Gesamt-Elemente an. Das kann man auch unter WinCC-Flex so machen (mein Beispiel in der unteren Zeile).


 
So habe ich das in meinem Beispielprojekt gemacht. 

Gruß Kai


----------



## Larry Laffer

Hallo Kai,
das wäre ja der Knaller, wenn wir das Problem dann nun geknackt hätten ...
Wolln wir doch mal sehen was Nordkurve morgen dazu sagt ...


----------



## Nordkurve

so leute,

endlich mal eine erfolgsmeldung! es funtkioniert jetzt endlich! mußte aber die variablen für das triggerbit und das kurvensammelbit auch in der variablentabelle von wincc selber anlegen!

also nochmal besten dank für eure geduld und die hilfe!

bis denne


----------



## Larry Laffer

So, jetzt noch einmal für die Nachwelt ...
Hat es daran gelegen, was Kai und ich vermutet haben (Array als Kurven-Variable deklariert) ?


----------



## Larry Laffer

Nordkurve schrieb:


> ... also nochmal besten dank für eure geduld und die hilfe!


 

Danke-Button !


----------



## Nordkurve

ja, ihr lagt mit euren vermutungen richtig!

bis denne


----------



## Nordkurve

nochmal eben ne frage an kai,

wollte es auch realisieren, wie du mir das im beispiel gezeigt hast, das man nur eine kurve einblenden lassen kann.

habe auch mit dem skript für kurve 1 und kurve 2 gearbeitet. habe diese genauso angelegt wie du mir das mit den scrennshots gezeigt hast. jedoch funkt das nicht. es ändert sich nichts. habe dann bei deinen scrennshots gesehen, das du beim skript noch ein "DisplayCurrentScreenName" drinne hast, den benötige ich nicht? oder doch. wenn ja, könntest du mir sagen, wie der aussieht.

ist mir zwar nicht so wichtig, das ich nur eine kurve einblenden lassen kann, nur wäre noch eine schöne spielerei!*G

bis denne


----------



## Kai

Nordkurve schrieb:


> endlich mal eine erfolgsmeldung! es funtkioniert jetzt endlich!


 
Super ...  

Gruß Kai


----------



## Kai

Nordkurve schrieb:


> habe dann bei deinen scrennshots gesehen, das du beim skript noch ein "DisplayCurrentScreenName" drinne hast, den benötige ich nicht? oder doch. wenn ja, könntest du mir sagen, wie der aussieht.


 
Da muss ich heute Abend noch mal nachsehen, was in dem Script drin steht. Ich weiß nur noch, dass das Script von WinCC flexible automatisch angelegt wurde und nicht gelöscht werden soll. 

Gruß Kai


----------



## Nordkurve

das klingt ja gut!*G

dies ist bei mir nämlich nicht merh drinne!

kannst dich ja sonst nochmal melden!

bis denne


----------



## SolSna

Hallo,
habe mir jetzt die Thematik hier durchgelesen, da ich exakt das gleiche Problem habe.
Folgendes ist mir noch nicht 100% klar:

1. 
Die Kurvenanforderung setzt das entsprechende Bit (Kurve1=Bit0), sobald am Bediengerät die Seite mit der Kurvendarstellung aufgeschlagen wurde.
Im DB wurde der benötigte Platz für die Kurvenanforderung geschaffen:







Für was brauche ich dann noch unbedingt das MW100? Da das Bit automatisch gesetzt und rückgesetzt wird, muß ich mich um das MW100 nicht kümmern, richtig? 



2. 





Die beiden Bits der Kurvenübertragung 1 muss ich selbst setzen, richtig?
Kann ich das im Programm wie folgt realisieren:



		Code:
	

U E1.0                  // Taste Kurve aufzeichen
U E2.0                  // Signal Einheit Start
S DB14.DBX0.7

U E1.0                  // Taste Kurve aufzeichen
U E2.0                  // Signal Einheit Start
S DB14.DBX1.1


----------



## Larry Laffer

Deine Schlussfolgerungen sind m.E. korrekt. Du kannst die Kurven-Anforderung auch mit in deinen DB packen.
Entscheidend ist jedoch, dass du die beiden Bits für die Kurven-Übertragung (Kurven-Bit und Sammelbit) auch wieder rücksetzen musst. In meinem Programmen mache ich das üblicherweisen nach Ablauf einer Zeit. Ich habe aber auch schon mal irgendwo gelesen, dass ein Bit der Kurven-Anforderung sagt, dass die Kurve eingelesen wurde.

Gruß
LL


----------



## SolSna

Larry Laffer schrieb:


> Entscheidend ist jedoch, dass du die beiden Bits für die Kurven-Übertragung (Kurven-Bit und Sammelbit) auch wieder rücksetzen musst.


Ist es nicht so, dass das Bit automatisch wieder rückgesetzt wird?

Jedenfalls klappt es soweit mit der Kurve  
Dieser Tread hat mir sehr geholfen. Ich danke euch!

Gruss SolSna


----------



## funkdoc

kurvenanforderung ist das bit welches von der runtime auf 1 gesetzt wird wenn das bild mit der kurvenanzeige aktiviert wird.

das kurvenbit muss aktiv sein, wenn das sammelbit gesetzt wird... erst dann wird die kurve im fenster akualiseirt. kurvenbit und sammelbit werden nach einem zyklus von der runtime zurückgesetzt. (winccflex07)

grüsse


----------



## Mangokind

Hallo!

ich stehe derzeit auch vor dem mysterium kurvenfunktion mit ähnlichen problemen wie hier beschrieben.

nochmal zum präzisieren:

*Die Aufgabe:*
-habe ein array mit 101 DWORD/ULong-werten in einem DB und möchte diese *im runtimesimulator* anzeigen lassen (dann später an der maschine, aber wenns schon im simulator zickt, brauch ichs an der maschine garnicht erst anstöpseln)
-wohlgemerkt nur 1 kurve... die auswahl der anzeigeobjekte erfolgt später mangels skriptunterstützung das bediengeräts SPS-seitig über ein zwischenpuffer-DB mit Array drin

*das Setting:*
-winCC flex 2005 compact
-TP177b mono als anzeigegerät, also kann ich scripts schonmal knicken
-habe eine kurvenanzeige mit
*kurventyp bitgetriggert
*Quelleinstellungen:
>Kurvenpuffer: DB_XYZ.Ergebnispuffer
also direkt das Array, nicht wie hier beschrieben das 1. element davon...
winCC akzeptiert auch ausschließlich arrays und beim ersten element gibt es einen fehler
>bit: 0
>kurvenanforderung: DB_XYZ.kurvenanforderung
>Kurventrasfer 1: DB_XYZ.Kurvenbertragung
kurzgefasst also keine internen variablen in der steuerung, sondern werte im DB, in dem auch die werte liegen

in der variablentabelle:

>erfassungsart von DB_XYZ.Ergebnispuffer und DB_XYZ.Kurvenbertragung: "zyklisch fortlaufend" (was mich irritiert... sollte es nicht eher 'auf anforderung' oder 'zyklisch bei verwendung' sein?)
>erfassungsart von DB_XYZ.kurvenanforderung: "zyklisch bei verwendung" (was imho schon mehr sinn macht)

im siemensbeispiel hatten 2/3 arrays bei erfassungsart 'zyklisch fortlaufend' und eins 'zyklisch bei verwendung'.

scheint also beides möglich zu sein.

*Das Resultat:*

-ziemlich exakt das ####### bei Wert
-Im runtime-simulator:
>die Kurvenanforderung wird auf 1 gesetzt, wenn das bild geöffnet wird, was ja auch sinn macht, da das bit auf 0 steht
>wenn ich die Kurvenübertragung setze, also das 0. bit und das MSB auf 1 setze bzw den UINT mit 32769 beschreibe, setzt die simulation den wert nach einer halben sekunde wieder auf 0...
soweit ist das ja auch gewünscht. anscheinend wird also IRGENDWAS ausgelesen und nach beenden des lesens die Kurvenübertragung auf 0 zurückgesetzt

anschließend immernoch ###### bei wert.

*Anmerkungen:*
-wenn ich das siemensbeispiel im runtime simulator ausführe, bekomme ich das gleiche resultat... jedoch wird das dort projektierte bediengerät (MP270B) von meiner winCC-version nicht unterstützt und ich habs dreist auf oben erwähntes TP177B geändert. die bilder werden trotzdem angezeigt

-ob ich die werte in meinem projekt setze oder nicht, spielt scheinbar keine rolle. außerdem müsste er ja mindestens 0 anzeigen, wenn der wert noch nicht gesetzt wurde

-bin absoluter WinCC-neuling, aber wenigstens den simpelsten fall einer kurvenanzeige sollte ich doch hinbekommen können. was nicht winCC-seitig geht, muss halt auf die SPS ausgelagert werden (skalierung o.ä.)

*Die Fragen:*
-Ist es bei diesem bediengerät (TP177b mono) und mit dieser WinCC-version (winCC flex 2005 compact) überhaupt möglich, kurvenanzeigen zu simulieren? eigentlich würde er es mir ja sonst nicht anbieten
laut siemenswerbung müsste es gehen, aber laut aussagen von kollegen gehen schonmal rezepturdatensätze entgegen der werbung nicht.


-wenn nein, geht es denn dann an der realen Maschine oder ist auch das nicht möglich?

-falls doch: wo könnte mein fehler liegen?

vielen dank für ihre hilfe!


----------



## Larry Laffer

Hallo,
ich fasse das mal zusammen :
Du möchtest eine Bit-getriggerte Kurve, dessen Daten du in der SPS erfasst hast auf dem TP darstellen.

Das geht meines Wissens mit einem TP17xA gar nicht. Mit einem TP17xB kannst du Trendkurven darstellen (mit dem Triggerbit wird ein Wert aus der SPS gelesen).
Alle größeren TP's etc. können auch Profilkurven darstellen.

Gruß
LL


----------



## Mangokind

Larry Laffer schrieb:


> Hallo,
> ich fasse das mal zusammen :
> Du möchtest eine Bit-getriggerte Kurve, dessen Daten du in der SPS erfasst hast auf dem TP darstellen.


 
genau.



Larry Laffer schrieb:


> Das geht meines Wissens mit einem TP17xA gar nicht. Mit einem TP17xB kannst du Trendkurven darstellen (mit dem Triggerbit wird ein Wert aus der SPS gelesen).
> Alle größeren TP's etc. können auch Profilkurven darstellen.


 
glück gehabt 

ich denk mal der tp177b ist das, was ich hier als mindeststandard an unseren maschinen vorraussetzen kann.

nochmal zur frage:

sollte die 'runtime mit simulator' mir auch schicke kurven ausspucken/werte einlesen oder geht das erst zur laufzeit und mehr als das zurücksetzen der kurvenübertragung brauch ich garnicht zu erwarten?


----------



## Mangokind

Ich habe heute spaßeshalber nach langer Zeit nochmal mit der Kurvenanzeige rumgespielt und obwohl ich nichts geändert habe geht es plötzlich.... partiell

Er malt mir zwar einen hübschen Graph mit den korrekten Werten, aber es lässt sich nur aktualisieren, indem ich das Bild verlasse und wieder neu öffne (und dann auf den Button drücke, der die Kurvenübertragung entsprechend setzt)

Der Graph bleibt interessanterweise gespeichert, bis ich die Runtime beende.

Wie müsste ich denn einen 'aktualisieren'-Button projektieren, damit der Graph neu berechnet/aufgebaut wird?

Wenn er einfach nur die Kurvenübertragung entsprechend setzt, funktioniert er nur 1 mal nach Aufruf des Bildes mit dem Graph (bis das Bild mal verlassen wird)

Eine zusätzliche Funktion "aktiviereBild" wo das Bild einfach neu geladen wird, schafft auch keine Abhilfe.

Hat jemand eine Idee?


----------



## Larry Laffer

... wenn du eine Aktualisierung einer Bit-getriggerten Kurve (Profil-Kurve) wünscht, dann mußt du *immer* Kurven-Bit und Sammel-Bit zusammen setzen. Das kann sogar über eine Taste im TP geschehen ...

Gruß
LL


----------



## Mangokind

Larry Laffer schrieb:


> ... wenn du eine Aktualisierung einer Bit-getriggerten Kurve (Profil-Kurve) wünscht, dann mußt du *immer* Kurven-Bit und Sammel-Bit zusammen setzen. Das kann sogar über eine Taste im TP geschehen ...
> 
> Gruß
> LL


 
das meinte ich mit


> Wenn er einfach nur die Kurvenübertragung entsprechend setzt, funktioniert er nur 1 mal nach Aufruf des Bildes mit dem Graph (bis das Bild mal verlassen wird)


 
klappt wie gesagt nur beim 1. mal nach aufruf des bilds.

wenn ich das bild verlasse und wieder lade, klappts wieder genau 1 mal.

würde mir aber wünschen, dass es aktualisiert, ohne das bild (sichtbar) zu verlassen.

vielen dank!


----------



## Larry Laffer

... ich habe gerade noch einmal ein paar Beiträge nach oben gelesen ...

Was benutzt du für ein TP und was für eine Kurven-Anzeige ?
Falls ein TP177B und eine Trendkurve, dann magst du recht haben ... 

Gruß
LL


----------



## Mangokind

Larry Laffer schrieb:


> ... ich habe gerade noch einmal ein paar Beiträge nach oben gelesen ...
> 
> Was benutzt du für ein TP und was für eine Kurven-Anzeige ?
> Falls ein TP177B und eine Trendkurve, dann magst du recht haben ...
> 
> Gruß
> LL



Ich benutze ein TP177B und es steht mir im WinCC flex 2005 nur 1 Kurvenanzeige zur Auswahl, die 'Kurvenanzeige' heißt . 

Und irgendwie würde ich lieber Unrecht haben...

Ist zwar kein Beinbruch für den späteren Bediener, ne Seite zurückzublättern und dann wieder ne Seite vor, aber die dummen Sprüche deswegen sind mir sicher.


----------



## Mangokind

kleines update:

der fehler lag mal wieder 40 cm vorm bildschirm.

die kurvenanzeige lädt immer ein fest definiertes array, welches beim aufruf des bildes per blockmove mit irgendwelchen anderen arrays beschrieben wurde..

ich hab beim aktualisieren-knopf zwar das bild mit der kurve neugeladen und die kurvenübertragung gesetzt, aber vergessen, dass array in dem zwischenspeicher-DB mit neuen werten zu füllen, wie es der fall war, wenn ich das bild verlassen und neu geladen habe :sw18:

kurz: funktioniert jetz einwandfrei :TOOL:

danke euch bzw larry


----------



## santero

Hallo, 

hab da auch ein ähnliches problem.Ich muss aus einem einem Prozess der ca. 8 min. dauert, 3 Parameter visualisieren.Ich würde gerne alle 2 sekunden die werte aufnehmen  und darstellen.die kurve sollte fortlaufend angezeigt werden und es soll zwischen dem kruvenbild udn anderen bildern umschaltbar sein. (und die fertige kurve nahc einem zyklus sollte archivierbar sein)

habe mich jetzt eingearbeitet.die Kurve mit "Puffer bitgetriggert" anzeigen kriege ich hin.das mit dem wechselpuffer auch.man kann ja bie der kurve unter einstellungen -> x-achse  den modus einstellen.

wähle ich uhrzeit aus und stelle als zeitbreich 60s dar läuft die kurvenaufzeichnung aber mehr als 60s.kann ich die kurvenaufzeichnung irgendwie stoppen, weil wie es mir scheint sind kurvenübertragung und kurvenanfoderung unerheblich wenn man als modus "uhrzeit wählt".

mfg


----------



## santero

habe auch das problem das ich die kurvenanzeige nicht löschen kann wenn ich eine neue kruve darstellen will.

die bits habe ich alle auf 0 gesetzt


----------



## Remo Foletti

*Nachfrage*

Hallo 
ich habe genau das gleiche Problem

-ziemlich exakt das ####### bei Wert
-Im runtime-simulator:
>die Kurvenanforderung wird auf 1 gesetzt, wenn das bild geöffnet wird, was ja auch sinn macht, da das bit auf 0 steht
>wenn ich die Kurvenübertragung setze, also das 0. bit und das MSB auf 1 setze bzw den UINT mit 32769 beschreibe, setzt die simulation den wert nach einer halben sekunde wieder auf 0...
soweit ist das ja auch gewünscht. anscheinend wird also IRGENDWAS ausgelesen und nach beenden des lesens die Kurvenübertragung auf 0 zurückgesetzt

anschließend immernoch ###### bei wert.

hast Du das Problem nun gelöst?




Mangokind schrieb:


> Hallo!
> 
> ich stehe derzeit auch vor dem mysterium kurvenfunktion mit ähnlichen problemen wie hier beschrieben.
> 
> nochmal zum präzisieren:
> 
> *Die Aufgabe:*
> -habe ein array mit 101 DWORD/ULong-werten in einem DB und möchte diese *im runtimesimulator* anzeigen lassen (dann später an der maschine, aber wenns schon im simulator zickt, brauch ichs an der maschine garnicht erst anstöpseln)
> -wohlgemerkt nur 1 kurve... die auswahl der anzeigeobjekte erfolgt später mangels skriptunterstützung das bediengeräts SPS-seitig über ein zwischenpuffer-DB mit Array drin
> 
> *das Setting:*
> -winCC flex 2005 compact
> -TP177b mono als anzeigegerät, also kann ich scripts schonmal knicken
> -habe eine kurvenanzeige mit
> *kurventyp bitgetriggert
> *Quelleinstellungen:
> >Kurvenpuffer: DB_XYZ.Ergebnispuffer
> also direkt das Array, nicht wie hier beschrieben das 1. element davon...
> winCC akzeptiert auch ausschließlich arrays und beim ersten element gibt es einen fehler
> >bit: 0
> >kurvenanforderung: DB_XYZ.kurvenanforderung
> >Kurventrasfer 1: DB_XYZ.Kurvenbertragung
> kurzgefasst also keine internen variablen in der steuerung, sondern werte im DB, in dem auch die werte liegen
> 
> in der variablentabelle:
> 
> >erfassungsart von DB_XYZ.Ergebnispuffer und DB_XYZ.Kurvenbertragung: "zyklisch fortlaufend" (was mich irritiert... sollte es nicht eher 'auf anforderung' oder 'zyklisch bei verwendung' sein?)
> >erfassungsart von DB_XYZ.kurvenanforderung: "zyklisch bei verwendung" (was imho schon mehr sinn macht)
> 
> im siemensbeispiel hatten 2/3 arrays bei erfassungsart 'zyklisch fortlaufend' und eins 'zyklisch bei verwendung'.
> 
> scheint also beides möglich zu sein.
> 
> *Das Resultat:*
> 
> -ziemlich exakt das ####### bei Wert
> -Im runtime-simulator:
> >die Kurvenanforderung wird auf 1 gesetzt, wenn das bild geöffnet wird, was ja auch sinn macht, da das bit auf 0 steht
> >wenn ich die Kurvenübertragung setze, also das 0. bit und das MSB auf 1 setze bzw den UINT mit 32769 beschreibe, setzt die simulation den wert nach einer halben sekunde wieder auf 0...
> soweit ist das ja auch gewünscht. anscheinend wird also IRGENDWAS ausgelesen und nach beenden des lesens die Kurvenübertragung auf 0 zurückgesetzt
> 
> anschließend immernoch ###### bei wert.
> 
> *Anmerkungen:*
> -wenn ich das siemensbeispiel im runtime simulator ausführe, bekomme ich das gleiche resultat... jedoch wird das dort projektierte bediengerät (MP270B) von meiner winCC-version nicht unterstützt und ich habs dreist auf oben erwähntes TP177B geändert. die bilder werden trotzdem angezeigt
> 
> -ob ich die werte in meinem projekt setze oder nicht, spielt scheinbar keine rolle. außerdem müsste er ja mindestens 0 anzeigen, wenn der wert noch nicht gesetzt wurde
> 
> -bin absoluter WinCC-neuling, aber wenigstens den simpelsten fall einer kurvenanzeige sollte ich doch hinbekommen können. was nicht winCC-seitig geht, muss halt auf die SPS ausgelagert werden (skalierung o.ä.)
> 
> *Die Fragen:*
> -Ist es bei diesem bediengerät (TP177b mono) und mit dieser WinCC-version (winCC flex 2005 compact) überhaupt möglich, kurvenanzeigen zu simulieren? eigentlich würde er es mir ja sonst nicht anbieten
> laut siemenswerbung müsste es gehen, aber laut aussagen von kollegen gehen schonmal rezepturdatensätze entgegen der werbung nicht.
> 
> 
> -wenn nein, geht es denn dann an der realen Maschine oder ist auch das nicht möglich?
> 
> -falls doch: wo könnte mein fehler liegen?
> 
> vielen dank für ihre hilfe!


----------



## santero

Gibt es eine Möglichkeit eine Kurvenanzeige zu reseten bzw. zu leeren um die anzeige in den grundzustand, wie nach runtime start zu versetzen ??


----------



## Onkel Dagobert

*Danke*

Ein großes Danke an alle Beteiligten hier! Ich habe dank eurer "Kurvendiskussion" in kürzester Zeit eine bitgetriggerte Kurve hin bekommen.

Was ich gerne noch realisiert hätte, ist eine Variable für die x-Achse, s.d. Wertepaare angezeigt werden können. Wie es aussieht, geht es nicht. Gibt es da noch eine versteckte Funktion?


----------



## PN/DP

Hallo Onkel,

Jesper hat hier mal ein X/Y-Diagramm in einer WinCCflex-PC-Runtime beschrieben. Vielleicht ist das ja was für Dich.

Harald


----------

