[Win95/98]Geruecht zur 'Echtzeit'-Ideen gesucht!

Hallo!
Ich habe vor kurzem gehoert das einige Leute es geschafft haetten, das „Echtzeitproblem“ unter Win 95/98 in recht guter Weise in den Griff zu bekommen. Dabei haben sie, so meine Quelle, ein externes Frequenzsignal (Sound- oder A/D-Karte) genutzt.
Natuerlich sei das nicht so berauschend, aber dort soll es moeglich sein, Daten in bestimmten Zeitabstaenden aus einem Peripheriegeraet zu lesen.
Da ich mir nicht vorstellen kann, meine Programmierkenntnisse sind nicht sehr gross, wie das funktioniert, wuerde es mich sehr freuen hier einen Hinweis(Idee) zu diesem Problem zu erhalten!
Vielen Dank fuer die Muehe im Voraus.
Tschuess
Lothar

Hallo!
Ich habe vor kurzem gehoert das einige Leute es geschafft
haetten, das „Echtzeitproblem“ unter Win 95/98 in recht guter
Weise in den Griff zu bekommen. Dabei haben sie, so meine
Quelle, ein externes Frequenzsignal (Sound- oder A/D-Karte)
genutzt.

Hm, klingt nach Quatsch. Das Problem ist nicht ein Frequenzsignal sondern einfach Tatsache, dass Windows sich reinreden laesst wann welcher Prozess wieviel CPU-Zeit bekommt. Die Problem liegt also im Betriebssystem-Kernel, nicht in irgendwelcher Peripherie.

Natuerlich sei das nicht so berauschend, aber dort soll es
moeglich sein, Daten in bestimmten Zeitabstaenden aus einem
Peripheriegeraet zu lesen.

Das sollte auch so gehen, wenn immer sichergestellt ist, dass das System nicht ausgelastet ist. Genau das ist eben das Problem: Windows garantiert nicht, dass CPU-Zeit wie angefordert (kann man nicht mak anfordern) zur Verfuegung steht. Das braucht Windows natuerlich auch nicht.
Echtzeit ist insbesondere wichtig um Hardware mit einem Computer zu steuern. Und mal ehrlich: Nur jemand der voellig meschugge ist wuerde Windows verwenden um sensible Hardwaresteuerungen laufen zu lassen - und nicht weils kein Echtzeitsystem ist.

Gruss

Thorsten

Hallo,
was ist bei Dir Echtzeit?
Hatte auch vor kurzem einen Artikel vor Augen,
in dem mit Auflösung von einigen Millisekekunden
gehandelt wurde.

Ich selbst wurde wieder auf den Boden der Tatsachen
zurückgeholt, nachdem mir ein Vertriebsmitarbeiter
eine AD/DA-Karte für WIN verkauft hat und dabei
behauptete man könne unter WIN95/98 mit spezieller
Software mit bis zu 50Khz Daten auf den DA-Kanal schreiben.
War völliger Quatsch. Einige Hz wären möglich.
Hab dann doch ne Karte + Treiber für DOS genommen.
Da sind einige 10KHz mit einem alten 486er kein Problem.
Gruß Uwi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

was ist bei Dir Echtzeit?
Hatte auch vor kurzem einen Artikel vor Augen,
in dem mit Auflösung von einigen Millisekekunden
gehandelt wurde.

Millisekunden??? Das bekommt fast jedes Betriebssystem hin, wenn es nicht ausgelastet ist. Da kann man ein Programm getrost in den Schlaf schicken und von Kernel nach einigen Millisekunden wecken lassen (geht z.B. in Aufloesung bis Microsekunden mit gewissen Funktionen zum lauschen an Named Pipes (besondere Dateitypen/Streams zur Komminakation von Programmen) - natuerlich nicht, wenn das System belastet ist). Das einzige was man dafuer braucht, ist ein multitaskingfaehiges Betriebssystem (was Windows nichtmal wirklich ist) und freie Systemressourcen. Eine Millisekunde ist fuer ein einfaches Programm meist ein Ewigkeit. Also mit z.B. Linux habe ich schon im Millisekundenbereich gearbeitet und das gilt nicht als echtzeitfaehig.
Echtzeit braucht man z.B. wenn man bestimmte Sensoren mit einer bestimmten hohen Abfragerate auslesen muss (z.B. fuer wissenschftliche Untersuchungen, oder um die Sensordaten zur Steuerung von Hardware zu verwenden … Roboter). Oder wenn man bestimmte ungepufferte Geraete kontinuierlich mit Daten fuettern muss (klassisches Beispiel CD-Brenner, aber da gibt es noch deutlich kleinlichere Teile).
Ich meine in modernen Rechnern laufen mit Gigaherz Takt 32 Bit Daten und Anweisungen durch. Da gehen in einer Millisekunde bis zu (32/8=) 3MB durch die CPU.

Gruss

Thorsten

