<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kicker-intern.ee.hm.edu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scharel</id>
	<title>Kicker (internals) - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://kicker-intern.ee.hm.edu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scharel"/>
	<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php/Spezial:Beitr%C3%A4ge/Scharel"/>
	<updated>2026-05-16T03:48:13Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=975</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=975"/>
		<updated>2013-10-02T13:20:33Z</updated>

		<summary type="html">&lt;p&gt;Scharel: /* Aktorik */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Modell&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Gesammtansicht&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegnererkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
Übrigens, die Schnecken wurden im hausinternen [http://www.me.hm.edu/fakultaet/verbundlabore/kca/rpm Rapid Prototyping und Rapid Manufacturing Labor] gefertigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegnererkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die Uhrzeit wird angezeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
Wie in der Industrie, muss auch unser Kicker - als autonomes System - mit entsprechender Sicherheitstechnik ausgerüstet sein. Am Gerät befinden sich insgesamt vier Notaus-Schalter, zwei vorne am Spieltisch, einen an der Bedieneinheit und einen frei platzierbaren. Eine Lichtschranke (Typ: [http://www.sick.com sick] miniTwin2) über dem Spielfeld sorgt dafür dass alle Motoren sofort ausgeschaltet werden wenn jemand ins Spielfeld greift. Alle Sicherheitselemente werden über ein spezielles Sicherheitsrelais (Typ: [http://www.pilz.com/de-INT pilz] PNOZ XV2) geschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Notausknopf Lichtgitter.JPG|Notaus-Schalter mit Lichtgitter dahinter&lt;br /&gt;
Datei:Bedieneinheit.JPG|Bedieneinheit mit Notaus-Schalter&lt;br /&gt;
Datei:Sicherungen.jpg|Elektroverteilung mit Sicherungen&lt;br /&gt;
Datei:Pilz Sicherheitsrelais.JPG|Sicherheitsrelais&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=971</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=971"/>
		<updated>2013-10-02T13:05:04Z</updated>

		<summary type="html">&lt;p&gt;Scharel: /* Neue Highscoreliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|news=underline}}&lt;br /&gt;
&lt;br /&gt;
== Überarbeitete Webseite ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Wie ihr seht sind wir dabei unseren Web-Auftritt etwas neu zu gestalten und den Inhalt etwas aufzuräumen, also schaut gelegentlich mal rein.}}&lt;br /&gt;
&lt;br /&gt;
== Neue Highscoreliste ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Seit einiger Zeit arbeiten wir an einer Highscore-Liste, hier eine kleine Vorschau:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Highscore Screen.png]]&lt;br /&gt;
&lt;br /&gt;
Sie erlaubt uns auf Events das beste Team zu ermitteln, Features sind unter anderem:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Spielzeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
|datum=01.10.2013|user=Scharel}}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=970</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=970"/>
		<updated>2013-10-02T13:04:07Z</updated>

		<summary type="html">&lt;p&gt;Scharel: /* Neue Highscoreliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|news=underline}}&lt;br /&gt;
&lt;br /&gt;
== Überarbeitete Webseite ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Wie ihr seht sind wir dabei unseren Web-Auftritt etwas neu zu gestalten und den Inhalt etwas aufzuräumen, also schaut gelegentlich mal rein.}}&lt;br /&gt;
&lt;br /&gt;
== Neue Highscoreliste ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Seit einiger Zeit arbeiten wir an einer Highscore-Liste, hier eine kleine Vorschau:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Highscore Screen.png]]&lt;br /&gt;
&lt;br /&gt;
Sie erlaubt uns auf Events das beste Team zu ermitteln, Features sind unter anderem:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Spielzeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
|user=Scharel}}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=969</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=969"/>
		<updated>2013-10-02T13:01:31Z</updated>

		<summary type="html">&lt;p&gt;Scharel: /* Neue Highscoreliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|news=underline}}&lt;br /&gt;
&lt;br /&gt;
== Überarbeitete Webseite ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Wie ihr seht sind wir dabei unseren Web-Auftritt etwas neu zu gestalten und den Inhalt etwas aufzuräumen, also schaut gelegentlich mal rein.}}&lt;br /&gt;
&lt;br /&gt;
== Neue Highscoreliste ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Seit einiger Zeit arbeiten wir an einer Highscore-Liste, hier eine kleine Vorschau:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Highscore Screen.png]]&lt;br /&gt;
&lt;br /&gt;
Sie erlaubt uns auf Events das beste Team zu ermitteln, Features sind unter anderem:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Spielzeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Softwareumgebung&amp;diff=962</id>
		<title>Softwareumgebung</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Softwareumgebung&amp;diff=962"/>
		<updated>2013-09-06T09:49:54Z</updated>

		<summary type="html">&lt;p&gt;Scharel: /* UDP-Ports der einzelnen Programme */  &amp;quot;Sonstige&amp;quot; hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den Kicker zu betreiben, sind drei grundlegende Software-Komponenten nötig. Die [[Softwareumgebung#TwinCAT|SPS (TwinCAT)]], die [[Softwareumgebung#Ballerkennung|Ballerkennung]] und die [[Softwareumgebung#Spielsteuerung|Spielsteuerung]]. Um den Zugriff auf die SPS, für die anderen Programme zu vereinfachen, gibt es die [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]].&lt;br /&gt;
&lt;br /&gt;
== TwinCAT ==&lt;br /&gt;
&lt;br /&gt;
[http://www.beckhoff.de/default.asp?twincat/default.htm TwinCAT] ist eine Software-SPS der Firma [http://www.beckhoff.de/ Beckhoff Automation]. Sie bietet sowohl die Funktionalität einer SPS, sowie einer numerischen Bahnregelung (NC), zur Regelung der Elektromotoren. TwinCAT läuft unter Windows XP und erweitert dieses um eine echtzeitfähige Laufzeitumgebung. Es wird [http://www.beckhoff.de/default.asp?twincat/twincat_nc_ptp.htm TwinCAT NC PTP] (Numerical&lt;br /&gt;
Control, Point-To-Point) in der Version 2.10.0 verwendet. Als Schnittstelle zur SPS, steht [http://www.beckhoff.de/default.asp?twincat/twincat_ads_communication_library.htm ADS] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in &amp;quot;Strukturierter Text&amp;quot; und ist im [https://kicker.ee.hm.edu/svn/tags/TwinCAT/ SVN] abgelegt. Programmierer war hier Karsten Schätzle, die Umsetzung geschah 2010 als Teil der Diplomarbeit &amp;quot;Entwicklung, Aufbau und Programmierung eines mehrachsigen Antriebskonzeptes mit überlagerten Bewegungen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_TwinCAT_PLC_Control.png|thumb|none|300px|Visualisierung von TwinCAT]]&lt;br /&gt;
&lt;br /&gt;
== SPSchnittstelle ==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf die SPS zu vereinfachen, wurde die SPSchnittstelle programmiert. Sie übersetzt die ADS-Schnittstelle und stellt ein UDP-Server dar, um eine einheitliche [[Softwareumgebung#Interprozesskommunikation|Interprozesskommunikation]] im Projekt zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in C/C++ und ist im [https://kicker.ee.hm.edu/svn/tags/SPSchnittstelle/ SVN] abgelegt. Programmierer war hier Karsten Schätzle (erste Version, mit TCP-IP), die Umsetzung geschah 2010 als Teil der Diplomarbeit &amp;quot;Entwicklung, Aufbau und Programmierung eines mehrachsigen Antriebskonzeptes mit überlagerten Bewegungen&amp;quot;. Die Umstellung auf UDP erfolgte von Scharel Clemens.&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Ballerkennung ermittelt die Ballposition auf dem Spielfeld mit Hilfe von zwei Embedded-Kameras im 10ms-Takt. Die Position des Balls wird mittels einer Visualisierung am Bildschirm dargestellt und für weitere Programme per UDP-Server zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in C/C++ und ist im [https://kicker.ee.hm.edu/svn/tags/Ballerkennung/ SVN] abgelegt. Programmierer war hier Manuel Zimmermann (erste Version, mit Shared Memory), die Umsetzung geschah 2009 als Teil der Diplomarbeit &amp;quot;Computergestützte visuelle Positionsbestimmung durch Triangulation in zwei Dimensionen&amp;quot;. Die Umstellung auf UDP erfolgte von Manuel Zimmermann und Scharel Clemens.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Ballerkennung.png|thumb|none|300px|Visualisierung der Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
== Spielsteuerung ==&lt;br /&gt;
&lt;br /&gt;
Die Spielsteuerung, ist das Programm, welches die Spielzüge bestimmt. Sie berechnet, mit Hilfe der Ball- und Spielstangenpositionen, welche Bewegungen als nächstes auszuführen sind. Sie stellt also die künstliche Intelligenz dar.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in C++ und ist im [https://kicker.ee.hm.edu/svn/branches/ProCK-KI/ SVN] abgelegt. Programmierer war hier Scharel Clemens, die Umsetzung geschah 2012 als Teil der Diplomarbeit &amp;quot;Konzeption einer Softwareumgebung zur intelligenten Ansteuerung eines automatisierten Tischkickers&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Spielsteuerung.png|thumb|none|300px|Visualisierung der Spielsteuerung&amp;lt;br /&amp;gt;(wurde mittlerweile in ein eigenes Programm ausgelagert)]]&lt;br /&gt;
&lt;br /&gt;
=== Dokumentation ===&lt;br /&gt;
&lt;br /&gt;
Der Quellcode ist recht ausführlich kommentiert und fast vollständig mit [http://www.doxygen.org/ Doxygen]-Kommentaren versehen. Aus dem Quellcode lässt sich mit Hilfe von Doxygen eine vollständige [[Media:Spielsteuerung Doku.pdf|Dokumentation]] der Klassen und Prozeduren extrahieren. Das entsprechende Doxyfile liegt im gleichen Ordner wie der Quellcode. Die Ausgabe erfolgt in drei Formaten: html, latex/pdf und rtf.&lt;br /&gt;
&lt;br /&gt;
=== Programmablauf ===&lt;br /&gt;
&lt;br /&gt;
Aus der Dokumentation und des Quellcodes alleine, ist der Programmablauf nur schwer ersichtlich. Deshalb wird dieser hier, mit Hilfe von Sequenzdiagrammen beschrieben. Der allgemeine Programmablauf, ist diesem [[Media:SequenzDiagramm_KI.pdf‎|Sequenzdiagramm]] zu entnehmen. Es erläutert, welche Klasse wann erzeugt und welche Memberfunktionen wann aufgerufen werden. Die eigentliche Funktionalität (Fahrbefehle für die Spielstangen) befindet sich in der Funktion &amp;lt;code&amp;gt;runAgent()&amp;lt;/code&amp;gt;, der Klasse [[Media:SequenzDiagramm_AxisAgent.pdf‎|&amp;lt;code&amp;gt;AxisAgent&amp;lt;/code&amp;gt;]]. Es gibt vier Instanzen dieser Klasse, und somit 4 Threads, in denen die Funktion &amp;lt;code&amp;gt;runAgent()&amp;lt;/code&amp;gt; parallel ausgeführt wird. Jede Instanz ist für eine Spielstange zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Sequenzdiagramme sind ebenfalls im Microsoft Visual Studio-Format im [https://kicker.ee.hm.edu/svn/branches/ProCK-KI/ SVN] beim Quellcode abgelegt.&lt;br /&gt;
&lt;br /&gt;
Jedes mal, wenn sich die Ballposition verändert, wird die Funktion &amp;lt;code&amp;gt;ballUpdate()&amp;lt;/code&amp;gt; der Klasse &amp;lt;code&amp;gt;KnowledgeBase&amp;lt;/code&amp;gt; aufgerufen. Wenn sich eine Spielstangenposition ändert, wird die Funktion &amp;lt;code&amp;gt;axisUpdate(Gamer gamer, Axis axis)&amp;lt;/code&amp;gt;, ebenfalls der Klasse &amp;lt;code&amp;gt;KnowledgeBase&amp;lt;/code&amp;gt; aufgerufen. Die Parameter &amp;lt;code&amp;gt;gamer&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;axis&amp;lt;/code&amp;gt;, geben an, welche Spielstange sich bewegt hat. Diese Funktionen sind momentan noch leer, können aber später für eine Triggerung und zum Datenabgleich verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Um konstante Daten nicht fest im Quellcode einprogrammieren zu müssen, gibt es zwei Konfigurationsdateien.&lt;br /&gt;
&lt;br /&gt;
Als Dateiformat wird [http://de.wikipedia.org/wiki/Extensible_Markup_Language XML] gewählt. Die erste Datei heißt &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt; und ist im relativen Ordner (gegenüber dem Ausführungsverzeichnis) &amp;lt;code&amp;gt;config/&amp;lt;/code&amp;gt; abgelegt. Das Attribut &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; vom Element &amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt; gibt den Dateinamen der zweiten Datei an. Diese liegt im gleichen Ordner wie die erste Datei und beinhaltet die eigentliche Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Das Zwei-Dateien-System erlaubt es verschiedene Profile, für verschiedene Laufzeitumgebungen (z.B.: verschiedene Server-Adressen der Ballerkennung/SPSchnittstelle) anzulegen. Die &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt;-Elemente innerhalb &amp;lt;code&amp;gt;profiles&amp;lt;/code&amp;gt;, geben an, welche weiteren Dateien/Profile zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Die Daten werden von der Klasse &amp;lt;code&amp;gt;Config&amp;lt;/code&amp;gt; verwaltet. Als Interpreter für die Dateien, wird [http://www.grinninglizard.com/tinyxml/ TinyXML] verwendet.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau von &amp;lt;code&amp;gt;config/config.xml&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dashed #2F6FAB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; line highlight=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;config&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Konfiguration die beim Programmstart geladen werden soll --&amp;gt;&lt;br /&gt;
    &amp;lt;startup file=&amp;quot;default.xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- Alle verfügbaren Konfigurationsdateien --&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
        &amp;lt;file name=&amp;quot;default.xml&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;file name=&amp;quot;localhost.xml&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;file name=&amp;quot;localhost_kickerAndBallAtProck-Kicker.xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aufbau von &amp;lt;code&amp;gt;config/[DATEINAME].xml&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Der Aufbau der zweiten Konfigurationsdatei, ist [[Softwareumgebung:Konfigurationsdatei|hier]] erläutert.&lt;br /&gt;
&lt;br /&gt;
=== Exception Beschreibungen ===&lt;br /&gt;
&lt;br /&gt;
In der Spielsteuerung sind, zur Fehlerbehandlung während der Laufzeit, Exceptions implementiert. Aktuell, können Exceptions geworfen werden, es gibt jedoch noch keine sinnvolle Behandlung. Es wird lediglich eine Nachricht in der Konsole ausgegeben. Die Exceptions beinhalten einen Fehler-Code, für den in der Datei &amp;lt;code&amp;gt;config/exception.xml&amp;lt;/code&amp;gt; die Beschreibungen hinterlegt sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dashed #2F6FAB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;exceptons&amp;gt;&lt;br /&gt;
  &amp;lt;ex_000 desc=&amp;quot;Es liegt kein Fehler vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_001 desc=&amp;quot;Es ist ein unbekannter Fehler aufgetreten!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_002 desc=&amp;quot;Es liegt ein Problem mit einer Datei vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_003 desc=&amp;quot;Es liegt ein Problem mit einer Configuration vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_004 desc=&amp;quot;Es liegt ein Problem mit einem Mutex vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_004 desc=&amp;quot;Timeout beim Warten auf ein Mutex!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_006 desc=&amp;quot;Es konnte eine Host-Adresse nicht aufgelöst werden!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_007 desc=&amp;quot;Es liegt ein Problem mit einem Thread vor!&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ex_100 desc=&amp;quot;Es liegt ein allgemeines Problem mit der Ballerkennung vor!&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ex_200 desc=&amp;quot;Es liegt ein allgemeines Problem mit dem SPServer vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_201 desc=&amp;quot;Es scheint eine Spielstange hängen geblieben zu sein!&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ex_300 desc=&amp;quot;Es liegt ein allgemeines Problem mir der Wissensbasis vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_301 desc=&amp;quot;Es liegt ein Problem mit einem System-Zustand vor!&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/exceptons&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interprozesskommunikation ==&lt;br /&gt;
&lt;br /&gt;
Für die Interprozesskommunikation (nachgehend mit &amp;quot;IPC&amp;quot; abgekürzt) wird das Netzwerkprotokoll [http://de.wikipedia.org/wiki/User_Datagram_Protocol UDP] verwendet. Im Datenbereich der UDP-Pakete, ist ein übergeordnetes, eigenes Protokoll aufgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Server/Client ===&lt;br /&gt;
&lt;br /&gt;
Eine Kommunikation findet immer zwischen zwei Parteien statt. Dabei unterscheidet man zwischen Server- und Client-Applikationen.&lt;br /&gt;
&lt;br /&gt;
;Server&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:[[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]]&lt;br /&gt;
:[[Softwareumgebung#Ballerkennung|Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
;Client&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:[[Softwareumgebung#Spielsteuerung|Spielsteuerung]]&lt;br /&gt;
:[[Softwareumgebung#OpenGL_Grafik|OpenGL_Grafik]]&lt;br /&gt;
&lt;br /&gt;
Die Server-Programme sind hier diejenigen, die den Zugriff auf die reale Welt ermöglichen.&lt;br /&gt;
Die Client-Programme benutzen die, zur Verfügung gestellten Daten um diese auszuwerten und ggf. in das Geschehen einzugreifen (per Kommando an den Server).&lt;br /&gt;
&lt;br /&gt;
=== Aufgesetztes Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Damit der Datenaustausch Prozess- und Plattform-übergreifend stattfinden kann, muss vereinbart werden, wie die Daten im Datenbereich eines UDP-Paketes abzulegen sind. Jedes Paket hat mindestens ein 16-Bit großes, &amp;lt;code&amp;gt;unsigned int&amp;lt;/code&amp;gt;-Feld mit einer ID, die angibt, welche Daten folgen. Danach, folgt dann die, für die entsprechende ID festgelegt Datenstruktur. Einige Datenstrukturen sind bereits festgelegt, wie etwa die Struktur zum erfassen einer Ballposition, oder die Struktur zum erfassen der Spielstangenpositionen. Weitere Strukturen können nach belieben hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
In der aktuellen Implementierung, gibt es vier grundlegende Arten von Paketen. Sie unterscheiden sich weniger in der Struktur als in ihrer Behandlung beim Empfänger:&lt;br /&gt;
&lt;br /&gt;
;Alive-Pakete&lt;br /&gt;
:Sie dienen zum Überprüfen ob der Kommunikationspartner verfügbar ist.&lt;br /&gt;
:Nach der ID folgt ein &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt;-Wert, welcher als eindeutige Kennung dient.&lt;br /&gt;
:Auf eine Alive-Anfrage, sollte eine Alive-Antwort, mit dem gleichen long-Wert als Kennung zurückgesendet werden.&lt;br /&gt;
:Beispiel: [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] überprüft ob die [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]] verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
;Anfrage-Pakete&lt;br /&gt;
:Sie fordern Informationen vom Kommunikationspartner.&lt;br /&gt;
:Nach der ID folgt ein Bitfeld, wo jedes Bit für ein bestimmtes Informations-Paket steht.&lt;br /&gt;
:Die Antwort ist in der Regel ein Informations-Paket.&lt;br /&gt;
:Beispiel: [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] fragt den Spielstand bei der [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]] ab.&lt;br /&gt;
&lt;br /&gt;
;Abonnement-Pakete&lt;br /&gt;
:Sie abonnieren Informationen vom Kommunikationspartner.&lt;br /&gt;
:Nach der ID folgt ein boolescher Wert, welcher das Abonnement entweder abschließt (&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;) oder kündigt (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
:Danach wird von der Gegenseite jedes mal ein Informations-Paket gesendet, wenn sich der abonnierte Wert entweder verändert hat (z.B.: Spielstand) oder neu ermittelt wurde (z.B.: Ballposition).&lt;br /&gt;
:Beispiel: [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] abonniert die Ballposition bei der [[Softwareumgebung#Ballerkennung|Ballerkennung]].&lt;br /&gt;
&lt;br /&gt;
;Informations-Pakete&lt;br /&gt;
:Sie beinhalten Informationen über die Umwelt.&lt;br /&gt;
:Nach der ID folgt ein bestimmter Datentyp oder eine Struktur, je nach Festlegung für die ID.&lt;br /&gt;
:Ist in der Regel die Antwort auf ein Anfrage-Paket oder ein abonnierter Wert.&lt;br /&gt;
:Beispiel: [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]] sendet den Spielstand an die [[Softwareumgebung#Spielsteuerung|Spielsteuerung]].&lt;br /&gt;
&lt;br /&gt;
=== Aufbau der Datenpakete ===&lt;br /&gt;
&lt;br /&gt;
Im [https://kicker.ee.hm.edu/svn/trunk/ProCK-KI-new-TEST/Interprozesskommunikation/ SVN] sind Beispielimplementationen für verschiedene, denkbare Kommunikationspartner abgelegt. [https://kicker.ee.hm.edu/svn/trunk/ProCK-KI-new-TEST/Interprozesskommunikation/CompleteClient/ CompleteClient] und [https://kicker.ee.hm.edu/svn/trunk/ProCK-KI-new-TEST/Interprozesskommunikation/CompleteServer/ CompleteServer] sind vollständig implementierte Kommunikationspartner, bei denen alle Datenpakete implementiert sind. Diese sollten als Grundlage für ein neues Programm in der Softwareumgebung herangezogen werden. Die Dokumentation ([[Media:CompleteClient Doku.pdf|CompleteClient]], [[Media:CompleteServer Doku.pdf|CompleteServer]]) zu diesen Programmen vertieft die Funktionsweise der IPC und ist im Quellcode in Doxygen Kommentaren abgelegt.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel der IPC zwischen Ballerkennung und Spielsteuerung ===&lt;br /&gt;
&lt;br /&gt;
Dieses [[Media:SequenzDiagramm_KommunikationBall.pdf|Sequenzdiagramm]] beschreibt den sequentiellen Ablauf der IPC zwischen [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] und [[Softwareumgebung#Ballerkennung|Ballerkennung]], innerhalb der [[Softwareumgebung#Spielsteuerung|Spielsteuerung]].&lt;br /&gt;
&lt;br /&gt;
=== UDP-Ports der einzelnen Programme ===&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Programm&lt;br /&gt;
!Art&lt;br /&gt;
!Port&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]]&lt;br /&gt;
|SPS-&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#Ballerkennung|Ballerkennung]]&lt;br /&gt;
|Ball-&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
|50001&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#Spielsteuerung|Spielsteuerung]]&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60000&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#Spielsteuerung|Spielsteuerung]]&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60001&lt;br /&gt;
|-&lt;br /&gt;
|Viualisierung&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60010&lt;br /&gt;
|-&lt;br /&gt;
|Viualisierung&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60011&lt;br /&gt;
|-&lt;br /&gt;
|Highscore-Liste&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60020&lt;br /&gt;
|-&lt;br /&gt;
|Highscore-Liste&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60021&lt;br /&gt;
|-&lt;br /&gt;
|Sonstige&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60100&lt;br /&gt;
|-&lt;br /&gt;
|Sonstige&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60101&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Softwareumgebung&amp;diff=961</id>
		<title>Softwareumgebung</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Softwareumgebung&amp;diff=961"/>
		<updated>2013-09-06T09:40:38Z</updated>

		<summary type="html">&lt;p&gt;Scharel: /* Interprozesskommunikation */  Belegung der UDP-Ports aufgelistet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den Kicker zu betreiben, sind drei grundlegende Software-Komponenten nötig. Die [[Softwareumgebung#TwinCAT|SPS (TwinCAT)]], die [[Softwareumgebung#Ballerkennung|Ballerkennung]] und die [[Softwareumgebung#Spielsteuerung|Spielsteuerung]]. Um den Zugriff auf die SPS, für die anderen Programme zu vereinfachen, gibt es die [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]].&lt;br /&gt;
&lt;br /&gt;
== TwinCAT ==&lt;br /&gt;
&lt;br /&gt;
[http://www.beckhoff.de/default.asp?twincat/default.htm TwinCAT] ist eine Software-SPS der Firma [http://www.beckhoff.de/ Beckhoff Automation]. Sie bietet sowohl die Funktionalität einer SPS, sowie einer numerischen Bahnregelung (NC), zur Regelung der Elektromotoren. TwinCAT läuft unter Windows XP und erweitert dieses um eine echtzeitfähige Laufzeitumgebung. Es wird [http://www.beckhoff.de/default.asp?twincat/twincat_nc_ptp.htm TwinCAT NC PTP] (Numerical&lt;br /&gt;
Control, Point-To-Point) in der Version 2.10.0 verwendet. Als Schnittstelle zur SPS, steht [http://www.beckhoff.de/default.asp?twincat/twincat_ads_communication_library.htm ADS] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in &amp;quot;Strukturierter Text&amp;quot; und ist im [https://kicker.ee.hm.edu/svn/tags/TwinCAT/ SVN] abgelegt. Programmierer war hier Karsten Schätzle, die Umsetzung geschah 2010 als Teil der Diplomarbeit &amp;quot;Entwicklung, Aufbau und Programmierung eines mehrachsigen Antriebskonzeptes mit überlagerten Bewegungen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_TwinCAT_PLC_Control.png|thumb|none|300px|Visualisierung von TwinCAT]]&lt;br /&gt;
&lt;br /&gt;
== SPSchnittstelle ==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf die SPS zu vereinfachen, wurde die SPSchnittstelle programmiert. Sie übersetzt die ADS-Schnittstelle und stellt ein UDP-Server dar, um eine einheitliche [[Softwareumgebung#Interprozesskommunikation|Interprozesskommunikation]] im Projekt zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in C/C++ und ist im [https://kicker.ee.hm.edu/svn/tags/SPSchnittstelle/ SVN] abgelegt. Programmierer war hier Karsten Schätzle (erste Version, mit TCP-IP), die Umsetzung geschah 2010 als Teil der Diplomarbeit &amp;quot;Entwicklung, Aufbau und Programmierung eines mehrachsigen Antriebskonzeptes mit überlagerten Bewegungen&amp;quot;. Die Umstellung auf UDP erfolgte von Scharel Clemens.&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Ballerkennung ermittelt die Ballposition auf dem Spielfeld mit Hilfe von zwei Embedded-Kameras im 10ms-Takt. Die Position des Balls wird mittels einer Visualisierung am Bildschirm dargestellt und für weitere Programme per UDP-Server zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in C/C++ und ist im [https://kicker.ee.hm.edu/svn/tags/Ballerkennung/ SVN] abgelegt. Programmierer war hier Manuel Zimmermann (erste Version, mit Shared Memory), die Umsetzung geschah 2009 als Teil der Diplomarbeit &amp;quot;Computergestützte visuelle Positionsbestimmung durch Triangulation in zwei Dimensionen&amp;quot;. Die Umstellung auf UDP erfolgte von Manuel Zimmermann und Scharel Clemens.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Ballerkennung.png|thumb|none|300px|Visualisierung der Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
== Spielsteuerung ==&lt;br /&gt;
&lt;br /&gt;
Die Spielsteuerung, ist das Programm, welches die Spielzüge bestimmt. Sie berechnet, mit Hilfe der Ball- und Spielstangenpositionen, welche Bewegungen als nächstes auszuführen sind. Sie stellt also die künstliche Intelligenz dar.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung erfolgte in C++ und ist im [https://kicker.ee.hm.edu/svn/branches/ProCK-KI/ SVN] abgelegt. Programmierer war hier Scharel Clemens, die Umsetzung geschah 2012 als Teil der Diplomarbeit &amp;quot;Konzeption einer Softwareumgebung zur intelligenten Ansteuerung eines automatisierten Tischkickers&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Spielsteuerung.png|thumb|none|300px|Visualisierung der Spielsteuerung&amp;lt;br /&amp;gt;(wurde mittlerweile in ein eigenes Programm ausgelagert)]]&lt;br /&gt;
&lt;br /&gt;
=== Dokumentation ===&lt;br /&gt;
&lt;br /&gt;
Der Quellcode ist recht ausführlich kommentiert und fast vollständig mit [http://www.doxygen.org/ Doxygen]-Kommentaren versehen. Aus dem Quellcode lässt sich mit Hilfe von Doxygen eine vollständige [[Media:Spielsteuerung Doku.pdf|Dokumentation]] der Klassen und Prozeduren extrahieren. Das entsprechende Doxyfile liegt im gleichen Ordner wie der Quellcode. Die Ausgabe erfolgt in drei Formaten: html, latex/pdf und rtf.&lt;br /&gt;
&lt;br /&gt;
=== Programmablauf ===&lt;br /&gt;
&lt;br /&gt;
Aus der Dokumentation und des Quellcodes alleine, ist der Programmablauf nur schwer ersichtlich. Deshalb wird dieser hier, mit Hilfe von Sequenzdiagrammen beschrieben. Der allgemeine Programmablauf, ist diesem [[Media:SequenzDiagramm_KI.pdf‎|Sequenzdiagramm]] zu entnehmen. Es erläutert, welche Klasse wann erzeugt und welche Memberfunktionen wann aufgerufen werden. Die eigentliche Funktionalität (Fahrbefehle für die Spielstangen) befindet sich in der Funktion &amp;lt;code&amp;gt;runAgent()&amp;lt;/code&amp;gt;, der Klasse [[Media:SequenzDiagramm_AxisAgent.pdf‎|&amp;lt;code&amp;gt;AxisAgent&amp;lt;/code&amp;gt;]]. Es gibt vier Instanzen dieser Klasse, und somit 4 Threads, in denen die Funktion &amp;lt;code&amp;gt;runAgent()&amp;lt;/code&amp;gt; parallel ausgeführt wird. Jede Instanz ist für eine Spielstange zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Sequenzdiagramme sind ebenfalls im Microsoft Visual Studio-Format im [https://kicker.ee.hm.edu/svn/branches/ProCK-KI/ SVN] beim Quellcode abgelegt.&lt;br /&gt;
&lt;br /&gt;
Jedes mal, wenn sich die Ballposition verändert, wird die Funktion &amp;lt;code&amp;gt;ballUpdate()&amp;lt;/code&amp;gt; der Klasse &amp;lt;code&amp;gt;KnowledgeBase&amp;lt;/code&amp;gt; aufgerufen. Wenn sich eine Spielstangenposition ändert, wird die Funktion &amp;lt;code&amp;gt;axisUpdate(Gamer gamer, Axis axis)&amp;lt;/code&amp;gt;, ebenfalls der Klasse &amp;lt;code&amp;gt;KnowledgeBase&amp;lt;/code&amp;gt; aufgerufen. Die Parameter &amp;lt;code&amp;gt;gamer&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;axis&amp;lt;/code&amp;gt;, geben an, welche Spielstange sich bewegt hat. Diese Funktionen sind momentan noch leer, können aber später für eine Triggerung und zum Datenabgleich verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Um konstante Daten nicht fest im Quellcode einprogrammieren zu müssen, gibt es zwei Konfigurationsdateien.&lt;br /&gt;
&lt;br /&gt;
Als Dateiformat wird [http://de.wikipedia.org/wiki/Extensible_Markup_Language XML] gewählt. Die erste Datei heißt &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt; und ist im relativen Ordner (gegenüber dem Ausführungsverzeichnis) &amp;lt;code&amp;gt;config/&amp;lt;/code&amp;gt; abgelegt. Das Attribut &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; vom Element &amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt; gibt den Dateinamen der zweiten Datei an. Diese liegt im gleichen Ordner wie die erste Datei und beinhaltet die eigentliche Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Das Zwei-Dateien-System erlaubt es verschiedene Profile, für verschiedene Laufzeitumgebungen (z.B.: verschiedene Server-Adressen der Ballerkennung/SPSchnittstelle) anzulegen. Die &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt;-Elemente innerhalb &amp;lt;code&amp;gt;profiles&amp;lt;/code&amp;gt;, geben an, welche weiteren Dateien/Profile zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Die Daten werden von der Klasse &amp;lt;code&amp;gt;Config&amp;lt;/code&amp;gt; verwaltet. Als Interpreter für die Dateien, wird [http://www.grinninglizard.com/tinyxml/ TinyXML] verwendet.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau von &amp;lt;code&amp;gt;config/config.xml&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dashed #2F6FAB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; line highlight=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;config&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Konfiguration die beim Programmstart geladen werden soll --&amp;gt;&lt;br /&gt;
    &amp;lt;startup file=&amp;quot;default.xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- Alle verfügbaren Konfigurationsdateien --&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
        &amp;lt;file name=&amp;quot;default.xml&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;file name=&amp;quot;localhost.xml&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;file name=&amp;quot;localhost_kickerAndBallAtProck-Kicker.xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aufbau von &amp;lt;code&amp;gt;config/[DATEINAME].xml&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Der Aufbau der zweiten Konfigurationsdatei, ist [[Softwareumgebung:Konfigurationsdatei|hier]] erläutert.&lt;br /&gt;
&lt;br /&gt;
=== Exception Beschreibungen ===&lt;br /&gt;
&lt;br /&gt;
In der Spielsteuerung sind, zur Fehlerbehandlung während der Laufzeit, Exceptions implementiert. Aktuell, können Exceptions geworfen werden, es gibt jedoch noch keine sinnvolle Behandlung. Es wird lediglich eine Nachricht in der Konsole ausgegeben. Die Exceptions beinhalten einen Fehler-Code, für den in der Datei &amp;lt;code&amp;gt;config/exception.xml&amp;lt;/code&amp;gt; die Beschreibungen hinterlegt sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dashed #2F6FAB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;exceptons&amp;gt;&lt;br /&gt;
  &amp;lt;ex_000 desc=&amp;quot;Es liegt kein Fehler vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_001 desc=&amp;quot;Es ist ein unbekannter Fehler aufgetreten!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_002 desc=&amp;quot;Es liegt ein Problem mit einer Datei vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_003 desc=&amp;quot;Es liegt ein Problem mit einer Configuration vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_004 desc=&amp;quot;Es liegt ein Problem mit einem Mutex vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_004 desc=&amp;quot;Timeout beim Warten auf ein Mutex!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_006 desc=&amp;quot;Es konnte eine Host-Adresse nicht aufgelöst werden!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_007 desc=&amp;quot;Es liegt ein Problem mit einem Thread vor!&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ex_100 desc=&amp;quot;Es liegt ein allgemeines Problem mit der Ballerkennung vor!&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ex_200 desc=&amp;quot;Es liegt ein allgemeines Problem mit dem SPServer vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_201 desc=&amp;quot;Es scheint eine Spielstange hängen geblieben zu sein!&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ex_300 desc=&amp;quot;Es liegt ein allgemeines Problem mir der Wissensbasis vor!&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;ex_301 desc=&amp;quot;Es liegt ein Problem mit einem System-Zustand vor!&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/exceptons&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interprozesskommunikation ==&lt;br /&gt;
&lt;br /&gt;
Für die Interprozesskommunikation (nachgehend mit &amp;quot;IPC&amp;quot; abgekürzt) wird das Netzwerkprotokoll [http://de.wikipedia.org/wiki/User_Datagram_Protocol UDP] verwendet. Im Datenbereich der UDP-Pakete, ist ein übergeordnetes, eigenes Protokoll aufgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Server/Client ===&lt;br /&gt;
&lt;br /&gt;
Eine Kommunikation findet immer zwischen zwei Parteien statt. Dabei unterscheidet man zwischen Server- und Client-Applikationen.&lt;br /&gt;
&lt;br /&gt;
;Server&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:[[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]]&lt;br /&gt;
:[[Softwareumgebung#Ballerkennung|Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
;Client&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:[[Softwareumgebung#Spielsteuerung|Spielsteuerung]]&lt;br /&gt;
:[[Softwareumgebung#OpenGL_Grafik|OpenGL_Grafik]]&lt;br /&gt;
&lt;br /&gt;
Die Server-Programme sind hier diejenigen, die den Zugriff auf die reale Welt ermöglichen.&lt;br /&gt;
Die Client-Programme benutzen die, zur Verfügung gestellten Daten um diese auszuwerten und ggf. in das Geschehen einzugreifen (per Kommando an den Server).&lt;br /&gt;
&lt;br /&gt;
=== Aufgesetztes Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Damit der Datenaustausch Prozess- und Plattform-übergreifend stattfinden kann, muss vereinbart werden, wie die Daten im Datenbereich eines UDP-Paketes abzulegen sind. Jedes Paket hat mindestens ein 16-Bit großes, &amp;lt;code&amp;gt;unsigned int&amp;lt;/code&amp;gt;-Feld mit einer ID, die angibt, welche Daten folgen. Danach, folgt dann die, für die entsprechende ID festgelegt Datenstruktur. Einige Datenstrukturen sind bereits festgelegt, wie etwa die Struktur zum erfassen einer Ballposition, oder die Struktur zum erfassen der Spielstangenpositionen. Weitere Strukturen können nach belieben hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
In der aktuellen Implementierung, gibt es vier grundlegende Arten von Paketen. Sie unterscheiden sich weniger in der Struktur als in ihrer Behandlung beim Empfänger:&lt;br /&gt;
&lt;br /&gt;
;Alive-Pakete&lt;br /&gt;
:Sie dienen zum Überprüfen ob der Kommunikationspartner verfügbar ist.&lt;br /&gt;
:Nach der ID folgt ein &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt;-Wert, welcher als eindeutige Kennung dient.&lt;br /&gt;
:Auf eine Alive-Anfrage, sollte eine Alive-Antwort, mit dem gleichen long-Wert als Kennung zurückgesendet werden.&lt;br /&gt;
:Beispiel: [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] überprüft ob die [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]] verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
;Anfrage-Pakete&lt;br /&gt;
:Sie fordern Informationen vom Kommunikationspartner.&lt;br /&gt;
:Nach der ID folgt ein Bitfeld, wo jedes Bit für ein bestimmtes Informations-Paket steht.&lt;br /&gt;
:Die Antwort ist in der Regel ein Informations-Paket.&lt;br /&gt;
:Beispiel: [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] fragt den Spielstand bei der [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]] ab.&lt;br /&gt;
&lt;br /&gt;
;Abonnement-Pakete&lt;br /&gt;
:Sie abonnieren Informationen vom Kommunikationspartner.&lt;br /&gt;
:Nach der ID folgt ein boolescher Wert, welcher das Abonnement entweder abschließt (&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;) oder kündigt (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
:Danach wird von der Gegenseite jedes mal ein Informations-Paket gesendet, wenn sich der abonnierte Wert entweder verändert hat (z.B.: Spielstand) oder neu ermittelt wurde (z.B.: Ballposition).&lt;br /&gt;
:Beispiel: [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] abonniert die Ballposition bei der [[Softwareumgebung#Ballerkennung|Ballerkennung]].&lt;br /&gt;
&lt;br /&gt;
;Informations-Pakete&lt;br /&gt;
:Sie beinhalten Informationen über die Umwelt.&lt;br /&gt;
:Nach der ID folgt ein bestimmter Datentyp oder eine Struktur, je nach Festlegung für die ID.&lt;br /&gt;
:Ist in der Regel die Antwort auf ein Anfrage-Paket oder ein abonnierter Wert.&lt;br /&gt;
:Beispiel: [[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]] sendet den Spielstand an die [[Softwareumgebung#Spielsteuerung|Spielsteuerung]].&lt;br /&gt;
&lt;br /&gt;
=== Aufbau der Datenpakete ===&lt;br /&gt;
&lt;br /&gt;
Im [https://kicker.ee.hm.edu/svn/trunk/ProCK-KI-new-TEST/Interprozesskommunikation/ SVN] sind Beispielimplementationen für verschiedene, denkbare Kommunikationspartner abgelegt. [https://kicker.ee.hm.edu/svn/trunk/ProCK-KI-new-TEST/Interprozesskommunikation/CompleteClient/ CompleteClient] und [https://kicker.ee.hm.edu/svn/trunk/ProCK-KI-new-TEST/Interprozesskommunikation/CompleteServer/ CompleteServer] sind vollständig implementierte Kommunikationspartner, bei denen alle Datenpakete implementiert sind. Diese sollten als Grundlage für ein neues Programm in der Softwareumgebung herangezogen werden. Die Dokumentation ([[Media:CompleteClient Doku.pdf|CompleteClient]], [[Media:CompleteServer Doku.pdf|CompleteServer]]) zu diesen Programmen vertieft die Funktionsweise der IPC und ist im Quellcode in Doxygen Kommentaren abgelegt.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel der IPC zwischen Ballerkennung und Spielsteuerung ===&lt;br /&gt;
&lt;br /&gt;
Dieses [[Media:SequenzDiagramm_KommunikationBall.pdf|Sequenzdiagramm]] beschreibt den sequentiellen Ablauf der IPC zwischen [[Softwareumgebung#Spielsteuerung|Spielsteuerung]] und [[Softwareumgebung#Ballerkennung|Ballerkennung]], innerhalb der [[Softwareumgebung#Spielsteuerung|Spielsteuerung]].&lt;br /&gt;
&lt;br /&gt;
=== UDP-Ports der einzelnen Programme ===&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Programm&lt;br /&gt;
!Art&lt;br /&gt;
!Port&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#SPSchnittstelle|SPSchnittstelle]]&lt;br /&gt;
|SPS-&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#Ballerkennung|Ballerkennung]]&lt;br /&gt;
|Ball-&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
|50001&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#Spielsteuerung|Spielsteuerung]]&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60000&lt;br /&gt;
|-&lt;br /&gt;
|[[Softwareumgebung#Spielsteuerung|Spielsteuerung]]&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60001&lt;br /&gt;
|-&lt;br /&gt;
|Viualisierung&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60010&lt;br /&gt;
|-&lt;br /&gt;
|Viualisierung&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60011&lt;br /&gt;
|-&lt;br /&gt;
|Highscore-Liste&lt;br /&gt;
|SPS-Client&lt;br /&gt;
|60020&lt;br /&gt;
|-&lt;br /&gt;
|Highscore-Liste&lt;br /&gt;
|Ball-Client&lt;br /&gt;
|60021&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage_Diskussion:Navigation&amp;diff=960</id>
		<title>Vorlage Diskussion:Navigation</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage_Diskussion:Navigation&amp;diff=960"/>
		<updated>2013-08-30T13:49:24Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Home hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Vorlage stellt die neue Hauptnavigation dar und kann mittels &amp;lt;nowiki&amp;gt;{{Navigation}}&amp;lt;/nowiki&amp;gt; eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Es besteht die Möglichkeit den Text der einzelnen Navigationspunkte zu dekorieren indem man dem entsprechenden Parameter eine CSS text-decoration Eigenschaft übergibt, z.B.:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Navigation|news=underline}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Erlaubt sind hierbei die Eigenschaften &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; (dies ist der Standardwert und muss nicht explizit angegeben werden), &amp;lt;code&amp;gt;underline&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;overline&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;line-through&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;blink&amp;lt;/code&amp;gt; (wird mittlerweile von den meisten Browsern ignoriert).&lt;br /&gt;
&lt;br /&gt;
Die Navigation beinhaltet folgende Links:&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Name&lt;br /&gt;
!Verlinkte Seite&lt;br /&gt;
!Parametername&lt;br /&gt;
|-&lt;br /&gt;
|Home&lt;br /&gt;
|[[Projekt_Computerkicker_(ProCK)]]&lt;br /&gt;
|home&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|Aktuelles&lt;br /&gt;
|[[Aktuelles]]&lt;br /&gt;
|news&lt;br /&gt;
|-&lt;br /&gt;
|Bilder&lt;br /&gt;
|[[Bilder]]&lt;br /&gt;
|pictures&lt;br /&gt;
|-&lt;br /&gt;
|Hardware&lt;br /&gt;
|[[Hardware]]&lt;br /&gt;
|hardware&lt;br /&gt;
|-&lt;br /&gt;
|Software&lt;br /&gt;
|[[Software]]&lt;br /&gt;
|software&lt;br /&gt;
|-&lt;br /&gt;
|Über uns&lt;br /&gt;
|[[Über uns]]&lt;br /&gt;
|about&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage:Navigation&amp;diff=959</id>
		<title>Vorlage:Navigation</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage:Navigation&amp;diff=959"/>
		<updated>2013-08-30T13:47:52Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Sektion Bilder nach hinten verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Projekt_Computerkicker_(ProCK)|&amp;lt;span style=&amp;quot;text-decoration:{{{home|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:60px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;]][[Aktuelles|&amp;lt;span style=&amp;quot;text-decoration:{{{news|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Aktuelles&amp;lt;/span&amp;gt;]][[Hardware|&amp;lt;span style=&amp;quot;text-decoration:{{{hardware|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Hardware&amp;lt;/span&amp;gt;]][[Software|&amp;lt;span style=&amp;quot;text-decoration:{{{software|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Software&amp;lt;/span&amp;gt;]][[Bilder|&amp;lt;span style=&amp;quot;text-decoration:{{{pictures|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Bilder&amp;lt;/span&amp;gt;]][[Über uns|&amp;lt;span style=&amp;quot;text-decoration:{{{about|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Über uns&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage:Navigation&amp;diff=957</id>
		<title>Vorlage:Navigation</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage:Navigation&amp;diff=957"/>
		<updated>2013-08-30T13:46:22Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Margin wieder nach rechts angefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Projekt_Computerkicker_(ProCK)|&amp;lt;span style=&amp;quot;text-decoration:{{{home|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:60px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;]][[Aktuelles|&amp;lt;span style=&amp;quot;text-decoration:{{{news|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Aktuelles&amp;lt;/span&amp;gt;]][[Bilder|&amp;lt;span style=&amp;quot;text-decoration:{{{pictures|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Bilder&amp;lt;/span&amp;gt;]][[Hardware|&amp;lt;span style=&amp;quot;text-decoration:{{{hardware|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Hardware&amp;lt;/span&amp;gt;]][[Software|&amp;lt;span style=&amp;quot;text-decoration:{{{software|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Software&amp;lt;/span&amp;gt;]][[Über uns|&amp;lt;span style=&amp;quot;text-decoration:{{{about|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-right:7px;margin-bottom:7px;&amp;quot;&amp;gt;Über uns&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage:Navigation&amp;diff=956</id>
		<title>Vorlage:Navigation</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage:Navigation&amp;diff=956"/>
		<updated>2013-08-30T13:45:23Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Home hinzugefügt und Breite der Links verringert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Projekt_Computerkicker_(ProCK)|&amp;lt;span style=&amp;quot;text-decoration:{{{home|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:60px;padding:5px 15px;margin-left:7px;margin-bottom:7px;&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;]][[Aktuelles|&amp;lt;span style=&amp;quot;text-decoration:{{{news|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-left:7px;margin-bottom:7px;&amp;quot;&amp;gt;Aktuelles&amp;lt;/span&amp;gt;]][[Bilder|&amp;lt;span style=&amp;quot;text-decoration:{{{pictures|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-left:7px;margin-bottom:7px;&amp;quot;&amp;gt;Bilder&amp;lt;/span&amp;gt;]][[Hardware|&amp;lt;span style=&amp;quot;text-decoration:{{{hardware|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-left:7px;margin-bottom:7px;&amp;quot;&amp;gt;Hardware&amp;lt;/span&amp;gt;]][[Software|&amp;lt;span style=&amp;quot;text-decoration:{{{software|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-left:7px;margin-bottom:7px;&amp;quot;&amp;gt;Software&amp;lt;/span&amp;gt;]][[Über uns|&amp;lt;span style=&amp;quot;text-decoration:{{{about|none}}};background-color:#8C8C8C;color:white;font-size:18px;display:inline-block;width:100px;padding:5px 15px;margin-left:7px;margin-bottom:7px;&amp;quot;&amp;gt;Über uns&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Home_Button.png&amp;diff=955</id>
		<title>Datei:Home Button.png</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Home_Button.png&amp;diff=955"/>
		<updated>2013-08-30T13:16:36Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Home-Button für die Navigationsleiste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Home-Button für die Navigationsleiste&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=954</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=954"/>
		<updated>2013-08-30T12:53:03Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Wiederholung im Satzbau entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
Übrigens, die Schnecken wurden im hausinternen [http://www.me.hm.edu/fakultaet/verbundlabore/kca/rpm Rapid Prototyping und Rapid Manufacturing Labor] gefertigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die Uhrzeit wird angezeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
Wie in der Industrie, muss auch unser Kicker - als autonomes System - mit entsprechender Sicherheitstechnik ausgerüstet sein. Am Gerät befinden sich insgesamt vier Notaus-Schalter, zwei vorne am Spieltisch, einen an der Bedieneinheit und einen frei platzierbaren. Eine Lichtschranke (Typ: [http://www.sick.com sick] miniTwin2) über dem Spielfeld sorgt dafür dass alle Motoren sofort ausgeschaltet werden wenn jemand ins Spielfeld greift. Alle Sicherheitselemente werden über ein spezielles Sicherheitsrelais (Typ: [http://www.pilz.com/de-INT pilz] PNOZ XV2) geschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Notausknopf Lichtgitter.JPG|Notaus-Schalter mit Lichtgitter dahinter&lt;br /&gt;
Datei:Bedieneinheit.JPG|Bedieneinheit mit Notaus-Schalter&lt;br /&gt;
Datei:Sicherungen.jpg|Elektroverteilung mit Sicherungen&lt;br /&gt;
Datei:Pilz Sicherheitsrelais.JPG|Sicherheitsrelais&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=953</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=953"/>
		<updated>2013-08-30T12:46:38Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Verlinkung auf das RPM-Lab hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
Übrigens, die Schnecken wurden im hausinternen [http://www.me.hm.edu/fakultaet/verbundlabore/kca/rpm Rapid Prototyping und Rapid Manufacturing Labor] gefertigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir zwei Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die Uhrzeit wird angezeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
Wie in der Industrie, muss auch unser Kicker - als autonomes System - mit entsprechender Sicherheitstechnik ausgerüstet sein. Am Gerät befinden sich insgesamt vier Notaus-Schalter, zwei vorne am Spieltisch, einen an der Bedieneinheit und einen frei platzierbaren. Eine Lichtschranke (Typ: [http://www.sick.com sick] miniTwin2) über dem Spielfeld sorgt dafür dass alle Motoren sofort ausgeschaltet werden wenn jemand ins Spielfeld greift. Alle Sicherheitselemente werden über ein spezielles Sicherheitsrelais (Typ: [http://www.pilz.com/de-INT pilz] PNOZ XV2) geschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Notausknopf Lichtgitter.JPG|Notaus-Schalter mit Lichtgitter dahinter&lt;br /&gt;
Datei:Bedieneinheit.JPG|Bedieneinheit mit Notaus-Schalter&lt;br /&gt;
Datei:Sicherungen.jpg|Elektroverteilung mit Sicherungen&lt;br /&gt;
Datei:Pilz Sicherheitsrelais.JPG|Sicherheitsrelais&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Software&amp;diff=952</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Software&amp;diff=952"/>
		<updated>2013-08-30T12:23:04Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Inhaltsverzeichnis wieder eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|software=underline}}&lt;br /&gt;
&lt;br /&gt;
Um den Kicker zu betreiben, sind drei grundlegende Software-Komponenten nötig. Die [[Software#TwinCAT|SPS (TwinCAT)]], die [[Software#Ballerkennung|Ballerkennung]] und die [[Software#Spielsteuerung|Spielsteuerung]]. Um den Zugriff auf die SPS, für die anderen Programme zu vereinfachen, gibt es die [[Software#SPSchnittstelle|SPSchnittstelle]].&lt;br /&gt;
&lt;br /&gt;
== TwinCAT ==&lt;br /&gt;
&lt;br /&gt;
[http://www.beckhoff.de/default.asp?twincat/default.htm TwinCAT] ist eine Software-SPS der Firma [http://www.beckhoff.de/ Beckhoff Automation]. Sie bietet sowohl die Funktionalität einer SPS, sowie einer numerischen Bahnregelung (NC), zur Regelung der [[Hardware#Spielstangen-Aktorik|Elektromotoren]]. TwinCAT läuft unter Windows XP und erweitert dieses um eine echtzeitfähige Laufzeitumgebung. Es wird [http://www.beckhoff.de/default.asp?twincat/twincat_nc_ptp.htm TwinCAT NC PTP] (Numerical&lt;br /&gt;
Control, Point-To-Point) in der Version 2.10.0 verwendet. Als Schnittstelle zur SPS, steht [http://www.beckhoff.de/default.asp?twincat/twincat_ads_communication_library.htm ADS] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_TwinCAT_PLC_Control.png|thumb|none|300px|Visualisierung von TwinCAT]]&lt;br /&gt;
&lt;br /&gt;
== SPSchnittstelle ==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf die SPS zu vereinfachen, wurde die SPSchnittstelle programmiert. Sie übersetzt die ADS-Schnittstelle und stellt ein UDP-Server dar, um eine einheitliche Interprozesskommunikation im Projekt zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Ballerkennung ermittelt die Ballposition auf dem Spielfeld mit Hilfe von zwei [[Hardware#Ballerkennung|Kameras]]. Die Position des Balls wird hundert mal pro Sekunde berechnet und mittels einer Visualisierung am Bildschirm dargestellt und für weitere Programme per UDP-Server zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Ballerkennung.png|thumb|none|300px|Visualisierung der Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
== Spielsteuerung ==&lt;br /&gt;
&lt;br /&gt;
Die Spielsteuerung, ist das Programm, welches die Spielzüge bestimmt. Sie berechnet, mit Hilfe der Ball- und Spielstangenpositionen, welche Bewegungen als nächstes auszuführen sind. Sie stellt also die künstliche Intelligenz dar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Spielsteuerung.png|thumb|none|300px|Visualisierung der Spielsteuerung]]&lt;br /&gt;
&lt;br /&gt;
== Highscore-Liste ==&lt;br /&gt;
&lt;br /&gt;
Die Highscore-Liste erlaubt es eine Rangliste der Partien zu führen, Eigenschaften sind:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Zeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
&lt;br /&gt;
[[Datei:Highscore_Screen.png|thumb|none|300px|Grafische Oberfläche der Highscore-Liste]]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:ProCK_Logo_135.png&amp;diff=950</id>
		<title>Datei:ProCK Logo 135.png</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:ProCK_Logo_135.png&amp;diff=950"/>
		<updated>2013-08-30T12:02:32Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Scharel lud eine neue Version von „Datei:ProCK Logo 135.png“ hoch: Bild quadratisch gemacht (135px) als optimales Format für MediaWiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logo mit 135px Breite, als neues Hauptlogo der Seite&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=949</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=949"/>
		<updated>2013-08-30T11:42:14Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Bildbeschriftung der Spielstandanzeige verändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir zwei Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die Uhrzeit wird angezeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
Wie in der Industrie, muss auch unser Kicker - als autonomes System - mit entsprechender Sicherheitstechnik ausgerüstet sein. Am Gerät befinden sich insgesamt vier Notaus-Schalter, zwei vorne am Spieltisch, einen an der Bedieneinheit und einen frei platzierbaren. Eine Lichtschranke (Typ: [http://www.sick.com sick] miniTwin2) über dem Spielfeld sorgt dafür dass alle Motoren sofort ausgeschaltet werden wenn jemand ins Spielfeld greift. Alle Sicherheitselemente werden über ein spezielles Sicherheitsrelais (Typ: [http://www.pilz.com/de-INT pilz] PNOZ XV2) geschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Notausknopf Lichtgitter.JPG|Notaus-Schalter mit Lichtgitter dahinter&lt;br /&gt;
Datei:Bedieneinheit.JPG|Bedieneinheit mit Notaus-Schalter&lt;br /&gt;
Datei:Sicherungen.jpg|Elektroverteilung mit Sicherungen&lt;br /&gt;
Datei:Pilz Sicherheitsrelais.JPG|Sicherheitsrelais&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=948</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=948"/>
		<updated>2013-08-30T11:40:57Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Abschnitt Torerkennung nach hinten verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir zwei Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die die Uhrzeit anzeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
Wie in der Industrie, muss auch unser Kicker - als autonomes System - mit entsprechender Sicherheitstechnik ausgerüstet sein. Am Gerät befinden sich insgesamt vier Notaus-Schalter, zwei vorne am Spieltisch, einen an der Bedieneinheit und einen frei platzierbaren. Eine Lichtschranke (Typ: [http://www.sick.com sick] miniTwin2) über dem Spielfeld sorgt dafür dass alle Motoren sofort ausgeschaltet werden wenn jemand ins Spielfeld greift. Alle Sicherheitselemente werden über ein spezielles Sicherheitsrelais (Typ: [http://www.pilz.com/de-INT pilz] PNOZ XV2) geschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Notausknopf Lichtgitter.JPG|Notaus-Schalter mit Lichtgitter dahinter&lt;br /&gt;
Datei:Bedieneinheit.JPG|Bedieneinheit mit Notaus-Schalter&lt;br /&gt;
Datei:Sicherungen.jpg|Elektroverteilung mit Sicherungen&lt;br /&gt;
Datei:Pilz Sicherheitsrelais.JPG|Sicherheitsrelais&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=947</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=947"/>
		<updated>2013-08-30T11:40:22Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Beschreibung der Sicherheitstechnik&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir zwei Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die die Uhrzeit anzeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
Wie in der Industrie, muss auch unser Kicker - als autonomes System - mit entsprechender Sicherheitstechnik ausgerüstet sein. Am Gerät befinden sich insgesamt vier Notaus-Schalter, zwei vorne am Spieltisch, einen an der Bedieneinheit und einen frei platzierbaren. Eine Lichtschranke (Typ: [http://www.sick.com sick] miniTwin2) über dem Spielfeld sorgt dafür dass alle Motoren sofort ausgeschaltet werden wenn jemand ins Spielfeld greift. Alle Sicherheitselemente werden über ein spezielles Sicherheitsrelais (Typ: [http://www.pilz.com/de-INT pilz] PNOZ XV2) geschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Notausknopf Lichtgitter.JPG|Notaus-Schalter mit Lichtgitter dahinter&lt;br /&gt;
Datei:Bedieneinheit.JPG|Bedieneinheit mit Notaus-Schalter&lt;br /&gt;
Datei:Sicherungen.jpg|Elektroverteilung mit Sicherungen&lt;br /&gt;
Datei:Pilz Sicherheitsrelais.JPG|Sicherheitsrelais&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Bedieneinheit.JPG&amp;diff=946</id>
		<title>Datei:Bedieneinheit.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Bedieneinheit.JPG&amp;diff=946"/>
		<updated>2013-08-30T11:26:04Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Bedieneinheit mit Notaus-Schalter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bedieneinheit mit Notaus-Schalter&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=945</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=945"/>
		<updated>2013-08-30T10:26:41Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Beschreibung der Spielstandanzeige&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir zwei Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandanzeige ==&lt;br /&gt;
&lt;br /&gt;
Damit der Kicker nicht nur technisch, sondern auch optisch was hermacht, haben wir eine Spielstandanzeige gebaut. Sie kann zwei zweistellige 7-Segment-Ziffern darstellen und besteht aus 336 LEDs. Während des Spiels wird natürlich der Spielstand (Mensch:Computer) angezeigt, wenn gerade nicht gespielt wird, wird die Uhrzeit dargestellt. Angesteuert wird das Ganze von der SPS, über digitale I/O-Klemmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kicker vorne Spielstandsanzeige.JPG|Spielstandanzeige oben, die die Uhrzeit anzeigt&lt;br /&gt;
Datei:Schaltung Spielstandanzeige.JPG|Schaltung der Spielstandanzeige&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Schaltung_Spielstandanzeige.JPG&amp;diff=944</id>
		<title>Datei:Schaltung Spielstandanzeige.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Schaltung_Spielstandanzeige.JPG&amp;diff=944"/>
		<updated>2013-08-30T09:54:35Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Die Schaltung der Spielstandanzeige, mit Netzteil, Sicherung und EtherCAT-Klemmen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Schaltung der Spielstandanzeige, mit Netzteil, Sicherung und EtherCAT-Klemmen.&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Kicker_vorne_Spielstandsanzeige.JPG&amp;diff=943</id>
		<title>Datei:Kicker vorne Spielstandsanzeige.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Kicker_vorne_Spielstandsanzeige.JPG&amp;diff=943"/>
		<updated>2013-08-30T09:53:29Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Kicker vom Kicker in der Frontalen, mit Spielstandanzeige, die die Uhrzeit anzeigt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kicker vom Kicker in der Frontalen, mit Spielstandanzeige, die die Uhrzeit anzeigt.&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Software&amp;diff=942</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Software&amp;diff=942"/>
		<updated>2013-08-30T09:15:31Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Verlinkungen zur Hardware-Seite hinzugefügt und Text der Ballerkennung angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|software=underline}}&lt;br /&gt;
__KEIN_INHALTSVERZEICHNIS__&lt;br /&gt;
Um den Kicker zu betreiben, sind drei grundlegende Software-Komponenten nötig. Die [[Software#TwinCAT|SPS (TwinCAT)]], die [[Software#Ballerkennung|Ballerkennung]] und die [[Software#Spielsteuerung|Spielsteuerung]]. Um den Zugriff auf die SPS, für die anderen Programme zu vereinfachen, gibt es die [[Software#SPSchnittstelle|SPSchnittstelle]].&lt;br /&gt;
&lt;br /&gt;
== TwinCAT ==&lt;br /&gt;
&lt;br /&gt;
[http://www.beckhoff.de/default.asp?twincat/default.htm TwinCAT] ist eine Software-SPS der Firma [http://www.beckhoff.de/ Beckhoff Automation]. Sie bietet sowohl die Funktionalität einer SPS, sowie einer numerischen Bahnregelung (NC), zur Regelung der [[Hardware#Spielstangen-Aktorik|Elektromotoren]]. TwinCAT läuft unter Windows XP und erweitert dieses um eine echtzeitfähige Laufzeitumgebung. Es wird [http://www.beckhoff.de/default.asp?twincat/twincat_nc_ptp.htm TwinCAT NC PTP] (Numerical&lt;br /&gt;
Control, Point-To-Point) in der Version 2.10.0 verwendet. Als Schnittstelle zur SPS, steht [http://www.beckhoff.de/default.asp?twincat/twincat_ads_communication_library.htm ADS] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_TwinCAT_PLC_Control.png|thumb|none|300px|Visualisierung von TwinCAT]]&lt;br /&gt;
&lt;br /&gt;
== SPSchnittstelle ==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf die SPS zu vereinfachen, wurde die SPSchnittstelle programmiert. Sie übersetzt die ADS-Schnittstelle und stellt ein UDP-Server dar, um eine einheitliche Interprozesskommunikation im Projekt zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Ballerkennung ermittelt die Ballposition auf dem Spielfeld mit Hilfe von zwei [[Hardware#Ballerkennung|Kameras]]. Die Position des Balls wird hundert mal pro Sekunde berechnet und mittels einer Visualisierung am Bildschirm dargestellt und für weitere Programme per UDP-Server zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Ballerkennung.png|thumb|none|300px|Visualisierung der Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
== Spielsteuerung ==&lt;br /&gt;
&lt;br /&gt;
Die Spielsteuerung, ist das Programm, welches die Spielzüge bestimmt. Sie berechnet, mit Hilfe der Ball- und Spielstangenpositionen, welche Bewegungen als nächstes auszuführen sind. Sie stellt also die künstliche Intelligenz dar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Spielsteuerung.png|thumb|none|300px|Visualisierung der Spielsteuerung]]&lt;br /&gt;
&lt;br /&gt;
== Highscore-Liste ==&lt;br /&gt;
&lt;br /&gt;
Die Highscore-Liste erlaubt es eine Rangliste der Partien zu führen, Eigenschaften sind:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Zeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
&lt;br /&gt;
[[Datei:Highscore_Screen.png|thumb|none|300px|Grafische Oberfläche der Highscore-Liste]]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=941</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=941"/>
		<updated>2013-08-30T09:10:49Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Beschreibung der Ballerkennung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Stellungen der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Um die Position des Balles zu bestimmen, haben wir zwei Kameras (Typ: [http://www.vrmagic.com VRmagic] VRmFC-12/BW) in zwei Ecken des Spielfeldes montiert. Diese beobachten das Spielfeld durch einen schmalen Schlitz in der Bande. Bereits auf den Kameras selbst werden die Bilder vor bearbeitet, so dass die [[Software#Ballerkennung|Software]] nur noch einen schmalen schwarzen Streifen mit einem weißen Fleck (Ball) auswerten muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Embedded Kamera.JPG|Embedded-Kamera&lt;br /&gt;
Datei:Kamera_montiert.JPG|Kamera montiert&lt;br /&gt;
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandsanzeige ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Embedded_Kamera.JPG&amp;diff=940</id>
		<title>Datei:Embedded Kamera.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Embedded_Kamera.JPG&amp;diff=940"/>
		<updated>2013-08-30T09:05:17Z</updated>

		<summary type="html">&lt;p&gt;Scharel: VRmagic VRmFC-12/BW&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VRmagic VRmFC-12/BW&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Ballerkennung_Kamerapositionierung.png&amp;diff=939</id>
		<title>Datei:Ballerkennung Kamerapositionierung.png</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Ballerkennung_Kamerapositionierung.png&amp;diff=939"/>
		<updated>2013-08-30T08:47:27Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Skizze der Positionierung der Kameras zur Ballerkennung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Skizze der Positionierung der Kameras zur Ballerkennung&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=937</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=937"/>
		<updated>2013-08-30T08:14:19Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Beschreibung der Gegner-Erkennung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Position der Spielstangen des menschlichen Spielers ermitteln wir jeweils mit Hilfe von zwei Laser-Distanz-Sensoren (Typ: [http://www.baumer.com Baumer] OADM 13U7480/S35A). Dafür sind an den Enden der Stangen Kunststoff-Schnecken angebracht. Die Schnecken werden mit einem Sensor an der Fläche in der Mitte und mit dem anderen Sensor an der umlaufenden schiefen Ebene abgetastet. Aus der Distanz zwischen Laser-Sensor und der Mitte der Schnecke, bestimmen wir die Position der Stange in Längsrichtung. Aus der Differenz der Distanz in der Mitte und der Distanz zur umlaufenden Ebene berechnen wir den Winkel der Spielstange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegner-Erkennung mit Laser-Distanzsensoren&lt;br /&gt;
Datei:Schnecke isometrisch.png|CAD-Zeichnung einer Schnecke&lt;br /&gt;
Datei:Schnecken alt neu.JPG|Vergleich altes und neues Design der Schnecken&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kamera_montiert.JPG|Embedded-Kamera&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandsanzeige ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Schnecke_isometrisch.png&amp;diff=936</id>
		<title>Datei:Schnecke isometrisch.png</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Schnecke_isometrisch.png&amp;diff=936"/>
		<updated>2013-08-30T07:26:38Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Isometrische Zeichnung einer Schnecke im neuen Design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Isometrische Zeichnung einer Schnecke im neuen Design&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Schnecken_alt_neu.JPG&amp;diff=935</id>
		<title>Datei:Schnecken alt neu.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Schnecken_alt_neu.JPG&amp;diff=935"/>
		<updated>2013-08-30T07:07:20Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Altes Design (links) und neues Design (rechts) der Schnecken im Vergleich&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Altes Design (links) und neues Design (rechts) der Schnecken im Vergleich&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Notausknopf_Lichtgitter.JPG&amp;diff=934</id>
		<title>Datei:Notausknopf Lichtgitter.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Notausknopf_Lichtgitter.JPG&amp;diff=934"/>
		<updated>2013-08-30T07:05:46Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Nahaufnahme vom linken Notausknopf und das Lichtgitter dahinter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nahaufnahme vom linken Notausknopf und das Lichtgitter dahinter&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Pilz_Sicherheitsrelais.JPG&amp;diff=933</id>
		<title>Datei:Pilz Sicherheitsrelais.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Pilz_Sicherheitsrelais.JPG&amp;diff=933"/>
		<updated>2013-08-30T07:04:45Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Sicherheitsrelais der Notaus-Knöpfe und des Lichtgitters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sicherheitsrelais der Notaus-Knöpfe und des Lichtgitters&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Baumer_Distanzsensor.JPG&amp;diff=932</id>
		<title>Datei:Baumer Distanzsensor.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Baumer_Distanzsensor.JPG&amp;diff=932"/>
		<updated>2013-08-30T06:49:37Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Baumer Laser-Triangulations-Distanz-Sensor der Gegnererkennung.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Baumer Laser-Triangulations-Distanz-Sensor der Gegnererkennung.&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=930</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Hardware&amp;diff=930"/>
		<updated>2013-08-29T13:31:01Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Ersten Inhalt eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|hardware=underline}}&lt;br /&gt;
&lt;br /&gt;
== Spielstangen-Aktorik ==&lt;br /&gt;
&lt;br /&gt;
Eine große Herausforderung bei der Umsetzung des Projekts war die Realisierung der Antriebe für die überlagerte Dreh- und Längsbewegung der Spielstangen. Die Rotation wird von einem elektrischen Servomotor (Typ: [http://beckhoff.de/ Beckhoff] AM3032-0D30-0000) bewerkstelligt, die Linearbewegung übernimmt ein Linearmotor mit zylindrischer Achse (Typ: [http://www.copleycontrols.com/ Copley] STA2504P-516-S-S3F). Pro Spielstange ist jeweils ein Rotations- und ein Linearmotor verbaut, dies ergibt insgesamt acht Motoren die von vier Zweikanal-Servoverstärkern (Typ: [http://beckhoff.de/ Beckhoff] AX5206 mit Safety-Option AX5801 ) gespeist werden. Die Drehung der Rotationsmotoren wird auf ein ein Vierkant-Rohr übertragen, in dem sich die Spielstange teleskopisch bewegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Prock_overview_mechanik.JPG|Aktorik&lt;br /&gt;
Datei:Rotation.JPG|Rotationsmotoren&lt;br /&gt;
Datei:Translation.JPG|Linearmotoren&lt;br /&gt;
Datei:Verstaerker.JPG|Servoverstärker&lt;br /&gt;
Datei:Aktorik_Zeichnung.jpg|Zeichnung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gegner-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Gegnererkennung_neu.jpg|Gegnererkennung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Kamera_montiert.JPG|Embedded-Kamera&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spielstandsanzeige ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Torerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die gefallenen Tore werden bei uns automatisch gezählt. Hierfür sind in jedem Tor Lichtschranken verbaut, die beim Passieren eines Balles unterbrochen werden. Die Auswertung der Lichtschranke erfolgt mit der [[Software#TwinCAT|SPS]].&lt;br /&gt;
&lt;br /&gt;
== Sicherheitstechnik ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Kamera_montiert.JPG&amp;diff=929</id>
		<title>Datei:Kamera montiert.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Kamera_montiert.JPG&amp;diff=929"/>
		<updated>2013-08-29T13:23:32Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Montierte Kamera der Ballerkennung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Montierte Kamera der Ballerkennung&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Verstaerker.JPG&amp;diff=928</id>
		<title>Datei:Verstaerker.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Verstaerker.JPG&amp;diff=928"/>
		<updated>2013-08-29T13:14:07Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Scharel lud eine neue Version von „Datei:Verstaerker.JPG“ hoch: Zurückgesetzt auf die Version vom 29. August 2013, 13:11 Uhr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Verstaerker.JPG&amp;diff=927</id>
		<title>Datei:Verstaerker.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Verstaerker.JPG&amp;diff=927"/>
		<updated>2013-08-29T13:13:26Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Scharel lud eine neue Version von „Datei:Verstaerker.JPG“ hoch: Die Verstärker, wie sie verbaut sind&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Verstaerker.JPG&amp;diff=926</id>
		<title>Datei:Verstaerker.JPG</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Verstaerker.JPG&amp;diff=926"/>
		<updated>2013-08-29T13:11:46Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Scharel lud eine neue Version von „Datei:Verstaerker.JPG“ hoch: Die Verstärker, wie sie verbaut sind&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Gegnererkennung_neu.jpg&amp;diff=925</id>
		<title>Datei:Gegnererkennung neu.jpg</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Gegnererkennung_neu.jpg&amp;diff=925"/>
		<updated>2013-08-29T12:42:44Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Gegnererkennung mit Sensoren und Schnecke&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gegnererkennung mit Sensoren und Schnecke&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Aktorik_Zeichnung.jpg&amp;diff=924</id>
		<title>Datei:Aktorik Zeichnung.jpg</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:Aktorik_Zeichnung.jpg&amp;diff=924"/>
		<updated>2013-08-29T12:37:43Z</updated>

		<summary type="html">&lt;p&gt;Scharel: CAD-Zeichnung der Aktorik&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CAD-Zeichnung der Aktorik&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Software&amp;diff=923</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Software&amp;diff=923"/>
		<updated>2013-08-29T12:01:32Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Inhaltsverzeichnis entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|software=underline}}&lt;br /&gt;
__KEIN_INHALTSVERZEICHNIS__&lt;br /&gt;
Um den Kicker zu betreiben, sind drei grundlegende Software-Komponenten nötig. Die [[Software#TwinCAT|SPS (TwinCAT)]], die [[Software#Ballerkennung|Ballerkennung]] und die [[Software#Spielsteuerung|Spielsteuerung]]. Um den Zugriff auf die SPS, für die anderen Programme zu vereinfachen, gibt es die [[Software#SPSchnittstelle|SPSchnittstelle]].&lt;br /&gt;
&lt;br /&gt;
== TwinCAT ==&lt;br /&gt;
&lt;br /&gt;
[http://www.beckhoff.de/default.asp?twincat/default.htm TwinCAT] ist eine Software-SPS der Firma [http://www.beckhoff.de/ Beckhoff Automation]. Sie bietet sowohl die Funktionalität einer SPS, sowie einer numerischen Bahnregelung (NC), zur Regelung der Elektromotoren. TwinCAT läuft unter Windows XP und erweitert dieses um eine echtzeitfähige Laufzeitumgebung. Es wird [http://www.beckhoff.de/default.asp?twincat/twincat_nc_ptp.htm TwinCAT NC PTP] (Numerical&lt;br /&gt;
Control, Point-To-Point) in der Version 2.10.0 verwendet. Als Schnittstelle zur SPS, steht [http://www.beckhoff.de/default.asp?twincat/twincat_ads_communication_library.htm ADS] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_TwinCAT_PLC_Control.png|thumb|none|300px|Visualisierung von TwinCAT]]&lt;br /&gt;
&lt;br /&gt;
== SPSchnittstelle ==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf die SPS zu vereinfachen, wurde die SPSchnittstelle programmiert. Sie übersetzt die ADS-Schnittstelle und stellt ein UDP-Server dar, um eine einheitliche Interprozesskommunikation im Projekt zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
== Ballerkennung ==&lt;br /&gt;
&lt;br /&gt;
Die Ballerkennung ermittelt die Ballposition auf dem Spielfeld mit Hilfe von zwei Embedded-Kameras im 10ms-Takt. Die Position des Balls wird mittels einer Visualisierung am Bildschirm dargestellt und für weitere Programme per UDP-Server zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Ballerkennung.png|thumb|none|300px|Visualisierung der Ballerkennung]]&lt;br /&gt;
&lt;br /&gt;
== Spielsteuerung ==&lt;br /&gt;
&lt;br /&gt;
Die Spielsteuerung, ist das Programm, welches die Spielzüge bestimmt. Sie berechnet, mit Hilfe der Ball- und Spielstangenpositionen, welche Bewegungen als nächstes auszuführen sind. Sie stellt also die künstliche Intelligenz dar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screen_Spielsteuerung.png|thumb|none|300px|Visualisierung der Spielsteuerung]]&lt;br /&gt;
&lt;br /&gt;
== Highscore-Liste ==&lt;br /&gt;
&lt;br /&gt;
Die Highscore-Liste erlaubt es eine Rangliste der Partien zu führen, Eigenschaften sind:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Zeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
&lt;br /&gt;
[[Datei:Highscore_Screen.png|thumb|none|300px|Grafische Oberfläche der Highscore-Liste]]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Datenschutz&amp;diff=920</id>
		<title>Kicker (internals):Datenschutz</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Datenschutz&amp;diff=920"/>
		<updated>2013-08-29T11:19:46Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Die Seite wurde neu angelegt: „[http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html Impressum] der [http://hm.edu Hochschule München]“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html Impressum] der [http://hm.edu Hochschule München]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=919</id>
		<title>Kicker (internals):Impressum</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=919"/>
		<updated>2013-08-29T11:19:03Z</updated>

		<summary type="html">&lt;p&gt;Scharel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html Impressum] der [http://hm.edu Hochschule München]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):%C3%9Cber_Kicker&amp;diff=918</id>
		<title>Kicker (internals):Über Kicker</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):%C3%9Cber_Kicker&amp;diff=918"/>
		<updated>2013-08-29T11:17:00Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Weiterleitung auf  &amp;quot;Über uns&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Über_uns]]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=917</id>
		<title>Kicker (internals):Impressum</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=917"/>
		<updated>2013-08-29T11:16:00Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Link auf die Impessum-Seite der HM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html Impressum] der Hochschule München&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=916</id>
		<title>Kicker (internals):Impressum</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=916"/>
		<updated>2013-08-29T11:13:20Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Umleitung auf die Impessum-Seite der HM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html Impressum]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=915</id>
		<title>Kicker (internals):Impressum</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=915"/>
		<updated>2013-08-29T11:12:43Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Umleitung auf die Impessum-Seite der HM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html HM - Impressum]&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=914</id>
		<title>Kicker (internals):Impressum</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Kicker_(internals):Impressum&amp;diff=914"/>
		<updated>2013-08-29T11:09:53Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Umleitung auf die Impessum-Seite der HM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT http://w3-n.hm.edu/sekundaer_navigation/impressum/index.de.html&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:ProCK_Logo_135.png&amp;diff=913</id>
		<title>Datei:ProCK Logo 135.png</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Datei:ProCK_Logo_135.png&amp;diff=913"/>
		<updated>2013-08-29T11:01:38Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Logo mit 135px Breite, als neues Hauptlogo der Seite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logo mit 135px Breite, als neues Hauptlogo der Seite&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=912</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=News&amp;diff=912"/>
		<updated>2013-08-29T10:50:47Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Titel aus der Vorlage entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|news=underline}}&lt;br /&gt;
&lt;br /&gt;
== Überarbeitete Webseite ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Wie ihr seht sind wir dabei unseren Web-Auftritt etwas neu zu gestalten und den Inhalt etwas aufzuräumen, also schaut gelegentlich mal rein.}}&lt;br /&gt;
&lt;br /&gt;
== Neue Highscoreliste ==&lt;br /&gt;
&lt;br /&gt;
{{News|text=Seit einiger Zeit arbeiten wir an einer Highscore-Liste, hier eine kleine Vorschau:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Highscore Screen.png]]&lt;br /&gt;
&lt;br /&gt;
Sie erlaubt uns auf Events das beste Team zu ermitteln, Features sind unter anderem:&lt;br /&gt;
* Automatische Sortierung nach Spielstand und Zeit&lt;br /&gt;
* Automatischer Abruf des Spielstandes von der SPS&lt;br /&gt;
* Automatisches Anhalten der Zeit wenn der Ball außerhalb des Spielfeldes ist&lt;br /&gt;
* Abspeichern in eine Datei im csv-Format (geeignet für Tabellenkalkulation)&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
	<entry>
		<id>https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage_Diskussion:News&amp;diff=911</id>
		<title>Vorlage Diskussion:News</title>
		<link rel="alternate" type="text/html" href="https://kicker-intern.ee.hm.edu/wiki/index.php?title=Vorlage_Diskussion:News&amp;diff=911"/>
		<updated>2013-08-29T10:49:25Z</updated>

		<summary type="html">&lt;p&gt;Scharel: Titel aus der Vorlage entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Vorlage ist gedacht um Neuigkeiten auf der Seite [[Aktuelles]] einzufügen.&lt;br /&gt;
&lt;br /&gt;
Eine neue Nachricht kann mittels &amp;lt;nowiki&amp;gt;== Hier kommt der Titel hin =={{News|text=Dies ist der Inhalt}}&amp;lt;/nowiki&amp;gt; eingefügt werden.&lt;br /&gt;
Folgende Parameter stehen zur Verfügung:&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Parametername&lt;br /&gt;
!Eigenschaft&lt;br /&gt;
!Standardwert&lt;br /&gt;
|-&lt;br /&gt;
|text&lt;br /&gt;
|Den Inhalt der Nachricht&lt;br /&gt;
|&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;Kein Inhalt!&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|datum&lt;br /&gt;
|Das Datum der Nachricht (wenn nichts angegeben wird, wird hier automatisch das Datum an dem der Artikel erstellt wurde eingetragen)&lt;br /&gt;
|{{REVISIONDAY2}}.{{REVISIONMONTH}}.{{REVISIONYEAR}}&lt;br /&gt;
|-&lt;br /&gt;
|user&lt;br /&gt;
|Der Benutzer der die Nachricht angelegt hat (wird ohne Angabe automatisch angefügt)&lt;br /&gt;
|{{REVISIONUSER}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Scharel</name></author>
	</entry>
</feed>