B&R PP420 + 2003 Zeitsteuerung programmieren

techserv

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused:

Bin bei meinem Projekt welches momentan zu 100% in KOP programmiert wurde in einer Sackgasse gelangt.
Ihr könnt mir sicher weiter helfen:
Es handelt sich um eine Heizungssteuerung. Grob gesagt soll eine variable (sagen wir mal "heizen") auf ein gesetzt
werden, wenn sich die Systemzeit zwischen den eingegebenen Zeiten befindet.

Zeitbetrieb.JPG

Hier die mögliche Visualisierung, momentan ist hier die Eingabe von 12 Variablen möglich (h1,h2,...h6 und m1,m2,...m6) ... wenn ein
anderes Eingabeformat von Vorteil ist so bin ich für alles offen.

Mein Problem fängt schon dabei an dass ich nicht weiß wo ich die Systemzeit in welcher Form auch immer finde.

Vielen Dank im Voraus!
 
Hallo techserv,

unter der Library AsTime gibt es Funktionen um die Systemzeit auszulesen.
Die Hilfe des AS Studio ist auch sehr hilfreich.Die Funktion "DTGetTime" liefert die Systemzeit im Format
DATE_AND_TIME (DT#1970-01-01-00:00:00).
Die Eingabewerte von der Visu sollten in das Format DATE_AND_TIME gewandelt werden, dann kann man die Zeiten einfach vergleichen
und den Ausgang setzen.

mfg

adi5
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo techserv,
nur um das ganze etwas abzurunden.
Bei Zeitschaltuhren ist es bisweilen vonnöten, gewisse Schaltvorgänge vom Wochentag anhängig zu machen um etwa Samstag und Sonntag
anderst zu behandeln.
Zu diesem Zwecke kann der Wert der von der DTGetTime geliefert wird, mit der Funktion DT_TO_DTStructure in eine Struktur umgewandelt werden,
deren Komponenten Jahr, Monat, Tag, Stunde, Minute, Sekunde und auch den Wochentag beinhalten.

Grüße
 
Danke für die Ansätze ...
hab die Funktionsblöcke in der Library gefunden und und einfach mal im KOP veranschaulicht ... DTGetTime ....
Im Projekt wird automatisch die Library astime hinzugefügt -> übertragen ... und nix geht mehr ...
PP startet immer wieder neu bzw. geht dann in SERV Mode .... habe mir den Logger angesehen und es kommt der Fehler
page fault ... habe dann die Bibliothek astime gelöscht und übertragen und hurra läuft wieder .... irgendwas is da nicht up to date ;o)
(Arbeite mit AS2.7 Hab zwar auch mittlerweile 3.0.90 hab aber Probleme beim Öffnen bzw. Konvertieren)

Mit DTtoDTScruct ... bekomm ich UDINT raus ... wo sind die einzelnen Variablen day hour .... (wahrsch. blöde Frage).
 
Hallo techserv,
ja ja der Service-Mode. Kommt immer wieder mal gerne vorbei.
Page fault deutet meist auf ein Problem beim Speicherzugriff hin. adr()...

DTGetTime(1,status,Zeit)
DT_TO_DTStructure(Zeit,adr(t))

status UINT
Zeit DATE_AND_TIME
t ist eine Struktur, deren Typ in der astime Bibliothek zu finden ist
also beim Deklarieren von t von den Basisdatentypen auf Strukturtypen umschalten
und zur astime Library durchklicken. hier gibt es dann die DTStructure

Danach sollte die Variable t aus den Komponenten t.day bis t.weekday bestehen.
So ist es in der AS 3.x oder AS4.x in dewr 2.7 ist es etwas anderst, habe aber gerade keine installiert.
Falls es nicht klappt, dann schreib es und ich schau mal nach.

Gruß
Schneetreiber
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich wurde die Verwendung von Studio 3x empfehlen.

Hier gibt es wenn eine Kalender Struktur gewünscht ist die Funktion DTStructureGetTime.

Dies Funktion kann z.B so in St aufgerufen werden:

DTStructureGetTime_2(enable :=TRUE , pDTStructure :=ADR(DT1) );

Varible DT1 muss vom Type DTStructure sein.
Varibale DTStructureGetTime_2 vom Type DTStructureGetTime.

Die Struktur DT1 sieht so aus:

Unbenannt.JPG

Ob dies auch für Studio 2.7 funktioniert muss noch geprüft werden.

Gruß

adi5
 
Hallo,

