35
Platforma de Platforma de dez dez voltare TINI- nod voltare TINI- nod într-o reţea CAN într-o reţea CAN Conducător ştinţific Conducător ştinţific : : Conf.Dr.Ing. Dorina Isar Conf.Dr.Ing. Dorina Isar Student Student : : Cărbunar Cărbunar Ovidiu Ovidiu Universitatea “Politehnica” din Timişoara Facultatea de Electronică şi Comunicaţii Departamentul Electronică Aplicată

Platforma de dez voltare TINI- nod într-o reţea CAN

  • Upload
    nydia

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

Universitatea “ Politehnica ” din Timişoara Facultatea de Electronică şi Comunicaţii Departamentul Electronică Aplicată. Platforma de dez voltare TINI- nod într-o reţea CAN. Conducător ştinţific : Conf.Dr.Ing. Dorina Isar Student : Cărbunar Ovidiu. - PowerPoint PPT Presentation

Citation preview

Page 1: Platforma de dez voltare TINI- nod într-o reţea CAN

Platforma de Platforma de dezdezvoltare TINI- nod voltare TINI- nod

într-o reţea CANîntr-o reţea CAN

Conducător ştinţificConducător ştinţific:: Conf.Dr.Ing. Dorina IsarConf.Dr.Ing. Dorina Isar

StudentStudent: : Cărbunar Cărbunar

OvidiuOvidiu

Universitatea “Politehnica” din TimişoaraFacultatea de Electronică şi Comunicaţii

Departamentul Electronică Aplicată

Page 2: Platforma de dez voltare TINI- nod într-o reţea CAN

Este formată din placa de bază şi SIMM.

Platforma de dezvoltare TINI

Page 3: Platforma de dez voltare TINI- nod într-o reţea CAN

Platforma de dezvoltare TINI

Page 4: Platforma de dez voltare TINI- nod într-o reţea CAN

Microcontrolerul DS80C400

Page 5: Platforma de dez voltare TINI- nod într-o reţea CAN

Port 5 Control Register (P5CNT)

P5CNT.0P5CNT.1P5CNT.2C0_I/O -- --CAN0BA --SFR A2h

CAN0BACAN 0 bus active status.

C0_I/O Bit 3 CAN 0 I/O enable.

Microcontrolerul DS80C400

Page 6: Platforma de dez voltare TINI- nod într-o reţea CAN

Memoria de date internă

- 9472 octeţi de memorie SRAM internă din care 256 octeţi este pentru memoria controlerului CAN.

Microcontrolerul DS80C400

Page 7: Platforma de dez voltare TINI- nod într-o reţea CAN

Microcontrolerul DS80C400

Page 8: Platforma de dez voltare TINI- nod într-o reţea CAN

Microcontrolerul DS80C400

Page 9: Platforma de dez voltare TINI- nod într-o reţea CAN

CCaracteristici - CANaracteristici - CAN

Bus serial asincronBus serial asincron APLICAAPLICAŢŢII DE CONTROL IN TIMP REAL Viteza: 1Mbps II DE CONTROL IN TIMP REAL Viteza: 1Mbps DetecDetecţţie excelentie excelentăă a erorilor a erorilor Identificatorul mesajului specificIdentificatorul mesajului specificăă at atâât cont conţţinutul cinutul câât t şşi i

prioritatea mesajuluiprioritatea mesajului Deconectare automatDeconectare automatăă a nodurilor defecte a nodurilor defecte Retransmisie automatRetransmisie automatăă îîn urma detectn urma detectăării unei eroririi unei erori FuncFuncţţionare ionare îîn regim de consum redusn regim de consum redus Excelent raport preExcelent raport preţţ-performan-performanţăţă Se pot conecta/deconecta noduri Se pot conecta/deconecta noduri în timp ce reţeaua locală în timp ce reţeaua locală

este în funcţiuneeste în funcţiune

Page 10: Platforma de dez voltare TINI- nod într-o reţea CAN

Frame-uri CANFrame-uri CAN

Frame = structura unei transmisii de date

Frame CAN Mesajul CAN

Există 4 tipuri de formate pentru frame-uri:

- Data Frame,- Remote Frame, - Error Frame, - Overload Frame

Page 11: Platforma de dez voltare TINI- nod într-o reţea CAN

Data FrameData Frame

Nr. biti/camp 1 11+1 1+1+4 0...64 15+1 1+1 7

