Uhrzeit aus S7-300 auslesen, was mache ich falsch?

DannyNRW

Level-1
Beiträge
49
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leutz,
zunächst einmal möchte ich alle herzlich grüßen, die hier unterwegs sind.
Habe das Problem, daß ich es nicht schaffe, die Uhrzeit aus meiner 313er-CPU auszulesen. Habe hier wirklich schon einiges darüber gelesen und muß dazu sagen, daß meine S7-Kenntnisse nicht gerade die besten sind.
Habe auch schon versucht, die AWL-Quelle aus der Hilfe des Simatic-Managers zu kompilieren, doch hier bricht er dann ab, einmal
bei PDT (Parameter gehört nicht zum passenden Baustein), das gleiche bei CDT.
Hab hier auch schon noch einige Beispiele gesehen, die will ich auch noch ausprobieren. Aber dazu mal eine Frage. Lässt sich die Uhrzeit nicht ganz einfach NUR mit dem SFC1 auslesen? Würde ihn gerne einfach erstmal in FUP richtig beschalten können und dann kann man darauf ja weiter aufbauen.
Danke schon mal an alle.
Beste Grüße aus NE :).
Daniel
 
Warum willst du das unbedingt in FUP programmieren? Du kannst den SFC1 in FUP genauso aufrufen wie alle anderen FCs usw. auch. Und dann schreibst du halt deine Variable am CDT:)
 
Warum willst du das unbedingt in FUP programmieren? Du kannst den SFC1 in FUP genauso aufrufen wie alle anderen FCs usw. auch. Und dann schreibst du halt deine Variable am CDT:)
Weil fielleicht FUP leichter ist?
Die Parameter sind bei beiden Programmierarten gleich.
Du musst die Eingangs- und Ausgangsparameter richtig definieren.
Füg dir den SFC ein und drücke dann die F1 Taste, da sagt dir der Siemens was wie beschalten werden muss oder verwende hiermal die SuFu und du wirst einige schöne Beispiel sehen, die dann einfach abtippen kannst.



bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hab ich ja schon probiert...
Also nochmal, ich habe jetzt einfach meinen SFC1 in meinen FC1 reingepackt, an den Eingang einfach E0.0 negiert und bei ret_val eine Variable vom Typ Integer erzeugt. Das nimmt er soweit auch an.
Nun will ich gerne an Out0 eine Variable vom Typ Date_And_Time anfügen, doch dies wird immer negativ quittiert, d.h. der Text bleibt rot (Unzulässige Parameterversorgung für Out0).
Wie gesagt, ich habe nicht die besten Kenntnisse, was S7 angeht. Aber was nicht ist, das kann ja vielleicht noch werden ;).
 
Hallo,
wo hast du diese Date_Time-Variable den angelegt ?
Hast du sie symbolisch an den SFC übergeben ?

Gruß
LL
 
Danny

So wie ich das verstehe bereitet Dir der Datentyp DATE_AND_TIME wohl ein Problem.

Für Deinen Versuch kannst Du z.B. so vorgehen:

1. Erstelle einen Datenbaustein (z.B. DB10) und lege eine Variable mit dem Namen z.B. "Uhrzeit" vom Datentyp DATE_AND_TIME (über die Tastatureingeben oder mit rechter Maustaste auswählen) und eine zweite Variable mit Namen "Status" vom Datentyp INT
2. Im Versuchs-FC die SFC1 aufrufen (geht natürlich auch in FUP) und am Ausgang RET_VAL die Variable DB10."Status" und am Ausgang CDT die Variable DB10."Uhrzeit" anschalten
3. beides downloaden und testen z.B. mit einer Variablentabelle.

EDIT:
Ah ja, als Tip, nimm doch die SFC1 nochmal aus der Bibliothek (damit Du eine richtige Version des Bausteins hast)

Markus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Dir erstmal, so wie Du das beschrieben hast, hat das auch geklappt.
Wird Datum/Uhrzeit denn in der Beobachtungsansicht im DB nicht ständig von alleine aktualisiert?
Hab auch mal mit der Variablentabelle versucht, das ganze so zu beobachten, daß Datum/Uhrzeit ständig aktualisiert wird, ging leider auch nicht so ganz. Die Daten im DB werden aber ständig aktualisiert, das steht fest *freu*.
Der SFC1 aus der Bibliothek sah übrigens etwas anders aus als der SFC1 von der CPU...
Werd nun mal n bissl weiterprobieren und darauf hinarbeiten, daß ich mal nen Ausgang zu einer bestimmten Uhrzeit setzen kann.
Beste Grüße aus NE :).
Daniel
 
