aboutsummaryrefslogtreecommitdiff
path: root/docs/onderzoeksrapport.tex
blob: 4e013de1d230727f868c58fcb379e4b511e60514 (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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
\documentclass[12pt, a4paper, dutch]{article}

\usepackage[margin=1in]{geometry}
\usepackage{float}
\usepackage{babel}
\usepackage{siunitx}
\usepackage{amsmath}
\usepackage{scalerel}
\usepackage{csquotes}
\usepackage{parskip}
\usepackage{unicode-math}
\usepackage{fontspec}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{needspace}
\usepackage{multicol}
\usepackage{hyperref}
\usepackage{nicematrix}
%\usepackage[backend=biber,
%	bibencoding=utf8,
%	style=apa,
%	bibstyle=numeric,
%]{biblatex}

\setmainfont{TeX Gyre Schola}
\setmathfont{TeX Gyre Schola Math}
\setmonofont{JetBrainsMono Nerd Font}[Scale=0.8]
%\addbibresource{bronnen.bib}
\sisetup{
	group-separator = {.},
	output-decimal-marker = {,}
}

\bigskipamount=7mm
\medskipamount=4mm
\parindent=0mm

\newcommand{\sub}{\textsubscript}
\newcommand{\mul}{\cdot}

\begin{document}
\begin{titlepage}

\centering

{\Huge\bfseries Onderzoeksrapport Lift}

\vspace{2cm}

Loek Le Blansch\\
2180996

\vfill

Hogeschool Avans

Technische informatica

Project Lift \hspace{1cm} Blok 2

\vspace{2cm}

\today \hfill Versie 0.1
\end{titlepage}

\tableofcontents
\newpage

\section{Inleiding}

Project Lift is een project van de opleiding Technische Informatica, op Hogeschool
Avans. Het is een project voor eerstejaarsstudenten, en focust op het automation
studietraject. In dit onderzoeksrapport worden vragen omtrent het programmeren van
PLC's, de software waarmee PLC's geprogrammeerd worden en de hardwareopstelling van
de lift beanbeantwoord.

De hoofdvraag die in dit onderzoeksrapport beantwoord wordt luidt als volgt:
\emph{Hoe kan ik met het ontwikkelprgramma voor de Siemens PLC het bestaande
liftprogramma verder afmaken en testen?}

\section{Fysieke opstelling}

Met de \emph{device configuration} in TIA portal kun je makkelijk zien hoe de fysieke
opstelling van de lift er ongeveer uit ziet, en worden alle in-/uitgangen automatisch
gelabeld zoals hier te zien is:

\begin{figure}[H]
	\centering
	\includegraphics[width=11cm]{figs/opstelling.png}
	\caption{PLC opstelling in TIA Portal}
\end{figure}

In slot 1 zit de PLC zelf, deze bevat de CPU, en heeft wat ingebouwde digitale I/O.
In slot 2 zit een digitale ingangskaart, en in slot 3 een digitale uitgangskaart.
Deze zorgen er voor dat de PLC meer in-/uitgangen tegelijkertijd kan aansturen.

Naast digitale I/O zijn er ook analoge input/output kaarten, maar deze worden niet
gebruikt voor project lift.

Omdat het lastig is om getallen te onthouden voor elke in-/uitgang wordt de \emph{tag
table} gebruikt om de ingangen logische namen te geven in het PLC programma. Deze
zijn te vergelijken met \#define macro's die je bijvoorbeeld bij de Arduino zou
gebruiken om pingetallen namen te geven.

\section{Watchtable}

In de watchtable kun je variabelen zetten om hun waarden live te volgen. Dit is
bijvoorbeeld handig voor diagnose, zodat je kunt controleren of variabelen doen wat
je denkt dat ze moeten doen in theorie.

In de watchtable kunnen alle variabelen, niet alleen uit global memory, maar ook
input en output memory. Ook kun je de manier waarop TIA portal deze waarden moet
interpreteren aanpassen, zodat een kommagetal bijvoorbeeld netjes weergeven wordt.

Ik vind de term watchtable een goede naam omdat het uiteindelijk een tabel is die je
bekijkt.

\section{CPU eigenschappen}

\subsection{Overzicht}

In het \emph{device configuration} scherm kun je de CPU properties aanpassen van de
PLC. Hier kun je bijvoorbeeld in-/uitvoerkaarten configureren, of pulse generators
aanzetten.

\begin{figure}[H]
	\centering
	\includegraphics[width=11cm]{figs/cpuprops.png}
	\caption{CPU properties in TIA portal}
\end{figure}

\subsection{Belangrijke instellingen voor het lift programma}

Voor het lift programma komen de clock memory en system byte goed van pas. De invoer
en uitvoerkaarten zijn al goed geconfigureerd, en hier hoef je verder niet aan te
komen.

De clock byte is een byte waarvoor je zelf een locatie kunt configureren. In deze
byte staan 8 bits met klokken van verschillende frequenties van \SI{10}{\hertz} tot
\SI{0.5}{\hertz}. \'E\'en van deze bits wordt in het liftprogramma gebruikt om het
licht voor de noodstop te laten knipperen.

Ook wordt de system byte gebruikt. In mijn geval om de eerste PLC cyclus te
detecteren. Dit wordt gebruikt om de noodstop te initialiseren, en om de lift naar
een geldige toestand te laten gaan in het geval van stroomuitval.

\section{Diagnostische mogelijkheden}

\subsection{Diagnose buffer}

In de diagnose buffer van de PLC staan berichten die verstuurd zijn door de CPU van
de PLC. Dit kunnen info-berichten, waarschuwingen of foutmeldingen zijn. Hier is een
screenshot te zien uit TIA portal van de diagnose buffer van een goed werkende PLC:

\begin{figure}[H]
	\centering
	\includegraphics[width=11cm]{figs/diagbuf.png}
	\caption{Dialog buffer van de PLC}
\end{figure}

\subsection{Cyclustijd}

Met de cyclustijd van de PLC kun je kijken hoe snel je programma draait. Hier kun je
zien hoe lang de kortste, langste, en meest recente cyclus duurde om uit te voeren in
milliseconden. Hier is een screenshot waarin zo'n diagram staat:

\begin{figure}[H]
	\centering
	\includegraphics[width=11cm]{figs/cycltim.png}
	\caption{Cyclustijdsdiagram van de PLC}
\end{figure}

Hier is af te lezen dat de langste cyclustijd 93 milliseconden is, en dat de kortste
en laatste cyclustijd allebei 1 milliseconde zijn.

\subsection{Defecte uitgangskaart}

Als een uitgangskaart niet goed geconfigureerd is, of defect is geeft deze
foutmeldingen. Deze zien er zo uit:

\section{*Werken met PLC's op Linux}

Omdat Linux kernel drivers gebruikt voor USB apparaten, wordt een usb netwerkadapter
automatisch geconfigureerd als een netwerkapparaat, niet als een usb-randapparaat.
Dit is lastig wanneer je de PLC wil forwarden naar VMWare Horizon om de PLC te testen
op je eigen laptop.

\subsection{PLC forwarden naar VMWare Horizon}

% https://unix.stackexchange.com/questions/528342/trying-to-make-my-usb-wifi-adapter-work-on-virtualbox-kali-guest-windows-host

\section{Conclusie}

%\raggedright
%\setlength\bibitemsep{3mm}
%\printbibliography[heading=bibintoc]

\end{document}