blob: 43fe33c67d48af7ffb07f5d56489c2c7ee6d7f26 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
\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}
|