Service USB Anleitung

 

Service USB Interfaces

Service USB RS232 • Service USB plus • Service USB classic • Service USB core

Beschreibung

Der Name Service leitet sich von „serielles variables Interface" ab. Es handelt sich um eine Baureihe universeller, kaskadierbarer USB-Interfaces mit jeweils acht digitalen Ein- und Ausgängen, zwei analogen zehn- oder zwölf bit Eingängen und einer RS232 Schnittstelle. Je nach Modell dient es vorzugsweise der Ansteuerung von fischertechnik®-Modellen, dem Betrieb von Motoren, Lampen, Relais, Tastern und Sensoren oder dient nur der Ansteuerung von seriellen Geräten, wie z.B. Kassenbondruckern. Die drei Produktreihen unterscheiden sich wie folgt:

Produkt

Service USB plus Service USB classic Service USB core Service USB RS232
Eingänge

8

+5*

8 4 --nur RS232--
Ausgänge

8x 12V/1,3A

+8*

8x 9V/0,2A 4 --nur RS232--
Analogeingänge

2 (12 bit)

+6*

2 (10 bit)

+2*

0 --nur RS232--
RS232 1 1 0 1
Stromversorgung Integriert 115/230V Steckernetzteil über USB über USB
Gehäuse Aluminium Kunststoff offene Platine SUBD25-Stecker
Einsatzzweck

Komplettgerät für professionellen Einsatz

fischertechnik®

Basis für Eigenentwicklungen

USB/RS232 Wandler und Kassenbondrucker

*Zusätzliche Ein- und Ausgänge mit kleinen Einschränkungen

 

Komplette Anleitung als pdf (3MB)

Service USB RS232

Besitzer anderer Geräte können dieses Kapitel überspringen.

Service USB RS232

 

Beschreibung

Der USB/RS232 Konverter Service USB RS232 ist dank der konsequenten Reduzierung auf das Nötigste im Sub D25 Stecker untergebracht. Im Gegensatz zu herkömmlichen USB/RS232 Konvertern wird Service USB RS232 mit umfangreichen Beispielprogrammen ausgeliefert und kann aus nahezu jedem Mac-Programm angesteuert werden. Auch aus Programmen, die von Haus aus keine serielle Schnittstelle unterstützen wie z.B. FileMaker, 4th Dimension, Adobe Director oder AppleScript.

Service USB RS232 wird hauptsächlich zum Betrieb von RS232 Kassenbondruckern mit FileMaker und 4th Dimension benutzt.

 

Systemvoraussetzungen

Zum Betrieb von Service USB RS232 wird ein Macintosh mit USB-Anschluss und OSX 10.5 bis 10.8 vorausgesetzt. Es können bis zu 100 Service USB RS232 an einem Macintosh betrieben werden.

 

Lieferumfang

 

Empfohlenes Zubehör

Das leicht zu bedienende Kassenprogramm directKASSE stellt in Verbindung mit einem Kassenbondrucker Bixilon SRP-350 oder Epson TM88 eine leistungsfähige Lösung dar, die ohne Umwege über das Printcenter und ohne störende Papierformatsdialoge auskommt. Die Druckzeit einer Quittung oder eines Kassenbelegs dauert weniger als eine Sekunde.

 

Gerätebeschreibung

Service USB RS232 sieht aus wie ein ganz normales Computerkabel. An der einen Seite ein USB-Stecker und an der anderen Seite ein 25 poliger, männlicher Stecker. Die Elektronik ist im Steckergehäuse untergebracht und wird über den USB mit Strom versorgt. Die Anschlußbelegung lautet wie folgt:

Service USB RS232

Steckerbelegung Service USB RS232

 

Technische Daten

 

Blockschaltbild

Service USB RS232

 

Schaltplan

Service USB RS232

Verdrahtungsbeispiele

Nachfolgende Beispiele für Service USB plus stellen eine Anregung dar und sollen das Funktionsverständnis für die Ein- und Ausgänge vertiefen.

 

Schaltungen für die Digitaleingänge

An die Digitaleingänge können z.B. Schalter und Taster angeschlossen werden. Diese werden in der Regel zwischen den Digitaleingang und 5V verbunden. Bei größeren Kabellängen (über 1-2m) empfiehlt sich der Anschluss zwischen Eingang und 12V, um den Spannungsabfall im Kabel zu kompensieren und die Störfestigkeit zu erhöhen. In diesem Fall muss Service USB Plus mit der Netzspannung verbunden werden, damit die Spannung auch am 12V Ausgang zur Verfügung steht.

Verdrahtungsbeispiele

Ein offener Eingang oder ein mit 0V verbundener Eingang entspricht logisch 0. Ein mit 5V oder 12V verbundener Eingang entspricht logisch 1. Diese acht Eingänge werden in einem Byte dargestellt, welches sich aus den acht Bits 00100000 zu dem Dezimalwert 32 errechnet. Dieser Dezimalwert kann z.B. mit dem Befehl „get SERVICE input value" abgefragt werden, der in diesem Fall 32 zurückliefert.

 

Schaltungen für die Analogeingänge

Die Analogeingänge EX und EY messen Widerstände, Spannungen oder Ströme mit einer Auflösung von 4096 Schritten (12Bit). Spannungen von 0-4,095V, Stöme bis 883µA und Widerstände von 0-200kΩ können direkt gemessen werden.

 

Beispiel Widerstandsmessung

Widerstände und Widerstandssensoren, wie z.B. temperatur- oder lichtempfindliche Widerstände, werden zwischen 5V und EX oder EY angeschlossen. Der Widerstandsbereich liegt zwischen 0 und 200kΩ und ist nicht linear. Im unteren Bereich (0-20kΩ) ist die Meßauflösung am größten. Viele handelsübliche Sensoren arbeiten in diesem empfindlichen Bereich.

Verdrahtungsbeispiele

Der Widerstand berechnet sich nach folgender Formel:
R[Ω] = 23200000/D - 4640
R ist der Widerstandswert in Ohm
D ist der rückgelesene Digitalwert, wobei 0 ≤ D ≤ 4095

Mit dem Befehl „get SERVICE EX value" wird der Wert D für die Widerstandsformel ermittelt. Vielfach kommt es jedoch nicht auf den exakten Widerstandswert an, sondern nur auf die Änderung. So ergibt sich bei einem handelsüblichen lichtempfindlichen Widerstand (LDR03) im dunklen Zustand der Wert 0 und im hellen Zustand der Wert 4095.

Verdrahtungsbeispiele

Lichtempfindlicher Widerstand Typ LDR03

 

Beispiel Spannungsmessung

Die zu messende Spannung wird zwischen einem Analogeingang und 0V angelegt.

Verdrahtungsbeispiele

In diesem Beispiel wird der Ladezustand einer Batterie (1,5V Mignonzelle) überprüft.

Die interne Spannungsreferenz von Service USB plus beträgt 4,095V. Der gelesene Analogwert entspricht also exakt der angelegten Spannung in Millivolt.

Bei einer Batteriespannung von 1,5 Volt liegt der Analogwert bei 1500.

 

Eingangsspannung-Bereichserweiterung auf 10V

Der Eingangsspannungsbereich lässt sich durch einen einfachen Widerstand erweitern, der in Reihe geschaltet wird.

Verdrahtungsbeispiele

Durch den internen Widerstand des Service USB von Nominell 4,7kΩ (4,64kΩ exakt) ergibt sich mit dem 6,8kΩ Widerstand ein Spannungsteiler. Die gemessene Spannung errechnet sich nach der Formel:

U[V] = D/405,68

 

Beispiel Strommessung

Der Strommessbereich liegt zwischen 200nA und 0,9mA. Der Strom fließt vom Analogeingang zur 0V Buchse durch den 4,7kΩ Eingangswiderstand.

Verdrahtungsbeispiele

Der Strom berechnet sich nach der Formel: I [A] = D/4640000

 

Strommessung bis 1Ampere

Durch Parallelschalten eines Widerstandes kann der Eingangsbereich erweitert werden. Nachfolgendes Beispiel erlaubt Strommessungen bis 1A.

Verdrahtungsbeispiele

Der Strom teilt sich hierbei zwischen dem Eingang und dem parallelen Widerstand auf. Der 3,9Ω Widerstand muss eine Verlustleistung von 5Watt aushalten. Preisgünstige Drahtwiderstände erfüllen diesen Zweck.

Der Strom berechnet sich nach der Formel: I [A] = D/3896

 

Genauigkeit der Analogeingänge

Die Messgenauigkeit setzt sich aus der Genauigkeit der Referenzspannung, des Widerstandsnetzwerks im Eingang und der A/D-Wandlung zusammen. Die Referenzspannung hat eine Genauigkeit von 0,1%. Das Widerstandsnetzwerk im Eingang hat eine Genauigkeit von 1%. Der A/D Wandler weist eine Genauigkeit von ±2LSB auf.

Bei reinen Spannungsmessungen hat der Eingangswiderstand keinen Einfluss auf die Messgenauigkeit. Die Grundgenauigkeit bei Spannungsmessungen im Bereich 0V bis 4,095V liegt bei 0,15% = 6LSB.

Bei Widerstandmessungen, Strommessungen und bei der Erweiterung des Eingangsspannungsbereiches ist die Genauigkeit des Eingangswiderstandes zu berücksichtigen.

Namentlich bei Widerstandsmessungen liegt der zu messende Widerstand zwischen 5V und dem Analogeingang. Die 5V sind direkt dem USB entnommen und liegen gemäß USB Spezifikation zwischen 4,75V und 5,25V. Bei Bus-Powered-Hubs, also Hubs ohne externes Netzteil kann die Spannung auf 4,4V absinken.

Die Formel zur Widerstandsberechnung geht von einer 5,00V USB Spannung aus. Sollen Widerstandsmessungen mit hoher absoluter Genauigkeit durchgeführt werden, ist zuvor mit einem Multimeter die Referenzspannung zu messen. Diese liegt zwischen 0V und 5V an den Ausgangsklemmen an.
Ist eine derartige Messung nicht möglich, kann für Widerstandsmessungen eine Genauigkeit von 5% angenommen werden.

 

