sheet.typ (8390B)
1 #import "@preview/fletcher:0.5.1" as fletcher: diagram, node, edge, shapes 2 #import "@preview/bob-draw:0.1.0": * 3 4 #show link: it => [#text(blue)[#underline[#it]]] 5 6 #set page( 7 header: box(width: 1fr, stroke: (bottom: 1pt), outset: (bottom: 3pt), [ 8 #link("https://source.orangerot.dev/university/itat-etit-cheatsheet")\ 9 #smallcaps[Informations- und Automatisierungstechnik, ETIT] 10 #h(1fr) 11 _Gero Beckmann_ \ 12 ]), 13 footer: [ 14 ] 15 ) 16 // #set heading(numbering: "1.1") 17 18 = Informationstechnik 19 20 #grid(columns: 2 * (1fr,), 21 [ 22 == Qualitätskriterien für Software 23 24 - Correctness 25 - Availability 26 - Reliability 27 - Safety 28 - Security 29 - Robustness 30 ], 31 [ 32 ==== Interne Qualitätsfaktoren von Software 33 34 - Effizienz 35 - Erweiterbarkeit 36 - Kompatibilität 37 - Portierbarkeit 38 - Wartbarkeit 39 - Wiederverwendbarkeit 40 ] 41 ) 42 43 #grid(columns: 2 * (1fr,), 44 [ 45 == Programmierparadigmen 46 47 #table(columns: 2, 48 [Imperativ], [Assembly], 49 [Prozedural], [C], 50 [Funktional], [Haskell], 51 [Logikbasiert], [Prolog], 52 [Objektorientiert], [Java] 53 ) 54 ],[ 55 == Fließkommazahlen 56 $ X = V_Z dot 1,m dot 2^(c - 127) $ 57 float32 $~ 2 dot 2^127$ 58 #table( 59 columns: 3, 60 [Sign[1]], [Characterstik[8]], [Mantisse[23]] 61 ) 62 double64 $~ 2 dot 2^1023$ 63 #table( 64 columns: 3, 65 [Sign[1]], [Characterstik[11]], [Mantisse[52]] 66 ) 67 ] 68 ) 69 70 *Projekt:* 71 Einmaligkeit, Zielvorgabe, Abgrenzung zu andren Vorhaben, Begrenzungen, Organisationsform 72 73 #grid(columns: 2*(1fr,), [ 74 == Programmablaufplan 75 #diagram(node-stroke: 1pt, node((0,0), [Start], shape: shapes.pill)) 76 #diagram(node-stroke: 1pt, node((0,0), [Verarbeitung], shape: shapes.rect)) 77 #diagram(node-stroke: 1pt, node((0,0), [Ein-/Ausgabe], shape: shapes.trapezium.with(angle: -10))) 78 #diagram(node-stroke: 1pt, node((0,0), [Verzweigung], shape: shapes.diamond)) 79 ],[ 80 81 === Nassi-Schnreidermann 82 #image(height: 4cm, "assets/nassi.png") 83 ]) 84 85 #v(-.3cm) 86 #grid(columns: 2*(1fr,), column-gutter: .2cm, [ 87 == Hashfunktionen 88 89 $ 90 "prob"(i) &= (m - (i - 1)) / m = (7 - (4 - 1)) / 7 = 0,57 \ 91 & "Beispiel für 4. Element von 7" 92 $ 93 94 === Umgang mit Kollisionen beim Hashing 95 ==== Verkettete Liste 96 Sofortiges Kopieren / Verzögertes Kopieren 97 98 - neue Tabelle tab' mit dopperter Größe m' sobald Füllstand von tab überschritten 99 - Bei Zugriff: übertrage Elemente mit kleinstem Index min von tab zu tab' und aktualisieren min 100 - Falls $h(k) = k mod m <= min$ greife auf tab' mit $h'(k) = k mod m'$ sonst 101 greife auf tab mit $h(k) = k mod m$ 102 - ersetze tab' mit tab sobald tab leer ist. 103 104 ],[ 105 ==== Sondieren 106 107 - lineares Sondieren $h_i(x) = (h(x) + i) mod m$ 108 - quadratisches Sondieren $h_i(x) = (h(x) + i^2) mod m$ 109 110 ==== Doppeltes Hashen 111 112 - $h(k,i) = (h_1(k) + i dot h_2(k)) mod m$ 113 - $h_1(k) = k mod m$ 114 - $h_2(k) = 1 + (k mod m')$ 115 116 Universale Hashfunktion 117 118 $ 119 (abs({h in H mid(|) h(x) = h(y)})) / abs(H) <= 1/m 120 $ 121 122 ]) 123 124 == Automatisierungstechnik 125 126 ==== SPS Speicherprogrammierbare Steuerung 127 #render(``` 128 /_ "PAE (Prozessabbild der Eingänge), PAA (Prozessabbild der Ausgänge)" 129 / 130 +-----+-v-----------+-----+----------+-----+-------------+-|---+ 131 | PAE | Applikation | PAA | Watchdog | PAE | Applikation | PAA | 132 |-----+-:-----------+-----+----------|-----+-------------+-:---+ 133 +<------:----Zykluszeit------------->+ : 134 +<-----------------Latenzzeit--------------------->+ 135 ```) 136 137 ==== AT-Pyramide 138 139 #table(columns: 2, 140 [ERP - Enterprise Resource Planung], [Level 4: Unternehmensebene], 141 [MES - Management Execution System], [Level 3: Betriebsebene], 142 [SCADA - Supervisory, Control and Data Aquisiton], [Level 2: (Prozess-)Leitebene], 143 [SPS - Industrial Controller, SPS, Embedded System], [Level 1: Steuerungsebene], 144 [Ein-/Ausgangssignale - Sensoren, Aktoren, Kommunikationssysteme], [Level 1: Feldebene], 145 [Fertigung / Produktionsprozess], [Level 0: Prozessebene] 146 ) 147 148 *Kontinuierliche Prozesse*: Ständiger Zu- und Abfluss von Material/Energie \ 149 *Diskontinuierliche Prozesse*: Stückprozesse, Chargenprozesse (Wasser in Flaschen) 150 151 === Petri-Netze / Ablaufsprache 152 153 // #render(``` 154 // ,-. ,-. 155 // ,->( )-. ,->|-->( )->|-. 156 // ,-. / `-' V. ,-. / `-' V. 157 // ((_)) ->|+ |-> ((_)) |-> 158 // `-' \ ,-. ^' `-' \ ,-. ^' 159 // '->( )_/ '->|-->( )->|_/ 160 // `-' `-' ' 161 // ```) 162 163 #grid(columns: 2, column-gutter: 1cm, 164 diagram( 165 node-stroke: 1pt, 166 edge-stroke: 1pt, 167 node((0,0), none, radius: 0.4cm, extrude: (0, 4), fill: black), 168 node((1,0), height: 1cm, stroke: 3pt), 169 node((2,0.5), none, radius: .5cm), 170 node((2,-0.5), none, radius: .5cm), 171 node((3,0), height: 1cm, stroke: 3pt), 172 node((4,0), none, radius: .5cm), 173 edge((0,0), (1,0), marks: (none, "straight")), 174 edge((1,0), (2,0.5), marks: (none, "straight")), 175 edge((1,0), (2,-0.5), marks: (none, "straight")), 176 edge((2,0.5), (3,0), marks: (none, "straight")), 177 edge((2,-0.5), (3,0), marks: (none, "straight")), 178 edge((3,0), (4,0), marks: (none, "straight")) 179 ), 180 diagram( 181 node-stroke: 1pt, 182 edge-stroke: 1pt, 183 node((0,0), [Init], inset: 10pt, extrude: (0, -4)), 184 node((1,0.5), height: 1cm, stroke: 3pt), 185 node((1,-0.5), height: 1cm, stroke: 3pt), 186 node((2,0.5), [Schritt0]), 187 node((2,-0.5), [Schritt1]), 188 node((3,0.5), height: 1cm, stroke: 3pt), 189 node((3,-0.5), height: 1cm, stroke: 3pt), 190 node((4,0), [Schritt2]), 191 edge((0,0), (1,0.5)), 192 edge((0,0), (1,-0.5)), 193 edge((1,0.5), (2,0.5)), 194 edge((1,-0.5), (2,-0.5)), 195 edge((2,0.5), (3,0.5)), 196 edge((2,-0.5), (3,-0.5)), 197 edge((3,0.5), (4, 0)), 198 edge((3,-0.5), (4, 0)), 199 ) 200 ) 201 202 === IEC 61131-3: Kontaktplan 203 204 #render(``` 205 --| |-- Kontakt 206 207 --|/|-- negierter Kontakt vgl. Öffner 208 209 --( )-- Spule vgl. Relais 210 ```) 211 212 SPS-Programmiersprachen: FBS, KOP, ST, AS, CFC 213 214 IEC 61131 Objektorientierung 215 216 #pagebreak() 217 218 == Automatisierungsarchitekturen 219 220 #table( 221 columns: (3cm, 4cm, auto), 222 table.header([], [*Zentrale Automatisierung*], [*Dezentrale Automatisierung*]), 223 [Implementierung], [ 224 wenige Componenten zB SPS für gesamte Anlage. 225 ], [ 226 Verteilte Steuerung (SPS) für dedizierte 227 Anlagenteile. Übergeordnete Orchestrierung notwendig order direkte 228 Kommunikation der Modulsteuerungen untereinander. 229 ], 230 [Einsatzgebiet], [ 231 Zugeschnitten. Statischer Aufbau mit Single-Use 232 ], [ 233 Aufteilung von Aufgaben/Funktionen. Reduktion der Komplexität der 234 Steuerungskonfiguration. Zusätzlicher Aufwand zur Kommunikation. Hohe 235 Zuverlässigkeit. Schnelle Wartung. Lastverteilung. 236 ] 237 ) 238 239 *Zuverlässigkeit*: Wahrscheinlichkeit dass System Funktion erfüllt \ 240 *Ausfall*: Übergang von funktionsfähig zu fehlerhaft \ 241 *Fehler*: Zustand bei nichterfüllung mindestens einer Anforderung 242 243 244 *MooN*: M von N Komponenten müssen funktionieren, um Sicherheit zu gewährleisten. 245 246 == Hardware-Redundanz - Doppelstrukturen 247 248 - Zwei Rechner müssen dass selbe Ergebnis berechnen damit fehlerfrei (2oo2) 249 - Zwei Rechner mit Watchdog. Wenn Rechner 1 fehlerhaft, schalte zu Rechner 2, 250 falls auch fehlerhaft: Alarm! (1oo2) 251 - Zwei Rechner mit Watchdog und Lastverteilung. Rechner 2 berechnet normal 252 weniger wichtige Dinge. (1oo2) 253 254 == Fehleridentifikation 255 256 - Sensoren zur Fehlererkennung 257 - Unlogische Zustände 258 - Keine Antwort von Sensor (Timeout) 259 260 == IEC 62061 Zuverlässigkeit (Werte von 1 bis 5) 261 262 - Schwere der Verletzung ($S in [1 hat(=) "Erste Hilfe",4 hat(=) "Tod"]$) 263 - Häufigkeit und Dauer der Gefährdungsposition ($F in [1 hat(=) "< 1 pro Jahr", 264 5 hat(=) >= "1 pro h"]$) 265 - Wahrscheinlichkeit des Auftretens eines gefahrbringenden Ereignisses ($W in [1 266 hat(=) "vernachlässigbar", 5 hat(=) "sehr hoch"]$) 267 - Möglichkeit zur Vermeidung oder Begrenzung des Schadens ($P in [1 hat(=) 268 "wahrscheinlich", 5 hat(=) "unmöglich"]$) 269 270 #image(height: 5.5cm, "assets/sil.png")