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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Hardware-Adressen im Deklarationsteil einem ARRAY zuweisen (SCL)

  1. #11
    Registriert seit
    14.07.2008
    Ort
    Bielefeld
    Beiträge
    12
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sorry, aber gib dem Baustein doch einfach 2 INT-Parameter.
    Einen mit der Startadresse deines IN-Bereiches und den Anderen mit der Anzahl an Bytes die Du bearbeiten möchtest.

    Dein 32-Byte-ARRAY müsstest Du ja sonst auch vorher kopieren: Dann doch lieber in Deinem, dann sehr flexiblem, Baustein, oder?

  2. #12
    tahren ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von IchBinsNur Beitrag anzeigen
    Sorry, aber gib dem Baustein doch einfach 2 INT-Parameter.
    Einen mit der Startadresse deines IN-Bereiches und den Anderen mit der Anzahl an Bytes die Du bearbeiten möchtest.
    Aber innerhalb meines FBs komme ich dann doch wieder nur über Pointer auf die Eingänge oder?

  3. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.261
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Um den Baustein konform zu halten, könntest du vielleicht einfach nur ein Array übergeben und dieses Array vor dem Baustein mit den entsprechenden Eingangs-Daten befüllen.
    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

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Zitat Zitat von tahren Beitrag anzeigen
    Aber innerhalb meines FBs komme ich dann doch wieder nur über Pointer auf die Eingänge oder?
    Nein ... über indirekte Adressierung ...
    Der Vorschlag ist m.E. auch nicht so schlecht - Nachteil nur, dass man nie nachvollziehen kann (Querverweißliste), dass die Eingänge in dem Baustein verwendet werden. das gilt allerdings auch für den ANY-Pointer ...

    Gruß
    Larry

  5. #15
    tahren ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Genau die Idee hatte ich anfangs auch. Das Problem dabei war nur, dass der Baustein mehrfach genutzt werden soll, mit jeweils unterschiedlichen Eingangsbereichen. Aber ich denke ich werde es trotzdem so machen wie du vorgeschlagen hast. Ich habe mir überlegt, dass ich einfach einen großen Datenbaustein anlege und diesen dann, wie du schon sagtest, vor dem Baustein mit allen Eingangswerten beschreibe. So dass ich dann für die verschiedenen Eingangsbereiche jeweils ein eigenes ARRAY im DB deklariere und die dann separat an den Baustein lege, je nachdem, welche Eingangsbereiche gerade benötigt werden. Schöner hätte ich es gefunden, wenn man direkt die Eingangsdaten mit dem Aufruf des FB in das Array transferiert, ohne vorher noch einen Datenbaustein zu verwenden. Vielleicht hat ja noch jemand einen anderen Lösungsvorschlag...?!

    Erstmal vielen Dank für die vielen Antworten!

    Mit freundlichen Grüßen
    tahren

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Zitat Zitat von tahren Beitrag anzeigen
    Vielleicht hat ja noch jemand einen anderen Lösungsvorschlag...?!
    Da wir beide zeitgleich geschrieben haben hast du vielleicht meinen Beitrag übersehen ...

    Ansonsten sind die Alternativen innerhalb der Möglichkeiten der Programmierung begrenzt ...
    Wofür benötigst du denn diese vielen Eingänge in dem FB ? Vielleicht ist da ja noch ein Ansatz etwas zu optimieren ...

    Gruß
    Larry

  7. #17
    tahren ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nein ... über indirekte Adressierung ...

    du meinst so? -> DATA := EB[byteindex];

    dann greife ich ja auch wieder global auf die Eingänge zu oder?....laut Norm kann auf globale Hardware-Adressen zugegriffen, indem im Deklarationsteil eine Zuweisung der Adresse an einem später verwendeten Variablennamen erfolgt. Weißt du wie das genau gemeint ist? So langsam geht mir die Norm auch auf die Nerven ^^

  8. #18
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Zitat Zitat von tahren Beitrag anzeigen
    ... dann greife ich ja auch wieder global auf die Eingänge zu oder?....laut Norm kann auf globale Hardware-Adressen zugegriffen, indem im Deklarationsteil eine Zuweisung der Adresse an einem später verwendeten Variablennamen erfolgt. Weißt du wie das genau gemeint ist?
    ... das würde ich unter dem Oberbegriff "symbolische Adressierung" zusammenfassen ... - also nicht brauchbar ...

    Zitat Zitat von tahren Beitrag anzeigen
    So langsam geht mir die Norm auch auf die Nerven ^^
    C'est la vie ...
    Mach was draus - es ist dein Projekt ...

    Gruß
    Larry

  9. #19
    tahren ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von tahren Beitrag anzeigen
    laut Norm kann auf globale Hardware-Adressen zugegriffen, indem im Deklarationsteil eine Zuweisung der Adresse an einem später verwendeten Variablennamen erfolgt.
    Hmm also wenn ich das jetzt richtig verstehe, dann kann ich laut Norm folgendes machen....

    ich brauche eine lokale Variable:
    VAR
    DATA : DWORD;
    END_VAR

    wenn ich nun im Deklarationsteil dieser Variable bspw. das ED0 zuweise, dann ist DATA eine Kopie des ED0 und ich kann sie im Programm nutzen. Und das sogar normkonform! Oder verstehe ich das vlt falsch?!
    Im Anweisungsteil könnte ich das ja locker machen...
    DATA := ED0;

    aber wie geht das denn im Deklarationsteil?

  10. #20
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von tahren Beitrag anzeigen
    aber wie geht das denn im Deklarationsteil?
    wie wäre es so :
    Code:
    VAR_IN
    EingangsDWort : DWORD;
    END_VAR
    und im Baustein kannst du dir dann (zumindestens bei SCL mit AT eine Bit-Sicht auf das ED machen ...

    Gruß
    LL

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Einem INPUT in SCL etwas zuweisen
    Von Bensen83 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 06.03.2011, 09:34
  3. DB-Werte nacheinander einem FB zuweisen
    Von Herrminator im Forum Programmierstrategien
    Antworten: 11
    Letzter Beitrag: 26.02.2009, 16:50
  4. Adressen in DB's zuweisen(SCL)
    Von buenne im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.04.2007, 16:17
  5. Einem FB ein DB zuweisen?
    Von DN8 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.03.2007, 21:20

Lesezeichen

Berechtigungen

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