Schaltungen für die Digitalausgänge

Relais und Lampen werden direkt zwischen 0V und einem Ausgang angeschlossen. Eine Vielzahl von Motoren, Relais und Lampen sind direkt anschließbar. Sollen Verbraucher mit Netzspannung geschaltet werden, so kommen Relais zum Einsatz.

Verdrahtungsbeispiele

Anschluss von Motor, Relais und Lampe an Service USB Plus

 

Gleichstrommotoren

Zum Anschluß kommen Motoren mit 12V und einer maximalen Leistung von 15 Watt. Dies entspricht einer Stromaufnahme von 1,3A. Die Motoren können in Ihrer Drehzahl und Leistung über Pulsbreitenmodulation geregelt werden. Ein Beispiel zur Geschwindigkeitsregelung befindet sich im Ordner XCode unter dem Namen „Pulsbreite".

Zum Betrieb von Motoren gibt es verschiedene Schaltungstechniken:

Verdrahtungsbeispiele

Anschluss von vier Motoren an Service USB Plus

Je zwei Ausgänge werden an einen Motor angeschlossen. Vorteil: Jeder Motor kann unabhängig von den anderen Motoren geregelt werden. Nachteil: Nur vier Motoren sind betreibbar.

 

Verdrahtungsbeispiele

Anschluss von acht Motoren an Service USB Plus

Je ein Ausgang wird an einen Pol eines Motors angeschlossen. Alle anderen Pole der Motoren werden zusammen an 0V angeschlossen. Vorteil: Es sind acht Motoren gleichzeitig betreibbar. Nachteil: Die Motoren können die Drehrichtung nicht wechseln.

 

 

Verdrahtungsbeispiele

Anschluss von sieben Motoren an Service USB Plus

Je ein Ausgang wird an einen Pol eines Motors angeschlossen. Alle anderen Pole der Motoren werden zusammen an A7 angeschlossen.
Vorteil: Es können sieben Motoren mit wechselnder Drehrichtung betrieben werden.
Nachteil: Die Motoren können nicht gleichzeitig mit verschiedenen Drehrichtungen betrieben werden.

 

Schrittmotoren

Am Einfachsten ist der Verwendung eines 12V Schrittmotors mit vier Anschlußleitungen und einer maximalen Stromaufnahme von 0,6A pro Wicklung.
Liegt die Betriebsspannung des Motors über 12V, so kann der Motor grundsätzlich betrieben werden. Er erreicht dann nicht seine volle Leistung. Motoren mit 24V können also bei verringerter Leistung betrieben werden.

Liegt die Betriebsspannung des Motors unter 12V, so erwärmt sich der Motor zu stark. Bei kurzfristigem Betrieb von einigen Minuten kann ein 10V Motor problemlos betrieben werden, sofern ausreichende Kühlpausen eingehalten werden. Durch den Einsatz der Pulsbreitenmodulation können auch Motoren mit geringerer Spannung angeschlossen werden. So ist der Betrieb eines 6V Motors bei 50% Pulsbreitenmodulation problemlos möglich.

Sind nur die Stromaufnahme und der Widerstand des Motors bekannt, so hilft das Ohmsche Gesetzt weiter: U = R * I

Durch Multiplikation von Stromaufnahme und Widerstand wird die Spannung berechnet. Liegt diese über 12V, so ist der Betrieb unter Leistungseinbußen möglich. Liegt diese unter 12V, so kommt Pulsbreitenmodulation in Frage. Natürlich kann beides nicht überstrapaziert werden. Aber im Bereich von 4-24V können ist eigentlich jeder Motor anschließbar.

Mit Service USB ist der Betrieb im Vollschritt oder im Halbschritt möglich. Beim Vollschritt ist immer nur eine Windung vom Strom durchflossen. Beim Halbschritt sind während der Halbschrittphase beide Windungen vom Strom durchflossen, wodurch sich die gesamte Stromaufnahme kurzfristig verdoppelt. Die Digitalausgänge zusammen liefern maximal 1,3A, entweder an einem Ausgang oder aufgeteilt durch mehrere Ausgänge.
Soll der Motor nur im Vollschritt betrieben werden, so kann der maximale Strom pro Wicklung 1,3A betragen. Bei Halbschritt halbiert sich der maximal mögliche Strom auf ca. 0,6A pro Wicklung.

Beispiel: Der Hersteller gibt einen Strom pro Wicklung von 1,1 A und einen Widerstand pro Wicklung von 8,8Ω an.

U = R * I = 8,8Ω * 1,1A = 9,7V

Die Spannung liegt etwas unter 12V, wodurch ein kurzfristiger Betrieb mit ausreichend Kühlpausen direkt möglich ist und ein dauerbetrieb mit Pulsbreitenmodulation.

9,7V sind 80% von 12V. Die Pulsbreitenmodulation sollte also auf 80% eingeschaltet werden.

Die Anschlußbelegung des Schrittmotors ist im Datenblatt des Herstellers angegeben. Ein Schrittmotor hat in der Regel zwei Wicklungen, die abwechselnd angesteuert werden:

Verdrahtungsbeispiele

Anschluss eines Schrittmotors an Service USB Plus

Jeder Schrittmotor wird immer über vier Leitungen angesteuert.

Bei Motoren mit sechs Leitungen sind die Mittenanzapfungen der Wicklungen herausgeführt. Diese werden hier nicht benötigt und bleiben unbeschaltet.

Bei Schrittmotoren mit acht Leitungen sind statt der Mittenanzapfung zwei Teilwicklungen pro Wicklung herausgeführt. Diese werden je nach Anforderung parallel oder in Reihe geschaltet, um auf die benötigten zwei Adernpaare zu kommen.

Ist die Zugehörigkeit der Schrittmotorleitungen unklar, so ist mit einem Durchgangsprüfer zu messen, welche Adernpaare zusammen gehören.

Bei Schrittmotoren mit sechs Leitungen hilft nur ein Ohmmeter, um die Mittenanzapfung auszusortieren. Bei acht Leitungen Datenblatt des Herstellers oder viel Geduld beim Ausprobieren, um auf die Essenz von vier Leitungen für den bipolaren Betrieb zu kommen.

Sind die zugehörigen Adernpaare identifiziert, werden diese direkt an Service USB Plus angeschlossen:
Das erste Adernpaar ist mit Out0/Out1 zu verbinden.
Das zweite Adernpaar ist mit Out2/Out3 zu verbinden.
Welches das erste oder das zweite Adernpaar ist, spielt zunächst keine Rolle.

Das Programm „Schrittmotor" aus dem gleichnamigen Ordner hilft bei den ersten Versuchen, einen Schrittmotor richtig anzuschließen. Es erlaubt das Drehen im Voll- und Halbschritt sowie die Pulsbreitenmodulation für Motoren unter 12V.

Zunächst sollte die Anzahl der Umdrehungen pro Minute auf 10 oder weniger gestellt werden. Dann das Programm starten, Dauerdrehen ankreuzen und mit den Fingern an der Achse fühlen, ob sich der Motor gleichmäßig in die angegebene Richtung dreht.

Dreht sich der Motor falsch herum, so ist ein Adernpaar in sich zu vertauschen. Z.B. Out0 mit Out1.

Während der ersten Versuch regelmäßig die Motortemperatur mit der Hand fühlen. Eine leichte Erwärmung ist normal. Wird der Motor so heiß, dass er nicht mehr berührt werden kann, sollte Pulsbreitenmodulation eingeschaltet oder die Ruhephasen vergrößert werden.

Software

Die Software ist für sämtliche Versionen von Service USB identisch. Je nach Interface stehen mehr oder unterschiedliche Ein- und Ausgänge zur Verfügung.

Schichtenmodell Service USB Interfaces

 

Installation und Inbetriebnahme

Von der beiliegenden CD-ROM das Installationsprogramm „SERVICE USB.pkg" starten. Dieses installiert das Service USB Framework und das AppleScript OSAX, also sämtliche Komponenten, die das Betriebssystem im Auslieferungszustand benötigt.

Software

Zuerst den Treiber installieren

Die Installation muss auf dem aktiven System erfolgen. Für die Installation wird das Administratorpasswort benötigt. Nach erfolgreicher Installation muß die grüne LED „USB Betriebsbereit" am Interface leuchten.

Je nachdem mit welchem Programmiersystem Sie arbeiten möchten, kopieren Sie die weiteren Ordner der CD auf Ihre Festplatte. Für die ersten Gehversuche sind die Programme „SERVICE Test RB X" bzw. „PlusTest" aus dem Ordner „Testprogramme" geeignet.

Software

Die mitgelieferte Software

 

Programmroutinen

Sämtliche Programmierbeispiele basieren auf Grundbefehlen, die in den verschiedenen Programmen und Umgebungen (AppleScript, Adobe Director, 4th Dimension, Runtime Revolution, MaxMSP, RealBasic, u.s.w.) Verwendung finden.

Die Programmierbeispiele für FileMaker, RagTime und Numbers verwenden AppleScript. In den grafischen Umgebungen Scratch und MaxMSP ist die Ansteuerung den Programmen adäquat angepasst.

Die Grundbefehle liefert ein Framework, welches sich in dem Pfad /Library/Frameworks/Service USB Driver.framework befindet.

Basierend auf diesem Framework arbeitet die Unterstützung für AppleScript. Diese befindet sich in dem Pfad:
/Library/ScriptingAdditions/SERVICE USB.osax.

Die Erweiterungen für RealBasic, Java, 4th Dimension, Runtime Revolution, MaxMSP, Scratch, Director und TCP/IP greifen ebenfalls auf dieses Framework zu.

 

 

Befehlssyntax

Je nach Programmierumgebung lauten die Befehle systembedingt etwas unterschiedlich. Die Art der Parameterübergabe ist ebenfalls ein kleines bisschen unterschiedlich. Am Beispiel eines Befehls zur Ausgabe wird die grundsätzliche Handhabung erklärt.

