TIA Plausibilität und Gradientenverhalten eines Analogwert prüfen

S.G

Level-2
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo leute ,
ich werde sehr dankbar , wenn jemand mir eine leichte Erklärung und auch eine lösung über dieses Thema geben!!
bei einem Projekt müssen mehrere Analogwerten(S7_1500) auf folgende Zustände überprüft werden:
1.Plausibilität
2.Gradientenverhalten
jetzt ich habe zwei Frage:
warum müss ein Analogwert auf diese zwei zustände Überprüft werden?
was für programm soll ich schreiben , um die zwei Ziele zu erreichen?
 
Beispiele:
Plausibilität: Du hast eine Durchflussmessung hinter einer Pumpe. Ist die Pumpe aus sollte Durchfluss gleich Null sein, wenn die Pumpe läuft dann sollte ein Durchfluss kommen. Oder in Zusammenhang mit dem folgenden Beispiel, eine Änderung an einem Behälterfüllstand obwohl keine Befüllung oder Entleerung aktiv ist.
Gradientenverhalten: Behälterfüllstandsmessung, dieser wird kontrolliert über Rohrleitungen mit einem bestimmten Max.-Durchfluss befüllt oder entleert. Daraus ergibt sich eine maximal erlaubte Änderungsrate des Füllstands. Wird die Rate überschritten, ist entweder die Messung defekt, oder du hast beispielsweise einen Rohrleitungsbruch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beispiele:
Plausibilität: Du hast eine Durchflussmessung hinter einer Pumpe. Ist die Pumpe aus sollte Durchfluss gleich Null sein, wenn die Pumpe läuft dann sollte ein Durchfluss kommen. Oder in Zusammenhang mit dem folgenden Beispiel, eine Änderung an einem Behälterfüllstand obwohl keine Befüllung oder Entleerung aktiv ist.
Gradientenverhalten: Behälterfüllstandsmessung, dieser wird kontrolliert über Rohrleitungen mit einem bestimmten Max.-Durchfluss befüllt oder entleert. Daraus ergibt sich eine maximal erlaubte Änderungsrate des Füllstands. Wird die Rate überschritten, ist entweder die Messung defekt, oder du hast beispielsweise einen Rohrleitungsbruch.
Danke für die Erklärung .
ich müss mehrere Analogwerte bzw Analogeingänge, die öft Füllstand sind normiern und jede Analogwert müss auf die zustände Plausibilität und Gradientenverahlten geprüft werden.
Hardware: S7_1500 / 16Bit Analogeingang 0 bis 27648 /4..20mA / Messbereich 0 bis 100
bei Thema Gradientenverhalten ist klar geworden was ich muss programmieren:

IF Messwert >=28000.0 (~21mA) oder Max then
Überschreitung_Fehler =True ;
else
Überschreitung_Fehler =false;
end_if

IF Messwert <=-500 (0.0007mA)
Unterschreitung_Fehler =True ;(Drahtbruch)
else
Unterschreitung_Fehler =false;
end_if

aber wie kann ich die Plausibilität programmieren?
 
.. bei Thema Gradientenverhalten ist klar geworden was ich muss programmieren ..
Na offensichtlich ist dir das nicht so ganz klar. Du solltest dich erst einmal mit den Begriffen "Gradient" und "Plausibilität" beschäftigen. Wie willst du Dinge programmieren, deren Bedeutung du nicht verstehst? Suche dir möglichst simple Definitionen für "Gradient" und "Plausibilität"!
 
aber wie kann ich die Plausibilität programmieren?
Erstmal überlegen, welche (Fehler-)Fälle denkbar sind, die zu deutlich anderen Werten führen, als die Fälle des NormalBetriebs.
Normalerweise ist es sinnvoll, die Über- oder Unterschreitung der Werte für eine gewisse (nicht zu lange) Zeit zu tolerieren.
Wahrscheinlich wirst Du nicht mit dem Vergleich auf einen MinimalWert und auf einen MaximalWert auskommen.

Hierbei können wir Dir nicht helfen. Das kannst nur Du bzw. jemand entscheiden, der die SollZustände und die entsprechenden ToleranzBereiche der Maschine/Anlage kennt. Evtl. sind dabei verschiedene Situationen zu unterscheiden, z.B. Unterschiede zwischen Automatik- und HandBetrieb.

