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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Messwerte aufnehmen

  1. #1
    Registriert seit
    23.04.2013
    Beiträge
    33
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo bin Neuling was das Thema SPS-Programmierung.Ich möchte 100 Messwerte aufnehmen und das wollte ich in SCL mit einer For-Schleife realisieren wo dort die Werte in ein Array geschrieben werden aber irgendwie komm ich da nicht weiter Oder gibts eine andere Möglichkeit das in KOP zu machen ?

    A Array [1..100] of Bool
    i int
    Messwert int


    FOR #i:= 0 TO 100 BY 1 DO
    #A[#i] := #Messwert;


    END_FOR;
    Zitieren Zitieren Messwerte aufnehmen  

  2. #2
    Registriert seit
    10.01.2012
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Christian_87,

    ich bin zwar auch ein Anfänger aber ich versuch mal zu helfen.

    Ich gehe mal davon aus, dass du Zahlen (int) und kein BOOL aufnehmen willst.

    Wo bekommst du denn deine Messwerte her?
    VAR_IN?
    Wenn ja dann kannst du keine For-Schleife nehmen, da du den Baustein öfter aufrufen musst um Werte einzulesen.

    Mal ein Beispiel:

    Function_Block FB1

    CONST
    Laenge := 100;
    END_CONST

    VAR_INPUT
    Messwert : INT;
    END_VAR

    VAR
    Messwerte : Array[0..Laenge] of INT;
    i : INT;
    END_VAR

    IF i > Laenge then
    i :=0;
    END_IF;

    Messwerte[i] := Messwert;
    i := i+1;

    End_Funktion_Block

    Ich hoffe es hat geholfen.

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Welche CPU benutzt Du?
    Willst Du in jedes Element des Arrays den gleichen Wert schreiben? Jedenfalls würde das Deine FOR-Schleife machen.

    Die Idee ein Array für die Speicherung von 100 Meßwerten zu nutzen ist schonmal gut, doch muß das Array dann vom Typ der einzuspeichernden Meßwerte sein - also wohl eher REAL als BOOL.

    Daß eine SPS das Anwenderprogramm zyklisch bearbeitet weißt Du schon?
    Wo kommen Deine Meßwerte her?

    Ich schätze, Du brauchst eher einen Trigger oder ein Event, wenn ein neuer Meßwert vorliegt. Dann speicherst Du den Meßwert an die nächste (freie) Stelle in das Array und erhöhst einen Zähler (Pointer), der Dir anzeigt, wie weit das Array nun gefüllt ist. Wenn das Array voll ist (der Zähler also bis 100 gekommen ist), dann darfst Du nicht weiter in das Array schreiben, denn dann zeigt Array[#pointer] schon außerhalb des Arrays.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Registriert seit
    23.04.2013
    Beiträge
    33
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke erstmal für die Antworten!
    Das ist eine CPU 1215 DC/DC/DC mit zusätlichem analogen signal board wo ich ein Signal von 0...10V auswerte.Es dient zur Drehmomentenaufnahme von einem Motor,ich möchte um die 100 Messwerte + - aufnehmen und dann auswerten ob das Drehmoment im Toleranzbereich liegt.Es wird ein Schraubvorgang überwacht.Also der Wert ändert sich.Eventuell will ich auch noch einen Mittelwert bilden.Einen Trigger selbstständig zu setzen hab ich mir auch schon so überlegt aber ich dachte die For Schleife springt oben immer wieder rein

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Eine FOR-Schleife wird in einem Rutsch komplett durchlaufen (so oft wie angegeben). So sind FOR-Schleifen nun mal ...

    Du müßtest festlegen, wie oft (alle wieviel ms) Du den Meßwert vom Signal Board in das Array speichern willst/mußt --> danach richtet sich, wie Du den Speicherungs-Trigger erzeugst. Und wielange die Gesamt-Aufzeichnungsdauer sein soll --> danach richtet sich die Größe des Arrays.
    Das Programmbeispiel vom Florian würde bei jedem Baustein-Aufruf (also wahrscheinlich in jedem OB1-Zyklus einmal) den Meßwert in das Array schreiben. Nach 101 Aufrufen - vielleicht nach 345ms? - wäre das Array voll. Je länger das komplette Programm wird, desto länger und unberechenbarer würde es dauern.

    Und ein spezieller Tip für Programmier-Anfänger: beim Programmieren kommt es durchaus auf die Details drauf an. Wenn ein Array[1..100] deklariert ist, dann sollte man nicht versuchen die Elemente Array[0] bis Array[100] anzusprechen. Eine SPS mag das überhaupt nicht. Weiters: ein Array[0..100] enthält 101 Elemente, nicht nur 100.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Registriert seit
    23.04.2013
    Beiträge
    33
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok dann probier ich mal mein bestes und berichte ob und wie es geklappt hat

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Viel Erfolg!
    Und falls weitere Probleme kommen - dann kannste ruhig wieder hier fragen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    23.04.2013
    Beiträge
    33
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke!
    Zwei Fragen hab ich noch.Beispielsweilse ich setze den Trigger alle 5ms selber dann bekomm ich ja den Messwert immer nur alle 5ms oder wenn der Zyklus länger dauert dann mehr als 5ms, wäre es besser den Schraubvorgang dauerhaft zu überwachen?und die Messwerte nur Mittelwertübergabe zu nutzen?

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Gibt es von dem Meßvorgang ein Ende-Signal? Oder ein Jetzt-Speichern-Signal?
    Oder willst Du kontinuierlich alle 5ms den aktuellen Meßwert wegspeichern?
    Beschreibe doch mal, was Du da eigentlichen messen und speichern willst.

    Wenn man in einem (kurzen) festen Zeitraster Werte erfassen will, dann nutzt man üblicherweise Weckalarme (OB3x) (ich habe keine Ahnung, wie die bei S7-1200 heißen). Der Weckalarm unterbricht das laufende Programm, speichert den Wert und setzt das unterbrochene Programm fort. So bekommt man die Werte in einen genauen festen Zeitraster.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    Registriert seit
    23.04.2013
    Beiträge
    33
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ich steuere einen Motor über FU an. An der Welle des Motor befindet sich der Drehmomenten-Sensor von dem ich das Signal auswerten will. Beim Einschrauben gebe ich den FU einen bestimmten Winkel vor das er abfahren soll, und über einen Drehwinkelgeber errechne ich mir den Winkel. Von einem Winkel x kurz vor Ende des Schraubvorgangs bis zum Ende des abzufahrenen Profil des FU´s möchte ich das Drehmoment auswerten.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 22.04.2013, 07:46
  2. BK9050 ins Ethernet-System zur CX9010 aufnehmen
    Von blubbi im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 12.02.2012, 13:07
  3. CX9010 mit fester IP ins Netzwerk aufnehmen
    Von mike_roh_soft im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 03.12.2011, 19:16
  4. ET 200 M in die HW aufnehmen
    Von hbedir im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 17.11.2009, 15:41
  5. cp 343-1 advanced it in HW-Katalog aufnehmen
    Von wolder im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 08.06.2009, 15:34

Lesezeichen

Berechtigungen

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