Funktionbaustein mit verschiedenen DB*s

Paco

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Nabend,

hoffe einer von euch kann mir bei folgenden Problem helfen, und ich kann dem gespräch mit meinem Prof ausm weg gehen;)

Ich soll 3 Verschiedene Motoren Ansteuern. Die Ansteuerung erfolgt innerhalb eines FB. Alle drei motoren sollen den gleichen fb benutzen. Jedoch sind es ja immer wieder verschiedene Variablen die ich brauche. Mein Gedanke der vllt nicht ganz falsch ist dann beim zweiten aufruf zb. DB2 zu nehmen. Jedoch wenn ich neue Variablen benötige, muss ich ja auch in den FUnktionsbaustein eingreifen und die namen an den befehlen ändern.....?versteht mich jmd:S:D

Danke schonmal für die Mühe zu später std.
 
Ok vllt sollte ich erstmal erwähnen das ich ein absoluter anfänger in Simatic bin.

Was bedeutet alles über schnittstellen?:S


Ja mit den in und outs habe ich auch keine probs da kann ich ja einfach andere eingänge rauflegen. Aber bei variablen die ich im FB erzeuge habe ich probs...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja mit den in und outs habe ich auch keine probs da kann ich ja einfach andere eingänge rauflegen. Aber bei variablen die ich im FB erzeuge habe ich probs...

Also so ganz ist dir scheinbar nicht klar, was du machst, leider. :confused:

Beim Aufruf eines FB übergibst du einen IDB, der deine Variablen hält.
Wo ist dein Problem?

Wenn du den Fb mit verschiedenen IN und OUT sowie mit einem eigenen IDB aufrufst, dann ist doch alles klar und eindeutig.


bike
 
Ja leider weiss ich es nicht so genau...

Also es hat aber immernoch nicht klick gemacht. Ich weiss das mit den in und outs ist nicht das problem. Aber sagen wir ich habe im Fb eine zuweisung wo ich mit E0.0 den Ausgang Stern einschalte. "Stern" habe ich im funktionsbaustein unter var stehen.

So wenn ich nun den fb nochmal aufrufe. Soll es stern2 sein. Wenn ich jetzt im kopf statt "Stern" vom DB1 "Stern2" eingebe, ändert sich doch meine zuweisung nicht automatisch mit?

Ich soll ja den FB unberührt lassen(nach aufgabenstellung)
 
Zuletzt bearbeitet:
Sowas darfst du auch nicht im FB machen. Sondern hier nur einen IN Out zuweißen. Und beim Aufruf den A0.0 zuweißen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja leider weiss ich es nicht so genau...

Also es hat aber immernoch nicht klick gemacht. Ich weiss das mit den in und outs ist nicht das problem. Aber sagen wir ich habe im Fb eine zuweisung wo ich mit E0.0 den Ausgang Stern einschalte. "Stern" habe ich im funktionsbaustein unter var stehen.

So wenn ich nun den fb nochmal aufrufe. Soll es stern2 sein. Wenn ich jetzt im kopf statt "Stern" vom DB1 "Stern2" eingebe, ändert sich doch meine zuweisung nicht automatisch mit?

Ich soll ja den FB unberührt lassen(nach aufgabenstellung)

Bitte schau dir an, was IN bzw OUT sind.
Genau das du willst, wird über die IN OUT Parameter festgelegt.
Dein E 0.0 muss ein In sein, damit der variabel vergeben werden kann.


bike
 
Oh man, ich steh voll auf der Leitung...tut mir leid wenn ich eure nerven strapaziere aber einmal will ich es noch versuchen zu verstehen. Ich habe ein bild hochgeladen wodran ich es vllt besser erklären kann wo ich aufn schlauch stehe.

Das bild zeigt mien FB1 mit DB1. Wenn ich den FB1 Danach mit FB2 aufrufe sehe ich erstmal das gleiche. Nun gehen wir davon aus das ich mitn ersten durchlauf durch bin und der ausgang "Stern" an ist.