Du schreibst, Du sollst mehrere AnalogWerte prüfen. Wahrscheinlich geht es dabei um mehrere ganz verschiedene Sachverhalte/physikalische Grössen, so dass Du nicht alle nach demselben Schema "abfertigen" kannst.

Bei den Gradienten geht es um die ÄnderungsGeschwindigkeit der AnalogWerte. Hier gilt auch, dass Du Dich an den Gegebenheiten der Maschine/Anlage orientieren musst und nicht an einem von uns erdachten "PatentRezept".

Ich sehe eigentlich auch nicht, warum man strikt nach Plausibilität und Gradient sortieren sollte. Auch zur Überwachung von Gradienten dürften meistens PlausibilitätsPrüfungen sinnvoll bis unerlässlich sein.

Zur Programmierweise Deiner Beispiele:
Statt ...
Code:
IF Messwert <= -500 THEN
    Unterschreitung_Fehler := TRUE ; // (Drahtbruch)
ELSE
    Unterschreitung_Fehler := FALSE ;
END_IF ;
... kann man einfacher ...
Code:
Unterschreitung_Fehler := Messwert <= -500 ; // (Drahtbruch)
... schreiben. Es gibt keinen Grund, hier den Umweg über IF und ELSE zu wählen.

Ich schreibe Dein Beispiel mal etwas anders, vielleicht wird es dadurch klarer:
Code:
Bedingung := Messwert <= -500 ;
IF Bedingung THEN
    Unterschreitung_Fehler := Bedingung ; // (Drahtbruch)
ELSE
    Unterschreitung_Fehler := Bedingung ;
END_IF ;
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Thema ist eigentlich wichtig und komplex.
Zentrales Thema bei uns sind Füllstände.

Dass die Einhaltung der im Betrieb möglichen Stromwerte kontrolliert wird, ist eigentlich selbstverständlich, jedoch ist in der Regel die Grenez 4 - 20 mA nicht ausreichend, da im normalen Betrieb auch physkalische Messbereichsüberschreitungen auftreten können, die nicht immer einen Sensorfehler darstellen. Typisch sind bei uns mäßig negative Drücke an Drucksonden, die bei jedem Hersteller andere Verhaltensweisen offenbaren.

Plausibilität wird bei uns in einfachen Fällen durch Vergleich mit Schaltern und bei wichtigen Sensoren durch Dreifachmessung geprüft.

Gradienten erfordern einen FIFO, der eine Steigung des Messwerts über die Zeit liefert. Schwierig ist hier in der Praxis die sinnvolle Definition der Grenzwerte.

In einem größeren Projekt wurde außerdem gefordert, dass die Eingangswerte der Analogkarten auf Veränderung überwacht wwerden. Interessanterweise musste ich die Grenzwerte schließlich auf 1h anheben. Angeschlossen waren Pegelmessungen an eine ET200-Karte mit einem Messbereich von 10m Wassersäule. Der aus dem PEW gelesene Integer blieb in bestimmten Situationen weit länger als 30 Minuten konstant, ohne dass die Sonde irgendein Problem hatte.
 
Ist das ne Hausaufgabe oder sollst Du ne wichtige Anlage programmieren und hast keinen Plan?
Ohne konkretere Angaben von Dir, können wir Deine Arbeit aber nicht machen.
Frag halt den Kunden oder Verfahrenstechniker, was er genau überwachen will.
 
Erstmal überlegen, welche (Fehler-)Fälle denkbar sind, die zu deutlich anderen Werten führen, als die Fälle des NormalBetriebs.
Normalerweise ist es sinnvoll, die Über- oder Unterschreitung der Werte für eine gewisse (nicht zu lange) Zeit zu tolerieren.
Wahrscheinlich wirst Du nicht mit dem Vergleich auf einen MinimalWert und auf einen MaximalWert auskommen.

Hierbei können wir Dir nicht helfen. Das kannst nur Du bzw. jemand entscheiden, der die SollZustände und die entsprechenden ToleranzBereiche der Maschine/Anlage kennt. Evtl. sind dabei verschiedene Situationen zu unterscheiden, z.B. Unterschiede zwischen Automatik- und HandBetrieb.

Du schreibst, Du sollst mehrere AnalogWerte prüfen. Wahrscheinlich geht es dabei um mehrere ganz verschiedene Sachverhalte/physikalische Grössen, so dass Du nicht alle nach demselben Schema "abfertigen" kannst.

