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.


Nachrichten - Majaestix

Seiten: 1 [2] 3
16
Hallo Zusammen,

inzwischen bin ich mit dem Problem weiter.
Es liegt wahrscheinlich nicht an den Bausteinen, sondern an der Web Visu von Beckhoff, bzw. an der Geschwindigkeit, mit der die visuellen Tasten gesendet werden. Der Einfach Click geht, aber der Doppelklick wird immer nur ausgeführt, wenn ich den Visu Taster dreinmal taste. Also einmal der drei Tastungen kommt nicht durch.
Selbst wenn ich die Debounce Werte ändere, habe beides probiert, extrem kurz = 1ms und etxtrem lang = 250 ms, funktioniert das nicht.

Hat vielleicht jemand eine Idee, was ich da noch ändern könnte?

Danke für Hilfe.

Gruss

Majaestix

17
Hallo Zusammen,

folgendes Zenario:

Der FB DIMM_I soll mittels CLICK_MODE bei einem einzelnen Klick auf 100% fahren, bei doppeltem Klick auf den letzten Dimwert gehen und bei langem Tastendruck die Dimmrampe abfahren.

Das klappt bei einem Taster und dem vorgeschalteten FB CLICK_MODE auch super.

Jetzt hatte ich alternativ zum realen Taster in der Visu von TwinCAT einen Taster erzeugt und diesen über den FB CLICK_MODE abgefragt. Der Taster ist in der Visu als Taster und nicht als Toggle definiert. Leider detektiert dieser FB den ersten Klick der Visu garnicht. Doppelklicks werden garnicht oder als Einzelklick erkannt und meistens, wenn überhaupt, erst bei drei Klicks als Doppelklick identifiziert. Nachdem ich in der Source gesehen hatte, dass die T_DEBOUNCE Zeit des FB fest auf 500ms steht, dachte ich, ok, nehme ich halt den FB CLICK. Hier kann ich ja u.a. die T_DEBOUNCE Zeit einstellen. Der funktioniert auch einigermassen. Leider detektiert CLICK kein LONG, sondern bei langem Tastendruck nur Einzelklicks.

Zur Zeit behelfe ich mir damit, dass ich CLICK zur Detektion des Einzelklicks verwende und dahinter den FB CLICK_MODE zur Detektion von langen Tastendrücken verwende. Ist natürlich ein relativ unschönes Konstrukt und läuft auch nicht 100% zuverlässig.

IMHO ist es so, dass bei Benutzung der Visu Taster die Klicks zu schnell für CLICK_MODE kommen. CLICK erkennt sie zwar meistens, natürlich bei angepassten SETUP Variablen, kann aber kein LONG.

Die FB's CLICK und CLICK_MODE möchte ich aber aus Kompatibilätsgründen nicht gerne anpassen.

Hatte das Problem vielleicht schon jemand und könnte mir einen besseren Lösungsansatz geben, als CLICK und CLICK_MODE hintereinander zu schalten?

Danke für jeden Hinweis.

Gruss

Majaestix


18
Modulentwicklung / Re:wake on lan
« am: 15. April 2010, 15:17:48 »
Hallo Christian,

alternativ kannst Du via SPS eine Steckdose mit ahängendem Rechner einschalten. Ist zwar kein WOL, aber funktioniert genauso.

Gruss

Majaestix

19
Hallo Zusammen,

hier nur ein kleiner Denkanstoss:

Gestern bin ich darauf gekommen, dass man mit den Jalousiesteuerungsbausteinen auch ganz hervorragend Vorhänge und Roll(schiebe)tore steuern kann. Die Bedingungen, zumindest die der Rollo-Controller, sind identisch zu den Anforderung an die Steuerung eines Schiedbetores oder eines Vorhanges. Leider sind die Bezeichnungen der Jalousiesteuerungsconroller ausschliesslich auf die vertikale Bewegungsrichtung ausgerichtet.
Vielleicht macht es Sinn, bei evtl. weiteren, zukünftigen FB´s die Bezeichnungen neutraler zu halten. Man kommt dann vielleicht eher drauf, dass sie sich sowohl für senkrechte als auch für waagerechte Bewegungsabläufe eignen.

Gruss

Majaestix


20
Hallo Zusammen,

jetzt ist doch bald Weihnachten, und dann dürfen sich doch brave Kinder was wünschen...

