Twincat 2 / Builing Automation Bibliothek / Probleme mit FB_MonthlyScheduler2

geomorph

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Ich habe ein Problem mit dem Baustein FB_MonthlyScheduler2 aud der Bibliothek TC_PLC_Building-AutomationBasic.
Da ich von Beckhoff bisher keine zufriedenstellende Antwort erhalten habe, frage ich mal hier nach.

Hier ist der Link zur Beschreibung des Bausteins: http://infosys.beckhoff.com/index.p...tcplclibbabasic_schedulerexample.htm&id=24579

Ich habe den Baustein korrekt beschaltet und er tut auch, was er soll, schaltet zur gegebenen Zeit ein bzw. aus.
Doch ich muss dafür sorgen, dass ich jederzeit die Zeit ändern kann. ZB ich gebe ein Startdatum/Zeit vor (morgen) und eine Dauer. Dies funktioniert auch.
Doch wenn er einmal eingeschalten ist, dann ist es mir nicht mehr möglich, dass ich eine neue Zeit eingeben kann. Er nimmt sie zwar an, der Ausgang des Bausteins bleibt aber gesetzt, auch wenn die Startzeit in der Zukunft liegt. Ich müsste den Baustein erst komplett auslaufen lassen, bis ich eine neue Zeit eingeben kann, es gibt also irgendwie keine Möglichkeit, ihn zu reseten.

Es gibt ein internes Reset-Bit, doch wenn ich es aktivieren möchte, dann bringt er den Übersetzungsfehler: "Fehler 4021: Kein Schreibzugriff auf Zeitbaustein.fbStartEnd.bReset"

Hat jemand eine Idee, wie ich dieses Problem beheben kann? Ich hoffe nicht, dass ich diese Bibliothek nur für diesen Baustein umsonst gekauft habe. Ich komme auch immer mehr in Zeitverzug...

Danke im vorraus!
 
Spontan (ohne den Baustein zu kennen) würde ich mal nen MemSet versuchen:

Code:
VAR
    fbSchedule : FB_MonthlyScheduler2
END_VAR

MEMSET(ADR(fbSchedule), 0, SIZEOF(fbSchedule));
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Solche Zeitschaltprogramme kenne ich von alten Steuerungen.
Hier musste man auch immer die Uhr zurückstellen, und über die Schaltuhr drüber laufen lassen, damit Änderungen der Schaltzeiten übernommen werden.

Wenn Beckhoff dir hier keine brauchbare Lösung anbieten kann, dann würde ich das Geld für die Bibliothek wieder zurückverlangen.

Zeitschaltprogramme findest du z.B. auch in der freien Oscat-Lib
http://www.oscat.de/

Weiterhin kann man sich so ein Zeitschaltprogramm auch selber schreiben.
Der Datentyp TOD (Time of Day) eignet sich hierfür vorzüglich - er gibt dir die vergangenen Millisekunden seit Mitternacht an - damit kann man prima rechnen bzw. vergleichen.

z.B.
Wenn aktueller TOD größer gleich Einschalt-TOD und kleiner Ausschalt-TOD, dann Zeitkanal aktiv - usw.

Bzgl. Zugriff auf die Reset-Variable des Bausteins:
Das Problemm könnte man evtl. mittels Pointer-Zugriff lösen.
 
Spontan (ohne den Baustein zu kennen) würde ich mal nen MemSet versuchen:
Code:
VAR
    fbSchedule : FB_MonthlyScheduler2
END_VAR

MEMSET(ADR(fbSchedule), 0, SIZEOF(fbSchedule));

Danke für den Tip, hat leider nicht funktioniert. Wenn ich dies durchführe, dann will er nach der nächsten Eingabe erst im Jahre 2059 starten, da er seine internen Konstanten verliert. Dann hilft nur noch Steuerung Aus/Ein.


Solche Zeitschaltprogramme kenne ich von alten Steuerungen.
Hier musste man auch immer die Uhr zurückstellen, und über die Schaltuhr drüber laufen lassen, damit Änderungen der Schaltzeiten übernommen werden.

Wenn Beckhoff dir hier keine brauchbare Lösung anbieten kann, dann würde ich das Geld für die Bibliothek wieder zurückverlangen.

Zeitschaltprogramme findest du z.B. auch in der freien Oscat-Lib
http://www.oscat.de/

Weiterhin kann man sich so ein Zeitschaltprogramm auch selber schreiben.
Der Datentyp TOD (Time of Day) eignet sich hierfür vorzüglich - er gibt dir die vergangenen Millisekunden seit Mitternacht an - damit kann man prima rechnen bzw. vergleichen.

