Burkhard
Level-2
- Beiträge
- 161
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
So wie du das schreibst, klingt es so, als wäre Hard- oder Soft-Realtime so einen Art Option zum einschalten. Nur so als Frage: Dir ist klar das Harte Echtzeit nur ein Zeitverhalten garantiert nicht das es besonders schnell ist.
Zum Thema 'Wie ich etwas schreibe' bzw. was du da heraus liest, darf mich mich selber aus Posting Nr.16 zitieren.
Burkhard schrieb:Grundsaetzlich muss man leider sagen, dass sich die Programmiersprache vb.net nicht fuer harte Echtzeitanwendungen eignet. Echtzeit bedeutet in dem Fall nicht "besonders schnell" sondern "deterministisch", das heisst, man kann Erwarten dass ein Thread innerhalb garantierter Intervalle aufgerufen wird und sein Abarbeitungs-Intervall nicht in Abhaengigkeit von der Auslastung anderer Threads in Mitleidenschaft gezogen wird, wie das bei mir (meiner vb.net Applikation) eben der Fall ist.
Windows ist in gewissen Grenzen ein Soft-Realtime-System und mit meiner Applikation wollte ich diese Grenzen einfach mal austesten um zu sehen wie gut oder schlecht diese Soft-Realtime so ist. So viel zum Thema, warum ich hier von Hard- und Soft-Realtime spreche.
Nun noch meinen Senf zum Thema: 'Windows ist das Problem'. Offensichtlich gibt es Systeme wie TwinCat und IntervalZero RTX die Windows in ein hartes RTOS verwandeln. Mit TwinCat kenne ich mich aus. Das installiert man auf dem PC und hat dann den System-Service in der Task-Leiste. Dann kann man anfangen nach IEC1131 sein Programm zu schreiben und mittels des ADS-OCX Daten mit mit einer vb.net Applikation auszutauschen.
Ich arbeite bei sowas mit C/C++ - damit kann man einfach viel gezielter (weil man gezwungen ist) die Heap-Bewegung usw. kontrollieren - wenn es denn wichtig ist
einen Geschwindigkeitsvergleichen zwischen .Net und C++ resultierendem Code ist zu Anwendungsspezifisch deswegen kann man dazu kaum oder nur schlechtes sagen. Die RTX ist eine Soft-SPS und "könnte" dir kürzere Abtastraten als 30ms bringen - oder meinst du RTX mit C++ programmieren?
Ich meinte das IntervalZero RTX, siehe hier:
https://de.wikipedia.org/wiki/RTX:_Real_Time_eXtensions_für_Windows
Da heisst es:
RTX wird von Embedded-Geräteherstellern verwendet, die Windows als handelsübliches Betriebssystem nutzen, jedoch den Bedarf an einem Echtzeit-Betriebssystem (RTOS) haben. Durch den Software-Einsatz kann auf zusätzliche Echtzeit-Hardware verzichtet werden.Die Anwendungsentwicklung für RTX64/RTX erfolgt mit Microsoft Visual Studio in C/C++ mit Windows-artigen APIs. RTX64/RTX ausführbare Dateien tragen die Namenserweiterungen «.rtss» und DLLs verwenden «.rtdll».