Der Beispielbefehl gibt ein Byte an das Interface und setzt die Ausgänge entsprechend. Sie können also an Hand der Leuchtdioden auf dem Interface sofort erkennen, ob alles richtig ausgegeben worden ist. Die Befehlssyntax für den Befehl set SERVICE output value, der die digitalen Ausgänge ansteuert, lautet in:

Runtime Revolution:
ServiceUSBSetOutputValue value, DeviceID

4th Dimension:
err:=Service SetOutputValue (myOutputValue;deviceid)

Adobe Director:
SERVICEUSBSetOutputValue myOutputValue, deviceid, timeout

Apple Script:
set SERVICE output value 85 device id 0 timeout 0

RealBasic:
SERVICEUSBSetOutputValue(Value as Integer, DeviceID as Inte-
ger, Timeout as Integer) as Integer

MaxMSP:
setOutputValue value DeviceID

C,C++, ObjectiveC Framework (Xcode):
OSErr SetOutputValue(UInt8 inValue,DeviceIdentifierRef inDeviceIdentifier=kUseDefaultDeviceIdentifier,UInt32 inTimeout=kDefaultTimeout);

Java:
public int ServiceUSB_SetOutputValue(int value, int inDeviceIdentifier, long timeout)

UnixShell (Service USB Tool)
SERVICE_USB_Tool -c set_output -v value [-d deviceID]

TCP/IP (SUSBServer)
set_output value [deviceID]

Diesen Ausgabebefehlen sind die Variablen value, DeviceID und timeout gemeinsam. Bei einigen Programmierumgebungen wird zusätzlich ein Fehlercode zurückgeliefert. Dieser ist normalerweise 0, wenn der Befehl ordnungsgemäß ausgeführt wurde. Die genaue Fehlerbeschreibung der von 0 abweichenden Werte befindet sich in
/Library/Frameworks/Service USB Driver.framework/Headers/ServiceUSBToolbox.h.

Value ist der Ausgabewert im Bereich von 0-65535, wobei je nach Interface zur Zeit nur die unteren 1,4,8 oder 12 bits genutzt werden.

DeviceID gibt an, welches Service USB gemeint ist. Bei nur einem angeschlossenen Service USB setzen Sie die DeviceID auf 0. Bei mehreren angeschlossenen Service USB bestimmt die DeviceID für welches Service USB der Befehl gilt. Die DeviceID ist vierstellig, entspricht der Seriennummer und ist je nach Interface aufgeklebt oder eingeschlagen. Z.B. 5001, 1487 oder 2516. Anstelle einer Hartkodierung können die DeviceIDs auch automatisch ermittelt werden. Programmierbeispiele befinden sich auf der CD-ROM.

Timeout ist meistens auf 0 zu setzen. In Runtime Revolution, AppleScript, MaxMSP und RealBasic können timeout und, wenn nur ein Interface angeschlossen ist, auch die deviceID entfallen.

Beispiel: Um die acht Ausgänge abwechselnd auf 0 und 1 zu setzen, lautet der zugehörige Dezimalwert 01010101 = 85. In diesem konkreten Fall lauten die Befehle:

Runtime Revolution:
SERVICEUSBSetOutputValue 85

4th Dimension:
err:=Service SetOutputValue (85;0)

Macromedia Director:
SERVICEUSBSetOutputValue 85, 0, 0

Apple Script:
set SERVICE output value 85

Real Basic:
dim errorCode as integer
errorCode = SERVICEUSBSetOutputValue(85, 0, 0)

MaxMSP:
setOutputValue 85

C,C++ Framework (Xcode):
SetOutputValue (85,(DeviceIdentifierRef)0,0);

UnixShell
./SERVICE_USB_TOOL -c set_output -v 85

TCP/IP
set_output 85

 

Grundbefehle

 

Die Softwarebefehle werden anhand der AppleScript Syntax beschrieben. Die Werte für deviceID und timeout sind der Einfachheit halber weggelassen.

 

set SERVICE output value X

Setzt den digitalen Ausgang auf den Wert von X, wobei 0 ≤ X ≤ 65535.

 

get SERVICE input value

Liefert den Zustand der digitalen Eingänge als Dezimalwert (0-65535) zurück.

 

get SERVICE EX value

Liefert den Zustand des Analogeingangs EX als Dezimalwert (0-65535) zurück.
Bei Service USB Plus 0-4095
Bei Service USB classic 0-1023

 

get SERVICE EY value

Liefert den Zustand des Analogeingangs EY als Dezimalwert (0-65535) zurück.
Bei Service USB Plus 0-4095
Bei Service USB classic 0-1023

 

get SERVICE output value

Liefert den Zustand des digitalen Ausgangs als Dezimalwert (0-65535) zurück. Der zurückgelieferte Wert entspricht dem zuvor mit „set SERVICE output value" gesetzten Wert. Dies kann nach einem Programmstart hilfreich sein, wenn das Service USB schon in Betrieb war und der Zustand der Ausgänge rekonstruiert werden muss.

 

set SERVICE output value by mask "TXTXTXTX"

Setzt den Digitalausgang gemäß der in dem Textstring angegebenen Maske. Die Buchstaben beziehen sich von links nach rechts auf das höchstwertigste bis niederwertigste Bit.

I bedeutet „High" oder logisch 1, das Bit wird gesetzt.
O bedeutet „Low" oder logisch 0, das Bit wird gelöscht.
T bedeutet invertieren (toggle) gegenüber dem vorherigen Zustand.
X lässt den Wert unverändert.

Groß- und Kleinschreibung wird in dem Textstring nicht unterschieden. Der String soll eine Länge von acht oder sechzehn Zeichen aufweisen. In einigen Programmierumgebungen findet keine automatische Längenprüfung statt. Dann heißt der Befehl ...by8BitMask oder ...by16BitMask bzw. ...mask8 oder ...mask16.

 

set SERVICE output value bit "T" bit 0

Beeinflusst ein bestimmtes Bit des Digitalausgangs. Der Wert für bit ist im Bereich 15-0 und bezieht sich auf die einzelnen Bits innerhalb des Ausgangs. Der Buchstabe gibt an, wie das Bit beeinflusst werden soll.
I bedeutet „High" oder logisch 1, das Bit wird gesetzt.
O bedeutet „Low" oder logisch 0, das Bit wird gelöscht.
T bedeutet invertieren gegenüber dem vorherigen Zustand.
X lässt den Wert unverändert.

 

get SERVICE input value as mask

Liest den Digitaleingang und gibt das Ergebnis als Textstring zurück.
I bedeutet „High" oder logisch 1, das Bit ist gesetzt.
O bedeutet „Low" oder logisch 0, das Bit ist gelöscht.

 

get SERVICE input value bit n

Liest Bit n (15-0) des Digitaleingangs.
Liefert "I" oder "O" zurück.

 

test SERVICE input value bit n

Liest Bit n (15-0) des Digitaleingangs.
Liefert TRUE oder FALSE zurück. FALSE entspricht 0. TRUE ist ein von 0 verschiedener Wert.

 

compare SERVICE input value mask "IOOOOOOO"

Vergleicht den Digitaleingang mit der Textmaske.
I bedeutet „High" oder logisch 1. Das Bit ist gesetzt.
O bedeutet „Low" oder logisch 0. Das Bit ist gelöscht.
X gibt an, das Bit zu ignorieren.
Bei Übereinstimmung wird False oder True zurückgeliefert.

 

pulse SERVICE engine {M1, M2, M3, M4} input value bits {T1,T2, T3, T4}

Dieser Befehl wird meistens für die Motorsteuerung bestimmter fischertechnik®-Modelle verwendet. Zur Verwendung müssen die Motoren M1 bis M4 an je zwei Ausgänge und pro Motor je ein Taster für die Rückmelde-Impulse angeschlossen sein. M1 zwischen O0 und O1 (Motor 1 an Ausgang 0 und Ausgang 1), M2 zwischen O2 und O3, M3 zwischen O4 und O5 und M4 zwischen O6 und O7.

Der Motor wird nach Absenden des Befehls so lange gedreht, bis eine bestimmte Anzahl an Rückmelde-Impulsen erkannt wurde. Zur Rückmeldung dienen die Eingänge I7 bis I0, an welche in der Regel Taster angeschlossen werden, die bei der Motordrehung Pulse abgeben z.B. durch eine Nockenwelle oder eine Gabellichtschranke. Hierdurch kann z.B. ein Getriebe an eine bestimmte Stelle gefahren werden, ohne teure Schrittmotoren zu verwenden.

Es kann der Befehl aber auch eingesetzt werden, um einen Motor in eine Endposition zu einem Endschalter zu fahren. Die Variablen M1 bis M4 können positiv, Null oder negativ sein und geben die Drehrichtung des Motors und die Anzahl der Impulse an. Negative Zahl: Motor dreht links. Positive Zahl: Motor dreht rechts. Null: Zustand des Motors wird nicht verändert .

Die input value bits T1 bis T4 geben für die Motoren 1 bis 4 die zugehörigen Tastereingänge an. Die Werte liegen zwischen 0 und 7 und beziehen sich auf die Eingänge I0 bis I7. Bei allen fischertechnik®-Modellen werden die Bits 1, 3, 5, 7 als Rückmelde-Impulse für die Motoren 1-4 benutzt.

Beispiel: Der Motor 1 soll so lange links drehen, bis Taster I7 500 Impulse empfangen hat:
pulse SERVICE engine {-500, 0, 0, 0} input value bits {7, 0, 0, 0}

Ein Puls ist ein Wechsel zwischen logisch 0 und logisch 1 oder zwischen logisch 1 und logisch 0. Wenn ein Taster einmal gedrückt und dann wieder losgelassen wird, handelt es sich also um zwei Pulse. Es wird sowohl die positive Flanke als auch die negative Flanke gezählt.

 

pulse SERVICE engine while mouse down {M1,M2,M3,M4} input value bits {T1,T2,T3,T4}

