Skalieren FUP Automation Studio

Tombaland

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen
Kurz zu mir, ich bin ein mittelmäßiger Beginner auf dem Gebiet SPS Programmierung und ich kämpfe mich mit verschiedener Literatur durch. Aber jetzt bin ich auf eine unüberwindbare Hürde gestoßen. Ich möchte einen Analogwert in FUP skalieren. Bei S7 gibt es einen tollen Baustein FC105. Aber wie mache ich das im Automation Studio. Konnte dort nichts finden. Kann ich mir einen solche Funktion selber erstellen?
Wäre echt dankbar wenn ich hier eine Lösung bekäme, ich bin langsam verzweifelt :confused:

Danke im Voraus
 
Hallo Tombaland,

im AS4.2 gibt es unter den Mechatronik Bibliotheken den Funktionsbaustein MTLookUpTable mit dem man Werte skalieren kann.

Solltest du eine ältere Version vom AS haben, dann gibt es die Funktionen LCRScal, LCScINT, LCScDINT, LCScUINT.

MfG
Andi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zuerst einmal, ich habe die Version AS4.0.25
Den Funktionsbaustein MTLookUpTable konnte ich nicht finden, obwohl dieser in der Hilfe aufgeführt wird.
Aber ich denke das passt alles nicht zu meinem Problem. LCRScal passt auch nicht.
Ich beschreibe mal mein Problem:
bei einem Int -32700 will ich eine Ausgabe von -75 und bei einem Int +32700 will ich eine Ausgabe von +70
und das liniar
 
Hallo,

also wie ich schon geschrieben habe ist die Funktion "LCScINT" die die du brauchst.

Das könnte dann so aussehen:

VAR
InValue : INT; //Eingangswert (-32700..32700)
OutValue : INT; //Ausgabewert (-75..70)
LCScINT_0 : LCScINT;​
END_VAR

PROGRAMM_INIT
LCScINT_0.x1 := -32700;
LCScINT_0.x2 := 32700;
LCScINT_0.y1 := -75;
LCScINT_0.y2 := 70;​
END_PROGRAMM

PROGRAMM_CYCLIC
LCScINT_0.x := InValue;
LCScINT_0();
OutValue := LCScINT_0.y;​
END_PROGRAMM

Damit du die Funktion hast, musst du die Bibliothek "LoopCont" einfügen.

MfG
 
Na also, jetzt endlich funktioniert es.
Ich weiß gar nicht wie ich meinen Dank in Worte fassen kann.
Meine zugehörige Visu PP065 funktioniert dahingehend auch schon.
Ich hoffe ich stelle nicht allzu viele Fragen. Aber das iTüpfelchen wäre jetzt noch eine Skalierung mit 10er Stelle, zBsp. 70.0 (Zehnerstelle zählt mit) Habe inzwischen schon wieder einiges probiert und die Lösung lässt auf sich warten. Im Monitor wird der Ausgang immer mit punkt0 angezeigt, zählt jedoch nicht mit :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi
also am einfachsten ist wenn du statt -75/70 einfach auf -750 / 700 änderst. In der Visu kannst du die Kommaanzeige ja einfach bei den Ausgabefeldern parametrieren.
Oder du schaust dir mal das Kapitel "Einheiten" an.... :)

Wenn du stark visuell orientiert bist, kannst du auch mal gerne die Testversion von PLTrend laden (siehe unten: signature), dann kannst du dir alle Variablen als Kurven ansehen und das zeitliche Zusammenspiel übersichtlicher darstellen.

bg
bb
 
Hallo,

wenn du eine Nachkommastelle willst musst du mit der Funktion "LCRScal" aus der Bibliothek "LoopContR" arbeiten.

Das würde dann so aussehen:

VARInValue : INT; //Eingangswert (-32700..32700)
OutValue : REAL; //Ausgabewert (-75.0..70.0)
LCRScal_0 : LCRScal;

END_VAR

PROGRAMM_INIT
LCRScal_0 .x1 := -32700.0;
LCRScal_0 .x2 := 32700.0;
LCRScal_0 .y1 := -75.0;
LCRScal_0 .y2 := 70.0;

END_PROGRAMM

PROGRAMM_CYCLIC
LCRScal_0 .x := INT_TO_REAL(InValue);
LCRScal_0 ();
OutValue := LCRScal_0 .y;

END_PROGRAMM

Jetzt gibt es auch Nachkommastellen.

Falls du die Bibliothek "Standard" noch nicht eingefügt hast, musst du diese auch einfügen um die Funktion "
INT_TO_REAL()" nutzen zu können.

MfG
 
Zurück
Oben