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

Ergebnis 1 bis 9 von 9

Thema: WORD Variable umwandeln

  1. #1
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin,
    ich habe hier grade einen AX5203 Servoverstärker von Beckhoff.
    8 Digitale Eingänge bzw. 7 Eingänge und 1 Ausgang.
    Die Eingänge werden in eine Word Variable geschrieben, die ich auch im PLC Control lesen und beschreiben kann.
    Nun habe ich das Problem das ich nicht genau weiß, wie ich jeden Eingang einer Boolschen Variablen zuweisen kann.
    Der Wert verändert sich ja je nach geschalteten Ausgängen.
    I1 = 1
    I2 = 2
    I3 = 4
    ...
    I8 = 128
    Wenn nur ein Eingang beschaltet wird, ist das ja kein Thema.
    Aber bei mehreren addieren sich ja die Werte. I1 +I3 ist dann ja 5.
    Wie kann ich das nun auseinanderhalten?

    Danke
    Boggle
    Zitieren Zitieren WORD Variable umwandeln  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Du hast doch eine absolute Adresse mit dem Du das Word verbunden hast.

    z.B. %IW20
    Dann kannst Du einfach noch weiter Variablen anlegen die Du mit den Adressen %IX20.0, %IX20.0 usw. verbindest.

    Eingang_1 AT %IX20.0 : BOOL;
    If you open your Mind too much, your Brain will fall out.

  3. #3
    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

    1. Siehe Zotos. (finde ich besser als Variante 2) --> oder gleiche eine Struktur?

    2. Das hier ginge wohl auch noch: [url]http://www.sps-forum.de/showthread.php?t=25805&highlight=Bits[/ur
    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. #4
    boggle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hmmm. naja.
    Ich hab unter Globale Variablen einfach eine Variable angelegt.
    Die so aussieht : AX5203_IN AT %I* : WORD;
    Diese habe ich im System Manager dann mit dem AX5203 verknüpft.
    Wenn ich dann im SM schaue, hat diese Word Variable eine Adresse (2280)
    Wenn ich jetzt einfach eine Variable Anlege mit 2280.0 verschiebt sich diese Adresse und wird automatisch zugewiesen.
    Oder habe ich grade ein Brett vorm Kopf?!

  5. #5
    boggle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK.Hat sich erledigt, Danke.
    Ich kann dann einfach für Eingang 1 schreiben AX5203_IN.0 usw....
    Das schöne Brett ist weg

  6. #6
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    An den Bitoperator (die nun von Dir verwendete Lösung) habe ich bei der Aufgabenstellung gar nicht gedacht da ich persönlich ein AX5203_IN.0 wenig aussagekräftig halte. Dann doch lieber ein Variablennamen der auf die Funktion hinweist.
    Dazu gibt es mindestens zwei Möglichkeiten:
    1. Der verwendete Bitoperator mit Konstanten verwenden dazu muss man aber eine Compiler Einstellung ändern damit die Konstanten vor dem Übersetzen ersetzt werden (Projekt -> Optionen -> Übersetzungsoptionen -> Konstanten ersetzen).

    2. So wie ich es in meiner ersten Antwort angedeutet habe. Du musst dann nur noch die Deklaration
    AX5203_IN AT %I* : WORD;
    durch
    AX5203_IN AT %IW2280 : WORD;
    ersetzen und TwinCAT kommt Deinen Wünschen nach und bildet Adressüberschneident Variablen.

    PS: Die Idee von Ralle mit der Strucktur würde mir sehr gut gefallen. Leider unterstützt TwinCAT/CoDeSys 2.3 das auf der Bitebene nicht da eine Bool Variable in einer Strucktur leider ein Byte groß ist.
    Da das aber eine Standard Aufgabe ist gibt es noch einige andere Möglichkeiten.
    If you open your Mind too much, your Brain will fall out.

  7. #7
    boggle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nur mal das ich dich richtig verstehe.
    Zum Punkt 2
    AX5203_IN AT %IW2280 : WORD; hab ich angelegt.
    Und jetzt lege ich dann auch noch an:
    Eingang_1 AT %IX2280.0 : BOOL;
    Eingang_2 AT %IX2280.1 : BOOL;

    Verstehe ich das so richtig?
    Falls ja, ist da ja nun das Problem, wenn sich die Adresse ändern sollte, muss ich das alles umschreiben oder nicht?

  8. #8
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Warum sollte sich die Adresse ändern wenn Du die Adresse manuell vergibst?
    If you open your Mind too much, your Brain will fall out.

  9. #9
    boggle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ...hast recht...

Ähnliche Themen

  1. INT nach WORD umwandeln in AWL?
    Von Muphin im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 22.10.2010, 11:54
  2. Datentyp word umwandeln
    Von win98 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 10.08.2009, 14:09
  3. Umwandeln von Word in Real
    Von SPS_NEU im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.03.2009, 14:46
  4. byte in word / dword umwandeln
    Von Gerri im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.07.2008, 14:31
  5. MB (8bit) in Word,Int oder ähnliches umwandeln
    Von Lars Bizare im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 30.09.2005, 11:44

Lesezeichen

Berechtigungen

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