Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Kurvenberechnug

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo , gibt es einen Baustein , der einen Kurve etrapoliert, die durch eine bestimmte Anzahl von Stützstellen definiert wird.
    Ich möcht vermeiden dass ich einen Treppenfunktion bekomme, der Baustein soll die Treppe " glätten "

    Danke für die anregenden Antworten
    Zitieren Zitieren Gelöst: Kurvenberechnug  

  2. "Ich bin noch neu im AWL-Geschäft.

    Hat jemand zu diesem Thema einen funktionierenden Baustein, den man sich mal ansehen kann?

    @Ralf
    Nichts gegen Deinen Code, aber irgendwie ist das Ganze ja noch ziemlich unvollständig.
    Sollte der Baustein nicht in einer definierten Taktung aufgerufen/abgearbeitet werden?
    Wie kommen die Werte von Ordinate und Abszizze in den Baustein?
    Wie gesagt, ich bin noch Neuling. Deshalb Entschuldigung, falls meine Fragen zu "primi" sind.

    ---------------
    Eigentlich brauche ich eine Funktion, die folgendes macht:

    Es gibt eine Tabelle mit folgenden Werten:
    Zeit1[s], Sollwert1
    Zeit2[s], Sollwert2
    Zeit3[s], Sollwert3

    Innerhalb einer Zeit x soll ein Wert ausgegeben werden, der schrittweise von Sollwert y-1 auf Sollwert y angeglichen wird. Nach Ablauf von Zeit x hat der Ausgabewert den Wert Sollwert x. (Falls ich mich nicht zu umständlich ausgedrückt habe. )
    Beispiel:
    Zeit2 = 10s, Sollwert1 = 100, Sollwert2 = 200
    Innerhalb von 10 s soll der Ausgabewert vom 100 auf 200 angeglichen werden.

    Vielleicht kann mir jemand mit einem Lösungsansatz (oder gar einem ganzen FB ) helfen.

    Vielen Dank
    Sabine"


  3. #2
    Registriert seit
    25.05.2004
    Beiträge
    172
    Danke
    0
    Erhielt 40 Danke für 7 Beiträge

    Standard

    Sowas ist verhältnismäßig einfach zu schreiben /sofern nicht mathematische wiederlichkeizen wie Splines gefragt sind.
    Wo hast Du denn Deine Stützpunkte abgelegt?

    Gruß

    Ralf

  4. #3
    sieprog Gast

    Standard

    Hallo allerseits,
    ich hätte auch Interesse an eurer Kurvenberechnung. Vielleicht könntet ihr mir eure Lösung mal zukommen lassen.

    Besten Dank schon vorab
    meine e-mail adresse: heisat@freenet.de
    Zitieren Zitieren FB zur Kurvenberechnung  

  5. #4
    Registriert seit
    25.05.2004
    Beiträge
    172
    Danke
    0
    Erhielt 40 Danke für 7 Beiträge

    Standard

    Nunja, hab mich gerade zuhause am Notepad versucht, so müßte es aber gehen
    Code:
    ABSZISSE 	ARRAY[0..9] of REAL // Die X-ACHSE Muß (!) aufsteigend eingegeben werden
    ORDINATE 	ARRAY[0..9] of REAL // Die Y-ACHSE
    
    * EINGANG *
    WERT_X 		REAL
    
    * AUSGANG *
    WERT_Y 		REAL
    
    * Temp *
    Rette1 		DWORD
    Step		WORD
    
    Programm:
    
    // Rette das Adressreg
    	TAR1 #Rette1
    
    	L	0		
    	T	#Step
    	L	9	// keine 10 Sonst gibts ja keine 2 Stützpunkte
    SLZ:	L	#step 	// Adresse 'Ordinate'
    	SLD 	3	// Mach Pointer 
    	LAR1
    	L 	D[AR1,P#0]
    	L	#WERT_X
    	<=R
    	SPB	RECH	// Ist der Wert-X kleiner od gleich Rechnen
    	L	#Step
    	L	1
    	LOOP	SLZ	// Sonst setze die Schleife fort
    RECH&#58;	L	Step
    	T	#Wert_Y	// Erstmal Differenz Zwischenspeichern
    	L 	D&#91;AR1,P#4&#93; // Den Größeren X-Wert laden
    	L	D&#91;AR1,P#0&#93; // Den kleineren 
    	-R	
    	T	#Wert_Y	// Erstmal Differenz Zwischenspeichern
    	L 	D&#91;AR1,P#44&#93; // Den Größeren Y-Wert laden
    	L	D&#91;AR1,P#40&#93; // Den kleineren 
    	-R
     	L	#Wert_Y	
    	/R		    // Jetzt hat man die Steigung 
    	T	#Wert_Y		 		
    	L	#Wert_X
    	L	D&#91;AR1,P#0&#93; 	
    	-R		// Und den Abstand zum Ersten Stützpunkt
    	L	#Wert_Y
    	*R		// Das ist dann jetzt der Abstand auf der Y-Achse
    	L	D&#91;AR1,P#40&#93;	
    	+R
    	T	#Wert_Y	// Rückschreiben Adressreg
    	L	#Rette1
    	LAR1
    	BE
    sollten Fehler drinsein, bitte melden

    Gruß

    Ralf

  6. #5
    Anonymous Gast

    Standard

    Ich bin noch neu im AWL-Geschäft.

    Hat jemand zu diesem Thema einen funktionierenden Baustein, den man sich mal ansehen kann?

    @Ralf
    Nichts gegen Deinen Code, aber irgendwie ist das Ganze ja noch ziemlich unvollständig.
    Sollte der Baustein nicht in einer definierten Taktung aufgerufen/abgearbeitet werden?
    Wie kommen die Werte von Ordinate und Abszizze in den Baustein?
    Wie gesagt, ich bin noch Neuling. Deshalb Entschuldigung, falls meine Fragen zu "primi" sind.

    ---------------
    Eigentlich brauche ich eine Funktion, die folgendes macht:

    Es gibt eine Tabelle mit folgenden Werten:
    Zeit1[s], Sollwert1
    Zeit2[s], Sollwert2
    Zeit3[s], Sollwert3

    Innerhalb einer Zeit x soll ein Wert ausgegeben werden, der schrittweise von Sollwert y-1 auf Sollwert y angeglichen wird. Nach Ablauf von Zeit x hat der Ausgabewert den Wert Sollwert x. (Falls ich mich nicht zu umständlich ausgedrückt habe. )
    Beispiel:
    Zeit2 = 10s, Sollwert1 = 100, Sollwert2 = 200
    Innerhalb von 10 s soll der Ausgabewert vom 100 auf 200 angeglichen werden.

    Vielleicht kann mir jemand mit einem Lösungsansatz (oder gar einem ganzen FB ) helfen.

    Vielen Dank
    Sabine

  7. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.877
    Danke
    78
    Erhielt 808 Danke für 550 Beiträge

    Standard

    Zitat Zitat von Einsteiger
    Beispiel:
    Zeit2 = 10s, Sollwert1 = 100, Sollwert2 = 200
    Innerhalb von 10 s soll der Ausgabewert vom 100 auf 200 angeglichen werden.
    wie soll der wert denn angefahren werden? als gerade oder als kurve?

    als gerade
    soll2 - soll1 = diff
    diff / zeit2 = solländerung je sekunde
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #7
    Anonymous Gast

    Standard

    Als Gerade.
    Also z.B. wenn der Baustein jede Sekunde aufgerufen würde:
    0. Sekunde -> Sollwert1 = 100
    1. Sekunde -> Sollwert1 = 110
    2. Sekunde -> Sollwert1 = 120
    ...
    10. Sekunde -> Sollwert1 = 200

    Nach Ablauf der Zeit1, kommt dann Zeit2 dran usw. Damit kann man den Sollwert prima stetig verändern und nicht als Sprung.

  9. #8
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.877
    Danke
    78
    Erhielt 808 Danke für 550 Beiträge

    Standard

    gewünschtes habe ich dir doch aufgezeigt.

    Code:
    un impuls
    spb m001
    
    u erster_durchlauf
    spb init
    s  erster_durchlauf
    l sollwert1
    t sollwertaktuell
    spa m001
    
    l sollwert2
    l sollwert1
    -i
    t differenz
    l 10 //sekunden
    /i
    t diff_je_sekunde
    init&#58; nop 0
    
    l sollwertaktuell
    l diff_je_sekunde
    +i
    t sollwertaktuell
    m001&#58; nop 0
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  10. #9
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke. Ich probiers mal aus.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •