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

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

Thema: ANY als Parameter in SCL

  1. #1
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte einen SFC in SCL aufrufen, dazu muss ich ein Ziel als ANY angeben. In AWL hat das wie folgt ausgesehen:

    P#M4.0 BYTE10

    Wie schreibe ich das in SCL?
    Zitieren Zitieren ANY als Parameter in SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    möchtest du denn wirklich in den Merkerbereich hinein - oder vielleicht auf eine Baustein-interne Variable ?
    Wenn Letzteres dann brauchst du nur der ANY-Variablen die interne Variable zuweisen. SCL baut sich dann selbst den Pointer.
    Ansonsten hilft dir nur das Arbeiten mittels AT und passender Zuordnung ...

    Gruß
    Larry

  3. #3
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Mittel AT meinst du ca. wie unten stehend?


    DR_ANY : ANY;
    DR_ANY_AT AT DR_ANY : STRUCT
    SyntaxID : BYTE := W#16#10;
    Datentyp : BYTE := W#16#03;
    db_Nummer : INT;:= 0
    Speicherber : BYTE;
    BytePointer : DWORD;
    END_STRUCT;

    Wie gebe ich denn BytePointer an? Der setzt sich ja aus Byte und Bit-Adresse zusammen?

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Genau so ...
    Die Bit-Adresse mußt du dir ausrechnen. Also z.B. für M4.7 := (4 * 8 ) + 7.
    Geändert von Larry Laffer (28.04.2011 um 09:44 Uhr)

  5. #5
    Registriert seit
    19.07.2007
    Beiträge
    78
    Danke
    14
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hallo zusammen,
    ich hab jetzt das Vergnügen an der Sache weiterarbeiten zu können. nur geschafft hab ich es heute immer noch nicht.
    Mein Programm sieht so aus:

    VAR
    aRT_DATEN_RCV : ARRAY [0..20] OF BYTE;
    RT_DATEN_RCV AT aRT_DATEN_RCV : STRUCT
    ID : BYTE := 16#01;
    SRC_LEN : WORD := 16#02;
    SRC_DB_NR : WORD := 16#72;
    SRC_POINTER : DWORD;
    DST_POINTER : DWORD;
    END_STRUCT;
    aRT_DATEN_SND : ARRAY [0..20] OF BYTE;
    RT_DATEN_SND AT aRT_DATEN_SND : STRUCT
    ID : BYTE := 16#01;
    DST_LEN : WORD := 16#02;
    DST_DB_NR : WORD := 16#70;
    DST_POINTER : DWORD;
    SRC_POINTER : DWORD;
    END_STRUCT;
    GET : SFB14;
    PUT : SFB15;
    END_VAR

    BEGIN
    RT_DATEN_RCV.SRC_POINTER := DB112.DBW0;
    RT_DATEN_RCV.DST_POINTER := DB114.DBW0;
    RT_DATEN_SND.DST_POINTER := DB114.DBW0;
    RT_DATEN_SND.SRC_POINTER := DB112.DBW0;
    GET ( REQ := M0.1 // IN: BOOL
    ,ID := RT_DATEN_RCV.ID // IN: WORD
    ,ADDR_1 := RT_DATEN_RCV.SRC_POINTER // INOUT: ANY
    ,RD_1 := RT_DATEN_RCV.DST_POINTER // INOUT: ANY
    );
    PUT ( REQ := M0.1 // IN: BOOL
    ,ID := RT_DATEN_SND.ID // IN: WORD
    ,ADDR_1 := RT_DATEN_SND.SRC_POINTER // INOUT: ANY
    ,SD_1 := RT_DATEN_SND.DST_POINTER // INOUT: ANY
    );
    END_FUNCTION_BLOCK

    Funktionieren tut es leider nicht. Wa smache ich mit dem AT falsch?
    Ich möchte mit einer 315-2 PN/DP aus einer 1200 Steuerung lesen und rein schreiben. In FUP hat das auch geklappt, allerdings möchte ich das in SCL machen.

    Danke und Grüße
    Carsten

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

    Standard

    Deine Struct ist falsch aufgebaut (siehe Beitrag #3 in diesem Thread).
    Was genau steht in DB112.DBW0, zeig mal bitte.

    Mit der AT-Ansicht tust du gar nichts.

    Die dient eigentlich dazu einen den Any mit den richtigen Daten zu versehen.
    Geändert von Ralle (08.01.2013 um 18:44 Uhr)
    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

  7. #7
    Registriert seit
    19.07.2007
    Beiträge
    78
    Danke
    14
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Wenn du meinst das ich eine any Variable brauche dann würde ich die auch gerne haben, kann die aber in VAR nicht deklarieren und in VAR_TEMP gehts dann, aber dann mag der Editor das nicht in der deklaration der AT-Ansicht.
    Im DB 112 sowie im Db114 sind lediglich je 16 Boolsche Werte. also zwei Byte oder ein Wort. Da mein Pointer nicht funktioniert hab ich eben das Wort dran geschrieben damit ich mal die 16 Bools abdecke...
    Da das mit der deklaration nicht klappt mache ich anscheinend auch nichts mit der AT-Ansicht.
    Soviel habe ich verstanden mit dem Any und den Daten aber es geht halt nicht.

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Kannst du bitte mal den Sinn deines Tun erklären ...?
    Mit deinem Code gerade in Verbindung mit den SFB's und den absoluten Adressen kann ich so gar nichts anfangen.

    Gruß
    Larry

  9. #9
    Registriert seit
    19.07.2007
    Beiträge
    78
    Danke
    14
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Ich möchte mit eine einseitigen PUT/GET Verbindung mit einer 315-2PN/DP mit einer 1200er Steuerung kommunizieren und lediglich Boolsche Werte austauschen. Dafür habe ich in jeder Steuerung zwei DB's gemacht mit je 16 boolschen Werten. Dafür habe ich mir den SFB 14 und den SFB 15 hergenommen. Wenn ich diese nun in FUP aufrufe, dann kann ich den Pointer direkt an den Baustein schreiben. P#db112.dbx0.0 Byte 2 z.B.! Leider geht das so in SCL nicht. Ich will es aber trotzdem in SCL umsetzen und hoffe auf eure Hilfe weil ich es anscheinden alleine nicht hinbekomme... Ich hoffe nun ist es verständlicher.

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    OK ...
    Du kannst dir innerhalb von SCL in diesem Fall das ANY-Bauen sparen.
    Du kannst deine Quell-Variable direkt auf den deklarierten ANY zuweisen - SCL macht dann den Rest. Den ANY kannst du dann an den SFB schreiben ...
    also etwas so :
    Code:
    mySrcAny := DB112.DBW0 ;
    myDestAny := DB114.DBW0 ;
    usw.
    Verstehst du, was ich meine ?
    Die AT-Geschichte etc. brauchst du hier nicht ...

    Gruß
    Larry

Ähnliche Themen

  1. S5 - FB - IN/OUT-Parameter
    Von Hawkster im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 26.10.2012, 18:53
  2. TON Parameter ?
    Von xinix im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 16.04.2011, 19:05
  3. UDT als IN-Parameter am FB
    Von OB21 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.08.2010, 17:14
  4. UDT als IN-Parameter vom FC
    Von astranik im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.05.2009, 15:01
  5. 611 A Parameter
    Von Tellme im Forum Antriebstechnik
    Antworten: 1
    Letzter Beitrag: 05.12.2006, 22:18

Lesezeichen

Berechtigungen

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