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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: SCL code

  1. #11
    Registriert seit
    06.10.2003
    Beiträge
    3.408
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von gravieren Beitrag anzeigen
    ..Fragedatum o.g. Beitrags ist der:
    10.12.2007, 17:51..
    Leute, es war damals schon dringend. Nun strengt euch mal an !


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  2. Folgender Benutzer sagt Danke zu Onkel Dagobert für den nützlichen Beitrag:

    awl-scl (09.01.2008)

  3. #12
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Wir haben ja ein schönes Motto im Forum (s.o.) und mich interessiert es mal. Folgender Vorschlag, das Ganze ohne Gewähr, ich hab weder die Lust, noch die Möglichkeit, den Code zu testen, übersetzen läßt er sich so jedenfalls.

    Code:
    FUNCTION FC100 : INT
    
    VAR_INPUT
      Data_DB: Block_DB;       
      Adresse_Drive: WORD;   //Adresse des Antriebes (Z.Bsp. W#16#12C für 300)
    END_VAR    
    
    VAR_TEMP
        Quelle: Any;
        QuellPointer AT Quelle : STRUCT
                                    bySyntaxID : BYTE;
                                    byDatentyp : BYTE;
                                    iLaenge : INT;
                                    idb_Nummer : INT;
                                    dwPointer : DWORD;
                                END_STRUCT;
        PPO_TYP: INT; 
        Laenge: INT;
        ErrorNr: INT;
        RET_VAL_SFC_14: INT;
        DBNr: INT;
    END_VAR
    
        // Anweisungsteil
        DBNr := WORD_TO_INT(BLOCK_DB_TO_WORD(Data_DB));
        PPO_Typ := WORD_TO_INT(Data_DB.DW60);
    //oder so:  PPO_Typ := WORD_TO_INT(WORD_TO_BLOCK_DB(BLOCK_DB_TO_WORD(Data_DB)).DW60);    
        ErrorNr := 0;
        
        CASE PPO_Typ OF
            2 : Laenge := 12;  // Laenge (Wiederholfaktor) 20 Bytes ?????????
            4 : Laenge := 12;  // Laenge (Wiederholfaktor) 12 Bytes ?????????
            5 : Laenge := 20;  // Laenge (Wiederholfaktor) 28 Bytes ?????????
        ELSE:
            ErrorNr := 1;
            Laenge := 0;
        END_CASE;
    
         QuellPointer.bySyntaxID    := b#16#10; 
         QuellPointer.byDatentyp    := b#16#4;
         QuellPointer.iLaenge       := Laenge;
         QuellPointer.idb_Nummer    := DBNr;
         QuellPointer.dwPointer     := SHL (IN := INT_TO_DWORD(38), N := 3); 
         
         
        IF ErrorNr = 0 THEN
           RET_VAL_SFC_14 := DPRD_DAT(LADDR :=  Adresse_Drive, // IN: WORD
                                       RECORD := Quelle // OUT: ANY
                                       ); // INT
           ErrorNr := RET_VAL_SFC_14; 
        END_IF;
           
        FC100 := ErrorNr;
    END_FUNCTION
    Die Angaben in der Case-Anweisung habe ich dem AWL-Code entnommen, irgendwie scheint das jedenfalls nicht zu passen, wenn man die Byteangaben im Kommentar ansieht. Also solltest du für die PPO-Typen mal nachschlagen, wie lang denn die Datenpakete wirklich sind.
    Geändert von Ralle (08.01.2008 um 21:38 Uhr)
    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

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

    awl-scl (09.01.2008)

  5. #13
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    hat sich doch jemand 'dummes' gefunden?

    du bist ja auf dem besten wege zu 'kairalle'. es fehlt aber noch das gezippte projekt und die pdf

    willst wohl unbedingt user2007 werden. würdest du aber ohne....

    edit
    ok. ich halte dir zu gute, dass du wissbegierig bist und selbst keine zeit zum testen hast.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #14
    awl-scl ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2007
    Beiträge
    10
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    [quote=Onkel Dagobert;113876]Leute, es war damals schon dringend. Nun strengt euch mal an !

    letzte vier wochen habe vorbereitung und klausuren geschrieben,und wollte momentan das projekt abgeben damit ich ein unterschrift für diese praktikum bekomme.das ist alles leute
    noch mal danke für eure vorschläge.
    Zitieren Zitieren danke  

  7. #15
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    219
    Erhielt 232 Danke für 204 Beiträge

    Reden

    Hi Ralle

    Wo ist der Rest des Programms. ?
    Das von dir ist nur ein kleiner Teil.
    Hab mal das komplette angehängt.
    (Funktion.zib)



    LOB Ralle, der SCL-Code schaut optisch recht "Passabel" aus.
    Angehängte Dateien Angehängte Dateien
    Karl

  8. #16
    awl-scl ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2007
    Beiträge
    10
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo leute,hat jemand vielleicht ein idee wie kann ich die befehl (RND+ )und (NEGI )in scl umsetzen.


    beispiel in meine programme :




    L DBD 196;
    SPA M010;

    M010: L DBD 62;
    /R ;
    L 1.638400e+004;
    *R ;
    RND+ ;
    UN #REV;
    O #WR_VU;
    SPB M032;
    NEGI ;
    M032: NOP 0;
    T DBW 10;



    danke im voraus
    Zitieren Zitieren RND+ und NEGI in SCL  

  9. #17
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Also da hier offensichtlich ein Drezahl / Drehmomentsollwert gebildet wird,
    denke ich nicht, das es auf das RND+ so ankommt.
    Ein einfaches RND welches in SCL Round heißt sollte es auch tun.
    Sollte das + hinter dem RND wirklich sooo wichtig sein,
    dann entspräche das einem TRUNC + 1, bei Zahlen größer 0.

    Zum Befehl NEGI, die Antwort steht in der Hilfe zu NEGI.
    Die Operation 2-Komplement Ganzzahl entspricht einer Multiplikation mit "-1".
    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  10. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    awl-scl (11.01.2008)

  11. #18
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    AWL

    RND+ (Umwandlung einer Gleitpunktzahl, 32 Bit, IEEE-FP, in eine Ganzzahl, 32 Bit) wertet den Inhalt von AKKU 1 als eine Gleitpunktzahl (32 Bit, IEEE-FP) aus. Die Operation wandelt die Gleitpunktzahl (32 Bit, IEEE-FP) in eine Ganzzahl (32 Bit) um und rundet das Ergebnis zur kleinsten ganzen Zahl, die größer oder gleich der umgewandelten Gleitpunktzahl ist (IEEE-Rundungsmodus "Round to +infinity"). Liegt die Zahl außerhalb des zulässigen Bereichs, werden die Statusbits OV und OS auf "1" gesetzt. Das Ergebnis wird in AKKU 1 gespeichert.

    Tritt ein Fehler auf (Vorliegen einer NaN oder einer Gleitpunktzahl, die nicht als Ganzzahl, 32 Bit, dargestellt werden kann), wird die Umwandlung nicht ausgeführt, sondern Überlauf angezeigt.

    MD10 = "100.5" => RND+ => MD20 = "+101"
    MD10 = "-100.5" => RND+ => MD20 = "-100"
    SCL

    ROUND
    REAL
    DINT
    Runden (Bilden einer DINT-Zahl).

    Gemäß DIN EN 61131-3 wird immer zum nächsten geraden Integer-Wert hin gerundet, d.h. 1.5 wird nach 2 gerundet, 2.5 wird ebenfalls nach 2 gerundet.

    TRUNC
    REAL
    DINT
    Abschneiden (Bilden einer DINT-Zahl)






    Hinweis

    Sie haben außerdem die Möglichkeit, weitere IEC-Funktionen zur Datentyp-Konvertierung zu nutzen. Informationen zu den einzelnen Funktionen finden Sie im STEP 7-Referenzhandbuch "System- und Standarfunktionen für S7-300/400".



    Beispiel

    // Hier wird abgerundet (Ergebnis: 3)
    ROUND (3.14) ;

    // Hier wird aufgerundet (Ergebnis: 4)
    ROUND (3.56) ;

    // Hier wird abgeschnitten (Ergebnis: 3)
    TRUNC (3.14) ;

    // Hier wird abgeschnitten (Ergebnis: 3)
    TRUNC (3.56) ;
    Also RND+ rundet immer auf. In SCL würde ich TRUNC nehmen (schneidet ab) und bei Real-Ausgangszahlen größer Null Eins dazu addieren.

    Code:
        IF rZahl > 0 THEN
            diZahl := TRUNC(rZahl) + 1;
        ELSE
            diZahl := TRUNC(rZahl);
        END_IF;
    AWL

    NEGI (2-Komplement Ganzzahl, 16 Bit) bildet das Zweierkomplement des 16-Bit-Wertes in AKKU1-L. Beim Bilden des Zweierkomplements werden die einzelnen Bits umgekehrt, d. h. die Nullen werden durch Einsen ersetzt und die Einsen durch Nullen. Dann wird eine "1" addiert. Das Ergebnis wird in AKKU1-L gespeichert. Die Operation 2-Komplement Ganzzahl entspricht einer Multiplikation mit "-1". Die Statusbits A1, A0, OS und OV werden als Ergebnis der Operation gesetzt.
    Also in SCL:

    Code:
    iZahl_Negi := iZahl * (-1);
    Aber mal ehrlich, das habe ich alles aus der Online-Hilfe von Step7 (einmal AWL und dann SCL) zusammengesucht!
    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:

    awl-scl (11.01.2008)

  13. #19
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    @MSB

    Dar hab ich doch glatt zu lange am Outfit rumgefeilt, aber sieh mal, unser Ergebnis ist identisch !
    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

  14. #20
    awl-scl ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2007
    Beiträge
    10
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo leute,habe eigentlich 2 bis 3 fragen :
    L 0;
    T LW 3;

    L DBW 38;
    T LW 3;
    habe das in SCL so geschrieben :
    Data_block_DB.LW3 := 0;
    Data_block_DB.LW3:= Data_block_DB.DW38 ;der compiler sagt(Die angegebene Bitnummer ist semantisch nicht korrekt. Als Bitnummer sind nur ganze Zahlen zwischen 0 und 7 zulässig.)

    zu NOP :
    wie kann ich das in scl programmieren :als BS aus m programme :
    M010: L DBD 62;
    /R ;
    L 1.638400e+004;
    *R ;
    RND+ ;
    UN #REV;
    O #WR_VU;
    SPB M032;
    NEGI ;
    M032: NOP 0;
    T DBW 10;

    danke im voraus

    Gruss
    Zitieren Zitieren NOP in SCL  

Ähnliche Themen

  1. C++ Code
    Von rabit im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 03.01.2010, 10:42
  2. Test von SCL-Code
    Von broesel im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.05.2007, 10:56
  3. Code erklären
    Von ottopaul im Forum HMI
    Antworten: 1
    Letzter Beitrag: 04.04.2007, 15:28
  4. AWL-code
    Von Anonymous im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 09.11.2005, 16:48
  5. SMD Code Tabelle
    Von Josef Scholz im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 23.06.2003, 20:53

Lesezeichen

Berechtigungen

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