Sonstiges TwinCat 3 Scale

Pascal L-D

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich habe eine Frage. Da ich sonst in Step7 in FUP Programmiert habe und jetzt Arbeitsbedingt in TwinCat3 Programmieren muss, kommt es immer wieder mal zu Problemen^^
Kann mir einer sagen ob es in TwinCat auch einen Scale Baustein gibt womit ich einen INT Wert in % Umwandeln bzw. Skalieren kann?

Gruß Pascal
 
Hallo,
da TwinCAT auf Codesys basiert hättest Du die Frage auch unter der Rubrik posten können.
Ich würde schnell selber etwas schreiben, ist ja nicht so aufwendig. In TC2 gibt es die Funktion F_Scale, allerdings meine ich nur in kostenpflichtigen Bibliotheken. In wie weit die Funktion auch in TC3 verfügbar ist kann ich gerade nicht nachschauen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, aber ich mache eine VISU und möchte nicht jedes mal den wert umrechnen, um zu sehen wie weit die Klappe geöffnet ist.
Ich kapiere jetzt nicht ganz wo Dein Problem ist. Meinst Du, dass Du den Wert in der Visu immer in Prozent umrechnen musst? Dafür haben wir Dir Lösungen gegeben.
DeltaMikeAir meinte (vermutlich), dass Du den Dreisatz in Deinem Programm zur Umrechnung anwenden sollst und nicht, dass Du das immer händisch machen sollst.
 
Zuletzt bearbeitet:
Also ich kenne das nur, dass ich eine Scale Baustein habe wo ich die INT Werte eintrage und den skalier Bereich in meinem fall 0 - 100. Als Ausgabe bekommt ich dann eine Variable, die ich für die VISU verwenden kann. Ich möchte halt wissen wie ich das in Twincat hinbekomme, da ich keinen Scale Baustein gefunden habe. Anscheint gibt es keinen Scale Baustein und deswegen muss ich mit dem Dreisatz arbeiten ist das richtig?
 
Ich möchte halt wissen wie ich das in Twincat hinbekomme, da ich keinen Scale Baustein gefunden habe.
Wie schon geschrieben, in TC2 gab es einen Baustein, ich konnte leider nicht nachsehen, ob es in TC3 diesen auch gibt. Ansonsten einfach selber einen schreiben.
Also ich kenne das nur, dass ich eine Scale Baustein habe wo ich die INT Werte eintrage und den skalier Bereich in meinem fall 0 - 100. Als Ausgabe bekommt ich dann eine Variable, die ich für die VISU verwenden kann... Anscheint gibt es keinen Scale Baustein und deswegen muss ich mit dem Dreisatz arbeiten ist das richtig?
Über den Dreisatz kannst Du den INT Wert in Prozent umrechnen, geht der Verstellbereich z.B. von 0 - 32.000, dann entsprechen 3.200 10% und 1.600 5%. Halt INT-Wert/Maximaler INT-Wert * 100. Wie schon erwähnt, schau Dir mal die FAQ an, da wird Dir vielleicht klarer wie es gehen könnte. Aber achte auf die Verwendung der richtigen Variablen-Typen und entsprechenden Konstanten (Stichwort: 100.0 statt 100)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung bei Ganzzahl-Berechnung oder Verwendung von Ganzzahl-Operanden: da muß man dem Compiler besonders sorgfältig/eindeutig "mitteilen" wie das Programm rechnen soll:
Code:
iAnalog : INT;
iResult : INT;
rResult : REAL;


iResult := iAnalog / (32000 / 100);

//oder

rResult := INT_TO_REAL(iAnalog) / (32000.0 / 100.0);
Das (32000/100) sollte der ST-Compiler ersetzen durch die Konstante 320. Falls er das nicht macht (oder falls Du in FUP/KOP/CFC programmierst), dann wird bei iAnalog < 32000 das Ergebnis iResult = 0 rauskommen --> dann müsstest Du nur die Division durch 320 in den Code schreiben:
Code:
iResult := iAnalog / 320;   // 32000/100

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich kenne das nur, dass ich eine Scale Baustein habe wo ich die INT Werte eintrage und den skalier Bereich in meinem fall 0 - 100.
Dann wird es höchste Zeit, mal so ein Bausteinchen selbst zu programmieren. Wenn es den Scale-Baustein bei TC oder CodeSys tatsächlich nur "gegen Bares" geben sollte, wäre das doch ein Grund mehr, ein paar Minuten "EigenSinn" zu investieren. Beim Entwurf des Bausteins darfst Du auch mal zu Bleistift und Papier greifen.
 
Zurück
Oben