Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Themen - dast

Seiten: [1]
1
Bestehende Module / Existing Modules / Bug in DIMM_I?
« am: 11. September 2015, 10:14:40 »
Kann es sein, dass sich im Funktionsblock DIMM_I ein kleiner Fehler eingeschlichen hat.

Wenn ich nach dem Kommentar gehe sollten die folgenden beiden Zeilen
...
(* set direction to up when value < 127 otherwise set dir down dir is reversed because next action will reverse again *)
dir := out > 127;
...
(* set the appropriate direction of dimmer dir is reversed because next action will reverse again *)
dir := out > 127;
wohl so
...
(* set direction to up when value < 127 otherwise set dir down dir is reversed because next action will reverse again *)
dir := out >= 127;
...
(* set the appropriate direction of dimmer dir is reversed because next action will reverse again *)
dir := out >= 127;
oder so lauten
...
(* set direction to up when value < 127 otherwise set dir down dir is reversed because next action will reverse again *)
dir := NOT(out < 127);
...
(* set the appropriate direction of dimmer dir is reversed because next action will reverse again *)
dir := NOT(out < 127);
, oder?

Weil, was wenn out genau 127 ist?!
Dann ist sowohl out > 127 als auch out < 127 FALSE.

Und sollte die Grenze vielleicht nicht sogar bei 128 liegen, damit das ganze schön symmetrisch ist?

2
Bestehende Module / Existing Modules / CLICK_MODE entprellt?
« am: 10. September 2015, 13:59:49 »
Hab mir gerade den Funktionsblock CLICK_MODE angesehen ...
Hat es einen Grund warum der Eingang hier nicht entprellt wird? Oder seh ich es einfach nicht?

3
Liebe OSCAT-Gemeinde,

es scheint so als ob der SWITCH_I Funktionsblock aus der Building Library ein Problem hat, wenn der SPS-Timer überläuft:

Meines Erachtens sollten wie z.B. beim letzten IF
  IF Q AND T_on_max > t#0ms AND Tx >= T_on + T_on_max THEN
  Q := FALSE;
  END_IF;
der Vergleich der Zeitmerker folgendemaßen aussehn:
  IF Q AND T_on_max > t#0ms AND Tx - T_on >= T_on_max THEN
  Q := FALSE;
  END_IF;

Die Differenz von zwei Zeitwerten (Tx - T_on) sollte doch immer passen, egal ob es einen Überlauf gegeben hat oder nicht (siehe auch Timer Überlauf).
Oder liege ich da falsch?

LG Daniel.

Seiten: [1]