Was soll ich sagen, wer lesen kann, ist klar im Vorteil ;). Habe wohl übersehen, daß es sich hier um 8 komplette Bytes handelt, die belegt werden. Habe also mittlerweile auch die Daten umwandeln können und mittels Vergleicher dann auch mal zu einer bestimmten Minute einen Ausgang gesetzt :).
Vielen Dank nochmal :-D.
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, danke Dir :). Hat eigentlich jemand Erfahrungen mit den Rechenmöglichkeiten einer S7? Sin, Arcsin, Division, Multiplikation usw. ...
Muß dazu mal etwas weiter ausholen. Und zwar geht es eigentlich um ein Abschlussprojekt der Technikerschule und da haben wir also nun die Aufgabe, Straßenbeleuchtung zu bestimmten Zeiten ein- und auszuschalten, das ganze zudem visualisiert über ein Touchpanel (angebunden via Profibus). Das ganze mag vielleicht nicht sonderlich schwer klingen, auch der Ingenieur bei uns auf der Arbeit hat schon die Nase gerümpft --> *ROFL*.
Abhängig ist die Ein-und Ausschaltzeit zunächst mal von einem Dämmerungsschalter und wenn dieser nicht funktioniert, soll in zweiter Instanz eine Astrouhr greifen (Daher meine Frage nach Berechnungsmöglichkeiten der S7), die wir bis jetzt hardwaremäßig haben. Mein Ziel ist es aber, zu versuchen, das ganze auch softwaremäßig mit der S7 hinzubekommen. Hab mir die Formel für Sonnenauf- und untergang auch schon angesehen, sieht nicht gerade aus als wäre das nicht eines Technikerprojektes würdig. Hoffe ich bekomme das irgendwie hin ohne viel "rumzuklauen" ;).
Bin da für gute Tipps immer zu haben :).
Beste Grüße aus NE :).
Daniel
 
Danke Euch schon mal :).
Bin inzwischen ein ganzes Stück weiter und hab nun einen Baustein, mit dem ich die Tageszahl bestimmen kann (von 1-365, Schaltjahr vernachlässigt). Nun zu der Sache mit der softwaremäßigen Astrouhr. Ich habe schon den ersten Teil der Formel ausrechnen können, die "Deklination der Sonne". Wie läuft das eigentlich mit den temporären Variablen? Können hier irgendwelche Konflikte entstehen? Er sagt mir z.B., daß eine Variable bei Adresse 0.0 anfängt... Ist diese Adresse auf Merker bezogen oder wie habe ich das zu verstehen?
Außerdem konnte ich beobachten, wenn ich den Sinus von 3,87002 ermitteln will, daß ein falsches Ergebnis herauskommt. Hat sowas auch schon jemand beobachten können? Bin das ganze dann umgangen, indem ich einfach sin durch Winkel*Pi/180 ersetzt habe. Hab also mehr oder weniger zu Fuß gerechnet. Das richtige Ergebnis kam dann auch heraus.
Bin guter Dinge, daß die Astrouhr funktionieren kann.
Gute N8@ all :).
Daniel
 
Hallo,
Wie läuft das eigentlich mit den temporären Variablen? Können hier irgendwelche Konflikte entstehen? Er sagt mir z.B., daß eine Variable bei Adresse 0.0 anfängt... Ist diese Adresse auf Merker bezogen oder wie habe ich das zu verstehen?
Die Lokalvariablen bitte sofern möglich niemals absolut adressieren (also = L.0.0 oder so) sondern immer symbolisch verwenden. Dann ersparst du dir auf jeden Fall Probleme. Des weiteren bitte berücksichtigen, dass dein Baustein sich deren Inhalte nicht von Zyklus zu Zyklus "merkt". Der Inhalt ist bei einem neuen Zyklus zufällig - das stellt aber kein Problem dar, wenn du sie immer zuweisst bevor du sie weiter verwendest.

Außerdem konnte ich beobachten, wenn ich den Sinus von 3,87002 ermitteln will, daß ein falsches Ergebnis herauskommt. Hat sowas auch schon jemand beobachten können? Bin das ganze dann umgangen, indem ich einfach sin durch Winkel*Pi/180 ersetzt habe. Hab also mehr oder weniger zu Fuß gerechnet. Das richtige Ergebnis kam dann auch heraus.l
Sinus, Cosinus etc. arbeiten im Radianten-Mass und nicht im Grad-Mass - deshalb Winkel * Pi / 180.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt ist mir doch ein Fehler unterlaufen beim Rechnen, hätte die Umrechnung wohl gar nicht machen brauchen, denn das Ergebnis der "Deklination der Sonne" wird doch tatsächlich in RAD ausgegeben, wer lesen kann, ist klar im Vorteil ;).
Aber nochmal zu den Temporärvariablen: Wie kann ich das machen, daß ich "symbolische" Variablen verwende anstatt direkte Adressierungen?
Beste Grüße aus NE :).
Daniel
 
... und das mit dem # kannst du dir auch noch sparen. Einfach den Variablen-Namen mit der richtigen Opration eingeben (das # wird dann von Step7 automatisch gesetzt).
 
Zurück
Oben