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

Ergebnis 1 bis 4 von 4

Thema: Datenbaustein Daten zusammenfügen

  1. #1
    Registriert seit
    24.02.2007
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi...
    Habe ein Problem, und zwar ein Fahrstuhl ...
    Habe 3 Etagen, die drei Drücker E0.0 E0.1 und E0.2 schreiben Ganze Zahlen in meinen Datenbaustein...
    E0.0 eine 1 E0.1 eine 2 und E0.2 eine 3
    Wenn der Fahrstuhl in einer Etage ankommt schiebt der DB sich automatisch nach oben ... bis er vollständig leer ist (also nur noch Nullen drin stehen).
    Nun ist mein Ziel die ganzen vielen Zahlen zusammenzufügen ...
    Also alle 1,2 und 3 die im DB sind sind ja Etagen und er soll ja nicht von 1 nach 2 und dann wieder nach 1 ... also soll die 1 wegfallen wenn schon eine drin ist bzw diese sollen sich einfach zusammenfügen...
    Habe das mal so gedacht:

    Code:
    L DBW 0
    L DBW 1
    <I 
    SPB OK1
    T DBW 1
    TAK 
    T DBW 0
    OK1: NOP 1
    L DBW 1
    L DBW 2
    <I 
    SPB OK2
    T DBW 2
    TAK 
    T DBW 1
    OK2: NOP 1
    L DBW 0
    L DBW 1
    <I 
    SPB OK3
    T DBW 1
    TAK 
    T DBW 0
    OK3: NOP 1
    Für mich ist das so logisch...funzt aber einfach nicht...
    Wenn ich den Datenbaustein wieder einmal zurückgeschoben habe (das mache ich mit dem SFC20) speichert er,wenn ich einen der drei Taster drücke direkt zwei Werte in den DB ... und ich habe keine Ahnung wieso ...
    Beim ersten Durchlauf (soll heißen der Fahrstuhl hat noch keine Etage erreicht und den Datenbaustein noch nicht nach oben geschoben) sortiert er garnicht ...

    sehr verzweifelt bin

    mfg
    Memph
    Zitieren Zitieren Datenbaustein Daten zusammenfügen  

  2. #2
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Erst mal, bevor das hier weiter analysiert wird

    Code:
    L DBW 0
    L DBW 1
    <I
    Das überschneidet sich. DBW0 ist ein Wort und belegt Byte 0 und 1.

    Also das nächste DW ist 2. Das kommt mehrfach in dem Code vor.

    Wenn du den Aufzug nur einmal halten lassen möchtest, solltest du bevor du den Wert in den DB einträgst den DB auf die Einträge durchsuchen und wenn die Etage schon da ist, wird nichts eingetragen.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  3. #3
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Zitat Zitat von TheBigMemph Beitrag anzeigen
    Hi...


    Für mich ist das so logisch...funzt aber einfach nicht...
    Wenn ich den Datenbaustein wieder einmal zurückgeschoben habe (das mache ich mit dem SFC20) speichert er,wenn ich einen der drei Taster drücke direkt zwei Werte in den DB ... und ich habe keine Ahnung wieso ...
    Beim ersten Durchlauf (soll heißen der Fahrstuhl hat noch keine Etage erreicht und den Datenbaustein noch nicht nach oben geschoben) sortiert er garnicht ...
    Wird der SFC mehrere Zyklen durchlaufen? Das solltest du dann abfangen. Z.B. mit einer positiven Flanke.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  4. #4
    Registriert seit
    04.04.2007
    Beiträge
    16
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    plc tippser hat vollkommen Recht, die Datenworte überschneiden sich.
    Korrigiert man allerdings den Fehler, so wird das nächste Problem auftreten:

    Code:
    L DBW 0  // der Wert aus DBW 0 wird in Akku 1 geschrieben
    L DBW 2  // Akku 1 wird in Akku 2 geschoben und der neue Wert aus DBW 2 in Akku 1 geschrieben
    <I       // Vergleiche Akku 1 auf größer Akku 2
    SPB OK1  // Akku 1 größer Akku 2 ? Dann springe. Sonst...
    T DBW 2  // Schreibe Inhalt von Akku 1 in DBW 2
    TAK      // Tausche Inhalt von Akku 1 und Akku 2
    T DBW 0  // Schreibe Inhalt von Akku 1 in DBW 0
    Wie man sieht, werden die Werte wieder in ihre ursprünglichen Datenworte zurück geschrieben. Sollen die Werte ausgetauscht werden, so sollte die Programmierung eher so aussehen:

    Code:
    L DBW 0  // der Wert aus DBW 0 wird in Akku 1 geschrieben
    L DBW 2  // Akku 1 wird in Akku 2 geschoben und der neue Wert aus DBW 2 in Akku 1 geschrieben
    <I       // Vergleiche Akku 1 auf größer Akku 2
    SPB OK1  // Akku 1 größer Akku 2 ? Dann springe. Sonst...
    T DBW 0  // Schreibe Inhalt von Akku 1 in DBW 0
    TAK      // Tausche Inhalt von Akku 1 und Akku 2
    T DBW 2  // Schreibe Inhalt von Akku 1 in DBW 2
    Ich hoffe das hilft das Problem zu lösen

Ähnliche Themen

  1. Maximale Daten im Datenbaustein
    Von DirkKuhn im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 11.05.2011, 23:37
  2. CSV-Daten in Datenbaustein schreiben?
    Von Poldi007 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 29.03.2010, 02:31
  3. Antworten: 1
    Letzter Beitrag: 16.02.2010, 17:12
  4. Daten im Datenbaustein sortieren
    Von Golden Egg im Forum Stammtisch
    Antworten: 5
    Letzter Beitrag: 11.10.2006, 11:20
  5. wie lege ich daten in einem Datenbaustein mit arrays ab ?
    Von Tom100 im Forum Programmierstrategien
    Antworten: 7
    Letzter Beitrag: 03.06.2005, 09:03

Lesezeichen

Berechtigungen

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