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

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

Thema: Positionsdaten für verschiedene Typen u. Positionen sichern

  1. #1
    Registriert seit
    22.06.2006
    Beiträge
    12
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ihr
    ich hab ein kleines Problem bei dem ich nicht weiter weis.
    Ich habe eine Anlage mit der ich Scheiben mit einem 3 Achs Handling abhole. Das Handling wird über über 3 SEW Servomotoren angesteuert. Mein Problem liegt darin das es ca. 150 Scheibensorten gibt. Für jeden Typ gibt es eigene Abholpositionen. Ich hab jetzt mal einen Datenbaustein angelegt für 10 Typen mit je 50 Postionen pro Achse.

    Mein Problem liegt darin das wenn ich eine zu sichernde Position im TP angefahren habe möchte ich diese unter Berücksichtigung des jeweiligen Typs und der Positionsnummer in den richtigen Bereich des schon genannten Bausteins übertragen ohne mir die Finger abtippen zu müssen ( Da ich die Typen ja auf 150 erweitern können muss).

    Ich würde mich freuen wenn mir jemand weiterhelfen könnte.
    Zitieren Zitieren Positionsdaten für verschiedene Typen u. Positionen sichern  

  2. #2
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Also hast Du aber für jeden Scheibentyp mehr als nur eine Abholposition, wenn ich das richtig verstanden habe?

  3. #3
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Ich probiers mal einfach so.

    Eins vorweg:

    Du hast 150 Type mit 50 Positionen, mit 3 Achspositionen pro Position:

    Das gibt 150 * 50 * 3 *4Byte (4 byte pro Achspos, da Du wahrscheinlich Rela verwenden möchtest ?!)

    Das gibt 90.000 Byte! Also schon mal eine Speicherkarte beiseite schaffen

    Wenn Du Typ und Positionsnummer vorgibst, kannst Du wie folgt vorgehen:

    Du hast pro Typ 50 Achspositionen mit jeweils 12 Byte (3*4). Dann hat ein Typ einen Speicherbedarf von 600 Byte.

    Dann kannst Du die Startadresse Deines Type errechnen:

    Startadresse = (Typnummer -1) * 600

    Die Startadresse Deiner Positionsnummer ist (Positionsnummer -1)*12

    Als Gesamtstartadresse ergibt sich dann

    Adresse = ((Typnummer -1) * 600) + ((Positionsnummer -1)*12)

    Je nach Position (nenn ich mal X, Y und Z) musst Du auf diese Adresse noch 0, 4 oder 8 Byte addieren und Du hast direkten Zugriff auf Deine Speicheradresse.

    Je nach CPU sind die DB's aber nicht unendlich groß. Eine 315 hat eine maximale Größe von 16k (-> glaube ich) Du musst also für dieses Vorgehen Deine Daten auf mehrere DB's verteilen.

    Wenn Du SCL - Benutzer bist, wäre das Vorgehen dasselbe, jedoch kannst Du dann einfach per Index auf Deine Arrays zugreifen. -> Einfacher -> übersichtlicher -> lesbarer -> Würde ich an Deiner Stelle machen

    Eine andere Möglichkeit wäre, Deine Daten per Rezeptur auf Deinem OP abzulegen. Dazu müsste dann Dein OP aber auch genügend Speicher haben. Dazu müsste man aber wissen, ob und was für ein OP Du verwendest.

  4. #4
    Alyot ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.06.2006
    Beiträge
    12
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke erst mal für die Antwort. Zu den Abholpositionen ist zu sagen das Sie zwischen 2 u. 18 (je nach Scheibentyp betragen). Als CPU habe ich eine 315-2-DP drin und ein TP177B. Über Rezepturen habe ich auch schon nachgedacht aber ich komme irgenwie auf keinen grünen zweig. Ich könnte höchsten die Pos in den rezepturen hinterlegen das wäre das einzige was mir noch einfällt. und schon ein wenig viel zwecks der übersichtlichkeit.
    Geändert von Alyot (27.02.2008 um 14:11 Uhr)

  5. #5
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Ok, habe mal beim 177B nachgesehen, es hat standardmäßig 32k. Selbst mit 20 (oder 1 Positionen pro Typ liegst Du dann bei knapp über 32k.

    Nochmal zur Vorgehensweise:

    Du hast eine bestimmte Position angefahren und möchtest diese abspeichern (unter einem Typ und einer Positionsnummer)


    Du hast pro Typ nur noch 20 Achspositionen mit jeweils 12 Byte (3*4). Dann hat ein Typ einen Speicherbedarf von 240 Byte.

    Startadresse(Typ) = (Typnummer -1) * 240
    Startadresse(PosNummer) = (Positionsnummer -1)*12

    Adresse = ((Typnummer -1) * 240) + ((Positionsnummer -1)*12)

    Beispiel : Typnummer =3, Positionsnummer = 5

    Dann bekommst Du: ((3-1)*240) + ((5-1)*12) = 2*240 + 4*12 = 528

    Die Position der X-Achse ist dann 528 + 0 = 528
    Die Position der Y-Achse ist dann 528 + 4 = 532
    Die Position der Z-Achse ist dann 528 + 8 = 536

    Dann lädst Du Deine Positionen und speicherst Sie:

    Auf (Dein_Daten_DB)
    L Aktuelle_Position_der_X_Achse
    T DBD[528]
    L Aktuelle_Position_der_Y_Achse
    T DBD[532]
    L Aktuelle_Position_der_Z_Achse
    T DBD[536]

    Zum Laden dann umgekehrt:

    Auf (Dein_Daten_DB)
    L DBD[528]
    T Aktuelle_Position_der_X_Achse
    L DBD[532]
    T Aktuelle_Position_der_Y_Achse
    L DBD[536]
    T Aktuelle_Position_der_Z_Achse

    Anstelle der direkten Adressangabe in den eckigen Klammern setzt Du dann jeweils eine Variable ein. (muss ein Doppelwort sein, müsste ich mal nachsehen)

    Also z.B.
    L DBD[Mein_DW_Mit_Adresse]

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Das hört sich so an, als wenn, je nach Scheibengröße, mehrere Scheiben in Position liegen und dann geholt werden.
    Kann man die Positionen evtl. mit Hilfe der Scheibengröße und Offsetfaktoren für jede Scheibensorte und Achse berechnen? Damit ließe sich der Variablenaufwand erheblich eindampfen.
    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
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Zitat Zitat von Grubba Beitrag anzeigen
    Also z.B.
    L DBD[Mein_DW_Mit_Adresse]
    Das geht so ähnlich leider nur in SCL, nicht aber in AWL. In AWL muß indirekte Adressierung genutzt werden. Siehe dazu in der FAQ.
    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

  8. #8
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    @Ralle

    Zitat:
    Das geht so ähnlich leider nur in SCL, nicht aber in AWL. In AWL muß indirekte Adressierung genutzt werden. Siehe dazu in der FAQ.

    Doch, das geht so in AWL. Mache ich fast ständig so wenn ich nicht SCl verwenden will.

  9. #9
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Einen Fehler gibts aber doch noch:

    um die Byte-Adresse zu errechnen muss man die variable Adresse noch mit
    8 multiplizieren oder gleich das Pointer-Format verwenden.

    Für den Zugriff auf Byte 9 eines DB's z.B.:

    L P#9.0
    T Mein_DW_Mit_Adresse
    L DBD[Mein_DW_Mit_Adresse]

    oder

    L 72 // (8*9)
    T Mein_DW_Mit_Adresse
    L DBD[Mein_DW_Mit_Adresse]

  10. #10
    Alyot ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.06.2006
    Beiträge
    12
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So hab jetzt schon gemerkt das ich noch a wenig blöd bin.

    Im TP177 kann man so viel ich weis noch ne 8MB Speicherkarte einstecken.

    Mit berechnen schauts denk ich mal schlecht aus, auf grund der unterschiedlicher lage je nach typ.

Ähnliche Themen

  1. Antworten: 21
    Letzter Beitrag: 22.10.2009, 06:38
  2. SCL verschiedene Typen multiplizieren
    Von hulla66 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.12.2008, 18:28
  3. Antworten: 1
    Letzter Beitrag: 07.10.2008, 11:43
  4. 60 verschiedene Programme mit 10 Positionen
    Von MK_Auto im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 03.03.2008, 15:38
  5. mehrere verschiedene Positionen mit 3 Zählern ??
    Von Fabian_GmbH im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.06.2005, 16:56

Lesezeichen

Berechtigungen

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