Befehlssatz

Befehls-IDs

Die folgende Tabelle listet die vom USBoard-USS5 unterstützten Befehle auf.

Kommando Wert Beschreibung
CMD_CONNECT 0 Verbindungstest ausführen
CMD_SET_CHANNEL_ACTIVE 1 Kanal für Senden/ Empfangen aktivieren
CMD_GET_DATA_1TO8 2 Messdaten Sensoren 1 bis 8 anfordern
CMD_GET_DATA_9TO16 3 Messdaten Sensoren 9 bis 16 anfordern
CMD_WRITE_PARASET 4 Parametersatz zum Board übertragen (flüchtig)
CMD_WRITE_PARASET_TO_EEPROM 5 Parametersatz ins EEPROM schreiben (nicht-flüchtig)
CMD_READ_PARASET 6 Parametersatz vom Board lesen
CMD_GET_ANALOGIN 7 Werte der 4 Analogeingänge lesen
8-12 Reserviert
CMD_GET_DATA 13 Messdaten aller Sensoren anfordern

CAN-Kommunikation

Die Werksvoreinstellung für die Basisadresse lautet 0x400. Diese Basisadresse kann bei Bedarf innerhalb des Parametersatzes geändert werden.

Die vom USBoard-USS5 benutzten Adressen werden von der Basisadresse berechnet, indem jeweils die folgenden Offsets addiert werden.

Offset zur Basisadresse Funktion
+0 Empfangen von Befehlen
+1 Antwort auf CMD_CONNECT
+2 Erste Antwort auf CMD_GET_DATA_1TO8
+3 Zweite Antwort auf CMD_GET_DATA_1TO8
+4 Erste Antwort auf CMD_GET_DATA_9TO16
+5 Zweite Antwort auf CMD_GET_DATA_9TO16
+6 Antwort auf CMD_READ_PARASET
+7 Antwort auf CMD_GET_ANALOGIN
+8 Antwort auf CMD_WRITE_PARASET
+9 Antwort auf CMD_WRITE_PARASET_TO_EEPROM
+13 Erste Antwort auf CMD_GET_DATA (Gruppe 0: 1 - 4)
+14 Zweite Antwort auf CMD_GET_DATA (Gruppe 1: 5 - 8)
+15 Dritte Antwort auf CMD_GET_DATA (Gruppe 2: 9 - 12)
+16 Vierte Antwort auf CMD_GET_DATA (Gruppe 3: 13 - 16)

Serielle Schnittstelle

Die Kommunikation per USB erfolgt über einen USB-Seriell-Konverter auf dem USBoard-USS5 und kann vom Betriebssystem wie eine klassische serielle Schnittstelle verwendet werden. Auf Anfrage kann der USB-Konverter durch einen RS-232-Konverter ersetzt werden. Das Kommunikationsprotokoll ändert sich dabei nicht.

Bemerkung

Bitte beachten Sie, dass die RS-232-Schnittstelle eine gemeinsame Masseverbindung zwischen USBoard-USS5 und Rechner erfordert.

Die serielle Schnittstelle arbeitet mit 19.200 Baud. Das Protokoll besitzt das gleiche Format wie die CAN-Kommunikation, jedoch mit den folgenden Erweiterungen:

Nachrichten von dem USBoard-USS5 beginnen mit dem Startbyte 0xFF. Am Ende jeder Nachricht, bestehend aus acht Datenbytes, wird eine 16 Bit lange Prüfsumme angehängt. Damit ist eine vollständige Nachricht 11 Bytes lang.

Byte 1 Bytes 2-9 Byte 10 Byte 11
0xFF Datenbytes checksum high byte checksum low byte

Die Checksumme berechnet sich nach CRC-CCITT über alle 8 Datenbytes.

Die zum USBoard-USS5 verschickten Nachrichten enthalten lediglich die Datenbytes 1-8.

Implementierung der Checksummenberechnung (C-Code):

unsigned int getCheckSum(unsigned char *c, size_t iNumBytes){
	unsigned int uCrc16;
	unsigned char ucData[2];
	size_t i;

	uCrc16 = 0;
	ucData[0] = 0;
	for(i=0; i<iNumBytes; i++){
		ucData[1] = ucData[0];
		ucData[0] = c[i];

		if(uCrc16 & 0x8000){
			uCrc16 = (uCrc16 & 0x7fff) << 1;
			uCrc16^= 0x1021;
		}else{
			uCrc16 <<= 1;
		}
		uCrc16^= (unsigned int)(ucData[0]) | ((unsigned int)(ucData[1]) << 8);
	}

	return uCrc16;
}