Bei den Gradienten geht es um die ÄnderungsGeschwindigkeit der AnalogWerte. Hier gilt auch, dass Du Dich an den Gegebenheiten der Maschine/Anlage orientieren musst und nicht an einem von uns erdachten "PatentRezept".

Ich sehe eigentlich auch nicht, warum man strikt nach Plausibilität und Gradient sortieren sollte. Auch zur Überwachung von Gradienten dürften meistens PlausibilitätsPrüfungen sinnvoll bis unerlässlich sein.

Zur Programmierweise Deiner Beispiele:
Statt ...
Code:
IF Messwert <= -500 THEN
    Unterschreitung_Fehler := TRUE ; // (Drahtbruch)
ELSE
    Unterschreitung_Fehler := FALSE ;
END_IF ;
... kann man einfacher ...
Code:
Unterschreitung_Fehler := Messwert <= -500 ; // (Drahtbruch)
... schreiben. Es gibt keinen Grund, hier den Umweg über IF und ELSE zu wählen.

Ich schreibe Dein Beispiel mal etwas anders, vielleicht wird es dadurch klarer:
Code:
Bedingung := Messwert <= -500 ;
IF Bedingung THEN
    Unterschreitung_Fehler := Bedingung ; // (Drahtbruch)
ELSE
    Unterschreitung_Fehler := Bedingung ;
END_IF ;
danke für dein Tipp
 
Zuviel Werbung?
-> Hier kostenlos registrieren
vielleicht habe ich nicht meine Frage Deutlich ausgedrückt (Meine Deutschsprache ist nicht wie ihr Perfeckt 😅).
hier das ist meine Aufgabe, die ich vom Kunde bekommen vielleicht kann besser Informatin geben :
Messwerteingänge:
Die erfassten Messwerte (Rohwerte) sind in physikalische Einheiten umzurechnen (skaliert).
Nichtlineare Messwertgeber sind ggf. über Rechenformeln und Stützwerte zu linearisieren.
Jeder Messwert erhält mehrere, mindestens jedoch zwei obere und untere Grenzwertfestlegungen (Parametrierung), die auch vom Bedienpersonal mit entsprechender Berechtigung
vom PC-Arbeitsplatz aus geändert werden können. Die Zuordnung der Grenzwerte als Ereignis-, Warn- oder Alarmmeldung ist durch den Bediener per Dialog ohne Programmierkenntnisse veränderbar auszuführen. Die Auswertung, Überwachung und Ausgabe der
Grenzwerte und zugehörigen Meldungen erfolgt im Prozessleitsystem.
Störmeldungen aus Messwerten:
Jeder im Leitsystem eingehende Messwert ist auf folgende Zustände zu überprüfen:
 Plausibilität
 Grenzwertüber - und -unterschreitung im Hysterese (je zwei obere und untere Grenzwerte)
 Störung in der Übertragung
 Messwertausfall
 Gradientenverhalten
Das ist alles was ich auf eine papier habe !!! es gibt mehere Waaserbehälter und die Niveaus der Wasserbehälter müssen überwacht werden und die aktuellen Niveaus werden am pls angezeigt .
alle Min und Max werden auch am PLS eingestellt .
ich habe schon eine allgemeinede Funktion für Analogwert bearbeitung programmiert und kann ich für jede Analogwert nutzen aber nur bei der zwei Themen ( Plausibilität und Gradientenverhalten) brauche ich hilfe .
 
Also wie ducati schon schrieb, muss gerade bei der Plausibilität genau abgestimmt werden, was dort überwacht werden soll. Eine Gradientenüberwachung kannst du als parametrierbare Überwachungsfunktion jeder Messstelle hinzufügen (Erlaubte Änderungsrate nach oben / in Einheit/Zeiteinheit). Die Plausibilität muss wirklich genau auf jeden Fall zugeschnitten werden. Ich hatte mal einen sehr großen Speicher zu überwachen, da ergab sich bei normaler Befüllung und Entleerung eine Änderung von ein paar Zentimetern. Da muss man schon einige Dinge über einen längeren Zeitraum erfassen, damit dort etwas sinnvoll überwacht werden kann.
 
Jeder im Leitsystem eingehende Messwert ist auf folgende Zustände zu überprüfen:
 Plausibilität
 Grenzwertüber - und -unterschreitung im Hysterese (je zwei obere und untere Grenzwerte)
 Störung in der Übertragung
 Messwertausfall
 Gradientenverhalten
