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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 33

Thema: 60 verschiedene Programme mit 10 Positionen

  1. #1
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen vieleicht hat ja einer ne Idee und kann mir helfen.
    Habe eine achse die je 10 Positionen Anfährt und das ganze in 60 Programmen. Das heist ich will einen Typ vorwählen und dann die 10 Positionen für die achse bereitstellen bzw auch die werte ändern:
    Habe jetzt einen UDT angelegt mit 10 Positionen dieser wird im db 60 mal verwendet. Wie kann ich jetzt auf den einzelnen datenbereich zugreiifen ?
    Vielen Dank für die Hilfe
    LG Michael
    Zitieren Zitieren 60 verschiedene Programme mit 10 Positionen  

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

    Zwei Möglichkeiten:

    1. Einfacher und Recourcenschonender, nur, wenn du auf der Anlage jeweils nur einen Typ zum jeweiligen Zeitpunkt fährst.

    Du definierst den 1. Typ in deinem DB zum aktuellen Typ. Wenn eine Typänderung stattfindet, kopierst du einmalig mit Blockmove (siehe Suche in diesem Forum) den Bereich des angewählten Typs ind den Bereich des aktuellen Typs. Deibn Programm lädt die Daten immer vom aktuellen Typ, also aus Bereich 1. Hat den Vorteil, daß nur einmal bei Typwechsel Daten umkopiert werden müssen.

    2. Flexibler, aber auch Recourcenfressender, da ständig gerechnet und kopiert wird, es sei denn, du erkennst einen Wechsel des Datensatzes und lädst dann einmalig um.

    Du schreibst einen FC/FB, der den jeweils benötigten Datensatz über indirekte Adressierung (Siehe Suche hier im Forum) aus dem DB liest und an einem Output bereitstellt. Dazu mußt du Datenbaustein, Typnummer und Datensatznummer als Input angeben, daraus den Offset errechnen und diesen Datensatz (wahrscheinlich ein DBD) dann über indirekte Adressierung umkopieren.
    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

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    MK_Auto (29.02.2008)

  4. #3
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard

    vielen Dank für deine Antwort. Nein ich will den typ immer vorher Vorwählen also vor programmstart nur suche ich eine Möglichkeit den UDT im DB direkt anzusprechen
    Zitieren Zitieren Hallo Ralle  

  5. #4
    Registriert seit
    30.06.2007
    Ort
    In der Pfalz
    Beiträge
    503
    Danke
    72
    Erhielt 77 Danke für 65 Beiträge

    Standard

    Da du ja die Struktur in deinem DB kennst kannst du dir ja einen Bausteil schreiben, der mit Hilfe der indirekten Adressierung anhand einer Produktnummer die Werte aus dem entsprechenden Adressbereich läd.

    z.B.:
    du hast 10 DINT Werte für 10 Positionen und die PrgNummern 1-60. Du weist jeder DINT-Wert belegt 4Byte. Somit belegst du für die Positionen pro Prg 40 Byte. Wenn du also sonst nichts in dem DB hast, belegt Prg1 die Bytes 0 bis 39 Prg2 40-79 u.s.w.
    Jetzt kannst du dir mit der Gleichung:

    (Programmnummer (2) - 1 )* Belegter Adressbereich (40) = Startadresse (40)
    (Programmnummer (7) - 1 )* Belegter Adressbereich (40) = Startadresse (240)

    die Adressen der jeweiligen Positionen zugehörig zum Prg berechnen.

    Die Startadresse entspricht Position 1 und für jede Weitere Position muss man dann +4 zur Startadresse dazu rechnen.
    Geändert von Steve81 (29.02.2008 um 21:47 Uhr)

  6. Folgender Benutzer sagt Danke zu Steve81 für den nützlichen Beitrag:

    MK_Auto (29.02.2008)

  7. #5
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard

    meine Wunschworstellung ist das wenn ich sage mal typ 10 vorwähle ich den 10. udt im DB anspreche
    Zitieren Zitieren Danke für die Antworten  

  8. #6
    Registriert seit
    30.06.2007
    Ort
    In der Pfalz
    Beiträge
    503
    Danke
    72
    Erhielt 77 Danke für 65 Beiträge

    Standard

    Zitat Zitat von MK_Auto Beitrag anzeigen
    meine Wunschworstellung ist das wenn ich sage mal typ 10 vorwähle ich den 10. udt im DB anspreche
    Hab meinen letzten Beitrag in diese Richtung gehend ergänzt!

  9. #7
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja nur irgendwie schnall ich das mit dem pointer und dem adressregister nicht.
    Will die Typnummer angenummen 1o direkt verarbeiten und dann die 10 DINTs lesen bzw schreiben

  10. #8
    MK_Auto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.10.2006
    Beiträge
    105
    Danke
    27
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vieleicht sollte ich die Ssache noch mal genauer formulieren.
    Also ich habe ein op177B dor wähle ich den Typ als zahl vor 1-60
    und will den die Achspositionen aus dem UDT DB auslesen und übergeben bzw wenn die Achse neu geteached wird wieder reinschreiben.
    Es muss doch eine einfache Lösung geben die Zahl direkt zu verarbeiten ohne 60 schleifen zu drehen oder ?

  11. #9
    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

    Zitat Zitat von MK_Auto Beitrag anzeigen
    Ja nur irgendwie schnall ich das mit dem pointer und dem adressregister nicht.
    Will die Typnummer angenummen 1o direkt verarbeiten und dann die 10 DINTs lesen bzw schreiben
    Schau dir bitte unbedingt zuerst das Beispiel von Volker zur indirekten Adressierung in der FAQ an! Auch FIFO/LIFO aus der FAQ kann zum Verständnis hilfreich sein.

    Sieh auch mal hier rein: http://www.sps-forum.de/showthread.php?t=1330

    Da hatte ich mal einen FC angehängt, mit dem kannst du Bereiche umkopieren, ohne dich mit indirekter Adressierung herumplagen zu müssen. Aber Achtung, die Anzahl muß in Bytes angegeben werden, also pro DBD 4 !
    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

  12. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    MK_Auto (29.02.2008)

  13. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MK_Auto Beitrag anzeigen
    Vieleicht sollte ich die Ssache noch mal genauer formulieren.
    Also ich habe ein op177B dor wähle ich den Typ als zahl vor 1-60
    und will den die Achspositionen aus dem UDT DB auslesen und übergeben bzw wenn die Achse neu geteached wird wieder reinschreiben.
    Es muss doch eine einfache Lösung geben die Zahl direkt zu verarbeiten ohne 60 schleifen zu drehen oder ?
    Deshalb die Daten umkopieren. Auf den Zielbereich greift dann dein TP und der FB für den Servo zu. Nach dem Teachen, den Bereich zurückkopieren. Vor jedem Typwechsel den Bereich umkopieren.
    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

Ähnliche Themen

  1. Positionen für Anbau-Schränke
    Von Larry Laffer im Forum Schaltschrankbau
    Antworten: 4
    Letzter Beitrag: 29.06.2011, 19:35
  2. Positionen speichern
    Von Nordischerjung im Forum Simatic
    Antworten: 45
    Letzter Beitrag: 23.10.2008, 16:00
  3. Antworten: 1
    Letzter Beitrag: 07.10.2008, 11:43
  4. Antworten: 13
    Letzter Beitrag: 27.02.2008, 16:47
  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
  •