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

Ergebnis 1 bis 7 von 7

Thema: CTU_DINT mit Arrays versorgen

  1. #1
    Registriert seit
    25.10.2013
    Ort
    Castrop-Rauxel
    Beiträge
    177
    Danke
    36
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ganz einfache Frage für den der es weiß:

    PV_OUT ist ein Array[0..50] of BOOL;
    PV_Reset[15] ist ein Array[0..50] of Struct (Dichtung, Ventil) vom Typ BOOL;
    Schaltzyklen_Ventile[15] ist ein Array[0..50] of Struct (Dichtung, Ventil) vom Typ DINT;


    So geht's:

    Zyklen_Ventile_15 ist ein CTU_DINT

    Code:
    //#Zyklen_Ventile_15(CU:=#PV_OUT[15],R:=#PV_Reset[15].Dichtung,CV=>#Schaltzyklen_Ventile[15].Dichtung,PV:=2100000000);
    So nicht:

    Zyklen ist ein Array [0..50] of CTU_DINT

    Code:
    FOR #i := 0 TO 50 DO
      #Zyklen[#i].CU:=#PV_OUT[#i];
      #Zyklen[#i].R:=#PV_Reset[#i].Dichtung;
      #Zyklen[#i].PV:=2100000000;
      #Zyklen[#i].CV:=#Schaltzyklen_Ventile[#i].Dichtung;
    END_FOR;

    Ich vermute dass die for-schleife für ein paar aufrufe verzögern sollte, damit der CTU rechnen kann, da dieser mehrere Aufrufe braucht. Wie würdet ihr es machen?

    Hab 2 mal 50 Counter, also ich tendiere stark zu der zweiten Lösung!!! Diese funktioniert aber leider net!

    Danke!
    Zitieren Zitieren CTU_DINT mit Arrays versorgen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von SanjaDO Beitrag anzeigen
    Hallo

    Ganz einfache Frage für den der es weiß:

    PV_OUT ist ein Array[0..50] of BOOL;
    PV_Reset[15] ist ein Array[0..50] of Struct (Dichtung, Ventil) vom Typ BOOL;
    Schaltzyklen_Ventile[15] ist ein Array[0..50] of Struct (Dichtung, Ventil) vom Typ DINT;


    So geht's:

    Zyklen_Ventile_15 ist ein CTU_DINT

    Code:
    //#Zyklen_Ventile_15(CU:=#PV_OUT[15],R:=#PV_Reset[15].Dichtung,CV=>#Schaltzyklen_Ventile[15].Dichtung,PV:=2100000000);
    So nicht:

    Zyklen ist ein Array [0..50] of CTU_DINT

    Code:
    FOR #i := 0 TO 50 DO
      #Zyklen[#i].CU:=#PV_OUT[#i];
      #Zyklen[#i].R:=#PV_Reset[#i].Dichtung;
      #Zyklen[#i].PV:=2100000000;
      #Zyklen[#i].CV:=#Schaltzyklen_Ventile[#i].Dichtung;
    END_FOR;

    Ich vermute dass die for-schleife für ein paar aufrufe verzögern sollte, damit der CTU rechnen kann, da dieser mehrere Aufrufe braucht. Wie würdet ihr es machen?

    Hab 2 mal 50 Counter, also ich tendiere stark zu der zweiten Lösung!!! Diese funktioniert aber leider net!

    Danke!
    Was genau sagt denn TIA?

    Das rot markierte muß aber auf jeden Fall in => geändert werden.
    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

  3. #3
    SanjaDO ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2013
    Ort
    Castrop-Rauxel
    Beiträge
    177
    Danke
    36
    Erhielt 0 Danke für 0 Beiträge

    Standard

    TIA sagt nichts, der CTU zähl einfach nicht hoch.
    Du hast Recht! Es ist ja ein OUTPUT. Mit dem => meckert der Compiler. Das muss eigentlich so aussehen:

    Funkt aber auch net....



    #Schaltzyklen_Ventile[#i].Dichtung:=#Zyklen[#i].CV;

  4. #4
    SanjaDO ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2013
    Ort
    Castrop-Rauxel
    Beiträge
    177
    Danke
    36
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Problem gelöst durch das Ausschreiben jeder Zeile, also ohne for-schleife... Nicht schön aber geht anscheinend nicht anders.

  5. #5
    Registriert seit
    04.06.2014
    Beiträge
    5
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich kann mich irren, aber in deiner FOR Schleife rufst du den CTU doch garnicht auf, oder?

  6. Folgender Benutzer sagt Danke zu hacker für den nützlichen Beitrag:

    PN/DP (04.06.2014)

  7. #6
    SanjaDO ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2013
    Ort
    Castrop-Rauxel
    Beiträge
    177
    Danke
    36
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Doch! Wollte ich ja. Ich habe versucht jeden CTU-Parameter einzeln zu versorgen, funktioniert aber so nicht

  8. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du kannst bei Siemens m.W.n. eine Multiinstanz nicht als Array anlegen. Egal ob FB oder SFB.

    Du kannst Dir höchstens einen eigenen Zähler als FC analog zum CTU schreiben und den Zählerwert dann im Gegensatz zum CTU extern anstatt in der Instanz (die ja der FC nicht benötigt/hat) speichern. Dann kannst Du den FC-CTU auch in Deiner FOR-Schleife benutzen.

  9. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    SanjaDO (05.06.2014)

Ähnliche Themen

  1. Unterverteilung mit 24V versorgen
    Von mike_roh_soft im Forum Schaltschrankbau
    Antworten: 15
    Letzter Beitrag: 14.02.2012, 12:03
  2. SCL-FB mit Array versorgen
    Von thomasgull im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 04.08.2010, 07:38
  3. FB mit Array versorgen
    Von thomasgull im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.09.2009, 11:48
  4. BLK_MOV mit Pointer versorgen
    Von CrazyCat im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 01.06.2006, 08:02
  5. Alarm8P mit externem Zeitstempel versorgen
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 26.04.2004, 21:23

Lesezeichen

Berechtigungen

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