summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrangerot <purple@orangerot.dev>2024-09-04 06:26:00 +0200
committerOrangerot <purple@orangerot.dev>2024-09-04 06:26:00 +0200
commitf4edb9a44ad146209a81a6aa964af8ab36f82e4a (patch)
tree667602d2e78d314db127af98166b7109df7235b4
Initial Commit
-rw-r--r--.gitignore1
-rw-r--r--assets/nassi.pngbin0 -> 59610 bytes
-rw-r--r--sheet.typ212
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
new file mode 100644
index 0000000..83f23a9
--- /dev/null
+++ b/assets/nassi.png
Binary files differ
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