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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Structured Text gemäß IEC 61131-3)

  1. #1
    Registriert seit
    27.05.2013
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo @ ich bin Anfänger im Bereich SPS und muss für ein vorstellungsgespräch folgende Aufgabe lösen

    In der diskreten Messwertverarbeitung wird oft eine Filterung mit gleitendem Mittelwert (FIR)
    verwendet. Hierbei werden die Eingangswerte x[k] in einem festen Zeitraster von der
    Steuerung eingelesen. Zusammen mit den gespeicherten Eingangswerten vorangegangener
    Steuerungszyklen x[k-1] … x[k-n+1] wird dann der Mittelwert über diese Werte
    gebildet, was den Ausgangswert y[k] ergibt. n bestimmt die Anzahl der zu
    berücksichtigenden Eingangsgrößen. Die zugehörige Formel ist:
    n-1
    y[k]= (1/n) £ x[k-1]
    i=0
    Das zu erstellende Programmmodul hat mindestens folgende Schnittstelle:
    Eingang
    IN_nx: INT; (* Einheit [1]; zu filternder Wert *)
    IN_ucFiltergrad: BYTE; (* Einheit - ; Filtergrad: Anzahl abzuspeichernder Werte *)
    Ausgang
    OUT_y: INT; (* Einheit [1]; gefilterter Wert *)

    Aufgabe
    Bitte bereiten Sie in ST (Structured Text gemäß IEC 61131-3) eine industrietaugliche Lösung
    für das oben beschriebene gleitende Mittelwertfilter vor. Das von Ihnen erstellte
    Programmmodul sollte von Ihren Fachkollegen später beispielsweise als Bibliotheksfunktion

    kann jemand mir helfen?
    Zitieren Zitieren Structured Text gemäß IEC 61131-3)  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    755
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Dann fang doch erstmal an. Und wenn es dann irgendwo hakt, wirst Du hier auch Hilfe finden.

  3. #3
    Registriert seit
    24.02.2009
    Beiträge
    1.244
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Du brauchst nen Array und ne FOR-Schleife.
    Ist der Befehl MEMMOVE erlaubt?

  4. #4
    Registriert seit
    05.10.2005
    Beiträge
    188
    Danke
    31
    Erhielt 16 Danke für 14 Beiträge

    Standard

    ich muss ehrlich sagen, dass dein neuer arbeiteger hat ein hohes lob verdient. die doch "eigentlich" einfache aufgabe kann so viel über dich aussagen.

    ich hoffe die wird nur bei direkten, präzisen fragen geholfen.
    es gibt bei deiner aufgabe so viele kleine besonderheiten oder unwichtigkeiten die viel über dich aussagen.

    meine meinung

    streng dich an, hilfe bekommst du im forum eigentlich immer.

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard

    Aber immerhin interessant, wie man eine recht einfache Aufgabe hinter einem bombastisch und wissenschaftlich klingendem Text verstecken kann.
    Klingt, als hätten die das aus irgendeinem Uni-Lehrtext geklaut.

    Ich denke auch, Lösungsansatz machen und hier posten. Aber ob dem TE dazu die Zeit reicht?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    megni ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.05.2013
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Fanta-Er Beitrag anzeigen
    ich muss ehrlich sagen, dass dein neuer arbeiteger hat ein hohes lob verdient. die doch "eigentlich" einfache aufgabe kann so viel über dich aussagen.

    ich hoffe die wird nur bei direkten, präzisen fragen geholfen.
    es gibt bei deiner aufgabe so viele kleine besonderheiten oder unwichtigkeiten die viel über dich aussagen.

    meine meinung

    streng dich an, hilfe bekommst du im forum eigentlich immer.
    Können Sie mir bitte was für eine besonderheiten hinter dieser Aufgabe steckt

  7. #7
    megni ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.05.2013
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    kann jemand mir erklären wozu ich die Variable IN_ucFiltergrad brauche?

    Danke

  8. #8
    megni ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.05.2013
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo @ das ist mein Lösungsvorschlag für die obige Augagbe
    FUNCTION_BLOCK GMBerechnung
    VAR_INPUT
    IN_nx : INT; (* zu filternder Wert*)
    IN_ucFitergrad: BYTE; (*Anzahl abzuspeichernder Werte*)
    END_VAR
    VAR_OUTPUT
    OUT_y: INT; (* Mittelwert: gefilterter Wert*)
    END_VAR
    VAR
    Messwerte:ARRAY[1..n] OF INT;
    index_Write:INT:=1;
    index_Read:INT:=1;
    Sum:INT:=0; (*enthält*)
    END_VAR

    (*zu filternder Wert im FIFO schreiben*)

    Messwerte[index_Write:INT]:=IN_nx;

    IF index_Write >= n THEN
    index_Write:=1;

    ELSE

    index_Write:=index_Write+1;

    END_IF;

    (*zu filternder Wert im FIFO auslesen*)

    IF index_Read < index_Write THEN
    Sum:= Sum + Messwerte[index_Read];
    index_Read:=index_Read+1;
    END_IF;

    (*Mittelwert Berechnung*)
    IF index_Read >= n THEN
    OUT_y:=Sum\n;
    Sum:=0;
    index_Read:=1;
    END_IF;

    Werde ich mich für die Kritik und Verbesserungsvorschläge freuen.

  9. #9
    Registriert seit
    16.07.2007
    Beiträge
    61
    Danke
    13
    Erhielt 16 Danke für 16 Beiträge

    Standard

    Zitat Zitat von megni Beitrag anzeigen
    kann jemand mir erklären wozu ich die Variable IN_ucFiltergrad brauche?

    Danke
    IN_ucFiltergrad ist die Anzahl der Messungen für die Mittelwertbildung. Soll heißen, die Variable gibt an, wie viele Werte zur Mittelwertbildung heran genommen werden.

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mal auf die Schnelle:

    Du hast "IN_ucFitergrad" nicht berücksichtigt.

    Du kannst in Codesys m.W. keine variablen Array anlegen. Daher legst du ein Array mit n als Konstante an, die so groß ist, dass künfitge max. Filtergrade abgedeckt sind. (Oder es muß bei Änderungen immer neu compiliert werden) Viellecht 20 oder 50?
    Statt n bei den Vergleichen setzt du dein "IN_ucFitergrad" ein, wobei du ganz am Anfang einen Vergleich machen solltest, dass "IN_ucFitergrad" <= n ist, ansonsten einen Fehler ausgeben.

    Deine FB ist so aufgebaut, dass er immer, wenn ein neuer Wert eingelesen werden soll genau einmal aufgerufen wird, ist das so gewollt? Wenn nicht wäre noch eine Eingang möglichm der dann im FB über eine Flankenbildung den Eintrag und die Berechnung veranlaßt.

    Der FB kann nicht zurückgesetzt (genullt werden), was man noch einbauen sollte.

    Den Mittelwert berechnest du erst, wenn die Anzahl von "IN_ucFitergrad" Werte eingetragen wurden. Das heißt in der Praxis z.Bsp. immer 10 Werte (bei "IN_ucFitergrad" = 10) abwarten, dann Mittelwert berechnen.
    Ich würde den Mittelwert jedes Mal berechenen, du hast ja praktisch einen Ringbuffer gebaut, so dass immer ein alter Wert überschrieben wird.

    Nun gibt es mehrere Möglichkeiten:

    1. Immer alle Werte Addieren und durch "IN_ucFitergrad" teilen. (kostet Rechenzeit)
    2. Wert, der überschrieben wird. vor dem Überschreiben von SUM abziehen, neuen Wert dazu addieren, dur "IN_ucFitergrad" teilen. (eleganer, weniger Rechenzeit)

    Aufpassen, du mußt dann am Anfang einen Zählwert mitführen, wie viele Werte du überhaupt schon im Buffer hast, da ja bei den ersten (z.Bsp. 4) Werten nicht durch "IN_ucFitergrad" getteilt werden darf, sondern nur durch 4! Dann hättest du schon nach dem ersten eingelesenen Wert ein Ergebnis für den Mittelwert parat, auch wenn das noch ungenau ist.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  11. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    megni (10.06.2013)

Ähnliche Themen

  1. Structured Text (ST)
    Von nourdine im Forum PC- und Netzwerktechnik
    Antworten: 6
    Letzter Beitrag: 29.11.2009, 17:13
  2. [ ST - Structured Text ] Pointer Casten
    Von caret im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 16.10.2009, 22:38
  3. Structured Text RSLogix
    Von kammi-kaze im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 20.07.2009, 15:01
  4. SCL oder ST und EN 61131-3/IEC 61131-3
    Von McCowsky im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.03.2009, 15:05
  5. IEC 61131-3
    Von arcis im Forum Stammtisch
    Antworten: 1
    Letzter Beitrag: 24.12.2005, 11:52

Lesezeichen

Berechtigungen

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