# CFC Programmierung if / sprünge?



## swissm (18 Juli 2011)

Also Ich Programmiere grade auf einer Lenze Servo Drives 9400.

Ich frage mich wie hier soetwas wie Abzweigungen bzw Sprünge realisieren soll.

Das Problem ist es gibt offenbar keine Bausteine mit enable Eingang geschweige den Sprungmöglichkeiten.


Folgende Situation:
Ich habe eine binäre Variable A und eine DINT Variable B

Wenn A = TRUE ist dann soll B = 0 gesetzt werden.

Ok das ganze geht über

A ->  negation -> BooltoDINT -> B

Problem ist nur Wenn A nicht gesetzt ist soll diese gefälligst nichts mit B tun.

Also müsste die obrige Anweisung übersprungen werden da sonst B= 1 wird.


Nur das Problem ist ich habe eben nur Logische Verknüpfungen AND OR ADD, FLIP FLOP und Konvertierungsbausteine. Keiner von denen hat den von S7 bekannten enable Eingang. Wie kann ich damit etwas realisieren was nur wenn A = TRUE wird B beeinflusst?


----------



## Jochen Kühner (18 Juli 2011)

Geht es nicht wenn du
A -> negation -> BooltoDINT -> C
B x C -> B
Machst?

D.h. Mal null gibt null, und mal eins ergibt wert von b?

Sorry, hab keinen lenze fu, ich weiss nicht ob das geht, nur als Idee...


----------



## swissm (18 Juli 2011)

das könnte in der tat funktionieren.

das ist so einfach das ich nicht drauf gekommen bin.


----------



## Thomas_v2.1 (18 Juli 2011)

Beim Siemens CFC mache ich sowas meistens mit einer SEL-Box. Bei der kann mit einem binären Eingang zwischen zwei Werten umgeschaltet werden. Auf den einen Eingang kommt der zu ändernde Wert, auf den anderen wird der Ausgang der SEL-Box zurückgeschliffen.
Vielleicht gibts auch so einen Block beim Lenze CFC.


----------



## ich988 (18 Juli 2011)

GENAU
Der gesuchte Baustein lautet "SEL_R" ist glaub ich in der Rubrik MUX bzw. Multiplex.
Dieser hat drei Eingänge. Einen binären "K" der zwischen den beiden REAL "IN1" und "IN2" wechselt. Ist "K" = 1 dann wird IN2 auf den Ausgang geschaltet.
Falls bedarf besteht gibt es auch alle benötigten Converter-Bausteine INT->DINT->REAL...

Alternativ kannst du wie gehabt auch einen Baustein erstellen und auf den CFC-Plan ziehen.
Das coole am CFC ist, dass es genauso wie bisher ist. Nur dass man eben die Anschlüsse direkt verschaltet statt evtl. über merker oder ähnlich.
Du hast auch an jedem Baustein deine "EN"ABLE-Anschlüsse. Du musst sie nur sichtbar machen. Den enable benutzt man im CFC eigentlich aber eher nicht.
Für simple Verriegelungen ist CFC wirklich schick. Man darf nur nicht zu viel Logik auf den Plan bringen dann wird es wüst.


----------



## swissm (19 Juli 2011)

ok werd mal gucken ob ich den sel bausteine finde.

Hab noch nen paar mehr Sprünge in meine Programm.

Ich konvertier grad genaugenommen FUP Code von einem anderem Umrichter nach CFC.

Ein Problem hab Ich da noch, dort wird alle 1s eine Task aufgerufen.

Die 9400 hat zwar auch tasks kann aber max auf 8ms gestellt werden, was die Zeit zwischen 2 durchläufen angehet. 

Die Haupttask wird alle 1ms aufgerufen, ich würds also wohl mit nem zähler machen der bis 1000 zählt und den 1s teil der Anwendung dann immer nur bei 1000 aufrufen, müsste ja eigentlich auch auf das selbe hinauslaufen.


----------



## ich988 (19 Juli 2011)

Du kannst auch im CFC das ganze beschleunigen oder im schlimmsten Fall alles in den OB1 knallen -> nicht wirklich PCS7 like(falls wir von PCS7 reden).
Ich sehe jedoch kein Problem. 
Deine Befehle gehen evtl. verzögert raus und werden vom 9400 eben sofort interpretiert. Aber das kann dir egal sein bzw. ist ja auch ganz schön wenn der 9400 richtig flott ist. 
Eine Verzögerung würde ich hier nicht einbauen bringt nur Nachteile synchron wird der 9400 nie mit der Steuerung sein. Muss auch nicht. Hauptsache er ist schneller, denn gleiche oder langsamere Geschwindigkeit ist gefährlich. Hierbei könnten Befehle verschluckt werden.


----------