z.B.
Wenn aktueller TOD größer gleich Einschalt-TOD und kleiner Ausschalt-TOD, dann Zeitkanal aktiv - usw.

Bzgl. Zugriff auf die Reset-Variable des Bausteins:
Das Problemm könnte man evtl. mittels Pointer-Zugriff lösen.

Einfach so progammieren schaff ich nicht. Dies ist mein erstes Beckhoff Projekt und ich hab leider noch nicht einmal Erfahrung im ST. Mein Programm läuft im FUP.
Leider ist die Zeitschaltuhr auch etwas umfangreicher. Ich muss umschalten können zwischen entweder Startzeit (irgendwann diesen oder nächsten Monat auf die Stunde genau) / Laufdauer (1h-999h) und Startereignis (BOOL) / Laufdauer (1h-999h). Daher wäre diese Zeitschaltuhr eigentlich perfekt dafür geeignet. Ich werde mir mal die Oscat Bobliothek anschauen. Vielen Dank für den Tip!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Spontan (ohne den Baustein zu kennen) würde ich mal nen MemSet versuchen:
Code:
VAR
    fbSchedule : FB_MonthlyScheduler2
END_VAR

MEMSET(ADR(fbSchedule), 0, SIZEOF(fbSchedule));

Danke für den Tip, hat leider nicht funktioniert. Wenn ich dies durchführe, dann will er nach der nächsten Eingabe erst im Jahre 2059 starten, da er seine internen Konstanten verliert. Dann hilft nur noch Steuerung Aus/Ein.


Solche Zeitschaltprogramme kenne ich von alten Steuerungen.
Hier musste man auch immer die Uhr zurückstellen, und über die Schaltuhr drüber laufen lassen, damit Änderungen der Schaltzeiten übernommen werden.

Wenn Beckhoff dir hier keine brauchbare Lösung anbieten kann, dann würde ich das Geld für die Bibliothek wieder zurückverlangen.

Zeitschaltprogramme findest du z.B. auch in der freien Oscat-Lib
http://www.oscat.de/

Weiterhin kann man sich so ein Zeitschaltprogramm auch selber schreiben.
Der Datentyp TOD (Time of Day) eignet sich hierfür vorzüglich - er gibt dir die vergangenen Millisekunden seit Mitternacht an - damit kann man prima rechnen bzw. vergleichen.

z.B.
Wenn aktueller TOD größer gleich Einschalt-TOD und kleiner Ausschalt-TOD, dann Zeitkanal aktiv - usw.

Bzgl. Zugriff auf die Reset-Variable des Bausteins:
Das Problemm könnte man evtl. mittels Pointer-Zugriff lösen.

Einfach so progammieren schaff ich nicht. Dies ist mein erstes Beckhoff Projekt und ich hab leider noch nicht einmal Erfahrung im ST. Mein Programm läuft im FUP.
Leider ist die Zeitschaltuhr auch etwas umfangreicher. Ich muss umschalten können zwischen entweder Startzeit (irgendwann diesen oder nächsten Monat auf die Stunde genau) / Laufdauer (1h-999h) und Startereignis (BOOL) / Laufdauer (1h-999h). Daher wäre diese Zeitschaltuhr eigentlich perfekt dafür geeignet. Ich werde mir mal die Oscat Bobliothek anschauen. Vielen Dank für den Tip!


Was sagt denn der Beckhoff Support dazu?

Der Beckhoff Support ist hier leicht überfordert. Man sagte mir, dass ich am Montag Bescheid bekomme. Hab daher gestern nochmal angerufen und man erklärte, dass ich vor heute wohl nichts höre, dass es aber nicht gut aussieht und ich die Sache wohl hinnehmen muss. Zitat: Es ist halt, wie es ist. :confused:
 
es gibt eine puls ausgang mach da eine SET relais ran , benutze diese und wenn die zeit geandert ist erst ein RESET auf diese machen.
werde morgen die module ansehen
 
Ich habe es hinbekommen.

Ich muss tatsächlich über den bTriggerOn bzw. den (nicht beschriebenen oder aufgeführten bTriggerOff) Ausgang meine Schaltung Programmieren.
Diese Zeitschaltuhr speichert mehr als eine vorgabe, drum kann es zu Überschneidungen kommen. Daher bleibt der Augang b_Out auch geschalten.
Sichtbar wird dies also nur über die getriggerten Ausgänge.

Thema kann als "gelöst" geschlossen werden.
 
Zurück
Oben