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

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

Thema: SFC14 Any als Deklarationsvariable

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte mir einen Baustein vorbereiten, den ich immer wieder aufrufen kann.
    Die SFC14 verlangt beim Record einen ANY. Ich weiß wie ein ANY aussieht wenn ich ihn fest vergebe. Wie muss er gestaltet werden wenn ich ihn als Daklarationsvariable verwenden möchte?

    Danke
    sir
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren SFC14 Any als Deklarationsvariable  

  2. #2
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Soweit ich das im Kopf hab kannst du den Any als In-Parameter in deinem FC deklarieren. Das kopierst du dann als Temp-Variable und parametrierst ihn an den SFC.

    Aber warum machst du das überhaupt? Gehts dir darum, die LADDR nicht in Hex angeben zu müssen? Dazu empfehle ich einen Move vor dem SFC14 von Int nach Word und gut is.
    mfG Aventinus

  3. #3
    Registriert seit
    11.01.2010
    Beiträge
    74
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Peripherie 6 Byte einlesen (Status von FU)
    Daten konsistent über Record ausgeben in einen DB.
    z.B. P#db60.dbx0.0 Byte 6
    Der Baustein wird noch umfangreicher. Dann möchte ich den Baustein für 16 Antriebe verwenden und den Baustein immer wieder aufrufen und nur noch beschalten. Aber ich weiß nicht wie ich den Any indirekt zuweisen kann.

  4. #4
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Du musst Dir Deinen ANY-Pointer am besten im Baustein selbst zusammensetzen und dann an den SFC antragen.
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  5. #5
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Hier mal ein Beispiel:

    IN:
    Kommunikations_DB_Nr = INT

    TEMP:
    Zeiger1 = ANY // Kommunikations-DB DBX24.0 10 Byte


    L #Kommunikations_DB_Nr
    T #Kommunikations_DB

    AUF DB [#Kommunikations_DB]

    L L#0 // Zeiger löschen
    T LD 0
    T LD 4
    T LW 8
    L B#16#10 // Sytax-ID "10hex"
    T LB 0
    L B#16#2 // Datentyp "Byte"
    T LB 1
    L 10 // Wiederholfaktor (Länge)
    T LW 2
    L #Kommunikations_DB_Nr // DB-Nummer
    T LW 4
    L 24 // Adresse im DB
    T LW 8
    L LD 6
    SLD 3 // um 3 Stellen nach links schieben
    T LD 6
    L B#16#84
    T LB 6

    CALL "DPRD_DAT"
    LADDR :=#PEW_PAW_Adresse_1
    RET_VAL:=DBW4
    RECORD :=#Zeiger1
    Geändert von MCerv (09.06.2011 um 12:01 Uhr)
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  6. #6
    Registriert seit
    11.01.2010
    Beiträge
    74
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ja gut, aber du musst doch in der Variablentabelle der Variable #Zeiger 1
    einen Datentyp zuweisen. Wenn ich hier any auswähle bleibt die Variable im Programm rot mit der Meldung:
    unzulässige Parameterversorgung für Record
    Irgendwie steh ich im Moment auf dem Schlauch.

    CALL "DPRD_DAT"
    LADDR :=#PEW_PAW_Adresse_1
    RET_VAL:=DBW4
    RECORD :=#Zeiger1

  7. #7
    Registriert seit
    11.01.2010
    Beiträge
    74
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Wer lesen kann ist klar im Vorteil:

    Ich hatte den Zeiger immer im OUT und nicht TEMP

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von sirbarny Beitrag anzeigen
    Ja gut, aber du musst doch in der Variablentabelle der Variable #Zeiger 1
    einen Datentyp zuweisen. Wenn ich hier any auswähle bleibt die Variable im Programm rot mit der Meldung:
    unzulässige Parameterversorgung für Record
    Irgendwie steh ich im Moment auf dem Schlauch.

    CALL "DPRD_DAT"
    LADDR :=#PEW_PAW_Adresse_1
    RET_VAL:=DBW4
    RECORD :=#Zeiger1
    Lege #Zeiger1 mal als Temp an, Any kann man nicht einfach von Input auf den Eingang eines weiteren Bausteins durchreichen. Du mußt dann den ankommenden Any von Input auf den Temp-Zeiger umkopieren.

    Etwa so, nur kopiere ich hier von Temp auf IN/OUT (in einem FB), also in die andere Richtung:

    Code:
          TAR2  #AR2BACKUP
          L     P##anyRCV       //ein Any in IN/OUT
          LAR2  
          L     #AR2BACKUP
          +AR2  
          L     P##anyTemp    //ein Any in Temp
          LAR1  
          L     DBW [AR2,P#0.0]
          T     LW [AR1,P#0.0]
          L     DBW [AR2,P#2.0]
          T     LW [AR1,P#2.0]
          L     DBW [AR2,P#4.0]
          T     LW [AR1,P#4.0]
          T     #wDB               //kannst du weglassen
          L     DBD [AR2,P#6.0]
          T     LD [AR1,P#6.0]
          T     #dwAdr            //kannst du weglassen 
          LAR2  #AR2BACKUP
    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

  9. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von sirbarny Beitrag anzeigen
    Ich möchte mir einen Baustein vorbereiten, den ich immer wieder aufrufen kann.
    Die SFC14 verlangt beim Record einen ANY. Ich weiß wie ein ANY aussieht wenn ich ihn fest vergebe. Wie muss er gestaltet werden wenn ich ihn als Daklarationsvariable verwenden möchte?

    Danke
    sir
    Wenn Ich das richtig sehe willst du in deinem Baustein doch die 3 Statusworte eines Sew Umrichters verarbeiten? Erzeug dir doch dann einen Strukt in den Lokaldaten mit dem Aufbau der Statusworte, und leg diesen an den Ausgsnt von dprd_dat
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  10. #10
    Registriert seit
    11.01.2010
    Beiträge
    74
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Jochen. Du hast mich schon verstanden. Soweit bin ich schon.
    Aber ich hätte die Statusworte gerne in einem DB und würde die Daten gerne direkt dahin schreiben.
    Eigentlich könnte ich die Worte auch mit:

    L PEW 256
    TAW
    T DB60.dbw0

    usw. übertragen, aber ich dachte mit SFC wäre es professioneller.

    Die Steuerworte würde ich dann mit SFC15 genauso behandeln.
    Deklarationsvariable ==> DB-Bereich ==> SEW Movigear.

    sir

Ähnliche Themen

  1. SFC14 steuern
    Von Alex 84 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.04.2009, 15:21
  2. SFC14 - Pointerproblem
    Von Wiggi0606 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.01.2009, 19:01
  3. SFC14 in AG
    Von Andy_speedy im Forum Feldbusse
    Antworten: 8
    Letzter Beitrag: 16.03.2008, 15:35
  4. Sfc14 / Sfc 15
    Von WL7001 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 14.02.2008, 12:25
  5. SFC14/SFC15
    Von Anonymous im Forum Feldbusse
    Antworten: 10
    Letzter Beitrag: 19.07.2004, 20:17

Lesezeichen

Berechtigungen

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