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

Ergebnis 1 bis 4 von 4

Thema: Analogwerte im Array kontinuierlich speichern.

  1. #1
    Registriert seit
    20.07.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich beschäftige mich vom kurzen Zeit mit CODSYS 2.3, und versuch Analogwerte von den Sensorn im Array zu speichern bzw. einlesen und dann durch LABVIEW im Server zu schicken und dort zu speichern.

    1-. Was ich gemacht habe:
    A1 Array erstellt, dadurch die Werte von den Sensorn gelesen wird,

    2-. A2 Array erstellet, dadruch werden alle Werte von A1[0].

    mein Problem ist, dass die gespeicherte Werte im A2 ändern sich mit Änderung der Werte vom Sensor.

    mein Ziel ist, dass ich alle geänderte Werte vom ersten Sensorn im A2 speichere.

    Kann jemand mir helfen?

    Damit das klarer wird:

    mein Code:

    PROGRAM PLC_PRG
    A1 AT %ID4 :ARRAY [0..3] OF REAL ; (*4 verschiedene Sensor wert gezeigt *)
    A2 : ARRAY [0..9] OF REAL; (*dadruch wird die Werte von A1[0] im A2[] gespeichert, Also erste 8 Werte von A1[0] *)
    i : INT:= 0;
    VAR

    Anweisung:

    FOR i:= 0 TO 8 DO
    IF A2[i-1]<> A1[0] THEN
    A2[i] := A1[0];
    i := i+1;
    END_IF
    END_FOR

    Problem(beim Start der Codesys. Wird gezeigt:

    A2[0]:= 32.075
    A2[1]:= 0
    A2[2]:= 32.075
    A2[3]:= 0
    A2[4]:= 32.075
    A2[5]:= 0
    A2[6]:= 32.075
    A2[7]:= 0
    A2[8]:= 32.075
    A2[9]:= 0

    Warum bekomme ich immer 0 bei jeder i+1 ?
    warum bekomme ich immer das selbe immer 32.075? (d.h: bei jeder Änderung des Sensors Wert ändert sich auch der Werte 32.075 je nachdem welche Werte der Sensor ständig gibt).

    ich will gerne wissen, wie ich alle veränderten Werte des ersten Sensor im A2[] speichern bzw. zeigen kann.

    ich bedanke mich im Vorraus.

    Gruß
    Ara
    Zitieren Zitieren Analogwerte im Array kontinuierlich speichern.  

  2. #2
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.448
    Danke
    238
    Erhielt 234 Danke für 215 Beiträge

    Standard

    Einmal addiert die For-Schleife und einmal addierst Du 1 zu i

    Schau mal beim Stichwort Flankenauswertung nach. Das ist genau das Prinzip was Du suchst.

    if sensorwert <> sensorwert_alt then
    arraywert[i]:=sensorwert;
    i:=i+1;
    end_if;
    sensorwert_alt:=sensorwert;

    Das packst Du jetzt in eine Vierfachschleife und machst dasselbe für alle 4 Sensorwerte im Array.
    Aber dabei fehlt Dir die Zeit der Änderung, was m.E. eine Auswertung unmöglich macht.
    Geändert von weißnix_ (11.08.2016 um 16:42 Uhr)

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

    Standard

    1.
    Du greifst hier auf das Array Element -1 zu, also auf irgend einen Wert im Speicher weil des Element -1 nicht gibt:

    FOR i:= 0 TO 8 DO
    IF A2[i-1]<> A1[0] THEN

    2.
    Eine Schleife wird in einem Zyklus immer komplett durchlaufen. Da sich deine Sensorwerte aber innerhalb des Zyklus nicht ändern (IO werden zwischen 2 Zyklen ausgelesen) hat dein A1[0] in der Schleife immer den gleichen Wert. D.h. du knallst dir jedes mal A2 mit dem Wert von A1[0] zu.
    Sänd from mei Kombjudder mitse Dastadurr.

  4. Folgender Benutzer sagt Danke zu MasterOhh für den nützlichen Beitrag:

    weißnix_ (11.08.2016)

  5. #4
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.448
    Danke
    238
    Erhielt 234 Danke für 215 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zusätzlich wird dann i um eins incrementiert, sodass beim nächsten Schleifendurchlauf (die Schleife inrementiert nochmal) i-1=0 ist (initialwert des arrays).

    Warum der Aufwand, nach geänderten Werten zu suchen? Bei Beckhoffs Analogkarten, zeigt ein Flag neue Werte an (jeweils nach einem AD-Zyklus). Ich vermute, das auch andere Karten im Codesysumfeld sowas können.
    Geändert von weißnix_ (11.08.2016 um 18:42 Uhr)

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 13.08.2016, 19:35
  2. Analogwerte nacheinander in DB´s speichern
    Von Drexta im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 21.01.2013, 13:43
  3. Logo und Analogwerte speichern
    Von Rondarianus im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 09.05.2012, 14:51
  4. Analogwerte speichern
    Von a.richter im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 01.06.2010, 08:23
  5. Analogwerte ähnlich Schieberegister speichern
    Von steffen21m im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.04.2005, 20:24

Lesezeichen

Berechtigungen

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