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

Ergebnis 1 bis 10 von 10

Thema: MOVE Befehl mit CPU313 2DP

  1. #1
    Registriert seit
    15.05.2008
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,


    Habe ein Problem mit dem "Move" Befehl.

    Wollte mir diesen zur Vereinfachung für folgenden Programmteil zb verwenden:

    Letztes Netzwerk:

    U M 5.0
    SPB M001

    U M 5.1
    SPB M002
    BEA

    M001: L DB56.DBW 4
    L 3000
    *I
    T DB20.DBW 20
    BEA
    M002: L DB56.DBW 4
    L 5000
    *I
    T DB20.DBW 20
    BEA

    Diesen Programmteil wollte ich durch folgende Änderung vereinfachen:

    Netzwerk 5:

    U M 5.0
    SPBNB _008
    L DB56.DBW 4
    L 3000
    *I
    T DB20.DBW 20
    _008: NOP 0

    Netzwerk 6:

    U M 5.0
    SPBNB _009
    L DB56.DBW 4
    L 5000
    *I
    T DB20.DBW 20
    _009: NOP 0

    Verwende ich letzten Programmteil verhält sich die Steuerung sehr eigenartig.
    Ich habe in einem Anderen FB zb. einen Merker mit einer SR Funktion eingesetzt, der sich durch diese Programmänderung nicht mehr zurücksetzen lässt...
    Mir kommt es vor, als gäbe es undefinierbare eingriffe durch diesen MOVE Befehl.

    Wie verwendet man diesen richtig?
    Diese vereinfachung wollte ich nur machen, damit diese Sprungfunktion, die man immer am ende eines FBs programmieren muss, nicht mehr am Ende sein muss und ich mehrere in einem FB verwenden kann.


    Vielen Dank schonmal für die Hilfe.
    Ich hoffe man kann es verstehen, was ich meine.

    Gruß
    Axel
    Zitieren Zitieren MOVE Befehl mit CPU313 2DP  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.791
    Danke
    398
    Erhielt 2.415 Danke für 2.011 Beiträge

    Standard

    In deinem 2. Beispiel wolltest du warscheinlich im Netzwerk 6 ...
    Code:
          U     M      5.1
          SPBNB _009
          L     DB56.DBW    4
          L     5000
         *I
          T     DB20.DBW   20
    _009: NOP   0
    ... schreiben ...

    Für mich ist der Code so erstmal richtig. Was mir auffällt sind die hohen Faktoren, die du nimmst ... Im obigen Beipiel dürfte im DB56.DBW4 nur maximal 6 drinstehen, da du sonst einen Integer-Überlauf bekommst ... Hast du das berücksichtigt ?

    Gruß
    LL

  3. #3
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    nachdem ich das mal lesbar dargestellt habe ist mir in deiner lösung folgendes aufgefallen:

    Code:
    *
          U     M      5.0
          SPBNB _009
          L     DB56.DBW    4
          L     5000
          *I    
          T     DB20.DBW   20
    _009: NOP   0
    da müßte IMHO M 5.1 stehen

    [edit] larry war schneller, der kann bestimmt code auch ohne code-tags lesen [/edit]
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. #4
    Registriert seit
    14.08.2006
    Beiträge
    52
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich denke Dein Problem könnte an der Verwendung des Befehls SPBNB liegen.

    Je nach Ergebnis sicherst Du Dein VKE ins BIE (drücke einfach mal auf F1 wenn Du auf SPBNB bist).
    Wenn also beide Merker nicht 1 sind steht im BIE ne Null und verhindert die Ausführung des nächsten Bausteins.

    Dieses verhinderteventuelle die Ausführung der Bausteine danach.

    In der Hilfe ist die Funktion sehr gut beschrieben.

    Ich würde mal ein SPBN probieren.

    Gruß Mütze
    Geändert von Mütze (15.05.2008 um 16:48 Uhr)

  5. #5
    axl86 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.05.2008
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    Ja, das habe ich schnell als beispiel zusammengestellt, da ich das schon nicht mehr im Programm habe.
    Solch große Zahlen verwende ich nicht.

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.791
    Danke
    398
    Erhielt 2.415 Danke für 2.011 Beiträge

    Standard

    Zitat Zitat von axl86 Beitrag anzeigen
    Ja, das habe ich schnell als beispiel zusammengestellt, da ich das schon nicht mehr im Programm habe.
    Solch große Zahlen verwende ich nicht.
    Dann befürchte ich, dass der Zusammenhang mit dem Rest deines Bausteins zu suchen ist ... So ist das im Augenblick erstmal korrekt - wenn sich dein Programm "komisch" verhält, dann liegt das an etwas anderem ...
    Laß doch mal etwas mehr davon sehen ...

  7. #7
    axl86 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.05.2008
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok, folgendes habe ich nun in meinem richtigen Programm probiert:

    U M 5.0
    SPBN _007
    L #FU2l
    T DB20.DBW 8
    _007: NOP 0

    funktioniert immer noch nicht.

    #FU2l ist ein Temporäres DWORD.

    mit L #FU2l
    T DB20.DBW 8

    funktionierts...

  8. #8
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    dann fehlt wohl die 1 bei M 5.0
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #9
    axl86 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.05.2008
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok, ich glaube ich habe das Problem gefunden...

    Ich musste die Geschwindigkeiten für die SEW FUs umrechnen ... dazu habe ich 8 Temporäre DWORDs verwendet.

    Für meinen MOVE Befehl musste ich noch zusätzlich einen hinzufügen - das war der Fehler.
    Nun hab ich sie im STAT also auch im DB drin und nun funktionierts.

    Kann es sein das es was ähnliches wie ein "Überlauf" gegeben hatte - das die TEMP zu voll waren?

    Danke für eure Antworten... so, nun is Feierabend.

    Gruß
    Axel

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.791
    Danke
    398
    Erhielt 2.415 Danke für 2.011 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... die TEMP's werden nicht "zu voll", es sei denn du versuchst Zahlen größer +32767 oder kleiner -32766 hineinzuschreiben. Dann erhälst du schonmal unsinnige Werte.
    TEMP's haben aber das Problem, dass ein Wert, den du im Zyklus 1 ausgerechnet hast im Zyklus 2 nicht mehr darin steht ... Vielleicht hat es ja daran gelegen ...

    Gruß
    LL

Ähnliche Themen

  1. Move Befehl in SCL
    Von Felse im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.03.2009, 09:19
  2. Uhrzeitstellen CPU313
    Von pfloh im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 24.01.2009, 20:23
  3. Speicherkarte für CPU313
    Von Techniker von DSK im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 16.11.2007, 12:46
  4. cpu 313 dp als master mit cpu313 als slave
    Von fra226 im Forum Feldbusse
    Antworten: 5
    Letzter Beitrag: 15.06.2005, 15:06
  5. CPU313- Beschaltungsplan
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 16.12.2004, 09:55

Lesezeichen

Berechtigungen

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