Hallo Wolfgang,
als 1. möchte ich hierzu bemerken, dass ich in Zukunft nicht mehr weiter
zu diesem Thema schreiben werde; es sei denn, jemand hat eine direkte
Frage an mich.
Also /ich/ sicherlich nicht.
Derjenige darf mich dann direkt ansprechen.
Ohhh, wie gnädig. SCNR
Der Rahmen hier wird eindeutig gesprengt.
Warum hast du das Thema dann überhaupt angesprochen? Noch dazu, da es
dem OP eigentlich um etwas völlig /anderes/ ging, nämlich um ein
einfacheres /Handling/?
*Alle* Daten, sogar Texte, werden intern binär abgelegt. Und Calc selbst
kennt überhaupt nur 3 Datentypen, nämlich String aka Text, Integer und
Gleitkomma aka Double.
Jep,
aber nur bedingt richtig "Wahrheitswert" (BOOL) hast Du unterschlagen...
Nein; bool ist genauso nur ein Integerwert (0=falsch, alles
andere=WAHR); probiers aus.
Das ist dann in etwa das selbe, wie wenn ich für jeden einzelne Fahrgast
einen Bus mit 60 Sitzplätzen auf die Reise schicke - wirklich sehr
effizient!
Ja, es ist in der Tat sehr effizient, wenn er mit möglichst nur einem
einzigen Programm möglichst viele Bedürfnisse erfüllen kann. Das gilt
sowohl für den Softwareautor, der dann auch nur ein einziges Programm
warten und pflegen muss, als auch für den User, der sich dann lediglich
in die Bedienung eines einzigen Programms einarbeiten muss.
Kein Wunder,dass die Prozessoren immer schneller werden und am Ende die
Berechnungswartezeit trotzdem nicht kürzer wird...
Hint: Der Haupteffekt eines Rechners mit höherem Rechentakt und/oder
mehr Kernen stellt sich in der Regel so dar, dass er halt mit höherem
Rechentakt und/oder mehr Kernen auf die nächste Eingabe des Users
wartet. Die Auswirkungen auf die Rechenzeiten sind, von wenigen
Ausnahmen wie z. B. rechenintensivem Rendering o. ä. abgesehen, marginal.
Wenn das, was Du hier sagst richtig ist; das die Zeiten in Calc in
Fliesskomma-Werten hinterlegt sind; dann werden bei gewissen
Rechenoperationen unweigerlich Fehler auftrete.
Tut es, ja. Allerdings so weit hinten, dass das nur sehr selten auf
fällt. Aber gelegentlich tut es das; such mal im Archiv (siehe Footer)
nach dem Thread "CALC: Uhrzeit wird beim Kopieren mit Maus falsch
berechnet" vom 3.12.2019.
Auch das ist nur bedingt richtig. Wenn man kurze Zeiten zuerst dividiert
und erst anschliessend multipliziert, kann es schon es erheblichen
Rundungsfehler führen...
Sachichdoch; aber wie oft passiert das?
Für eben solches aber benutze ich z.B. Calc, da ich unter Anderem in der
Netzfrequenzen die Abweich-Toleranz im Drehfeld in Winkel° berechnen muss...
(Synchronisation von Generatoren)
Ja, man kann ein Tabellenkalkulationsprogramm eben zu vielem
miss^Wgebrauchen.
Nicht gerade das Gesuchte. In INT würde solches nie auftreten. Auf
Leitsystemen mit Echtzeiteinträgen ist es Bedingung, dass die
Zeitstempel kohärent sind!
Ähm; dir ist aber schon bewusst, was das Wort "kohärent" wirklich
bedeutet, oder?
Im Zusammenhang mit Zeit sicherlich ein passender Begriff, wenn man
Gleichtakt, Phasengleichheit darunter versteht...
Beschreibungen wie Gleichtakt, Phasengleichheit usw. sind aber nur
*Interpretationen* der Bedeutung von Zahlenwerten; Calc kennt nur die
Zahlenwerte an sich; wie der User diese interpretiert ist ihm wurscht.
Trotzdem muss ich mich wiederholen mit der Frage, was das alles mit Calc
zu tun hat. Hint: Cals ist ein Tabellenkalkulationsprogramm, kein
Transportprotokoll (und schon gar kein serielles).
Die Frage ist immer noch die Selbe:
Warum wurde der Zeitstempel bei Calc in eine REAL hinterlegt?
Nochmal ganz langsam zum Mitdenken: Es ist kein REAL sondern ein DOUBLE;
64-bit, nicht 32-bit.
Dar Programmiere muss doch einen triftigen Grund dafür gehabt haben...
Ja, hat es; sogar mehrere. Der erste ist, dann die heutigen, modernen
Rechnerprozessoren überrachenderweise bereits standardmäßig einen
Fließkommaprozessor eingebaut haben, der i.d.R. genauso schnell, oft
sogar schneller, Flißkommarechnungen durchführen kann als die Haupt-CPU
Integeroperationen ausführt. Der zweite ist, dass es vielleicht eine
geistige Anstrengung für manche Menschen darstellen mag, aber überhaupt
kein Probleme für die heutzuage üblichen Universalrechenkerne, Zeiten
repräsentierende Werte so zu interpretieren, dass der Vorkommaanteil
eben /ganze/ Tage, und der Nachkommanateil /Bruchteile/ von Tagen
darstellen; genau so wie Minuten nur Bruchteile von Stunden sind,
Sekunden nur Bruchteile von Minuten, Millisekunden nur Bruchteile von
Sekunden, usw.
Das folgende hat nun tatsächlich gar nichts mit Calc zu tun,
Ja.
ausser dass
die daraus resultierende Daten via OPC in eine Tabelle auf dem Server
eingetragen und als Graphik ausgegeben werden.
Nein, auch das hat nix mit Calc zu tun; was du da beschreibst ist ein,
ich möchte schon fast sagen, Missbrauch, eines
Tabellen*kalkulations*programms zum Zwecke der *grafischen* Darstellung.
Ja, klar, kann man machen, warum auch nicht? Schließlich *kann* es das
/auch/; als *ein* Feature unter *vielen*. Aber ihm deswegen vor zu
werfen, dass es sich bemüht, möglichst viele Bedürfnisse zu erfüllen,
anstatt sich optimal an ausschließlich die speziellen Bedürfnisse an zu
gepassen, die *du* für *deine* Anwendung als billiges /Frontend/
benötigst, ist schon sehr, hmmm ..., gewagt. Wenn dir Calc als Frontend
für deine Anwendung nicht passt, dann schreib dir dein eigenes; und lass
dir dein Geld für Calc zurück geben. Sorry.
Das was ich hier einkopiert habe ist ein Konvertierungs-Funktionsblock,
welcher in eine übergeordnete System-Programmierung eingebunden wird.
Leider gibt es drei Konventionen für die serielle Übertragung die auf
das im Empfänger genutzte Protokoll umgeschrieben werden muss; das Rad
wird halt immer wieder mal neu erfunden.
Und was bitte hat das mit Calc zu tun?
Die Konvertierung von Datenformaten ist in allererster (und auch
zweiter, dritter und vierter) Linie eine Sache des
Komunikationsprotokolls. Und das hat nix mit Rad neu erfinden zu tun,
sondern mit Kommunikation.
Und ich habe selber schon, neben 'normalen' Programmen, auch mehr als
nur eine Hand voll Gerätetreiber geschrieben; in Hochsprachen, und wo es
nötig war auch in Assembler (wenn ich auch, zugegeben, noch nix mit SPS
zu tun hatte). Also erzähl nem Affen nicht, dass die Banane krumm ist.
Wolfgang