SOF(D)

ID + RTR (D)

Secv.CRC + Delimitator CRC (R)

ACK + Delimitator ACK (R)

7 x R

Page 12: Platforma de dez voltare TINI- nod într-o reţea CAN

- datele CAN sunt transmise şi recepţionate prin cele 15 centre de mesaje.

Transmiterea şi primirea mesajelor

Page 13: Platforma de dez voltare TINI- nod într-o reţea CAN

Transmiterea şi primirea mesajelor

ER0ER0 ER1ER1 ER2ER2 TXSTXS RXSRXS WKSWKSEC96 /128EC96 /128BSSBSSSFR SFR A4hA4h

- biţii TXS şi RXS din registrul de stare indică dacă s-au trimis sau recepţionat date.

Page 14: Platforma de dez voltare TINI- nod într-o reţea CAN

- 4 registre pentru verificarea recepţiei/transmisiei datelor.

Transmiterea şi primirea mesajelor

C0RMS 0.0

C0RMS 0.1

C0RMS 0.2

C0RMS 0.3

C0RMS 0.4

C0RMS 0.5

C0RMS 0.6

C0RMS 0.7

SFR 96h

C0RMS 1.0

C0RMS 1.1

C0RMS 1.2

C0RMS 1.3

C0RMS 1.4

C0RMS 1.5

C0RMS 1.6

C0RMS 1.7

SFR 97h

Page 15: Platforma de dez voltare TINI- nod într-o reţea CAN

- 4 registre pentru verificarea recepţiei/transmisiei datelor.

Transmiterea şi primirea mesajelor

C0TMA 0.0

C0TMA 0.1

C0TMA 0.2

C0TMA 0.3

C0TMA 0.4

C0TMA 0.5

C0TMA 0.6

C0TMA 0.7

SFR 9Eh

C0TMA 1.0

C0TMA 1.1

C0TMA 1.2

C0TMA 1.3

C0TMA 1.4

C0TMA 1.5

C0TMA 1.6

-- --

SFR 9Fh

Page 16: Platforma de dez voltare TINI- nod într-o reţea CAN

- fiecare centru de mesaje conţine un registru format (C0MyF)

DTBYC3DTBYC3 DTBYC2DTBYC2 DTBYC1DTBYC1 DTBYC0DTBYC0 T/R T/R EX/STEX/ST MEMEMEME MDME MDME

DTBYC3-0 (Data byte count) - indică numărul de biţi din câmpul de date al mesajului.

Transmiterea şi primirea mesajelor

Page 17: Platforma de dez voltare TINI- nod într-o reţea CAN

Totul despre eroriTotul despre erori

Erori de bit transmisErori de bit transmis Erori datorate Erori datorate

inserinserăării/neinserrii/neinserăării de birii de biţţi i suplimentari (de bit stuffing)suplimentari (de bit stuffing)

Erori de verificare CRCErori de verificare CRC Erori de format Erori de format Erori datorate bitului de AcknowledgeErori datorate bitului de Acknowledge

Page 18: Platforma de dez voltare TINI- nod într-o reţea CAN

Totul despre eroriTotul despre erori

ER2ER2 ER1ER1 ER0ER0 PrioritatPrioritatee

EroareEroare

00 00 00 N/AN/A Nici o eroare în ultimul frame.Nici o eroare în ultimul frame.

00 00 11 22 Eroare de bit stuffing.Eroare de bit stuffing.

00 11 00 55 Eroare de format.Eroare de format.

00 11 11 44 Eroare de acknowledge.Eroare de acknowledge.

11 00 00 6 (mică)6 (mică) Eroare de bit 1.Eroare de bit 1.

11 00 11 1 (mare)1 (mare) Eroare de bit 0.Eroare de bit 0.

11 11 00 33 Eroare de CRC.Eroare de CRC.

11 11 11 N/AN/A Nici o eroare de la ultima citire a Nici o eroare de la ultima citire a C0S.C0S.

Registrul de stare CAN 0 (C0S)

ER0ER0 ER1ER1 ER2ER2 TXSTXS RXSRXS WKSWKSEC96 /128EC96 /128BSSBSSSFR SFR A4hA4h

Page 19: Platforma de dez voltare TINI- nod într-o reţea CAN

Totul despre eroriTotul despre erori

- fiecare nod CAN are numărătoare interne de erori.

