TIA Silo Linearisierung programmieren

biofranz

Level-2
Beiträge
47
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,
ich hab hier zum Themas Linearisierung gesucht, aber nicht das gefunden was ich brauche. Ich hab eine S7 317 und eine Füllstandssonde Sitrans LR 560.
Ich möchte nun im HMI in einem Ausgabefeld das Volumen des Füllgutes anzeigen. Das Analogsignal wird als Realwert zur Anzeige der Füllhöhe verwendet. Wie kann ich jetzt mit welchen Mathefunktionen den Konus (Kegelstumpf) linearisieren, sodass ich das Volumen angezeigt bekomme. Der Silo besteht aber nicht nur aus dem 2800 mm hohen Kegelstumpf, sondern da drauf noch 7000 mm Zylinder. Mit meiner Rechnerei bin ich noch nicht sehr weit gekommen. Also bitte ich hier um Hilfe.
Programm ist TIA V14.
Schönen Abend
 
Du musst nichts lienartisieren, nur zwei Fälle unterscheiden (ohne oder mit Zylinder) und ein bisschen rechnen lassen. Die Formeln findest Du im Netz zu Hunderten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und je nach Einbauposition des Sensors und Material gibt es auch noch einen Kegel in der Mitte beim füllen und einen Trichter beim entleeren, . . .
Das 100% abzubilden wird eher schwierig
 
Und je nach Einbauposition des Sensors und Material gibt es auch noch einen Kegel in der Mitte beim füllen und einen Trichter beim entleeren, . . .
Das 100% abzubilden wird eher schwierig
Jep, die Auswirkung kommt aber stark auf den Inhalt an.
Je fließfähiger das Füllgut, desto eher kann man die Materialverteilung an der Oberfläche als Messtoleranz ignorrieren.
Oder halt als Messwert bezogen auf eine glatte Materialverteilung +/- max Kegelvolumen angeben.

(Genaue) Silo-Füllstandserfassungen kenne ich eigentlich nur als gewichtsbasierte Systeme.
Also Siemens Siwarex + Wiegezellen unter dem Silo.
Mit Gewicht & Dichte des Füllguts kommst du dann recht genau auf das enthaltene Volumen.
Weitere Infos:
https://www.siemens.com/de/de/produ...entierung/waegetechnik/prozessverwiegung.html
 
Dankeschön. Wiegen geht sowieso nicht, brauch ich auch nicht, muss nicht aufs Kilo sein. Wäre halt eine Erleichterung, auf einen Blick zu sehen wieviel Inhalt noch im Silo ist. Ich habs leider noch nicht geschafft. Als Hobbytechniker bin nie in diese Bereiche vorgestossen. Ich möchte das natürlich lernen, mir fehlt aber der Anfang. Kann mir vielleicht jemand den Einstieg erleichtern.
Der Kegelstumpf ist 2800mm hoch, Grundfläche Radius ist 1750 mm und Deckfläche Radius ist 200 mm.
Die Bausteine schreiben geht, aber die benötigten Rechenfunktionen find ich nicht.
Vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das für den Kegelstumpf, runterscrollen bis zum Volumen.

Und das für den Zylinder-Anteil.
Das Video auf der Seite ist zur Strafe, dass du nicht selbst googelst :p

Die Höhe müsstest du entsprechend der Konstruktion im Bezug auf das Sensorsignal berechnen.
 
Moin,

laut ChatGPT
V = (1/3) * π * h * (r1^2 + r2^2 + r1 * r2)

so hast du mindestens das Volumen und kannst mit der Höhe den Füllstand ermitteln
 
Entschuldige bitte, da hab ich nicht genau genug gefragt. Genau diese Seite hab ich mir gesucht, hab auch eine ganze Seite Excel vollgerechnet, aber ich glaub ich brauch ja nicht das Volumen vom ganzen Trichter. Ich hab die Höhe, das ist der Realwert von der Sonde. Die anderen Werte ändern sich ja mit, das check ich nicht wie ich da rechne.
 
Moin,

nehmen wir an im vollem Zustand hat dein Sensorsignal null, dann musst du den Zylinder und den Kegelstumpf addieren und hast die Füllmenge. je größer der Wert des Sensors wird um so kleiner ist dein Füllstand. Ist der Sensorwert >= der höhe des Zylinders wird nur noch der Kegelstumpf berechnet.
 
