\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}{9}{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 - Realtime Object Request Broker}{21}{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}{22}{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}{30}{paragraph.3.3.2.2} \contentsline {subsubsection}{\numberline {3.3.3}V1 Prozessabbild \"ubertragen}{30}{subsubsection.3.3.3} \contentsline {paragraph}{\numberline {3.3.3.1}Softwaredesign}{30}{paragraph.3.3.3.1} \contentsline {paragraph}{\numberline {3.3.3.2}Datenflu\ss }{31}{paragraph.3.3.3.2} \contentsline {paragraph}{\numberline {3.3.3.3}Konfiguration}{31}{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}{34}{paragraph.3.3.3.4} \contentsline {subparagraph}{Latenzschwankungen bei flood ping auf CPX2 (Receiver)}{36}{section*.7} \contentsline {subparagraph}{L\"osungsans\"atze}{36}{section*.8} \contentsline {subparagraph}{L\"osung}{37}{section*.9} \contentsline {subparagraph}{Anmerkungen zu den weiteren L\"osungsm\"oglichkeiten}{38}{section*.10} \contentsline {subsubsection}{\numberline {3.3.4}V2 Prozessabbild via RT EventService \"ubertragen}{38}{subsubsection.3.3.4} \contentsline {paragraph}{\numberline {3.3.4.1}Softwaredesign}{38}{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}{39}{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 Priorisierung}{40}{subsubsection.3.3.5} \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}{41}{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}{45}{paragraph.3.3.7.3} \contentsline {subsection}{\numberline {3.4}V6 Prozessabbild \"ubertragen mit Ice}{46}{subsection.3.4} \contentsline {subsection}{\numberline {3.5}Fazit}{47}{subsection.3.5} \contentsline {section}{\numberline {4}Memory Footprints}{48}{section.4} \contentsline {subsection}{\numberline {4.1}ACE/TAO statisch compilieren}{48}{subsection.4.1} \contentsline {subsection}{\numberline {4.2}soreduce}{49}{subsection.4.2} \contentsline {subsection}{\numberline {4.3}ICE}{50}{subsection.4.3} \contentsline {section}{\numberline {5}Kommunikation zwischen .NET Remoting und CORBA}{51}{section.5} \contentsline {subsection}{\numberline {5.1}IIOP.NET}{51}{subsection.5.1} \contentsline {subsection}{\numberline {5.2}RemotingCORBA}{52}{subsection.5.2} \contentsline {subsection}{\numberline {5.3}J-Integra Espresso}{53}{subsection.5.3} \contentsline {subsection}{\numberline {5.4}\"Uberpr\"ufung der Machbarkeit}{53}{subsection.5.4} \contentsline {section}{\numberline {6}Implementierung}{54}{section.6} \contentsline {subsection}{\numberline {6.1}Zugriff auf die digitalen Ein- und Ausg\"ange der CPX}{54}{subsection.6.1} \contentsline {subsection}{\numberline {6.2}Priorisierung mittels RTCORBA}{54}{subsection.6.2} \contentsline {subsubsection}{\numberline {6.2.1}Schnittstellendefinition}{55}{subsubsection.6.2.1} \contentsline {subsubsection}{\numberline {6.2.2}Codierung des verteilten Objekts}{55}{subsubsection.6.2.2} \contentsline {subsubsection}{\numberline {6.2.3}Codierung der Applikation, welche das verteilte Objekt hostet}{56}{subsubsection.6.2.3} \contentsline {subsubsection}{\numberline {6.2.4}Codierung der Applikation, welche auf das verteilte Objekt zugreift}{58}{subsubsection.6.2.4} \contentsline {subsubsection}{\numberline {6.2.5}Projektverwaltung mit MakeProjectCreator}{60}{subsubsection.6.2.5} \contentsline {subsubsection}{\numberline {6.2.6}Start der verteilten Anwendung}{61}{subsubsection.6.2.6} \contentsline {subsection}{\numberline {6.3}Kommunikation \"uber EventService}{62}{subsection.6.3} \contentsline {subsection}{\numberline {6.4}Kommunikation zwischen C\# und C++ mittels IIOP.NET und CORBA}{62}{subsection.6.4} \contentsline {subsubsection}{\numberline {6.4.1}Codierung}{64}{subsubsection.6.4.1} \contentsline {subsubsection}{\numberline {6.4.2}Start der verteilten Anwendung}{77}{subsubsection.6.4.2} \contentsline {section}{\numberline {7}Integration}{78}{section.7} \contentsline {subsection}{\numberline {7.1}generische Schnittstelle f\"ur andere Protokolle}{78}{subsection.7.1} \contentsline {subsubsection}{\numberline {7.1.1}DAIS}{78}{subsubsection.7.1.1} \contentsline {subsubsection}{\numberline {7.1.2}DAIS - OPC (UA)}{78}{subsubsection.7.1.2} \contentsline {subsection}{\numberline {7.2}Anbindung des .NET HMI}{78}{subsection.7.2} \contentsline {subsection}{\numberline {7.3}Prozess\"uberwachung von Steuerungen/Anlagen via EventService}{78}{subsection.7.3} \contentsline {subsubsection}{\numberline {7.3.1}\"Uberwachungsinterface der Steuerungen}{79}{subsubsection.7.3.1} \contentsline {subsubsection}{\numberline {7.3.2}\"Uberwachungsapplikation}{79}{subsubsection.7.3.2} \contentsline {subsubsection}{\numberline {7.3.3}ERP Interface}{79}{subsubsection.7.3.3} \contentsline {section}{\numberline {8}Fazit}{81}{section.8} \contentsline {subsection}{\numberline {8.1}Dank}{81}{subsection.8.1} \contentsline {subsection}{\numberline {8.2}Exkursionen}{81}{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}{XIII}{section.A} \contentsline {subsection}{\numberline {A.1}Software}{XIII}{subsection.A.1} \contentsline {subsubsection}{\numberline {A.1.1}Linux mit realtime preemption}{XIII}{subsubsection.A.1.1} \contentsline {subsubsection}{\numberline {A.1.2}ACE}{XV}{subsubsection.A.1.2} \contentsline {subsubsection}{\numberline {A.1.3}gperf}{XV}{subsubsection.A.1.3} \contentsline {subsubsection}{\numberline {A.1.4}TAO}{XVI}{subsubsection.A.1.4} \contentsline {subsubsection}{\numberline {A.1.5}Mono Entwicklungsumgebung}{XVI}{subsubsection.A.1.5} \contentsline {subsubsection}{\numberline {A.1.6}IIOP.NET}{XVI}{subsubsection.A.1.6} \contentsline {subsection}{\numberline {A.2}Hardware}{XVI}{subsection.A.2} \contentsline {subsubsection}{\numberline {A.2.1}technische Daten}{XVII}{subsubsection.A.2.1} \contentsline {subsubsection}{\numberline {A.2.2}Operation Panel}{XVII}{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}{XVIII}{subsubsection.A.2.4} \contentsline {section}{\numberline {B}Tools}{XIX}{section.B} \contentsline {subsection}{\numberline {B.1}verwendete, selbst entwickelte Tools}{XIX}{subsection.B.1} \contentsline {subsection}{\numberline {B.2}verwendete, frei verf\"ugbare Tools}{XIX}{subsection.B.2} \contentsline {section}{\numberline {C}Quelltexte}{XX}{section.C} \contentsline {section}{\numberline {D}Messergebnisse}{XXI}{section.D} \contentsline {section}{Ehrenw\"ortliche Erkl\"arung}{XXII}{section*.15} \wisecftsetpnumwidth {1.55em} \wisecftsetrmarg {2.55em}