...
und kann ich für jede Analogwert nutzen aber nur bei der zwei Themen ( Plausibilität und Gradientenverhalten) brauche ich hilfe .
Von den obigen 5 Punkten stellt eigentlich nur der Punkt 'Gradientenverhalten' ein eigenes Kapitel dar.
Um den Gradienten zu beobachten, muss man natürlich dafür sorgen, dass man einen Messwert mit dem (bzw. mit mehreren) zuvor eingelesenen vergleichen und die Tendenz (steigend, fallend oder gleichbleibend) feststellen kann und auch, wie schnell der Wert gestiegen bzw. gefallen ist.
D.h. der aktuell eingelesene Wert sagt für sich allein betrachtet nichts über den Gradienten aus - man muss den aktuell eingelesenen Wert speichern, um ihn mit dem nächsten Wert vergleichen zu können. Vielleicht genügt es, immer nur den aktuellen Wert mit dem unmittelbar zuvor gelesenen zu vergleichen. Wahrscheinlich ist es hilfreich mehrere aufeinander folgende Werte verfügbar zu haben, wie es Ludewig in #6 mit dem Stichwort FIFO schon gesagt hat.

Die Themen 'Grenzwert-über- und -unter-Schreitung' und 'Hysterese' sind recht einfach "abzuhaken".
In diese Kategorie gehören auch 'Störung in der Übertragung' und 'MesswertAusfall', sofern sie nicht auf anderem Wege erkannt werden können, als die Messwerte auf das Erreichen entsprechender "ExtremWerte" zu überwachen.
Die Abgrenzung der Punkte 2 bis 4 gegeneinander ist wohl eher rein "theoretischer" Natur. In der Praxis dürften sie sich oft überschneiden.

Der Punkt 'Plausibilität' ist eigentlich ein "GummiBegriff" - ziemlich dehnbar.
Ob man ihn auf Fälle beschränkt, die klar aussagen "das kann gar nicht sein" oder ihn auf Fälle ausdehnt, die aussagen "das ist höchst unwahrscheinlich", das ist wohl Geschmackssache.
Man versucht natürlich, Fehler und Störungen möglichst "feinfühlig" aus den Messwerten herauszulesen, man darf dies aber auch nicht übertreiben, wenn man nicht auf "FehlAlarme" hereinfallen möchte.
Die Erkennung eines vermeintlichen Fehlers darf nicht dazu führen, dass man durch die FehlerBehandlung unnötig eine Lawine von FolgeFehlern auslöst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Von den obigen 5 Punkten stellt eigentlich nur der Punkt 'Gradientenverhalten' ein eigenes Kapitel dar.
Um den Gradienten zu beobachten, muss man natürlich dafür sorgen, dass man einen Messwert mit dem (bzw. mit mehreren) zuvor eingelesenen vergleichen und die Tendenz (steigend, fallend oder gleichbleibend) feststellen kann und auch, wie schnell der Wert gestiegen bzw. gefallen ist.
D.h. der aktuell eingelesene Wert sagt für sich allein betrachtet nichts über den Gradienten aus - man muss den aktuell eingelesenen Wert speichern, um ihn mit dem nächsten Wert vergleichen zu können. Vielleicht genügt es, immer nur den aktuellen Wert mit dem unmittelbar zuvor gelesenen zu vergleichen. Wahrscheinlich ist es hilfreich mehrere aufeinander folgende Werte verfügbar zu haben, wie es Ludewig in #6 mit dem Stichwort FIFO schon gesagt hat.

Die Themen 'Grenzwert-über- und -unter-Schreitung' und 'Hysterese' sind recht einfach "abzuhaken".
In diese Kategorie gehören auch 'Störung in der Übertragung' und 'MesswertAusfall', sofern sie nicht auf anderem Wege erkannt werden können, als die Messwerte auf das Erreichen entsprechender "ExtremWerte" zu überwachen.
Die Abgrenzung der Punkte 2 bis 4 gegeneinander ist wohl eher rein "theoretischer" Natur. In der Praxis dürften sie sich oft überschneiden.

