Variablen dauerhaft gesetzt HILFE!

KingHelmer

Level-1
Beiträge
1.076
Reaktionspunkte
139
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich drehe gleich am Rad hier.
Gerade ein Programmgeschrieben und wollte es testen.

Nun stelle ich fest, dass 2 Variablen einfach gesetzt sind. bei der Online-Simulation.

Die Struktur ist ungefähr so:

PLC_PRG --> Funktionsbaustein1 --> Funktionsbaustein2

Im Funktionsbaustein 2 sind während der Beobachtung im Online-Modus 2 Variablen dauerhaft gesetzt. Nach FALSE-Forcen setzen sie sich automatisch wieder.

Es sind zwei Variablen des Types INPUT.
In Funktionsbaustein 1 ist Funktionsbaustein 2 instanziert jedoch werden dort keine Variablen als TRUE angezeigt.

Es sind keine der Werte initialisiert worden.


Programmcode zu posten wird glaube ich nicht besonders viel helfen, da das Programm relativ komplett ist und daher auch eine Masse an Code.

Kennt ihr eventuell ein solches Problem mit gesetzten Variablen und habt Abhilfe?

Grüße,

Florian
 
Hi Leute,

danke erstmal für die Antworten.

@ Thomas64:

1. Ich benutze keine (noch) Arrays.
2. Das werde ich als letzten Schritt versuchen, danke!

@ Rheumakay:

Ich kann zu den Variablen nur Querverweiseinträge mit "lesen" oder "Deklaration" finden.


Ich sollte vieleicht dazu sagen, dass ich momentan nur Simuliere, also das Programm auf keinem "echten" Controller läuft.
Ich werde die Bausteine nun isolieren und mich dann wieder melden!

Danke schonmal und Grüße,

Florian
 
Habe den Baustein isoliert und das Problem war nicht mehr da.

Da ich aber 4 Verschachtelungen im Programm habe, wird es Problematisch werden.

