Sprungbefehl

Zuviel Werbung?
-> Hier kostenlos registrieren
Hey ho! Erst mal vielen Dank für deine Hilfe. Also meine Programm im FC 1 sieht zZ folgendermaßen aus:

// Referenzwert zur Regelung der Empfindlichkeit //
L PEW 306
T PAW 306

// Dynamisches Eingangssignal //
L PEW 304
T PAW 304

// Differenz aus Referenzwert und Eingangssignal //
L PEW 304
L PEW 306
-I
T EW 0

//--- Vergleicher ---//
//Programm 1 //
O(
L L#28160
L EW 0
==I
)
O M 2.0
UN M 3.0
CC FC 2

//Programm 2 //
O(
L L#25088
L EW 0
==I
)
O M 3.0
UN M 2.0
CC FC 3

---
Nun im FC 2:

//Programm 1 //
Set
= M 2.0

U M 2.0
= A 9.0

CLR
= M 2.0

---
Im FC 3:

//Programm 2 //
Set
= M 3.0

U M 3.0
= A 9.1

U M 3.0
U E 1.0
UN M 3.1
S M 3.1

U M 3.1
S A 8.4

[...]

U M 3.2
U E 1.0
R M 3.1
R M 3.2
R A 8.4
R A 8.5

CLR
= M 3.0

---

Wenn ich nun das analoge Eingangssignal regle werden zwar die Ausgänge A 9.0 und A 9.1 gesetzt, allerdings auch nicht wieder zurückgesetzt und der restliche Programmablauf findet gar nicht statt. :-(
 
Hallo,
vielleicht solltest du mal für die Aufruf-Freigabe deiner FC's einen Bereich vorgeben. Einen Analog-Eingang auf einen Fix-Wert zu vergleichen geht normalerweise in die Hose, da du auch bei konstantem Eingang keinen stehenden Wandlungswert bekommst.

Davon abgesehen solltest du das mit den bedingten Sprüngen vielleicht noch einmal überdenken - wie du siehst ist es mit den debugging-Möglichkeiten etwas bescheiden ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit den Sprungbefehlen funktioniert es bei mir leider auch nicht :(

U(
L EW 0
L L#25000
>I
)
U E 0.1
SPB PR1

U(
L EW 0
L L#25000
<I
)
U(
L EW 0
L L#12000
>I
)
U E 0.1
SPB PR2

PR1: SET
= M 1.0

U M 1.0
= 9.0

SPA EXIT

PR2: SET
= M 2.0

U M 2.0
= A 9.1
= A 8.6
[...]

U M 2.1
U E 0.1
R M 2.1

SPA EXIT

EXIT: CLR
= M 1.0
= M 2.0
NOP 0
 
versuch es doch mal so :
Code:
U(
L EW 0
L L#25000
>I
)
U E 0.1
= M 1.0
= A 9.0

Code:
U(
L EW 0
L L#25000
<I
)
U(
L EW 0
L L#12000
>I
)
U E 0.1
= M 2.0
= A 9.1
= A 8.6
... und lass den Quatsch mit den bedingten Sprüngen erstmal ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun im FC 2:

//Programm 1 //
Set
= M 2.0

U M 2.0
= A 9.0

CLR
= M 2.0

---
Im FC 3:

//Programm 2 //
Set
= M 3.0

U M 3.0
= A 9.1

[...]

---

Wenn ich nun das analoge Eingangssignal regle werden zwar die Ausgänge A 9.0 und A 9.1 gesetzt, allerdings auch nicht wieder zurückgesetzt und der restliche Programmablauf findet gar nicht statt. :-(

hi,
sobald du einmal in deine FCs springst, werden deine Ausgänge gesetzt. wird ein FC beim nächsten mal nicht aufgerufen, bleibt der ausgang trotzdem gesetzt, weil dann nirgens im Zyklus eine Zustandsdefinition für den Ausgang erfolgt!
 
Folgender Vorschlag:

Den bedingten Aufruf der FCs machst du wie gehabt mit der gegenseitigen Verriegelung der anderen Funktionen und dann

FC2:
SET
= M2.0

// Hier deine Bedingung wann der Durchlauf beendet sein soll
// damit wird erstmal M2.0 zurückgesetzt
R M2.0

// Hier kommen deine ganzen Ansteuerungen der Ausgänge, Merker, etc. hin
// und werden immer mit U M2.0 verknüpft
// Denke daran das du Merker und Ausgänge die mit "S" gesetzt hast auch dementsprechend mit ON M2.0 wieder zurücksetzt.
Ich hab die Sachen mal in rot in dein Beispiel eingefügt

Nun im FC 2:

//Programm 1 //
Set
= M 2.0

// Deine Bedingung wann das Programm beendet werden soll
R M2.0

U M 2.0
= A 9.0

---
Im FC 3:

//Programm 2 //
Set
= M 3.0

// Deine Bedingung wann das Programm beendet werden soll
R M3.0

U M 3.0
= A 9.1

U M 3.0
U E 1.0
UN M 3.1
S M 3.1

U M 3.1
S A 8.4

[...]

U M 3.2
U E 1.0
ON M3.0
R M 3.1
R M 3.2
R A 8.4
R A 8.5
 
hey ho!
so wie es panzerknacker beschreibt funktioniert es super! danke!
in kombination mit meinem d/a wandler und dem vergleicher geht es allerdings nicht, daher hab ich den erstmal rausgenommen.
wenn ich den drin hab und den drehschalter regle, flimmern die aus- und eingänge, was ich recht seltsam finde.

vielen dank für eure hilfe!
 
Zurück
Oben