FB mehrmals benutzen

Zapot

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Grüße dich,

SPS: 315-2DP
Software: Step 7
Aufgabe: ich möchte einen Baustein erstellen, der eine Funktion ausführt, die ich mehrmals im Programm aufrufen kann.

Frage: Welcher Lösungsweg ist der Vorteilhafte?

1) FB1 -> für Baustein mit der Funktion,
FB2, DB12 -> mit: call FB1, DB1
FB3, DB13 -> mit: call FB1, DB2
FB4, DB14 -> mit: call FB1, DB3 usw.

Oder anders?

Danke für deine Erklärung..
 
yCX7BwGd.jpg


ich würde es so machen du programmierst einen Funktionsbaustein und rufst ihn dann mehrmals auf.
Der Name des FBs bleibt gleich, nur die Datenbausteine musst du anders benennen.

Gruß
 
Zuletzt bearbeitet:
Grüße dich,

SPS: 315-2DP
Software: Step 7
Aufgabe: ich möchte einen Baustein erstellen, der eine Funktion ausführt, die ich mehrmals im Programm aufrufen kann.

Frage: Welcher Lösungsweg ist der Vorteilhafte?

1) FB1 -> für Baustein mit der Funktion,
FB2, DB12 -> mit: call FB1, DB1
FB3, DB13 -> mit: call FB1, DB2
FB4, DB14 -> mit: call FB1, DB3 usw.

Oder anders?

Danke für deine Erklärung..
Nimm nur dann einen FB, wenn du wirklich soviele (remanente) Daten brauchst.
Im allgemeinen bist du mit einem FC gut bedient, du brauchst dir dann keine Gedanken um den Instanz-DB zu machen.
 

Aufgabe: ich möchte einen Baustein erstellen, der eine Funktion ausführt, die ich mehrmals im Programm aufrufen kann.

Frage: Welcher Lösungsweg ist der Vorteilhafte?

1) FB1 -> für Baustein mit der Funktion,
FB2, DB12 -> mit: call FB1, DB1
FB3, DB13 -> mit: call FB1, DB2
FB4, DB14 -> mit: call FB1, DB3 usw.
Ich sehe das so:
- Handelt es sich um einen sehr langen Baustein mit viel Logik und Berechnungen würde ich die Variante FB2,DB12 - FB3,DB13 - FB4,DB14 bevorzugen.
- Ist der Status eindeutig aus dem Instanz-DB ersichtlich, ist das mehrmalige Verwenden eines FB mit mehreren Instanz-DBs sicher kein Problem!

Absolute Operanden haben in einem FB meiner Meinung nach nichts zu suchen!


Multiinstanzen
Die mögen toll für den Programmierer sein, der das Programm schreibt und der den Anwedungsfall kennt. Sie sind allerdings für einen Laien oder Servicetechniker eine Katastrophe.
Bei heutigen S7-CPUs mit 2047 DBs sollten Multiinstanzen (ausgenommen bei SFBs) kein Thema mehr sein! Bei uns ist erst 1 mal ein Multiinstanz-System zum Einsatz gekommen, welches in unregelmäßigen Abständen unerklärliche Phänomene gezeigt hat. Es ist mittlerweile durch FB mit Instanz-DBs ersetzt worden - Multiinstanzen sind bei uns nun verboten!



mfg
Maxl
 
:ROFLMAO:
Multiinstanzen
Die mögen toll für den Programmierer sein, der das Programm schreibt und der den Anwedungsfall kennt. Sie sind allerdings für einen Laien oder Servicetechniker eine Katastrophe.
Bei heutigen S7-CPUs mit 2047 DBs sollten Multiinstanzen (ausgenommen bei SFBs) kein Thema mehr sein! Bei uns ist erst 1 mal ein Multiinstanz-System zum Einsatz gekommen, welches in unregelmäßigen Abständen unerklärliche Phänomene gezeigt hat. Es ist mittlerweile durch FB mit Instanz-DBs ersetzt worden - Multiinstanzen sind bei uns nun verboten!



mfg
Maxl

Es gibt viele Gründe MI zu nehmen, oder auch nicht. Ich habe oft mehrere gleiche Maschinenfunktionen in einer SPS => FB. In diesem FB rufe ich viele andere Standard-FB´s auf, als Multiinst. Nun sind 10 FB im FB und ich habe 10 mal die gleiche Maschine, da sind die Fehler beim FB,DB-Aufruf schon vorprogrammiert, deshalb Multi. Das die Inst damit nicht klar kommt, oder wehr auch immer, ich kenne diese Aussagen, juckt mich nicht. Bei den Preiskämpfen am Markt kürze ich auch ab, genauso setzte ich ja Zeiger ein und AWL, ebenfalls zum grauen der meisten Nichttäglichprogrammierer. Wenn ich an einem Audi mit 2,5L TDI Motor den Zahnriemen wechseln möchte, verliefe ich auch, an meinem Audi 80 Bj. 78 konnte ich locker 10 Stück am Tag wechseln und dabei auch noch 20 Umpen nebenbei mitwechseln :ROFLMAO: .

Probleme hatte ich auch schon mal mit den MI´s. Irgendetwas verbiegt sich bei den Bausteinen, wenn sie größer werden, mit FB, DB Aufruf ging es dann :confused: . Ist aber schon länger her, das es so war.

