2024-09-04 06:26:00 +02:00
|
|
|
#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), [
|
2024-09-04 21:30:36 +02:00
|
|
|
#link("https://source.orangerot.dev/university/itat-etit-cheatsheet")\
|
2024-09-04 06:26:00 +02:00
|
|
|
#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)))
|
2024-09-04 21:29:24 +02:00
|
|
|
#diagram(node-stroke: 1pt, node((0,0), [Verzweigung], shape: shapes.diamond))
|
2024-09-04 06:26:00 +02:00
|
|
|
],[
|
|
|
|
|
|
|
|
=== 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$
|
|
|
|
|
2024-09-04 21:29:24 +02:00
|
|
|
==== Doppeltes Hashen
|
2024-09-04 06:26:00 +02:00
|
|
|
|
|
|
|
- $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,
|
2024-09-04 21:29:24 +02:00
|
|
|
[ERP - Enterprise Resource Planung], [Level 4: Unternehmensebene],
|
2024-09-04 06:26:00 +02:00
|
|
|
[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 \
|
2024-09-04 21:29:24 +02:00
|
|
|
*Diskontinuierliche Prozesse*: Stückprozesse, Chargenprozesse (Wasser in Flaschen)
|
2024-09-04 06:26:00 +02:00
|
|
|
|
|
|
|
=== 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
|
2024-09-04 21:29:24 +02:00
|
|
|
|
|
|
|
IEC 61131 Objektorientierung
|
|
|
|
|
|
|
|
#pagebreak()
|
|
|
|
|
|
|
|
== Automatisierungsarchitekturen
|
|
|
|
|
|
|
|
#table(
|
|
|
|
columns: (3cm, 4cm, auto),
|
|
|
|
table.header([], [*Zentrale Automatisierung*], [*Dezentrale Automatisierung*]),
|
|
|
|
[Implementierung], [
|
|
|
|
wenige Componenten zB SPS für gesamte Anlage.
|
|
|
|
], [
|
|
|
|
Verteilte Steuerung (SPS) für dedizierte
|
|
|
|
Anlagenteile. Übergeordnete Orchestrierung notwendig order direkte
|
|
|
|
Kommunikation der Modulsteuerungen untereinander.
|
|
|
|
],
|
|
|
|
[Einsatzgebiet], [
|
|
|
|
Zugeschnitten. Statischer Aufbau mit Single-Use
|
|
|
|
], [
|
|
|
|
Aufteilung von Aufgaben/Funktionen. Reduktion der Komplexität der
|
|
|
|
Steuerungskonfiguration. Zusätzlicher Aufwand zur Kommunikation. Hohe
|
|
|
|
Zuverlässigkeit. Schnelle Wartung. Lastverteilung.
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
*Zuverlässigkeit*: Wahrscheinlichkeit dass System Funktion erfüllt \
|
|
|
|
*Ausfall*: Übergang von funktionsfähig zu fehlerhaft \
|
|
|
|
*Fehler*: Zustand bei nichterfüllung mindestens einer Anforderung
|
|
|
|
|
|
|
|
|
|
|
|
*MooN*: M von N Komponenten müssen funktionieren, um Sicherheit zu gewährleisten.
|
|
|
|
|
|
|
|
== Hardware-Redundanz - Doppelstrukturen
|
|
|
|
|
|
|
|
- Zwei Rechner müssen dass selbe Ergebnis berechnen damit fehlerfrei (2oo2)
|
|
|
|
- Zwei Rechner mit Watchdog. Wenn Rechner 1 fehlerhaft, schalte zu Rechner 2,
|
|
|
|
falls auch fehlerhaft: Alarm! (1oo2)
|
|
|
|
- Zwei Rechner mit Watchdog und Lastverteilung. Rechner 2 berechnet normal
|
|
|
|
weniger wichtige Dinge. (1oo2)
|
|
|
|
|
|
|
|
== Fehleridentifikation
|
|
|
|
|
|
|
|
- Sensoren zur Fehlererkennung
|
|
|
|
- Unlogische Zustände
|
|
|
|
- Keine Antwort von Sensor (Timeout)
|
|
|
|
|
|
|
|
== IEC 62061 Zuverlässigkeit (Werte von 1 bis 5)
|
|
|
|
|
|
|
|
- Schwere der Verletzung ($S in [1 hat(=) "Erste Hilfe",4 hat(=) "Tod"]$)
|
|
|
|
- Häufigkeit und Dauer der Gefährdungsposition ($F in [1 hat(=) "< 1 pro Jahr",
|
|
|
|
5 hat(=) >= "1 pro h"]$)
|
|
|
|
- Wahrscheinlichkeit des Auftretens eines gefahrbringenden Ereignisses ($W in [1
|
|
|
|
hat(=) "vernachlässigbat", 5 hat(=) "sehr hoch"]$)
|
|
|
|
- Möglichkeit zur Vermeidung oder Begrenzung des Schadens ($P in [1 hat(=)
|
|
|
|
"wahrscheinlich", 5 hat(=) "unmöglich"]$)
|
|
|
|
|
|
|
|
#image(height: 5.5cm, "assets/sil.png")
|