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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: AWL Code in SCL umwandeln

  1. #11
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    das verspricht ja eine lange Nacht zu werden. Stichwort Hochsprachenschleifen: for-next, while-do, repeat-until. Was davon nun in SCL geht, kann ich Dir spontan nicht sagen. Aus dem Informatikunterricht glaube ich mich zu erinnern, dass die while-do nach Möglichkeit die erste Wahl währe.

  2. #12
    Avatar von robson
    robson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.02.2011
    Ort
    Österreich / OÖ
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo miteinander

    Zuerst einmal vielen Dank für die vielen Antworten, ich bin jetzt schon ein Ganzes Stüch weiter mit meinem Baustein..... ich habe nur noch ein Problem das mein TIA V11 SP2 UP 5 leider den Datentyp "BLOCK_DB" bzw. auch die Anweisung "word_to_block_db" nicht erkennt und immer einen Syntaxfehler auswirft.

    Ich möchte unbedingt indirekt auf einen DB zugreifen....gibt es ausser diesen Möglichkeiten noch andere Befehle...? bzw. woran kann das liegen das ich in SCL diese Datentypen / Anweisungen nicht nutzen kann....?

    Vielen Dank für eure Hilfe

  3. #13
    Registriert seit
    17.07.2006
    Beiträge
    352
    Danke
    0
    Erhielt 79 Danke für 70 Beiträge

    Standard

    indirekte Adressierung sollte mit Peek und Poke gehen... mal in der online Hilfe suchen...

  4. #14
    Avatar von robson
    robson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.02.2011
    Ort
    Österreich / OÖ
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke, habe ich gefunden ich habe jett folgende SCL Code erstellt und nun gibt mir der Compiler beim Übersetzen immer einen "Übersetzungsfehler" aus obwohl kein Syntax Error ansteht bzw. irgendetwas rot makiert ist.

    // Errechnen Adressierung Bereiche
    #t_anzahl_DW := (#i_Anzahl_wörter-1)*2;
    #t_quittierbereich := #i_Anzahl_wörter*2;

    // Auswertung Störungen
    #t_index := 0;
    FOR #t_index := 0 TO #t_anzahl_DW BY 2 DO

    // Störmeldungen quittieren
    IF #i_Quittiertaste =1 THEN POKE(area:=16#84, dbNumber:=#i_Datenbaustein, byteOffset:=INT_TO_DINT (#t_index), value:=16#0000);
    #s_störung := 0;

    // Abfrage ob Störmeldung vorhanden
    ELSIF PEEK(area:=16#84, dbNumber:=#i_Datenbaustein, byteOffset:=INT_TO_DINT (#t_index)) <> 0 THEN
    #s_störung :=1;
    END_IF;

    // Quittierbereich invertieren
    POKE(area:=16#84, dbNumber:=#i_Datenbaustein, byteOffset:=DINT_TO_WORD (#t_quittierbereich+#t_index),value:=16#FFFF);

    END_FOR;

    Könnte mir bitte irgend jemand einen Tipp geben wo das Problem liegt...?

  5. #15
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von robson Beitrag anzeigen
    Code:
    // Errechnen Adressierung Bereiche
    #t_anzahl_DW := (#i_Anzahl_wörter-1)*2;
    #t_quittierbereich := #i_Anzahl_wörter*2;
    
    // Auswertung Störungen
    #t_index := 0;
    FOR #t_index := 0 TO #t_anzahl_DW BY 2 DO
      
      // Störmeldungen quittieren
      IF #i_Quittiertaste =1 THEN 
    
         POKE(area:=16#84, dbNumber:=#i_Datenbaustein, byteOffset:=INT_TO_DINT (#t_index), value:=16#0000);
         #s_störung := 0;
            
      // Abfrage ob Störmeldung vorhanden
      ELSEIF PEEK(area:=16#84, dbNumber:=#i_Datenbaustein, byteOffset:=INT_TO_DINT (#t_index)) <> 0 THEN
    
         #s_störung :=1;
    
      END_IF;
    
      // Quittierbereich invertieren
      POKE(area:=16#84, dbNumber:=#i_Datenbaustein, byteOffset:=DINT_TO_WORD (#t_quittierbereich+#t_index),value:=16#FFFF);
                
    END_FOR;
    Ich weiß ja nicht, ob Du den Code hier rein kopiert hast. Wenn ja, fehlt beim ELSEIF das E in der Mitte (rote Markierung) und das POKE gehört normalerweise nicht mehr in die IF-Zeile.
    Den Code selber hab' ich jetzt nicht getestet (kann ich auch gar nicht )

    PS: Die 1. Zuweisung "#t_index := 0;" kannst Du weglassen, denn die machst Du ja in der nächsten Zeile mit der FOR-Schleife gleich nochmal.
    Und was ich nicht verstehe, ist der Kommentar "Quittierbereich invertieren" und dann erfolgt eine feste Wertzuweisung von "value:=16#FFFF" in der nächsten Zeile. Wie passt das zueinander?


    Benutz' übrigens bitte die Code-Einbettung (Icon mit #-Symbol 2. Reihe ganz rechts). Wie Du vlt. siehst, kann man den Code so besser lesen. Vor allem, wenn er in der Schriftart "Courier New" formatiert wird. Auf jeden Fall läßt er sich besser vom Rest des Textes unterscheiden.
    Außerdem solltest Du auch die Variablendeklarationen mit angeben, damit man auch eventuelle Fehler bei den Typzuordnungen/-umwandlungen erkennen kann.
    Geändert von hucki (07.02.2013 um 21:50 Uhr) Grund: Legasthenie

Ähnliche Themen

  1. MC7-Code in AWL umzuwandeln
    Von SPS_PC im Forum Hochsprachen - OPC
    Antworten: 70
    Letzter Beitrag: 24.12.2015, 17:22
  2. awl in scl Code einbinden
    Von schlarpi im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 01.09.2008, 12:07
  3. AWL-Code Interpretaion
    Von gravieren im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 08.05.2008, 12:34
  4. AWL Code in schaltalgebra
    Von Anonymous im Forum Simatic
    Antworten: 39
    Letzter Beitrag: 23.12.2005, 23:12
  5. AWL-code
    Von Anonymous im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 09.11.2005, 16:48

Lesezeichen

Berechtigungen

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