Bug in ACTUATOR_3P?

Begonnen von Homesps, 04. Oktober 2012, 22:20:11

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Homesps

Hallo,

ich hatte vor einiger Zeit hier http://www.oscat.de/community/index.php/topic,1735.0.html auf meine Probleme mit dem ACTUATOR_3P hingewiesen.
Mir war aufgefallen, dass der Baustein bei sehr kurzen Impulsen OUT1 schaltet, ohne POS zu erhöhen.

Leider hatte darauf niemand geantwortet. Handelt es sich um einen Bug?

Gruß
Klaus

rrbd

Hallo,

es stellt sich sicherlich die Frage, warum du eine Fußbodenheizung (noch dazu mit langem Tastintervall für die Fühler) mit einem PID-Regler versiehst, aber das ist eine andere Frage.

Zur Klärung deines Problems wäre die Antwort auf einige fragen interessant:

a) Funktioniert denn der ACTUATOR_3P für dich, wenn du Manuell (per Forcen oder wie auch immer) Stellungssollwerte vorgibst?
b) Kannst du ein möglichst einfaches Minimal-Testprogramm anbieten (lieber ausgedruckt als als Programmdatei), mit dem das Problem für dich reproduzierbar ist?
So in der Art
- Per Forcbarer Bool-Variable wird ein  Einzelimpuls gestartet
- Impuls mit Dauer über Variable setzt Stellungssoll für Impulsdauer (meinetwegen auch für nur 1 Zyklus) von 0 auf 1,
   nach Impulsablauf wieder auf 0
- Selbsthaltung an OUT 1 zeigt, ob der Ausgang gekommen ist
- Stellung kann man ablesen
Dann mal weiter sehen.

Grüße

Rainer

Homesps

Hallo Rainer,

an meinem anderen Posting zum Thema hängt ein komplettes Codesys-Projekt, welches das Problem zeigt. Den IN vom ACTUATOR_3P füttere ich hiermit.

FUNCTION_BLOCK SIM_SPIKE
VAR_INPUT
   enable: BOOL;
   duration: TIME :=T#5ms;
END_VAR
VAR_OUTPUT
   Out: BYTE := 0;
END_VAR
VAR
   fbTOF: TOF;
   wait: BOOL;
   waittime: TIME := T#5s;
   fbTOF2: TOF;
   run: BOOL;
END_VAR

IF enable THEN

   fbTOF(IN := wait, PT := waittime);
   fbTOF2(IN := run, PT := duration);

   IF NOT fbTOF.Q AND Out= 0 THEN
      Out := 50;
      wait := TRUE;
      run := TRUE;
   ELSIF NOT fbTOF2.Q THEN
      Out := 0;
      wait := FALSE;
   ELSE
      run := FALSE;
   END_IF

END_IF

Ein ACTUATOR_3P, der damit angesteuert wird, gibt an OUT Impulse aus, ohne dass die POS sich ändert.

Für mich habe ich dafür eine Lösung gefunden, aber im Sinne der Idee von freier Software wollte ich das von mir beobachtete Problem zurückmelden.

Das Thema Fußbodenheizung und PID würde ich auch gern weiterdiskutieren, nur nicht in diesem Thread.

Gruß
Klaus