UNIX TIMESTAMP

Begonnen von philipp, 27. April 2016, 17:27:42

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

philipp

Hallo,

meine Frage ist der Grund für die Anmeldung bei diesem doch sehr gutem Forum. Ich hoffe ich kann in Zukunft etwas beitragen.

Nun zu meiner Frage:
Ich arbeite in CodeSys 2.3 mit Zielsystem WAGO 750-881.  Ich übertrage Daten an einen Server per http_post, eine lib von wago. darin muss ich einen UNIX TIMESTAMP mit übergeben.

Leider gibt es keine funktion, die mir den UNIX TIMESTAMP einfach ausspuckt. Ich habe hier und im restlichen Internet leider keinen Beitrag dazu gefunden, mit dem ich arbeiten kann.

Vielen Dank für Hilfe und Hinweise :)


peewit

#2
in der sps wird datum/zeit normalerweise als DT Datentype verarbeitet

das ist ein 32bit wert der die anzahl der vergangenen sekunden seit 1.1.1970 00:00:00 angibt

das ist exakt die unix-time

du kannst mit sämtlichen system und oscat bausteine arbeiten die mit einem DT-Datentyp umgehen können
wenn die dann einfach DT_TO_UDINT machst dann erhältst du genau die unix-time als 32 bit wert


philipp

danke schrimps! das funktioniert tatsächlich in einer Zeile! mir fällt ein stein vom herzen  ;)
und danke peewit für die erklärung.

nun wie schon in der #1 erwähnt, ich muss den unix-timestamp als STRING weitergeben. wenn ich DWORD_TO_STRF(curTimestamp,9); schreiben will und dafür die DWORD_TO_STRF einbeziehe, bekomme ich Fehler 4001 'Fix' nicht deklariert und 4025 kein korrekter Anfang für eine ST anweisung.
dieser fehler taucht auch dann auf, wenn ich die zeile Code auskommentiere, komischer weise.

shrimps

Hi,
mühsam ernährt sich das Eichhörnchen:
Die Funktion FIX ist ggf. auch eine OSCAT-Funktion, also einbinden...
Ich habe mir den Code der dword_to_strf mal angesehen:
Ich glaube, für deinen Lernvorgang ist ggf. eine andere Option drin:
Du wandeslt das DWORD in einen String um, schau mal womit du es machst, egal womit...
Nun kannst du entscheiden, ob er dir so schon reicht oder er eine feste Länge benötigt.
Falls er vorne oder hinten aufegfüllt werden muss, so empfehle ich dir CONCAT.
Der ist allgemein bekannt und mit dem bekommst du das hin...

Viel Erfolg
Shrimps

shrimps

Habe das mal nachgestellt:
System: Twincat 2.x (identisch mit Codesys 2.x)

PROGRAM MAIN
VAR
Test: DT:=DT#2013-01-01-00:00:00;
timestamp_Test: DWORD;
druck : STRING;
END_VAR

timestamp_Test := DT_TO_DWORD(Test);
druck := DWORD_TO_STRING(timestamp_Test);


Viel Spaß
Shrimps


[gelöscht durch Administrator]

philipp

Shrimps(!), super und vielen DANK!

ich komme von anderen Programmiersprachen und es ist tatsächlich eine mühsahme Ernährung, die sich hier abspielt. allerdings ist es extrem reizvoll Steuerungen zu programmieren  :)

shrimps

Hallo philipp,
ich bin auch erst seit 1,5 Jahren in die SPS-Welt eingestiegen.
Bin sonst in der Mysql / Script / diverse Welt unterwegs.
Da ich aber früher eine techn. Ausbildung genossen hatte mit programmierbaren Steuerungen (HP-Laborsysteme etc)
kannte ich diese Welt ein wenig.

Nun macht es mir extrem viel Spaß so kleine SPS´sen at Home zu "quälen"...
Siehe Fischertechnik Roboter von mir und mene Pelletheizungssteuerung.
Aktuell möchte ich einen 6-achsen Roboterarm (ebay saintsmart) via serieller Schnittstelle steuern.
RC-Servo hört schon auf die ersten Kommandos...
Zusätzlich habe ich gerade erfolgreich mein tcl-Script auf meiner Homeatic dazu gebracht mir meine Ventilöffnungen via Modbus in meine SPS zu schreiben.

Was man da alles falsch machen kann... 8)

LG
Shrimps

philipp

ja so ähnlich geht's mir jetzt auch nach 2 Wochen einarbeiten. womit kann ich denn am einfachsten anfangen kleine steuerungen kostengünstig zu bauen? der Rapsberry hat ja auch so GPIOs. der kann natürlich auch viel zu viel. so eine kleine programmierbare Steuerung, mit LAN/WLAN zugang, was schlankes halt wäre schön.
Vielleicht hast du direkt nen guten Tipp zur Hand für mich :)