Also wünsche ich mir jetzt was ;)

Nämlich einen Baustein zum zum Schalten von Verbrauchern, z.B. Licht, der in etwa so aussehen könnte:

Eingänge:
- I1 : bool; z.B. für Alarm, Feuer etc., Prio. 1
- I2 : bool; z. B. für einen Taster, Prio. 2
- I4 : real; z. B. für einen Wert für den Dimmer, Prio. 3
- I5 : bool; z. B. Helligkeitssensor, Prio. 4
- I6 : bool; z. B. für einen BWM, Prio. 5
- I7 : bool; z. B. für weitere Bedingung, evtl. Tageszeit usw., keine Prio.
- I8 : time: z. B. für eine Mindestlaufzeit seit dem letzten Impuls
- I9 : time : z. B. für eine Maxlaufzeit seit dem letzten Tasterimpuls

Setup Vars:
- S1 : bool; z. B. bei Alarm, Feuer etc., Vorgabewert Ausgang true/false
- S2 : bool; z. B. zum Einstellen des Ausgangs allg., Vorgabewert bei steigendender Flage an IN auf true/false
- S3 : real; z. B. zum Einstellen des Ausgangs auf einen Vorgabewert bei dynamischen Verbrauchern (Dimmer)

Ausgänge:
- Q1 : bool; z. B. zum Schalten einer Lampe
- Q2 : real; z. B. zum Dimmen einer Lampe
- Q3 : real; z. B. Status des Verbrauchers
- Q4.. Qx : für ESR Fehlermeldungen etc.

Wie man unschwer erkennen kann, habe ich mich an den Rollo-Controllern orientiert.
Sicherlich kann man sowas aus verschiedenen vorhandenen FB´s zusammensetzen, aber schön fände ich, wenn dieses häufig auftrende Problem innerhalb eines Bausteins gelöst wäre.

Mit häufig auftretendem Problem meine ich:
Über die SPS das Licht zu schalten, ist ja meistens von mehreren Faktoren abhängig.

Zuallererst kommt die Katastrophe, meint einen Einbruch oder einen Brand etc., dann sollte das Licht grundsätzlich angehen, sofern es noch funktioniert.

Dann möchte man unter normalen Bedingungen das Licht gerne anhaben, wenn man es braucht, also via BWM einschalten, aber nur wenn es so dunkel ist, dass man auch wirklich Licht braucht.

Außerdem kann es vorkommen, dass man auch ohne BWM das Licht gerne manuell schalten möchte. Dabei soll es anbleiben, ohne Einfluss vom BWM oder Helligkeitssensor oder ähnlichem.

Zu guter letzt hat man sich so schnell an die BWM´s gewöhnt, dass man bei einer manuellen Schaltung vergisst, das Licht wieder auszuschalten. Hier wäre es hilfreich, wenn bei einer Tasterbedienung das Licht nach einer definiertren Zeit wieder ausgehen würde, ohne das es eines weiteren Tasterdruckes bedarf.

Dann gibt es noch den Fall, dass das Licht von einer bestimmten Tageszeit abhängig ist, dabei kann für diese Range AN oder AUS vorkommen.
Der klassische Schlafzimmer-Fall: Bis zum manuellen Tasten soll das Licht via BWM gesteuert werden, wird dann per Taster geschaltet, wird der BWM deaktiviert, bis ein bestimmter Zeitpunkt erreicht ist und der BWM wieder die Prio 1 kriegt = Im Schlafzimmer normalerweise Licht per BWM schalten bis zum Schlafen die Lampe ausgemacht wird, dann bitte bis zum nächsten Tag keinen BWM mehr, ab z.B. 15:30 Uhr wieder BWM bis zum Ausschalten am Bett usw.

Also, liebe Weihnachtsmänner, kann ich Hoffnung haben? Geht mein Wunsch in Erfüllung? Lässt sich da was machen?

Wäre dafür auch bereit dafür weiterhin brav und artig zu sein  ;)

Gruss

Majaestix

21
Bestehende Module / Existing Modules / Re:Timerbaustein
« am: 17. November 2009, 17:09:50 »
Hallo McNugget,

danke für die info.

Zitat
In der OSCAT-Hilfe kann man nach "Takt Generatoren" suchen.
Das wars!

Mit SCHEDULER sollte es gehen.

Gruss

Majaestix

