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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: eingangsbyte variable in pointer aufrufen bzw verarbeiten

  1. #1
    Registriert seit
    28.11.2009
    Beiträge
    37
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    so wie der titel sagt will ich mittels einer eingangsvariable "in" in format byte einen pointer generieren und die einzelnen bits von eingangsbyte verarbeiten.

    Ich hab bereits einen Baustein geschrieben jedoch nicht als multiinstanz sondern einmal und ich will jetzt die funktion die der Baustein mach als multiinstan machen.

    Hier mal der inhalt des normalen Bausteins:


    L 8
    next: T #zaehler

    // Schleife

    //berechnen des eingangbits
    L #zaehler
    L 1
    -I
    LAR1


    U E [AR1,P#0.0]
    UN E [AR1,P#1.0]
    = M [AR1,P#1.0]
    R M [AR1,P#3.0]
    SPB ende


    UN E [AR1,P#0.0]
    U E [AR1,P#1.0]
    = M [AR1,P#2.0]
    R M [AR1,P#3.0]
    SPB ende


    UN M [AR1,P#1.0]
    UN M [AR1,P#2.0]
    = M [AR1,P#3.0]
    ende: NOP 0

    // Ende Schleife

    L #zaehler
    LOOP next

    NOP 0



    und diese Funktion will ich nun multiinstanz machen.

    evtl kann mir da jemand helfen

    eingangvariblen will ich haben

    2 variablen mit type byte die halt die eingangsaufruf ersetzten sollen

    ausgangsvariablen:

    3x out mit type byte anstat der merker die ich hier nehme
    und 1 von typ bool


    danke schonmal in voraus
    Zitieren Zitieren eingangsbyte variable in pointer aufrufen bzw verarbeiten  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.793
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    ich habe dein Vorhaben nciht verstanden.
    Beschreib doch noch mal die Schnittstelle des Bausteins (die IN's und die OUT's) und das, was du damit machen willst ...

    Gruß
    LL
    Geändert von Larry Laffer (31.01.2010 um 15:58 Uhr)

  3. #3
    Registriert seit
    28.11.2009
    Beiträge
    37
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok wie man oben sieht.

    frage ich durch die schleife die eingangsbyte 0 und 1 ab in den beispiel

    ich will anstat

    U E [AR1,P#0.0]
    UN E [AR1,P#1.0]

    einen eingansvariable einsetzten

    für "U E [AR1,P#0.0]" die IN variable "in_zu" datentype byte
    für "UN E [AR1,P#1.0]" die IN variable "in_auf" datentype byte

    out variblen hab ich:
    out_zu (type: byte)
    out_auf (type: byte)
    out_stoer (type:byte)

    diese out variablen will ich durch folgen teil meines bausteines ersetzten:

    UN M [AR1,P#1.0] ersetzten durch "out_zu"
    UN M [AR1,P#2.0] ersetzten durch "out_auf"
    = M [AR1,P#3.0] ersetzten durch "out_stoer"

    hoffe jetzt ist es besser erklärt

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.793
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ... ich frage jetzt mal nicht, warum deine IN- und die OUT-Variablen Bytes sind ... jedenfalls, wenn du auf diese Variablen einen Pointer bilden willst, so geht das so :
    Code:
    L p##in_zu   // Pointer auf Variable laden
    LAR1           // Pointer ins AR1-Register
    ... den Rest kennst du ja schon ...
    Das geht mit den OUT's entsprechend ...

    Gruß
    LL

  5. #5
    Registriert seit
    28.11.2009
    Beiträge
    37
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    joa so wie du es geschrieben hast hab ich es auch probiert nur funktioniert das nicht so wie ich mir das vorstelle

    Evtl hab ich die funktion des bausteins nicht richtig erklärt

    nun ja er macht folgendes:

    ich frage jeweils das gleiche bit von 2 byts ab (z.b e0.2 und e1.2) und frag ihren zustand ab, wenn dann e0.2 "1" ist und e1.2 "0" will merker setzten wie bei meinen aktuellen baustein m1.2 (der soll mir sagen das der zustand ZU ist).
    Umgekehrt e1.2 "1" und e0.2 "0" soll dann merker 2.2 gesetzt werden für AUF
    sollten beide "0" oder "1" soll dann m3.2 gesetzt werden für Störung.

    Und das mach ich bei jeden bit von *.0-.7


    Type byte weil ich je nur 8 eingänge also größe von bytes habe.
    Wenn es so nicht möglich ist wie ich es mir vorstelle muss ich es halt so lassen.

    hoffe das jetzt bischen klarer wird was ich vorhabe


    Ich schätze das ich einen "U" oder "UN" abruf von ein pointer bit nicht machen kann...

  6. #6
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Daumen hoch

    Zitat Zitat von Dementis Beitrag anzeigen
    Ich schätze das ich einen "U" oder "UN" abruf von ein pointer bit nicht machen kann...
    Hallo,

    das geht auf jeden Fall. Stell deinen neuen Baustein doch mal hier rein...

    Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  7. #7
    Registriert seit
    28.11.2009
    Beiträge
    37
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    und wie soll das gehen wenn ich den pointer von einer eingangsvariable erstelle??

    L p##in_zu
    LAR1

    U E [AR1,P#0.0]
    UN E [AR1,P#1.0]

    wenn ich das so mache fragt er ja die eingangsbit von eingängen direkt ab oder? und nicht die von mir definierten eingansbyte

  8. #8
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Code:
    L p##in_zu 
    LAR1 
     
    U in_zu[AR1,P#0.0]   //oder wie auch immer deine IN Variable auch heißt
    UN in_zu[AR1,P#1.0] //die IN deines Bausteines
    in einem FB sollte man nie merker, oder ein-ausgänge verwenden.
    wegen der mehrfachen Verwendbarkeit eines FB.

    für die multiinstanzfähigkeit musst du auch noch den offset des AR2 dazuzählen!!!!!
    Geändert von Gerhard K (31.01.2010 um 17:48 Uhr)
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  9. #9
    Registriert seit
    28.11.2009
    Beiträge
    37
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Eben genau deswegen will ich ja wissen wie man eine eingangsvariable das einzelne bit abfragt.

    hm hab das so gemacht wie du geschrieben hast, aber er nimmt mir das net

    L P##zustand_zu
    LAR1

    u zustand_zu [AR1,P#0.0] wird rot

    zustand_zu ist meine eingansvariable auch wenn ich den typ ändere bleibt es rot

  10. #10
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    sorry ich bin heute schon ein wenig verrückt im kopf
    Code:
     
    L p##in_zu 
    LAR1 
     
    U DIX[AR1,P#0.0] 
    UN DIX[AR1,P#1.0]
    so sollte es funken,habe es aber nicht getestet.Du hast einen FB,oder??
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

Ähnliche Themen

  1. per Pointer eine FC aufrufen?
    Von FrankTheTank im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 08.08.2011, 12:50
  2. Antworten: 11
    Letzter Beitrag: 06.10.2007, 16:28
  3. Pointer als IN im FC verarbeiten
    Von Hewlett_de im Forum Simatic
    Antworten: 27
    Letzter Beitrag: 03.07.2006, 22:00
  4. Pointer als IN im FC verarbeiten
    Von plc_tippser im Forum FAQ
    Antworten: 1
    Letzter Beitrag: 29.06.2006, 14:29
  5. Rohdaten Variable mit VBS verarbeiten
    Von Bender25 im Forum HMI
    Antworten: 11
    Letzter Beitrag: 04.04.2006, 12:45

Lesezeichen

Berechtigungen

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