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

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

Thema: andere möglichkeit als ein schieberegister??

  1. #1
    Registriert seit
    22.07.2004
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo,

    hab ne frage

    ich hab ein datenbaustein (db 10) im dem sind 10 datenwörter beschreiben und wie kan ich es machen, das wenn im datenwort 1 eine 0 steht das programm aus dem datenwort 2 den wert ins datenwort 1 schreibt und das immer weiter solange bis das programm am ende den wert aus dem datenwort 10 ins datenwort 1 schreibt und da ganze ohne ein schieberegister...
    schieberister in dem sinn:
    [ code ]
    l dw 2
    t dw 1
    l dw 3
    t dw 2
    usw.

    das alles in s5-100u cpu 103
    Zitieren Zitieren andere möglichkeit als ein schieberegister??  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Irgendwas hast du durcheinander: soll nun der Wert von DW2 nach DW1 oder der von DW10?

    LOOP:
    L KF10
    T MW 200 // Schmiermerker, zählt Quelladressen
    L KF9
    T MW 202 // Schmiermerker, zählt Zieladressen


    B MW 200 // mach die nächste Operation mit der Adresse aus MW200
    L DW0 // nein, lädt NICHT DW0 sondern DW10, wenn MW200 10 enthält.
    B MW 202 // mach die nächste Operation mit der Adresse aus MW202
    T DW0 // nein, speichert NICHT nach DW0 sondern nach DW9, wenn MW202 9 enthält.

    jetzt kannst du beide Adressen um eins runterzählen und zum Anfang springen, wenn MW200 >0 ist.

    Das ist zwar weiger Code, aber deine CPU führt mehr Anweisungen aus. Zykluszeit beachten!

  3. #3
    gorden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    thx für die antwort als erstes mal so ählich mein ich es, ich erklärs mal mit 3 datenwörter...

    also in dw1 dw2 dw 3 stehen beliebige werte drin, jetzt transferiere ich ins dw1 eine 0 und sobald im dw 1 eine 0 steht soll das programm den wert aus dem dw 2 ins dw 1 schreiben. dann transferiere ich wieder eine 0 ins dw 1 und nun soll der wert aus dem dw 3 ins dw 1 geschrieben werden.

    das kan man durch ein schieberegister machen, das halt dann den wert immer weiter schiebt:
    L DW 2
    T DW 1
    L DW 3
    T DW 2

    und diese will ich ohne so ein schieberegister machen.
    da der DB bis dw 245 beschrieben ist, und dann ist mir diese möglichkeit zu groß.

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    MW 200 habe den Anfangswert 2
    Immer wenn 0 im DW1 steht zählst du MW 200 hoch und machst damit:

    B MW200
    L DW 0
    T DW 1


    Also:

    LDW1
    LKF0
    <>F
    BEB // nix tun wenn keine 0
    L MW200
    add kf 1
    T MW200
    B MW200
    L DW 0
    T DW 1


    Jetzt fehlt nur noch, daß du MW200 irgendwo initialisierst und irgendwas wirst du tun wollen, wenn MW200>245 ist, sonst geht dir die CPU in STOP wergen Zugriff auf nicht existierendes Datenwort.

  5. #5
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.812
    Danke
    1.232
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    ein schieberegister ist etwas anderes als das was du beschreibst.

    du meinst ein fifo bei dem die daten direkt geschoben werden...


    bei so vielen datenwörtern würde ich eben ein schieberegister verwenden!
    du schiebst nicht alle daten durch den speicher, sondern du änderst nur die stelle an der du aus dem register (db) liest oder an der du schreibst.

    indirekte adressierung

  6. #6
    gorden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    knanst du das mal genauer beschreiben markus?
    und thx an zottel, ich werds mal ausprobieren

  7. #7
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    ich hätte da noch mal ne frage zu deinem Problem
    soll jetzt wenn ins dw1 eine null geschrieben wird folgendes passieren
    dw1 = dw2
    dw2 = dw3
    dw3 = dw4
    .
    .
    .

    oder soll nur bei einem erneuten schreiben einer null ins dw 1 geschrieben wird
    dw1 = 0?
    dw1 = dw2
    dw1 = 0?
    dw1 = dw3

    weil im ersten post würde ich die erste möglichkeit rauslesen und im zweiten von dir dann die zweite möglichkeit

  8. #8
    gorden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo,

    ich meinte

    dw2 = dw1
    dw3 = dw2
    dw4 = dw3
    .
    .
    .

    und mit der 0 meinte ich, das dieser vorgang gestartet wird, wenn eine 0 im dw1 steht...

    mfg

  9. #9
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    okay dann alles klar hatte das halt beim zweiten post völlig anders interpretiert weil dann wäre ja der lösungsansatz auch anders gewäsen

  10. #10
    gorden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    gibt es eine möglichkeit, z.b. ein befehl oder so, der die werte in allen dws in einem db um 1 dw nach oben schiebt?

    z.b.

    dw 1 = 3
    dw 2 = 7
    dw 3 = 4

    und nach der operation...

    dw 1 = 7
    dw 2 = 4

Ähnliche Themen

  1. Andere Möglichkeit als PAP oder Struktogramm
    Von Mitschy86 im Forum Programmierstrategien
    Antworten: 7
    Letzter Beitrag: 02.05.2011, 14:05
  2. Programmier Möglichkeit gesucht
    Von SIX im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 25.01.2011, 10:27
  3. Antworten: 4
    Letzter Beitrag: 14.08.2010, 10:33
  4. Möglichkeit(Hardware) von Siemens 3152DP auf Ethernet
    Von Lars123 im Forum Suche - Biete
    Antworten: 4
    Letzter Beitrag: 18.11.2008, 11:39
  5. Möglichkeit ein komplettes PRG zu schützen??
    Von Olafius im Forum Simatic
    Antworten: 44
    Letzter Beitrag: 14.11.2007, 11:20

Lesezeichen

Berechtigungen

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