Ich poste hier mal den Programmcode, vieleicht seht ihr ja einen Fehler :(
Der Baustein wird in 2 weiteren Funktionsbausteinen und im PLC_PRG nur noch "durchgeschleust".
D.H. es werden lokale Variablen mit den gleichen Namen an die In- und Outputs gehängt.

Im PLC_PRG werden diese dann mit globalen Variablen und Merkern beschaltet.

Code:
SceneButton1: BOOL;
    SceneButton2: BOOL;
    SceneButton3: BOOL;
    SceneButton4: BOOL;
    SceneButton5: BOOL;
    OnOffButtonG1: BOOL;
    OnOffMerkerG1: BOOL;
    UpMerkerG1: BOOL;
    DownMerkerG1: BOOL;
    OnOffButtonG2: BOOL;
    OnOffMerkerG2: BOOL;
    UpMerkerG2: BOOL;
    DownMerkerG2: BOOL;
    OnOffButtonG3: BOOL;
    OnOffMerkerG3: BOOL;
    UpMerkerG3: BOOL;
    DownMerkerG3: BOOL;
    OnOffButtonG4: BOOL;
    OnOffMerkerG4: BOOL;
    UpMerkerG4: BOOL;
    DownMerkerG4: BOOL;
    OnOffButtonG5: BOOL;
    OnOffMerkerG5: BOOL;
    UpMerkerG5: BOOL;
    DownMerkerG5: BOOL;
END_VAR
VAR_OUTPUT
    CBScene1Tab :BOOL;
    CBScene2Tab: BOOL;
    CBScene3Tab: BOOL;
    CBScene4Tab: BOOL;
    CBScene5Tab: BOOL;
    CBScene1Merker: BOOL;
    CBScene2Merker: BOOL;
    CBScene3Merker: BOOL;
    CBScene4Merker: BOOL;
    CBScene5Merker: BOOL;
    Sonderleuchten: BOOL;
END_VAR
VAR
    GroupButtons: BOOL;
    Instanz1_F_TRIG: F_TRIG;
    Instanz1_RS: RS;
    ResetBedScene1: BOOL;
    Instanz2_F_TRIG: F_TRIG;
    Instanz2_RS: RS;
    ResetBedScene2: BOOL;
    Instanz3_F_TRIG: F_TRIG;
    Instanz3_RS: RS;
    ResetBedScene3: BOOL;
    Instanz4_F_TRIG: F_TRIG;
    Instanz4_RS: RS;
    ResetBedScene4: BOOL;
    Instanz5_F_TRIG: F_TRIG;
    Instanz5_RS: RS;
    ResetBedScene5: BOOL;
END_VAR


IF OnOffButtonG1 = TRUE OR
OnOffMerkerG1 = TRUE OR
UpMerkerG1 = TRUE OR
DownMerkerG1 = TRUE OR
OnOffButtonG2 = TRUE OR
OnOffMerkerG2 = TRUE OR
UpMerkerG2 = TRUE OR
DownMerkerG2 = TRUE OR
OnOffButtonG3 = TRUE OR
OnOffMerkerG3 = TRUE OR
UpMerkerG3 = TRUE OR
DownMerkerG3 = TRUE OR
OnOffButtonG4 = TRUE OR
OnOffMerkerG4 = TRUE OR
UpMerkerG4 = TRUE OR
DownMerkerG4 = TRUE OR
OnOffButtonG5 = TRUE OR
OnOffMerkerG5 = TRUE OR
UpMerkerG5 = TRUE OR
DownMerkerG5 = TRUE THEN
GroupButtons := TRUE;
ELSE GroupButtons := FALSE;
END_IF;

Instanz1_F_TRIG(CLK:= SceneButton1,);
IF SceneButton2 = TRUE OR
SceneButton3 = TRUE OR
SceneButton4 = TRUE OR
SceneButton5 = TRUE OR
GroupButtons = TRUE THEN
ResetBedScene1 := TRUE;
ELSE ResetBedScene1 := FALSE;
END_IF;
Instanz1_RS(SET:= Instanz1_F_TRIG.Q, RESET1:= ResetBedScene1  );

IF Instanz1_RS.Q1 =TRUE THEN
CBScene1Tab := TRUE;
CBScene1Merker:= TRUE;
ELSE
CBScene1Tab := FALSE;
CBScene1Merker:= FALSE;
END_IF;


Instanz2_F_TRIG(CLK:= SceneButton2,);
IF SceneButton1 = TRUE OR
SceneButton3 = TRUE OR
SceneButton4 = TRUE OR
SceneButton5 = TRUE OR
GroupButtons = TRUE THEN
ResetBedScene2 := TRUE;
ELSE ResetBedScene2 := FALSE;
END_IF;
Instanz2_RS(SET:= Instanz2_F_TRIG.Q, RESET1:= ResetBedScene2  );

IF Instanz2_RS.Q1 =TRUE THEN
CBScene2Tab := TRUE;
CBScene2Merker:= TRUE;
Sonderleuchten := TRUE;
ELSE
CBScene2Tab := FALSE;
CBScene2Merker:= FALSE;
Sonderleuchten := FALSE;
END_IF;

Instanz3_F_TRIG(CLK:= SceneButton3,);
IF SceneButton1 = TRUE OR
SceneButton2 = TRUE OR
SceneButton4 = TRUE OR
SceneButton5 = TRUE OR
GroupButtons = TRUE THEN
ResetBedScene3 := TRUE;
ELSE ResetBedScene3 := FALSE;
END_IF;
Instanz3_RS(SET:= Instanz3_F_TRIG.Q, RESET1:= ResetBedScene3 );

IF Instanz3_RS.Q1 =TRUE THEN
CBScene3Tab := TRUE;
CBScene3Merker:= TRUE;
ELSE
CBScene3Tab := FALSE;
CBScene3Merker:= FALSE;
END_IF;

Instanz4_F_TRIG(CLK:= SceneButton4,);
IF SceneButton1 = TRUE OR
SceneButton2 = TRUE OR
SceneButton3 = TRUE OR
SceneButton5 = TRUE OR
GroupButtons = TRUE THEN
ResetBedScene4 := TRUE;
ELSE ResetBedScene4 := FALSE;
END_IF;
Instanz4_RS(SET:= Instanz4_F_TRIG.Q, RESET1:= ResetBedScene4 );

IF Instanz4_RS.Q1 =TRUE THEN
CBScene4Tab := TRUE;
CBScene4Merker:= TRUE;
ELSE
CBScene4Tab := FALSE;
CBScene4Merker:= FALSE;
END_IF;

Instanz5_F_TRIG(CLK:= SceneButton5,);
IF SceneButton1 = TRUE OR
SceneButton2 = TRUE OR
SceneButton3 = TRUE OR
SceneButton4 = TRUE OR
GroupButtons = TRUE THEN
ResetBedScene5 := TRUE;
ELSE ResetBedScene5 := FALSE;
END_IF;
Instanz5_RS(SET:= Instanz5_F_TRIG.Q, RESET1:= ResetBedScene5  );

IF Instanz5_RS.Q1 =TRUE THEN
CBScene5Tab := TRUE;
CBScene5Merker:= TRUE;
ELSE
CBScene5Tab := FALSE;
CBScene5Merker:= FALSE;
END_IF;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ganz vergessen:

die "bösen" Variablen sind hier "OnOffMerkerG1" und "SceneButton5".

Diese werden erst IN diesem Baustein auf True gesetzt.
Der Baustein, in welchem "SceneCheckBack", also dieser Baustein hier, aufgerufen wird, beinhaltet keine gesetzten Eingänge.

UNd genau das ist das mysteriöse...
 
Habe gerade einen neuen Baustein erstellt diesmal ein Funktionsbaustein (kein Programm mehr), habe ihne anders genannt und den Code hineinkopiert.
Der andere ist deaktiviert.

Immernoch dasselbe Problem -.-
 
Hallo,
habe mir mit deinem Codeschnipsel ein neues Projekt gemacht..bei mir geht es
Stell doch bitte mal das GANZE Projekt hier rein..oder per PN.
Wie hast du denn den FB deklariert:
Ich meine , dass was du hier reingestellt hast ist der FB mit Namen "FB1" (z.B.)
beim Aufruf mußt du dann ja schreiben/deklarieren:

Baustein1: FB1;
Baustein2: FB1:
Baustein3: FB1;

usw.
Könnte mir vorstellen dass es daran liegt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Heute konnte ich das Projekt auf dem Controller testen und alles funktionierte soweit tadellos!

Nur eben in der Simulation hapert es!

Ich schicke dir das Projekt per PN!

Danke schonmal

Grüße,

Florian
 
Zurück
Oben