Analogwert - Flanke registrieren

garywandke

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

ich habe derzeit das Problem das ich gern eine steigende oder fallende Flanke eines Analogwertes (vorzugsweise INT) auswerten möchte (im (STEP7). Das ganze auf eine Zeit bezogen (nicht Bedingung) z.B nach 20 sek, Analogwert gestiegen/gefallen. Hab mir da auch schon was überlegt, wär aber etwas umständlich.
Meine Frage wär dann ob es da nicht einen Baustein für gibt oder ob jemand schonmal das selbe "Problem" hatte und wie es gelöst wurde?
Anbei stelle ich gleich noch ne andere Frage, undzwar: Ich arbeite in meinem Programm öfters mit takten, d.h. zB Ausgang 10sek AN/15sek AUS, hab mir hierzu immer über 3-4 netzwerke einen Taktgeber mit Zeiten zusammengebastelt. Geht bestimmt auch irgendwie über den CPU internen Taktmerker und Zähler, aber gibts denn da nicht auch vieleicht einen Baustein oder ne unkompliziertere Art?
Über schnelle Antworten würd ich mich freun, steck nämlich grad fest.

thnx Gary
 
Hallo,

wenn Du ein wenig über Deine Hardware erzählen könntest, das würde helfen.

Gedanklich würde ich die Sache so angehen:

Wert sichern
Zeit starten
Wenn Zeit fertig, neuen wert einlesen, sichern,
alter wert + Hysterese, Vergleich mit neuer wert
Wenn größer, dann Merker für 'größer' Flanke setzen
Dito für Hysterese Wert kleiner
neuen ert in alten Wert sichern,
oben wieder anfangen

Ist das verständlich?

Gruß, Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anbei stelle ich gleich noch ne andere Frage, undzwar: Ich arbeite in meinem Programm öfters mit takten, d.h. zB Ausgang 10sek AN/15sek AUS, hab mir hierzu immer über 3-4 netzwerke einen Taktgeber mit Zeiten zusammengebastelt. Geht bestimmt auch irgendwie über den CPU internen Taktmerker und Zähler, aber gibts denn da nicht auch vieleicht einen Baustein oder ne unkompliziertere Art?
Über schnelle Antworten würd ich mich freun, steck nämlich grad fest.

thnx Gary

Denke mal das sollte dir helfen (Ich geh mal von einer S7-300 aus...):
http://www.steuerungen.hhs.ka.bw.schule.de/~cbucht/sps/timer/taktmerkerbyte.pdf
 
Gibst du einen Sollwert vor und willst abhängig von diesem eine positive bzw. negative Differenz erfassen oder wie darf man das verstehen?
 
Flanke registrieren

Habe gerade eine Baustelle wo eine S5 gegen eine S7 getauscht wird, mit Sinaut und allem pipapo... Und in dem Alten S5-Programm habe ich einen sogenannten Tendenz-FB... Denke das sollte genau das sein was du suchst, habe den schon auf S7 umgesetzt, nur halt noch nicht getestet, in der S5 funzt der aber einwandfrei, du hast einen Analogwert, gibst dem eine Zeit in der er prüfen soll, noch einen DB mit (frag jetzt nicht wieviel dw's benötigt wurden, war auf jeden fall nicht viel) einen Eingang um den FB zu aktivieren, einen Merker für die steigende Flanke und einen für die fallende flanke... der ist allerdings für REAL-Werte... denke aber das man den auch auf INT umstellen kann...

bei bedarf bitte anmailen

Gruß IceBear
 
Man kann den Messwert dämpfen, oder auch einen fortlaufenden Mittelwert berechnen. Wenn man dann die Differenz dieses Wertes zum aktuellen Messwert auswertet, kann man Spitzen oder auch die Tendenz ermitteln.


Gruß, Onkel
 
Bei den Schneieder Premium Analogbaugruppen kann ich einen Filter von 0-6 für jeden Kanal einstellen, bei 6 Wird dann zum Beispiel eine gleitende Mittelwertbildung in einem Zeitraum von 6,5sek ausgeführt.

Gibt es sowas bei Siemens nicht, muss ich da die Mittelwertbildung wirklich selber programmieren?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nein sowas gibts bei siemens nicht komischerweise, bei fast allen anderen schon zb. mitsubischi.
da kann man das bei den analbaugruppen einstellen. sehr praktisch. ich nenn das dann analogeingang entprellen. schön gleitend machen, bei gebern die ein bisschen sprunghaft sind.

aber eine mittelwertsberechnung ist schnell programmiert, man ist dann da auch sehr flexibel... ist der mittelwert zeit oder zyklusabhängig. die zeit kann man dann selber wählen.

grüsse
 
Zuletzt bearbeitet:
taktgenerator

salute...

was deinen taktgenerator betrifft...

ich mache das meistens mit 2 timern (einschaltverzögerungen) und einem Konnektor dazwischen, wenn ich irgend einen speziellen takt benötige... :cool:
ansonsten nehme ich auch die fertigen taktmerker der cpu...

gruss Milo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,
Bin soeben nach fast 11 Stunden Arbeit:twisted::twisted::twisted: nach hause gekommen, werde den FB morgen mal hier einstellen, vielleicht schaff ich's spät abends noch...

Gruß IceBear
 
Fb

Sodele, nu hab ich mich von meinem Tag erholt, hier der versprochene Baustein... Viel spass damit

Gruß IceBear
 

Anhänge

  • Analog.zip
    23,9 KB · Aufrufe: 75
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
und natürlich erstmal vielen dank für die fixen antworten. Bin leider nicht ehr dazu gekommen, sorry.

Zur ersten Antwort vom TommyG, (Hardware: CPu 317 2DP, 3x DI 3xDO 4x AI 2x AO und so ne Verbinderbaugruppen, hab die Daten grad nicht hier)ich schrieb das ich schon ne Idee hab mit den Tendenzen. Freilich ist das blöd das es da wirklich keinen Baustein für gibt aber ich hatt mir das wirklich haargenau so gedacht wie dus beschrieben hast. Eine halbe Stunde nach meinem Forumseintrag wars auch dann fertig. Vieleicht war ich ein bisschen vorschnell mit meiner Frage. Aber im Grunde genommen gings mir ja um den fehlenden Baustein. Echt peinlich von Siemens da es auf die Art natürlich ne menge Netzwerke verschlingt und die Übersicht drunter leidet. Funktioniert aber 1A.
Schreibe meinen Istwert dann alle 10s, für 2s in den DB. Diesen Takt (Teil 2 meiner Frage) hab ich dann doch in einem einzigen Netzwerk unterbekommen. Mach mir hierzu, wie sollt es auch anders sein, den Taktmerker der CPU zu nutze. für alle Interessenten (?) würd ich das ganze auf arbeit auch mal abfotografieren und ins Forum stellen.

Zu Tonga: ich habe einen Istwert gekoppelt an einen Regler und möchte mittelst Auswertung der steigenden/fallenden Flanke und diverser anderer Faktoren, Reglerwerte (Integrierzeiten Proportionalitätsfaktoren) während des Betriebs ändern. In dem Teil des Projekts handelt es sich um einen mehr oder wenigen komplizierten aber tierisch trägen Heizregler. 10% mehr Heizleistung bekomm ich effektiv eine halbe Stunde später am Istwert mit. Wird bestimmt nicht so einfach aber vieleicht hatte jemand schonmal die selbe Problematik??

Wie gesagt, vielen Dank nochmal...
Werd die nächste Zeit (bin noch 4 Wochen mit dem Projekt beschäftigt) sicher noch weitere Themen ins Forum stellen oder einfach hier weiterschreiben. Vieleicht auch noch n paar WinCC Fragen mit reinschreiben.

Gary
 
Oh gab ja noch ne Seite 2,
ja Milo so hab ichs dann auch gemacht, einmal SEVZ, einmal AVZ und ein Rückwärtszähler.
Mein Problem ist hierbei das mein Taktgeber gestartet werden muss. Das ganze hält nämlich an sobald die CPU auf Stop geht, bzw der Strom weg ist. Er soll am besten die ganze Zeit laufen. Kann ich einen CPU Neustart irgendwie auffassen und auf einen Merker, ein Bit oder ähnliches legen? würd den Timer dann mit einer steigenden Flanke jenes Bits starten.
 
Wenn man mal die Suchfunktion bemüht, findet man hier viele Varianten für Zeitmeß- und Taktfunktionen. Einfachste Möglichkeit für einen Taktgenerator sind die CPU-Taktmerker und bei variablen Flankenverhältnissen eine Zeitmessung durch Aufaddition der Zykluszeit mit einem Vergleicher bzgl. des Istwertes und einer Überlaufbehandlung.

Zum "Glätten" von Analogwerten verwendet man am besten ein PT1-Glied (Suchfunktion!) und den Anstieg erhält man durch eine dem PT1-Glied nachgeschaltete Differenzierfunktion (Aktualwert-Vorzykluswert=Anstieg).
Man braucht da keine Zeiten oder Taktgeneratoren:roll:. Das Rechnen wird bei sowas am einfachsten durch Realzahlen.
 
Taktgenerator die 2te...

salute...

was deinen blinker angeht...

wenn die cpu auf stop geht, dann läuft sowiso nichts mehr...

ich brauche meinen takt auch nicht zu starten, ausser ich setze zu vorderst noch eine aktivierungsbedingung...

ich benötige dazu 2 timer des typs S_EVERZ, und einen konnektor dazwischen.

zu guter letzt verknüpfst du noch den timer nach dem konnektor negiert mit dem ersten timer. fertig...

hier der awl code...

p.s.
habe xtra die nop 0 dringelassen, dass du auf kop/fup umschalten kannst):-D

U(
UN T 101
L S5T#1S
SE T 100
NOP 0
NOP 0
NOP 0
U T 100
)
= M 100.0
U M 100.0
L S5T#1S
SE T 101
NOP 0
NOP 0
NOP 0
NOP 0

gruss Milo...
 
jawoll, funktioniert ausgezeichnet :) .

Hab das heut auf Arbeit auch mal anders gelöst--> da meine DIs sowieso alle O werden, ob Spannungsausfall oder CPU Stop, hab ich einfach den DI für von meiner Steuerspannung genommen, die sowieso anliegen muss. Der Timer kann im prinzip immer laufen.

Hätt noch eine Performance Frage...hab meine ganzen Messwerte, ca 20 Stück geladen, skaliert und in nen DB verfrachtet (muss ich wegen WinCC). Gleich dahinter hab ich sie in Merkerwörter geladen um sie im Programm zu verwenden. Ist es günstiger wenn ich das so beibehalte oder wenn ich die Messwerte die ich brauche mir direkt aus dem DB lade? Weiß jemand wieviele Merker ich im allegeinem bei der 3172DP benutzen kann? 200 scheinen kein Problem zu sein. In der Hardware hab ich auch nur den allgemeinen Hauptspeicher gefunden...

Dank nochmal, gary
 
Zurück
Oben