Step 7 SFB5 in AWL

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

habe ne kurze Frage:

Wenn ich folgenden Timer

TOF.JPG

mehrmals in einem FC-Baustein verwenden möchte, muss ich dann bei jedem Aufruf einen eigenen DB spendieren?

Oder geht das irgendwie eleganter? :confused:

Lieben Dank ...
 
Wenn Du verschiedene/unabhängige Timer ansprechen willst, dann braucht jeder Timer seinen eigenen IDB. Wenn Du immer den selben Timer ansprechen willst, dann kannst Du immer den selben IDB angeben.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je einen eigenen DB.
In einem FB kannst du im Statbereich Timer von Typ TON, TOF deklarieren und diese dann ohne IDB am Aufruf einsetzen, da deren Daten dann im IDB des übergeordneten FB erscheinen.
 
Zuletzt bearbeitet:
Ok, vielen Dank euch!

Schöner wäre es vermutlich, wenn ich mir einen eigenen Multiinstanz-FB bastle und dort alle SFB5's unterbringe. Diesen FB könnte ich ja dann in der entsprechenden FC aufrufen ... sollte doch klappen, oder?

Glaube das war ja auch die Lösung, die Lord_Anubis vorgeschlagen hatte! :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So wie es vor hast, klappt es.
Doch ist es dein Ziel?
Wenn du in einem FB alle deine Zeiten generierst, verlierst du Modularität deines Programms.

Was spricht dagegen, wenn du statt von FC FB verwendest und in dessen IDB auch die Zeiten gebaut werden?
Mir ist noch immer nicht ganz klar, warum immer wieder mit FC gearbeitet wird, wenn es mit einem FB einfach einfacher ist. :confused:


bike
 
So wie es vor hast, klappt es.
Doch ist es dein Ziel?
Wenn du in einem FB alle deine Zeiten generierst, verlierst du Modularität deines Programms.

Was spricht dagegen, wenn du statt von FC FB verwendest und in dessen IDB auch die Zeiten gebaut werden?
Mir ist noch immer nicht ganz klar, warum immer wieder mit FC gearbeitet wird, wenn es mit einem FB einfach einfacher ist. :confused:

bike

Hi bike,

die Praxis ist halt, dass es sich um ein bereits bestehendes Programm handelt, dem nun noch einige Timer zugefügt werden müssen. Allerdings sind schon so viele S5-Timer verbraten, dass kaum noch welche frei sind und daher kam mir eben die Idee mit den IEC-Timern ...

Nun könnte frau natürlich auch hergehen und alles neu in einen FB schreiben. Aber ich hatte halt nach einer Möglichkeit gesucht, es mir etwas einfacher zu machen ... ;)


Was genau meinst du mit Modularität?

Danke!
 
Ok, vielen Dank euch!

Schöner wäre es vermutlich, wenn ich mir einen eigenen Multiinstanz-FB bastle und dort alle SFB5's unterbringe. Diesen FB könnte ich ja dann in der entsprechenden FC aufrufen ... sollte doch klappen, oder?

Glaube das war ja auch die Lösung, die Lord_Anubis vorgeschlagen hatte! :confused:

Ich dachte eigentlich eher an den Ansatz von bike. Wäre es nicht möglich aus dem FC einfach einen FB zu machen. Dann kannst du die Zeiten als Multiinstanz anlegen und schon sind alle Probleme vom Tisch. Ich denke das wäre die sauberste Lösung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi bike,

die Praxis ist halt, dass es sich um ein bereits bestehendes Programm handelt, dem nun noch einige Timer zugefügt werden müssen. Allerdings sind schon so viele S5-Timer verbraten, dass kaum noch welche frei sind und daher kam mir eben die Idee mit den IEC-Timern ...

Nun könnte frau natürlich auch hergehen und alles neu in einen FB schreiben. Aber ich hatte halt nach einer Möglichkeit gesucht, es mir etwas einfacher zu machen ... :wink:


Was genau meinst du mit Modularität?

Danke!


Das Problem kenne ich auch.

Ein Beispiel wegen modular und wie ich an solch ein Problem herangehe:
Eine Funktion wird original in einem FC programmiert.
Es werden S5t verwendet.
Jetzt kommt jemand, der die neue Technik mit deren Möglichkeiten nutzen will.(IEC Timer)
Nun kommt eine Änderung oder Erweiterung.
Jetzt kann man doch den FC nehmen,
1. eine Quelle erzeugen,
2. den Bausteinkopf ändern, dass der Baustein als FB erkannt wird,
3. einen IDB deklarieren,
4. neu übersetzen und kann nun in dem Baustein IEC Timer einfügen und S5t ersetzen.

So bleibt die Funktion in einem Baustein und kann ggF in einem anderen Projekt so einfügen.

So sehe ich modulares und fachgerechtes Programmieren.


bike
 
Das Problem kenne ich auch.

Ein Beispiel wegen modular und wie ich an solch ein Problem herangehe:
Eine Funktion wird original in einem FC programmiert.
Es werden S5t verwendet.
Jetzt kommt jemand, der die neue Technik mit deren Möglichkeiten nutzen will.(IEC Timer)
Nun kommt eine Änderung oder Erweiterung.
Jetzt kann man doch den FC nehmen,
1. eine Quelle erzeugen,
2. den Bausteinkopf ändern, dass der Baustein als FB erkannt wird,
3. einen IDB deklarieren,
4. neu übersetzen und kann nun in dem Baustein IEC Timer einfügen und S5t ersetzen.

So bleibt die Funktion in einem Baustein und kann ggF in einem anderen Projekt so einfügen.

So sehe ich modulares und fachgerechtes Programmieren.


bike

Na gut, wenns den einfach geht.
Wenn du im FC viel mit AR2 hantierst, indirekt oder über Any-Pointer auf die IN/OUT/INOUT zugreifst, kann es schon ein wenig mehr zu tun geben.
 
Wenn du im FC viel mit AR2 hantierst, indirekt oder über Any-Pointer auf die IN/OUT/INOUT zugreifst, kann es schon ein wenig mehr zu tun geben.

Wenn dem so ist, dann hilft es die AR zunächst zu sichern und am Ende wieder zurückschreiben.
Meist hilft das.
Du hast in Sonderfällen bestimmt Recht, doch sind die meist zum Glück? eher selten.


bike
 
Zurück
Oben