hab nochmals nachgschaut also bei Studio 2.6 konnte ich die Funktion DTStructureGetTime leider nicht finden.
Studio 2.7 hab ich leider nicht.
 
Hallo,
den FUB gibt's im AS2.7. Brauchst aber bestimmte AR Version. Laut Hilfe min 2.60 (Generell für die Lib). Ich habe es bei 2.95 nachgeschaut, da war der FUB enthalten. Bei SG3 CPU war es in AR 2.3 nicht enthalten.
Da es aber ein PP400 =SG4 ist sollte es den FUB bei einer AR 2.95 auch bei dir geben.


EDIT:

Hab doch was in der Hilfe gefunden... musste nur mal richtig lesen ;)

Für die Funktionsblöcke

- UtcDT_TO_LocalDTStructure
- LocalDT_TO_UtcDTStructure
- UtcDTStructure_TO_LocalDT
- LocalDTStructure_TO_UtcDT
- UtcDTGetTime
-
UtcDTSetTime
- UtcDTExSetTime
- DTStructureGetTime
-
DTStructureSetTime
- DTStructureExSetTime
- UtcDTStructureGetTime
-
UtcDTStructureSetTime
- UtcDTStructureExSetTime
- TimeDeviceGetInfo
-
DstGetInfo

gelten folgende Systemvoraussetzungen:

Unterstützte PlattformenSG3 SGCSG4
Betriebssystemanforderungn.V.n.V.mind. AR B2.95
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
(Danke für die Hilfe ... hab AR 2.95)

Bitte die angehängten Bilder öffnen:

... die Zeit kann ich nun einlesen mit DTGetTime - die Library zwingt die Steuerung nun nicht in die Knie - JUHU


Da ich ja aber eine Struktur ... also einzelne Variablen mit hour, minute, day, etc. benötige, möchte ich
aber den Funktionsblock DTStructureGetTime anwenden:

1) Was muss hier beim Zeiger pDTStructure eingeben? (siehe Screenshot) ... wenn ich nichts eingebe bekomme ich die Fehlernummer 33210 (timERR_INVALID_PARAMETER lt. Hilfe)

2) Bei der Weiterverwendung von t.hour kommt die Fehlermeldung "Element der Struktur wurde nicht im Ausdruck t.hour deklariert!" .... warum?
Wenn ich mich jetzt in die Deklaration (rechts begebe dann kann ich außer t nichts deklarieren ... habe gedacht die Struktur ist bereits standardmäßig deklariert? z.B. hour=USINT?
Auch im Watch kann keine derartige Variablen finden oder anzeigen lassen.

DTStructure0.jpgDTStructure.jpg

Wunschvorstellung: Ich möchte aus dem Funktionsblock "DTStructureGetTime" (oder ähnlich) einzelne Variablen wie hour, minute und wday haben, so wäre die Angelegenheit gelöst ... so schwer kann es ja ned sein ;)
 
Zuletzt bearbeitet:
Wede es morgen mal testen. Muss allerdings erst mal KOP probieren. Bisher nie gebraucht.
Dein AS ist 2.7 und das AR 2.95? Korrekt so? (Nur zur Sicherheit.)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, jetzt aber.
Musste erst ne virtuelle Umgebung einrichten um AS2.7 zum Laufen zu bewegen.
Ich habe in KOP soweit alles hinbekommen, einzig die Adressangabe an den DT_TO_DTStructure-Block klappt nicht.
In der Hilfe zum AS3.0.90 steht zum Adressoperator in KOP:

Ermittelt die Adresse eines Datenpunkts.
Es können nicht nur die Adressen von Variablen festgestellt werden, sondern auch die Adressen von Feld- oder Strukturelementen. Verfügbar ab Automation Studio Version 3.0.71.

Ich denke also, in KOP (bzw. LD) klappt das nicht.

In AB ist es nur ein Dreizeiler. t ist vom Strukturtyp DTStructure.
DTGetTime_0.enable= True
DTGetTime_0 FUB DTGetTime()
DT_TO_DTStructure(DTGetTime_0.DT1,adr(t))

Getestet habe ich es nicht, habe keine Hardware. Und wie mann es simuliert führt im AS2.7 zu weit.

Gruß
 
Bin im Urlaub und kann deshalb gerade nicht nachsehen.
(Bin nicht so wahnsinnig auch zu Hause B&R zu programmieren.)
Sobald ich wieder im Betrieb bin schaue ich mal nach ob mein altes Laptop mit der AS2.7 noch läuft.
Dann schau ich mal wie die Struktur da hingedröselt wird.
Grüße
 
Zurück
Oben