\contentsline {section}{\numberline {1}Einf\"uhrung}{5}{section.1} \contentsline {subsection}{\numberline {1.1}Aufgabenstellung}{5}{subsection.1.1} \contentsline {subsection}{\numberline {1.2}Zielsetzung}{6}{subsection.1.2} \contentsline {subsection}{\numberline {1.3}pers\"onliche Motivation}{6}{subsection.1.3} \contentsline {subsection}{\numberline {1.4}Gliederung}{7}{subsection.1.4} \contentsline {section}{\numberline {2}Grundlagen}{8}{section.2} \contentsline {subsection}{\numberline {2.1}Kommunikation in der Automatisierungstechnik}{8}{subsection.2.1} \contentsline {subsection}{\numberline {2.2}openSource Entwicklungsmodell}{10}{subsection.2.2} \contentsline {subsection}{\numberline {2.3}Echtzeitsystem}{10}{subsection.2.3} \contentsline {subsubsection}{\numberline {2.3.1}RTOS}{11}{subsubsection.2.3.1} \contentsline {subsection}{\numberline {2.4}embedded Systems}{12}{subsection.2.4} \contentsline {subsection}{\numberline {2.5}verteilte Systeme}{13}{subsection.2.5} \contentsline {subsection}{\numberline {2.6}CORBA}{15}{subsection.2.6} \contentsline {subsubsection}{\numberline {2.6.1}ORB}{16}{subsubsection.2.6.1} \contentsline {paragraph}{\numberline {2.6.1.1}ORB Interface}{17}{paragraph.2.6.1.1} \contentsline {paragraph}{\numberline {2.6.1.2}IFR - Interface Repository}{17}{paragraph.2.6.1.2} \contentsline {paragraph}{\numberline {2.6.1.3}DII - Dynamic Invocation Interface}{17}{paragraph.2.6.1.3} \contentsline {paragraph}{\numberline {2.6.1.4}POA}{17}{paragraph.2.6.1.4} \contentsline {subsubsection}{\numberline {2.6.2}Policies}{17}{subsubsection.2.6.2} \contentsline {subsubsection}{\numberline {2.6.3}IDL}{18}{subsubsection.2.6.3} \contentsline {subsubsection}{\numberline {2.6.4}DataType Mapping}{18}{subsubsection.2.6.4} \contentsline {subsubsection}{\numberline {2.6.5}IOR}{18}{subsubsection.2.6.5} \contentsline {subsection}{\numberline {2.7}Real-time CORBA}{19}{subsection.2.7} \contentsline {subsubsection}{\numberline {2.7.1}RTCORBA Priority}{20}{subsubsection.2.7.1} \contentsline {subsubsection}{\numberline {2.7.2}Scheduling Service}{20}{subsubsection.2.7.2} \contentsline {subsubsection}{\numberline {2.7.3}RTORB - Real-time Object Request Broker}{20}{subsubsection.2.7.3} \contentsline {subsubsection}{\numberline {2.7.4}Threadpool}{21}{subsubsection.2.7.4} \contentsline {subsubsection}{\numberline {2.7.5}Priorisierung der Netzwerkverbindung}{21}{subsubsection.2.7.5} \contentsline {subsection}{\numberline {2.8}CORBA Services}{21}{subsection.2.8} \contentsline {subsubsection}{\numberline {2.8.1}NamingService}{21}{subsubsection.2.8.1} \contentsline {subsubsection}{\numberline {2.8.2}RT EventService}{21}{subsubsection.2.8.2} \contentsline {subsection}{\numberline {2.9}Ice}{22}{subsection.2.9} \contentsline {section}{\numberline {3}Performancebewertung}{23}{section.3} \contentsline {subsection}{\numberline {3.1}Ende zu Ende Latenz messen}{23}{subsection.3.1} \contentsline {subsection}{\numberline {3.2}Lastsimulationen}{25}{subsection.3.2} \contentsline {subsection}{\numberline {3.3}RTCORBA Applikationen}{26}{subsection.3.3} \contentsline {subsubsection}{\numberline {3.3.1}ACE}{26}{subsubsection.3.3.1} \contentsline {subsubsection}{\numberline {3.3.2}TAO}{27}{subsubsection.3.3.2} \contentsline {paragraph}{\numberline {3.3.2.1}Scheduling}{28}{paragraph.3.3.2.1} \contentsline {subparagraph}{RT\_ Info}{29}{section*.4} \contentsline {paragraph}{\numberline {3.3.2.2}RTPOA}{31}{paragraph.3.3.2.2} \contentsline {subsubsection}{\numberline {3.3.3}V1 Prozessabbild \"ubertragen}{31}{subsubsection.3.3.3} \contentsline {paragraph}{\numberline {3.3.3.1}Softwaredesign}{31}{paragraph.3.3.3.1} \contentsline {paragraph}{\numberline {3.3.3.2}Datenfluss}{31}{paragraph.3.3.3.2} \contentsline {paragraph}{\numberline {3.3.3.3}Konfiguration}{33}{paragraph.3.3.3.3} \contentsline {subparagraph}{RT\_ PREEMPT Priorisierung}{33}{section*.5} \contentsline {subparagraph}{ACE/TAO Konfiguration}{34}{section*.6} \contentsline {paragraph}{\numberline {3.3.3.4}Ergebnisse}{35}{paragraph.3.3.3.4} \contentsline {subparagraph}{Latenzschwankungen bei flood ping auf CPX2 (Receiver)}{37}{section*.7} \contentsline {subparagraph}{L\"osungsans\"atze}{37}{section*.8} \contentsline {subparagraph}{L\"osung}{37}{section*.9} \contentsline {subparagraph}{Anmerkungen zu den weiteren L\"osungsm\"oglichkeiten}{39}{section*.10} \contentsline {subsubsection}{\numberline {3.3.4}V2 Prozessabbild via RT EventService \"ubertragen}{39}{subsubsection.3.3.4} \contentsline {paragraph}{\numberline {3.3.4.1}Softwaredesign}{39}{paragraph.3.3.4.1} \contentsline {paragraph}{\numberline {3.3.4.2}Programmablauf}{39}{paragraph.3.3.4.2} \contentsline {paragraph}{\numberline {3.3.4.3}Konfiguration}{40}{paragraph.3.3.4.3} \contentsline {paragraph}{\numberline {3.3.4.4}Ergebnisse}{40}{paragraph.3.3.4.4} \contentsline {subsubsection}{\numberline {3.3.5}V3 TAO Scheduler}{41}{subsubsection.3.3.5} \contentsline {paragraph}{\numberline {3.3.5.1}Konfiguration}{41}{paragraph.3.3.5.1} \contentsline {paragraph}{\numberline {3.3.5.2}Ergebnis}{41}{paragraph.3.3.5.2} \contentsline {subsubsection}{\numberline {3.3.6}V4 Verhalten bei gr\"o\ss eren Datenmengen}{41}{subsubsection.3.3.6} \contentsline {paragraph}{\numberline {3.3.6.1}Ergebnis}{42}{paragraph.3.3.6.1} \contentsline {subsubsection}{\numberline {3.3.7}V5 geswitchtes Netz mit mehreren Teilnehmern}{42}{subsubsection.3.3.7} \contentsline {paragraph}{\numberline {3.3.7.1}Softwaredesign}{42}{paragraph.3.3.7.1} \contentsline {paragraph}{\numberline {3.3.7.2}Konfiguration}{43}{paragraph.3.3.7.2} \contentsline {paragraph}{\numberline {3.3.7.3}Ergebnisse}{44}{paragraph.3.3.7.3} \contentsline {subsection}{\numberline {3.4}V6 Prozessabbild \"ubertragen mit Ice}{48}{subsection.3.4} \contentsline {subsection}{\numberline {3.5}Fazit}{48}{subsection.3.5} \contentsline {section}{\numberline {4}Memory Footprints}{49}{section.4} \contentsline {subsection}{\numberline {4.1}ACE/TAO statisch compilieren}{49}{subsection.4.1} \contentsline {subsection}{\numberline {4.2}Erstellen von ACE/TAO Library subsets}{50}{subsection.4.2} \contentsline {subsubsection}{\numberline {4.2.1}Installation}{50}{subsubsection.4.2.1} \contentsline {subsubsection}{\numberline {4.2.2}Anwendungsbeispiel}{50}{subsubsection.4.2.2} \contentsline {subsubsection}{\numberline {4.2.3}Fazit}{51}{subsubsection.4.2.3} \contentsline {section}{\numberline {5}Kommunikation zwischen .NET/C\# und CORBA}{52}{section.5} \contentsline {subsection}{\numberline {5.1}IIOP.NET}{52}{subsection.5.1} \contentsline {subsection}{\numberline {5.2}RemotingCORBA}{53}{subsection.5.2} \contentsline {subsection}{\numberline {5.3}J-Integra Espresso}{54}{subsection.5.3} \contentsline {subsection}{\numberline {5.4}\"Uberpr\"ufung der Machbarkeit}{54}{subsection.5.4} \contentsline {section}{\numberline {6}Implementierung}{56}{section.6} \contentsline {subsection}{\numberline {6.1}Zugriff auf die digitalen Ein- und Ausg\"ange der CPX}{56}{subsection.6.1} \contentsline {subsection}{\numberline {6.2}Projektverwaltung mit MakeProjectCreator}{57}{subsection.6.2} \contentsline {subsection}{\numberline {6.3}Kommunikation zwischen C\# und C++ mittels IIOP.NET und CORBA}{58}{subsection.6.3} \contentsline {subsubsection}{\numberline {6.3.1}Codierung}{60}{subsubsection.6.3.1} \contentsline {subsubsection}{\numberline {6.3.2}Start der verteilten Anwendung}{71}{subsubsection.6.3.2} \contentsline {section}{\numberline {7}Integration}{73}{section.7} \contentsline {subsection}{\numberline {7.1}generische RTCORBA Schnittstelle}{73}{subsection.7.1} \contentsline {subsection}{\numberline {7.2}DAIS}{73}{subsection.7.2} \contentsline {subsection}{\numberline {7.3}Anbindung des .NET HMI}{74}{subsection.7.3} \contentsline {section}{\numberline {8}Fazit}{75}{section.8} \contentsline {subsection}{\numberline {8.1}Dank}{76}{subsection.8.1} \contentsline {subsection}{\numberline {8.2}Exkursionen}{76}{subsection.8.2} \wisecftsetpnumwidth {4em} \wisecftsetrmarg {5em} \contentsline {section}{Anh\"ange}{I}{subsection.8.2} \contentsline {section}{Abbildungsverzeichnis}{I}{section*.11} \contentsline {section}{Tabellenverzeichnis}{III}{section*.12} \contentsline {section}{Abk\"urzungsverzeichnis}{IV}{section*.13} \contentsline {section}{Literaturverzeichnis}{VII}{section*.14} \contentsline {section}{\numberline {A}Systemkonfiguration}{XIV}{section.A} \contentsline {subsection}{\numberline {A.1}Software}{XIV}{subsection.A.1} \contentsline {subsubsection}{\numberline {A.1.1}Linux mit RT\_ PREEMPT Patch}{XIV}{subsubsection.A.1.1} \contentsline {subsubsection}{\numberline {A.1.2}ACE}{XVI}{subsubsection.A.1.2} \contentsline {subsubsection}{\numberline {A.1.3}gperf}{XVI}{subsubsection.A.1.3} \contentsline {subsubsection}{\numberline {A.1.4}TAO}{XVI}{subsubsection.A.1.4} \contentsline {subsubsection}{\numberline {A.1.5}Mono Entwicklungsumgebung}{XVII}{subsubsection.A.1.5} \contentsline {subsubsection}{\numberline {A.1.6}IIOP.NET}{XVII}{subsubsection.A.1.6} \contentsline {subsection}{\numberline {A.2}Hardware}{XVII}{subsection.A.2} \contentsline {subsubsection}{\numberline {A.2.1}technische Daten}{XVII}{subsubsection.A.2.1} \contentsline {subsubsection}{\numberline {A.2.2}Operation Panel}{XVIII}{subsubsection.A.2.2} \contentsline {subsubsection}{\numberline {A.2.3}digitale Ein- und Ausg\"ange}{XVIII}{subsubsection.A.2.3} \contentsline {subsubsection}{\numberline {A.2.4}Ethernet}{XIX}{subsubsection.A.2.4} \contentsline {section}{\numberline {B}Tools}{XX}{section.B} \contentsline {subsection}{\numberline {B.1}selbst entwickeltes Tool: latencyTest}{XX}{subsection.B.1} \contentsline {subsection}{\numberline {B.2}verwendete, frei verf\"ugbare Tools}{XX}{subsection.B.2} \contentsline {section}{\numberline {C}Inhalt CD-ROM}{XXII}{section.C} \contentsline {section}{Ehrenw\"ortliche Erkl\"arung}{XXIII}{section*.15} \wisecftsetpnumwidth {1.55em} \wisecftsetrmarg {2.55em}