Mit diesem Befehl wird die Anzahl der benötigten Pulse für den vorhergehenden Befehl von Hand herausgefunden. Bei den fischertechnik®-Modellen gibt es einen Lernmodus, bei dem eine Modellachse so lange bewegt wird, wie der Benutzer die Maustaste gedrückt hält. Dieser Befehl zählt die Pulse während sich der Motor dreht. Der Motor dreht sich solange die Maustaste gedrückt ist.

Beispiel:
pulse SERVICE engine while mouse down {1, 0, 0, 0} input value bits {3,0, 0, 0}
Dreht den Motor 1 rechts herum und gibt nach dem Loslassen des Mausknopfes die Anzahl der von E3 gezählten Pulse zurück.

 

get SERVICE device count

Gibt die Anzahl der zur Zeit angeschlossenen Service USB zurück. Dieser Befehl wird im Zusammenhang mit der automatischen DeviceID-Ermittlung verwendet.

 

get next SERVICE device id

Liefert die Device ID des nächsten Service USB zurück. Zur Ermittlung der Device IDs sämtlicher Service USB wird dieser Befehl zunächst mit der Device ID 0 ausgeführt. Anschließend wird der Befehl für jedes angeschlossene Interface mit der soeben zurückgelieferten Device ID ausgeführt. Auf diese Weise erhält man sämtliche Device IDs der angeschlossenen Service USB.

 

get SERVICE device ROM version

Liefert die Versionsnummer der im Service USB tätigen Firmware zurück. Ab Firmware Version 3 ist es möglich, einzelne Ausführungen von Service USB an Hand der Firmware zu unterscheiden. Die letzte Ziffer gibt das Modell an
3.0.1 = Service USB Plus
3.0.2 = Service USB Core
3.0.3 = Service USB Drawer = Service USB opener
3.0.4 = Service USB Classic (Fischertechnik)

 

get SERVICE device driver version

Liefert die Versionsnummer des Macintosh Treibers (Framework) zurück.

 

get SERVICE device serialnr

Liefert die Seriennummer eines bestimmten Service USB als Zeichenkette in hexadezimaler Schreibweise zurück. Die Seriennummer in dezimaler Schreibweise ist auf dem Interface angegeben und entspricht immer der Device ID.

 

register SERVICE device notification notification type

Dieser Befehl dient dazu, eine bestimmte Programmroutine auszuführen, wenn die angegebene Bedingung erfüllt ist. Anstatt eine Bedingung, z.B. den Druck auf einen Taster ständig abzufragen (polling), ist es hiermit möglich, eine Programmroutine aufrufen zu lassen wenn z.B. der Taster gedrückt wird. Dies spart gegenüber der Methode des ständigen Abfragens viel Rechenzeit und bietet sich immer dann an, wenn lange Zeit auf ein Ereignis gewartet werden soll, um daraufhin möglichst schnell auf dieses Ereignis zu reagieren. Dieser Befehl funktioniert nur im Frameworks und in AppleScript. Unter AppleScript ist der Name der auszuführenden Funktion fest vergeben und lautet
on «event SerUNoRe» (theNotificationType)
end «event SerUNoRe»

In der Framework Version kann die auszuführende Routine selbst bestimmt werden. Es kann immer nur ein Ereignis überwacht werden. Mehrfaches Aufrufen dieses Befehls überschreibt die Bedingungen des vorhergehenden Aufrufes.
Die abfragbaren Bedingungen lauten:
- notification type input value mask "XXXXXXIX"
Die Buchstaben beziehen sich von links nach rechts auf das höchstwertigste bis niederwertigste Bit.
I bedeutet „High" oder logisch 1.
O bedeutet „Low" oder logisch 0.
T bedeutet „Toggle". Die Bedingung ist erfüllt, wenn sich der Zustand des Bits ändert.
X bedeutet, dass der Zustand des Bits nicht ausgewertet wird.
Die obige Bedingung ist wahr, wenn Bit 1 auf logisch 1 ist, also wenn der Taster am Eingang E2 gedrückt ist.
Beispiel in AppleScript:
register SERVICE device notification notification type input
value mask notification value "XXXXXXIX"

- notification type ex value greater X
- notification type ex value less X
- notification type ey value greater X
- notification type ey value less X

Diese Abfragebedingungen beziehen sich auf die Analogeingänge.
Der Wert für X muss bei Service USB Plus zwischen 0 und 4095 und bei Service USB classic zwischen 0 und 1023 liegen.

Beispiel in AppleScript:
register SERVICE device notification notification type ex value greater notification value 500

 

- notification type no notification

Meistens ist die auslösende Bedingung noch wahr, wenn die benachrichtigte Programmroutine schon wieder verlassen wurde. In diesem Fall wird die Programmroutine sofort wieder ausgeführt, was zu einem dauerhaften und in der Regel unerwünschten Ausführen der Routine führt. Um dies zu vermeiden, sollte als erstes dieser Benachrichtigungsmechanismus abgestellt werden, wenn die Programmroutine ausgeführt wird.

Beispiel AppleScript:
on «event SerUNoRe» (theNotificationType)
register SERVICE device notification notification type no
notification
-- weitere Programmbefehle
end «event SerUNoRe»

 

 

send SERVICE vendor request xx wValue yy wIndex zz

Mit diesem Befehl werden Parameter innerhalb des Interfaces verändert. Dies kann z.B die Baudrate der RS232 Schnittstelle, Auflösung der Pulsbreitenmodulation, die Belegung von EX,EY mit Analogeingängen oder ein spezieller Befehl für Sonderanfertigungen sein.

Es werden drei Parameter übergeben, wobei der request immer 0 ist und die Funktion nur durch wValue und wIndex bestimmt wird. wValue und wIndex sind im Bereich von 0 bis 65535. Allerdings ist es bei einigen Befehlen einfacher, sich wValue im Hexadezimalsystem zu denken, also im Bereich von 0000 bis FFFF. Ist in der Tabelle wValue nicht angegeben, so hat der Wert keinen Einfluß auf die Funktion.

 

Zusatzfunktionen über vendor request

Eine ausführliche, nach Funktionen geordnete Beschreibung folgt in den nächsten Kapiteln.

 

wIndex wValue Funktion
0 Baudrate gemäß Tabelle setzt Baudrate
1 HSKi auf Dezimal an
2 HSKi auf Dezimal aus (Normalzustand)
3 [Original][Ersatz] RS232 Zeichen ersetzen
9 Frequenz Pulsbreitenmodulation pro Ausgang verschieden
10 Pulsbreite Pulsbreitenmodulation für alle Ausgänge gleich
11 Digitaleingänge als Ausgänge nutzen
12 Digitaleingänge als Eingänge nutzen (Normalzustand)
13 Eingang Analogeingang für EX setzen
14 Eingang Analogeingang für EY setzen

 

RS232 Schnittstelle

Baudrate setzen

Die Baudrate ist zu Beginn auf 19200 eingestellt und kann mit diesen Parametern geändert werden:
request = 0
wIndex = 0
wValue = Baudrate gemäß Tabelle oder Formel
65536 - (24 * 10^6 / (32 * Baudrate))

Je nach Definition innerhalb einer Programmierumgebung kann wValue mit Vorzeichen behaftet sein. Der Wertebereich geht dann nicht mehr von 0 bis 65535, sondern von -32768 bis 32767. Die Umrechnung geschieht bei Zahlen über 32767, indem von der Zahl 65536 abgezogen wird.

If wValue > 32767 then
wValue = wValue - 65536

In dieser Tabelle sind in Klammern die umgerechneten Werte angegeben.

19200 Baud = 65497 (-39)
14400 Baud = 65484 (-52)
9600 Baud = 65458 (-78)
4800 Baud = 65380 (-156)
2400 Baud = 65224 (-312)
1200 Baud = 64911 (-625)
300 Baud = 63036 (-2500)

Beispiel zum Setzen der Baudrate auf 9600:
send SERVICE vendor request 0 wValue 65458 wIndex 0
oder
send SERVICE vendor request 0 wValue -78 wIndex 0

 

Handshake/Dezimalwert zurücklesen

 

request = 0
wIndex = 1 für Handshake oder = 2 für Dezimalwert
wValue = 0

Wenn Zeichen über die RS232 Schnittstelle gesendet werden, so haben diese einen langen Weg vor sich. Von der Macintosh-Anwendung durch verschiedene Treiber und das Betriebssystem über die USB- Schnittstelle in Service USB und dann weiter an das externe RS232 Gerät. Wenn das externe Gerät nicht in der Lage ist Zeichen zu empfangen, so teilt es diesen Umstand Service USB über die Handshakeleitung (HSKi) mit. Service USB setzt Zeichen nur dann über die RS232 Schnittstelle ab, wenn das externe Gerät bereit ist (Hardwarehandshake). Nun kommt es vor, dass das externe Gerät nicht bereit ist und die Macintosh-Anwendung Zeichen über den USB an die RS232 Schnittstelle schicken möchte. In diesem Fall können bis zu 128 Byte zwischengepuffert werden. D.h. die Macintosh-Anwendung hat die Zeichen losgeschickt, der Sendebefehl ist ohne Fehler ausgeführt worden und das Macintosh-Programm geht davon aus, daß die Zeichen auch über RS232 ausgegeben wurden. Wenn nun die RS232-Gegenstelle nicht bereit ist, so verharren die Zeichen im Zwischenpuffer bis die Gegenstelle wieder bereit ist. Sollte der Zwischenpuffer voll sein, so kehrt der Sendebefehl nach einer gewissen, einstellbaren Zeit mit einem Fehler zurück. Es kann daher nützlich sein, die Handshakeleitung und somit die Bereitschaft der Gegenstelle zum Zeichenempfang vom Macintosh aus abzufragen und den Benutzer mit einer Meldung darauf hinzuweisen, dass das RS232-Gerät nicht betriebsbereit ist.

Bei den ab 2008 ausgelieferten Interfaces mit Firmware Version ab 3.x stehen insgesamt 16 bit bei den Digitaleingängen zur Verfügung und Bit8 ist mit dem Zustand der Handshakeleitung belegt.

Für ältere Interfaces bzw. aus Gründen der Softwarekompatibiliät kann an Stelle der Digitaleingänge die Handshakeleitung auf Bit4 empfangen werden.

