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 - good_mike

Seiten: 1 [2] 3
16
Hallo,

ich habe irgend wie ein komisches Phänomen.....

Ich habe vor einigen Tagen die OSCAT.LIB auf die Ver. 331beta2 getauscht. Nach einigen Tagen habe ich festgestellt das meine ONTIME Bausteine nachts um 24:00 Uhr nicht mehr zurück gesetzt werden. Jetzt habe ich auf die "offizielle" 331 umgestellt. Leider weiterhin ohne Erfolg. Ich kann nach wie vor den Reset Eingang permanent angesteuert lassen und der ONTIME behält die Werte. 

Ich denke ja das ich richtig vorgegangen bin: Download der Version "BASIC LIB 331 CODESYS2", .LIB Datei geöffnet und PLC_PRG gelöscht, anschließend über den Bibliotheksverwalter die neue LIB eingebunden und die alte OSCAT.LIB gelöscht.

 Generell bin ich der Download-Seite verunsichert. Es wäre nicht schlecht wenn eindeutig hervorgehen würde welche Version für Beckhoff geeignet ist. Auch der Dateiname der Ver. 331 verweist eigentlich nur auf CODESYS.

Gruß

good_mike
 

Plattform: TwinCat 2.11 und Beckhoff CX9000

17
Hallo,

erst einmal vielen Dank für die schnelle Info zu den neuen xblind Funktionen!

Ich habe einmal versucht hier weiter zu kommen. Leider bin ich nicht so fit, daß es ohne Anleitung / Beispiel geht.

Wenn jemand mal ein Beispiel (am besten in ST) hat, wäre ich super dankbar für's online stellen....

Grüße

good_mike

19
Hallo,

vielen Dank erst einmal für die Erklärung der Blind-xxx Zusammenhänge. Hat mir auch für das Verständniss weiter geholfen...!

Ich bin gerade dabei meine CX9000 Haussteuerung in Verbindung mit Eltako EnOcean um eine Rollo-Steuerung zu erweitern.

Die von Hugo erwähnt xBindNight Funktionalität hört sich interesant an.

Darf man fragen wann und wo die Funktion zu haben ist?

Danke und Gruß

good_mike

20
Hallo,

ich hänge mal meine Lösung an....
Ist seit einigen Wochen im Einsatz und funktioniert -bis jetzt :-)

Gruß

good_mike

PROGRAM Weihnachtsbeleuchtung
VAR
   Einschaltdatum:BOOL;
   Date_ein: DATE;
   Date_aus: DATE;

   x2512JJ:SDT;
   x0601JJ: SDT;

   Ein_abend: BOOL;
   Ein_morgen: BOOL;

   Ausschaltzeit_abend: TOD;
   R_TRIG_Ein_abend: R_TRIG;

   Weihnachstbeleuchtung_Ein: BOOL;

   ErsterEinSamstag: BOOL;
END_VAR
(*
Funktionsbeschreibung:
Die Weihnachstbeleuchtung wird in der Zeit vom Samstag abend vor dem 1. Advent bis zum Sonntag nach dem 06. Januar betrieben.
Sie wird  20 Minunten nach Sonnenuntergang eingeschaltet, um 22:00 Uhr ausgeschaltet und um 06:00 Uhr eingeschaltet und 20Minuten vor
Sonnenaufgang ausgeschaltet.
Besonderheiten:   Am 24.12, 25.12 und 31.12. brennt die Beleuchtung die ganze Nacht durch.
*)

(* Füllen der SDT-Struktur mit dem 25.12.[aktuelles Jahr]*)
x2512JJ.DAY:=25;
x2512JJ.MONTH:=12;
x2512JJ.YEAR:=TimeSTD.YEAR;
(* Füllen der SDT-Struktur mit dem 06.01.[aktuelles Jahr]*)
x0601JJ.DAY:=06;
x0601JJ.MONTH:=01;
x0601JJ.YEAR:=TimeSTD.YEAR;

