Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Komische Initialwerte

Pitsch52
2007-06-02
2007-06-04
  • Pitsch52 - 2007-06-02

    Hallo Leute

    Ich stelle ein seltsames Phänomen bei der Initialisierung von Globalen Variablen in einem meiner Programme fest.

    Die Ausgangslage: WAGO 750-841 / Firmware 11

    (Globale Variablen)

    (Ziehlposition Motor 1)

    ZIEHL1_0:DINT := 0;

    ZIEHL1_1:DINT := 250;

    ZIEHL1_2:DINT := 250;

    ZIEHL1_3:DINT := 250;

    ZIEHL1_4:DINT := 250;

    ZIEHL1_5:DINT := 250;

    (Ziehlposition Motor 2)

    ZIEHL2_0:DINT := 0;

    ZIEHL2_1:DINT := 184;

    ZIEHL2_2:DINT := 179;

    ZIEHL2_3:DINT := 149;

    ZIEHL2_4:DINT := 134;

    ZIEHL2_5:DINT := 107;

    Nach dem Einloggen, hat die Variable ZIEHL1_0 den Initialwert 0 (Null).

    Die Variable ZIEHL2_0 aber hat den Initialwert 65535.

    Nach dem Start wird dann mit diesem falschen Wert weiter gearbeitet.

    Wieso bekommt diese Variable nicht auch den Wert 0. Wenn ich sie mit -1 Initialisiere erhält sie -1, nur mit 0 (Null) funktioniert es nicht. Ich habe schon versucht die Variable mit einem anderen Namen zu versehen, jedoch ohne erfolg.

    Woher kommen diese unterschiedlichen Werte?

    Hat jemand Erfahrungen damit gemacht, oder weiss sonst einen Rat, wie ich dort eine 0 als Initialwert hinein bekomme?

    Mit freundlichen Grüssen! Pitsch

     
  • Erik Böhm - 2007-06-04

    Hallo

    Also warum da keine NULL drinsteht, weiss ich auch nicht. Aber mit einer selbstgebaute Einschaltinitialisierung lässt sich das Problem lösen.

    PLC_PRG


    IF NOT bInit THEN

    ( Variablen initialisieren )

    ZIEHL1_0:DINT := 0;

    ZIEHL1_1:DINT := 250;

    ZIEHL1_2:DINT := 250;

    ZIEHL1_3:DINT := 250;

    ZIEHL1_4:DINT := 250;

    ZIEHL1_5:DINT := 250;

    (Ziehlposition Motor 2)

    ZIEHL2_0:DINT := 0;

    ZIEHL2_1:DINT := 184;

    ZIEHL2_2:DINT := 179;

    ZIEHL2_3:DINT := 149;

    ZIEHL2_4:DINT := 134;

    ZIEHL2_5:DINT := 107;

    bInit := TRUE;

    END_IF


    Btw: Ziel schreibt sich ohne H.

    Gruss Erik

     
  • mwatermann - 2007-06-04

    simulationsmodus?

    passiert das auch mit anderen datentypen (zB INT oder REAL)?

     
  • Pitsch52 - 2007-06-04

    Hallo

    Erst mal Danke für die Antworten!

    Es war im Online-Modus. Der Fehler passierte serhr warscheinlich auf der Steuerung. Eine Int-Variable erhielt an erster Stelle auch Null und wenn ich eine zweite Int-Variable erstellte und mit Null initialisierte, erhielt die einen Wert um 19000 herum. Jedes Mal beim Einloggen ein bischen anders.

    Jetzt habe ich die Steuerung mit Reset (Ursprung) gelöscht und danach das Programm wierder aufgespielt. Jetzt funktioniert es plötzlich einwandfrei.

    Komisch das habe ich vorher auch schon probiert. Jedoch ohne Erfolg.

    Ich vermute,dass da noch ein kleiner Bug im Betriebssystem der Steuerung sein könnte, der unter gewissen Umständen einen Fehler verursacht.

    Fehl-Verhalten des Kontrollers habe ich bis jetzt jedoch keines festgestellt.

    Mit freundlichen Grüssen! Pitsch

     

Log in to post a comment.