SCL unverständliches Problem

Gerri

Level-1
Beiträge
822
Reaktionspunkte
37
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin nue im Umgang mit SCL und kenne vielleicht nicht alle Geschehnisse.

Ich habe einen FC 10 in dem ich einen FC11(mit SCL erstellt habe).

nun bekomme ich Bits gesetzt obwohl es schon längst keinen Code mehr in deiser Quelle gibt.

Beschaltet ist der FC 11 mit DB Daten.

Wenn ich den FC11 lösche, dann werden auch die Bits nicht mehr gesetzt. Also nichts mit überschreiben aus einem anderen Teil des Programmes.

Hier habe ishc mal die Quelle eingefügt. Ich hoffe es ist übersichtlich genug.

Code:
    data_bytes          :   ARRAY[1..33] OF BYTE;   // data from parameter error (one byte) or position request (12 b -> max.24 DLE repetitions+DLE+ETX+CKS //+spare)    
    length_of_rev_data  :   INT;
    error_rev_data      :   BOOL;
END_VAR                                             
VAR_OUTPUT 
    par_external_alarm      :   BOOL;   // status "modification of parameters"
    par_bad_checksum        :   BOOL;   // status "modification of parameters"
    par_time_out            :   BOOL;   // status "modification of parameters"
    par_camera_alarm        :   BOOL;   // status "modification of parameters"
    par_bad_end             :   BOOL;   // status "modification of parameters"
    par_correct_message     :   BOOL;   // status "modification of parameters"
    par_unknown_parameter   :   BOOL;   // status "modification of parameters"
    par_set_up_error        :   BOOL;   // status "modification of parameters"
    par_tempture_error      :   BOOL;   // status "modification of parameters"
    par_value_out_of_range  :   BOOL;   // status "modification of parameters"
    par_data                :   BYTE;   // byte indication of the position of the detected error
    
    com_external_alarm      :   BOOL;   // status "seam tracking command"
    com_bad_checksum        :   BOOL;   // status "seam tracking command"
    com_time_out            :   BOOL;   // status "seam tracking command"
    com_camera_alarm        :   BOOL;   // status "seam tracking command"
    com_bad_end             :   BOOL;   // status "seam tracking command"
    com_correct_message     :   BOOL;   // status "seam tracking command"
    com_tempture_error      :   BOOL;   // status "seam tracking command"  
    com_unknown_parameter   :   BOOL;   // status "seam tracking command"
    
    pos_external_alarm      :   BOOL;   // status "position request"
    pos_bad_checksum        :   BOOL;   // status "position request"
    pos_correction          :   BOOL;   // status "position request"
    pos_time_out            :   BOOL;   // status "position request"
    pos_camera_alarm        :   BOOL;   // status "position request"
    pos_track_detected      :   BOOL;   // status "position request"
    pos_bad_end             :   BOOL;   // status "position request"
    pos_correct_message     :   BOOL;   // status "position request"
    pos_tempture_error      :   BOOL;   // status "position request"
    pos_data_not_available  :   BOOL;   // status "position request"
    
    Timestamp_ms            :   DWORD;
    correction_X            :   REAL;
    correction_y            :   REAL;
    correction_Z            :   REAL;
    gap                     :   REAL;    
    
    system_CKS_error        :   BOOL;   
    system_protocol_error   :   BOOL;   // Protocol not complete    
END_VAR
VAR_TEMP 
    i           :           INT;
    i_2         :           INT;
    bti         :           INT;        // Byte to Integer
    bti_2       :           INT;        // Byte to Integer
    bti_3       :           INT;        // Byte to Integer
    DLE_byte_no :           BYTE;       // Number on which the DLE byte is written 
    CKS_rec     :           BYTE;       // Byte
    CKS_temp    :           BYTE;
    CKS_DLE_counter         :   INT;
    data_bytes_temp         :   ARRAY[1..33] OF BYTE;
    data_bytes_temp_counter :   INT;
    Timestamp_ms_temp       :   DWORD;
    Ts AT Timestamp_ms_temp :   ARRAY[1..4] OF BYTE;
    position_X      :   ARRAY[1..2] OF BYTE;
    position_X_AT AT position_X :   INT;
    position_Y      :   ARRAY[1..2] OF BYTE;
    position_Y_AT AT position_Y :   INT;
    position_Z      :   ARRAY[1..2] OF BYTE;
    position_Z_AT AT position_Z :   INT;
    gap_area        :   ARRAY[1..2] OF BYTE;
    gap_area_AT AT gap_area     :   INT;