(*Berechnung des Samstag's vor dem 1. Advent : Berechnung des Wochentages des 25.12 (1-7). *)
Date_ein:=DATE_ADD(SDT_TO_DATE(x2512JJ),-(DAY_OF_WEEK(SDT_TO_DATE(x2512JJ))+22),0,0,0);

(*Berechung des 1. Sonntag's nach dem 6. Januar: *)
Date_aus:=DATE_ADD(SDT_TO_DATE(x0601JJ),+7-(DAY_OF_WEEK(SDT_TO_DATE(x0601JJ))),0,0,0);

(* Datum Periode in der die Beleuchtung ein sein soll*)
Einschaltdatum:=PERIOD(Date_ein, DatumDATE, Date_aus);

(* Generierung einer BOOL Variable um festzustellen ob es sich momentan um des Samstag vor dem 1. Advendt handelt.
An diesemTag soll die Beleuchtung nur abends und nicht morgens eingeschaltet werden*)
IF DatumDATE = Date_ein THEN
   ErsterEinSamstag:= TRUE;
ELSE
   ErsterEinSamstag:= FALSE;
END_IF;

(* Im Moment des Einschaltens am Abend die Ausschaltzeit für die folgende Nacht festlegen: an besonderen Tagen (24. /25.12. u. 01.01.) wird die Ausschaltzeit auf 20 min
vor Sonnenaufgang am nächsten Morgen festgelegt. Ansonsten wir zu einer fixen Zeit (22:00 Uhr) ausgeschaltet*)
R_TRIG_Ein_abend(CLK:=Ein_abend , Q=> );
IF R_TRIG_Ein_abend.Q = TRUE THEN
   IF TimeSTD.MONTH = 12 AND (TimeSTD.DAY = 24 OR TimeSTD.DAY=25 OR TimeSTD.DAY = 31) THEN
      Ausschaltzeit_abend:=DT_TO_TOD(MAIN.SUN_RISE_FLIEDEN-t#20m);
   ELSE
      Ausschaltzeit_abend:=TOD#22:00;
   END_IF;
END_IF;

(* Ein-Zeit morgens: 6:00 Uhr bis 20minute vor Sonnenaufgang*)
Ein_morgen:=TIMECHECK(TimeTOD, TOD#06:00, DT_TO_TOD(MAIN.SUN_RISE_FLIEDEN-t#20m));

(* Ein-Zeit abend: 20min nach Sonnenuntergang  bis berechnete Ausschaltzeit*)
Ein_abend:=TIMECHECK(TimeTOD,  DT_TO_TOD(MAIN.SUN_SET_FLIEDEN+t#20m),Ausschaltzeit_abend);

Weihnachstbeleuchtung_Ein:= Einschaltdatum AND ((Ein_morgen AND NOT ErsterEinSamstag) OR Ein_abend);

DO_Weihnachtsbeleuchtung:=Weihnachstbeleuchtung_Ein;


21
SPS-Hardware / Re:WAGO oder was?
« am: 26. Mai 2010, 21:55:52 »
Hallo,

ich kenne leider nur die "Beckhoff-Welt", daher ist es mit dem vergleichen immmer schwierig, aber:

- die Klemmen sind nur bedingt kompatibel, soll heissen: Die einfachen, älterne Klemmen könnten meines Wissens nach gehen (ohne Garantie)
- Beckhoff wird mit TwinCat programmiert. Das ist eine kostenlose Beckhoff SW die CoDeSys sehr ähnlich ist.

Gruß

good_mike


22
Bestehende Module / Existing Modules / Re:Codeschloss
« am: 18. April 2010, 20:29:51 »
Hallo,

ich habe jetzt mein Tastenfeld (Matrix-Version) mit eine Testapplikation ausprobiert.

Funktioniert mit MATRIX und PIN_CODE einwandfrei.

Also, wie bereits gesagt. Ich denke wenn man eine COMMON-Typ Tastenfeld hat, ist die Kombination der beiden genannte Befehle nicht sinnvoll.
Ich glaube in diesem Fall würde ich mir die Logik selber "basteln".

Grüße

good_mike


23
Bestehende Module / Existing Modules / Re:Codeschloss
« am: 13. April 2010, 21:41:49 »
Hallo,

ich habe mir jetzt auch mal ein Tastenfeld mit Matrix-Schaltung besorgt.
Ich werde in den nächsten Tagen einige Versuche damit starten.

Was hast Du denn für eine Tastatur? So wie Du schreibst, ist Dein Tastenfeld ein "Common"-Typ. D.h. ein
gemeinsammer Pol (+24V) und 12 geschaltet Kontakte.
Warum benutzt Du dann den Matrix-Befehl?
So wie ich das nämlich sehe, ist der Matrix-Befehl dafür gedacht, eine Tastatur zu bedienen, welche über Spalten(-Eingänge) und Zeilen(-Ausgänge).

Ich werde mich mal melden, wenn ich weitere Ergebnisse meiner Tests habe. :)

good_mike

24
Hallo,

ich verwende momentan die Kombination aus Blind_Input und Blind_Control_S zur ausschließlich manuellen Steurung von 8 Rollos. Als Input dient ein Taster / Rollo d.h.  SINGLE_SWITCH=TRUE.

Das ganze funktioniert super!

Jetzt möchte ich die ganze Sache um zwei Taster für auf zentralAUF und zentralZU erweitern.
Weiterhin sollen die Rollos um eine bestimmte Uhrzeit auf bzw. zu gefahren werden. 

Wie würdet Ihr das angehen?
Machte es Sinn BLIND_SET oder BLIND_SECURITY für die Zental-Funktion zu "vergewaltigen"?

Wäre Super wenn Ihre einem "greenhorn" auf die Sprünge helfen könntet..... :) :)


Vielen Danke im Voraus.
good_mike (Michael)

25
oscat.lib fuer TwinCAT/CoDeSys / ONTIME und METER_STAT PERSISTENT
« am: 29. März 2010, 20:41:45 »
Hallo,

ich bekomme es einfach nicht hin das mein METER_STAT die Werte nach einem Neutart behalten.
Ich denke das das Problem im Bereich des ONTIME Bausteins liegt. Ich bastel schon länger an dem Problem rum und komme einfach nicht weiter. Ich denke ich habe auch die relevanten Forenbeiträge gelesen. Aber.....
 
Das Problem mit dem Datum ...1970 bei dem METER_STAT Baustein habe ich, so denke ich wenigstens, gelöst.

Ich habe Euch mal die Var. Deklaration und eine Teil des Programms angehängt.

Wäre super wenn jemand eine Tip hätte.

PROGRAM Betriebsstunden
VAR
Betriebsstunden_Brenner: BOOL;
B_Betriebsstunden_Heizungspumpe1requested: BOOL;

Betriebsstunden_Brenner_MIN: UDINT;
Betriebsstunden_Zirkulationspumpe_MIN: UDINT;

ONTIME_Betriebsstunden_Brenner: ONTIME;
ONTIME_Betriebsstunden_Zirkulationspumpe: ONTIME;
ONTIME_Betriebsstunden_Heizungsspumpe1: ONTIME;
ONTIME_Betriebsstunden_Heizungsspumpe1requested: ONTIME;


METER_STAT_Betriebsstunden_Brenner: METER_STAT;
METER_STAT_Betriebsstunden_Zirkulationspumpe: METER_STAT;

B_Heizungspumpe1_Freigabe: BOOL;
Betriebsstunden_Heizungspumpe1_DIV: UDINT;
END_VAR

VAR  RETAIN PERSISTENT

Betriebsstunden_Brenner_SEC: UDINT;
Zyklen_Brenner: UDINT;

Betriebsstunden_Zirkulationspumpe_SEC: UDINT;
Zyklen_Zirkulationspumpe: UDINT;

Betriebsstunden_Heizungspumpe1_SEC: UDINT;
Zyklen_Heizungspumpe1: UDINT;

Betriebsstunden_Heizungspumpe1requested_SEC: UDINT;
Zyklen_Heizungspumpe1requested: UDINT;


Betriebsstunden_Brenner_Last_Day : REAL;
Betriebsstunden_Brenner_Current_Day : REAL;
Betriebsstunden_Brenner_Last_Week: REAL;
Betriebsstunden_Brenner_Current_Week : REAL;
Betriebsstunden_Brenner_Last_Month : REAL;
Betriebsstunden_Brenner_Current_Month : REAL;
Betriebsstunden_Brenner_Last_Year: REAL;
Betriebsstunden_Brenner_Current_Year: REAL;

Betriebsstunden_Zirkulationspumpe_Last_Day: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Day: REAL;
Betriebsstunden_Zirkulationspumpe_Last_Week: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Week: REAL;
Betriebsstunden_Zirkulationspumpe_Last_Month: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Month: REAL;
Betriebsstunden_Zirkulationspumpe_Last_Year: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Year: REAL;




END_VAR

ONTIME_Betriebsstunden_Brenner(
IN:=Betriebsstunden_Brenner ,
RST:= FALSE,
SECONDS:=Betriebsstunden_Brenner_SEC ,
CYCLES:=Zyklen_Brenner);

Betriebsstunden_Brenner_MIN:=
Betriebsstunden_Brenner_SEC/60;

METER_STAT_Betriebsstunden_Brenner(
IN:=UDINT_TO_REAL(Betriebsstunden_Brenner_MIN) ,
DI:=SDT_TO_DATE(TimeSTD) ,
RST:=FALSE,
Last_Day:=Betriebsstunden_Brenner_Last_Day ,
Current_Day:=Betriebsstunden_Brenner_Current_Day ,
Last_Week:=Betriebsstunden_Brenner_Last_Week ,
Current_Week:=Betriebsstunden_Brenner_Current_Week ,
Last_Month:=Betriebsstunden_Brenner_Last_Month ,
Current_Month:=Betriebsstunden_Brenner_Current_Month ,
Last_Year:=Betriebsstunden_Brenner_Last_Year ,
Current_Year:=Betriebsstunden_Brenner_Current_Year );

METER_STAT_Betriebsstunden_Brenner_Current_Day_global:=
Betriebsstunden_Brenner_Current_Day;

ONTIME_Betriebsstunden_Zirkulationspumpe(
IN:=Zirkulationspumpe_laeuft_global ,
RST:=FALSE ,
SECONDS:=Betriebsstunden_Zirkulationspumpe_SEC ,
CYCLES:=Zyklen_Zirkulationspumpe);

Betriebsstunden_Zirkulationspumpe_MIN:=
Betriebsstunden_Zirkulationspumpe_SEC/60;



METER_STAT_Betriebsstunden_Zirkulationspumpe(
IN:=UDINT_TO_REAL(Betriebsstunden_Zirkulationspumpe_MIN) ,
DI:=SDT_TO_DATE(TimeSTD) ,
RST:=FALSE ,
Last_Day:=Betriebsstunden_Zirkulationspumpe_Last_Day ,
Current_Day:=Betriebsstunden_Zirkulationspumpe_Current_Day ,
Last_Week:=Betriebsstunden_Zirkulationspumpe_Last_Week ,
Current_Week:=Betriebsstunden_Zirkulationspumpe_Current_Week ,
Last_Month:=Betriebsstunden_Zirkulationspumpe_Last_Month ,
Current_Month:=Betriebsstunden_Zirkulationspumpe_Current_Month ,
Last_Year:=Betriebsstunden_Zirkulationspumpe_Last_Year ,
Current_Year:=Betriebsstunden_Zirkulationspumpe_Current_Year );

METER_STAT_Betriebsstunden_Zirkulationspumpe_Current_Day_global:=
Betriebsstunden_Zirkulationspumpe_Current_Day;


26
Modulentwicklung / Re:Email versenden aus TwinCat (CX9000)
« am: 16. Dezember 2009, 18:32:05 »
Hallo,

erst mal vielen Dank für Euere Mühe.

Hört sich interesant, aber auch (für mich) kompliziert an.
Ich schon auf die von peewit erwähnten Erweiterungen gespannt.... Hoffentlich komm ich dann klar!?!?!
Aber ich habe ja Euch.... :) :)

Grüsse

good_mike

27
Modulentwicklung / Re:Email versenden aus TwinCat (CX9000)
« am: 15. Dezember 2009, 09:34:32 »
Hallo,

vielen Dank für die schnelle und kompetent Antwort!!

Ich habe mir einen "workaround" überlegt. Evtl. ist das einfacher zu realisieren:

Über den Aufruf einer bestimmten URL kann man z.B. bei SMS4.de einen SMS wegschicken und könnte so einen Alarm von meiner Steuerung übermitteln.
(Anleitung: http://www.sms4.de/cgi-bin/sms_http.pl).)

Hat jemand eine Idee wie man so etwas macht....
Ich habe in der OSCAT Doku schon Info's bezüglich URL Aufrufen gefunden, kann das aber nicht so recht einordnen, da ich in dieser Hinsicht noch ziemlich am Anfang stehe. Aber ich denk mir immer "Auch Zwerge haben mal klein angefangen... :-))"

Manuell, durch Eingabe der entspr. URL in den IE, hat's schon funktioniert.

Nochmals vielen Dank an alle die sich in diesem Forum und im gesamten OSCAT-Bereich engagieren. Einfach Spitze!!

good_mike

28
Modulentwicklung / Email versenden aus TwinCat (CX9000)
« am: 14. Dezember 2009, 21:05:31 »
Hallo,

ich möchte mit meinen CX9000 Email's versenden um z.B. um Fehler oder bestimmte Zustände meiner (Haus-)Steuerung zu übermitteln. Bei Beckhoff habe ich die .LIB   
TwinCAT SMS/SMTP Server CE gefunden, mit welcher das funktionieren soll. Diese ist aber kostenpflichtig. Gib es einen kostenfreie Alternative mit OSCAT??

Schöne Grüß und besten Dank im Vorraus.

good_mike


29
VIELEN DANK!!!! - Hat funktioniert  :) :)

Grüße
good_mike

30
Hallo Leute,
habe schon 3 Abende (Nächte) rumgemacht und ich komme nicht weiter......
Ich habe selbst schon an der oscat.lib rumgebastelt, aber dafür bin ich "zu doof".. Wenn ich (aus meiner Sicht) unnnötige Dinge rausnehme kommen nur Fehler und ich dreh mich im Kreis,
Wenn ich unter Übersetzungsoption die Unbenutzen ausschließen möchte, dann ist der Button "gegrayed".
Was kann ich noch machen um OSCAT auf meinem BX zum laufen zu bringen.
Habe noch einen CX9000 in einer anderen Anwendung, aber für die 8 Rollos möchte ich eigentlich keinen CX verwenden....

Falls jemand helfen kann, schon mal VIELEN DANK!!!

Gruß
good_mike

Seiten: 1 [2] 3