2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Projekt Automatisierte Waage Team: Nikola Batarilo, Gianina Feraru, Fiedler Michael, Gerassimoff Christoph, Harald Heine, Bernhard Hochrainer, Lucas Kavka, Werner Lueger, Manuel Meißner, Damir Popovic Projektbetreuerin: Prof. Mag. Ursula Zahalka Kurzbeschreibung: Über eine Rezeptdatenbank können verschiedene Rezepte ausgewählt werden. Die Zutatenmengen können für unterschiedliche Portionenanzahlen berechnet werden und danach entweder auf einer simulierten Waage oder auf einer echten Waage, die an die serielle Schnittstelle des Computers angeschlossen wird, abgewogen werden. Das gesamte Projekt ist über das Internet abrufbar und auch steuerbar. Wir haben uns eingehend mit der technischen Funktionsweise der seriellen Schnittstelle beschäftigt und zusätzlich ein Visual Basic-Programm zum Schnittstellentest programmiert. 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Inhaltsverzeichnis Projektidee Projektziel Umsetzung Rezeptdatenbank Aufbau der Waage Wägezelle Schnittstellenparameter Allgemeines über die serielle Schnittstelle Technik der seriellen Schnittstelle Serielle Datenübertragung Bits und Bytes Visual Basic Programm zum Testen der seriellen Schnittstelle Projektteam 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Projektidee Wir hatten im Elektrotechnikunterricht die Idee, eine Waage mit einem Computer zu verbinden und über den PC anzusteuern. Deswegen haben wir einen Lehrausgang zur Firma BIZERBA, die Waagen herstellt, gemacht. Diese Firma war so freundlich, uns eine Waage, eine digitale Anzeige, Software und andere Informationen zur Verfügung zu stellen. Durch diese Ereignisse kamen wir dann zu dem Entschluss, dass wir ein Projekt planen wollen, das wir langfristig auch zu unserem Maturaprojekt machen werden. Projektziel Unser Ziel für die Projektwoche in diesem Jahr waren vorbereitende Arbeiten zur Umsetzung einer automatisierten Wiegeeinrichtung. Wir wollten uns über die Schnittstellenprogrammierung informieren, die Verbindung zur seriellen Schnittstelle testen und uns die Grundlagen für die weitere Programmierung einer automatisierten Waage aneignen. Zusätzlich hatten wir die Idee, dass wir auch eine Rezeptdatenbank in Zusammenhang mit der Waage (oder zunächst einmal mit einer simulierten Waage) anlegen könnten. Umsetzung Folgende Liste soll einen Überblick über die von uns eingesetzten Programme und die verwendete Hardware geben. Im Laufe der Woche sind wir alle zu echten Spezialisten in der Schnittstellen-Programmierung, Bildbearbeitung, HtmlProgrammierung und vielem mehr geworden. Verwendete Software • • • • • • • VB 6.0 (Schnittstellenkommunikation) Microsoft Word (Textverarbeitung) Front Page (HTM-Programmierung) Image Composer (Bildbearbeitung) MySQL-DB (Rezepteingabe) PHP (für Datenbankabfragen) DHTML (dynamische HTML-Seiten) Verwendete Hardware • • • • Waage Digitales Auswertegerät Digitalkamera PC und ein Modem (für Schnittstellentests) 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Rezeptdatenbank Wir haben eine Rezeptdatenbank angelegt, in die wir die Rezepte gespeichert haben. Die Rezepte sind in Kategorien unterteilt und zu jedem Rezept kann ein passendes Bild angezeigt werden. Weiters kann man die Portionenanzahl selbst einstellen, und die Zutatenmengen werden danach berechnet. Die jeweilige Menge kann anschließend mit einer simulierten Waage oder mit der echten Waage, die wir an die serielle Schnittstelle angeschlossen haben, abgewogen werden. Das Wiegeergebnis wird am PC über eine html-Seite angezeigt. Aufbau der Waage Technische Daten Umgebungstemperatur -10°C bis +40°C 3m Netzkabel mit Stecknetzteil, Eingangsspannung 230 V~, ±10% Anzeige 6-stellige LCD Gewichtanzeige, Ziffernhöhe ca.18 mm, Ablesung einseitig, Hintergrundsbeleuchtung, LED Tarafunktionsanzeige Gehäuse Abmessung 245 x 135 (mit Standbügel 150) x 68mm, ABS-Kunststoff schwarzgrau, Eigengewicht ca. 1,3 kg, Schutzart IP 54 Wägebereich von 0,3 kg bis 60 t, Auflösung 3000 d Anschließbar an Lastaufnehmer mit 1 – 4 DMS Wägezellen Funktionstasten Nullstellung Tara; subtraktive Tara über ganzen Wägebereich Ein/Aus Funktion nur in Kombination mit Akku aktiv Zusammenausstattung doppelseitige Ablesung, 1x Datenausgang V24 / RS232C für EDV, 1x Datenausgang V24 / RS232C für Drucker, Wandhalterung, Akku: Funktionsanzeige durch LED, Akkupufferung: Power-supply Incl. Batterieladeabschaltung EG-Einzulassung Nr.: A 40521/97 Wägezelle HLC3-550 kg....C3, D1 Genauigkeitsklasse CLASS&DIV: C3000 Vmin: 0.055kg Charakteristische Merkmale • • • • • • Hermetisch gekapselt (IP68) Nichtrostende Materialien Geringe Bauhöhe Erfüllt die EMV-Anforderungen entsprechend EN 45 501 Eichfähig nach OIML R60 bis 3000 Teile Ex-Schutz-Ausführungen nach ATEX95 (für HLC_C3) möglich Technische Spezifikation 2 HTA • • • • • • Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Hermetisch gekapselt (IP68) Nichtrostende Materialien Geringe Bauhöhe Erfüllt die EMV-Anforderungen entsprechend EN 45 501 Eichfähig nach OIML R60 bis 3000 Teile Ex-Schutz-Ausführungen nach ATEX95 (für HLC_C3) möglich Nennlast 200 kg / 550 kg / 1,1 t / 1,76 t / 2,2 t / 4,4 t Genauigkeitsklasse D1, C3 Zulassungen OIML, NTEP, Ex, GOS Schutzart IP 68 Material nichtrostender Stahl Bemerkungen EMV-geprüft. Schnittstellenparameter Serielle Verbindung, asynkrom vollduplex, V24, RS232C Schnittstellenparameter : 9600 Baud,8 Bit ASCII-Protokol, keine Parität, 2 Stop-bit, fixe Datensatzlänge mit 11 Zeichen. Die Wertausgabe erfolgt nach Erhalten des Funktionsbefehls g(HEX:1B 67) von der EDV-Seite bei stillstand der Waage. Während der Einschaltroutine oder bei Fehlanzeigen erfolgt keine Wertausgabe. Datenausgabe erfolgt parallel auf beide Schnittstellen, wodurch das Protokollieren der ausgegebenen Gewichtsdaten auf einem Drucker ermöglicht wird. Satzaufbau Byte 1 ASCII +/- 2 3 4 5 6 8 9 10 11 5 Byte Gewicht und 1 Byte Kommapunkt k g CR LF Vorzeichen Gewichtswert mit Kommapunkt 7 Einheit kg Allgemeines über die serielle Schnittstelle Normen und elektrische Pegel Die serielle Schnittstelle eines Computers überträgt die Daten bitweise und ist durch die RS232-Norm (auch V.24 genannt) festgelegt. Daher müssen das Protokoll der Datenübertragung, die Verkabelung, die elektrischen Signale und die Stecker auf einer RS-232- Verbindung basieren. Jeder PC besitzt mindestens zwei serielle Schnittstellen, die auch COM-Ports genannt werden (COM1 und COM2). COM-Port steht für Communication Port. An diesen Anschlüsse werden in der Regel die Maus, ein Nullmodem-Kabel, und / oder das Modem angeschlossen. Die Serielle Schnittstelle ist an modernen PC eine 9-Poliger Sub-D Stecker. An älteren Modellen findet man auch 25-Polige Sub-D Stecker. Für die Steuerung der Waage wird die 9-polige Schnittstelle verwendet. Für eine serielle Schnittstelle gelten nachstehende technische Daten: Ausgänge: • Low-Pegel = + 12V • High-Pegel = - 12V • Ausgangsstrom: bis zu 10mA 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Eingänge: • Low-Pegel bis ca. +1V • High-Pegel ab ca. +1,25V • Eingangswiderstand = 10kOhm Daraus ergeben sich einige Vorteile: Die serielle Schnittstelle kann wegen des hohen Eingangswiderstandes fast nicht zerstört werden. TTL-Pegel (0V/5V) werden an den Eingängen i.d.R richtig erkannt. Die Geräte an der seriellen Schnittstelle können bei laufendem PC angeschlossen werden. Weiterhin können kleinere Schaltungen und Gräte direkt über die Serielle Schnittstelle mit Strom versorgt werden. ACHTUNG: Nicht alle Gerätehersteller halten sich an die RS232-Norm. So haben z.B. Notebooks oft nur Pegel von +/- 7.5V oder noch weniger. Viele Geräte setzen auch eine serielle Datenübertragung mit TTL-Pegel um. Bei solchen Geräten ist darauf zu achten, ob die PC-Ausgangsleitungen direkt auf die Eingänge gelegt werden dürfen oder ob eine Pegelwandlung vorgeschaltet werden muss! Technik der Seriellen Schnittstellen Bei einem seriellen, asynchronen Datentransfer werden die einzelnen Bits, aus denen jedes Datenbyte besteht, in folgendem Datenformat nacheinander über eine Leitung übertragen. Für eine serielle Schnittstelle gelten nachstehende technische Daten: Zeichen "A" = 01000001 Der Ruhezustand der Übertragungsleitung, der auch mit "Mark" bezeichnet wird, entspricht dem Pegel einer logischen "1". Die zur Übertragung verwendeten Spannungs- bzw. Strompegel können Sie der Beschreibung der einzelnen Schnittstellen entnehmen. Die Übertragung eines Bytes beginnt mit einem vorangestellten Startbit, das als logische "0" gesendet wird. Anschließend werden nacheinander 5 bis 8 Datenbit, beginnend mit dem niederwertigsten (LSB) Bit, ausgegeben. 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Dem letzten Datenbit kann ein Paritätsbit folgen, das zur Erkennung von Übertragungsfehlern dient. Das Paritätsbit bewirkt, dass bei gerader ("EVEN") Parität immer eine gerade bzw. bei ungerader ("ODD") Parität eine ungerade Anzahl von "1"-Bits übertragen wird. Das Ende des Zeichens wird wahlweise durch 1 oder 2 Stopbits gebildet. Alle Bits werden sequentiell mit Geschwindigkeiten von 50..115200 Baud gesendet. Zur Vermeidung von Datenverlusten muss der Empfänger die Datenübertragung anhalten können, wenn keine weiteren Daten mehr verarbeitet werden können. Dieses sogenannte Handshake kann auf zwei Arten realisiert werden: Hardware-Handshake: Der Empfänger steuert über Steuer-Leitungen die Handshake-Eingänge CTS und/oder DSR des Senders mit seinem Handshake-Ausgang DTR oder RTS. Software-Handshake: Der Empfänger sendet zur Steuerung des Datenflusses spezielle Zeichen an den Sender (z.B. XON/XOFF). RS232 Die Norm RS232 beschreibt die serielle Verbindung zwischen einem Datenendgerät (DTE) und einer Daten-Übertragungseinrichtung (DCE) mit ihren elektrischen und mechanischen Eigenschaften. Obwohl die Norm lediglich diesen Verbindungstyp definiert, hat sich die RS232-Schnittstelle als genereller Standard für serielle Datenübertragungen über kurze Distanzen etabliert. DTE und DCE unterscheiden sich grundsätzlich in der Belegung ihrer Steckverbinder. PCs, Drucker, Plotter oder der Main Port eines Terminals sind mit einer DTE-Belegung ausgestattet, während Modems und Drucker-Ports von Terminals DCE-Belegungen aufweisen. Eine Sonderstellung nehmen einige Plottertypen ein, die sowohl mit einer DCE- als auch mit einer DTE-Schnittstelle ausgerüstet sind. Bei der RS232-Schnittstelle werden die einzelnen Datenbit eines Zeichens nacheinander als Spannungszustände über eine Sende- bzw. Empfangsleitung übertragen. Einer logischen "1" entspricht dabei ein negativer Spannungspegel von 15..-3V, einer logischen "0" dagegen ein positiver Spannungspegel von +3..+15V bezogen auf die gemeinsame Signalmasse. Der Datensender muss unter Last einen Mindestpegel von +/- 5 Volt erzeugen, während der Empfänger Pegel von +/-3 Volt noch als gültiges Signal erkennt. Die zulässige ohmsche Last muss größer als 3KOhm sein, die durch die Übertragungsleitung verursachte kapazitive Last ist auf 2500 pF beschränkt. Die erzielbare Entfernung zwischen zwei RS232-Geräten ist wie bei allen seriellen Übertragungsverfahren vom verwendeten Kabel und der Baudrate abhängig. Als Richtmaß sollte bei einer Übertragungsrate von 9600 Baud eine Distanz von 15 bis 30 Metern nicht überschritten werden. RS232-Schnittstellen besitzen eine Vielzahl von Handshake-Leitungen, die jedoch in Ihrer Gesamtheit lediglich zur Verbindung eines Modems mit einem Datenendgerät benötigt werden. Der weitaus häufigere Fall der Verbindung zweier Datenendgeräte 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 miteinander lässt sich in der Regel mit einer reduzierten Anzahl von HandshakeLeitungen ohne Probleme realisieren. Nicht benötigte Handshake-Eingänge werden einfach durch Verbindung mit den eigenen Handshake-Ausgängen auf Freigabepegel gelegt. Serielle Datenübertragung Bei der seriellen Datenübertragung werden auf einer Leitung die Informationen (Bits) nacheinander übertragen. Das setzt voraus, daß sich die beiden an der Übertragung beteiligten Partner darüber einig sind, wann oder wie lange ein Bit auf der Übertragungsleitung anliegt (=gültig ist). Man kann hierzu prinzipiell zwei Verfahren unterscheiden: • synchrone serielle Datenübertragung • asynchrone serielle Datenübertragung Synchrone Datenübertragung Für die synchrone Datenübertragung ist eine Taktleitung notwendig. Dieser Takt, der entweder vom Sender oder Empfänger erzeugt wird, bestimmt, wann die Bits gültig sind. Angenommen, in obigem Beispiel ist der Sender für die Taktleitung verantwortlich. So signalisiert ein auf high gesetzte Taktleitung dem Empfänger: "Jetzt liegt auf der Datenleitung das Bit an. Du kannst es auslesen!" Nach einer gewissen Zeit setzt der Sender den Takt wieder auf Low und signalisiert damit dem Empfänger: "Jetzt will ich ein neues Bit setzen. Jetzt NICHT auslesen!" In obigem Beispiel wird also die Bitfolge 101001102 = 101Dez übertragen. Mit diesem Verfahren und der Low-Level-Programm der seriellen Schnittstelle können z.B. Schieberegister beschrieben oder ausgelesen werden. Asynchrone Datenübertragung Hier einigen sich vor der Übertragung Sender und Empfänger auf eine Übertragungsgeschwindigkeit (Baudrate), die Anzahl der in einem Datenwort vorhandenen Bits und über Start-, Stop und Paritätsbit. Im Ruhezustand befindet sich die Übertragungsleitung auf High-Pegel. Will der Sender ein Datenwort senden, so setzt er für die Zeitdauer eines Bits (gem. der vereinbarten Baudrate) die Leitung auf Low-Pegel. Dieses erste Bit wird Startbit genannt. Anschließend wird die vereinbarte Anzahl an Datenbits übertragen. Es folgt ein Paritätsbit (nach Vereinbarung) zur Kontrolle der Übertragung. Zum Abschluß werden die Stopbits (High-Pegel) gesendet. Es können 1, 1½ oder 2 Stopbits vereinbart werden. Anschließend beginnt diese Prozedur von vorne. 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Bits und Bytes Um Spannung auf einem Pin einer Schnittstelle zu bekommen oder den Status eines Pin zu lesen, muss man einzelne Bits setzen, löschen oder lesen. Es gibt für keine Programmiersprache Anweisungen wie „setze Bit 3 des Bytes auf 1“. Wie ist ein Byte aufgebaut? Ein Byte hat 8 Bits. So kann man 256 verschiedene Zahlen darstellen. Jedes Bit entspricht einem bestimmten Wert im Byte je nach seiner Stellung. Die Stellung im Byte wird von 0 bis 7 gezählt. In der Digitalelektronik bezeichnet man diese kleinste Informationseinheit als Bit. Ein Bit wird dadurch realisiert, dass an einer Leitung - ein Spannungswert überschritten wird. Man spricht dann von high (H oder 1) - ein Spannungswert unterschritten wird. Man spricht dann von low (L oder 0) Beispiel: Eine Folge von 8 Bit kann man zu einer Einheit, einem Byte zusammenfassen. Zum Beispiel kann das Byte LHHLHLHL die Dualzahl 01101010 repräsentieren. Mit einem Byte kann man 256 verschiedene Zustände darstellen: 00000000, 00000001, 00000010, .........., 11111111. Pro zusätzlichem Bit verdoppelt sich die Anzahl der darstellbaren Zustände. Löschen einzelner Bits Einzelne Bits löschen wir, indem wir das erste Byte (das wir wieder aus einem PortRegister ausgelesen haben) mit einem Vergleichsbyte per AND verknüpfen. Bei dem Vergleichsbyte müssen die zu löschenden Bits auf 0 stehen, der Rest auf 1. Wir nehmen diesmal die Bits 0, 1 und 2. In Basic schreiben wir: ByteGelesen% = INP(Adresse%) ByteNeu% = ByteGelesen% AND 248 OUT Adresse%, ByteNeu% oder ganz kurz: OUT Adresse%, INP(Adresse%) AND 248 Bit » 7 6 5 4 3 2 1 0 Summe (Byte) Wert 128 64 32 16 8 4 2 1 255 vom Port gelesen 0 1 0 1 0 1 0 1 85 (beliebig) Lesen einzelner Bits AD-Wandler teilen uns die Ergebnisse ihrer Wandlungen in Form von Spannungen mit, die auf Anforderung gesetzt werden oder eben nicht. Die Spannungen werden an einen Pin gesendet, der mit einem Port-Eingang verbunden ist. Das müssen wir „lesen“ und einzelne Bits auswerten. Wir können die folgenden Abläufe auch dazu verwenden, einen Schalter mit einem Schnittstelleneingang zu verbinden und dessen 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Stellung auswerten. Das permanente Abfragen von solchen Zuständen nennt man "polling". Visual Basic Programm zum Testen der seriellen Schnittstelle Dieses Programm wurde während der Projektwoche in VB 6.0 entwickelt und dient zum Ansteuern und Testen der seriellen Schnittstelle Programm und Funktion: Das Programm selbst ist in Visual Basic 6.0 geschrieben und dient zur Kommunikation mit einem COM-Port. Mit dem Programm ist es möglich Signale zu senden und zu empfangen. Es wurde entwickelt, um mit der Waage eine Kommunikationsverbindung herzustellen, aufrecht zu erhalten und ein akustisches Signal an den Benutzer auszugeben. Projektteam Nikola Batarilo Informationen über Bits und Bytes, Lesen einzelner Bits, Löschen einzelner Bits und Schnittstellenparameter gesammelt. Bildbearbeitung mit dem ImageComposer. Gearbeitet mit FrontPage. Gianina Feraru Startseite mitgestaltet, Projektziele geschrieben, Einträge in unser Weblog zur Projektdokumentation, Startseitenlogo gestaltet, Fotogalerie mitgestaltet. Fiedler Michael COMPort Sniffer 1.3 entwickelt, Dokumentation zu dem Programm und seinen Funktionen, befasst mit Schnittstellen und deren Ansteuerung und Kommunikation. Gerassimoff Christoph Plakatgestaltung, Eintrag über Ziel und Beschreibung unseres Projekts . Harald Heine Internetrecherche zur Rezeptsuche, Eingeben der Rezepte in die Datenbank, Bildsuche, Hilfe bei der Projektdokumentation. Bernhard Hochrainer Recherche über die serielle Schnittstelle und über die Wägezelle. Gearbeitet mit FrontPage. Lucas Kavka Startseite gestaltet, Fotogalerie und Text dazu geschrieben, Einträge in der Projektdokumentation, bei Projektzielen geholfen von Gianina Feraru, Startseitenlogo mitgestaltete. Werner Lueger Suche der Rezepte, Rezeptverarbeitung, Bildsuche, 2 HTA Automatisierte Waage Projektwoche vom 16.2.-21.2.2004 Manuel Meißner Mit Kollegen ein Visual Basic-Programm zum Testen der COM-Ports geschrieben und verbessert. Im Internet einige Programme zum Kommunizieren mit der Waage gesucht. Die Waage angesprochen und bedient. Projektpräsentation ausgearbeitet. Damir Popovic Informationen und Zusammenfassung über die serielle Schnittstelle allgemein, über die Funktionsweise und über die Datenübertragung. Das Auswertegerät der Waage zusammengefaßt und mit Front Page gearbeitet.