Der Befehl lautet:
send SERVICE vendor request 0 wValue 0 wIndex 1

Danach kann der Zustand des Digitaleingangs durch verschiedene, zuvor besprochene Befehle, ausgelesen werden. Als Beispiel sei hier genannt:
compare SERVICE input value mask "XXX0XXXX".
Bit 4 entspricht der Handshakeleitung. Alle anderen Bits sind zu ignorieren. Das RS232-Gerät ist bereit, wenn Bit 4 logisch 0 aufweist. So liefert z.B. compare SERVICE input value mask "XXX0XXXX" true zurück, wenn das RS232-Gerät bereit ist.

Wichtig ! Vergessen Sie nicht diesen Zustand wieder zu ändern, wenn Sie die Digitaleingänge nutzen möchten.
send SERVICE vendor request 0 wValue 0 wIndex 2 device id 0
stellt den Ursprungszustand wieder her.

 

Zeichen ersetzen

Service USB kann veranlasst werden, ein Zeichen beim Senden durch ein anderes Zeichen zu ersetzen. Hierdurch können Sie eine Zeichensatztabelle im Service USB hinterlegen, wenn das RS232 Gerät (z.B. Kassenbondrucker) eine andere Zeichensatztabelle verwendet als der Macintosh. Dieser Zeichenaustausch funktioniert für Sendedaten zum externen RS232 Gerät. Empfangene Zeichen werden nicht verändert. Die Beispielprogramme für Service USB RS232 und das Kassenprogramm für den Einzelhandel machen von dieser Funktion regen Gebrauch, um die Zeichensätze von Macintosh und Bondrucker in Einklang zu bringen. Im Zuge von UTF-8 und Unicode verliert dieser Befehl langsam an Bedeutung und ist aus Kompatibilitätsgründen noch enthalten.
request = 0
wIndex = 3
wValue = 0xAABB
AA = von
BB = nach
Beispiel, um statt eines X ein U auszugeben
X = ASCII Hexadezimalwert 58
U = ASCII Hexadezimalwert 55

Der auszugebende Hexadezimalwert für wValue lautet also 5855. Je nach Programmierumgebung muss dieser Wert noch in das Dezimalzahlensystem umgerechnet werden. So nimmt z.B. der AppleScript Befehl nur Dezimalzahlen entgegen und lautet wie folgt:
send SERVICE vendor request 0 wValue 22613 wIndex 3 device id 0
Je nach Definition innerhalb einer Programmierumgebung kann wValue mit Vorzeichen behaftet sein. Der Wertebereich geht dann nicht mehr von 0 bis 65535, sondern von -32768 bis 32767. Die Umrechnung geschieht bei Zahlen über 32767, indem von der Zahl 65536 abgezogen wird.
If wValue > 32767 then
wValue = wValue - 65536

 

Zeichen senden

Zeichen über die RS232 Schnittstelle gibt folgender Befehl aus
write bytes to SERVICE pipe x data y data size z

Es gelten diese Parameter:
pipe = muß immer 0 sein.
data = die zu sendenden Daten
data size = die Länge der zu sendenden Daten in Bytes. Wenn dieser Parameter 0 ist, werden alle Daten ausgegeben.
device id = Seriennummer des Service USB. Kann 0 sein, wenn nur ein Service USB angeschlossen ist.
timeout = Zeitangabe in 1/60 Sekunden, die versucht wird um die Daten über RS232 auszugeben. Wenn das externe RS232 Gerät nicht bereit ist (Handshakeleitung) und der interne Zeichenpuffer (maximal 128Bytes) voll ist, kann der Befehl keine Zeichen senden. Er versucht es dann so lange, wie unter „timeout" angegeben und kehrt bei Erfolglosigkeit mit Fehler 13001 (errServiceUSB_Timeout) zurück.
Beispiel:
write bytes to SERVICE pipe 0 data "Eukalyptusbonbon" timeout 100

 

Zeichen empfangen

Empfangene Zeichen werden in einem Macintosh internen Zwischenpuffer mit einer Größe von ca. 1000 Bytes abgelegt. Dieser Zwischenpuffer kann mit folgendem Befehl ausgelesen werden
read bytes from SERVICE
Dabei gelten diese Parameter
pipe = muß immer 0 sein.
for = die Anzahl der zu lesenden Zeichen. Ist dieser Parameter 0, so werden alle Zeichen gelesen.
device id = Seriennummer des Service USB. Kann 0 sein, wenn nur ein Service USB angeschlossen ist.
timeout kann 0 sein.

 

Anzahl der empfangenen Zeichen herausfinden

Manchmal ist es nützlich herauszufinden ob schon Zeichen empfangen wurden.
read bytes available in SERVICE pipe gibt die Anzahl der zur Zeit im Macintosh-Puffer befindlichen Zeichen zurück.
Beispiel:
read bytes available in SERVICE pipe 0

Unter AppleScript und dem Framework (Xcode) kann auch ein Notification-Service gestartet werden.
Beispiel:
register SERVICE device notification notification type bytes in read pipe notification value 0

Tipp: Im Ordner Xcode/SUSBTerminal/build befindet sich ein einfaches Terminalprogramm, mit dem die Funktion der RS232 und der angeschlossenen Geräte geprüft werden kann.

 

 

Pulsbreitenmodulation

Befehle für Pulsbreitenmodulation (Analogwertausgabe)

Die acht Leistungsausgänge können Pulsbreitenmoduliert werden. Hierdurch ist es möglich, Lampen in ihrer Helligkeit und Motoren in ihrer Geschwindigkeit zu regulieren.

Bei der Pulsbreitenmodulation liegt die Ausgangsspannung nicht dauerhaft an, sondern wird vom Interface selbsttätig fortlaufend Ein- und Ausgeschaltet.

Hierbei gibt es zwei Angaben: Die Schaltfrequenz und das Tastverhältnis.

Pulsbreitenmodulation

Pulsbreitenmodulation

Die Schaltfrequenz (f) gibt an, wie schnell hintereinander der Ausgang Ein- und Ausgeschaltet wird. Die Schaltfrequenz soll so hoch liegen, dass z.B. bei Lampen kein Flackern und bei Motoren kein Ruckeln wahrgenommen wird.

Das Tastverhältnis gibt an, wie lange der Ausgang in einem Zyklus (f) eingeschaltet ist. Bei einem Tastverhältnis von 80% ist der Ausgang zu 80% eingeschaltet und zu 20% ausgeschaltet.

Normalerweise ist die Pulsbreitenmodulation ausgeschaltet. Service USB Plus und Service USB classic unterstützen zwei Möglichkeiten, die Ausgänge mit Pulsbreitenmodulation zu nutzen, die je nach Einsatzzweck Verwendung finden.

Pulsbreite pro Ausgang verschieden

Hierbei ist es möglich, jeden Ausgang mit einem unterschiedlichen Tastverhältnis zu betreiben. Dies findet Anwendung, wenn z.B. mehrere Lampen mit unterschiedlicher Helligkeit oder mehrere Motoren mit unterschiedlicher Drehgeschwindigkeit betrieben werden.
request = 0
wIndex = 9
wValue = Frequenz

Beim Einschalten wird die Schaltfrequenz angegeben. Diese wird normalerweise im Betrieb nicht mehr verändert, denn die Helligkeit/Geschwindigkeit wird über das Tastverhältnis geregelt.

Technisch bedingt ist die Anzahl der möglichen Tastverhältnisse von der Schaltfrequenz abhängig.

Schaltfrequenz mögliche Tastverhältnisse wValue
500 Hz 4 3
250 Hz 8 7
125 Hz 16 15
62,5 Hz 32 31
31,5 Hz 64 63
16,5 Hz 128 127
Pulsbreite aus (Normalzustand) 0 0

Die Werte für wValue zum Setzen der Schaltfrequenz

Normalerweise ist die Schaltfrequenz von 125Hz eine gute Wahl. Diese liegt ausreichend hoch, so dass kein Flackern oder Ruckeln wahrnehmbar ist und gestattet 16 verschiedene Regelstufen.
send SERVICE vendor request 0 wValue 15 wIndex 9 device id 0

Nachdem die Pulsbreitenmodulation eingeschaltet ist, kann der Wert der einzelnen Ausgänge mit set SERVICE output value gesetzt werden. Dieser Befehl akzeptiert werte zwischen 0 und 65535, also zwei Byte. Im Gegensatz zum Normalmodus ohne Pulsbreitenmodulation gibt hier das obere Byte die Nummer des Ausgangs zwischen 0 und 7 an. Das untere Byte das Tastverhältnis zwischen 0 und der maximal möglichen Stufe.

Um nun den Ausgang 7 zu 3/16 (ca. 20%) einzuschalten, muß das obere Byte eine 7 und das untere Byte eine 3 enthalten. Als Hexadezimalzahl also 0703.
Hexadezimal 0703 entspricht dezimal 1795. Mit folgendem Befehl wird daher der Ausgang 7 zu 3/16 eingeschaltet.
set SERVICE output value 1795

In Programmierumgebungen, die nur dezimale Zahlensysteme zulassen, kann nach folgender Formel umgerechnet werden:
Dezimalwert = (Ausgangsnummer * 256) + Tastverhältnis

Durch das Einschalten der Pulsbreitenmodulation wurde das Verhalten des Befehls zum Steuern der Digitalausgänge verändert. Es ist nicht mehr jedes Bit einem Ausgang zugeordnet. Da intern sämtliche Befehle zum Steuern der Digitalausgänge, wie z.B. set SERVICE output value bit oder set SERVICE output value by mask zusammenhängen, funktionieren diese nicht mehr.

Die Ausgänge lassen sich nun individuell Regeln und es muß jedesmal neben der Ausgangnummer auch der Wert für das Tastverhältnis angegeben werden. Dies hat zwei Nachteile:

Um dies zu ermöglichen, gibt es eine zweite Betriebsart für die Pulsbreitenmodulation.

 

Pulsbreite für alle Ausgänge gleich