Biszur Höhe 2,8m rechnest Du mit der Kegelstumpfformel.
Ab 2,8m addierst Du den jetzt vollen Kegelstumpf zur jetzt wachsenden Zylinderhöhe. Was gibt es daran nicht zu verstehen, notfalls mit Papier und Bleistift?
 
konnte nicht schlafen
Code:
FUNCTION_BLOCK "Volumen"

{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
  Höhe : Real;     // Sensoreingang
END_VAR

VAR_OUTPUT
  VolumenZylinder : Real;     
  VolumenKegelstumpf : Real;  
  VolumenGesamt : Real;
END_VAR

VAR_IN_OUT

END_VAR

VAR
  
END_VAR

VAR_TEMP
  Zwischenwert : Real;
  
END_VAR

VAR CONSTANT
  Radius_1 : Real := 1.75; // Radius Kegelstumpf oben und somit auch vom Zylinder
  Radius_2 : Real := 0.2;  // Radius Kegelstumpf unten
  Höhe_1 : Real := 7.0;    // Höhe Zylinder
  Höhe_2 : Real := 2.8;    // Höhe Kegelstumpf
  PI : Real := 3.14;
END_VAR




BEGIN
    #VolumenZylinder := 0.0;
    #VolumenKegelstumpf := 0.0;
    
    IF #Höhe <= #Höhe_1 THEN
        #Zwischenwert := #Höhe_1 - #Höhe;
        #VolumenZylinder := (#PI * SQR(#Radius_1) * #Zwischenwert);
        #VolumenKegelstumpf := ((#Radius_1 * #Radius_2) + SQR(#Radius_1) + SQR(#Radius_2)) * #Höhe_2 * #PI * 1 / 3;
    ELSE
        #Zwischenwert := #Höhe_2 - (#Höhe - #Höhe_1);
       #VolumenKegelstumpf := ((#Radius_1 * #Radius_2) + SQR(#Radius_1) + SQR(#Radius_2)) * #Zwischenwert * #PI * 1 / 3;
    END_IF;
    #VolumenGesamt := #VolumenZylinder + #VolumenKegelstumpf;
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend zusammen, vielen Dank für die Hilfe.
grüß dich kiar. Leider kann ich nur FUP, außerdem geht bei S7 300 SCL nicht glaub ich gelesen zu haben. Dein Code ist super, genau passend,
aber ich krieg den nicht in mein Programm rein. Gibts da keine Möglichkeit, dass ich deinen Code in FUP umwandeln kann, außer dass ich selber umschreibe?
Ich hab den Inventor gestartet, habs mir von dem rechnen lassen. Ich habe noch keinen Test machen können mit meinem Baustein, schaut aber aus als könnte es laufen. Lieber wäre mir natürlich, wenn ich deinen Code verwenden könnte, alles hab ich in FUP nämlich noch nicht geschafft.
Vielen vielen Dank jedenfalls für deine schöne Arbeit.
 
Zuletzt bearbeitet:
Vielleicht kann ChatGPT den SCL Code in AWL oder FUP konvertieren? Das ist eigentlich total simpel, aber wenn man so überhaupt keine Ahnung hat.... Ich habe jetzt leider keine Zeit, ich sitze schon fast im Flieger nach Bangkok...
Womit programmierst du deine 317?

PS: Ah, jetzt sehe ich du hast TIA V14. Da braucht man doch nur einen neuen FC (oder FB) erstellen und SCL einstellen?
 
Grüß dich PN/DP,
dankeschön, das war es, mit dem neuen FB stellte ich SCL ein, reimkopiert und ist angenommen. Schaut natürlich noch alles rot aus, muss die Variablen einfügen oder definieren, dann bin ich gerettet. Da kann ich ja dann die Variablen von meinem DB verwenden oder?
 
mit dem neuen FB stellte ich SCL ein, ...... Da kann ich ja dann die Variablen von meinem DB verwenden oder?
Grundsätzlich ja - aber wenn du schon einen FB hast dann kannst du deine Variablen auch sehr schön im STAT-Bereich desselben anlegen - das landet dann ja schlussendlich alles im I-DB des Bausteins und du hast alles zusammen ...
 
Zurück
Oben