Beschreibung:
Diese Seite zeigt, wie ich mit dem AVR-NET-IO-Board
der Fa. Pollin (http://www.pollin.de), einer
selbst erzeugten Firmware von E2000 (http://www.elektronik2000.de)
und einem Purebasic-Programm (http://www.purebasic.de)
genannt "GAServer" eine Schachtüberwachung eines Getränkeautomaten realisiert
habe. Das Purebasic-Programm frägt zyklisch die Zustände der im Board
mitgezählten Schaltbefehle bzw. Schachtentnahmen mit. Es werden von den 8
Schächten der Automaten der Schachtzähler und der jeweilige "Leermeldekontakt"
des Schachtes überwacht und zyklisch mitprotokolliert. Es wird ebenfalls noch
eine Datei mit den Bestandsveränderungen je Schacht mitgeführt und es ist
möglich eine zyklische StatusEmail mit "Schachtzustandsbewertungen" z. B. an
die Firma abzusetzen, damit am nächsten Morgen die Disposition des
Getränkehandels weiß, was mit auf den LKW muss bzw. was aufgefüllt werden muss. Inzwischen
ist es auch möglich über ein Client-Programm genannt "GAClient" eine Fernabfrage der einzelnen Automaten durchzuführen und
die Daten entsprechend auszuwerten.
Dieses Projekt wird in Zusammenarbeit mit einem Getränkehändler, der hier über
meine Webseite bei mir angefragt hatte ob so was machbar sei, durchgeführt.
Meine ersten "Gehversuche" mit der
E2000-Logiksoftware/E2000-Firmware findet Ihr unter folgendem Link:
E2000 - alternative
Firmware für das AVR-NET-IO
(zur Erstellung autarker Mess- und
Steuerungselektronik)
(Um die Grafiken klarer und detaillierter zu
sehen, solltet Ihr einen Klick mit der linken Maustaste
auf der entsprechenden Grafik ausführen!)
Hier ein Bild meines auf die E2000-Firmware
umgerüsteten AVR-NET-IO-Boards
mit manuellen Tastern zur Simulation der Entnahmekontakte der einzelnen Getränkeschächte:

Im Standard genügt hier das AVR-NET-IO-Board von
Pollin, mit einem ATMega644-Controller bestückt und einer kleinen Hilfsplatine
zum Herausführen des Sub-D-25poligen Anschlusses, damit man die Schachtschalter
gut anschließen kann. Auf dieser Hilfsplatine habe ich 4 der 8 Schaltkontakte
und eine kleine Lochrasterplatine mit LEDs für die Schachtleermeldung
angeschlossen. Das abgebildete E2000-Add-On-Board (unter dem AVR-NET-IO zu
sehen) und das LCD-Display (links) hatte ich an diesem Testboard noch dranhängen
und habe daraufhin auch die Firmware im Controller mit LCD-Display-Meldungen
versehen. Für einen Betrieb im Getränkeautomaten reicht aber völlig das
AVR-NET-O-Board mit einem zusätzlichen Adapterboard (z. B. mit Optokopplern)
oder potentialfreien Relaiskontakten zum Abnehmen der Impulse der einzelnen
Schachtkontakte des Automaten.
- Pollin Board AVR-NET-IO (Pollin-Nr. 810 058 =
Bausatz; Pollin-Nr. 810 073 = fertige Platine)
- MicroController ATMega 644-20PU (Pollin-Nr. 100 996)
(dieser ersetzt den Typ ATMega32-16PU, den Pollin auf dem
AVR-NET-IO-Board standardmäßig einsetzt)
- guten Kühlköper für den LS7085-Spannungsregler
(ACHTUNG: der andere Regler LM317 darf nicht mit dem Kühlkörper des
LS7805 verbunden werden, da dies
einen Kurzschluss darstellt.)
- Sub-D-25polige Anschlußplatine (Pollin-Nr. 810 055 = Bausatz)
(nur zum Anzeigen der 8 Ausgänge per LED und anschließen von 4 der 8
Eingangskontakte notwendig!)
- stabilisiertes Netzteil 9V oder 12V
(ich nehme da gerne Uni-Netzteile mit 800-1000mA; aber "stabilisiert"
- ist wichtig!)
Nachdem der obige Hardwareaufbau stand, habe ich mit mit der
E2000-Logik-Oberfläche eine Firmware für den ATMega644-Microcontroller erstellt.
Hier mal ein Snapshot der mit E2000 erzeugten Boardfirmware
(genannt GAFirmware;
z. Zt. nicht für den Nachbau freigegeben):

Da die E2000-Firmware im Standard über einen eingebauten rudimentären Webserver
verfügt, kann man sich die aktuellen Schachtzustände, Schachtleermeldungen und
Schachtstartwerte auch über einen Webbrowser direkt anschauen.
Hier mal einen Snapshot dieser
Weboberfläche von E2000, mit den Beständen der Schächte 1-8:

Die E2000-Leute stellen für die E2000-Firmware auch
noch einen E2000-Designer zum Download zur Verfügung. Damit kann man sich für
ein androidfähiges
Handy eine eigene Oberfläche designen. Hier habe ich allerdings nur mal
"reingeschnuppert" und kann (noch) nicht viel zu diesem Programm sagen!
Anschließend habe ich mir in
Purebasic ein Programm namens "GAServer" (=Getränkeautomaten-Server)
geschrieben, welches die Daten aus dem Board über das Telnet-Protokoll abfragen
kann. Inzwischen habe ich noch einen kleinen Client namens "GAClient"
(=Getränkeautomaten-Client) entwickelt. Mit diesem Programm kann man z. B. von
der Firma aus, die Zustände der einzelnen Getränkeautomaten über das Internet
abfragen und dann für die Disposition bzw. Tourenplanung nutzen. Mit "GAClient"
wird über einen Port aus dem Programm "GAServer" die Daten des letzten
Logbucheintrags per IP-Adresse/DNS ausgelesen und kann dann recht einfach
ausgewertet werden. So kann beispielsweise jeden Morgen eine aktuelle
Bestands- bzw. Zustandsabfrage der einzelnen Automaten gefahren werden.
GAFirmware -
Eigene und autark arbeitende E2000-Firmware für das AVR-NET-IO-Board:
Die Firmware für das AVR-NET-IO-Board wurde mit der E2000-Logik erzeugt und
macht aus dem passiven AVR-NET-IO-Board der Fa. Pollin eine aktive Logik namens
E2000-NET-IO. Dadurch übernimmt der Microcontroller auf dem Board nun
eigenständige und autarke Funktionen (z. B. das Mitzählen der Schachtentnahmen
oder das mitrechnen der Schachtbestände). Auf dieser Firmware setzt dann das
GAServer-Programm mit eigenen Abfragen, Visualisierung der Schächte, usw. auf.
GAServer.exe -
Server-Software zur
Schachtüberwachung des Automaten mit Logbuch+StatusEmail:
Das Programm liest die Startparameter aus einer Datei namens "GAServer.ini" ein.
Anschließend erscheint die unten abgebildete Oberfläche. Die Logbuchdaten werden
als ASCII-Datei mit einem frei bestimmbaren Feldtrenner auf die lokale
Festplatte geschrieben. Das eigentliche Logbuch wird zyklisch um einen Datensatz
mit "Automatenkennung", "Datum", "Uhrzeit", "Statusflag", "Schachtinhalt 1-8",
"Maximaler Schachtfüllstand 1-8", "Aktueller Schachtfüllstand 1-8" und "Zustand
Leermeldekontakt 1-8" erweitert. Parallel dazu wird bei jeder Schachtentnahme
eine Bestandsdatei um einen Datensatz mit "Automatenkennung", "Datum",
"Uhrzeit", "Schachtnummer", "Schachtinhalt", "Schachtbestand vor Entnahme",
"Entnahmemenge" und "Schachtbestand nach Entnahme" erweitert. Ebenfalls wird
auch zyklisch eine StatusEmail mit den aktuellen Schachtfüllständen des
Automaten und einer Schachtfüllstandsbewertung "GUT" - "BEDENKLICH" - "KRITISCH"
an z. B. die Disposition des Getränkehandels abgesetzt. Bei Schachtfehlern wird
ebenfalls ein entsprechende FehlermeldungsEmail abgesetzt. Die Logbuchdateien
lassen sich mit einem Texteditor öffnen oder in eine Tabellenkalkulation
importieren und dort entsprechend auswerten und grafisch aufbereiten.
GAClient.exe -
Client-Software zur Fernabfrage der Bestände und Meldungen aus CAServer.exe:
Dieses Programm verbindet sich nach dem Programmstart mit dem "GAServer"-Programm der
einzelnen Getränkeautomaten, liest von dort die letzten Logbuchwerte wie Schachtinhalte,
Schachtbestände, Schachtbewertungen, Leermeldungen, etc. aus und speichert dann
diese Datensätze der einzelnen Automaten in einer lokalen Datei, welche dann für
die Disposition und Tourenplanung zur Verfügung steht.
bei GAFirmware
(aktuelles Release = V1.5)
bei GAServer.exe
(aktuelles Relase = V2.4)
bei GAClient.exe
(aktuelles Release = V1.1)
28.04.2013: Hier handelt es sich mit der GAServer.exe in der Version 1.0 um eine erste
Testversion um die generelle Logbuchfunktion
zu prüfen. Ich habe hier eine einfache Vorab-GAFirmware Version 0.9 erstellt und benutzt.
29.04.2013: Bei der
GAServer-Version 1.1 handelt es sich nur um ein kurzes "Zwischenrelease",
welches ebenfalls mit der GAFirmware-Version 0.9 agierte.
30.04.2013: Hier handelt es sich in der GAServer-Version 1.2 um die erste
funktionstüchtige Version, nachdem
ich hier noch ein paar kleinere Probleme mit der Passwortabfrage des Boards und
dem
automatischen Reconnect der Netzwerkverbindung bei z. B. einem Boardreset
behoben hatte.
Die GAFirmware wurde auf Version 1.0 angehoben.
01.05.2013: Hier habe ich das GAServer-Programm auf die Version 1.3 angehoben, um
die Emailfunktion
erweitert und kleinere Anpassungen an der Datenstruktur des Logbuches
vorgenommen.
Der Feldtrenner im Logbuch kann nun frei in der "GAServer.ini"-Datei eingestellt
werden.
Die GAFirmware wurde auf Version 1.1 angehoben.
04.05.2013: In der GAServer-Version 1.4 habe ich ein Bestandslogbuch
eingeführt und kleinere
Anpassungen in den Textmeldungen vorgenommen.
Die GAFirmware wurde auf Version 1.2 angehoben.
09.05.2013: Bei der GAServer-Version 1.5 habe ich die Möglichkeit
geschaffen über die .INI-Datei die max. Anzahl der Netzwerk-Verbindungsversuche
und Passwortabfragen auf das E2000-NET-IO-Board einzustellen. Bei GAServer
Version 1.5 handelt es sich um die Final-Version der 1er-Version. Die GAFirmware
bleibt auf Version 1.2.
10.05.2013: In der neuen Programm-Version GAServer 2.0 läuft nun ein
NetzwerkServer
mit, der einen freigegebenen Port auf externe Anfragen von der neu hinzu
gekommenen Software GAClient 1.0 überwacht. In der Firma wird dann GAClient 1.0
gestartet und frägt dann den letzten Logbuchstatus von allen in der .INI-Datei gelisteten/aktiven Getränkeautomaten
über das Internet ab und sammelt diese Werte dann in einer lokalen Logbuchdatei, welche dann
recht einfach zur
Disposition und Tourenplanung genutzt werden kann. Die GAFirmware
bleibt auf Version 1.2.
31.05.2013: In der neuen Programm-Version GAServer 2.1
ist es nun möglich die Versendung einer StatusEmail manuell auszulösen (z. B.
für Testzwecke).
Zusätzlich ist es nun auch möglich über die GAServer-Oberfläche die 8
Ausgangskontakte des Boards über das Internet zu schalten um hier Zusatzgeräte
im Getränkeautomaten zu aktivieren/deaktivieren. Der Schachtstatus hat nun eine
"TriState-Meldung" um außer "OK" und "LEER", mit der Meldung "FEHLER", einen
möglichen "Schachtklemmer" anzuzeigen. Die GAClient-Software bleibt
auf Version 1.0. Die GAFirmware wurde auf die Version 1.4 angehoben.
15.06.2013: In der neuen Programm-Version GAServer 2.2
und GAClient 1.1 wurde ein sog. UnixTimeStamp (=Integerzahl im Sekundentakt mit
Start am 01.01.1970 um 00:00 Uhr; weitere Infos siehe:
http://de.wikipedia.org/wiki/Unix-Timestamp) hinzugefügt. Dadurch lassen
sich die Logbuchdateien einfacher bzw. ohne zusätzliche Zeitumrechnungen in
Fremdsystemen/Datenbanken importieren/weiterverarbeiten. Auch die CMNR und TVGNR
wird nun an die Logbücher mit übergeben. Die GAFirmware bleibt
auf Version 1.4.
11.07.2013: In der neuen Programm-Version GAServer 2.3
werden nun auch bei "Schachtklemmern" pro Schacht entsprechende
Fehlermeldungsemails automatisiert verschickt. Die verschiedenen Mailfunktionen
"StatusEmail" und "SchachtFehlerEmail" können in der GAServer.ini-Datei
entsprechende aktiviert/deaktiviert werden. Programm GAClient bleibt auf Version
1.1 und die GAFirmware bleibt auf Version 1.4.
15.07.2013: In der neuen Programm-Version GAServer 2.4
wurde ein Button zur Abfrage der aktuellen Schachtbestände/-werte bzw. des
gesamten Warenwertes im Automaten eingebaut. Ein weiterer Button ohne Funktion
habe ich auch mal vorgesehen. Es werden nun Fehlermails UND Leermeldmails pro
Schacht automatisiert verschickt. In der GAServer.ini gab es kleinere
strukturelle Anpassungen. Programm GAClient bleibt auf Version
1.1 und die GAFirmware bleibt auf Version 1.4.
17.07.2013: Änderung der GAFirmware auf Version
1.5. Mit dieser Firmware werden nach einem Neustart des Programms GAServer 2.4
die initialen Schachtwerte aus dem Board korrekt eingelesen. So wird nun über
die GAFirmware beim Programmstart unterschieden ob ein Schacht "leer" ist oder
ein Schachtfehler gemeldet wurde. Da über 8 Eingänge quasi 16 Meldungszustände
abgefragt werden müssen, wird nun über diese Firmware ein entsprechender Status
im Board gesetzt, der bei Programmstart von GAServer 2.4 entsprechend ausgelesen
wird. GAServer bleibt auf Version 2.4. GAClient bleibt auf Version 1.1.
|
|
Hier mal nun ein Snapshot des Purebasic-Programms "GAServer", welches die
Schachtdaten
und -Zustände zyklisch aus dem E2000-NET-IO-Board ausliest und protokolliert:

Und hier noch in der typischen
Windows-Luna-Ansicht (von einer älteren Programmversion):

Und hier mal ein Snapshot der
Rückmeldung des Purebasic-Programms "GAClient"
nachdem alle Automaten über eine IP-Adresse/DNS abgefragt wurden:

Und hier noch in der typischen
Windows-Luna-Ansicht:

(Info: Die PureBasic-Programme wurden von mir unter Windows XP mit SP3 entwickelt und
getestet!)
Durch die einfache Portierbarkeit von
Purebasic-Quellcodes zwischen Windows-, Apple-, Linux- und Amiga-Systemen dürfte
das Programm auch (mit kleinen Anpassungen im Quellcode; z. B. Pfadnamen) auch
auf den vorgenannten Betriebssystemen laufen. Auch Windows-Skins wie die
Luna-Ansicht von XP wird von Purebasic nativ unterstützt und kann über den
Compiler aktiviert/deaktiviert werden.
Da dieses Programm ein
spezielles Entwicklungsprojekt, zusammen mit einem Getränkehandel ist, gebe ich
hier z. Zt. keine detaillierten Informationen, Vollversionen, Demoversionen,
Handbücher, Quellcodes o. ä. raus. Diese Veröffentlichung dient nur dazu um zu zeigen, was mit dem AVR-NET-IO-Board, der
E2000-Firmware, der Programmiersprache Purebasic, einer Idee des Getränkehandels
und natürlich Zeit so machbar ist.
Fortschritte an an diesem Projekt werde ich von Zeit
zu Zeit in der o. g. Programmhistorie veröffentlichen.
Hier handelt es sich sicherlich
nicht um eine Profilösung (z. B. mit Bussystem) für einen Getränkeautomaten,
aber ich glaube mir ist hier eine einfache und gute Automatisierungslösung für
Getränkeautomaten, Getränkehandlungen mit Automatenverleih oder
Automatenaufsteller im Allgemeinen gelungen. Davon abgesehen belaufen sich die
Hardwarekosten für diese Lösung
sicherlich unter 200 Euro/Automat (AVR-NET-IO-Board, Adapterboard und ein
kleiner Rechner),
was diese Lösung für "Bastelinteressierte" und
"-begeisterte" interessant und umsetzbar
macht.
Durch entsprechende Anpassungen kann man die Soft- und Hardware
sicherlich auch
für andere Automatenfamilien gut nutzen.
Bei Interesse,
Fragen, Wünsche, Anregungen, Lob oder Kritik könnt Ihr mir gerne eine
eMail senden an: Oliver.Schlenker@T-Online.de
|