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

Ergebnis 1 bis 7 von 7

Thema: Profibus Peripheriestruktur an UDT binden in AWL

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.635
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Da ich je länger je konsequenter die Bausteine sauber kapseln will stehe ich jetzt vor was neuem.

    Ich habe immerwieder gleichbleibende Profibus/Profinet Knoten. welche ich gerne als Ganzes an einen Baustein übergeben will.

    Will heissen ich habe einen Baustein mit der Schnittstelle z.B. wHW_IN. Dort will ich die erste Peripherieadresse anlegen des Knotens anhängen. Ob die nun als P#400 oder w#16#190 da angehängt wird ist erstmal egal. Aber im Baustein will ich dass dann sauber auf einer UDT Struktur auflegen. So das ich nachher im Baustein nur noch mit den Symbolen der Struktur arbeiten kann.

    Die UDT Struktur ist z.B. wie der Eingangsbereich des Knotens 20 Byte lang. Wie mach ich das denn am Geschicktesten?

    mfG René
    Zitieren Zitieren Profibus Peripheriestruktur an UDT binden in AWL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.783
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo René,

    ich mache so etwas ähnliches für Frequenzumrichter, Servoachsen, Zählerkarten etc.
    Für mich ist das in meiner Überlegungswelt auch praktisch - andere werden dich dafür ggf. auch "in der Luft zerreissen".

    Du hast grundsätzlich 3 Möglichkeiten :
    - Du übergibst die Adresse als INT und baust dir das intern für den SFC14/15 (o.ä.) um. Hierbei würde dann sowieso deine Struktur die Größe des zu übergebenden Speichers definieren.
    - Du übergibst die Adresse als PEB, PEW oder PED in eine Pointer-Variable und arbeitest dann wie schon beschrieben. Der Vorteil hier ist, dass deine Adressierung so wenigstens in der Querverweisen auftaucht.
    - Du übergibst das Ganze als ANY-Pointer, den du dann intern entsprechend verarbeitest.

    (ich persönlich hatte mich für die erste Variante entschieden)

    Gruß
    Larry

  3. #3
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.635
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Danke dir. Das mit SFC14 gefällt mir eigentlich am Besten. Querverweise auf diese Bereiche sind nicht nötig da jeweils nur einmal im Programm und ausreichend beschrieben.

    Aber wenn ich das nun in PLCsim Lade krieg ich nur den Fehler 8090. Hardware habe ich aber in die Simulation geladen.
    Kann es sein das SFC14 nicht korrekt simuliert wird?

    mfg René

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Danke dir. Das mit SFC14 gefällt mir eigentlich am Besten. Querverweise auf diese Bereiche sind nicht nötig da jeweils nur einmal im Programm und ausreichend beschrieben.

    Aber wenn ich das nun in PLCsim Lade krieg ich nur den Fehler 8090. Hardware habe ich aber in die Simulation geladen.
    Kann es sein das SFC14 nicht korrekt simuliert wird?

    mfg René
    8090 kann ja drei Gründe haben ... da ich Dir zutraue, die Adresse Hexadezimal angegeben zu haben bleibt die Konsistenz der Daten.
    SFC14/15 ist für Byte-Konsistenz z.B. äußerst ungeeignet und zeigt obiges Verhalten ... ist in der GSD-Datei festgelegt...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.783
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    ... in dem Fall müßte man sich die Übertragungsroutine als "eigenen Baustein" passend bauen ...

    Gruß
    Larry

  6. #6
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.635
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    8090 kann ja drei Gründe haben ... da ich Dir zutraue, die Adresse Hexadezimal angegeben zu haben bleibt die Konsistenz der Daten.
    SFC14/15 ist für Byte-Konsistenz z.B. äußerst ungeeignet und zeigt obiges Verhalten ... ist in der GSD-Datei festgelegt...
    Ja die Hexadresse ist richtig. Rein vom Aufbau des HMS Knotens (keine Konsistenten Inhalte eingefügt) dürfte da ja auch nix passieren.

    komisch. Testweise mal auf eine Echte SPS laden.

    mfG René

  7. #7
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.635
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe die SFC 14/15 per SCL nachgebaut nur zum umkopieren.

    Code:
    FUNCTION PERIN : VOID
    
    
    VAR_INPUT
      PER_IN : INT;
    END_VAR
    
    
    VAR_IN_OUT
      RECORD : ANY;
    END_VAR
    
    
    VAR_TEMP
    laufvariable : INT;
      zwischenany : ANY;
        Recording AT zwischenany : STRUCT
            SyntaxID : BYTE;
            Datentyp : BYTE;
            Laenge : INT;
            db_Nummer : WORD;
            BytePointer : DWORD;
            END_STRUCT;
    END_VAR
        
        zwischenany := RECORD;
        
        FOR laufvariable := 0 TO (Recording.Laenge - 1) BY 1 DO
          WORD_TO_BLOCK_DB(Recording.db_Nummer).DB[(DWORD_TO_INT(SHR(IN := SHL(IN := Recording.BytePointer, N := 8), N := 11)) + laufvariable)]
           := EB[(PER_IN + laufvariable)];
        END_FOR;
    
    
    END_FUNCTION
    Das sollte so funktionieren. Dann kann ich die Hardwareadresse auch gleich als Integer angeben.
    Würdet ihr hier was anders machen?

    mfG René
    Geändert von vollmi (08.07.2014 um 16:00 Uhr)

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 23.05.2017, 16:03
  2. TIA Struct an WinCC Advanced binden
    Von rostiger Nagel im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 14.08.2014, 17:16
  3. Antworten: 33
    Letzter Beitrag: 31.05.2012, 19:15
  4. UDT in FC
    Von Limette im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.10.2011, 08:47
  5. UDT in AWL und SCL
    Von Thomas_v2.1 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 15.06.2008, 22:12

Lesezeichen

Berechtigungen

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