22
Bestehende Module / Existing Modules / Timerbaustein
« am: 17. November 2009, 09:08:29 »
Hallo Zusammen,

ich suche einen Baustein, der mir einfach nur nach einer definierten Zeit (z.B. alle 10 Minuten) einen Ausgang toggelt. Gibt es da was?
Zur Zeit löse ich das über einen Zähler, das ist aber nicht sonderlich genau.

Danke für eine Info.

Gruss

Majaestix

23
Hallo Hugo,

danke für die Tips.

Zitat
wenn deine hysterese groß genug ist sollte das unterdsrückt werden
Dann muessen meine Messwerte aber doch immer im Hystereseband bleiben, oder?

Zitat
ein signal filtern kannst du am besten mit einen pt1 glied (FT_PT1)
Ich habe die Temperaturabfrage jetzt in einen eigenen FB gelegt, der nur noch alle X Minuten einmal angesprungen wird. So habe ich auch kein Flattern ;-)

Gruss

Majaestix

24
Modulentwicklung / Module Development / Eingangsflattern und Hysterese
« am: 10. November 2009, 21:16:38 »
Hallo Zusammen,

zur Zeit habe ich folgendes Problem:

Ich möchte ein Temperatursignal zur Heizungsteuerung verwenden. Mit dem Baustein Hyst_2 funktioniert das auch soweit gut.
z. B.: IN := 21,3 Grad, VAL := 21,5 Grad, HYST := 0,4
Wenn jetzt mein IN um die 21,3  Grad schwankt, schwankt auch mein Q zwischen TRUE und FALSE.
Wie löst man das, da der Schwellenwert, egal bei welchem Hysteresewert, immer irgendwann (kurz) pendelt?
Soll ich da einen Timer nachschalten, und wenn ja, welchen?
Oder gibt es einen Hysteresebaustein, der einen Timer eingebaut hat?
Wäre das evtl. ein Vorschlag für eine spätere Version der Oscat Lib?

Danke für eine Info.

Gruss

Majaestix

25
Hallo Hugo,

hat zwar eine Weile gedauert, aber jetzt melde ich mich mit einer Erfolgsmeldung zurück: es funktioniert!
Ich stelle mal Deine/meine Lösung hier ein, falls es noch mal jemand benötigt:

FUNCTION_BLOCK eg_kc_decke_licht_sensor

VAR_INPUT
END_VAR

VAR_OUTPUT
eg_kc_decke_licht_sensor_status_ein : BOOL;
eg_kc_decke_licht_sensor_status_aus : BOOL;
END_VAR

VAR
(*=========================================== Ein-/Ausgaenge Lichtschalter Kueche =====================*)

Lichtschalter_Kueche : TP_1;
Lichtschalter_Kueche_getastet : BOOL := FALSE;
Lichtschalter_Kueche_Impulsdauer : TIME := T#3M;
Lichtschalter_Kueche_Reset : BOOL := FALSE;

Licht_Kueche_ein : BOOL := FALSE;

eg_kc_decke_licht_an_aus : eg_kc_decke_licht;
eg_kc_decke_licht_status : BOOL;

Licht_Kueche_unterer_Schwellenwert : INT := 155;
Licht_Kueche_oberer_Schwellenwert : INT := 220;
Eg_Kueche_nord_Decke_Hs : INT;
END_VAR

g_Kueche_nord_Decke_Hs := EG_KC_NORD_DECKE_HS_E1_2a / 100;

IF Licht_Kueche_ein THEN
IF  EG_KC_NORD_WAND_WEST_BWM_E1_48b THEN
Lichtschalter_Kueche_getastet := TRUE;
ELSE
Lichtschalter_Kueche_getastet := FALSE;
END_IF;
IF Eg_Kueche_nord_Decke_Hs > Licht_Kueche_oberer_Schwellenwert THEN
Lichtschalter_Kueche_getastet := FALSE;
END_IF;
ELSE
IF EG_KC_NORD_WAND_WEST_BWM_E1_48b
AND Eg_Kueche_nord_Decke_Hs < Licht_Kueche_unterer_Schwellenwert THEN
Lichtschalter_Kueche_getastet := TRUE;
END_IF;
END_IF;

(* via FB TP_1 *)
Lichtschalter_Kueche (IN := Lichtschalter_Kueche_getastet,
PT := Lichtschalter_Kueche_Impulsdauer,
RST := Lichtschalter_Kueche_Reset,
Q => Licht_Kueche_ein);