- în funcţie de valoarea conţinută de aceste numărătoare un nod CAN poate fi in una din următoarele stări:

Page 20: Platforma de dez voltare TINI- nod într-o reţea CAN

-modulul CAN conţine 2 registre speciale (C0RE si C0TE) care permit monitorizarea şi modificarea numărătoarelor de erori.

Totul despre eroriTotul despre erori

SFR A7h

C0RE.7 C0RE.6 C0RE.5 C0RE.4 C0RE.3 C0RE.2 C0RE.1 C0RE.0

SFR A6h

C0TE.7 C0TE.6 C0TE.5 C0TE.4 C0TE.3 C0TE.2 C0TE.1 C0TE.0

Page 21: Platforma de dez voltare TINI- nod într-o reţea CAN

Sicronizarea pe bus-ul Sicronizarea pe bus-ul CANCAN

- pentru a asigura o eşantionare corectă, nodul CAN trebuie să se resincronizeze pe tot parcursul Frame-ului.

- sincronizare hard pe SOF

Page 22: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bit ia unui bit

BPR7,BPR7, BPR6BPR6

BPR5BPR5 BPR4BPR4 BPR3BPR3 BPR2BPR2 BPR1BPR1 BPR0BPR0 BPRVBPRV

0000 00 00 00 00 00 00 11

0000 00 00 00 00 00 11 22

---- ---- ---- ---- ---- ---- ---- ----

---- ---- ---- ---- ---- ---- ---- ----

1111 11 11 11 11 11 00 255255

1111 11 11 11 11 11 11 256256

SJW1SJW1 SJW0SJW0 BPR5BPR5 BPR4BPR4 BPR3BPR3 BPR2BPR2 BPR1BPR1 BPR0BPR0- registrul de temporizare 0 pe

bus-ul CAN (C0BT0)

- BPR7-BPR0 determină numărul de tacte asociate cu time quanta.

- durata unui bit pe bus-ul CAN are 4 segmente bine definite si este un multiplu de tactul uControler-ului.

-“unitatea de masura” pentru costrucţia bitului pe CAN este Time Quanta, TQ.

Page 23: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bitia unui bit

Segment de sincronizare- este folosit de fiecare nod să se sincronizeze pentru receptie.- durata 1 TQ.

Page 24: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bitia unui bit

Segment pentru timpul de propagare- furnizează întârzierea necesară pentru compensarea timpului de propagare a semnalului electric.- durata 1..8TQ.

Page 25: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bitia unui bit

“Segmentul 1 pentru defazare” - compensarea erorilor de defazare la sincronizare. -Lungimea sa: 1 ... 8 TQ poate fi mărită pe timpul resinscronizarii.

SJW1SJW1 SJW0SJW0 BPR5BPR5 BPR4BPR4 BPR3BPR3 BPR2BPR2 BPR1BPR1 BPR0BPR0

SJW1SJW1 SJW0SJW0 SJWSJW

00 00 1 1 ttQUQU (1) (1)

00 11 2 2 ttQUQU (2) (2)

11 00 3 3 ttQUQU (3) (3)

11 11 4 4 ttQUQU (4) (4)

- registrul de temporizare 0 pe bus-ul CAN (C0BT0)

Page 26: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bitia unui bit

“Segmentul 2 pentru defazare”-durata: 1 ... 8 TQ, nu mai mare decat segmentul 1.

Page 27: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bit ia unui bit

Pentru o programare mai usoara:

Page 28: Platforma de dez voltare TINI- nod într-o reţea CAN

ConstrucConstrucţţia unui bit ia unui bit

SMP SMP TSEG26TSEG26 TSEG25TSEG25 TSEG24TSEG24 TSEG13TSEG13 TSEG12TSEG12 TSEG11TSEG11 TSEG10TSEG10

TSEG26TSEG26 TSEG25TSEG25 TSEG24TSEG24 Lungimea Seg.2Lungimea Seg.2

00 00 00 InvalidInvalid

00 00 11 2 2 ttQUQU (2) (2)

00 11 00 3 3 ttQUQU (3) (3)

---- ---- ---- -- --

11 11 00 7 7 ttQUQU (7) (7)

11 11 11 8 8 ttQUQU (8) (8)

Pentru o programare mai usoara:

Registrul de temporizare 1 (C0BT1)Registrul de temporizare 1 (C0BT1)

