Einen FB mehrmals einsetzen

Guarnere

Level-1
Beiträge
21
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

ich bin Neuling auf dem Gebiet der SPS Programmierung mit S7
(Vorher CodeSys Beckhoff)

Nun habe ich ein Problem:

Ich soll für eine Jalousinen Steuerung ein Programm schreiben. Für eine Jalousine funktoniert der FB. Was muss ich nun tun, wenn ich 3 Wetere Jalousinen programmieren muss, ohne jde einzeln zu programmieren???
 
Fb

Hallo,

du solltest intern keine globalen Variablen verwenden, zumindest nicht schreibend. Wenn du intern lesend zB einen Taktmerker abfragst ist zwar unschön, aber für den Mehrfachaufruf nicht relevant.

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... und darauf achten, nur Lokalvariablen zu verwenden.

ich nehme an du meintest STAT und TEMP je nach Einsatzfall. Aber wenn man in einem FB ohne STAt auskommt kann man auch einen Fc nehmen - es sei denn man will den Vorteil des FB mit der optionalen Parameterversorgung nutzen.

André
 
Lokale Variabeln sind doch die die ich direkt im FB eingeben kann ???

ich hab dann im OB die Symboltabbelle mit den Ein- bzw. Ausgängen des FBs verknüpft.
 
Ja, was willst Du jetzt eigentlich hören? Es ist doch hinsichtlich FB's kein so großer Unterschied zwischen Codesys und Step7.

Alle Parameter die jeder Antrieb hat (AUF,ZU,...) definierst Du als IN und OUT von Deinem FB.
Beim Aufruf Deines FB musst Du einen DB für die statischen Informationen übergeben. Dieser DB muss für jeden Antrieb ein anderer sein.

Das ist eigentlich schon alles.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist mir schon klar ich wollte nur sicher gehen dass wir vom selben sprechen.

Zu den Sachen mit den DB ich habe jedem einen eigenen DB zugeordnet dummerweise funktioniert dies eben nicht.
 
Zuletzt bearbeitet:
ich nehme an du meintest STAT und TEMP je nach Einsatzfall. Aber wenn man in einem FB ohne STAt auskommt kann man auch einen Fc nehmen - es sei denn man will den Vorteil des FB mit der optionalen Parameterversorgung nutzen.

André
... das alles interessiert den TE nicht - mit einer Wahrscheinlichkeit von 10:1 hat er einen S5-Timer in seinem Programm ...
 
Lokale Variabeln sind doch die die ich direkt im FB eingeben kann ???

ich hab dann im OB die Symboltabbelle mit den Ein- bzw. Ausgängen des FBs verknüpft.
Mach Dir einen FC und rufe den FB dort mehrfach mit unterschiedlichen instanz-DB's auf. Oder mach Dir einen FB und dann die FB-Aufrufe als "Multiinstanz". Einfach mal im Forum danach suchen. Wurde schon mind. 1000 mal gefragt.

Gruß
 
im Gegensatz zu Codesys sind die lokalen (TEMP) variablen nur einen zyklus gültig und müssen bevor du sie ausertest einen Ert im FB zugewiesen bekommen, das ist auf den L-Stack zurückzuführen.

Bei einer Änderung des FB bezüglich STAT, IN, OUT Variablen muss du den FB aktualisieren und den zugehörigen DB ebenfalls. Danach neu in die CPU laden.

Falls du S5-Timer verwendets würde ich die Timer selbst als IN variablen übergeben, dann hast du nicht das Problem den selebn Timer öfters zu verwenden. DU kannst aber auch einen IEC Timer aus der Bibliothek verwenden (ähnlich codesys).
 
:confused: ... und was funktioniert nun nicht ?
-
Anstelle eines FB's hättest du übrigens auch genausogut einen FC genommen haben können (wie schon von Andre geschrieben). Du nutzt die Fähigkeiten eines FB hier ja gar nicht ...

Gruß
LL
 
wenn ich nun die eine Jalousine nach oben fahren lasse und die andere nach unten dann beginnen die sich gegenseitig zu beeinflussen. D.h. die eine bewegt sih gar nicht mehr und die andere plötzlich in die andere Richtung usw.
 
was passiert in ob2?
Wozu FC1?

Hast du die alten FC/FB von der CPU online gelöscht? Vielleciht werden die im Hintergrund noch immer aufgerufen
 
Zurück
Oben