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

Ergebnis 1 bis 4 von 4

Thema: S5 Programm unklar

  1. #1
    Registriert seit
    11.02.2009
    Ort
    01968 Brieske
    Beiträge
    105
    Danke
    25
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo S5 Programierer,
    ich habe ein Problem beim Übersetzen eines S5 Programms nach S7.

    Die Anschaltung des FB den ich übersetzten möchte sieht so aus:
    Code:
                             FB 107
                         +--------------+
                         !   SET        !
              M 16.4   --!RES           !
              +60      --!STA           !
              +35      --!LEN           !
              DB 50    --!DB            !
    11111111 11111111  --!IN            !
    11111111 11111111  --!OUT           !
                         +--------------+

    Der Inhalt des FB 107 lautet:
    Code:
    0001   FB 107
    0002   Netzwerk 1
    0003
    0004   Name :SET           SET FLAG-WORD(S) TO FFFF
    0005   Bez  :RES   E/A/D/B/T/Z: E  BI/BY/W/D: BI
    0006   Bez  :STA   E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KF
    0007   Bez  :LEN   E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KF
    0008   Bez  :DB    E/A/D/B/T/Z: B
    0009   Bez  :IN    E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KM
    0010   Bez  :OUT   E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KM
    0011   ;
    0012   ;                   ******************************>
    0013   :                   *         DESCRIPTION         >
    0014   :                   ******************************>
    0015   :                   * RES  = TROUBLE RESET        >
    0016   :                   * STA  = 1.FLAG-WORD ADDRESS  >
    0017   :                   * LEN  = LENGTH OF FLAG-WORDS >
    0018   :                   * DB   = DATA-BASE FOR MATHEM.>
    0019   :                   * IN   = CODE FOR FIRST       >
    0020   :                   *        FLAG-WORD            >
    0021   :                   * OUT  = CODE FOR LAST        >
    0022   :                   *        FLAG-WORD            >
    0023   :                   ******************************>
     
     
    Netzwerk 2                 TROUBLE RESET
    0024   :
    0025   :UN  =RES           IF NO "RES" THEN
    0026   :SPB =M001          JUMP TO LABEL M001
    0027   :
    0028   :B   =DB            OPEN DATA-BASE
    0030   :
    0031   :LW  =STA           SAVE 1.FLAG-WORD ADDRESS
    0032   :T   DW 6
    0033   :
    0034   :LW  =LEN           SAVE LENGTH OF FLAG-WORD(S)
    0035   :T   DW 7
    0036   :
    0037   :LW  =IN            LOAD CODE FOR FIRST FLAG-WORD
    0038   :B   DW 6           USE ADDRESS OF 1.FLAG-WORD
    0039   :L   MW 0           AND LOAD 1.FLAG-WORD
    0040   :OW
    0041   :B   DW 6           USE ADDRESS OF 1.FLAG-WORD
    0042   :T   MW 0           AND TRANSFER TO 1.FLAG-WORD
    0043   :
    0044   :L   DW 7           IF LENGTH OF FLAG-WORD(S) <= 1
    0045   :L   KH 0001        (ONLY ONE FLAG-WORD TO TRANSFE>
    0046   :<=F                THEN
    0047   :SPB =M001          JUMP TO LABEL M001
    0048   :SPA =M002          ELSE JUMP TO LABEL M002
    0050   :
    0051 M003 :L KH FFFF       LOAD 11111111 11111111 IN ACCU
    0052   :                   USE FLAG-WORD ADDRESS
    0053   :B   DW 6           AND TRANSFER TO FLAG-WORD
    0054   :T   MW 0
    0055   :                   LOAD FLAG-WORD ADDRESS
    0056 M002 :L   DW 6        + 2 BYTE
    0057   :I 2                SAVE NEW FLAG-WORD ADDRESS
    0058   :T   DW 6
    0059   :                   LOAD LENGTH OF FLAG-WORDS
    0060   :L   DW 7           - 1 WORD
    0061   :D 1                SAVE NEW LENGTH OF FLAG-WORDS
    0062   :T   DW 7
    0063   :L   KH 0001        IF NEW LENGTH OF FLAG-WORDS
    0064   :>F                 > 1 THEN
    0065   :SPB =M003          JUMP TO LABEL M003
    0066   :
    0067   :LW  =OUT           LOAD CODE FOR LAST FLAG-WORD
    0068   :B   DW 6           USE ADDRESS OF LAST FLAG-WORD
    0070   :L   MW 0           AND LOAD LAST FLAG-WORD
    0071   :OW
    0072   :B   DW 6           USE ADDRESS OF LAST FLAG-WORD
    0073   :T   MW 0           AND TRANSFER TO LAST FLAG-WORD
    0074 M001 :BE
    Mein Problem beim übersetzten nach S7 liegt darin, das ich nicht weiß, was der Befehl in Zeile 0038 bzw. 0068 bedeutet.
    - wenn dies ein Aufruf der Variable DW 6 sein soll, warum ist dann die
    Zeile LW =IN.davor?
    - wenn dies ein Transfer sein soll, warum wird dann in Zeile 32 das
    DW 6 beschrieben?
    Oder passiert estwas indirekt, wovon ich keine Ahnung habe.

    Vielen Dank für Eure Mithilfe schon mal im Voraus!!!
    Dirk
    Zitieren Zitieren S5 Programm unklar  

  2. #2
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Dirk,

    der Bearbeite-Befehl ist eine Möglichkeit, in der S5 indirekt zu adressieren.

    Bei:
    B DW 6
    L MW 0

    bedeutet das: Lade das Merkerwort in den AKKU 1, das im DW 6 angegeben ist.

    LW =IN bedeutet: Lade den Inhalt des Formaloperanden IN in den AKKU1, ist wie eine IN-Variable in S7.

    In S7-Code sähe es so aus:
    Code:
    // Erst mal der Ersatz für B DW 6
    L DBW 6 // Adresse des MW laden
    SLD 3 // ins Pointerformat
    LAR1 // ins Adressregister
    // Ersatz für LW =IN
    L #IN 
    // Ersatz für L MW 0
    L MW[AR1,P#0.0]
    OW
    ...
    LW =IN und B DW 6 müssen vertauscht werden, da der B-Befehl in der S5 den AKKU1 unverändert lässt.

    Grüße
    Gebs
    Geändert von Gebs (09.11.2009 um 10:42 Uhr)

  3. #3
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    In DW 6 steht der Offset zu MW 0.
    Wenn also in DW6 eine 10 steht, wird MW 10 geladen.

  4. #4
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Da steht:
    LW =IN
    L DB50.DW6
    OW


    Die Adresse des DB wird weiter oben geladen
    B DW6 Lade aus aktuellem DB Wort 6
    L MW0 Lade das mit B vorher gespeicherte Wort.

    Is' S5-Syntax!

Ähnliche Themen

  1. Timer unklar
    Von Basil im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 03.01.2011, 13:42
  2. Antworten: 8
    Letzter Beitrag: 09.12.2010, 18:08
  3. Interbus Bezeichnung unklar
    Von franzi207 im Forum Feldbusse
    Antworten: 8
    Letzter Beitrag: 09.09.2009, 08:26
  4. CPU Fehlermeldung unklar
    Von Günni1977 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 23.06.2009, 09:17
  5. Antworten: 0
    Letzter Beitrag: 05.10.2006, 13:56

Stichworte

Lesezeichen

Berechtigungen

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