Hallo,
wir arbeiten schon seit einigen Jahren mit einem System zur Prozessautomatisierung, das auf WIN NT aufsetzt und per zusaetzlicher Hardware ein Interrupt-Siganl erzeugt. Eigener Speicher ist auch auf der Karte enthalten, auf den die CPU Zugriff hat.
Ein zusaetzliches Echtzeit-Betriebssystem wird auf NT aufgesetzt, das die Prozessdaten verarbeitet und mit dem Interrupt angestossen wird. Programmiersprache heisst IEC1131, mittlerweile ein Standard bei SPS.
Das WIN NT dient zur Visualisierung (alle wollen Windows Oberflaeche…) und Ankopplung an die restliche Welt (Office, LAN)
Kleinste Systemzeit sind 1ms (oder mehr, einstellbar), bei komplexen Programmen kommt da auch ein PentiumIII,500MHz an die Grenze. Wir benutzen Industrie-PCs, da sind momentan 500Mhz die obere (noch bezahlbare) Grenze.
Wie gesagt, eine Zusatzkarte ist zur Zeit noch notwendig, die Herstellerfirma des Systems arbeitet an einer neuen Loesung, vollkommen Software basiert. Momentaner Stand: bei 1ms Takt ein Jitter von 10Prozent, was tolerabel ist.

Gruss
Hans

Hi,

was ist bei Dir Echtzeit?
Hatte auch vor kurzem einen Artikel vor Augen,
in dem mit Auflösung von einigen Millisekekunden
gehandelt wurde.

Millisekunden??? Das bekommt fast jedes Betriebssystem hin,

Aber normales Windoffs eben nicht. Das verabschiedet sich auch
locker mal für 10ms und länger. Da kann man nicht mal ne
RS232 mit höherer Datenrate im Hintergrund laufen lassen,
weil die dann einiges „verschluckt“.

wenn es nicht ausgelastet ist. Da kann man ein Programm
getrost in den Schlaf schicken und von Kernel nach einigen
Millisekunden wecken lassen (geht z.B. in Aufloesung bis
Microsekunden mit gewissen Funktionen zum lauschen an Named
Pipes (besondere Dateitypen/Streams zur Komminakation von
Programmen) - natuerlich nicht, wenn das System belastet ist).
Das einzige was man dafuer braucht, ist ein
multitaskingfaehiges Betriebssystem (was Windows nichtmal
wirklich ist) und freie Systemressourcen. Eine Millisekunde
ist fuer ein einfaches Programm meist ein Ewigkeit. Also mit
z.B. Linux habe ich schon im Millisekundenbereich gearbeitet
und das gilt nicht als echtzeitfaehig.

Wer hat es denn so definiert?

Echtzeit braucht man z.B. wenn man bestimmte Sensoren mit
einer bestimmten hohen Abfragerate auslesen muss (z.B. fuer
wissenschftliche Untersuchungen, oder um die Sensordaten zur
Steuerung von Hardware zu verwenden … Roboter). Oder wenn
man bestimmte ungepufferte Geraete kontinuierlich mit Daten
fuettern muss (klassisches Beispiel CD-Brenner, aber da gibt
es noch deutlich kleinlichere Teile).

Na ja, Echtzeitfähig ist schon ein denbarer Begriff.
Und ob das System als Echtzeitfähig angesehen wird
oder nicht, ist auch noch von anderen Eigenschaften
abhängig.

Dann gibt es eben auch Anwender in der Industrie, die
ihre Sensordaten nur alle paar hundert ms brauchen.
Für die ist es auch Echtzeit, wenn der Computer das
gerade mal schafft.

Ich meine in modernen Rechnern laufen mit Gigaherz Takt 32 Bit
Daten und Anweisungen durch. Da gehen in einer Millisekunde
bis zu (32/8=) 3MB durch die CPU.

Schön wäre es ja, wenn man auf die Leistung als Nutzer
auch in „Echtzeit“ zugreifen könnte.
Andererseits haben die Windowskonventionen ja auch einen
Vorteil, und die wären dan hinüber, weil jeder am System
werkelt, wie er es gerade gern hätte.
Mit zusätzlicher Hardware, die die Pausenzeiten überbrückt,
geht’s ja offensichtlich, kostet aber entsprechend.

Na ja, Echtzeitfähig ist schon ein denbarer Begriff.
Und ob das System als Echtzeitfähig angesehen wird
oder nicht, ist auch noch von anderen Eigenschaften
abhängig.

Das ist genau der Punkt. ein System kann genau nur eine Sache machen (z.B. nur von einem Sensor die Daten bearbeiten).

Dafür gibt es einen einfachen Grund. Und es ist unabhängig von Betriebssystem oder Aufbau des PCs.

