CAN/MPC2 - CAN Interfacekarte -! Einsteckkarte für ISA- Systembus! Freie Konfiguration der CAN- Identifier! 64 CAN Knoten pro Karte! Feldbusschnittstelle CAN gemäß DIN/ISO 11898! Eigenständige Prozessorkarte, die Kommunikationssteuerung benötigt keine PC- Rechenzeit! Empfangsqueue mit 256 Telegrammen à 8 Bytes! Sendequeue mit 64 Telegrammen à 8 Bytes! Errorqueue! Realtime- Debugging! DPRAM mit 8kByte Speichergröße! Bis zu 4 CAN/MPC-2 Karten in einem PC! Freie Wahl der PC I/O- Adresse Die CAN/MPC-2 Karte ist eine eigenständige Prozessorkarte für IBM-PC, die zum Ein- und Auslesen von digitalen und analogen Signalen der ElaCAN- Module sowie zur Kommunikation mit beliebigen CAN- Teilnehmern (11-Bit ID) verwendet werden kann. Mittels dieser Karte können bis zu 64 CAN- Module in einem CAN-Netzwerk angesprochen werden. Neben der Verwendung zur Parametrierung bzw. Überwachung von ElaCAN- Modulen, kann die CAN/MPC2 Karte generell für jegliche Kommunikation mit anderen Geräten, die mit einer CAN- Schnittstelle gemäß DIN/ISO 11898 ausgerüstet sind, verwendet werden. Hierbei ist allerdings die Belegung der CAN-I dentifier der ElaCAN- Module zu beachten, damit es zu keinen ID- Überschneidungen kommt. Die Module der Baureihe ElaCAN belegen (je nach Ausbaustufe) ID- Werte zwischen 100h- und 2ffh. Zur Erzeugung eines MASTER- Systemtakts wird weiterhin die ID 10 verwendet. Technische Daten: Art Typ Anzahl Ausführung CAN Knoten Einsteckkarten 64 pro Karte max 4 pro PC Leitungslänge 1 KM 10 KM mit CAN- Repeater Protokoll Protokoll CAN 1.0 Protokoll CAN 2.0 11-Bit ID- Länge, 29-Bit ID- Länge Kommunikationsschnittstellen S-3.2, S-3.4 CAN ISO11898 9-polig Sub-D Übertragungsrate 10...500 KBaud Service Schnittstelle S-1.3 RS232 1 9-polig Sub-D Übertragungsrate 9,6 KBaud PC Bussystem ISA Systembus Kartenadresse 200...320 Über Dill- Schalter einstellbar CPU CPU515 8 Bit 12 MHz Siemens SAB80515 Schutzklasse III Nach EN60730 / VDE0631 TEIL1 7 EMV - Richtlinien Nach EN50081 und EN50082 Maße 171mm x 19mm x 105 mm (L x B x H) Gewicht ca. 130g Bestell Nr. 1050911 1 keine Potentialtrennung, 2 bei Nennspannung, 3 bei Nennwert der Eingangsspannung, 4 Kurzschlussfest, Überlastschutz, Wiederanlauf, 5 Kurzschlussfest, 6 in Vorbereitung, 7 bei ausschließlicher Verwendung von Schutzkleinspannungen (SELV),. 8 die Eingangsfrequenz wird durch einen Hardwarefilter begrenzt, weitere Begrenzungen können durch die Zykluszeit der Software entstehen. VIBDZ103 1/7 Kapitel 6 - Best.-Nr: E5006 elrest
V1.01/Li/02.03.2000 Einstellen der I/O Adresse I/O Adresse Schalter 6 Schalter 5 Schalter 4 Schalter 3 Schalter 2 Schalter 1 320h OFF=1 OFF=1 ON=0 ON=0 OFF=1 ON=0 300h OFF=1 OFF=1 ON=0 ON=0 ON=0 ON=0 280h OFF=1 ON=0 OFF=1 ON=0 ON=0 ON=0 240h OFF=1 ON=0 ON=0 OFF=1 ON=0 ON=0..................... -Schalter auf ON bedeutet logisch 0 -Schalter auf OFF bedeutet logisch 1 Beispiel Dilschalter 6 5 4 3 2 1 Adressbit 9 8 7 6 5 4 3 2 1 0 Binärzahl 1 0 1 0 0 0 0 0 0 0 Hexadezimal zahl 2 8 0 nicht Veränderbar Einstellen des Karten-Slots Slot Schalter 8 Schalter 7 0 ON=0 ON=0 1 ON=0 OFF=1 2 OFF=1 ON=0 3 OFF=1 OFF=1 -Schalter auf ON bedeutet logisch 0 -Schalter auf OFF bedeutet logisch 1 K6_Zubehör.DOC 2/7
Programmierung CAN MPC2 Karte Library Interface Das Entwicklungskit Programmierung der CAN/MPC-2 Karte enthält die Quelldatei can_mpc2.c Diese Quelldatei wurde bereits getestet mit :! Microsoft C-Compiler V6.0 unter MS-DOS V6.0! Borland C-Compiler V4.5 unter Windows 3.11! Mircosoft Developer Studio V4.0 unter Windows 95 V4.00! IBM Visual Age C-Compiler V2.1 unter OS/2 V3.00 Die aus dieser C-Source Datei erzeugte Objektdatei kann in Ihrer Applikation eingebunden werden. Anforderungen an das Betriebssystem sind :! inp / outp Befehle, um auf das I/O Interface zugreifen zu können.! Timer-Funktionen, um Timeouts zu erkennen. Damit die Portierung auf alle Betriebssystemplattformen problemlos möglich wird, werden die verwendeten Variablendatentypen neu definiert. In der Includedatei types.h sind diese vereinbart. Arbeitsweise des Library Interfaces Die Kommunikation zwischen PC und CAN_MPC2 erfolgt über die Port-Schnittstelle des ISA-Busses.Hierüber erfolgt sowohl die Parametrisierung der CAN_MPC2 Karte, als auch Sende- und Empfangstelegrammaustausch. Zur zeitlichen Entkopplung eines gleichzeitigen Speicherzugriffs durch beide Teilnehmer ist ein DPRAM vorhanden. Es werden 2 Betriebsarten unterstützt :! reine11-bit Identifier Verarbeitung. Somit können ausschließlich 11-bit Identifier gesendet und empfangen werden.! 29-bit Identifier Verarbeitung (ab Version 2.07, geplant 4.Quartal 1996) Es können 11-bit und/oder 29-bit Identifier barbeitet werden. Kommunikation zwischen PC und CAN/MPC-2 Karte mittels Queues :! Sendqueue In der Sendqueue können bis zu 64 Sendeanforderungen gemäß dem FIFO Prinzip eingetragen werden.! Receivequeue Die Receivequeue kann bis zu 256 Empfangstelegramme zwischenspeichern, bis der PC diese Queue ausliest.! Errorqueue In der Errorqueue werden die letzten 64 auftretenden Fehlerzustände festgehalten. Funktionen in dem Library Interface Initialisiseren der CAN/MPC-2 Karte! BOOL can_reset(usign8 card, USIGN16 io_address, USIGN16 baudrate, BOOL standard_id) Mittels dieses Funktionsaufrufes wird die CAN/MPC-2 Karte neu initialisiert. Der Initialisierungsvorgang ist nach ca. 1-2 Sekunden abgeschlossen. 3/7 Kapitel 6 - Best.-Nr: E5006 elrest
V1.01/Li/02.03.2000! USIGN16 io_address Der verwendete IO-Adressbereich kann mittels -Schalter auf der CAN/MPC-2 Karte vorgewählt werden. Werksseitig werden die IO-Adressen von 300h... 30Fh verwendet.! USIGN16 baudrate Es wurden bereits die Baudraten : 1000, 800, 615, 500, 250, 125, 123, 100, 50, 20, 10 und 5 kbits/s vordefiniert. Falls weitere Baudraten gewünscht werden, kann dies mittels der Can-Chip Parameter prec, sjw, tseg1, tseg2 und sam erweitert werden.! BOOL standard_id Ist die Variable standard_id zu TRUE gesetzt; können lediglich 11-bit Identifier standard identifier verarbeitet werden. Ist die Variable standard_id zu FALSE gesetzt; können 11-bit standard identifier und/oder 29-bit Identifier extended identifier verarbeitet werden. Hinweise : Die Baudrate wird ermittelt gemäß : 16MHz baudrate = ---------------------------------------- 2 * presc * (1 + tseg1 + tseg2) Spezifizieren der Identifier auf der CAN/MPC-2 Karte! BOOL can_recevice_lock(usign8 card, USIGN32 id, BOOL lock) Der Zugriff und die Funktionalität jedes am Bus zu Verfügung stehenden Identifiers kann individuell eingestellt werden. Nach der Initialisierung sind alle Identifier freigegeben zum Empfang.! SIGN8 card_no! USIGN32 id Die Variable id entspricht dem CAN-Identifier. Bei standard identifier werden die Bits 0 bis 10 und bei extended identifier die Bits 0 bis 28 verwendet.! BOOL lock Die Variable lock kann für jeden der 11-bit bei standard identifier bzw. 29-bit bei extended identifier individuell den Empfang sperren oder freigeben. K6_Zubehör.DOC 4/7
Versenden von Telegrammes mittels der CAN/MPC-2 Karte! BOOL can_req_unconfirmed(usign8 card, USIGN16 send_id, USIGN8 length, USIGN8* dat)! BOOL can_req_confirmed(usign8 card, USIGN16 send_id, USIGN16 recv_id, USIGN8 length, USIGN8* dat) Es stehen zwei Sende-Funktionen zu Verfügung. :! Mit der Funktion can_req_unconfirmed wird eine Sendeanforderung in der Sendqueue eingetragen. Dies erfolgt unberücksichtigt, ob ein anderer CAN-Teilnehmer auf diese REQUEST-Anforderung ein CONFIRM-Antworttelegramm absetzt.! Mit der Funktion can_req_confirmed wird eine Sendeanforderung in der Sendqueue eingetragen. Kann innerhalb einer Timeoutzeitdauer von 40ms kein CONFIRM-Antworttelegramm auf der recv_id empfangen werden, erfolgt ein Eintrag in der Errorqueue mit mac=mac_error_confirm_timeout. Jedes Empfangstelegramm wird mit einem Echtzeitstempel in 0,01sec Auflösung versehen. Somit ist eine zeitliche Auswertung des FIFO-Empfangsspeichers möglich.! USIGN32 send_id Die Variable send_id entspricht dem Sende CAN-Identifier. Bei standard identifier werden die Bits 0 bis 10 und bei extended identifier die Bits 0 bis 28 verwendet.! USIGN32 recv_id Die Variable recv_id entspricht dem Antwort CAN-Identifier für confirmed services. Bei standard identifier werden die Bits 0 bis 10 und bei extended identifier die Bits 0 bis 28 verwendet.! USIGN8 length Die Telegrammlänge length kann von 0... 8 Datenbytes variieren.! USIGN8* dat Der Pointer dat referenziert auf den zu sendenden Dateninhalt. Dieser wird in Anhängigkeit der Länge ausgelesen. USER Application Layer Programm : USIGN32 send_id = 0x100; USIGN8 dat[8]; if (can_req_unconfirmed(0,send_id,8,dat) ) printf( Successful entry in send queue ); 5/7 Kapitel 6 - Best.-Nr: E5006 elrest
V1.01/Li/02.03.2000 Auslesen der Errorqueue von der CAN/MPC-2 Karte! BOOL can_get_error(usign8 card, USIGN32 *id, USIGN8 *mac) Der Zugriff und die Funktionalität jedes am Bus zu Verfügung stehenden Identifiers kann individuell eingestellt werden.! USIGN32 *id Als Inhalt des Pointers id wird entweder der Send-Identifier oder das CAN-Statusregister übergeben.! USIGN8 *mac Als Inhalt des Pointers mac wird das MAC_ERROR_???? übergeben. Function Defines :! #define MAC_ERROR_TIMEOUT 0x09! #define MAC_ERROR_CHECKSUM 0x10! #define MAC_ERROR_CONFIRM_TIMEOUT 0x20 Auslesen der Receivequeue von der CAN/MPC-2 Karte! BOOL can_get_receivequeue (USIGN8 card, USIGN32 *recv_id, USIGN16 *systemtick, USIGN8 *len, USIGN8 *recv_dat) Solange die Funktion can_get_receivequeue als Rückgabewert TRUE liefert können die Telegramme einmalig ausgelesen werden. Das Speichern der empfangenen Telegrammen erfolgt in der Application Layer. iese Funktion muß zyklisch in einer hochprioren Task aufgerufen werden, damit der Empfangsspeicher fortwährend geleert wird. Läuft der Empfangsspeicher über, so wird der weitere Empfang von Telegrammen selbständig unterbunden, bis zum nächsten Auslesen der Receivequeue. Mit der Variablen card wird auf eine der vier möglichen CAN/MPC-2 Karten referenziert. der Somit ist! USIGN32 *recv_id Als Inhalt des Pointers recv_id wird der Send-Identifier übergeben.! USIGN16 *systemtick Als Inhalt des Pointers systemtick wird ein auf 10ms basierender Echtzeitstempel zugehörend zu dem Empfang des Telegrammes übergeben. Jedes Empfangstelegramm wird mit einem Echtzeitstempel in 0,01sec Auflösung versehen. Somit ist eine zeitliche Auswertung des FIFO-Empfangsspeichers möglich. K6_Zubehör.DOC 6/7
! USIGN8 *len Als Inhalt des Pointers len wird die Länge des empfangenen Telegrammes übergeben.! USIGN8 *recv_dat In den Inhalt des Pointers recv_dat werden in Abhängigkeit der empfangenen Länge des Empfangstelegrammes die Empfangsdaten übergeben. Die restlichen Bytes auf Länge 8 sind dont t care und müssen ggf. auf Application Layer Ebene auf einen Ersatzwert gesetzt werden. USER Application Layer Programm : USIGN32 recv_id = 0x100; USIGN16 systemtick; USIGN8 len; USIGN8 recv_dat[8]; while ( 1 ) { if (!can_get_receivequeue (0, &recv_id, &systemtick, &len, recv_dat) break; /* process the received data on application layer */ } Steckerbelegung: Steckerbelegung CAN CIA DIN/ISO 11898 6 7 8 9 1 2 3 4 5 Pin 1: Pin 2: Pin 3: Pin 4: Pin 5: Pin 6: Pin 7: Pin 8: Pin 9: unbelegt CAN data low dominant GND (Signal Ground) unbelegt Schirmleitung GND (Signal Ground) CAN data high dominant unbelegt externe Versorgungsspannung Pin 1: Pin 2: Pin 3: Pin 4: Pin 5: Pin 6: Pin 7: Pin 8: Pin 9: 9 8 7 6 5 4 3 2 1 Buchse S tecker Adapter CAN MPC1 nach CAN- CAI Adapter CAN MPC2 nach CAN- 7/7 Kapitel 6 - Best.-Nr: E5006 elrest