Das Problem tritt nach der Zeit X auf, kein Fehler der CPU , kein Fehler am Baustein zu erkennen, Ich habe den folgenden Eindruck:
Ich benutze den Actuator 3P für Heizungssteuerung mit Ventilen AUF / ZU. Der Aqtuator 3P regelt mit dem Stellwert 0..100% aus dem PID Regler (Umgerechnet 0…1 für den Aktuator 3P) wunderbar an den verlangten Sollwert, nach der Zeit X (in Tagen) wenn ich wieder mal auf der Anlage bin oder der Kunde kalt hat habe ich zuerst festgestellt, dass der Actuator 3P auf 0% oder 100% steht. I
n diesem Zustand steuert er das Ventil weder AUF noch zu an. Dies habe ich abgefangen und gesagt, bei <= 0% = Actuator immer ZU, bei >= 100% Actuator immer AUF. Dies bringt, dass beim Endanschlag das Ventil sich bewegt und eine Istwertänderung nachfolgt (Ventil hat kine Rückmeldung um den effektiven Status zu definieren.
Nach dieser Änderung habe ich jetzt aber festgestellt (am 24. Dezember 2009, anstatt den Weihnachtsbraten zu geniessen) dass der eine Aqtuator auf 90% (Betriebsgebäude) der zweite auf 43% (Dekantergebäude) stehen geblieben ist, obschon der PID bei beiden Reglern 100% verlangt. Beide Aqtuatoren steuern weder OUT1 noch OUT zu an, somit ist meine optimierung 0% ZU / 100% AUF wieder hinfällig!
Ich habe bis jetzt sehr gute Erfahrungen mit der Libary gemacht und hoffe dieses Problem mit EUrer Hilfe auch noch in den Griff zu bekommen.
Die Version die wir jetzt benutzen ist 3.11 vorher hatten wir 3.05 benutzt. Dann haben wir kürzlich sämtliche Bausteine auf 3.11 geupdated, und gehoft das das Problem behoben ist!
ich habe mir den code vom actuator_3p mal angesehen und festgestellt das er sehr alt ist.
wir werden in der nächsten version den actuator_3p komplett neu machen und auf bestehende module der lib zurückgreifen.
dann sollten hoffentlich auch deine probleme behoben sein
kann es sein das der Baustein bedingt aufgerufen wird, ein tx von -xxx ist eigentlich nicht möglich?
Wäre es möglich mir das Programm einmal zu mailen? PN mit mail an mich.
Achtung: bei einem anderen Topic ist mir aufgefallen das STIME noch einen kleinen Fehler enthält
siehe hierzu STIME Überlauf bit31
Ich war bisher auch nicht grad glücklich mit diesem Baustein (und habe ihn deshalb auch nicht mehr verwendet) ALLERDINGS IM CODESYS.
Bitte lasse folgende Punkte einfließen:
Synchronisieren darf teilweise nur in eine Richtung erfolgen (auf 0% od. 100%). zB Dampfregister (NIEMALS auf AUF). Kondensatorventil Kältemaschine (NIEMALS auf ZU).
Synchronisieren ohne Endschalter (die meisten Antriebe haben nur einen internen oder gar keinen Endschalter). zB.: 2 min auf “ZU” oder “AUF”.
Synchronisieren muß “automatisch erfolgen”. Wenn ein Antrieb ohne Endschalter bei POS 0% steht muß die Steuerung DAUERND ein “ZU”-Signal geben oder bei POS 100% steht muß die Steuerung DAUERND ein “AUF”-Signal geben. DAUERND (bei internen Endschaltern) kann in diesem Fall auch nur EINE GEWISSE ZEIT (bei Rutschkupplung und Magnetkupplung) sein. Damit wird verhindert, daß die Rutschkupplung nicht übermäßig belastet wird und natürlich auch wegen des Energieverbrauchs. So erfolgt in der Endlage immer eine automatische Synchronisation, wenn die Laufzeit des Antriebs ein paar sec. länger eingegeben ist als sie tatsächlich ist. Das Ganze stört einen PI bzw PID Regler überhaupt nicht. Und wenn man das Ganz genau haben will kann man es ja auf die sec. genau eingeben.
siehe dazu auch LINK: Nochmal Actuator_3P ganz am Ende. Da habe ich mal diese Änderungen gößtenteils einfließen lassen. (allerdings ohne Option “Rutschkupplung”)
Vielen Dank für Euer Verständnis.
PS: Weiters sollten viele Antriebe im Anlagenstillstand mal bewegt werden. (zB jede Woche einal ganz “auf” und “zu”)
Habe ich das jetzt richtig verstanden? Der Baustein STIME muss nun im OB1 zyklisch aufgerufen werden? Wir haben ihn im OB100 programmiert mit “DBxx.Init := False”. Habe dies mal irgenwo im Forum gelesen, das man dies so macht!
100% korrekt, der Baustein erkennt selbst ob er neu gestartet werden muss. Allerdings wie zuvor bereits geschrieben ist es wichtig das die Bausteine in denen er Verwendung findet, zyklisch aufgerufen und nicht über den EN Eingang des Bausteins gestartet werden. Wichtig, Bitte die neue Version verwenden da in der alten das Bit das den Überlauf merkt nicht mit gelöscht wird. Das kann zu den von Dir beschriebenen Problem führen.