Inhaltsverzeichnis Einleitung ....................ix I. AnaGate API ..................1 1. Die Programmierschnittstelle der AnaGate-Serie ........4 2. Anmerkungen zum Kommunikationsprotokoll TCP ........ 7 2.1. Besondere Protokolleigenschaften ..........7 3. Allgemeine Funktionen ..............9 DLLInfo ..................10 4. CAN API Funktionen ..............11 CANOpenDevice, CANOpenDeviceEx ..........
Seite 4
AnaGate API 2 7.1. Programmiersprache C/C++ ..........80 7.2. Programmiersprache Visual Basic 6 ........81 7.3. Programmiersprache VB.NET ..........85 II. SocketCAN-Schnittstelle ............... 89 8. Die SocketCAN-Schnittstelle der AnaGate-Serie ......... 91 9. Beschreibung des SocketCAN-Gateway ..........92 10. Verwendung des SocketCAN-Gateway ..........93 10.1.
Seite 5
AnaGate API 2 LS_I2CWriteDigital ..............160 LS_I2CErrorMessage ..............161 LS_I2CReadEEProm ..............162 LS_I2CWriteEEProm ..............164 16. Lua-Programmier-Beispiele ............167 16.1. Beispiele für Geräte mit CAN-Schnittstelle ......167 16.2. Beispiele für Geräte mit SPI-Schnittstelle ......168 16.3. Beispiele für Geräte mit I2C-Schnittstelle ......169 A.
Seite 7
Tabellenverzeichnis 1.1. Programm-Bibliotheken der API unter Windows ........4 1.2. Programm-Bibliotheken der API unter 32-Bit-Linux ........4 1.3. Programm-Bibliotheken der API unter 64-Bit-Linux ........5 2.1. AnaGate-Modelle und Ihre Portnummern ..........7 3.1. Datentypen mit festen Größen ............. 9 4.1. Beispielkonfiguration CAN-Baudrate ............. 16 4.2.
Kapitel 1. Die Programmierschnittstelle der AnaGate-Serie Die AnaGate-Serie besteht aus verschiedenen Hardware-Modellen, die über ein herkömmmliches Netzwerkprotokoll Zugriff auf unterschiedliche Bussysteme (I2C, SPI, CAN) bzw. Prozessoren (Renesas) bieten. Die Kommunikation zu den einzelnen Geräten erfolgt prinzipiell über ein proprietäres offengelegtes Netzwerkprotokoll. Somit können alle Steuergeräte, die ein sog. Socket-Interface besitzen (wie z.B.
Die Programmierschnittstelle der AnaGate-Serie Gerät Linux-Bibliothek (X86) ARM9 AnaGate CAN uno / libCANDLLStaticRelease.a, verfügbar duo / quattro libAnaGateExtStaticRelease.a, libAnaGateStaticRelease.a AnaGate CAN USB libCANDLLStaticRelease.a, verfügbar libAnaGateExtStaticRelease.a, libAnaGateStaticRelease.a AnaGate SPI libSPIDLLStaticRelease.a, libAnaGateExtStaticRelease.a, libAnaGateStaticRelease.a AnaGate I2C / I2C libI2CDLLStaticRelease.a, libAnaGateExtStaticRelease.a, libAnaGateStaticRelease.a AnaGate Universal libSPIDLLStaticRelease.a, verfügbar Programmer...
Seite 15
Die Programmierschnittstelle der AnaGate-Serie Tipp Für die neueren Gerätemodelle mit embedded Linux (Kernel 2.6) und ARM9-Prozessor können auch individuelle Erweiterungen für das Gerät selbst erstellt werden. Die vollständige Software-API in einer cross- kompilierten Version vereinfacht die Erstellung der Geräte-Erweiterung, da damit die identische Schnittstelle sowohl auf dem PC als auch auf dem Gerät selbst genutzt werden kann.
Kapitel 2. Anmerkungen zum Kommunikationsprotokoll TCP Der Zugriff von einem PC auf die unterschiedlichen Modelle der AnaGate-Serie erfolgt über das sehr verbreitete Netzwerkprotokoll TCP (Transmission Control Protocol). TCP ist ein verbindungsorientiertes, paketvermittelndes Transportprotokoll, das in Schicht 4 des OSI-Referenzmodells angesiedelt ist. Dabei ist TCP im Prinzip eine Ende-zu-Ende-Verbindung, welche die Übertragung der Informationen in beide Richtungen zur selben Zeit zulässt.
Seite 17
Anmerkungen zum Kommunikationsprotokoll TCP nicht innerhalb einer Timeout-Zeit quittiert, wird das Datenpaket erneut gesendet. Doppelte Pakete werden beim Empfänger erkannt und verworfen. Der Datentransfer an sich kann aber jederzeit nach dem Verbindungsaufbau gestört, verzögert oder ganz unterbrochen werden. Ein erfolgreicher Verbindungsaufbau stellt also keinerlei Gewähr für eine nachfolgende, dauerhaft gesicherte Übertragung dar.
Kapitel 3. Allgemeine Funktionen Bibliotheks-Schnittstelle AnaGate Programmiersprache implementiert. Die Standard-Datentypen dieser Sprache sind nicht plattformübergreifend auf feste Wertebereiche festgelegt, was den Zugriff auf C-Funktionen aus anderen Programmiersprachen heraus erschweren kann. Datentypen fest definierten Wertebereichen wurden erst in neueren C-Versionen ab C99 plattformübergreifend zur Verfügung gestellt, welche jedoch nicht von allen, vor allem älteren Compilerversionen unterstützt werden.
Allgemeine Funktionen DLLInfo DLLInfo — Ermittelt die aktuelle Version der AnaGate DLL. Syntax #include <AnaGateDLL.h> AnaInt32 DLLVersion(char * pcMessage, AnaInt32 nMessageLen); Parameter pcMessage Datenpuffer, der die Versionskennung der AnaGate DLL aufnehmen soll. nMessageLen Größe des übergebenen Datenpuffers in Byte. Rückgabewert Tatsächliche Größe der zurückgegebenen Versionskennung.
Kapitel 4. CAN API Funktionen Mit den Funktionen der CAN API können alle CAN-Gateways der AnaGate-Serie angesprochen werden. Die Programmierschnittstelle ist für alle Geräte identisch und erfolgt generell über das Netzwerk-Protokoll TCP bzw. UDP. Aktuell können folgende Geräte über die CAN API genutzt werden: •...
CAN API Funktionen CANOpenDevice, CANOpenDeviceEx CANOpenDevice, CANOpenDeviceEx — Baut eine Netzwerkverbindung (TCP bzw. UDP) zu einem AnaGate CAN auf. Syntax #include <AnaGateDllCan.h> AnaInt32 CANOpenDevice(AnaInt32 *pHandle, AnaInt32 bSendDataConfirm, AnaInt32 bSendDataInd, AnaInt32 nCANPort, const char * pcIPAddress, AnaInt32 nTimeout); AnaInt32 CANOpenDeviceEx(AnaInt32 *pHandle, AnaInt32 bSendDataConfirm, AnaInt32 bSendDataInd, AnaInt32 nCANPort, const char * pcIPAddress, AnaInt32 nTimeout, AnaInt32 nSocketType);...
Seite 22
CAN API Funktionen Ein Timeout wird festgestellt, wenn die AnaGate-Hardware nicht innerhalb der vereinbarten Timeout-Zeit antwortet. Diese Timeout-Zeit gilt auf der aktiven Netzwerkverbindung für alle Kommandos bzw. Funktionen, für die kein spezifischer Timeout-Wert definiert werden kann. nSocketType Gibt Sockettyp (Ethernet-Layer für die Verbindung verwendet werden soll.
CAN API Funktionen Bemerkung Die Funktion CANOpenDeviceEx ist erst ab Version 1.5-1.10 der Laufzeitbibliothek vorhanden und wird erst ab der Geräte-Firmwareversion 1.3.7 unterstützt. Die Gerätemodelle vom Typ AnaGate CAN (Hardware-Version 1.1.A) können keine Netzwerkverbindungen über UDP annehmen. Beim Versuch, ein solches Gerät über UDP anzusprechen, wird die Funktion CANOpenDeviceEx fehlerhaft beendet (Timeout).
CAN API Funktionen CANCloseDevice CANCloseDevice — Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate CAN Device. Syntax #include <AnaGateDllCan.h> AnaInt32 CANCloseDevice(AnaInt32 hHandle); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN API Funktionen CANSetGlobals CANSetGlobals — Setzt die globalen Einstellungen, mit denen auf dem CAN-Bus gearbeitet werden soll. Syntax #include <AnaGateDllCan.h> AnaInt32 CANSetGlobals(AnaInt32 hHandle, AnaUInt32 nBaudrate, AnaUInt8 nOperatingMode, AnaInt32 bTermination, AnaInt32 bHighSpeedMode, AnaInt32 bTimeStampOn); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. nBaudrate Baudrate, mit der gearbeitet werden soll.
Seite 26
CAN API Funktionen MCP2515 MCP2515 MCP2515 Baudrate CNF1 CNF2 CNF3 Parameter Zum Bsp: 250KHz 0x43 0xA1 0x03 0x0143A103 Tabelle 4.1. Beispielkonfiguration CAN-Baudrate Anmerkung Bitte beachten Beschreibung MCP2515 hinsichtlich der Kontrollregister CNF1, CNF2 und CNF3. Die Ozillator-Frequenz des AnaGate CAN beträgt FOSC=20MHz, alle anderen CAN-Modelle verwenden die Frequenz FOSC= 24MHz.
CAN API Funktionen Zeitstempel-Modus wird CAN-Telegramm Zeitstempel übertragen. Beim Senden gibt der Zeitstempel den Zeitpunkt an, zu dem die Nachricht vom CAN-Controller versendet wurde. Analog ist bei empfangenen Nachrichten der Zeitstempel der Zeitpunkt, zu dem die Nachricht vom CAN-Controller empfangen wurde.
CAN API Funktionen CANGetGlobals CANGetGlobals — Ermittelt die globalen Einstellungen, mit denen auf dem CAN Bus gearbeitet wird. Syntax #include <AnaGateDllCan.h> AnaInt32 CANGetGlobals(AnaInt32 hHandle, AnaUInt32 pnBaudrate, AnaUInt8 pnOperatingMode, AnaInt32 pbTermination, AnaInt32 pbHighSpeedMode, AnaInt32 * pbTimeStampOn); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. pnBaudrate Aktuell eingestellte Baudrate.
Seite 29
CAN API Funktionen bestätigt und die via CANSetFilter definierten Filter werden ignoriert. pbTimeStampOn Aktuelle Einstellung, ob der Zeitstempel-Modus aktiviert ist. Diese Einstellung wird nicht bei allen AnaGate CAN Modellvarianten unterstützt. Zeitstempel-Modus wird CAN-Telegramm Zeitstempel übertragen. Beim Senden gibt der Zeitstempel den Zeitpunkt an, zu dem die Nachricht vom CAN-Controller versendet wurde.
CAN API Funktionen CANSetFilter CANSetFilter — Setzt die Software-Filter für die aktuelle Verbindung. Syntax #include <AnaGateDllCan.h> AnaInt32 CANSetFilter(AnaInt32 hHandle, const AnaUInt32 * pnFilter); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. pnFilter Zeiger auf ein Feld mit 8 Fitereinträgen (jeweils 4 Maskenfilter und 4 Bereichsfilter).
Seite 31
CAN API Funktionen Im folgenden ein Programmier-Beispiel für das Festlegen von Software-Filtern. #include <AnaGateDllCan.h> int main() AnaUInt32 anFilter[16] = { 0xFF, 0x0F, // mask filter 1: mask = 0xFF, value = 0x0F: route only 0x*0F values 0, 0, // mask filter 2: unused 0, 0, // mask...
CAN API Funktionen CANGetFilter CANGetFilter — Liefert die Filtereinstellungen für die aktuelle Verbindung zurück. Syntax #include <AnaGateDllCan.h> AnaInt32 CANGetFilter(AnaInt32 hHandle, AnaUInt32 * pnFilter); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. pnFilter Zeiger auf ein Feld mit 8 Filtereinträgen (jeweils 4 Maskenfilter und 4 Bereichsfilter).
CAN API Funktionen CANSetTime CANSetTime — Setzt die System-Uhrzeit auf dem AnaGate CAN Gerät für den Zeitstempel-Modus. Syntax #include <AnaGateDllCan.h> AnaInt32 CANSetTime(AnaInt32 hHandle, AnaUInt32 nSeconds, AnaUInt32 nMicroseconds); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. nSeconds Aktuelle Uhrzeit in Sekunden seit dem 01.01.1970. nMicroseconds Zusätzlicher Anteil der Mikrosekunden für die aktuelle Uhrzeit.
CAN API Funktionen CANGetTime CANGetTime — Liest die System-Uhrzeit des AnaGate CAN Geräts für den Zeitstempel-Modus. Syntax #include <AnaGateDllCan.h> AnaInt32 CANGetTime(AnaInt32 hHandle, AnaInt32 * pbTimeWasSet, AnaUInt32 * pnSeconds, AnaUInt32 * pnMicroseconds); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. pbTimeWasSet Wahr, wenn die Systemzeit zuvor über CANSetTime gesetzt wurde.
CAN API Funktionen CANWrite, CANWriteEx CANWrite, CANWriteEx — Sendet ein Datentelegramm über die AnaGate-Hardware auf den CAN-Bus. Syntax #include <AnaGateDllCan.h> AnaInt32 CANWrite(AnaInt32 hHandle, AnaInt32 nIdentifier, const char * pcBuffer, AnaInt32 nBufferLen, AnaInt32 nFlags); AnaInt32 CANWriteEx(AnaInt32 hHandle, AnaInt32 nIdentifier, const char * pcBuffer, AnaInt32 nBufferLen, AnaInt32 nFlags, AnaInt32 * pnSeconds, AnaInt32 * pnMicroSeconds);...
Seite 36
CAN API Funktionen Beschreibung Beide Funktionen senden ein Datentelegramm auf den CAN-Bus. Mit CANWriteEx kann zusätzlich der Zeitpunkt auf dem Gerät ermittelt werden, zu dem das Telegramm tatsächlich versendet wurde. Anmerkung Mit Hilfe eines Remoteframes kann ein Teilnehmer einen anderen auffordern, seine Daten zu senden.
CAN API Funktionen CANSetCallback, CANSetCallbackEx CANSetCallback, CANSetCallbackEx — Definiert eine asynchrone Callback-Funktion, die beim Empfang eines CAN-Telegramms aus der API aufgerufen werden soll. Syntax #include <AnaGateDllCan.h> typedef void (WINAPI * CAN_PF_CALLBACK)(AnaInt32 nIdentifier, const char * pcBuffer, AnaInt32 nBufferLen, AnaInt32 nFlags, AnaInt32 hHandle); AnaInt32 CANSetCallback(AnaInt32 hHandle,...
Seite 38
CAN API Funktionen Abarbeiten des Callback-Codes der Heap-Speicher der API-DLL und nicht der Heap-Speicher des Anwendungsprogrammes aktiv. Aufgrund dieser Arbeitsweise ist Programmcode innerhalb der Callback zu vermeiden, der Heap-Speicher freigibt oder anfordert (z.B. new, delete, malloc oder free). Im folgenden ein Programmier-Beispiel, das eine Empfangs-Callback verwendet. #include <AnaGateDllCan.h>...
CAN API Funktionen CANSetMaxSizePerQueue CANSetMaxSizePerQueue — Setzt die maximale Größe des Empfangspuffers, der empfangene CAN-Telegramme zwischenspeichert. Syntax #include <AnaGateDllCan.h> AnaInt32 CANSetMaxSizePerQueue(AnaInt32 hHandle, AnaUInt32 nMaxSize); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. nMaxSize Maximale Größe des Empfangspuffers. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
Seite 40
CAN API Funktionen Bemerkung Empfangene Telegramme werden nur gepuffert, wenn keine Callback-Funktion mittels CANSetCallback oder CANSetCallbackEx eingerichtet wurde. Sobald eine Callback-Funktion aktiviert ist, können zuvor gepufferte Telegramme weiterhin mit CANGetMessage ausgelesen werden. Danach eintreffende Telegramme werden jedoch nicht mehr gepuffert. Siehe auch CANSetCallback, CANSetCallbackEx CANGetMessage...
CAN API Funktionen CANGetMessage CANGetMessage — Liefert ein empfangenes CAN-Telegram aus dem Empfangspuffer. Syntax #include <AnaGateDllCan.h> AnaInt32 CANGetMessage(AnaInt32 hHandle, AnaUInt32 pnAvailMsgs, AnaInt32 * pnID, char * pcData, AnaUInt8 * pnDataLen, AnaInt32 * pnFlags, AnaInt32 * pnSeconds, AnaInt32 * pnMicroseconds); Parameter hHandle Gültiges Zugriffs-Handle...
Seite 42
CAN API Funktionen interessiert ist. Für Werte, an denen kein Interesse besteht, kann der jeweilige Parameter auf NULL zeigen. Über den Parameter pnAvailMsgs liefert die Funktion die Anzahl der nach dem Aufruf noch in der Queue verfügbaren Telegramme. Falls die Queue kein Telegramm enthält, das zurück geliefert werden könnte, wird dieser Wert auf -1 gesetzt.
CAN API Funktionen CANReadDigital CANReadDigital — Liest die aktuellen Werte der digitalen Ein-/Ausgabe-Register der AnaGate Hardware zurück. Syntax #include <AnaGateDllCan.h> AnaInt32 CANReadDigital(AnaInt32 hHandle, AnaUInt32 pnInputBits, AnaUInt32 * pnOutputBits); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs CANOpenDevice. pnInputBits Zeiger auf den aktuellen Inhalt des Registers mit den digitalen Eingängen.
CAN API Funktionen CANWriteDigital CANWriteDigital — Setzt das digitale Ausgabe-Register der AnaGate-Hardware auf einen neuen Wert. Syntax #include <AnaGateDllCan.h> AnaInt32 CANWriteDigital(AnaInt32 hHandle, AnaUInt32 nOutputBits); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs CANOpenDevice. nOutputBits Neuer Wert des Registers mit den digitalen Ausgängen. Dabei entsprechen Bit 0 bis Bit 3 den vier digitalen Ausgängen;...
CAN API Funktionen CANReadAnalog CANReadAnalog — Liest die aktuellen Werte der analogen Eingänge der AnaGate- Hardware zurück. Syntax #include <AnaGateDllCan.h> AnaInt32 CANReadAnalog(AnaInt32 hHandle, AnaUInt32 * pnPowerSupply, AnaUInt32 anAnalogInputs[], AnaUInt16 * pnInputCount); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs CANOpenDevice. pnPowerSupply Zeiger auf eine Variable, in der die aktuelle Versorgungsspannung in Millivolt gespeichert wird, es sei denn, der Zeiger ist NULL.
Seite 47
CAN API Funktionen AnaUInt32 nPowerSupply; AnaUInt32 anAnalogInputs[INPUT_SIZE]; AnaUInt16 nInputCount = INPUT_SIZE; nRC = CANReadAnalog(nHandle, &nPowerSupply, anAnalogInputs, &nInputCount); if ( nRC == 0 ) printf("Power supply: %d mV\n", nPowerSupply); for ( AnaUInt16 i = 0; i < std::min(INPUT_SIZE, nInputCount); ++i ) printf("Analog input %d: %d mV\n", i, anAnalogInputs[i]);...
CAN API Funktionen CANWriteAnalog CANWriteAnalog — Setzt die analogen Ausgänge der AnaGate-Hardware auf neue Werte. Syntax #include <AnaGateDllCan.h> AnaInt32 CANWriteAnalog(AnaInt32 hHandle, AnaUInt32 anAnalogOutputs[], AnaUInt16 nOutputCount); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs CANOpenDevice. anAnalogOutputs Array mit neuen Werten der analogen Ausgänge in Millivolt. nOutputCount Anzahl der Werte in anAnalogOutputs.
CAN API Funktionen CANRestart CANRestart — Führt einen Geräte-Restart der AnaGate CAN Hardware durch. Syntax #include <AnaGateDllCan.h> AnaInt32 CANRestart(const char * pcIPAddress, AnaInt32 nTimeout ); Parameter pcIPAddress Netzwerkadresse des AnaGate Partners. nTimeout Standard-Timeout für AnaGate-Zugriffe in Millisekunden. Ein Timeout wird festgestellt, wenn der AnaGate-Partner nicht innerhalb der vereinbarten Timeout-Zeit antwortet.
CAN API Funktionen CANDeviceConnectState CANDeviceConnectState — Ermittelt den Verbindungsstatus der aktuellen Netzwerk- Verbindung zur AnaGate-Hardware. Syntax #include <AnaGateDllCan.h> AnaInt32 CANDeviceConnectState(AnaInt32 hHandle); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. Rückgabewert Gibt den aktuellen Status der Netzwerkverbindung zurück. Folgende Werte sind möglich: •...
CAN API Funktionen CANStartAlive CANStartAlive — Startet den ALIVE Mechanismus, der periodisch den Status der aktiven Netzwerk-Verbindung zur AnaGate-Hardware überprüft. Syntax #include <AnaGateDllCan.h> AnaInt32 CANStartAlive(AnaInt32 hHandle, AnaUInt32 nAliveTime ); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs CANOpenDevice. nAliveTime Timeout-Intervall in Sekunden für den ALIVE-Mechanismus. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN API Funktionen CANErrorMessage CANErrorMessage — Gibt eine textuelle Beschreibung eines Rückgabewertes aus einer API-Funktion zurück. Syntax #include <AnaGateDllCan.h> AnaInt32 CANErrorMessage(AnaInt32 nRetCode, char * pcMessage, AnaInt32 nMessageLen); Parameter nRetCode Error-Code, dessen Fehlerbeschreibung ermittelt werden soll. pcMessage Datenpuffer, der die Fehlerbeschreibung aufnehmen soll. nMessageLen Größe des übergebenen Datenpuffers in Byte.
Kapitel 5. SPI API Funktionen Der Serial Peripheral Interface (kurz SPI) ist ein von Motorola entwickeltes Bus-System für einen synchronen seriellen Datenbus, mit dem digitale Schaltungen nach dem Master-Slave- Prinzip miteinander verbunden werden können. Die SPI-Gateways aus der AnaGate-Serie bieten einen Zugriff auf den SPI Bus über einen herkömmlichen Netzwerkanschluss. Mit den Funktionen der SPI API können diese SPI-Gateways und damit der SPI Bus auf einfache Art und Weise angesprochen werden.
SPI API Funktionen SPIOpenDevice SPIOpenDevice — Baut eine Netzwerkverbindung zu einem AnaGate SPI auf. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPIOpenDevice(AnaInt32 * pHandle, const char * pcIPAddress, AnaInt32 nTimeout); Parameter pHandle Zeiger auf eine Variable, in die das Zugriffs-Handle gespeichert wird, falls die Verbindung zum Gerät erfolgreich hergestellt wurde. pcIPAddress Netzwerkadresse des AnaGate Partners.
SPI API Funktionen SPICloseDevice SPICloseDevice — Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate SPI Device. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPICloseDevice(AnaInt32 hHandle); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von SPIOpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
SPI API Funktionen SPISetGlobals SPISetGlobals — Setzt die globalen Einstellungen, mit denen auf dem AnaGate SPI gearbeitet werden soll. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPISetGlobals(AnaInt32 hHandle, AnaInt32 nBaudrate, AnaUInt8 nSigLevel, AnaUInt8 nAuxVoltage, AnaUInt8 nClockMode); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von SPIOpenDevice. nBaudrate Baudrate, mit der gearbeitet werden soll.
Seite 59
SPI API Funktionen • 0 für CPHA=0 und CPOL=0. • 1 für CPHA=0 und CPOL=1. • 2 für CPHA=1 und CPOL=0. • 3 für CPHA=1 und CPOL=1. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
SPI API Funktionen SPIGetGlobals SPIGetGlobals — Ermittelt die globalen Einstellungen, mit denen auf dem AnaGate SPI gearbeitet wird. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPIGetGlobals(AnaInt32 hHandle, AnaInt32 * pnBaudrate, AnaUInt8 * pnSigLevel, AnaUInt8 * pnAuxVoltage, AnaUInt8 * pnClockMode); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von SPIOpenDevice. pnBaudrate Aktuell auf dem SPI-Bus eingestellte Baudrate in Bit pro Sekunde.
SPI API Funktionen SPIDataReq SPIDataReq — Führt einen Datentransfer auf dem SPI-Bus durch. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPIDataReq(AnaInt32 hHandle, const char * pcBufWrite, AnaInt32 nBufWriteLen, char * pcBufRead, AnaInt32 nBufReadLen); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs SPIOpenDevice. pcBufWrite Puffer mit den Daten, die an den SPI-Partner gesendet werden sollen.
SPI API Funktionen SPIReadDigital SPIReadDigital — Liest die aktuellen Werte der digitale Ein-/Ausgabe-Register der AnaGate-Hardware zurück. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPIReadDigital(AnaInt32 hHandle, AnaUInt32 pnInputBits, AnaUInt32 * pnOutputBits); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs SPIOpenDevice. pnInputBits Zeiger auf den aktuellen Inhalt des Registers mit den digitalen Eingängen.
SPI API Funktionen SPIWriteDigital SPIWriteDigital — Setzt das digitale Ausgabe-Register der AnaGate-Hardware auf einen neuen Wert. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPIWriteDigital(AnaInt32 hHandle, AnaUInt32 nOutputBits); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs CANOpenDevice. nOutputBits Neuer Wert des Registers mit den digitalen Ausgängen. Dabei entsprechen Bit 0 bis Bit 3 den vier digitalen Ausgängen;...
SPI API Funktionen SPIErrorMessage SPIErrorMessage — Gibt eine textuelle Beschreibung eines Rückgabewertes aus einer API-Funktion zurück. Syntax #include <AnaGateDllSPI.h> AnaInt32 SPIErrorMessage(AnaInt32 nRetCode, char * pcMessage, AnaInt32 nMessageLen); Parameter nRetCode Error-Code, dessen Fehlerbeschreibung ermittelt werden soll. pcMessage Datenpuffer, der die Fehlerbeschreibung aufnehmen soll. nMessageLen Größe des übergebenen Datenpuffers in Byte.
Kapitel 6. I2C API Funktionen I2C, für engl. Inter-Integrated Circuit, im Deutschen gesprochen als I-Quadrat-C, ist ein von Philips Semiconductors (heute NXP Semiconductors) entwickelter serieller Datenbus. Er wird hauptsächlich geräteintern für die Kommunikation zwischen verschiedenen Schaltungsteilen mit geringer Übertragungsgeschwindigkeit benutzt, z. B. zwischen einem Controller und Peripherie-ICs.
I2C API Funktionen I2COpenDevice I2COpenDevice — Baut eine Netzwerkverbindung zu einem AnaGate I2C (bzw. AnaGate Universal Programmer) auf. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2COpenDevice(AnaInt32 * pHandle, AnaUInt32 nBaudrate, const char * pcIPAddress, AnaInt32 nTimeout); Parameter pHandle Zeiger auf eine Variable, in die das Zugriffs-Handle gespeichert wird, falls die Verbindung zum Device erfolgreich hergestellt wurde.
Seite 70
I2C API Funktionen eine bestehende Verbindung aufrechterhalten wird, wird jeder neue Verbindungsversuch abgelehnt. Im folgenden ein Programmier-Beispiel für den initialen Zugriff auf das Gerät. #include <AnaGateDllI2C.h> int main() AnaInt32 hHandle; AnaInt32 nRC = I2COpenDevice(&hHandle, 100000, "192.168.1.254", 5000); if ( nRC == 0 ) // ...
I2C API Funktionen I2CCloseDevice I2CCloseDevice — Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate I2C Device. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CCloseDevice(AnaInt32 hHandle); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von I2COpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
I2C API Funktionen I2CReset I2CReset — Setzt den I2C-Controller auf dem AnaGate I2C Device zurück. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CReset(AnaInt32 hHandle); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von I2COpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
I2C API Funktionen I2CRead I2CRead — Liest Daten von einem I2C-Partner. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CRead(AnaInt32 hHandle, AnaUInt16 nSlaveAddress, const char * pcBuffer, AnaInt32 nBufferLen); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. nSlaveAddress Slave-Adresse des I2C-Partners. Die Slave-Adresse kann eine sog. 7 oder 10-Bit Adresse darstellen (siehe Anhang B, Adressierung auf dem I2C-Bus ).
I2C API Funktionen I2CSequence I2CSequence — Schreibt eine beliebige Folge von I2C-Schreib- und Lese- Kommandos als Sequenz zu einem I2C-Partner. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CSequence(AnaInt32 hHandle, const char * pcWriteBuffer, AnaInt32 nNumberOfBytesToWrite, char pcReadBuffer, AnaInt32 nNumberOfBytesToRead, AnaInt32 pnNumberOfBytesRead, AnaInt32 pnByteNumberLastError); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von...
Seite 76
I2C API Funktionen Schreibkommando Beschreibung 2 Bytes (LSB,MSB) Bit 0-14: Anzahl der folgenden Datenbytes, die zum I2C-Partner geschrieben werden sollen (N). Bit 15: Ist dieses Bit gesetzt, wird am Ende des Schreibkommandos kein Stop-Bit Slave gesendet. N Bytes Datenbytes. nNumberOfBytesToWrite Länge des pcWriteBuffers pcReadBuffer Zeichenfolgepuffer, der die empfangenen Daten, die...
I2C API Funktionen I2CReadDigital I2CReadDigital — Liest die aktuellen Werte der digitalen Ein-/Ausgabe-Register der AnaGate Hardware zurück. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CReadDigital(AnaInt32 hHandle, AnaUInt32 pnInputBits, AnaUInt32 * pnOutputBits); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. pnInputBits Zeiger auf den aktuellen Inhalt des Registers mit den digitalen Eingängen.
I2C API Funktionen I2CWriteDigital I2CWriteDigital — Setzt das digitale Ausgabe-Register der AnaGate-Hardware auf einen neuen Wert. Syntax AnaInt32 I2CWriteDigital(AnaInt32 hHandle, AnaUInt32 nOutputBits); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. nOutputBits Neuer Wert des Registers mit den digitalen Ausgängen. Dabei entsprechen Bit 0 bis Bit 3 den vier digitalen Ausgängen;...
I2C API Funktionen I2CErrorMessage I2CErrorMessage — Gibt eine textuelle Beschreibung eines Rückgabewertes aus einer API-Funktion zurück. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CErrorMessage(AnaInt32 nRetCode, char * pcMessage, AnaInt32 nMessageLen); Parameter nRetCode Error-Code, dessen Fehlerbeschreibung ermittelt werden soll. pcMessage Datenpuffer, der die Fehlerbeschreibung aufnehmen soll. nMessageLen Größe des übergebenen Datenpuffers in Byte.
I2C API Funktionen I2CReadEEProm I2CReadEEProm — Liest Daten von einem EEPROM am I2C-Bus. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CReadEEProm(AnaInt32 hHandle, AnaUInt16 nSubAddress, AnaUInt32 nOffset, char * pcBuffer, AnaInt32 nBufferLen, AnaUInt32 nOffsetFormat); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. nSubAddress Subadresse des EEPROMs, mit dem kommuniziert werden soll. Die gültigen Werte für die nSubAddress werden von der Einstellung des Parameters nOffsetFormat (Bit 8-10) beeinflusst.
I2C API Funktionen Anmerkung maximal adressierbare Speichergröße eines EEPROMs kann aus der Summe aller Adressbits berechnet werden. So benötigt z.B. ein M24C08 acht Bits des Adressbytes und 1 zusätzliches Bit. Damit können über die 9 Bits insgesamt 512 Bytes adressiert werden.
I2C API Funktionen I2CWriteEEProm I2CWriteEEProm — Beschreibt ein serielles EEPROM am I2C-Bus. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CWriteEEProm(AnaInt32 hHandle, AnaUInt16 nSubAddress, AnaUInt32 nOffset, const char * pcBuffer, AnaInt32 nBufferLen, AnaUInt32 nOffsetFormat); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. nSubAddress Subadresse des EEPROMs, mit dem kommuniziert werden soll. Die gültigen Werte für die nSubAddress werden von der Einstellung des Parameters nOffsetFormat (Bit 8-10) beeinflusst.
Seite 84
I2C API Funktionen berechnet werden. So benötigt z.B. ein M24C08 acht Bits des Adressbytes und 1 zusätzliches Bit. Damit können über die 9 Bits insgesamt 512 Bytes adressiert werden. Rückgabewert Die Funktion gibt im Erfolgsfall Null zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
Seite 85
I2C API Funktionen Der ST24C1024 benötigt 17 Adressbits zur Adressierung der 128kB. 16 Bits werden über die Adressangabe des Schreibbefehls festgelegt: 16=0x0F. Das Adressbit A16 wird über das E0 der Chip Enable Address festgelegt, deshalb ist der Mode 1 (E2-E1-A0) zu verwenden: 0x10. Die Seitengröße eines ST24C1024 beträgt 256 Bytes, im vorliegenden Fall werden alle Seiten komplett über eine for-Schleife programmiert.
I2C API Funktionen I2CWriteEEPromPollAck I2CWriteEEPromPollAck — Beschreibt ein serielles EEPROM am I2C-Bus und prüft, ob der Schreibvorgang innerhalb einer gegebenen Zeitspanne abgeschlossen wird. Syntax #include <AnaGateDllI2C.h> AnaInt32 I2CWriteEEPromPollAck(AnaInt32 hHandle, AnaUInt16 nSubAddress, AnaUInt32 nOffset, const char * pcBuffer, AnaInt32 nBufferLen, AnaUInt32 nOffsetFormat, AnaUInt16 nTimeout);...
Seite 87
I2C API Funktionen Anmerkung maximal adressierbare Speichergröße eines EEPROMs kann aus der Summe aller Adressbits berechnet werden. So benötigt z.B. ein M24C08 acht Bits des Adressbytes und 1 zusätzliches Bit. Damit können über die 9 Bits insgesamt 512 Bytes adressiert werden.
Seite 88
I2C API Funktionen if ( nRC == 0 ) memset(cBufferPage,0,256); // clear page buffer for (int i=0; i<512;i++) I2CWriteEEPromPollAck( hHandle, nSubAddress, i*256, cBufferPage, 256, nOffsetFormat, nTimeout ); I2CCloseDevice(hHandle); return 0; Es können bis zu 4 ST24C1024 am I2C-Bus verdrahtet werden. Über die Angabe der Subadresse 0 liegen die Steuerpins E2 und E1 auf LOW.
Kapitel 7. Programmier-Beispiele 7.1. Programmiersprache C/C++ Die AnaGate Programmier-API kann sowohl unter Windows-Systemen als auch unter X86-Linux-Systemen verwendet werden. Alle über die API zur Verfügung gestellten Funktionen sind Betriebssystem-unabhängig implementiert, so dass einmal erstellter Source-Code auf beiden Betriebssystemen eingesetzt werden kann. Lediglich die Einbindung der Bibliotheken muss auf unterschiedlich Betriebssystemen bzw.
Programmier-Beispiele Anmerkung Der vollständige Quellcode des vorliegenden Beispiels ist auf der jedem Gerät beiliegenden CD-ROM im Verzeichnispfad Samples/SPI-VB6 zu finden. 7.2.1.1. Benutzeroberfläche Abbildung 7.1. Eingabe-Formular SPI-Beispiel (VB6) Dialogfelder Network address Netzwerk-Adresse, unter der das Anagate SPI zu erreichen ist. Check address Stellt eine Verbindung zu dem AnaGate SPI unter der angegebenen Netzwerkadresse her und liest anschließend verschiedene Geräteinformationen bzw.
Programmier-Beispiele Execute Führt ein SPI-Kommando aus und schreibt das Ergebnis in das command Dialogfeld Result. Es ist zu beachten, dass der SPI Bus als solcher voll-duplex betrieben wird, d.h. dass beim Schreiben gleichzeitig gelesen wird. Aus diesem Grund muss die Anzahl der geschriebenen Bytes mindestens so groß...
Programmier-Beispiele Dim nBaudrate As Long, nSigLevel As Byte, nAuxVoltage As Byte, nClockMode As Byte Dim nDigitalOutput As Long, nDigitalInput As Long nRC = SPIGetGlobals(hHandle, nBaudrate, nSigLevel, nAuxVoltage, nClockMode) If (nRC = 0) Then sText = sText & "Baudrate=" & CStr(nBaudrate) & ", Siglevel=" Select Case nSigLevel Case 1: sText = sText &...
Programmier-Beispiele sText = sText & "Fehler bei SPISetGlobals: " & GetErrorMsg(nRC) & vbCrLf End If Me.lblDeviceInfo.Caption = GetAnagateInfo(hHandle) nBufferWriteLen = GetCommand(arrWrite) nBufferReadLen = nBufferWriteLen nRC = SPIDataReq(hHandle, VarPtr(arrWrite(1)), nBufferWriteLen, _ VarPtr(arrRead(1)), nBufferReadLen) If nRC = 0 Then For I = 1 To nBufferReadLen sByteText = sByteText &...
Seite 95
Programmier-Beispiele ByVal MonitorOn As Int32, _ ByVal PortNumber As Int32, _ ByVal TCPAddress As String, _ ByVal Timeout As Int32) As Int32 Declare Function CANCloseDevice Lib "AnaGateCAN" (ByVal Handle As Int32) As Int32 Public Delegate Sub CAN_CALLBACK(ByVal ID As Int32, ByVal Buffer As IntPtr, _ ByVal Bufferlen As Int32, ByVal Flags as Int32, _ ByVal Handle as Int32) Declare Function CANSetCallback Lib "AnaGateCAN"...
Seite 96
Programmier-Beispiele Console.WriteLine("Error SPIOpenDevice: " & GetErrorMsg(nRC) & vbCrLf) Else nRC = SPISetGlobals(hHandle, nBaudrate, nSigLevel, nAuxVoltage, nClockMode) nRC = SPIGetGlobals(hHandle, nBaudrate, nSigLevel, nAuxVoltage, nClockMode) For nIndex = 0 To 100 ' init buffers with some data BufferWrite(nIndex) = 69 BufferRead(nIndex) = 96 Next nIndex BufferWrite(0) = 5 * 16 ' 0x50 = READ STATUS (M25P80) BufferWrite(1) = 5 * 16 ' 0x50 = READ STATUS (M25P80)
Seite 97
Programmier-Beispiele ByRef AuxVoltage As Byte, _ ByRef ClockMode As Byte) As Int32 Declare Function SPIDataReq Lib "AnaGateSPI" (ByVal Handle As Int32, _ <MarshalAs(UnmanagedType.LPArray)> _ ByVal BufferWrite() As Byte, _ ByVal BufferWriteLen As Int32, _ <MarshalAs(UnmanagedType.LPArray)> _ ByVal BufferRead() As Byte, _ ByVal BufferReadLen As Int32) As Int32 Declare Function SPIErrorMessage Lib "AnaGateSPI"...
Kapitel 8. Die SocketCAN-Schnittstelle der AnaGate-Serie SocketCAN eine Sammlung CAN-Treibern einer Netzwerkschicht, beigestellt von Volkswagen Research zum Linux Kernel als Open Source. Sie ist auch bekannt als Low Level CAN Framework (LLCF). —Wikipedia, socketCAN Alle Geräte der AnaGate CAN-Serie werden über eine propriertäte Netzwerkschicht angesteuert.
Kapitel 9. Beschreibung des SocketCAN-Gateway Das SocketCANGateway der Analytica GmbH dient als Verbindung zwischen einer CAN-Schnittstelle eines Linux-Systems und einem CAN-Port eines AnaGate CAN- Gateways. Das SocketCANGateway setzt dabei die offene SocketCAN-Schnittstelle des Linux-Kernels auf das proprietäre TCP/IP-Protokoll des AnaGate CAN um. Das SocketCAN-Konzept bildet einen CAN-Bus auf ein Netzwerkgerät ab.
Kapitel 10. Verwendung des SocketCAN-Gateway SocketCANGateway-Anwendung starten, wird SocketCAN- Netzwerkgerät benötigt. In der Regel wird ein virtuelles Netzwerkgerät verwendet, über welches Linux-Anwendungen der Zugriff auf einen CAN-Port eines AnaGate CAN-Gateways ermöglicht wird. Prinzipiell kann SocketCANGateway aber auch verwendet werden, um eine lokale physische CAN-Schnittstelle des Linux-Systems mit einem AnaGate CAN zu verbinden.
Seite 104
Verwendung des SocketCAN-Gateway SocketCANGateway SocketCANGateway — Eine Linux-Konsolenanwendung, die ein SocketCAN- Netzwerkgerät mit einem CAN-Port eines AnaGate CAN-Gateways verbindet. Die Anwendung ist als 32-Bit- und als 64-Bit-Version für x86-CPUs verfügbar. Syntax SocketCANGateway {interface} [ -i | --ipaddress= ipaddress] [ -b | --baudrate= baudrate] [ -p | --canport= canport] [ -t | --termination= { 0 | 1 }] [ -s | --highspeed= { 0 | 1 }]...
Verwendung des SocketCAN-Gateway Im Folgenden ein Beispiel, das die virtuelle SocketCAN-Netzwerkschnittstelle vcan0 mit Port A eines AnaGate CAN-Gateways mit der IP-Adresse 192.168.1.254 verbindet und dessen Einstellungen explizit angibt. $ sudo modprobe vcan $ sudo ip link add dev vcan0 type vcan $ sudo ip link set up vcan0 $ SocketCANGateway vcan0 --ipaddress=192.168.1.254 --baudrate=1000000 \ >...
Seite 106
Verwendung des SocketCAN-Gateway strcpy(ifr.ifr_name, ifname); ioctl(s, SIOCGIFINDEX, &ifr); addr.can_family = AF_CAN; addr.can_ifindex = ifr.ifr_ifindex; printf("%s at index %d\n", ifname, ifr.ifr_ifindex); if(bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) { perror("Error in socket bind"); return -2; frame.can_id = 0x123; frame.can_dlc = 2; frame.data[0] = 0x11;...
Kapitel 11. Die Lua-Skripting- Schnittstelle der AnaGate-Serie Lua [http://www.lua.org] (portugiesisch für Mond) ist eine imperative und erweiterbare Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können. Eine der besonderen Eigenschaften von Lua ist die geringe Größe des kompilierten Skript-Interpreters.
Die Lua-Skripting-Schnittstelle der AnaGate-Serie steht auch als Online-Version unter Lua.org [http://www.lua.org] zur Verfügung. 11.1. Skriptdateien erstellen Die Erstellung und Bearbeitung von Skripten für die Skriptsprache Lua ist denkbar einfach und kann über einen herkömmlichen Texteditor erfolgen. Unter Windows- Betriebssystemen sind z.B. Notepad oder Wordpad geeignet, unter Linux etwa vi oder ähnliche.
Die Lua-Skripting-Schnittstelle der AnaGate-Serie Auf der dem Gerät beiliegenden CD-ROM wird ein modifizierter Lua-Interpreter zur Verfügung gestellt, der auch die spezifischen Funktionserweiterungen für die AnaGate-Produkte beinhaltet. Dieser Interpreter besteht aus der einzelnen ausführbaren Datei LUA.exe und ist auf der CD-Rom im Verzeichnis Lua zu finden. Tipp Eine aktuelle Version der LUA.exe kann jederzeit über den Supportbereich der Produkthomepage [http://www.anagate.de/support/download.htm]...
Die Lua-Skripting-Schnittstelle der AnaGate-Serie Abbildung 11.2. HTTP-Interface, Lua-Einstellungen Durchsuchen.. Öffnet einen Dateiauswahl-Dialog für die Auswahl der Lua-Skriptdatei, die auf das Gerät geladen werden soll. Upload Lädt die ausgewählte Skriptdatei auf das Gerät. Clear Setzt die aktuelle Dateiauswahl zurück. Boot script Skriptdatei, die beim Geräte-Hochlauf gestartet wird.
Seite 113
Die Lua-Skripting-Schnittstelle der AnaGate-Serie script output area In diesem Ausgabebereich wird die Standardausgabe (stdout) des aktuell ausgeführten Skripts angezeigt. Über die Schaltfläche Clear kann der Textbereich gelöscht werden. error output area In diesem Ausgabebereich wird die Standardfehlerausgabe (stderr) des aktuell ausgeführten Skripts angezeigt. Über die Schaltfläche Clear kann der Textbereich gelöscht werden.
Allgemeine Funktionen LS_DeviceInfo LS_DeviceInfo — Ermittelt globale Informationen über eine Gerät der AnaGate-Serie. Syntax SWVersion, HWVersion, table(4) Serial, table(6) MACAddress, int DeviceID, int SWDerivateID = LS_DeviceInfo(int Handle); Parameter hHandle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs einer Funktionen oder LS_CANOpenDevice, LS_I2COpenDevice LS_SPIOpenDevice. Rückgabewerte Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
Allgemeine Funktionen LS_GetTime LS_GetTime — Gibt die aktuelle Systemzeit zurück. Syntax int RC, table(2) Time = LS_GetTime(); Parameter Die Funktion besitzt keine Übergabeparameter. Rückgabewerte Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Tabelle A.6, „Rückgabewerte für Lua Scripting“). Time[1], Time[1] gibt die Anzahl der Sekunden, die seit dem 01.01.1970 Time[2]...
Allgemeine Funktionen LS_Sleep LS_Sleep — Wartet die angegebene Zeit in Millisekunden. Syntax int RC = LS_Sleep(unsigned int Milliseconds); Parameter nMilliseconds Gibt die zu wartende Zeit in Millisekunden an. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Tabelle A.6, „Rückgabewerte für Lua Scripting“).
Kapitel 13. CAN Funktionen Mit den Funktionen der CAN API können alle CAN-Gateways der AnaGate-Serie angesprochen werden. Die Programmierschnittstelle ist für alle Geräte identisch und erfolgt generell über das Netzwerk-Protokoll TCP bzw. UDP. Aktuell können folgende Geräte über die CAN API genutzt werden: •...
CAN Funktionen LS_CANOpenDevice LS_CANOpenDevice — Baut eine Netzwerkverbindung (TCP) zu einem AnaGate CAN auf. Syntax Handle LS_CANOpenDevice(bool SendDataConfirm, bool SendDataInd, uint8 CANPort, string IPAddress, int Timeout); Parameter SendDataConfirm Sollen die gesendeten bzw. empfangenen Telegramme von der Gegenseite bestätigt werden? Ohne Bestätigung ist eine höhereÜbertragungsperformance zu erreichen.
CAN Funktionen Durch einen Aufruf der Funktion CANCloseDevice wird die bestehende Verbindung wieder geschlossen. Wichtig Das explizite Schließen der Verbindung ist notwendig, um die in der DLL angelegten Systemressourcen wieder freizugeben und dem verbundenen Gerät mitzuteilen, dass die Verbindung nicht mehr genutzt wird und wieder für neue Verbindungsanfragen zur Verfügung gestellt werden soll.
CAN Funktionen LS_CANCloseDevice LS_CANCloseDevice — Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate CAN Device. Syntax int RC = LS_CANCloseDevice(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN Funktionen LS_CANRestartDevice LS_CANRestartDevice — Führt einen Geräte-Restart der AnaGate CAN Hardware durch. Syntax int RC = LS_CANRestartDevice(string IPAddress, int Timeout); Parameter IPAddress Netzwerkadresse des AnaGate-Partners. nTimeout Standard-Timeout für AnaGate-Zugriffe in Millisekunden. Ein Timeout wird festgestellt, wenn der AnaGate-Partner nicht innerhalb der vereinbarten Timeout-Zeit antwortet.
CAN Funktionen LS_CANSetGlobals LS_CANSetGlobals — Setzt die globalen Einstellungen, mit denen auf dem CAN-Bus gearbeitet werden soll. Syntax LS_CANSetGlobals(int Handle, uint32 Baudrate, uint8 OperatingMode, bool Termination, bool HighSpeedMode, bool TimeStampOn); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. Baudrate Baudrate, mit der gearbeitet werden soll. Folgende Werte werden unterstützt: •...
CAN Funktionen werden auch keine Error-Frames auf dem Bus erzeugt, wenn andere Busteilnehmer Telegramme mit einer anderen als der konfigurierten Baudrate senden. Termination Geräte-integrierte CAN-Bus-Terminierung ein- bzw. ausschalten (true=ein, false=aus). Diese Einstellung wird nicht bei allen AnaGate CAN Modellvarianten unterstützt. HighSpeedMode Aktuelle Einstellung für den High-Speed Modus (true=ein, false=aus).
CAN Funktionen LS_CANGetGlobals LS_CANGetGlobals — Ermittelt die globalen Einstellungen, mit denen auf dem CAN- Bus gearbeitet wird. Syntax int RC, int Baudrate, uint8 OperatingMode, bool Termination, bool HighSpeedMode, bool TimeStampOn = LS_CANGetGlobals(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice.
Seite 126
CAN Funktionen verlieren. In diesem Modus werden die gesendeten bzw. empfangenen Telegramme auf Protokollebene nicht mehr bestätigt und die via LS_CANSetFilter definierten Filter werden ignoriert. Beschreibung Ermittelt die globalen Geräte-Einstellungen der verwendeten CAN-Schnittstelle. Diese Einstellungen sind für alle gleichzeitigen Verbindungen auf der entsprechenden CAN-Schnittstelle gültig.
CAN Funktionen LS_CANWrite LS_CANWrite — Sendet ein Datentelegramm über die AnaGate-Hardware auf den CAN-Bus. Syntax int RC = LS_CANWrite(int Handle, int32 CANID, table(uint8[DataLen]) Data, uint8 DataLen, uint8 Flags); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. CANID CAN-Identifier des Absenders. Mittels Flags kann definiert werden, ob die Adresse im sog.
Seite 128
CAN Funktionen die Länge des Puffers entsprechend der zu erwartenden Datenlänge anzugeben. Im folgenden ein Programmier-Beispiel, das ein Datentelegramm auf den CAN-Bus sendet. local tabData = {} for i = 1, 8, 1 do table.insert(tabData, i) local nFlags = 0x0 // 11bit address + standard (not remote frame) local nCANId = 0x25 // send with CAN ID 0x25;...
CAN Funktionen LS_CANWriteEx LS_CANWriteEx — Sendet ein Datentelegramm über die AnaGate-Hardware auf den CAN-Bus. Syntax int RC, int32 Seconds, int32 Microseconds = LS_CANWriteEx(int Handle, int32 CANID, table(uint8[DataLen]) Data, uint8 DataLen, uint8 Flags); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. CANID CAN-Identifier des Absenders.
Seite 130
CAN Funktionen der zu erwartenden Datenlänge gesetzt werden, auf dem CAN-Bus selbst werden dabei keine Daten versendet. Bei Verwendung der Funktionen LS_CANWrite bzw. LS_CANWriteEx ist beim Versenden von Remoteframes sowohl ein Datenpuffer als auch die Länge des Puffers entsprechend der zu erwartenden Datenlänge anzugeben.
CAN Funktionen LS_CANGetMessage LS_CANGetMessage — Liest eine CAN-Message aus dem internen Empfangspuffer. Syntax int Available, int32 CANID, uint8 DataLen, table(uint8[Length]) Data, uint8 Flags, int32 Seconds, int32 Microseconds = LS_CANGetMessage(int Handle, int Timeout); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. Timeout Maximale Zeitspanne in Millisekunden, die auf ein neues Datentelegramm gewartet werden soll.
Seite 132
CAN Funktionen Über den Parameter Timeout kann gesteuert werden, wie lange die Funktion auf ein neues Datenpaket warten soll, wenn aktuell keine Telegramme im internen Puffer vorhanden sind. Ist nach Ablauf der angegebenen Wartezeit kein Paket empfangen worden, gibt die Funktion in Available den Rückgabewert -10 (ERR_NO_DATA) zurück.
CAN Funktionen LS_CANSetFilter LS_CANSetFilter — Setzt die Software-Filter für die aktuelle Verbindung. Syntax int RC = LS_CANSetFilter(int Handle, table(uint32[16]) Filter); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. Filter Tabelle mit 8 Filtereinträgen (jeweils 4 Maskenfilter und 4 Bereichsfilter). Ein Filtereintrag besteht grundsätzlich aus zwei 32-Bit-Werten. Es müssen immer alle Filter gleichzeitig gesetzt werden.
CAN Funktionen LS_CANGetFilter LS_CANGetFilter — Liefert die Filtereinstellungen für die aktuelle Verbindung zurück. Syntax int RC, table(uint32[16]) Filter = LS_CANGetFilter(int hHandle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN Funktionen LS_CANSetTime LS_CANSetTime — Setzt die System-Uhrzeit auf dem AnaGate CAN Gerät für den Zeitstempel-Modus. Syntax int RC = LS_CANSetTime(int Handle, int32 Seconds, int32 Microseconds); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von CANOpenDevice. Seconds Aktuelle Uhrzeit in Sekunden seit dem 01.01.1970. Microseconds Zusätzlicher Anteil der Mikrosekunden für die aktuelle Uhrzeit.
CAN Funktionen LS_CANErrorMessage LS_CANErrorMessage — Gibt eine textuelle Beschreibung eines Rückgabewertes aus einer API-Funktion zurück. Syntax string ErrorMsg = LS_CANErrorMessage(int RetCode); Parameter RetCode Fehlercode, dessen Fehlerbeschreibung ermittelt werden soll. Rückgabewert ErrorMsg Textuelle Beschreibung des Fehlercodes (in englischer Sprache). Beschreibung Gibt eine textuelle Beschreibung des übergebenen Rückgabewertes zurück (siehe auch Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN Funktionen LS_CANReadDigital LS_CANReadDigital — Liest die aktuellen Werte der digitalen Ein-/Ausgabe-Register der AnaGate-Hardware zurück. Syntax int RC, uint32 InputBits, uint32 OutputBits = LS_CANReadDigital(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN Funktionen LS_CANWriteDigital LS_CANWriteDigital — Setzt das digitale Ausgabe-Register der AnaGate-Hardware auf einen neuen Wert. Syntax int RC = LS_CANWriteDigital(int Handle, uint32 OutputBits); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. OutputBits Neuer Wert des Registers mit den digitalen Ausgängen. Dabei entsprechen Bit 0 bis Bit 3 den vier digitalen Ausgängen;...
CAN Funktionen LS_CANReadAnalog LS_CANReadAnalog — Liest die aktuellen Werte der analogen Eingänge der AnaGate- Hardware zurück. Syntax int RC, uint32 PowerSupply, table(uint8[min(ReadCount,InputCount)]) AnalogInputs, uint16 ReadCount = LS_CANReadAnalog(int Handle, uint16 InputCount); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. InputCount Anzahl der analogen Eingänge der AnaGate-Hardware. Rückgabewert Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
CAN Funktionen LS_CANWriteAnalog LS_CANWriteAnalog — Setzt die analogen Ausgänge der AnaGate-Hardware auf neue Werte. Syntax LS_CANWriteAnalog(int Handle, table(uint32[OutputCount]) AnalogOutputs, uint16 OutputCount); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_CANOpenDevice. AnalogOutputs Array mit neuen Werten der analogen Ausgänge in Millivolt. OutputCount Anzahl der Werte in AnalogOutputs.
Kapitel 14. SPI Funktionen Der Serial Peripheral Interface (kurz SPI) ist ein von Motorola entwickeltes Bus-System für einen synchronen seriellen Datenbus, mit dem digitale Schaltungen nach dem Master-Slave- Prinzip miteinander verbunden werden können. Die SPI-Gateways aus der AnaGate-Serie bieten einen Zugriff auf den SPI Bus über einen herkömmlichen Netzwerkanschluss. Mit den Funktionen der SPI API können diese SPI-Gateways und damit der SPI Bus auf einfache Art und Weise angesprochen werden.
SPI Funktionen LS_SPIOpenDevice LS_SPIOpenDevice — Baut eine Netzwerkverbindung zu einem AnaGate SPI auf. Syntax int RC, int Handle = LS_SPIOpenDevice(string IPAddress, int Timeout); Parameter IPAddress Netzwerkadresse des AnaGate-Partners. Timeout Standard-Timeout für AnaGate-Zugriffe in Millisekunden. Ein Timeout wird festgestellt, wenn die AnaGate-Hardware nicht innerhalb der vereinbarten Timeout-Zeit antwortet.
SPI Funktionen LS_SPICloseDevice LS_SPICloseDevice — Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate SPI Device. Syntax int RC = LS_SPICloseDevice(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_SPIOpenDevice. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
SPI Funktionen LS_SPISetGlobals LS_SPISetGlobals — Setzt die globalen Einstellungen, mit denen auf dem AnaGate SPI gearbeitet werden soll. Syntax int RC = LS_SPISetGlobals(int Handle, uint32 Baudrate, uint8 SigLevel, uint8 AuxVoltage, uint8 ClockMode); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_SPIOpenDevice. Baudrate Baudrate, mit der gearbeitet werden soll.
Seite 147
SPI Funktionen • 1 für CPHA=0 und CPOL=1. • 2 für CPHA=1 und CPOL=0. • 3 für CPHA=1 und CPOL=1. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ). Beschreibung Setzt die globalen Geräte-Einstellungen, mit denen auf der SPI-Schnittstelle des AnaGate SPI bzw.
SPI Funktionen LS_SPIGetGlobals LS_SPIGetGlobals — Ermittelt die globalen Einstellungen, mit denen auf dem AnaGate SPI gearbeitet wird. Syntax int RC, uint32 Baudrate, uint8 SigLevel, uint8 AuxVoltage, uint8 ClockMode = LS_SPIGetGlobals(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_SPIOpenDevice. Rückgabewerte Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
SPI Funktionen LS_SPIDataReq LS_SPIDataReq — Führt einen Datentransfer auf dem SPI-Bus durch. Syntax int RC, table(uint8[ReadLen]) ReadData = LS_SPIDataReq(int Handle, table(uint8[WriteLen]) WriteData, uint16 WriteLen, uint16 ReadLen); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_SPIOpenDevice. WriteData Puffer mit den Daten, die an den SPI-Partner gesendet werden sollen. WriteLen Länge des Datenpuffers WriteData (Anzahl Bytes).
Seite 151
SPI Funktionen local nRC, hHandle = SPIOpenDevice("192.168.1.254", 5000) if nRC == 0 then local tabRead // send 1 byte and receive 1 byte nRC, tabRead = LS_SPIDataReq(hHandle, tabWrite, 1, 1) // send 1 byte and receive 5 byte nRC, tabRead = LS_SPIDataReq(hHandle, tabWrite, 1, 5) // send 2 byte and receive 1 byte nRC, tabRead = LS_SPIDataReq(hHandle, tabWrite, 2, 1) LS_SPICloseDevice(hHandle)
SPI Funktionen LS_SPIErrorMessage LS_SPIErrorMessage — Gibt eine textuelle Beschreibung eines Rückgabewertes aus einer API-Funktion zurück. Syntax string ErrorMsg = LS_SPIErrorMessage(int ErrorCode); Parameter ErrorCode Fehlercode, dessen Fehlerbeschreibung ermittelt werden soll. Rückgabewert ErrorMsg Textuelle Beschreibung des Fehlercodes (in englischer Sprache). Beschreibung Gibt eine textuelle Beschreibung des übergebenen Rückgabewertes zurück (siehe auch Anhang A, Rückgabewerte aus den API-Funktionen ).
SPI Funktionen LS_SPIReadDigital LS_SPIReadDigital — Liest die aktuellen Werte der digitalen Ein-/Ausgabe-Register der AnaGate-Hardware zurück. Syntax int RC, uint32 InputBits, uint32 OutputBits = LS_SPIReadDigital(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_SPIOpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
SPI Funktionen LS_SPIWriteDigital LS_SPIWriteDigital — Setzt das digitale Ausgabe-Register der AnaGate-Hardware auf einen neuen Wert. Syntax int RC = LS_SPIWriteDigital(int Handle, uint32 OutputBits); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_SPIOpenDevice. OutputBits Neuer Wert des Registers mit den digitalen Ausgängen. Dabei entsprechen Bit 0 bis Bit 3 den vier digitalen Ausgängen;...
Kapitel 15. I2C-Funktionen I2C, für engl. Inter-Integrated Circuit, im Deutschen gesprochen als I-Quadrat-C, ist ein von Philips Semiconductors (heute NXP Semiconductors) entwickelter serieller Datenbus. Er wird hauptsächlich geräteintern für die Kommunikation zwischen verschiedenen Schaltungsteilen mit geringer Übertragungsgeschwindigkeit benutzt, z. B. zwischen einem Controller und Peripherie-ICs.
I2C-Funktionen LS_I2COpenDevice LS_I2COpenDevice — Baut eine Netzwerkverbindung zu einem AnaGate I2C (bzw. AnaGate Universal Programmer) auf. Syntax int RC, int Handle = LS_I2COpenDevice(uint32 Baudrate, string IPAddress, int Timeout); Parameter Baudrate Baudrate, mit der der I2C-Bus betrieben werden soll. Die Werte können individuell eingestellt werden, z.B.
Seite 158
I2C-Funktionen eine bestehende Verbindung aufrechterhalten wird, wird jeder neuer Verbindungsversuch abgelehnt. Im folgenden ein Programmier-Beispiel für den initialen Zugriff auf das Gerät. local nRC, nHandle = LS_I2COpenDevice(1000000, "192.168.1.254", 5000) if nRC ~= 0 then print(LS_I2CErrorMessage(nRC)) os.exit() -- now do something LS_I2CCloseDevice(nHandle) Siehe auch LS_I2CCloseDevice...
I2C-Funktionen LS_I2COpenDeviceEx LS_I2COpenDeviceEx — Baut eine Netzwerkverbindung zu einem AnaGate I2C (bzw. AnaGate Universal Programmer) auf. Dabei muss zusätzlich zur LS_I2COpenDevice- Funktion noch der Port mit angegeben werden. Syntax Handle LS_I2COpenDeviceEx(uint32 Baudrate, uint8 DevicePort, string IPAddress, int Timeout); Parameter Baudrate Baudrate, mit der der I2C-Bus betrieben werden soll.
Seite 160
I2C-Funktionen Anmerkung Das AnaGate I2C (bzw. die I2C-Schnittstelle eines AnaGate Universal Programmers) erlaubt nur eine einzige Netzwerkverbindung. Solange eine bestehende Verbindung aufrechterhalten wird, wird jeder neuer Verbindungsversuch abgelehnt. Im folgenden ein Programmier-Beispiel für den initialen Zugriff auf das Gerät. local nRC, nHandle = LS_I2COpenDeviceEx(1000000, 0, "192.168.1.254", 5000) if nRC ~= 0 then print(LS_I2CErrorMessage(nRC)) os.exit()
I2C-Funktionen LS_I2CCloseDevice LS_I2CCloseDevice — Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate I2C Device. Syntax int RC = LS_I2CCloseDevice(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_I2COpenDevice. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ). Beschreibung Schließt eine geöffnete Netzwerk-Verbindung zu einem AnaGate I2C Device.
I2C-Funktionen LS_I2CReset LS_I2CReset — Setzt den I2C-Controller auf dem AnaGate I2C Device zurück. Syntax int RC = LS_I2CReset(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_I2COpenDevice. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ). Beschreibung Setzt den I2C-Controller auf dem AnaGate I2C Device zurück.
I2C-Funktionen LS_I2CRead LS_I2CRead — Liest Daten von einem I2C-Partner. Syntax int RC, table(uint8[BufferLen]) Data = LS_I2CRead(int Handle, uint16 SlaveAddress, uint16 BufferLen); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_I2COpenDevice. SlaveAddress Slave-Adresse des I2C-Partners. Die Slave-Address kann eine sog. 7 oder 10-Bit Adresse darstellen (siehe Anhang B, Adressierung auf dem I2C-Bus ).
I2C-Funktionen LS_I2CWrite LS_I2CWrite — Schreibt Daten zu einem I2C-Partner. Syntax int RC, uint16 ErrorByte = LS_I2CWrite(int Handle, uint16 nSlaveAddress, table(uint8[BufferLen]) Buffer, uint16 BufferLen); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. SlaveAddress Slave-Adresse des I2C Partners. Die Slave-Address kann eine sog. 7 oder 10-Bit Adresse darstellen (siehe Anhang B, Adressierung auf dem I2C-Bus ).
I2C-Funktionen LS_I2CSequence LS_I2CSequence — Schreibt eine beliebige Folge von I2C-Schreib- und Lese- Kommandos als Sequenz zu einem I2C-Partner. Syntax uint16 NumberOfBytesRead, uint16 ByteNumberLastError, table(uint8[NumberOfBytesToRead]) ReadBuffer LS_I2CSequence(int Handle, table(uint8[NumberOfBytesToWrite]) WriteBuffer, uint16 NumberOfBytesToWrite, uint16 NumberOfBytesToRead); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs von LS_I2COpenDevice.
Seite 166
I2C-Funktionen Schreibkommando Beschreibung Bit 15: Ist dieses Bit gesetzt, wird am Ende des Schreibkommandos kein Stop-Bit an den Slave gesendet. N Bytes Datenbytes. NumberOfBytesToWrite Länge des pcWriteBuffers NumberOfBytesToRead Erwartete Gesamtlänge der empfangenen Daten. Rückgabewerte Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API- Funktionen ).
I2C-Funktionen LS_I2CReadDigital LS_I2CReadDigital — Liest die aktuellen Werte der digitalen Ein-/Ausgabe-Register der AnaGate-Hardware zurück. Syntax int RC, uint32 InputBits, uint32 OutputBits = LS_I2CReadDigital(int Handle); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_I2COpenDevice. Rückgabewert Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ).
I2C-Funktionen LS_I2CWriteDigital LS_I2CWriteDigital — Setzt das digitale Ausgabe-Register der AnaGate-Hardware auf einen neuen Wert. Syntax int RC = LS_I2CWriteDigital(int Handle, uint32 OutputBits); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs LS_I2COpenDevice. OutputBits Neuer Wert des Registers mit den digitalen Ausgängen. Dabei entsprechen Bit 0 bis Bit 3 den vier digitalen Ausgängen;...
I2C-Funktionen LS_I2CErrorMessage LS_I2CErrorMessage — Gibt eine textuelle Beschreibung eines Rückgabewertes aus einer API-Funktion zurück. Syntax string ErrorMsg = LS_I2CErrorMessage(int ErrorCode); Parameter ErrorCode Fehlercode, dessen Fehlerbeschreibung ermittelt werden soll. Rückgabewert ErrorMsg Textuelle Beschreibung des Fehlercodes (in englischer Sprache). Beschreibung Gibt eine textuelle Beschreibung des übergebenen Rückgabewertes zurück (siehe auch Anhang A, Rückgabewerte aus den API-Funktionen ).
I2C-Funktionen LS_I2CReadEEProm LS_I2CReadEEProm — Liest Daten von einem EEPROM am I2C-Bus. Syntax int RC, table(uint8[DataLen]) Data = LS_I2CReadEEProm(int Handle, uint16 SubAddress, uint32 Offset, uint16 OffsetFormat, uint16 DataLen); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. SubAddress Subadresse des EEPROMs, mit dem kommuniziert werden soll. Die gültigen Werte für die SubAddress werden von der Einstellung des Parameters OffsetFormat (Bit 8-10) beeinflusst.
Seite 172
I2C-Funktionen Rückgabewerte Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ). Data Enthält die vom EEPROM gelesenen Daten. Beschreibung Die Funktion LS_I2CReadEEProm liest Daten von einem seriellen I2C-EEPROM. Der Zugriff auf eine Speicheradresse auf einem I2C-EEPROM wird prinzipiell über eine normale Schreib- bzw.
I2C-Funktionen LS_I2CWriteEEProm LS_I2CWriteEEProm — Beschreibt ein serielles EEPROM am I2C-Bus. Syntax int RC = LS_I2CWriteEEProm(int Handle, uint16 SubAddress, uint32 Offset, table(uint8[DataLen]) Data, uint16 DataLen, uint16 nOffsetFormat); Parameter Handle Gültiges Zugriffs-Handle eines erfolgreichen Aufrufs I2COpenDevice. SubAddress Subadresse des EEPROMs, mit dem kommuniziert werden soll. Die gültigen Werte für die SubAddress werden von der Einstellung des Parameters OffsetFormat (Bit 8-10) beeinflusst.
Seite 174
I2C-Funktionen des Adressbytes und 1 zusätzliches Bit. Damit können über die 9 Bits insgesamt 512 Bytes adressiert werden. Rückgabewert RC Die Funktion gibt im Erfolgsfall 0 zurück, andernfalls einen Fehlercode (Anhang A, Rückgabewerte aus den API-Funktionen ). Beschreibung Die Funktion LS_I2CWriteEEProm schreibt Daten auf ein serielles I2C-EEPROM. Der Zugriff auf eine Speicheradresse auf einem I2C-EEPROM wird prinzipiell über eine normale Schreib- bzw.
Kapitel 16. Lua-Programmier-Beispiele 16.1. Beispiele für Geräte mit CAN-Schnittstelle In diesem Beispiel wird eine Verbindung zu zwei AnaGate CAN-Devices aufgebaut, die über den CAN-Bus miteinander verbunden sind. Sollte die Verbindung fehlschlagen, wird eine Fehlermeldung ausgegeben und das Script beendet. Bei erfolgreicher Verbindung werden die globalen Einstellungen des AnaGate CAN-Device gesetzt.
Lua-Programmier-Beispiele -- Statusregister des SPI-Partners abfragen nRC, Value = LS_SPIDataReq(nHandle, OPStatusReg, #OPStatusReg, 2) for i, v in ipairs(Value) do printf("Data Status: %02X\n", v) -- Lesen von 20 Bytes ab Adresse 0x00 nRC, Value = LS_SPIDataReq(nHandle, OPRead, #OPRead, 20) for i, v in ipairs(Value) do printf("Data Status: %02X\n", v) -- Alle digitalen Ausgaenge zuruecksetzen LS_SPIWriteDigital(nHandle, 0)
Seite 179
Lua-Programmier-Beispiele for i, v in ipairs(Value) do printf("%02X ", v) if i % 16 == 0 then printf("\n") --Write EEPROM CountBytes = #aSendData for Address = 0, CountBytes * 10, CountBytes do nRC = LS_I2CWriteEEProm(nHandle, 1, Address, aSendData, CountBytes, 16) LS_I2CWriteDigital(nHandle, 0) LS_I2CCloseDevice(nHandle) Beispiel 16.3.
Lua-Programmier-Beispiele LS_I2CWriteDigital(nHandle, 0) LS_I2CCloseDevice(nHandle) Beispiel 16.4. I2C - Lua Scriptbeispiel I2C-Direkt 3. Beispiel • Sequenz an Anagate I2C Device senden --************************************************** local function printf(...) io.write(string.format(...)) io.flush() --************************************************** function main() local aSendData = {} for i = 1, 128, 1 do table.insert(aSendData, i-1) local nRC, nHandle = LS_I2COpenDevice(1000000, "10.1.2.162", 5000) if nRC ~= 0 then...
Anhang A. Rückgabewerte aus den API-Funktionen Im folgenden eine Liste mit den Rückgabewerten der API-Funktionen. Die Werte sind in der Header-Datei AnaGateErrors.h definiert. Wert Name Beschreibung ERR_NONE Kein Fehler aufgetreten. 0x000001 ERR_OPEN_MAX_CONN Open fehlgeschlagen, maximale Anzahl von Verbindungen erreicht. 0x0000FF ERR_OP_CMD_FAILED Kommando unbekanntem...
Rückgabewerte aus den API-Funktionen Wert Name Beschreibung 0x000125 ERR_I2C_POLL_TIMEOUT Acknowledge-Polling-Timeout nach Schreibzugriff Tabelle A.2. Rückgabewerte für AnaGate I2C Eine textuelle Beschreibung Rückgabewertes kann Funktion I2CErrorMessage() ermittelt werden. Die Beschreibung ist in englischer Sprache. Wert Name Beschreibung 0x000220 ERR_CAN_NACK CAN-NACK 0x000221 ERR_CAN_TX_ERROR CAN Transmit Error 0x000222 ERR_CAN_TX_BUF_OVERLOW CAN buffer overflow...
Rückgabewerte aus den API-Funktionen Wert Name Beschreibung ERR_SYNTAX Syntax-Fehler ERR_RANGE Wert außerhalb des gültigen Bereichs. ERR_NOT_A_NUMBER Parameter ist nicht vom Typ number. ERR_NOT_A_STRING Parameter ist nicht vom Typ string. ERR_NOT_A_BOOL Parameter ist nicht vom Typ boolean. ERR_NOT_A_TABLE Parameter ist nicht vom Typ table. ERR_NO_DATA Keine Daten vorhanden.
Anhang B. Adressierung auf dem I2C- Eine Standard-I2C-Adresse ist das erste vom Master gesendete Byte, wobei die ersten sieben Bit die eigentliche Adresse darstellen und das achte Bit (R/W-Bit) die Lese- oder Schreibrichtung festlegt. I2C nutzt daher einen Adressraum von 7 Bit, was bis zu 112 Knoten auf einem Bus erlaubt (16 der 128 möglichen Adressen sind für Sonderzwecke reserviert).
Adressierung auf dem I2C-Bus Device Type Identifier Chip Enable EEPROM- Speicher M24C01 128 byte M24C02 256 byte M24C04 512 byte M24C08 1024 byte M24C16 2048 byte M24C64 8192 byte E0, E1 und E2 dienen der Ansteuerung des Speichermoduls über dessen externe Pins. A10, A9 und A8 werden als höchstwertige Bits der Speicheradresse interpretiert.
Anhang C. Programmierung von I2C- EEPROM Das AnaGate I2C und der AnaGate Universal Programmer eignen sich u.a. auch für die Programmierung von seriellen I2C-EEPROM. Zur Unterstützung dieser speziellen Anforderung werden die beiden API-Funktionen I2CReadEEProm und I2CWriteEEProm zur Verfügung gestellt. Wie alle I2C-fähigen Bausteine werden auch EEPROM über die Angabe einer Slave- Adresse auf dem I2C-Bus adressiert (siehe hierzu auch Anhang B, Adressierung auf dem I2C-Bus ).
Programmierung von I2C-EEPROM Modus Verwendung Beschreibung A1-A0-E0 Die Bits E2 und E1 werden für die Adressierung verwendet. E1 entspricht dabei dem Adressbit A8 bzw. A16 und E2 dem Adressbit A9 bzw. A17. ist bei den API-Funktionen I2CReadEEProm und I2CWriteEEProm im Parameter nOffsetFormat (Bit 8-10) entsprechend zu verwenden.
Anhang D. FAQ - Häufig gestellte Fragen Im folgenden eine Aufstellung von häufig gestellten Fragen hinsichtlich der Inbetriebnahme und Verwendung der unterschiedlichen AnaGate-Hardware. D.1. Allgemeine Fragen Keine Netzwerk-Verbindung (1) Überprüfen Sie bitte zuerst, ob eine physische Netzwerkverbindung zum Gerät vorhanden ist. Grundsätzlich muss das AnaGate direkt mit einem PC oder einer aktiven Netzwerkkomponente (Hub, Switch) über ein LAN-Kabel verbunden sein.
Seite 189
FAQ - Häufig gestellte Fragen 5001 ein, wobei a.b.c.d durch die IP-Adresse des Geräts zu ersetzen ist. Sollte dieser Befehl eine Fehlermeldung erzeugen, prüfen Sie, ob auf Ihrem PC eine Firewall aktiviert ist oder im Netzwerk zwischen Ihrem PC und dem AnaGate ein Paketfilter aktiv ist.
FAQ - Häufig gestellte Fragen Verwendung einer Firewall Bei Verwendung einer Firewall muss der entsprechende Port für die Kommunikation mit dem AnaGate freigeschaltet sein: Gerät Portnummer AnaGate I2C 5000 AnaGate I2C X7 5100, 5200, 5300, 5400, 5500, 5600, 5700 AnaGate CAN 5001 AnaGate CAN USB 5001...
FAQ - Häufig gestellte Fragen Wenn zwei CAN-Ports auf einem AnaGate CAN bzw. zwei Ports auf unterschiedlichen AnaGate CAN mit einem CAN-Kabel direkt verbunden werden sollen, muss auf beiden Seiten die interne Terminierung eingeschaltet werden. Ein CAN-Netzwerk muss auf beiden Seiten eine Terminierung aufweisen. Anmerkung Es ist auf jeden Fall zu empfehlen, die Terminierung einzuschalten, auch...
FAQ - Häufig gestellte Fragen 4. Prüfen Sie, dass keine weiteren elektronischen Bauelemente Kommunikation auf dem I2C zwischen Gerät und dem I2C-Device stören können. 5. Prüfen Sie, dass die Chip-Enable-Adresse vom I2C-Device und der Software identisch sind. Welche Reihenfolge ist bei der Kontaktierung von GND, SCL und SDA bei Verwendung eines externen Stromversorgung zu beachten? Um potentielle Schäden am AnaGate UP 2.0 zu vermeiden, muss immer zuerst der GND-Pin mit dem Application Board verbunden werden;...
Anhang E. FAQ zu den Programmier- Schnittstellen Im folgenden eine Aufstellung von häufig gestellten Fragen in Bezug zur Programmier-API bzw. der Programmierung als solches. E.1. Fragen zum Kommunikationsprotokoll Die Berechnung der Prüfsumme (CRC) für die AnaGate-Telegramme ist unklar. Die folgende Abbildung zeigt den grundsätzlichen Aufbau eines AnaGate- Befehlstelegramms: Als Prüfsumme wird ein Byte benutzt, das sich durch ein XOR von sämtlichen Bytes eines Befehlstelegramms ohne die Längen-Bytes und CRC selbst...
Anhang F. Technischer Support Die Hardware-Serie AnaGate, die vorhandenen Programmierschnittstellen sowie verschiedene Tools werden von der Analytica GmbH entwickelt und unterstützt. Technische Unterstützung kann wie folgt angefordert werden: Internet Die AnaGate-Website [http://www.anagate.de] der Analytica GmbH enthält Informationen und Software-Downloads für Benutzer der AnaGate Library: •...