CASE_OF

sieht nicht so gut aus, er macht die Rechnung nicht (Division)
Doch macht er:
100 / 10000 ergibt 0,01 und bei einer Integerzahl bleibt da 0 über, weil die mit Nachkommastellen nichts anfangen kann.
Wie gesagt, ließ Dir mal die FAQ durch, dann kommst Du drauf, wie Du das Rechnen musst. Prozentrechnung ist auch eine Skalierung.
 
sieht nicht so gut aus, er macht die Rechnung nicht (Division)
@der_NooB, da muss ich dich jetzt aber etwas an der Nase packen. Anstatt so schnell zu antworten solltest du dir lieber mal etwas Zeit für deinen Code nehmen und dir mal anschauen was da so passiert. Das 100 / 10.000 nicht passen kann, da solltest du selber drauf kommen können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das setzen von Klammern wäre dann auch noch mal etwas, an dem du arbeiten kannst.

Hier hast du vier Klammern zu viel. Die werden auch gerne Angstklammern genannt ( Gesetzt weil man nicht wusste ob man es braucht, na da macht man sie lieber mal rein... )
1713363468414.png

Das hat auch nichts mit Code zu tun sondern es ist reine Mathematik.
 
Das setzen von Klammern wäre dann auch noch mal etwas, an dem du arbeiten kannst.

Hier hast du vier Klammern zu viel. Die werden auch gerne Angstklammern genannt ( Weil gesetzt weil man nicht wusste ob man es braucht, na da macht man sie lieber mal rein... )
Anhang anzeigen 77345
Ich habe es von hier übernommen, von den Grundlagen der ST. :censored:
alles klar ich mach die weg sowieso wie du gesagt hast, die haben keine Funktion🫡 Angstklammern xD das kann mich tatsächlich beschreiben xD
 

Anhänge

  • 13.png
    13.png
    27,8 KB · Aufrufe: 18
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es von hier übernommen, von den Grundlagen der ST. :censored:
alles klar ich mach die weg sowieso wie du gesagt hast, die haben keine Funktion🫡 Angstklammern xD das kann mich tatsächlich beschreiben xD
Ich denke mal, da scheiden sich die Geister. Zur Gruppierung des NOT mit der Variablen ist das vielleicht noch einzusehen, aber ansonsten.
 
Ich habe es von hier übernommen, von den Grundlagen der ST. :censored:
alles klar ich mach die weg sowieso wie du gesagt hast, die haben keine Funktion🫡 Angstklammern xD das kann mich tatsächlich beschreiben xD
Das ist auch ein anderes Beispiel.. da gehts um boolsche Abfragen auf FALSE, dort macht es auch Sinn, zumindest für mich.. Abfragen auf FALSE schreibe ich auch immer als (NOT ..) um eine klare Trennung von TRUE zu FALSE Abfragen visuell schon unterscheiden zu können, ohne es direkt lesen zu müssen.
 
Das ist auch ein anderes Beispiel.. da gehts um boolsche Abfragen auf FALSE, dort macht es auch Sinn, zumindest für mich.. Abfragen auf FALSE schreibe ich auch immer als (NOT ..) um eine klare Trennung von TRUE zu FALSE Abfragen visuell schon unterscheiden zu können, ohne es direkt lesen zu müssen.
Welchen, außer die NOT mit der Variablen zu gruppieren?
Diese Logik würde auch ohne Klammern funktionieren.
Es gibt natürlich logische Verknüpfungen wo Klammern benötigt werden, zum Beispiel bei Kombinationen von AND und OR.
 
@oliver.tonn
Guten Morgen ^_^

also sowie ich verstanden habe, mein Digit liefert mir einen Wert von maximal 0-32767 entspricht 0-10V aber mein Analogeingang sagt mir 4095.
oder wer bekommt/liefert den Wert 4095?

"Ich habe die Berechnung durchgeführt, und da mein Prozent-Level-Programm für den Bereich von 0 bis 100 ausgelegt ist, habe ich das Ergebnis mit 100 multipliziert.
richtig soweit ?
was sagst @DeltaMikeAir

Für eure weitere Hilfe bin ich dankbar."
vielen dank <3
 

Anhänge

  • 14.png
    14.png
    43,8 KB · Aufrufe: 13
  • 16.png
    16.png
    37 KB · Aufrufe: 13
"Ich habe die Berechnung durchgeführt, und da mein Prozent-Level-Programm für den Bereich von 0 bis 100 ausgelegt ist, habe ich das Ergebnis mit 100 multipliziert.
richtig soweit ?
was sagst @DeltaMikeAir
Rechne doch selber mal nach.

Was kommt z.B. raus, wenn aiLevel die Wertigkeit 0 hat?
Das wäre dann folgende Rechnung:
0 * 4095/ 32767 * 100

Was kommt raus, wenn aiLevel die Wertigkeit 4095 hat?
theoretisch 51176,564836573381756035035248878 aber da du INT verwendest, wird noch mehr Quatsch rauskommen da es einen Überlauf gibt.

Mit Prozent hat das nichts zu tun.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin!

