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

Ergebnis 1 bis 6 von 6

Thema: ein Fehlerhaftes SCL Programm

  1. #1
    Registriert seit
    03.05.2006
    Beiträge
    58
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Kollegen,

    ich bin eine SCL Anfangerin, hier habe ich ein Fehlerhaftes Programm und weiß nicht wie kann ich es korrigieren, habt Ihr ein bißchen Zeit für mich?

    FUNCTION FC960 : INT
    VAR
    m : INT;
    n : INT;
    code : INT;
    prioritaet : INT;
    END_VAR

    BEGIN
    m := 0;
    n := 0;
    code := 0;
    prioritaet := 0;


    WHILE DB900.DW36.DXx36,0 DO

    IF DB900.DWm.DXxm,n <> 0 THEN
    code := m*8+n;
    CASE m OF
    0 : prioritaet := 1;
    2,4,6 : prioritaet := 2;
    8,10,12 : prioritaet := 3;
    14,16,18,20 : prioritaet := 4;
    20,24,26 : prioritaet := 5;
    28,30 : prioritaet := 6;
    32,34 : prioritaet := 7;
    END_CASE;
    IF n = 15 THEN
    m := 0;
    m := m+2;

    ELSE
    n := n+1;

    CONTINUE;
    END_IF;

    ELSE
    IF n >= 15 THEN
    n := 0;
    m := m+2;

    ELSE
    n := n+1;
    CONTINUE;

    END_IF;

    END_IF;

    END_WHILE;

    FC960 := code + prioritaet;

    END_FUNCTION

    vielen Dank im Voraus!

    MFG
    Rose
    Zitieren Zitieren ein Fehlerhaftes SCL Programm  

  2. #2
    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

    Wie wäre es damit:

    Code:
     
    FUNCTION FC960 : INT
    VAR
    m : INT;
    n : INT;
    code : INT;
    prioritaet : INT;
    END_VAR
    BEGIN
    m := 0;
    n := 0;
    code := 0;
    prioritaet := 0;
     
    WHILE DB900.DBX36.0 DO
    IF DB900.DX[m,n] <> 0 THEN
    code := m*8+n;
    CASE m OF
    0 : prioritaet := 1;
    2,4,6 : prioritaet := 2;
    8,10,12 : prioritaet := 3;
    14,16,18,20 : prioritaet := 4;
    20,24,26 : prioritaet := 5;
    28,30 : prioritaet := 6;
    32,34 : prioritaet := 7;
    END_CASE;
    IF n = 15 THEN
    m := 0;
    m := m+2;
    ELSE
    n := n+1;
    CONTINUE;
    END_IF;
    ELSE
    IF n >= 15 THEN
    n := 0;
    m := m+2;
    ELSE
    n := n+1;
    CONTINUE;
    END_IF;
    END_IF;
    END_WHILE;
    FC960 := code + prioritaet;
    END_FUNCTION
    das wird zumindest compiliert, ob die Logic paßt weißt du wohl besser .
    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

  3. #3
    Rose ist offline Benutzer
    Themenstarter
    Registriert seit
    03.05.2006
    Beiträge
    58
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank, Ralle

    auf die Zeile "WHILE DB900.DBX36.0 DO" zeigt es bei mir noch 3 Fehler:

    Die Komponente ist nicht vorhanden.
    Fehlerhafte Variable, der Punkt ist nicht zulässig.
    Der Ausdruck mus vom Datentyp Bool sein.

    Die sind aber bei dir alles ok, oder?

    MFG
    Rose

  4. #4
    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

    Ja, die Zeile bemeckert er nicht, der Baustein wurde auch übersetzt und ins Baustein-Verzeichnis gelegt.
    Ich hatte ne 314 als CPU, kann deine CPU bis zur Bausteinnummer DB900 Bausteine verarbeiten? Ältere CPU konnten nicht so hohe Nummern laden.
    Versuch es probehalber mal mit einer DB-Nummer < 128.
    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

  5. #5
    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

    Ne, kanns nicht sein, dann gibt es eine Fehlermeldung "Bausteinnummer zu groß".

    PS: Ich nutze SCL V5.3 SP1

    Mich irritiert die Meldung "Komponente nicht vorhanden", was soll das darstellen?
    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

  6. #6
    Rose ist offline Benutzer
    Themenstarter
    Registriert seit
    03.05.2006
    Beiträge
    58
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    noch mal vielen Dank Ralle

Ähnliche Themen

  1. S5 Programm überschreiben zu S7 Programm
    Von Tabler im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 29.03.2011, 22:37
  2. Antworten: 8
    Letzter Beitrag: 09.12.2010, 18:08
  3. Antworten: 25
    Letzter Beitrag: 20.07.2009, 16:40
  4. Antworten: 0
    Letzter Beitrag: 05.10.2006, 13:56
  5. S5 Programm in ein S7 Programm umwandeln
    Von 1schilcher im Forum HMI
    Antworten: 3
    Letzter Beitrag: 15.01.2006, 11:53

Lesezeichen

Berechtigungen

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