Ankündigung

Einklappen
Keine Ankündigung bisher.

verständnis problem change(variable)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    verständnis problem change(variable)

    Auszug aus einem meiner Programme:

    ...
    var_STATUSTEXT2 = $$c14
    ...
    if systemstart() or ((change(var_TAGDATUMUHRZEIT) or change(SRV_ACTIVE)) and SRV_ACTIVE==ON) then {
    var_STATUSTEXT1 = var_TAGDATUMUHRZEIT;
    var_STATUSTEXT2 = $$c14
    } endif
    ...
    if change(var_STATUSTEXT2) then {
    write("VRT_SRV_Statustext2-31/1/2", var_STATUSTEXT2)
    } endif
    ...


    zuerst wird var_STATUSTEXT2 mit "" initialisiert
    dann wird var_STATUSTEXT beim Systemstart auf "" gesetzt
    und das hat zur Folge, dass die GA VRT_SRV_Statustext2-31/1/2 geschrieben wird, mit "":
    # Dienst Flags Prio Quelladresse Quellname Zieladresse Zielname Typ Info DPT Zeit Hop Count Medium Info Sicherheit
    7 vom Bus Niedrig 1.0.252 LOG1 0/7/0 SYS_LOG_SRV_Active GroupValue_Write $01 | Ein 07.09.2022 10:55:50,784 6
    6 vom Bus Niedrig 1.0.254 SRV 31/1/2 VRT_SRV_Statustext2 GroupValue_Write 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07.09.2022 10:55:50,775 6
    5 vom Bus Niedrig 1.0.254 SRV 31/1/1 VRT_SRV_Statustext1 GroupValue_Write 4D 69 20 30 37 53 65 70 20 31 30 3A 35 35 | Mi 07Sep 10:55 07.09.2022 10:55:50,735 6
    4 vom Bus Niedrig 1.0.254 SRV 31/0/0 VRT_SYS_SRV_KeepAlive GroupValue_Write $01 | Wahr 07.09.2022 10:55:50,711 6
    3 vom Bus Niedrig 1.0.254 SRV 16/2/1 BUS_Zeit_Uhrzeit GroupValue_Write 6A 37 2D | Mi 10:55:45 07.09.2022 10:55:46,139 6
    2 vom Bus Niedrig 1.0.254 SRV 16/2/0 BUS_Zeit_Datum GroupValue_Write 07 09 16 | 07.09.2022 07.09.2022 10:55:46,115 6
    1 vom Bus Niedrig 1.0.254 SRV 31/7/2 VRT_LOG_EmptyTextOnServerDown GroupValue_Write 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07.09.2022 10:55:46,091 6

    warum? var_STATUSTEXT2 hat sich doch nicht verändert zum Initialwert?
    Wenn ich die blaue Zeile auskommentiere findet der write nicht statt..

    was übersehe ich bitte?

    #2
    Hi,

    wenn der Zuweisungsoperator während der Initialisierungsphase (alles was von systemstart() abhängt) ausgeführt wird, werden, unabhängig von der tatsächlichen Änderung, die Abhängigkeiten aktualisiert.

    Du kannst
    Code:
    and !systemstart()
    noch beim
    Code:
    if change
    hinzufügen.
    Zuletzt geändert von foobar0815; 07.09.2022, 12:07.

    Kommentar


      #3
      Dankeschön!
      die Initphase findet also zum systemstart() statt?
      ich habe es umgeschrieben dass alles frühestens 5000ms nach systemstart() „aktiv“ wird, das scheint auch zu klappen jetzt

      Kommentar


        #4
        Hi,

        erst wird die Busverbindung aufgebaut, dann die Leseanfragen gesendet, die unabhängig davon, ob eine Antwort kam oder nicht, ihre Abhängigkeiten aktualisieren. Dann die genannten, von systemstart() abhängigen Funktionen und dann erst beginnt die normale Verarbeitung.

        Kommentar

        Lädt...
        X