Damit sämtliche Befehle zum Steuern der Digitalausgänge wie im Normalzustand funktionieren und somit jedes Bit einem Ausgang zugeordnet ist, wird die Pulsbreite einmal für alle Ausgänge gesetzt. Diese Betriebsart findet in der Regel bei Motoren Verwendung, die grundsätzlich zu schnell laufen. So kann z.B. ein 9V Motor mit 12V betrieben oder der gesamte Bewegungsablauf eines Roboters verlangsamt werden.

Beim Einschalten wird das Tastverhältnis angegeben.
request = 0
wIndex = 10
wValue = Tastverhältnis

Die Schaltfrequenz liegt fest bei 125Hz. Das Tastverhältnis liegt im Bereich von 0 bis 15. Eine 0 schaltet den Pulsbreitenmodus aus. Bei einer 15 liegt das Tastverhältnis bei 15/16, also sind die Ausgänge zu ca. 93% eingeschaltet.

send SERVICE vendor request 0 wValue 8 wIndex 10 device id 0

Tipp: Ein Testprogramm für die verschiedenen Arten der Pulsbreitenmodulation befindet sich in dem Ordner Xcode.

 

Mehr Ein- und Ausgänge freischalten

Die unteren Digitaleingänge als Ausgänge verwenden
(nur Service USB Plus)

Der Eingangspuffer für die Digitaleingänge kann in seiner Richtung umgekehrt werden, so dass insgesamt 16 Ausgänge zur Verfügung stehen.

request = 0
wIndex = 11 (Umkehren) oder 12 (Normalzustand)
wValue = 0

Die unteren 8 bit bleiben Leistungsausgänge, während die oberen 8 bit ohne große Leistung 2,5V Ausgangsspannung liefern. Sie finden in der direkten Ansteuerung von Logikbausteinen oder Transistoren ihre Verwendung. Bei einem Ausgangspegel von 2,5V kann sowohl 5V Logik als auch 3,3V Logik betrieben werden.

Mehr Leistung, z.B. zum Schalten von Relais wird durch die Ansteuerung eines Transistors erreicht. Ein zusätzlicher Basisvorwiderstand ist nicht nötig, weil der interne Schutzwiderstand jetzt als Basisvorwiderstand dient (siehe Schaltplan).

send SERVICE vendor request 0 wValue 0 wIndex 11 device id 0

 

Nutzen der zusätzlichen Analogeingänge

Zur schnellen Abfrage der Analogeingänge dienen die Befehle
get SERVICE EX value
get SERVICE EY value

Standardmäßig sind diese bei SERVICE USB Plus mit EX,EY und bei Service USB classic mit AX und AY verbunden.

Um die anderen Analogeingänge am Interface abzufragen, müssen diese zunächst auf EX und EY gelegt werden.
request = 0
wIndex = 13 (EX setzen) oder 14 (EY setzen)
wValue = Analogeingang

 

wValue

Analogeingang

Service USB classic

Analogeingang

Service USB plus

7 - Digitaleingang 4
6 - Digitaleingang 3
5 - Digitaleingang 2
4 - Digitaleingang 1
3 A1 Digitaleingang 0
2 AY EY
1 A2 DB9, Pin 4
0 AX EX

 

Zusätzliche Analogeingänge

Beispiel, um bei Service USB classic die Eingänge A1 und A2 an Stelle der Eingänge AX und AY zu nutzen:

send SERVICE vendor request 0 wValue 3 wIndex 13 device id 0
send SERVICE vendor request 0 wValue 1 wIndex 14 device id 0

Acht Millisekunden nach dem Umschalten stehen die neuen Werte zur Verfügung. Es muss also einen kleinen Moment gewartet werden, bis alle internen Puffer geleert sind.

 

Entwicklungsumgebungen

Auf der CD-ROM befindet sich der Service-USB Treiber für Macintosh OSX 10.3 - 10.8, Quicktime-Filme von fischertechnik® Modellen und umfangreiche Software für
AppleScript, RealBasic, Xcode (C, C++, Cocoa, Java, AppleScript Studio), FileMaker, Director, Java mit BlueJ, MaxMSP, Ragtime, Runtime Revolution, Scratch, 4th Dimension, Numbers, ein TCP/IP Server, um Service USB mit oder ohne Bonjour im Netzwerk zu nutzen, diverse Beispielprogramm für Pulsbreitenmodulation und die RS232 Schnittstelle.

Außerdem eigenständige Programme für verschiedene fischertechnik®-Baukästen in RealBasic, sowie Ansteuerungsbeispiele für Kassenschublade, Kassenbondrucker und LCD-Kundenanzeige. Eine Demo-Version von directKasse, dem Kassenprogramm mit kleinem Warenwirtschaftssystem für den Einzelhandel ist ebenfalls enthalten.

 

Das Installationsprogramm „SERVICE USB.pkg"

Dieses Programm installiert den Treiber. Im Einzelnen handelt es sich um folgende Komponenten:
/Library/Frameworks/Service USB Driver.framework
Enthält das Frameworks, welches sämtliche Ansteuerroutinen für Service USB enthält.

/Library/ScriptingAdditions/SERVICE USB.osax
Enthält die AppleScript-Unterstützung.

/Library/Receipts/SERVICE USB.pkg
Enthält das Installationsprogramm. Der Ordner „Receipts" dient der Übersicht, welche Erweiterungen auf dem Rechner schon installiert wurden.

/Library/StartupItems/SERVICE_USB_FirmwareLoader
Sorgt dafür, dass ein Hintergrundprozess (Daemon) gestartet wird, der im Bedarfsfall die Firmware in das Interface lädt.

/System/Library/Extensions/SERVICEUSBClassicSeize.kext
Diese Kernel Extension führt keinen Programmcode aus. Sie besteht lediglich aus einer sogenannten „plist". Diese „plist" weist die Classic Umgebung auf PowerPC an, nicht auf das Interface Service USB zuzugreifen.

 

Der Ordner „Runtime Revolution"

Dieser Ordner enthält das External "SUSBrevolution.bundle". Damit die Revolution-Programmierung das External benutzen kann, muss der Pfad des Externals im Stack-Inspector gesetzt werden. Danach den Stack sichern, Revolution schließen und erneut öffnen. In dem Programmierbeispiel „Service USB Plus.rev" sind Beispiele für alle Ein- und Ausgabefunktionen und die Programmierung eines Schrittmotors. Eine Textdatei mit dem Namen „SERVICE USB Revolution Befehle" enthält sämtliche Revolution Befehlserweitungen in ihrer Anwendungssyntax. Die Befehle können mit Kopieren und Einsetzen schnell in eigenen Programmierungen verwendet werden. Die jeweils aktuellste Version von Revolution gibt es bei Runtime Revolution unter http://www.runrev.com.

 

Der Ordner „Fischertechnik"

Für die Modellbaukästen Industry Robots, Pneumatic Robots, Computing Starter Pack und den Cornelsen Experimenta Baukasten ist jeweils ein Beispielprojekt vorhanden, das die Quelltexte für RealBasic enthält. Die damit fertig erzeugten Programme sind im Ordner „Testprogramme" abgelegt, und ein Quicktime Film mit den einzelnen Modellen in Funktion befindet sich im Ordner „Screenshots und Filme".
Insbesondere folgende Modelle der Baukästen werden unterstützt:

Industry Robots II
Schweißroboter einachsig, Schweißroboter zweiachsig, 3-Achs Roboter

Industry Robots
Schwenkroboter, Schweißroboter, Säulenroboter, Knickarmroboter

Pneumatic Robots
Pneumatische Tür, Sortieranlage, Greifer, Bearbeitungszentrum

Bionic Robots
4 laufende Roboter, mit 6 und 4 Beinen

Baukasten Computing Starter
Motorsteuerung, Händetrockner, Ampel, Schiebetür, Temperaturregelung, Stanzmaschine, Parkhausschranke, Schweißroboter

Cornelsen Experimenta
Tasterleiste, Verkehrsampel, Motorwinde, Schildkröte, Materialaufzug, Werkzeugmaschine, Gebläse, Waschmaschine, Sortieranlage, Automatische Tür, Computerauge, Roboterarm, Lagersteuerung, Antennenrotor, Teach in Roboter

Trainingsroboter
• Zum Ansteuern des älteren fischertechnik®-Modells „Trainingsroboter" ist diese Programmierung vorhanden.

 

Der Ordner „RealBasic"

Hier enthalten ist ein Testprogramm für das reine Interface Service USB. Sämtliche Ein- Ausgabefunktionen und ein kleines Oszillographenprogramm zum Auftragen von Spannungsänderungen über die Zeit sind implementiert. Eine Textdatei mit dem Namen „Befehle RealBasic-ServiceUSB" enthält sämtliche RealBasic Befehlserweitungen in ihrer Anwendungssyntax. Die Befehle können mit Kopieren und Einsetzen schnell in eigenen Programmierungen verwendet werden.

Für eigene RealBasic Programmierungen müssen Sie entsprechend der RealBasic Anleitung die Datei „SERVICE USB Plugin X" in den Plugin Ordner von RealBasic kopieren.
Die jeweils aktuellste Version finden Sie beim Deutschen Vertrieb von RealBasic unter http://www.application-systems.de.

 

Der Ordner „4th Dimension"

Hier enthalten ist das Plugin und ein Testprogramm für den Betrieb von Service USB unter der Datenbankentwicklungsumgebung 4th Dimension. Sämtliche Ein- Ausgabefunktionen sind implementiert. Das beiliegende Beispiel ermöglicht insbesondere eine Langzeitmessung der Messwerte. Unterstützt werden die 4D-Versionen 6.8, 2003 2004, V11 und V13.

Die jeweils aktuellste Version von 4th Dimension gibt es beim Deutschen Vertrieb von 4D unter http://www.de.4d.com.

 

Der Ordner „Director"

Hier enthalten ist das Xtra und ein Testprogramm für den Betrieb von Service USB unter der Multimedia-Entwicklungsumgebung Adobe Director. Sämtliche Ein- Ausgabefunktionen sind implementiert.