Jetzt laufe ich das zweite mal durch, sehe das bild was ich hochgeladen habe und möchte jedoch einen komplett andern motor steuern mit dem gelichen fb ohne am fb was zu ändern. Wenn ich jetzt sagen wir "Stern2" verwenden will, den ich in der symboltabelle einen willkürlich ausgewählten ausgang zuordne, änder ich das dort oben drin (Bild) aber an den bitverküpfung steht ja immernoch das alte, was ich nach aufgabenstellung nicht ändern soll:S....Danke für eure mühen!
 

Anhänge

  • hä.jpg
    hä.jpg
    91,8 KB · Aufrufe: 62
Ich kenn jetzt "Demo-WinSPS" nicht ...
Aber was mir aufgefallen ist:
Es sieht so aus, als dass du nicht die def.Variablen benutzt, sondern Absolute Adressen (zB "Hilfs" E0.3)

Einen Eingang zu "Setzen" ist nichts für Anfänger und an dieser Stelle im Programm unsinnig.

Vielleicht solltest du dich erst mal mit dem Thema SPS allgemein beschäftigen (Arbeitsweise, Zyklus, Datenformat, Syntax ...)
Ist nicht als Pöppelei gemeint, sondern als Rat.

Gruß Roland

gleiches Problem
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das problem mit dem E0.3 habe ich schon gelöst und es funktionier wunderbar;)
Ich weiss ich kenn mich noch nicht großartig aus, aber es fehlt auch an Zeit sich da mal konkret ranzusetzen " ( Zyklen, usw.) Ich hoffe es halbwegs so zu schaffen und freue mich über jede Hilfe.

Hier liegt das problem woanders. Das Prog. funktioniert aber ich scheine probleme mit dem verständniss von datenbausteinen zu haben..
 
Jetzt laufe ich das zweite mal durch, sehe das bild was ich hochgeladen habe und möchte jedoch einen komplett andern motor steuern mit dem gelichen fb ohne am fb was zu ändern. Wenn ich jetzt sagen wir "Stern2" verwenden will, den ich in der symboltabelle einen willkürlich ausgewählten ausgang zuordne, änder ich das dort oben drin (Bild) aber an den bitverküpfung steht ja immernoch das alte, was ich nach aufgabenstellung nicht ändern soll:S....Danke für eure mühen!
Das Prog. funktioniert aber ich scheine probleme mit dem verständniss von datenbausteinen zu haben..
Der Baustein für den Stern-Dreieck-Anlauf bleibt immer gleich, sprich es gibt keinen "Stern2" sondern nur "Stern".
Die Unterschiedlichen Ein-/Ausgänge werden über die In-/Out- Parameter des FB versorgt.
Ich glaube soweit hast du es auch verstanden.
Nun kommt die interne Verschaltung, Anlaufzeit im Stern, Umschaltzeit auf Dreieck.
Diese Daten werden im FB nur einmal sinnvoll benannt (nicht Stern1 und 2 sondern nur Stern) und liegen im statischen Bereich des FB.
Beim Aufruf des FB möchte er diese statischen Daten in einem DB als Gedächtnis ablegen, damit der Baustein weis, die Sternzeit ist ja schon abgelaufen.
Also brauchst du für den nächsten Antrieb den gleichen FB aber ein anderes Gedächtnis sprich einen anderen DB.
Das ganze kann man dann noch Multiinstanzfähig mache, sprich ein DB bei verschiedenen FB's, aber ich glaube das wäre jetzt zu viel des guten.
 
Paul du könntest meine Rettung sein:)

Du scheinst die Aufgabe zu kennen, oder dir denken zu können. Es klingt alles schlüssig und soweit habe ich es auch alles verstanden. Mein problem ist, das es kein problem ist den Ein schalter den Aus schalter und die Zeit in jeden aufruf über die in ports zu ändern. Aber Stern und dreieck "erzeuge" ich ja erst im Fb.unter "Out". Wenn ich da wieder "Stern" nehme, benutze ich ja den selben A0.1 sage wir mal. Oder nicht?:S

Ich habe mal ne Frage;), Wenn ich diese Variablen da n den DB schreibe, oder nehmen wir zb. Stern. Den habe ich natürlich auch in meiner symboltabelle unter ausgang. Das muss ich doch auch oder nicht:S? Oder mache ich da vllt irgendwas doppelt:S

