Hallo, da ich Anfänger bin und gerage Praktikum mache hatte ich gedacht ich könnte mal hier um Rat fragen.
Mit einer SPS XV100 soll ich die Schiebetor und Schranke über eine in der SPS programmierte Schaltuhr zw. Mo-Fr öffnen und schliessen und Sa-So schliessen, da könnte doch eine Wochentimer helfen.
Außerdem soll an Feiertagen das Schiebetor zu sein, d.h dann eventuell eine Jahrestimer erstellen.
Wie könnte ich sowas erstellen, hat vielleicht einer eine Beipiel dafür.
Vielen Dank schon mal.
Hi,
da Du schon auf oscat.de bist, schau Dir mal die Bausteine an...
Damit kannst Du alles zusammenbauen was Du brauchst.
Einen Profi wird für Deine Aufgabe vielleicht nur 15 minuten brauchen, also... versuchs mal...
Grüße
Martin
PS: Bin selbst kein Profi ;-)
PSS: Bausteine: CALENDAR_CALC, TIMECHECK, TIMER_* (Diverse)
Hi,
danke, werde es mal mit den Bibliotheken probieren.
Gruß
Dann mal viel Erfolg und nicht zögern hier zu Fragen wenn was unklar ist.
Gruß
Martin
Hallo,
ich wollte die Zeitschaltuhr jetzt mit dem TIMER_4 der Oscat lib in CFC erstellen, wie kann ich dabei den Prog Eingang mit TIMER_EVENT programmieren.
Ich weiß nicht wie und wo ich die Vorgaben in die Struktur reinschreiben soll.
Über ein Rat würde ich mich freuen.
Danke.
Hallo
Ich habe Deklarationsteil folgendes für eine 3Kanal Tagesschaltuhr stehen.
PRGN : ARRAY[0..63] OF TIMER_EVENT := (TYP := 1, CHANNEL := 0, DAY := 1, START := TOD#22:00,DURATION := T#8h, LAND:=1,LAST:=1),
(TYP := 1, CHANNEL := 1, DAY := 1, START := TOD#20:00,DURATION := T#2h, LAND:=1,LAST:=1) ,
(TYP := 1, CHANNEL := 2, DAY := 1, START := TOD#10:30,DURATION := T#2h, LAND:=1,LAST:=1) ;
Der PROG Eingang von TIMER_P4 ist mit der Variable PRGN belegt.
Gruß NetFritz
Hallo NetFritz,
danke erstmal soweit ist mir das jetzt klar mit der Dekleration, nur noch eine Frage.
Ich will mit dem Ausgang Q0 eine Schranke steuern d.h. Channel=0, die um 6:00Uhr an den Werktagen für 4 Std aufmacht und um 18:00Uhr für 2Std.
Ist die folgende Dekleration dann korrekt.
PRGN : ARRAY[0..63] OF TIMER_EVENT := (TYP := 43, CHANNEL := 0, DAY := 5, START := TOD#6:00,DURATION := T#4h,0,0,0,TYP := 43, CHANNEL := 0, DAY := 5, START := TOD#18:00,DURATION := T#2h,0,0,Last:=1);
Später werde ich dann an Ausgang Q1 eine Schiebetor steuern. Wie wird das im TIMER_EVENT deklariert, damit für das Ereigniss auch Ausgang Q1 angesprochen wird.
Vielen Dank im Voraus.
Gruß
tuerker
Hallo
Zitat@tuerker
Ist die folgende Dekleration dann korrekt.
TYP:=43 ist richtig
DAY.=5 könnte entfallen
ob es mit LAND LOR LAST auch so geht ?.
Muss der 2 Teil nicht auch in Klammern stehen ?
Gruß NetFritz
Danke erstmal.
Ich habe es noch nicht mit den Klammern ausprobiert, weil ich die Initialiserung der Struktur nicht ganz verstanden habe.
Ich will alle Schaltausgänge schalten, aber verstehe immer noch nicht wie ich die deklarieren soll.
Ist mein Gedanke so richtig: Channel=0 schaltet => Ausgang Q0 ( mit bis zu 4 Kanälen )
Channel=1 schaltet => Ausgang Q1 usw.
Über eine Hilfe würde ich mich freuen.
Danke.
Gruß
Hallo
Die Datenstruktur TIMER_EVENT ist etwas dürftig in der Beschreibung.
Zitat@tuerker
Ist mein Gedanke so richtig: Channel=0 schaltet => Ausgang Q0 ( mit bis zu 4 Kanälen )
Channel=1 schaltet => Ausgang Q1 usw.
1 TIMER_P4 kann 4 Kanäle schalten Q0,Q1,Q2 u. Q3.
Maximal 63 unabhängig programmierbaren Ereignisse. (Ist sicherlich durch das Array begrenzt.)
Es können dabei beliebig viele Ereignisse je Kanal und auch
überlappende Ereignisse Erzeugt werden.
Jedes Ereignis muss sicherlich einzeln im ARRAY[0..63] stehen.
In meinem Beispiel ist dann ARRAY[0..3] belegt.
Deshalb muss jedes Ereignis einen einzelnen ARRAY Eintrag haben.
Die einzelnen Einträge sind in Klammern zusammengefasst und durch Komma getrennt.
Gruß NetFritz
Hallo,
erstmal danke. Die Beschreibung ist wirklich dürftig, man kann es wahrscheinlich nur durch probieren verstehen.
Ich teste es mal ob ich es hinbekomme.
Melde mich dann wieder.
gruß
Hallo,
kann das so wie in dem Screenshot funktionieren, ich bekomms in der Simulaton auch nicht zum Laufen.
Ich will die Ausgänge Q0-Q3 des Timer_p4 entsprechend dem Bild belegen, aber bei dem Holiday FB weiß ich nicht wie ich Feiertage initalisieren soll.
Könntet ihr euch Bitte mal das Bild und Projekt mal anschauen und mir helfen, muss als Praktikant so eine Aufgabe lösen. Und hier bei mir versteht auch niemand was davon, kann also niemand
was fragen.
Auf tipps freue ich mich sehr.
Danke und Gruß
[gelöscht durch Administrator]
Hallo,
mit Timer_P4 und Timer_2 funktioniert soweit alles, mit viel ausprobieren hat es geklappt.
Kann mir bitte einer sagen wie man mittels Visu die Parameter der Bausteine wie start,duration oder Feiertage eingeben und ändern kann.
Habe als Target den MicroInnovation XV100 Panel.
Wäre euch sehr dankbar.
Grüße
Hallo
Vielleicht kannst Du dein Projekt wen es läuft hier mal einstellen.
Gruß NetFritz
Hallo NetFritz,
so mein Timer_p4 läuft und kann 4 Kanäle schalten. Soweit so gut aber wenn ich jetzt mehrere Ereignisse pro Kanal eintrage funktioniert kein Ausgang
mehr. Ich weiß das ein Ereigniss nur einmal am Tag läuft, aber wenn ich neu downloade auf SPS gehts dann auch anschließend wieder.
1) An was kann es liegen, laut Doku sollen doch mehrere Erignisse pro Kanal möglich sein.
2) Wollte eine Visu erstellen um die Parameter wie Startzeit und Dauer pro Kanal einzugeben und Feiertage zu Aktivieren und hinzu zufügen, weiß aber nicht wie ich das machen soll.
Dafür müssten die als Globale Variablen definiert werden. Muss man dann auf die Strukturinhalte zugreifen?
Habe ein TouchPanel XV102 und ein CANopen Gateway mit 8DI/8DO an der ich dann die 4 Ausgänge steuere.
Danke schon mal.
Gruß
[gelöscht durch Administrator]
Warum bekommt man eigentlich in diesem Forum so selten Antworten auf Fragen.
Daher probiere ich es hier nochmal.
Ich benutze jetzt den Timer_2 für meine Aufgabe und will eine Visu dazu erstellen.
Wie kann ich die Timer_2 Eingänge wie Start,Duration,Mode in einer Visu ansprechen, es sind ja keine Globalen Variablen.
Und zuletzt, wie kann ich auch noch die Feiertage des Holiday Bausteins in einer Visu für meine Bedürfnisse ändern und drauf zugreifen.?
Danke.
hallo
Ich benutze jetzt den Timer_2 für meine Aufgabe und will eine Visu dazu erstellen.
Wie kann ich die Timer_2 Eingänge wie Start,Duration,Mode in einer Visu ansprechen, es sind ja keine Globalen Variablen.
die eingänge vom baustein timer_2 kannst du ja mit variablen deiner wahl belegen, lokal, global
Und zuletzt, wie kann ich auch noch die Feiertage des Holiday Bausteins in einer Visu für meine Bedürfnisse ändern und drauf zugreifen.?
die feiertage sind unter datentypen bei "constants_location" definiert und können dort angepasst bzw erweitert werden
Hallo peewit,
die Feiertage habe ich unter Datentypen angepasst, nur wollte ich auch über eine Visu/WebVisu die Feiertagseinträge ändern können. Weiß nicht wie das zu machen ist.
Die Timer_2 Eingänge habe ich lokal eingetragen und so läuft es auch prima, habe aber 5 Timer_2 Bausteine. Wie kann ich die Eingänge Global anlegen und dann in CodeSys Visu als Variable
einfügen.
Ich sitze zurzeit auf dem Schlauch und kann nicht richtig denken. :(
Danke nochmal.
[gelöscht durch Administrator]
warum willst du die feiertage über web editieren , die sollten doch immer gültig sein
die daten sind aber in einem mehrdimensionalen array abgelegt, somit wird es etwas komplizierter lesend mit visu darauf zu zugreifen
das feiertags datenarray ist als constante definiert somit kannst du sie zur laufzeit auch nicht ändern
ich kenne deine visu nicht und auch nicht die technischen möglichkeiten, aber das ist eher sehr kompliziert was du vorhast
--------------------
globale variablen:
unter ressourcen - globale variablen kannst du diese anlegen
in den bausteinen musst du diese nicht extra deklarieren, denn eine variable die lokal nicht bekannt ist, wird automatisch als globale angesehen
Danke.
Ok, hatte gedacht man könnte eventuell die Feiertage in einer Visu aktivieren oder deaktivieren. Wäre halt schön anzusehen und praktisch halt.
Dann passe ich halt die Feiertage unter Datentypen an und fertig.
Unter Ressourcen klar, habe nun das Problem das es 5 Timer sind.
Werde es versuchen richtig zu deklarieren und das für jedes Baustein. Melde mich wenn sich was ergibt.
Danke nochmal.
Ich hab mal dein Programm mit dem Timer_P4 auf TwinCat umgerubelt und es scheint tatsächlich ein Problem mit dem TIMER_P4 zu geben. Wenn man mehrere Ereignisse pro Kanal definiert, ist nur das letzte relevant. Wenn ich mir die Programmierung des Bausteins anschaue, ist das auch logisch, da beim Durchlauf des Arrays der jeweilige Kanal immer wieder überschrieben wird. Für den jeweiligen Kanal müsste eine ODER-Verknüpfung mit sich selbst programmiert werden, um den vorherigen Zustand zu berücksichtigen.
Lösung wäre z.B. vor der Schleife alle Ausgänge rücksetzen
ELSIF dtime <> last_execute THEN
(* prepare the logical input mask to be used later *)
qn[0] := FALSE;
qn[1] := FALSE;
qn[2] := FALSE;
qn[3] := FALSE;
mask := 255;
mask.0 := L0;
mask.1 := L1;
mask.2 := L2;
und dann
43: (* event on workdays Mo-FR and no holiday *)
qn[channel] := qn[channel] OR (DT_TO_TOD(dtime) >= event.START) AND (DT_TO_TOD(dtime) < event.START + event.DURATION) AND (NOT Holy) AND (DAY_OF_WEEK(DT_TO_DATE(dtime)) < 6);
prog[pos].LAST := current_day;
Muss natürlich für jeden Event-Typ gemacht werden.
Hallo Tom,
da es mit dem Timer_4 nicht richtig funktioniert hatte, bin ich auf den Timer_2 umgestiegen.
Mit dem Timer_2 klappt alles soweit, nur Visu mit dem Timer_2 klappt nicht. Weil ich 5 Timer habe, weiß ich nicht
wie ich die Eingänge aus einer Visu ändern kann.
:)Danke für deine Hilfe, schaue mir dein Programm mal an.
Gruß
Ich glaube, du hast da was falsch verstanden. Der Timer_P4 ist fehlerhaft, der Code ist ein Teil vom TIMER_P4 intern und für die Leute von OSCAT gedacht.
Ok, habs verstanden.
Dann sollen die vom Oscat Team mal sich den Timer anschauen.
Gruß