Es liegt ganz einfach am Aufbau des CPUs. Normale CPUs sind für das Multitasking (wie Windows und andere versprechen) nicht fähig. (einfacher Versuch: auf Diskette kopieren und was anderes machen).
Daraus folgt, dass das bearbeiten von zwei verschiedenen Sachen nicht möglich ist. Um dies zu kompensieren werden meistens mehrere CPUs oder innerhalb der CPUs mehrere Schaltkreise für ein und das selbe angelegt. Man braucht sich dafür nur moderne Grafikkarten anzusehen. Nicht umsonst hat z.B. die Voodoo 5 sage und schreibe 4 Porzessoren.

Gruß Thomas

Hi,

Aber normales Windoffs eben nicht.

Darum bezeichne ich es ja nichtmal als wirklich multitasking-faehig.

Wer hat es denn so definiert?

Keine Ahnung. Aber ein Echtzeitbetriebssystem muss Garanitien anbieten, dass CPU wie gefordert zur Verfuegung steht. Das programmiert sich voellig anders als „normal“ Betriebssysteme. Da muss das Programm dem System explizit mitteilen: „Hoer mal, ich will, dass der Code hier alle x Microsekunden ausgefuehrt wird!“ Und dann antwortet das System „Ok, geht klar.“, oder „Vergiss es, versuch es spaeter nochmal“.
Weder Windows noch Linux garantieren irgendwas. Wenn so ein System ausgelastet ist, ist es ausgelastet, basta. Bei Linux laesst sich einem Prozess immerhin eine Priorietaet zuordnen, wobei man mit Prioritaet -20 vermutlich das System killen kann (weil elementare Tasks nicht mehr ausgefuehrt werden, solange das betreffende Programm das System ausreizt).
Ein Echtzeitsystem gibt diese Garantie - oder auch nicht (in dem Fall erfaehrt das Programm immerhin davon).
Sonst waere ja auch Win 2000 auf einem 486 ein Echtzeitsystem - arbeitet halt nur mit einer zeitlichen Aufloesung von rund 90 Minuten.

Na ja, Echtzeitfähig ist schon ein denbarer Begriff.

Nein. Es ist ein Begriff, der dem Marketing zum Opfer gefallen ist. Eigentlich sind Echtzeitsysteme ziemliche Exoten, die nur fuer besondere Aufgaben eingesetzt werden.

Dann gibt es eben auch Anwender in der Industrie, die
ihre Sensordaten nur alle paar hundert ms brauchen.
Für die ist es auch Echtzeit, wenn der Computer das
gerade mal schafft.

Quatsch. Fuer die ist ein System ausreichend, das das meistens hinbekommt. Echtzeit ist was anderes (siehe oben, die Garantie ist das wesentliche!).

Schön wäre es ja, wenn man auf die Leistung als Nutzer
auch in „Echtzeit“ zugreifen könnte.

Kann man doch. Windows laesst sich nicht reinreden, was es mit dem System anstellt. Es greift sich oft alle verfuegbaren Ressourcen (z.B. RAM) scheinbar auf Halde zur spaeteren Verwendung.
Linux ist da ganz anders. Wenn Du mal die volle Rechenleistung brauchst, faehrst Du einfach den megabunten Gnome-Desktop auf dem sich alles bewegt und entweder halbtransparent oder verspiegelt ist runter (sowie alles andere was nicht essentiell ist) und laesst Dein Programm mit Prioritaet -1 laufen. Dann kriegt es alle Leistung, die entbehrlich ist (und das ist bei einem modernen Linux auf einem modernen Rechner 99.9% der Systemleistung).

Andererseits haben die Windowskonventionen ja auch einen
Vorteil, und die wären dan hinüber, weil jeder am System
werkelt, wie er es gerade gern hätte.

Den Vorteil haette ich gerne mal erklaert. Ich sehe da lediglich mangelnde Transparenz und mangelnde Konfigurationsmoeglichkeiten fuer professionelle Zwecke. Und bei allen Windowskonventionen ist es einzelnen Programmen dennoch moeglich, das ganze System abzuschiessen! Schwachsinniges System.

Mit zusätzlicher Hardware, die die Pausenzeiten überbrückt,
geht’s ja offensichtlich, kostet aber entsprechend.

Naja, immerhin schafft Windows offenbar eine Menge Arbeitsplaetze (und Wege Usern die Kohle aus der Tasche zu ziehen).

Gruss

Thorsten

Hi,

hat hier jemand schonmal Realtime LINUX erwähnt. Wenn nicht, tue ich das jetzt mal :smile: Das System ist im Grunde sehr simpel: Das Betriebsystem arebeitet als Task eines mikrokernles, der einfach garantierte Antwortzeiten bietet. Ein Freund arbeitet mit so einem system, bei dem ein Industrieroboter mit 2ms gesteuert wird, und gleichzeitig kann man unter X arbeiten. in Konkurrenzteam hat versucht das ganze unter NT zu machen, aber die kamen wohl nur auf 30ms. Wobei ich glaube zu wissen, das die ohne fremdprodukt gearbeitet haben.

Mfg Diez