Gruß, pt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
u kannst auch vom Programm einen temporären DB öffen und deien Werte hinein kopieren :)
Ein späterer Programmierer wird dich aber dafür verfluchen und das nicht zu knapp.


Gegen Multiinstanz DB`s wüsste ich nicht was bei sauberer Programmierung dagegen sprechen sollte.


Bei einen FB Aufruf nimmt man natürlich jeweils einen eigenen DB für die Aufruffunktion. Mit den Daten musst du ihn halt füttern. Parallel dazu kannst du ja andere DB für deine direkten Daten verwenden. Der FB muss für die Kommikation jedoch immer seinen ganz eigenen DB und auch VAR erhalten.
 
:ROFLMAO:

Es gibt viele Gründe MI zu nehmen, oder auch nicht. Ich habe oft mehrere gleiche Maschinenfunktionen in einer SPS => FB. In diesem FB rufe ich viele andere Standard-FB´s auf, als Multiinst. Nun sind 10 FB im FB und ich habe 10 mal die gleiche Maschine, da sind die Fehler beim FB,DB-Aufruf schon vorprogrammiert, deshalb Multi. Das die Inst damit nicht klar kommt, oder wehr auch immer, ich kenne diese Aussagen, juckt mich nicht. Bei den Preiskämpfen am Markt kürze ich auch ab, genauso setzte ich ja Zeiger ein und AWL, ebenfalls zum grauen der meisten Nichttäglichprogrammierer. Wenn ich an einem Audi mit 2,5L TDI Motor den Zahnriemen wechseln möchte, verliefe ich auch, an meinem Audi 80 Bj. 78 konnte ich locker 10 Stück am Tag wechseln und dabei auch noch 20 Umpen nebenbei mitwechseln :ROFLMAO: .

Probleme hatte ich auch schon mal mit den MI´s. Irgendetwas verbiegt sich bei den Bausteinen, wenn sie größer werden, mit FB, DB Aufruf ging es dann :confused: . Ist aber schon länger her, das es so war.

Gruß, pt

Vielleicht liegt's an der Hantierung mit Adressregistern? Sind die Dinger in awl geschrieben?
Hab bisher selten MI's eingesetzt, und wenn, dann den Baustein richtig zu gemacht um Fehler beim Akutalisieren der Instanz-DB's zu vermeiden.
( Dies bekommen andere PLC-hersteller auch einfacher hin, als Siemens, der Anwender sollte sich normalerweise gar nicht um die Instanzen DBs kümmern müssen)

hth


Kiestumpe
 
Multiinstanzen funkionieren eingentlich ganz gut. Was man wohl besser nicht machen darf, mehrere gleiche FB in einen Multiinstanz-FB hineinzupacken.
Die kann man dann einzeln nicht beobachten, da kein Pfad angegeben werden kann. Weiß vielleicht einer einen Rat dazu?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht liegt's an der Hantierung mit Adressregistern? Sind die Dinger in awl geschrieben?
Hab bisher selten MI's eingesetzt, und wenn, dann den Baustein richtig zu gemacht um Fehler beim Akutalisieren der Instanz-DB's zu vermeiden.
( Dies bekommen andere PLC-hersteller auch einfacher hin, als Siemens, der Anwender sollte sich normalerweise gar nicht um die Instanzen DBs kümmern müssen)

Da gab es eigentlich keine indirekte Adressierung, ist auch schon lange her, ich vermute, ich war einfach nahe an der max. DB-Größe, keine Ahnung mehr.

pt
 
Es gibt viele Gründe MI zu nehmen, oder auch nicht. Ich habe oft mehrere gleiche Maschinenfunktionen in einer SPS => FB. In diesem FB rufe ich viele andere Standard-FB´s auf, als Multiinst. Nun sind 10 FB im FB und ich habe 10 mal die gleiche Maschine, da sind die Fehler beim FB,DB-Aufruf schon vorprogrammiert, deshalb Multi.
Ok, dafür sind MI ja gedacht. Wie Siemens das MI-Prinzip umgesetzt hat, ist jedoch besch...en. Systeme wie CoDeSys oder B&R sind hier sicher weit voraus.

Das die Inst damit nicht klar kommt, oder wehr auch immer, ich kenne diese Aussagen, juckt mich nicht. Bei den Preiskämpfen am Markt kürze ich auch ab, genauso setzte ich ja Zeiger ein und AWL, ebenfalls zum grauen der meisten Nichttäglichprogrammierer.
Diese Einstellung kann ich mir nicht leisten. Ich bin verantwortlich für die Normierung in einer Softwareabteilung mit mittlerweile 26 Programmierern, welche mit den verschiedensten Systemen und Techniken arbeiten. Hier ist es leider manchmal notwendig, dass jemand, der ein halbes Jahr nur ABB-Roboter programmiert hat, auch mal wieder Änderungen in einer S7 vornimmt. So Themen wie MI sind dann natürlich problematisch.

Abgesehen davon arbeitet unsere Firma eher im höherpreisigen Segment, Software-Elektrik-Maschinenbau sind hier außerdem unter einem Dach, und wir sind bei unseren Kunden dafür bekannt, dass wir eher konservativ, für Instandhalter leicht verständlich programmieren.


mfg
Maxl

PS: war irgendwie zu erwarten, dass mit so einem Thema eine Lawine losgetreten wird.....................
 
Zurück
Oben