TIA Analogwertrampe

klaus.g

Level-2
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Kann mir jemand sagen wie ich einen Analogwert 0-10V als Rampe Hoch und runter laufen lassen kann.Gibt es da einen Baustein für ?Es wird in KOP programmiert.Benutzt wird TIA V14.
 
Relativ einfach. Bau dir einen Takt. Oder nimm dir einen Systemtaktmerker. werte die Flanke vom Takt aus und incrementiere ein Integer um den gewünschten wert. Den Integer schreibst du auf den Analogausgang.

mfg René
 
keine Garantie auf Vollständigkeit und einfach so im Editor hier geschrieben.

Code:
VAR_INPUT
    bTaktmerkerbit_1Hz      : BOOL;                      // taktmerker
END_VAR;

VAR_OUTPUT
    nAnalogwertRampe       : INT;                        // ausgangswert
END_VAR;

VAR
    bTaktmerkerFp             : BOOL;                       // merker zur Flankenauswertung
END_VAR;

VAR_TEMP
    bTaktmerkerIp              : BOOL;                       // Flanke zum Taktmerker
END_VAR;

begin

// taktmerker-impulsbildung
bTaktmerkerIp  := bTaktmerkerbit_1Hz AND (NOT bTaktmerkerFp);
bTaktmerkerFp  := bTaktmerkerbit_1Hz;

// groesse des INT richtig setzen
IF nAnalogwertRampe < 0 THEN
    nAnalogwertRampe := 0;
END_IF;

IF nAnalogwertRampe > 27648 THEN
   nAnalogwertRampe := 0;
END_IF;

// bei impuls ausgang um 1 inkrementieren
IF bTaktmerkerIp THEN
    nAnalogwertRampe := nAnalogwertRampe + 1;
END_IF;

end;

sorry, kop hab ich überlesen ;)
 
Zuletzt bearbeitet:
das war kein AWL, das war SCL

hier mal in KOP zum hochzählen und wenn voll, dann auf 0 zurücksetzen. Wenn Du dann die Rampe wieder runterzählen willst, ist das noch ausbaufähig!



bild1.jpg

bild2.PNG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Damit hast du eine Lösung, die die Werte im Sekundentakt inkrementiert.
Wenn dir das zu grob ist kannst du natürlich die die Taktrate kürzer machen.
Ideal wäre es, wenn du im OB1 aus dem Bausteinkopf die aktuelle Zykluszeit ausließt und in deinen Rampengenerator einfließen lässt.

Sprich, du möchtest einen Anstieg von z.B. 75 Werteeinheiten ( z.B. U/min) je Sekunde, dann ließt du zunächst die aktuelle Zykluszeit aus (z.B. 10 ms) und errechnest wie groß das Inrkrement im aktuellen Zyklus sein muss, damit die Steigung von 75 Werte/Sek. eingehalten werden.
Also 10ms = 1000 Zyklen /sek --> Steigung/ Anzahl der Zyklen je Sekunde = nötiges Inkrement. 75/1000 = 0,075.
Ein Taktgenerator brauchst du dann nicht mehr.
 
Hallo
Der Sekundentakt reicht mir aber wie kann ich die Rampe wieder runterfahren mit einem sub?Bin in Analogwertverarbeitung nicht so fit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anstelle im Netzwerk 3 wieder auf Null zu reseten, einen Merker setzen und diesen dann für die andere Richtung nutzen, also "SUB", anstelle von "ADD".
Dann den Merker vor die ADD-Anweisung als UN setzen und vor die SUB-Anweisung als U.
Wenn der Wert wieder Null erreicht hat, den Merker Rücksetzen!
 
Danke erst mal das hat schon alles gut geklappt aber wie bekomme ich das jetzt hin das die Analogspannung reversiert wegen Drehrichtungswechsel?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erst mal das hat schon alles gut geklappt aber wie bekomme ich das jetzt hin das die Analogspannung reversiert wegen Drehrichtungswechsel?

indem du den Wert mit einem negativen Vorzeigen belegst. Natürlich muss der Ausgang auch in der Hardware so eingestellt werden das er -10..10V ausgeben kann bzw. -20..20mA

mfG René
 
Hallo wieder mal wie kann ich ganz einfach einen festen Analogwert umschalten von +/- am Analogausgang.Geht das mit dem MUX habe ich mal probiert,aber so ganz hat das nicht geklappt.
 
Hallo wieder mal wie kann ich ganz einfach einen festen Analogwert umschalten von +/- am Analogausgang.Geht das mit dem MUX habe ich mal probiert,aber so ganz hat das nicht geklappt.

Wie kommst du auf mux?
Sind dir die Grundrechenarten bekannt?
Frage in der Grundschule: Was für eine Operation muss man durchführen um aus einer Positiven Zahl eine negative zu machen?
 
Zurück
Oben