Der Punkt 'Plausibilität' ist eigentlich ein "GummiBegriff" - ziemlich dehnbar.
Ob man ihn auf Fälle beschränkt, die klar aussagen "das kann gar nicht sein" oder ihn auf Fälle ausdehnt, die aussagen "das ist höchst unwahrscheinlich", das ist wohl Geschmackssache.
Man versucht natürlich, Fehler und Störungen möglichst "feinfühlig" aus den Messwerten herauszulesen, man darf dies aber auch nicht übertreiben, wenn man nicht auf "FehlAlarme" hereinfallen möchte.
Die Erkennung eines vermeintlichen Fehlers darf nicht dazu führen, dass man durch die FehlerBehandlung unnötig eine Lawine von FolgeFehlern auslöst.
beim vergleichen der aktuelle werte mit dem wert von letzte zyklus muss nicht ein bestimme prozent differenz erlaub sein , weil bei der Steigung des Niveau kann der Wert sich ändern oder?
diese Änderungsbereich kann auch vom Bediener am PLS ausgewählt werden zum Beispiel :
1% LOW
2% Medieum
3% Hoch
so etwas als Einstellbarparameter Änderungserlaubniss für Gradientenverhalten ?

 
Zuletzt bearbeitet:
beim vergleichen der aktuelle werte mit dem wert von letzte zyklus muss nicht ein bestimme prozent differenz erlaub sein , weil bei der Steigung des Niveau kann der Wert sich ändern oder?
diese Änderungsbereich kann auch vom Bediener am PLS ausgewählt werden zum Beispiel :
1% LOW
2% Medieum
3% Hoch
so etwas als Einstellbarparameter Änderungserlaubniss für Gradientenverhalten ?

Grundsätzlich ist der Gedanke richtig. Nur ist die Zykluszeit erstens nicht konstant und zweitens ausserdem kurz.
Wenn die Zykluszeit 10ms wäre und 1% Füllstandserhöhung pro Zyklus plausibel, dann wäre der Behälter innerhalb 1s voll...
Wenn Du aber 0,01% als Grenze pro Zyklus einstellst, liegt das schon im Bereich des Rauschens von der Messung.
Gradientenüberwachung ist nicht ganz trivial, wenn sie ordentlich funktionieren soll...
 
Du musst hier vielleicht erstmal mit einem konkreten Beispiel kommen und dann können wir es hierzu auch erklären.
Ich bleibe mal bei dem Beispiel von Thomas zum Thema "Gradient" :
Du startest die Befüllung eines Behälters von dem du den Füllstand einlesen kannst.
Normalerweise sollte sich nun der Pegel im Behälter (Erfahrungswert) um z.B. 10 mm / Minute ansteigend ändern.
Um so etwas auszuwerten solltest du also genau das überprüfen - das heißt du fragst in einem festen Zeitraster die Änderung des Pegels ab und vergleichst, ob er sich erwartet verhält. Für diese Gradienten-Überprüfung hast du nun aber vielleicht auch wieder Grenzwerte, die sein könnten : Soll = 10 mm / Minute mit einer Toleranz von +/- 1 mm / Minute. Du würdest nun also Alarm schlagen wenn er schneller wie 11 mm / Minute oder langsamer wie 9 mm / Minute befüllt. Um dies umzusetzen vergleichst du immer den aktuellen mit dem letzten Wert.
Noch schöner könnte es aber werden wenn du nicht nur 2 Werte zum Vergleichen nimmst sondern mehrere Werte (rückwärts) - so könntest du dann eventuell kurzfristige Ausreisser ausblenden.
Natürlich steckt in dieser Auswertung dann auch gleich wieder eine Plausibilität mit drin ... das heißt : ist der eingelesene Wert überhaupt sinnvoll ?

Sind dir die anderen Auswertungen, die du machen sollst klar ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier hast du mal ein Gradient Beispiel für beliebige Weckalarm.
Es ist ganz einfach ein Wert hoch und runterzähler.
Die differenz zwischen dein Istwert und berechnete Setpoint kannst du für alarmierung auswerten.

Code:
REGION Curve Steammonitoring
    #Curve := ((#Gradient_Kelvin / 60.0) * (#OB_Cycle_ms / 1000.0));
    IF    #Intern_T_Setpoint > #Temperature_Livesteam + #Curve THEN
          #Intern_T_Setpoint -= #Curve;
    ELSIF #Intern_T_Setpoint < #Temperature_Livesteam - #Curve THEN
          #Intern_T_Setpoint += #Curve;
    ELSE
          #Intern_T_Setpoint := #Temperature_Livesteam;
    END_IF;
    #Calculatet_Actual_T_Setpoint := #Intern_T_Setpoint;
END_REGION
 