Die jeweils aktuellste Version von Director gibt es bei Adobe unter http://www.adobe.com/de/products/director.

 

Der Ordner „AppleScript"

Die Datei „Service USB alle Befehle" enthält eine Liste sämtlicher Befehle in ihrer korrekten Schreibweise. Für die ersten Versuche reicht es, einzelne Zeilen wieder einzukommentieren (die -- Zeichen am Zeilenanfang entfernen) und dann den Befehl auszuführen.

Wenn nur ein Service USB angeschlossen ist, finden Sie zwei kurze Beispielprogramme zur Werteausgabe und Werteeingabe in dem Ordner „Beispiele Apple Script einfach".
In dem Ordner „Beispiele Apple Script mehrfach" befinden sich zwei Beispiele für den Umgang mit mehreren angeschlossenen Service USB. Das Script „Anzahl herausfinden" nennt die Anzahl und die DeviceID sämtlicher angeschlossener Service USB und dient als Beispiel für das automatische Herausfinden. Das Script „Device ID" fragt in einem Dialog den Benutzer nach der DeviceID und zeigt dann die Eingangswerte der Service USB mit dieser DeviceID an. Wird eine ungültige DeviceID angegeben, so lauten die zurückgelesenen Werte 0. Um das Beispiel einfach zu halten, wurden derartige Fehlbedienungen nicht gesondert abgefangen. Das Programm „Notification Sample" dient als Beispiel für den register SERVICE device notification - Befehl. Es wartet auf eine logische 1 an Eingangsbit 1 und spielt dann einen System-Warnton ab.

 

Der Ordner „Filemaker"

Der Ordner „FileMaker" enthält Beispiele für File Maker Pro 7-10, welche auf AppleScript aufbauen. „Service USB Filemaker einfach" enthält einfache Beispiele für den Betrieb eines Service USB. „Service USB Filemaker mehrfach" enthält komplexere Beispiele, die für den Betrieb mehrerer gleichzeitig angeschlossener Service USB gedacht sind.

Die jeweils aktuellste Version von Filemaker gibt es bei http://www.filemaker.de

 

Der Ordner „Ragtime"

Der Ordner „RagTime" enthält Beispiele für Ragtime 5.6 bis 6.5, welche auf AppleScript aufbauen. „SERVICE USB Ragtime einfach" enthält einfache Beispiele für den Betrieb eines Service USB. „SERVICE USB Ragtime mehrfach" enthält komplexere Beispiele, die für den Betrieb mehrerer gleichzeitig angeschlossener Service USB gedacht sind.

Die jeweils aktuellste Version von Ragtime finden Sie bei http://www.ragtime.de

 

Der Ordner „Xcode"

Dieser Ordner enthält verschiedene Beispiele in Xcode, die, bis auf AppleScript Studio, das Framework benutzen. Unabhängig von den Beispielen ist es möglich, eine eigene Programmierung mit dem Framework zu erweitern. Dies wurde bisher getestet mit:
• Carbon Application
• Cocoa Application
• C++ Tool
• Standard Tool

Nach dem Anlegen eines neuen Projekts muss das Framework im Xcode mit dem Menübefehl „Add Frameworks..." übernommen werden. Das Framework befindet sich im Pfad
/Library/Frameworks/Service USB Driver.framework

Anschließend muß das Headerfile „ServiceUSBToolbox.h" mit dem Menübefehl „Add Files..." in das Projekt integriert werden. Das Headerfile befindet sich im Pfad
/Library/Frameworks/Service USB Driver.framework/Headers/ServiceUSBToolbox.h

Nachdem die Programmierung mit #include "ServiceUSBToolbox.h" versehen wurde, stehen sämtliche Befehle zur Verfügung.
AppleScriptStudio greift auf das AppleScript OSAX zurück. Daher ist es hierbei nicht notwendig, das Framework zu integrieren.

 

Der Ordner „UNIX"

Dieser Ordner enthält ein Command Line Tool im Quelltext sowie die kompilierte Version in dem Unterordner /build. Im Terminal kann das Tool mit ./SERVICE_USB_TOOL gestartet werden. Innerhalb dieses Tools kann mit "help" die Befehlssyntax angezeigt werden. Das Tool kann Befehle ebenfalls direkt aus der Kommandozeile erhalten. Beispiel:
./SERVICE_USB_TOOL -c set_output -v 85

 

Der Ordner „RS232 Terminal"

Dieser Ordner enthält ein kleines Cocoa-Beispielprogramm mit dem Namen "SUSBTerminal".

Software

Das Terminalprogramm zum Testen der RS232 Schnittstelle

Mit diesem Programm können Zeichen über die RS232 Schnittstelle gesendet und empfangen werden. Im oberen Teil des Fensters werden die gesendeten Bytes in grün und die empfangenen Bytes in gelb dargestellt. Jedes Zeichen wird mit seinem Hexadezimalwert und, sofern im sichtbaren ASCII-Bereich, auch als Zeichen dargestellt. Das Programm verfügt über drei Bereiche zur Zeicheneingabe über die Tastatur: Das große Fenster im oberen Teil und die beiden einzelnen Zeilen im unteren Teil. Nach einem Klick in den oberen Teil wird jeder Tastendruck direkt über die RS232 ausgegeben. Sollen Werte ausgegeben werden, die nicht über die Tastatur erreichbar sind, so können diese nach Umschalten in den HEX-Mode eingegeben werden. Als Beispiel soll der Buchstabe A ausgegeben werden. Während im ASCII-Mode einfach ein A auf der Tastatur getippt wird, erreicht man das gleiche Zeichen im HEX-Mode durch Eingabe von 41. In die beiden Zeilen unterhalb können kurze Zeichenfolgen eingegeben wer-den, die dann auf Knopfdruck gesendet werden. Je nach Modus wer-den diese als HEX- oder ASCII-Daten interpretiert. Dieses Programm soll bei den ersten Gehversuchen mit einem seriellen Gerät helfen. Wenn das Programm sehr zäh arbeitet, also nach jedem Tastendruck eine Pause von ca. 1 Sekunde einlegt, dann ist die Handshakeleitung nicht frei. Verbinden Sie in diesem Fall die Signale HSKi und HSKo des seriellen Steckers oder prüfen Sie die Funktion ihres seriellen Gerätes.

 

Der Ordner „AppleScriptStudio_Cocoa"

Dieser Ordner enthält eine gemischte AppleScript/Cocoa Application mit grafischer Oberfläche. Dieses Programm entspricht dem in RealBasic programmierten TestRB und dient der Ansteuerung sämtlicher Ein- und Ausgänge. In dem Programmteil „Oskar" können die Analog- und Digitaleingänge wie auf einem Oszillographen sichtbar gemacht werden.

 

Der Ordner „Pulsbreite"

Ein Testprogramm zum Ansteuern der Ausgänge mit Pulsbreitenmodulation. Es werden beide Modi unterstützt. Sowohl gleiche Pulsbreite für alle Ausgänge, als auch verschiedene Pulsbreite für alle Ausgänge sowie möglichen Kombinationen von Frequenzen und Pulsbreiten.

 

Der Ordner „Java"

In dem Ordner „SERVICE USB Java" befinden sich Beispiele und Bibliotheken für Java. Diese nutzen den JNIWrapper, der das zu Grunde liegende Framework für Java zugänglich macht. Es sind Beispiele unter XCode und BlueJ enthalten.
BlueJ gibt es kostenlos bei http://www.bluej.org.

 

Der Ordner „Testprogramme"

Der Ordner „Testprogramme" enthält eigenständigen Programme für die ersten Versuche. Es handelt sich um eine Auswahl fertiger Programme aus den Beispielen von XCode und RealBasic. Sie erlauben die schnelle Ansteuerung und das Testen des Interfaces mit folgenden Möglichkeiten

 

 

Der Ordner „MaxMSP"

Für die grafische Programmierumgebung Max/MSP von Cycling '74 finden Sie hier das External und die Beispielprogrammierung. Diese umfasst neben sämtlichen Befehlen die Ansteuerung von Schrittmotoren, Pulsbreitenmodulation und Abfrage der Analog- und Digitaleingänge. Die neueste Version von Max oder eine Demoversion gibt es hier: http://www.cycling74.com/products/max5

 

Der Ordner „teach robot"

In dem Ordner „teach robot" befinden sich die Beispielprogramme für den Teach-Robot von microelectronic Kalms. Der teach robot ist ein fünfachsiger, in einzelnen Funktionen variierbarer, unverkleideter Roboter, bei dem alle Antriebselemente, Körperteile und Weggeber frei zugänglich sind. Der Roboter von microelectronic Kalms benötigt 2 Service USB für den Betrieb.

 

Der Ordner „Schrittmotor"

Dieser Ordner enthält je eine RealBasic- Cocoa-, Adobe Director und MaxMSP Programmierung zum Ansteuern von Schrittmotoren.

 

Der Ordner „Numbers"

Dieser Ordner enthält ein AppleScript und ein Numbers Dokument, um Werte der Analogeingänge in Numbers einzulesen und diese grafisch aufzutragen.

 

Der Ordner „TCP/IP"

Enthält Programme, um die Befehle von Service USB über TCP-IP verfügbar zu machen.

Beim Starten von „SUSBServer" kann ein Port angegeben werden. Ohne Portangabe sucht sich das Programm selbst einen freien Port und wird dann über den Bonjour-Dienstnamen _ServiceUSB._tcp gefunden. Das Programm „SUSBClient" findet den Dienst sowohl über Bonjour als auch wahlweise mit fester IP und Portnummer.

Für die Verwendung von Telnet empfiehlt sich die Angabe eines Ports beim Starten des Servers. In diesem Beispiel Port 4711
./SUSBServer 4711

Danach ist der Server über Telnet erreichbar.
telnet 192.168.1.4 4711

Die Eingabe von help zeigt alle Befehle in ihrer korrekten Schreibweise an. Das Setzen des Digitalausgangs 7 geschieht z.B. mit
set_output_bit 1 7

