diff options
author | Orangerot <purple@orangerot.dev> | 2024-09-04 06:26:00 +0200 |
---|---|---|
committer | Orangerot <purple@orangerot.dev> | 2024-09-04 06:26:00 +0200 |
commit | f4edb9a44ad146209a81a6aa964af8ab36f82e4a (patch) | |
tree | 667602d2e78d314db127af98166b7109df7235b4 |
Initial Commit
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | assets/nassi.png | bin | 0 -> 59610 bytes | |||
-rw-r--r-- | sheet.typ | 212 |
3 files changed, 213 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/assets/nassi.png b/assets/nassi.png Binary files differnew file mode 100644 index 0000000..83f23a9 --- /dev/null +++ b/assets/nassi.png diff --git a/sheet.typ b/sheet.typ new file mode 100644 index 0000000..7275466 --- /dev/null +++ b/sheet.typ @@ -0,0 +1,212 @@ +#import "@preview/fletcher:0.5.1" as fletcher: diagram, node, edge, shapes +#import "@preview/bob-draw:0.1.0": * + +#show link: it => [#text(blue)[#underline[#it]]] + +#set page( + header: box(width: 1fr, stroke: (bottom: 1pt), outset: (bottom: 3pt), [ + #link("https://source.orangerot.dev/university/bildverarbeitung-etit-cheatsheet")\ + #smallcaps[Informations- und Automatisierungstechnik, ETIT] + #h(1fr) + _Gero Beckmann_ \ + ]), + footer: [ + ] +) +// #set heading(numbering: "1.1") + += Informationstechnik + +#grid(columns: 2 * (1fr,), +[ +== Qualitätskriterien für Software + +- Correctness +- Availability +- Reliability +- Safety +- Security +- Robustness +], +[ +==== Interne Qualitätsfaktoren von Software + +- Effizienz +- Erweiterbarkeit +- Kompatibilität +- Portierbarkeit +- Wartbarkeit +- Wiederverwendbarkeit +] +) + +#grid(columns: 2 * (1fr,), +[ +== Programmierparadigmen + +#table(columns: 2, + [Imperativ], [Assembly], + [Prozedural], [C], + [Funktional], [Haskell], + [Logikbasiert], [Prolog], + [Objektorientiert], [Java] +) +],[ +== Fließkommazahlen +$ X = V_Z dot 1,m dot 2^(c - 127) $ +float32 $~ 2 dot 2^127$ +#table( + columns: 3, + [Sign[1]], [Characterstik[8]], [Mantisse[23]] +) +double64 $~ 2 dot 2^1023$ +#table( + columns: 3, + [Sign[1]], [Characterstik[11]], [Mantisse[52]] +) +] +) + +*Projekt:* +Einmaligkeit, Zielvorgabe, Abgrenzung zu andren Vorhaben, Begrenzungen, Organisationsform + +#grid(columns: 2*(1fr,), [ +== Programmablaufplan +#diagram(node-stroke: 1pt, node((0,0), [Start], shape: shapes.pill)) +#diagram(node-stroke: 1pt, node((0,0), [Verarbeitung], shape: shapes.rect)) +#diagram(node-stroke: 1pt, node((0,0), [Ein-/Ausgabe], shape: shapes.trapezium.with(angle: -10))) +#diagram(node-stroke: 1pt, node((0,0), [Verzweidung], shape: shapes.diamond)) +],[ + +=== Nassi-Schnreidermann +#image(height: 4cm, "assets/nassi.png") +]) + +#v(-.3cm) +#grid(columns: 2*(1fr,), column-gutter: .2cm, [ +== Hashfunktionen + +$ +"prob"(i) &= (m - (i - 1)) / m = (7 - (4 - 1)) / 7 = 0,57 \ + & "Beispiel für 4. Element von 7" +$ + +=== Umgang mit Kollisionen beim Hashing +==== Verkettete Liste +Sofortiges Kopieren / Verzögertes Kopieren + +- neue Tabelle tab' mit dopperter Größe m' sobald Füllstand von tab überschritten +- Bei Zugriff: übertrage Elemente mit kleinstem Index min von tab zu tab' und aktualisieren min +- Falls $h(k) = k mod m <= min$ greife auf tab' mit $h'(k) = k mod m'$ sonst + greife auf tab mit $h(k) = k mod m$ +- ersetze tab' mit tab sobald tab leer ist. + +],[ +==== Sondieren + +- lineares Sondieren $h_i(x) = (h(x) + i) mod m$ +- quadratisches Sondieren $h_i(x) = (h(x) + i) mod m$ + +==== Dopppeltes Hashen + +- $h(k,i) = (h_1(k) + i dot h_2(k)) mod m$ +- $h_1(k) = k mod m$ +- $h_2(k) = 1 + (k mod m')$ + +Universale Hashfunktion + +$ +(abs({h in H mid(|) h(x) = h(y)})) / abs(H) <= 1/m +$ + +]) + +== Automatisierungstechnik + +==== SPS Speicherprogrammierbare Steuerung +#render(``` + /_ "PAE (Prozessabbild der Eingänge), PAA (Prozessabbild der Ausgänge)" + / ++-----+-v-----------+-----+----------+-----+-------------+-|---+ +| PHE | Applikation | PAA | Watchdog | PAE | Applikation | PAA | +|-----+-:-----------+-----+----------|-----+-------------+-:---+ ++<------:----Zykluszeit------------->+ : + +<-----------------Latenzzeit--------------------->+ +```) + +==== AT-Pyramide + +#table(columns: 2, +[ERP - Enterprise Resource Planung], [Level 4: Unternehmesnebene], +[MES - Management Execution System], [Level 3: Betriebsebene], +[SCADA - Supervisory, Control and Data Aquisiton], [Level 2: (Prozess-)Leitebene], +[SPS - Industrial Controller, SPS, Embedded System], [Level 1: Steuerungsebene], +[Ein-/Ausgangssignale - Sensoren, Aktoren, Kommunikationssysteme], [Level 1: Feldebene], +[Fertigung / Produktionsprozess], [Level 0: Prozessebene] +) + +*Kontinuierliche Prozesse*: Ständiger Zu- und Abfluss von Material/Energie \ +*Diskontinuierliche Prozesse*: Stückprozesee, Chargenprozesse (Wasser in Flaschen) + +=== Petri-Netze / Ablaufsprache + +// #render(``` +// ,-. ,-. +// ,->( )-. ,->|-->( )->|-. +// ,-. / `-' V. ,-. / `-' V. +// ((_)) ->|+ |-> ((_)) |-> +// `-' \ ,-. ^' `-' \ ,-. ^' +// '->( )_/ '->|-->( )->|_/ +// `-' `-' ' +// ```) + +#grid(columns: 2, column-gutter: 1cm, + diagram( + node-stroke: 1pt, + edge-stroke: 1pt, + node((0,0), none, radius: 0.4cm, extrude: (0, 4), fill: black), + node((1,0), height: 1cm, stroke: 3pt), + node((2,0.5), none, radius: .5cm), + node((2,-0.5), none, radius: .5cm), + node((3,0), height: 1cm, stroke: 3pt), + node((4,0), none, radius: .5cm), + edge((0,0), (1,0), marks: (none, "straight")), + edge((1,0), (2,0.5), marks: (none, "straight")), + edge((1,0), (2,-0.5), marks: (none, "straight")), + edge((2,0.5), (3,0), marks: (none, "straight")), + edge((2,-0.5), (3,0), marks: (none, "straight")), + edge((3,0), (4,0), marks: (none, "straight")) + ), + diagram( + node-stroke: 1pt, + edge-stroke: 1pt, + node((0,0), [Init], inset: 10pt, extrude: (0, -4)), + node((1,0.5), height: 1cm, stroke: 3pt), + node((1,-0.5), height: 1cm, stroke: 3pt), + node((2,0.5), [Schritt0]), + node((2,-0.5), [Schritt1]), + node((3,0.5), height: 1cm, stroke: 3pt), + node((3,-0.5), height: 1cm, stroke: 3pt), + node((4,0), [Schritt2]), + edge((0,0), (1,0.5)), + edge((0,0), (1,-0.5)), + edge((1,0.5), (2,0.5)), + edge((1,-0.5), (2,-0.5)), + edge((2,0.5), (3,0.5)), + edge((2,-0.5), (3,-0.5)), + edge((3,0.5), (4, 0)), + edge((3,-0.5), (4, 0)), + ) + ) + +=== IEC 61131-3: Kontaktplan + +#render(``` +--| |-- Kontakt + +--|/|-- negierter Kontakt vgl. Öffner + +--( )-- Spule vgl. Relais +```) + +SPS-Programmiersprachen: FBS, KOP, ST, AS, CFC |