Warnung:
Die 0..32767 ist herstellerabhängig!
Nimm das bitte nicht als "immer" gegeben. Jeder Hersteller hat da so seine Grenzen. Die muß man im Handbuch nachschlagen.

So, jetzt zur Frage:
Ja, Dein Eingang liefert (in dem Beispiel) 0 bei 0V und 32767 bei 10V. Wenn Du also 4095 vom Eingang geliefert bekommst, dann rechnest Du:
4095 / 32767 = 12.5% --> Prozentualer "Ausschlag" des Eingangs vom Meßbereich
Das Ergebnis multiplizierst Du mit dem elektrischen Meßbereich (hier 10V): 1.25V wird am Eingang gemessen.
Wenn Du jetzt z.B. einen 4..20mA-Eingang hast, ist Dein Meßbereich natürlich nicht 20mA, sondern 16mA (20-4mA)! Auf das errechnete Ergebnis mußt Du dann natürlich wieder die 4mA draufrechnen!

Da Du hier mit Kommazahlen rechnest, mußt Du das mit REAL-Variablen rechnen bzw. zumindest in REAL konvertieren.
Damit die Zahlen nicht zu klein werden und Du Genauigkeit verlierst, kannst Du die Berechnung auch ein bißchen umstellen:

4095 / 32767 * 10V --> besser schreiben: 4095 * 10V / 32767 --> Dann dividierst Du das Produkt aus 4095 * 10V, anstatt eine kleine Zahl mit 10V zu multiplizieren.
 
Moin!

Warnung:
Die 0..32767 ist herstellerabhängig!
Nimm das bitte nicht als "immer" gegeben. Jeder Hersteller hat da so seine Grenzen. Die muß man im Handbuch nachschlagen.
du meinst von den Sensoren Stimmt oder ?
So, jetzt zur Frage:
Ja, Dein Eingang liefert (in dem Beispiel) 0 bei 0V und 32767 bei 10V. Wenn Du also 4095 vom Eingang geliefert bekommst, dann rechnest Du:
4095 / 32767 = 12.5% --> Prozentualer "Ausschlag" des Eingangs vom Meßbereich
Das Ergebnis multiplizierst Du mit dem elektrischen Meßbereich (hier 10V): 1.25V wird am Eingang gemessen.
Wenn Du jetzt z.B. einen 4..20mA-Eingang hast, ist Dein Meßbereich natürlich nicht 20mA, sondern 16mA (20-4mA)! Auf das errechnete Ergebnis mußt Du dann natürlich wieder die 4mA draufrechnen!

Da Du hier mit Kommazahlen rechnest, mußt Du das mit REAL-Variablen rechnen bzw. zumindest in REAL konvertieren.
Damit die Zahlen nicht zu klein werden und Du Genauigkeit verlierst, kannst Du die Berechnung auch ein bißchen umstellen:

4095 / 32767 * 10V --> besser schreiben: 4095 * 10V / 32767 --> Dann dividierst Du das Produkt aus 4095 * 10V, anstatt eine kleine Zahl mit 10V zu
nicht mal 100, da ich mein Programm 0-100 geschrieben hab
Ach so, dann ist der variierende Wert von 0 bis 32767, nicht von 0 bis 10V.
Ich habe es so im Kopf, dass meine SPS nur den Bereich von 0 bis 10V erkennt und ich die Ausgabe von Digit umrechnen muss.
auf ihre tatsächliche Nenngröße.
22.png

bei dem ich wollte dass er so tut als ob er REAL wäre und die Rechnung in REAL macht.

sorry ich weiß bei mir dauert bis ich verstehe :(
danke
 
Zuletzt bearbeitet:
Deine Eingangskarte mißt 0..10V (wenn das stimmt, was Du schreibst). Das Meßsignal läuft über einen Analog-Digital-Wandler und wird Dir in der SPS als ein (herstellerspezifischer) Zahlenwert präsentiert.
Die Karte mißt also 10V, die Karte wandelt das analoge Signal in eine digitale Zahl um und in der SPS liest Du am Eingang dann (herstellerspezifisch) 32767.

Und um jetzt noch einen draufzusetzen: Die 0..10V repräsentieren ja in der Regel eine physikalische Meßgröße, z.B. einen Druck:

Beispiel: Druck 0..5bar werden vom Sensor umgewandelt in 0..10V, welche in der SPS umgewandelt werden in 0..32767.
Also entsprechen 0..32767 dann physikalisch 0..5bar.

So weit verstanden?

Und dabei immer die Datenblätter lesen: Vom Sensor und von der Eingangsbaugruppe der SPS! Sonst weißt Du nicht, mit welchen Werten Du rechnen mußt!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau dir am besten noch einmal in Ruhe das FAQ von @oliver.tonn zum Thema Skalierung an. Da ist alles wunderbar beschrieben.

Ich gebe dir für etwas anderes noch mal einen Tipp:

In folgendem Code, was passiert wenn PercentLevel die Wertigkeit 25 oder 1 hat? Überdenke das noch einmal genau.

1713422236187.png
 
Zurück
Oben