Jeder Befehl liefert einen Wert zurück. Befehle zur Ausgabe geben eine 0 zurück, nachdem sie am Interface ausgeführt wurden, eine Fehlernummer im 13000er Bereich oder einen Syntax Error. Befehle zur Eingabe liefern den entsprechenden Eingabewert zurück.
Mit <Return> wird der letzte Befehl wiederholt.

 

Der Ordner „Kasse"

Hier befinden Beispiele für FileMaker und 4th Dimension zum Betrieb von Kassenschublade, Bondrucker und Kundenanzeige aus der Service USB Serie, sowie eine Demo-Version von directKASSE, dem Kassenprogramm mit Warenwirtschaftssystem für den Einzelhandel.

 

Der Ordner „Scratch"

Enthält ein Programm und ein Scratch Beispiel, um ServiceUSB über die „Remote Sensor Connection" von Scratch zu benutzen.
Scratch gibt es kostenlos bei http://scratch.mit.edu/

Abhilfe bei Fehlfunktionen

In diesem Kapitel wird auf die Kommunikation zwischen dem Interface und der Mac-Software eingegangen. Das Verständnis hierfür erleichtert die Suche bei Fehlfunktionen.

Der Treiber besteht im großen und ganzen aus zwei Teilen. Einem Programm zum Laden der Firmware in das Interface und einem FrameWork (Programmierschnittstelle) zum eigentlichen Betrieb des Interface.

 

Der Bootprozess, laden der Firmware

Beim Verbinden des Interface mit dem Mac ist zunächst die ab Werk eingebaute, rudimentäre Firmware tätig. Diese ist nur in der Lage, sich als USB-Gerät zu melden. Die Funktionen für die Ein- und Ausgabe sind in einer umfangreicheren Firmware enthalten, die automatisch in das Interface geladen wird.

Ohne installierten Treiber, bzw. ohne die nachgeladene Umfangreiche Firmware meldet sich das Interface am USB als herstellerspezifisch von „BBnig und Kallenbach oHG".

Sobald sich das Interface beim Betriebssystem meldet, wird ein Programm im Hintergrund (Daemon) aktiv, lädt die neue Firmware in das Interface und schaltet die vorherige Firmware ab. Ist das Interface für kurze Zeit ohne Strom, verliert es die neue Firmware, schaltet wieder auf die eingebaute Firmware zurück und der Ladeprozess kann von neuem Beginnen.

Eine grüne Leuchtdiode zeigt an, dass die Firmware erfolgreich geladen ist. Den Ladevorgang kann man sehr schön beobachten. Zwischen dem Anschließen des Interface und dem aufleuchten der grünen LED vergeht eine Sekunde. In dieser Zeit lädt die neue Firmware.

 

Die grüne LED leuchtet nicht

Das kann verschiedene Gründe haben. Zunächst muss das Interface komplett stromlos geschaltet werden. Also vom USB trennen, sämtliche Verbindungsleitungen entfernen, Netzkabel entfernen. Es ist extrem wichtig, das Interface ausnahmslos von sämtlichen Verbindungen zu trennen, weil nur so gewährleistet ist, daß das Interface stromlos ist. Auch über die serielle Schnittstelle kann ein kleiner Strom in das Interface fließen und somit die nachfolgenden Tests verfälschen.

Nachdem das Interface für 1-2 Sekunden ohne Strom verbracht hat, wird es jetzt nur an den USB angeschlossen.

Danach den System-Profiler aufrufen. Dies geschieht über das Apfel-Menü->Über diesen Mac->Weitere Informationen.

Software

Das Interface sollte sich nun am Betriebssystem mit Hersteller-ID 0x0743 und je nach Modell mit einer der folgenden Product-IDs melden.
0x0004,0x0006 0x000A, 0x000B

Ist dies nicht der Fall, ist entweder das Interface, der USB oder das Kabel defekt. Es kommt ausgesprochen selten vor, daß sich das Interface hier nicht meldet. Sie sollten daher die Verbindung zum Mac nochmal überprüfen und auch im System-Profiler die Darstellung aktualisieren (Apfel-R).

Wenn sich das Gerät mit Hersteller-ID 0x0547 oder 0x04B4 meldet ist die ab Werk eingebaute Firmware beschädigt und das Gerät muß an Bönig und Kallenbach oHG zur Reparatur eingeschickt werden.

Meldet sich das Gerät gar nicht, ist entweder das Interface, das USB-Kabel oder die USB-Schnittstelle defekt.

Wenn sich das Interface hier gemeldet hat, wird die Firmware nicht geladen. Dies ist meistens der Fall, wenn der Hintergrund-Prozess (FirmwareLoaderDaemon) nicht läuft. Die einfachste Art ist, das Installationsprogramm noch einmal laufen zu lassen. Sie können aber auch von Hand nachsehen, ob der Prozess geladen ist.

Tippen Sie im Terminal:
ps -axwww | grep Daemon

Der Daemon ist geladen, wenn die Antwort ungefähr so aussieht:
100 ?? 0:00.01 /Library/Frameworks/Service USB Driver.framework/Versions/A/Support/Firmware Loader Daemon

An Stelle des Terminals kann auch die Aktivitätsanzeige aus dem Dienstprogramme-Ordner verwendet werden:

Software

Der Prozess „Firmware Loader" muss aktiv sein

Achten Sie darauf, alle Prozesse anzeigen zu lassen. Mit einer Sortierung nach Namen ist der „Firmware Loader" schnell gefunden. Wenn der Firmware Loader läuft und das Interface sich am USB mit Product-ID 0x0004, 0x0006, 0x00A, 0x000B und Hersteller-ID 0x0743 gemeldet hat, wird auch die Firmware geladen. Das vollständig funktionstüchtige Interface mit leuchtender LED meldet sich immer mit Product-ID 0x0005.

 

Software

Bei Product-ID 0x0005 ist die Firmware geladen

 

Die grüne LED leuchtet

In diesem Fall ist eine Ansteuerung über das zu Grunde liegende Framework möglich. Auf dieses Framework bauen die verschiedenen Plug-Ins, Xtras, OSAX u.s.w. auf. Zunächst sollte das Programm „SERVICE Test RB X" aus dem Ordner Testprogramme gestartet werden. Dieses Programm funktioniert immer, sofern die Basis in Ordnung ist. Es zeigt die Device ID in einem extra Fenster, das so oder so ähnlich aussehen sollte:

Software

Das Interface meldet sich korrekt im „ SERVICE Test RB X"

 

Software

Falsche Treiber Version

 

LWenn die Seriennummer, bzw. die Device ID falsch angezeigt wird, so stimmen die Versionen von Firmware und Treiber nicht überein. Dieses Problem kann aber nur bei vor dem 1.9.2003 erworbenen Service USB auftreten.

Lässt sich das Interface mit „SERVICE Test RB X" ansteuern, so liegen Fehlfunktionen i.d.R an der Programmierumgebung oder an der Programmierung. Es sollte daher geprüft werden, ob das mitgelieferte Plug-In, Xtra, OSAX oder Framework korrekt eingebunden ist.

 

Fehlernummern und ihre Bedeutung

Fehlernummern, die von den Service USB stammen liegen im Bereich 13000 bis 13009. Andere Fehlernummern stammen nicht aus den Service USB Treibern.

13000 errServiceUSB_OutOfParamBlocks
No USB control blocks available. There are too many request executing.

13001 errServiceUSB_Timeout
A call did not finish for some reasons: Timeout was reached.

13002 errServiceUSB_BadSync
A call was issued from the wrong interrupt level.

13003 errServiceUSB_USBDriverNotFound
Couldn't find the USB SERVICE driver. Probably it is not loaded.

13004 errServiceUSB_WrongPipeIndex
A wrong index for the read/write pipe was specified (valid values are 0, 1 and 2 )

13005 errServiceUSB_MaxDevicesReached
The maximum of USB SERVICE devices that can be connected has been reached.

13006 errServiceUSB_DeviceNotFound
The device couldnot be found in the device table

13007 errServiceUSB_CFNil
A call to CoreFoundation returned nil

13008 errServiceUSB_NoConfigurationsError
No configuration where found

13009 errServiceUSB_API_NotSupported
The API call is not supported

In der Praxis treten eigentlich nur die Fehler 13001 und 13003 auf. 13001 meistens in Verbindung mit der RS232 Schnittstelle, wenn die Gegenstelle keine Zeichen mehr annimmt. 13003 Kommt immer dann vor, wenn der Treiber noch nicht installiert ist. Sie sollten das Installationsprogramm SERVICE USB.pkg ausführen.

 

Service USB liefert immer 88 zurück

In diesem Fall ist der Treiber nicht installiert. Die meisten Xtras, Externals und Plugins schalten in den Demo Mode, wenn der zu Grunde liegende Treiber fehlt. In diesem Fall liefert das Interface je nach Befehl 0 oder 88 zurück, weil Egal ist 88.
Dieser Demo Mode dient dazu, eine Programmierumgebung zu testen ohne im Besitz des Interfaces zu sein und ohne das Installer Package, welches das Admin-Passwort benötigt, ausgeführt zu haben.

Sobald der das Installer Package ausgeführt wurde, verhalten sich die Plugins normal und liefern bei nicht angeschlossenem Interface entsprechende Fehlernummern zurück.

 

Herstellerkonformitätserklärung

Für den Koppelbaustein Service USB classic erklärt als Hersteller in alleiniger Verantwortung die Bönig und Kallenbach oHG, Lindemannstraße 25, 44137 Dortmund, dass dieser Baustein mit den Anforderungen 2004/ 108/EG übereinstimmt, sofern der Baustein ohne externes Netzteil oder mit dem von uns gelieferten Netztteil Service USB Power (9V= /12W) betrieben wird.

Für die Geräte Service USB plus, Service USB RS232, Service USB drawer, Service USB opener und Service USB core erklärt als Hersteller in alleiniger Verantwortung die Bönig und Kallenbach oHG, Lindemannstraße 25, 44137 Dortmund, dass diese Geräte mit den Anforderungen 2004/108/EG übereinstimmen.

Dortmund, den 28. Februar 2009