eg_kc_decke_licht_an_aus (Licht_einschalten := Licht_Kueche_ein,
LichtMenge_proz := 100,
eg_kc_decke_licht_ein_status => eg_kc_decke_licht_status);

Umnd nochmals Dank für Deine Hilfe.

Gruss

Majaestix

26
Dann werde ich am Wochende mal mit den Schwellen spielen und anschliessend berichten.

Nochmals, vielen Dank für Deine Geduld und ein schönes Wochenende.

Gruss

Majaestix

27
Hallo Hugo,

Zitat
ich denke wir reden immer noch aneinander vorbei

Das fürchte ich auch :-(

Die Programmlogik für eine Obere Schwelle auserhalb der Kunstlichleistung ist mir soweit klar.

Du gehst von 40.000 als obere Schwelle aus, dann klappt das so, wie Du das mir ja schon mehrfach erklärt hast.

Ich meine aber eine obere Ausschaltschwelle INNERHALB der Kunstlichtleistung, also z.B. 18.000, d.h. es gibt mehr Kunstlicht als eigentlich benötigt wird.

Wie kriege ich da das Licht aus, wenn das Tageslicht mindestens die untere Schwelle = 16.000 sicherstellen würde?

Gruss

Majaestix

28
Hallo Hugo,

danke für Deine Zeit!

Zitat
16000+20000 ergibt 36000
hier wäre eine obere grenze von ca 40000 angebracht.

Und wie löse ich das, wenn mein Ausschaltwert innerhalb der Grenze des Kunstlichtes liegt?

z.B:

Lichtbedarf von 0 bis 16.000
Kunstlichtleistung 19.000
Genügend Licht bei 18.000, d.h. Kunstlicht aus weil genug Tageslicht.

Würde das bedeuten:

Gesamtes Licht - Kunstlicht = Tageslicht
19.000 - 19.000 = 0

oder

37.000 - 19.000 = 18.000
also Licht aus bei 37.000
dann hätte ich aber für den gesamten Zeitraum zwischen 19.000 und 37.000 das Licht unnötig an.

Oder muss ich mit dem Zuwachs rechnen:

Kunstlicht - Untereschwelle = Zuwachs
19.000 - 16.000 = 3000

also

Gesamtes Licht - Zuwachs  = Obere Schwelle
21.000 - 3.000 = 18.000
also Licht aus bei 21.000 Gesamtlicht

Vielleicht hätte ich doch Physik studieren sollen...

Gruss

Majaestix

29
Hallo Zusammen,

Zitat
damit du die wirkliche helligkeit ohne beleuchtung messen kannst.

ich bin ja nun wirklich nicht der grosse Physiker, aber, ist Licht nicht additiv?

Mein Gedanke:

Wenn gemessenes Licht zwischen 0 und 16 dann Kunstlicht an
Wenn Kunstlicht an dann gemessenes Licht = 19
Daraus resultiert ein Delta von 3.
Wenn gemessenes Licht => Kunstlicht + Delta dann Kunstlicht aus.

Oder liege ich da völlig falsch?

Gruss

Majaestix

30
Hallo Hugo,

war natürlich nicht so intelligent:

Lichtschalter_Kueche      (SET      :=   EG_KC_NORD_WAND_WEST_BWM_E1_48b
                        AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_unterer_Schwellenwert
                        OR EG_KC_NORD_WAND_WEST_BWM_E1_48b
                        AND EG_KC_NORD_DECKE_HS_E1_2a > Licht_Kueche_unterer_Schwellenwert
                        AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_oberer_Schwellenwert,

ist ja gleich:

Lichtschalter_Kueche      (SET      :=   EG_KC_NORD_WAND_WEST_BWM_E1_48b
                        AND EG_KC_NORD_DECKE_HS_E1_2a < Licht_Kueche_OBERER_Schwellenwert

Aber ein Problem logisches bleibt mir trotzdem erhalten:

von HS = 0 bis HS = 14000 brauche ich Licht.
Wenn Licht an, dann ist ja HS = 19000 und bleibt bzw. steigt noch wg. Tageslicht.
Wie kriege ich jetzt das Licht aus, wenn das HS(Tageslicht) > 14000 aber kleiner 19000 ist?

Gruss

Majaestix

Seiten: 1 [2] 3