TIA TON und TOF mit Datenbaustein im FB bibliotheksfähig erzeugen

mwissen

Level-1
Beiträge
111
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
da für den TON und TOF Baustein ein Datenbaustein benötigt wird, frage ich mich, wie diese Schaltung bibliotheksfähig gemacht werden kann.

Beispiel: Im FB1, der universell verwendet werden soll, wird eine Einschaltverzögerung benötigt.
Dazu wird der TON Baustein verwendet, der einen Datenbaustein benötigt.
Da ich den FB1 mehrfach benutzen möchte, kann ich nicht den Datenbaustein z.B.DB1 direkt vorgeben.

Wisst ihr, wie ich das Problem lösen kann?

In der Classic habe ich einfach SE oder SA Bausteine verwendet, die keinen DB benötigten.
Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo mwissen,

Hierfür verwendet man die s.g. "Multiinstanzen". Um dies durchzuführen must du Timer mit dem Datentyp TON oder TOF als statische Variable anlegen.
Wenn du das im TIA Portal so eingibst, wird bspw. "Timer1" von Datentyp "TON_TIME" erzeugt.
Programmierst du in FUP, musst du dann den Baustein ganz normal einfügen, aber anstatt einen neuen DB anzulegen, gibst du die Multiinstanz "Timer1" als Datenablage vor.

Soweit verstanden?
Ich hab das erst nach ein paar eigenen Tests vollständig erfasst, Rückfragen sind also gerne gesehen ;)
 
Vielen Dank, wir probieren es gleich aus.


Es hat ganz einfach funktioniert. Einfach eine Multinstanz statt einen DB und schon war die Schaltung bibliotheksfähig. Vielen Dank. Hat mir sehr geholfen.
 
Zuletzt bearbeitet:
Hallo Stamm oder jeder andere Nutzer der sich angesprochen fühlt,

es ist zwar bereits eine Weile her aber vielleicht kann mir hier ja trotzdem noch geholfen werden :D
Ich habe einen FB, in dem ich mehrere Timer verwenden will. Da ich aber keine 10 Timer mit jeweiligen DBs anlegen will, hab ich gedacht, einen Timer (oder mehrere für eine jeweilige bestimmte Zeit - also einen für 5Sekunden, einen für 2 Sekunden usw) als Multiinstanz anzulegen und diesen dann immer zu verwenden.

Allerdings klappt das nicht so wie ich mir das vorgestellt habe. Sobald der Timer das erste Mal durchlaufen ist und die zeit abgelaufen, ist das bei jedem nachfolgenden Timer so, auch wenn erst aus dem FB rausgegangen wird in den aufrufenden FB. Als Foto mal noch ein Code-Beispiel.

Timer_Multiinstanz.jpg

Ich nehme an ich mache einfach einen sehr trivialen Fehler. Aber ich hab viel gegooglet und nichts hilfreiches gefunden, und auch ausprobiert habe ich shcon alles was mir eingefallen ist. Bin recht neu im Thema SPS-Programmierung, deswegen verzeiht mir bitte etwaige dumme Fragen :sb13:

Über Hilfe würde ich mich echt sehr freuen :)

Gruß
Mone
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin!

Ein Grundsatzproblem in deinem Code ist, dass du deine Timer bedingt aufrufst. Das darf man schlichtweg nicht. Also die Timer immer Aufrufen und nur deinen Eingang vom Timer bedingt kippen lassen.
 
Wenn du nur einen Timer nutzen willst, dann schreibe diesen Timer "außerhalb" deines bedingten Codes und starte ihn über ein Datenbit, welches du in deinen bedingten Anweisung setzen und rücksetzen kannst.
Im Code also Datenbit ein, dann warten auf Timerausgang, Datenbit wieder aus.
Wichtig ist, dass ein Timer eine Flanke zum Starten benötigt. Du mußt also in jedem Fall sicherstellen, dass dein Datenbit einmal mit "False" an deinem Timer anliegt, bevor du es wieder auf True steuerst.
 
Zurück
Oben