TSEG13TSEG13 TSEG12TSEG12 TSEG11TSEG11 TSEG11TSEG11 Lungimea Seg.1Lungimea Seg.1

00 00 00 00 InvalidInvalid

00 00 00 11 2 2 ttQUQU (2) (2)

00 00 11 00 3 3 ttQUQU (3) (3)

---- ---- ---- ---- -- --

11 11 11 00 15 15 ttQUQU (15) (15)

11 11 11 11 16 16 ttQUQU (16) (16)

Page 29: Platforma de dez voltare TINI- nod într-o reţea CAN

Programarea momentului Programarea momentului de esantionarede esantionare

- eş- eşantionarea mai devremeantionarea mai devreme- - se pot utiliza oscilatoare mai ieftine.se pot utiliza oscilatoare mai ieftine.

Page 30: Platforma de dez voltare TINI- nod într-o reţea CAN

Programarea momentului Programarea momentului de esantionarede esantionare

- eşantionarea mai târziu- lungime maximă pentru bus.

Page 31: Platforma de dez voltare TINI- nod într-o reţea CAN

Necesităţi software pentru programarea platformei TINI

Java Development Environment

Java Communications API

TINI Software Development Kit

Java Development Environment - mediul de dezvoltare al aplicatiilor JAVA Java Communication API - infrastructura necesară comunicării pe portul serial RS232 între calculator şi platforma TINI.

TINI SDK - software-ul pentru aplicatiile dedicate platformei TINI

Page 32: Platforma de dez voltare TINI- nod într-o reţea CAN

Clase în java utilizate pentru Clase în java utilizate pentru comunicaţia pe interfaţa CANcomunicaţia pe interfaţa CAN

Clasa CanBus - Această clasă permite accesul la controlerele CanBus

Metode

- setSynchronizationJumpWidth (int jumpWidth) - receive (CanFrame frame) - sendDataFrame (int ID, boolean extendedID, byte[] data) - setMessageCenterRXMode (int messageCenter) - setBaudRatePrescaler (int prescaler) - setTSEG1 (int tseg1) - setTSEG2 (int tseg2) - enableMessageCenter (int messageCenter) - enableController () - close ()

Page 33: Platforma de dez voltare TINI- nod într-o reţea CAN

Clase în java utilizate pentru Clase în java utilizate pentru comunicaţia pe interfaţa CANcomunicaţia pe interfaţa CAN

Clasa CANFrame - este folosită împreună cu clasa CANBus pentru a transmite/recepţiona frame-uri pe bus-ul CAN

ConstructoriCanFrame() – creează un nou frame CAN cu următorii parametrii :

ID = 0 ;extendedID = false ;messageCenter = 0 ;remoteFrameRequest = false ;data = new byte [8];lenght = 0 ;

Page 34: Platforma de dez voltare TINI- nod într-o reţea CAN

Program de identificare a Program de identificare a vitezei de comunicaţie pe CANvitezei de comunicaţie pe CAN

Baud Rate BRP TSEG1 TSEG2

10 Kbps 88 13 7

20 Kbps 71 5 7

20 Kbps 44 13 7

50 Kbps 41 3 5

50 Kbps 23 10 5

125 Kbps 7 13 7

CAN baud rate = Fosc/[BRP*(1+TSEG1+TSEG2)]

BRP, TSEG1 şi TSEG2 pot fi programate folosind metode din clasa com.dalsemi.comm.CanBus. Paşii pentru setarea vitezei:

- CanBus bus = new CanBus(CanBus.CANBUS0);- bus.setBaudRatePrescaler(BRP);- bus.setTSEG1(TSEG1);- bus.setTSEG2(TSEG2);

Registrul de control CAN 0 (C0C)

SFR SFR A3hA3h

ERIEERIE STIESTIE PDEPDE SIESTASIESTA CRSTCRST AUTOBAUTOB ERCSERCS SWINTSWINT

Page 35: Platforma de dez voltare TINI- nod într-o reţea CAN

Contribuţii personaleContribuţii personale

Documentare TINIDocumentare TINI Documentare CANDocumentare CAN Studiu asupra eficientizarii Studiu asupra eficientizarii

transmisiilortransmisiilor Program in java pentru setari ale Program in java pentru setari ale

controlerului CANcontrolerului CAN Program de detectare automata a Program de detectare automata a

vitezei de comunicatie pe CANvitezei de comunicatie pe CAN