Du musst hier vielleicht erstmal mit einem konkreten Beispiel kommen und dann können wir es hierzu auch erklären.
Ich bleibe mal bei dem Beispiel von Thomas zum Thema "Gradient" :
Du startest die Befüllung eines Behälters von dem du den Füllstand einlesen kannst.
Normalerweise sollte sich nun der Pegel im Behälter (Erfahrungswert) um z.B. 10 mm / Minute ansteigend ändern.
Um so etwas auszuwerten solltest du also genau das überprüfen - das heißt du fragst in einem festen Zeitraster die Änderung des Pegels ab und vergleichst, ob er sich erwartet verhält. Für diese Gradienten-Überprüfung hast du nun aber vielleicht auch wieder Grenzwerte, die sein könnten : Soll = 10 mm / Minute mit einer Toleranz von +/- 1 mm / Minute. Du würdest nun also Alarm schlagen wenn er schneller wie 11 mm / Minute oder langsamer wie 9 mm / Minute befüllt. Um dies umzusetzen vergleichst du immer den aktuellen mit dem letzten Wert.
Noch schöner könnte es aber werden wenn du nicht nur 2 Werte zum Vergleichen nimmst sondern mehrere Werte (rückwärts) - so könntest du dann eventuell kurzfristige Ausreisser ausblenden.
Natürlich steckt in dieser Auswertung dann auch gleich wieder eine Plausibilität mit drin ... das heißt : ist der eingelesene Wert überhaupt sinnvoll ?

Sind dir die anderen Auswertungen, die du machen sollst klar ?
Larry danke für deine Erklärung und gutes beispiel. Jetzt habe ich ein beseres Verständnis über das Thema Glättung und Plasibilität.
die anderen Auswertungen sind bis jetzt klar aber fall , wenn ich hilfe brauche ,werde ich mich wieder melden (y)
 
Hier hast du mal ein Gradient Beispiel für beliebige Weckalarm.
Es ist ganz einfach ein Wert hoch und runterzähler.
Die differenz zwischen dein Istwert und berechnete Setpoint kannst du für alarmierung auswerten.

Code:
REGION Curve Steammonitoring
    #Curve := ((#Gradient_Kelvin / 60.0) * (#OB_Cycle_ms / 1000.0));
    IF    #Intern_T_Setpoint > #Temperature_Livesteam + #Curve THEN
          #Intern_T_Setpoint -= #Curve;
    ELSIF #Intern_T_Setpoint < #Temperature_Livesteam - #Curve THEN
          #Intern_T_Setpoint += #Curve;
    ELSE
          #Intern_T_Setpoint := #Temperature_Livesteam;
    END_IF;
    #Calculatet_Actual_T_Setpoint := #Intern_T_Setpoint;
END_REGION
danke aber ich muss zwei Frage stellen , um diese Formel besser zu verstehen:
#Curve := ((#Gradient_Kelvin / 60.0) * (#OB_Cycle_ms / 1000.0));
1. ist "#Gradient_Kelvin " hier meine Mesbereich 0..27648 oder etws anders?
2. ist "#OB_Cycle_ms" hier meine OB_Cyclic interrupt bzw zyklus Zeit , der ich meine Aktuellewert lese Z.B jede 10ms oder 100ms?
3. was bedeutet hier "#Intern_T_Setpoint -= #Curve" das Minus hinter Zuweisung (-=) ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
danke aber ich muss zwei Frage stellen , um diese Formel besser zu verstehen:
#Curve := ((#Gradient_Kelvin / 60.0) * (#OB_Cycle_ms / 1000.0));
1. ist "#Gradient_Kelvin " hier meine Mesbereich 0..27648 oder etws anders?
2. ist "#OB_Cycle_ms" hier meine OB_Cyclic interrupt bzw zyklus Zeit , der ich meine Aktuellewert lese Z.B jede 10ms oder 100ms?
3. was bedeutet hier "#Intern_T_Setpoint -= #Curve" das Minus hinter Zuweisung (-=) ?
1) In mein fall überwache ich ein zulässige Temperaturänderung in Kelvin pro Minute. Also ein absolute Wert.
2) Ja, dein aktuelle OB Zyklus. Wenn du in ein feste Weckalarm bist kannst du auch die Zeile löschen.
3) Intern Setpoint ist der Wert der Hoch oder runterzählt.

#Intern_T_Setpoint -= #Curve; bedeutet das gleiche wie;

#Intern_T_Setpoint := #Intern_T_Setpoint - #Curve;
 
Zurück
Oben