END_VAR
LABEL
    p, m, c, M1, M2, M3, Check;
END_LABEL
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
BEGIN
Check:
IF pos_data_not_available = True THEN 
    GOTO Check;
END_IF;
END_FUNCTION
 
Die Quelle ist das eine, aber was ist auf der SPS? Wirklich der Stand, der nichts mehr setzt? Was sagt die "Brille" (Status)?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einige Output Bits ändern ihren Zustand nach wie vor.

Ich dachte im SCL editor reicht es zu speichern, übersetzen und laden.

Wenn ich auf Testbetrieb gehe kann ich doch die Variablendeklaration nicht beobachten oder?
 
Ich habe im SCL editor Speciern / Übersetzen / Laden ausgeführt.

Aber irgendwie kommt imir das nun schon so vor als wäre noch ein altstand in Verwendung.
 
online sehe ich nichts im deklarationsteil der SCL Quelle.

Wenn ich die Output Bits des Beschalteten DB gegen Merker Tausche sind diese Signale FALSE.

Wenn ich die DB_Bits vor dem Aufruf Rücksetze ändern sie ihren Zustand trotzdem.

Wenn ich sie nach dem AUfruf Rücksetze, dann bleiben sie FALSE.

Welche reboot mieinst du?
Urlöschen?
 
Ich bekomme beim Hochladen die Meldung der Baustein ist noch in der Testfunktion aktiv.
Ich bin aber immer Prozessbetrieb und die Brille ist auchnicht angewählt (Beobachten).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem ist doch allgemein bekannt, und hat nichts mit SCL zu tun!

Nicht beschaltene OUTs nehmen zufällige Zustände ein, sofern sie innerhalb des FC's nicht duch irgendwas beschrieben werden.

Merker nehmen in der S7 hier von der Adressierung am OUT-Parameter her eine Sonderstellung ein.

Mfg
Manuel
 
Vielen Dank,
ich wusste das es bei Temp Variablen so ist, bei Out war es mir nicht klar.

Da SCL im Prinzipü wie Sprünge in AWL bei dessen Anweisungen arbeitet werden die Ausgänge auch nicht jeden Zyklus beschrieben!
 
Aber noch etwas Gerri. In dem Code aus deinem 1. Beitrag hast du mit dem GoTo eine Endlosschleife, falls pos_data_not_available = True, ist dir das bewußt?
 
Bausteinkonsistenz prüfen

Nach einer Schnittstellenänderung eines FB oder einer Längenänderung eines Datenbausteins kann es zu Adressverletzungen
in der Steuerung kommen wenn das Projekt nicht vollständig übersetzt und neu in die Steuerung geladen wurde.
 
Hallo Gerri,
ich würde mal folgendermaßen vorgehen:
1.den Baustein übersetzen
2.den Baustein und alle anderen Bausteine aus dem SCL-Editorfenster
laden.
3.dann den OB aus welchem der SCL-FB aufgerufen editieren
und dann die Zeile anklicken und einmal den Cursor eine Zeile
herunter bewegen. Wenn diese Zeile vorher rot war, wird gefragt
ob der dazugehörige DB neu generiert werden soll. Mit "Ja" antworten.
den OB und den DB neu ins AG laden.
4.Fage: Sind nun alle Probleme behoben?
m.f.G.
Alfons!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem war dass die Ausgänge nicht überschrieben wurden.
Dadurch wurden sie mit den Wertden des letzten lokal AUfgerufenen Bausteins überschrieben (wie die TEMP eben).

In AWL ist es nicht so wahrscheinlich wie in SCL, dass man diesen Fehler macht, da es sich in SCL wie mit AWL-Sprünge verhält.

Trotzdem ein dumme rAnfängerfehler (*Zähneknirsch*)
 
Zurück
Oben