DAnke DAnke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber Stern und dreieck "erzeuge" ich ja erst im Fb.unter "Out". Wenn ich da wieder "Stern" nehme, benutze ich ja den selben A0.1 sage wir mal.

Du hast einen FB1, der einen Motor ansteuert. Diesen rufst du bei 3 Motoren 3mal auf, jeweils mit einem anderen DB, z.B.

Call FB1, DB1
...
Call FB1, DB2
...
Call FB1, DB3
...

Wenn du jetzt einen Ausgang von Motor 1 (DB1) ansteuern willst,
schreibst du in deinem zyklischen Programm z.B.

U DB1.Stern
= A0.0

Für Motor 2 (DB2) dann

U DB2.Stern
= A1.0

usw....
 
@Günni:
naja ... so dann aber doch wohl nicht ...
eher doch wohl so :
Code:
call FB1 , DB1
  Start := E0.0
  Stop := E0.1
  Zeit  := s5t#1s
  Stern := A0.0
  Dreieck := A0.1
 
call FB1 , DB2
  Start := E1.0
  Stop := E1.1
  Zeit  := s5t#1s
  Stern := A1.0
  Dreieck := A1.1
 
call FB1 , DB3
  Start := E2.0
  Stop := E2.1
  Zeit  := s5t#2s
  Stern := A2.0
  Dreieck := A2.1

@TE:
vielleicht solltest du erstmal damit starten und wir unterhalten uns dann am konkreten Ergebnis, was richtig und was falsch ist und was man wie verbessern könnte ...

Gruß
Larry
 
Ok das ist schonmal neu für mich und sieht ganz gut aus. Wenn ich nun den fb aufrufe mit Ein Zeit und Aus als in parameter und Stern und Dreieck als Out, nehme ich noch Netz und "hilfsschalter" als var.
Dennoch muss ich doch in der symboliktabelle sagen was Netz oder Hilfsschalter sind, (eingang, ausgang) oder nicht?
Das ist mir leider noch unklar...


Mein unwissen ist mir schon fast peinlich...^^^.....Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok das ist schonmal neu für mich und sieht ganz gut aus. Wenn ich nun den fb aufrufe mit Ein Zeit und Aus als in parameter und Stern und Dreieck als Out, nehme ich noch Netz und "hilfsschalter" als var.
Dennoch muss ich doch in der symboliktabelle sagen was Netz oder Hilfsschalter sind, (eingang, ausgang) oder nicht?
Das ist mir leider noch unklar...


Mein unwissen ist mir schon fast peinlich...^^^.....Danke

Nein. Stern, Dreieck, Netz, Hilfsschalter,... werden im FB beschrieben.
Das sind Ein-/Ausgangsparameternamen des FB!
Deine EIN-/Ausgänge kannste in der Symboltabelle nennen wie du willst.
 
Aber netz und hilfsschalter sind ja keine parameter die gebe ich weder rein noch raus die schreibe ich drinne unter Var, nicht unter in out und inout
. Somit weis ich beim simulieren ja garnicht, wenn ich mit Hilfsschalter das netz einschalten will, auf welchen eingang ich zu drücken habe, geschweige denn er überhaupt ein eingang ist.

Deswegen habe ich nun als erstes netzwerk im fb eine zeile

U DBX 6.1
= E 0.2

ist der ansatz richtig?
 
Aber netz und hilfsschalter sind ja keine parameter die gebe ich weder rein noch raus die schreibe ich drinne unter Var, nicht unter in out und inout
. Somit weis ich beim simulieren ja garnicht, wenn ich mit Hilfsschalter das netz einschalten will, auf welchen eingang ich zu drücken habe, geschweige denn er überhaupt ein eingang ist.

Deswegen habe ich nun als erstes netzwerk im fb eine zeile

U DBX 6.1
= E 0.2

ist der ansatz richtig?

E 0.2 ist ein Hardware-Eingang. Den kannst du nicht per Softwarebefehl setzen. Und was ist DBX6.1?
 
Zurück
Oben