TIA Gerade Funktion

Code:
FC regressionsgerade
Input
  a : Real
  x : Real
  b : Real

Return
  regressionsgerade : Real

Code:

  #regressionsgerade := a * x + b;

Harald
 
ich habe so hinbekommen, aber
wenn ich bekomme keine Funktion
sondern y = Real Wert...
weil ich für a, b und x werte eingegeben haben..
wie soll umformen dass es y = ax + b im OB1 bLEIBT
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wo hast du für a, b und x Werte eingegeben? im SCL Code?

Das könnte erklären, warum deine Funktion nur einen Wert zurückliefert...
Du musst A, B, und X als Eingänge deklarieren, wenn du diese dann veränderst, verändert sich auch Y.

Oder verstehe ich dieses Kauderwelsch falsch?
 
Welche CPU hast Du?
In welcher Programmiersprache programmierst Du Deinen OB1?

Du müsstest einen Baustein (Funktion, FC) programmieren (z.B. in SCL wie in Beitrag #4 gezeigt) und im OB1 rufst Du die FC auf und beschaltest die Eingänge und den Ausgang mit REAL-Variablen.

Harald
 
cpu1516-10[CPU 1516-3 PN/DP] und mein OB1 ist in FUP..
ich habe genauso gemacht, aber im OB1, wenn ich für a, den wert 1.0
und b, 2.0 eingebe , erscheint am Ausgang y= 3 obwohl
ich y= 1.x + 2 habe möchtet
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe ein paar Temperatur Messwerte durch verschiedene Sensoren aufgenommen,
und im Excel eine regressionsgerade erstellt...
diese werte möchte ich korriegeren, mit dem SPS Programm
deswegen wollte ich die lineare Funktion progrmmieren
 
Also hast du von mehreren Fühlern zum Zeitpunkt x die Temperaturwerte y1...yn.

400px-Linear_regression.svg.png

Und da willst du dann deine Regressionsgrade reinlegen? Dann wäre x doch auch die Zeit.

Ich glaube so richtig helfen kann ich dir da nicht, meine Analysis Zeiten sind schon zu lange her.

Kann es sein dass du eigentlich den Mittelwert bilden möchtest?
 
Zuletzt bearbeitet:
Kann es sein daß Du verschiedene Temperatursensoren verglichen hast und festgestellt hast daß die unterschiedliche Temperaturen anzeigen? Und nun willst Du den gemessenen Temperaturwert korrigieren? Dann ist X Dein Messwert (Rohwert), A und B sind die Korrekturfaktoren (mit Excel ermittelt) und Y ist der korrigierte Wert. Du müsstest die FC z.B. so aufrufen:
Code:
            +---------------+
            |    %FC123     |
            |  "MyScaleFC"  |
       ...--|EN             |
"Messwert"--|X              |
       1.2--|A       Ret_Val|--"Temperaturwert"
      -0.3--|B           ENO|--
            +---------------+

Wo kommt der Temperaturmesswert her - von einer Analogeingangskarte? (Welche? Wie ist der Eingang konfiguriert?) Da wäre es vielleicht besser wenn Du an Deinen FC das X als INT übergibst. Dann könntest Du den Analogeingang direkt an die FC anschließen und die Skalier-/Korrektur-Formel sieht vermutlich so aus:
Code:
MyScaleFC := A * INT_TO_REAL(X)/10.0 + B;

Übrigens: In TIA gibt es für die S7-1500 auch fertige Skalier/Normier-Funktionen, z.B. NORM.

Harald
 
Zuletzt bearbeitet:
Zurück
Oben