Comunicació AUTOSAR-CanTp i mòdul CanIf

Autosar Communication Cantp



CanTp

El mòdul d’interfície CAN (en endavant, CanIf) es troba entre el controlador CAN inferior (CanDrv), el transceptor CAN (CanTrcv) i la capa superior del servei de comunicació (CanSm, CanNm), el protocol de transmissió CAN (CanTp) i la PDU. enrutador (PduR). Representa la interfície de servei del controlador CAN de la capa de comunicació superior.



CanTp és el mòdul entre el mòdul PduR i CANIf, com es mostra a la figura 1. La funció principal del mòdul CANTp és segmentar i tornar a muntar la CAN I-PDU de manera que la longitud de la I-PDU no superi els 8 bytes. Per a CAN FD, la CAN I-PDU no supera els 64 bytes.



El mòdul PduR desplega la I-PDU d’AUTOSAR COM i DCM a diferents protocols de comunicació. Ruta a diferents tipus de sistemes de xarxa (com CAN, LIN i FlexRay) mitjançant identificadors I-PDU. PduR també decideix si s’ha d’utilitzar un protocol de transferència. Finalment, en absència de conversió de tarifes, s’implementa la funció de passarel·la.



CanIf proporciona un mecanisme igual per accedir als canals de bus CAN, independentment de si el xip del controlador existeix internament o externament. Des de la posició del controlador CAN, extreu el disseny de maquinari de l'ECU i el nombre de controladors CAN. Com que CanTp només processa trams de protocol de transmissió (és a dir, SF, FF, CF i FC PDU), segons l’identificador N-PDU, CANIf ha de reenviar la I-PDU a CanTp o PduR, cosa que també es mostra clarament a la figura 1. Segons a l'arquitectura AUTOSAR BSW, CanTp proporciona els serveis següents:

  • Segmentació de dades en la direcció de transmissió
  • Torneu a muntar les dades segons la direcció de recepció
  • Controlar el flux de dades
  • Detecta una reunió de segmentació incorrecta.
  • La transferència s'ha cancel·lat
  • Accepta la cancel·lació

AUTOSAR va decidir basar l'especificació del mòdul BSW sobre la base dels estàndards existents, de manera que l'especificació de capa de transport CAN AUTOSAR es basa en l'estàndard internacional més usat ISO15765 en el camp de l'automòbil. La ISO 15765 descriu dues especificacions aplicables de capa de transport CAN: diagnòstic millorat per OEM: s'utilitza ISO 15765-2 Diagnòstic OBD: s'utilitza ISO15765-4.

Tot i que el protocol de transmissió CAN s’utilitza principalment en sistemes de diagnòstic de vehicles, també s’ha desenvolupat per atendre les necessitats d’altres sistemes basats en CAN que requereixen un protocol de capa de transmissió.



El mòdul CanTp proporciona serveis de segmentació, transmissió de control de flux i muntatge de missatges. El seu propòsit principal és enviar i rebre missatges que poden ser o no adequats per a un fotograma CAN. Els missatges que no són adequats per a un fotograma CAN es divideixen en diverses parts perquè cada part es pugui transmetre en un fotograma CAN.

Connexió i relacions mútues

A l'arquitectura AUTOSAR, el protocol de transmissió s'utilitzarà per transmetre diagnòstics (com ara protocols OBD i UDS) i AUTOSAR COMI-PDU. Per tant, el mòdul CanTp pot gestionar diverses connexions al mateix temps, és a dir, múltiples sessions paral·leles segmentades. El nombre màxim de connexions simultànies s’aconsegueix mitjançant la configuració estàtica. Aquesta configuració té un impacte important en la complexitat i el consum de recursos (CPU, ROM i RAM) del codi generat, perquè els recursos s’han de reservar per a accés simultani, com ara màquines d’estats Rx i Tx, variables que s’utilitzen per processar dades N-PCI. , etc.

Per tal de rebre o enviar I-PDU al mateix temps, cada identificador N-SDU s'encaminarà internament a través del 'canal de connexió' CanTp configurat. Com que no es pot accedir al 'canal de connexió' des de fora, tota la informació necessària per transmetre l'N-SDU estarà vinculada a l'identificador N-SDU, com ara el número del 'canal de connexió', el temps d'espera, el format d'adreça, etc. de configuració de metadades, N-SDU es pot utilitzar com a connexió específica que defineix N_AI o com a connexió general, on N_TA, N_SA i N_AE són diferents en temps d’execució, mentre que N_TAtype, MType i el format d’adreça estan definits estàticament. La pila de comunicació AUTOSAR admet el mode periòdic i el mode d'activació d'esdeveniments. Per tant, cada capa de comunicació pot rebre informació de la capa inferior mitjançant un mecanisme diferent i propagar la informació a la capa superior.

Per a la capa CANTP, només s'admet el mode d'activació d'esdeveniments.

Per tal d’optimitzar la pila de comunicacions, AUTOSAR limita la capacitat de memòria intermèdia de CANTP. Per tant, CanTp copia la càrrega útil N-SDU directament de la capa superior (DCM, COM o PDUR en el cas de l’encaminament TP 1: 1) al controlador CAN i viceversa. Per tal de garantir la coherència de les dades, la capa superior seguirà les regles següents:

  • Durant la transmissió, la càrrega útil de les dades N-SDU es mantindrà sense canvis des de l'enviament de la sol·licitud fins a la recepció de la confirmació d'enviament
  • En rebre, des de l’inici de recepció fins que es rep la instrucció de recepció, es bloquejarà l’accés a dades N-SDU.

En temps d'execució, el mòdul de transmissió CAN ha de tenir tota la informació necessària per gestionar la connexió de transmissió. Per tant, les propietats següents s’han de configurar estàticament:

  • Nombre de CAN N-SDU
  • Identificador únic de cada CAN N-SDU
  • Direcció de comunicació de cada CAN N-SDU (Tx o Rx)
  • El format d’adreçament de cada connexió (normal, ampliat, mixt d’11 bits, normal fix o mixt de 29 bits), segons el format d’adreces, a més: per a la connexió general que utilitza N-SDU amb metadades, es pot ometre l’adreça estàtica informació.
    • Normal : cap
    • Ampliat : N_TA
    • Mixta d'11 bits : N_AE
    • Normal fix : N_TA, N_SA
    • 29 bits barrejats : N_TA, N_SA, N_AE
  • El format d’adreçament (normal, ampliat o mixt) de cada connexió. Si es tracta d'un format d'adreçament ampliat, és el valor N_TA; si es tracta d'un format d'adreçament mixt, és el valor N_AE.

L'identificador CAN L-SDU associat, cada identificador CAN N-SDU, si cal (sessió dividida de múltiples fotogrames), l'identificador CAN L-SDU s'utilitza per transmetre el fotograma CAN clàssic CAN N-PDU i el fotograma CAN FD

Tipus de marc

CanTp proporciona quatre tipus de marcs per analitzar les dades de la capa de xarxa. Són fotogrames únics (fotograma de senyal), primer fotograma (fotograma Frist), fotograma continu (fotograma consecutiu) i fotograma de control de flux (control de flux).

Serveis prestats per al nivell superior

La capa de transport CAN utilitza la funció de devolució de trucada del PDUR per copiar les dades de transmissió, confirmar la transmissió, iniciar la recepció, copiar les dades rebudes i indicar el missatge rebut. Les funcions clau són les següents:

PduR_CanTpRxIndication ()

PduR_CanTpStartOfReception ()

PduR_CanTpCopyRxData ()

PduR_CanTpCopyTxData ()

PduR_CanTpTxConfirmation ()

La interfície de servei del mòdul CanTp es divideix principalment en dues categories:

Inicialització i apagat

Servei de comunicació

El mòdul CANTp té dos estats interns: CANTP_OFF amb CANTP_ON .

Com es mostra a la figura 6, CANTP es troba en estat CANTP_OFF ​​després de l’apagada. En aquest estat, es permet actualitzar la configuració de CANTP. Després que CanTp_Init () inicialitza amb èxit CANTp, l'estat canvia a CANTP_ON. Només a l'estat CANTP_ON, es pot segmentar i tornar a muntar CAN I-PDU. CanTp_Init () inicialitzarà totes les variables globals del mòdul i establirà totes les connexions del protocol de transmissió al subestat de CANTP_ON. En aquest subestat (els estats són CANTP_RX_WAIT i CANTP_TX_WAIT), la transmissió del segment i la recepció del segment estan en curs.

Si la detecció d’errors de desenvolupament del mòdul CanTp està habilitada, abans de trucar a la funció CanTp_Init, quan la capa d’interfície PDPR o CAN intenta utilitzar qualsevol funció (excepte CanTp_GetVersionInfo), el mòdul CanTp generarà un error (CANTP_E_UNINIT). Si l'estat global és CANTP_ON, es cridarà al mòdul CanTp i CanTp_Init tornarà a l'estat per defecte (estat = CANTP_ON, però la transmissió i la recepció estan en curs). Si es diu CanTp_Init quan el mòdul CanTp es troba a l’estat global CANTP_ON, el mòdul CanTp alliberarà totes les connexions actuals. La funció CanTp_Shutdown aturarà el mòdul CanTp normalment.

Serveis prestats per al nivell superior

La capa de transport CAN utilitza la funció de devolució de trucada del PDUR per copiar les dades de transmissió, confirmar la transmissió, iniciar la recepció, copiar les dades rebudes i indicar el missatge rebut. Les funcions clau són les següents:

PduR_CanTpRxIndication ()

PduR_CanTpStartOfReception ()

PduR_CanTpCopyRxData ()

PduR_CanTpCopyTxData ()

PduR_CanTpTxConfirmation ()

La interfície de servei del mòdul CanTp es divideix principalment en dues categories:

Inicialització i apagat

Servei de comunicació

El mòdul CANTp té dos estats interns: CANTP_OFF amb CANTP_ON .

Com es mostra a la figura 6, CANTP es troba en estat CANTP_OFF ​​després de l’apagada. En aquest estat, es permet actualitzar la configuració de CANTP. Després que CanTp_Init () inicialitza amb èxit CANTp, l'estat canvia a CANTP_ON. Només a l'estat CANTP_ON, es pot segmentar i tornar a muntar CAN I-PDU. CanTp_Init () inicialitzarà totes les variables globals del mòdul i establirà totes les connexions del protocol de transmissió al subestat de CANTP_ON. En aquest subestat (els estats són CANTP_RX_WAIT i CANTP_TX_WAIT), la transmissió del segment i la recepció del segment estan en curs.

Si la detecció d’errors de desenvolupament del mòdul CanTp està habilitada, abans de trucar a la funció CanTp_Init, quan la capa d’interfície PDPR o CAN intenta utilitzar qualsevol funció (excepte CanTp_GetVersionInfo), el mòdul CanTp generarà un error (CANTP_E_UNINIT). Si l'estat global és CANTP_ON, es cridarà al mòdul CanTp i CanTp_Init tornarà a l'estat per defecte (estat = CANTP_ON, però la transmissió i la recepció estan en curs). Si es diu CanTp_Init quan el mòdul CanTp es troba a l’estat global CANTP_ON, el mòdul CanTp alliberarà totes les connexions actuals. La funció CanTp_Shutdown aturarà el mòdul CanTp normalment.

L'operació de transmissió cantp_transmission () permetrà a la capa superior utilitzar el protocol de transmissió CAN (segmentació, format d'adreça ampliat, etc.) per sol·licitar la transmissió de dades. La funció cantp_transmission () és asíncrona. Després de rebre la sol·licitud d'enviament, si s'ha completat la transmissió N-SDU (èxit o fracàs), el mòdul CanTp notificarà la capa superior.

Per descomptat, CANTP permet que la capa superior cancel·li la transmissió en curs. Per exemple, CANTP pot cancel·lar la transmissió del diagnòstic a causa de rebre altres protocols de diagnòstic de major prioritat. Aquesta característica s'activa mitjançant el paràmetre de configuració estàtica CanTpTc. La cancel·lació de l’enviament s’activa trucant a la funció cantp_canceltransmission (). Després de trucar al servei cantp_canceltransmission (), la transmissió de la connexió es suspendrà. Cal tenir en compte que quan la funció PduR_CanTpTxConfirmation () tingui el valor E_NOT_OK, la transmissió es cancel·larà.

Serveis prestats per a la capa inferior

La capa de transport CAN utilitza els serveis següents de la interfície CAN per transmetre N-PDU CAN:

CanIf_Transmit ()

Segons l'especificació AUTOSAR de la pila de comunicació, la capa de transport CAN proporciona les dues funcions de devolució de trucada següents a la interfície CAN: CanTp_TxConfirmation () i CanTp_RxIndication ().

Enviar confirmació

El mòdul CanIf crida a la funció de confirmació de la transmissió per informar la capa de transmissió CAN si la transmissió de trames CAN sol·licitada per CanTp s’executa correctament. L'identificador L-PDU s'associa a la trucada per identificar la transmissió corresponent. Quan el temps màxim (igual a N_As) no ha rebut la confirmació d'enviament, el mòdul CanTp finalitzarà la sessió corresponent. Abans de rebre TxConfirmation, la N-PDU encara no està disponible per a altres sessions simultànies, independentment de l'èxit o el fracàs. Per a trucades de confirmació, el mòdul CanTp hauria de proporcionar la funció CanTp_TxConfirmation (). Quan es crida CanTp_TxConfirmation () amb el resultat E_NOT_OK, CanTp finalitzarà la sessió corresponent.

Rep instruccions

El mòdul CanIf crida a la funció d’indicació de recepció per notificar al mòdul CanTp que ha rebut un nou fotograma CAN N-PDU (és a dir, un tram de protocol de transmissió). La instrucció de recepció es pot executar al servei d'interrupció (ISR) segons la configuració CanIf. Per rebre instruccions, el mòdul CanTp ha de proporcionar cantp_rxspecification ().

El funcionament intern de la capa de transport CAN proporciona un mecanisme bàsic per implementar l'objectiu de 'transmetre missatges en un sol fotograma CAN o en diversos fotogrames CAN'. Tot el comportament de la capa de transport CAN serà provocat per esdeveniments, de manera que CanTp pugui processar directament la transmissió des del PDUR N-SDU. Quan es rep N-PDU SF o FF, el mòdul CanTp utilitza la funció PduR_CanTpStartOfReception per notificar a la capa superior per rebre el PDUR. La capa superior reservarà i bloquejarà un buffer per rebre N-SDU. CanTp utilitza el paràmetre TpSduInfoPtr de PduR_CanTpStartOfReception () per proporcionar PduR amb contingut FF / SF. La longitud de dades de la capa d'enllaç de dades rebuda (RX_DL) es deriva de la primera longitud de càrrega útil de la PDU de trama CAN (CAN_DL), específicament:

  • Per als valors CAN_DL inferiors o iguals a 8 bytes, el valor RX_DL hauria de ser 8.
  • Per a valors CAN_DL superiors a 8 bytes, el valor RX_DL és igual al valor CAN_DL.

per concloure: CanTp és el mòdul responsable de l’anàlisi de xarxa a la pila de comunicació AUTOSAR. De dalt a baix, CANTP és responsable de segmentar i tornar a muntar CAN I-PDU de baix a dalt, és responsable de rebre dades N-PDU transmeses per la capa CanIf, analitzades en dades I-PDU i transmeses al mòdul PDUR. CanTp només processa trames de protocol de transmissió, és a dir, trama única, primera trama, trama contínua i trama de control de flux. Al mateix temps, la capa CANTP només admet el mode d'activació d'esdeveniments.

Navalla

CanIf proporciona una interfície única per gestionar diferents maquinari CAN, com ara controladors CAN i transceptors CAN. Al mateix temps, el mòdul de gestor d’estats CAN (CanSm) relacionat amb el canal CAN físic pot controlar diversos controladors de CAN interns i externs o transceptors de CAN. CanIf es compon de tasques que no tenen res a veure amb el maquinari CAN i pertany al controlador de comunicació CAN de l'ECU. CanIf compleix els requisits de flux de control i flux de dades del mòdul de comunicació superior de la pila PduR i AUTOSAR COM: enviament de processament de sol·licituds, enviament de confirmació, recepció d’indicacions, notificació d’errors i inici / parada del controlador CAN per despertar o participar a la xarxa. La seva API de processament i notificació de dades es basa en CAN L-SDU, i l'API per al control i processament de modes proporciona una vista del controlador CAN.

En enviar una sol·licitud, CanIf completa la transmissió L-PDU amb els paràmetres corresponents i reenvia la CAN L-PDU al controlador CAN a través del CanDrv corresponent. Al final de la recepció, CanIf distribueix la I-PDU rebuda com a I-SDU al mòdul superior. L'assignació entre el L-SDU receptor i la capa superior està configurada estàticament. Quan es confirma la transmissió, CanIf és responsable d’enviar el missatge de transmissió amb èxit a la capa superior. CanIf proporciona accés abstracte a la comunicació del controlador CAN i als serveis de controladors transceptors CAN per al control i la supervisió de xarxes CAN. La interfície CAN reenvia l'estat del gestor d'estats CAN fins al controlador CAN inferior, i el mòdul d'interfície CAN superior transfereix el controlador CAN o el controlador transceptor CAN al mòdul NM corresponent.

capa superior

A l’arquitectura en capes AUTOSAR BSW, la capa superior de CanIf pot ser PduR, CanNm, CanTp, CanSm, EcuM o mòdul de disc complex CDD, mòdul de protocol de calibratge universal XCP, mòdul de sincronització de temps global CanTSyn, mòdul de capa de transport J1939Tp i xarxa J1939 mòdul de gestió J1939Nm. L'API que utilitza CanIf consisteix en serveis de notificació, que transmeten dades relacionades amb CAN a la capa superior de destinació. Els paràmetres de trucada d'aquests serveis apunten a la informació de memòria intermèdia a CanDrv o directament al maquinari CAN. A més, CanIf admet cridar el mòdul de rèplica de bus per informar del contingut de les trames rebudes i transmeses. EcuM inicialitzarà CanIf.

Nivell més baix

El mòdul inferior de CanIf és principalment el controlador CAN CanDrv. A causa de la posició de CanIf a l'estructura BSB d'AUTOSAR, té una estreta relació amb CanDrv. CanDrv només proporciona accés abstracte de maquinari al controlador CAN, però CanDrv detectarà i processarà els esdeveniments del controlador CAN i notificarà a CanIf aquests esdeveniments. CanIf passa la sol·licitud de mode d’operació de CanSm al controlador CAN subjacent corresponent.

CanDrv proporciona L-PDU estandarditzada per garantir la independència del maquinari de CanIf. El punter cap a aquesta L-PDU estandarditzada apunta a una memòria intermèdia temporal o CanDrv que depèn del maquinari CAN. El servei de devolució de trucada anomenat per CanDrv es declara i s’implementa a CanIf. El servei de devolució de trucada anomenat per CanIf es declara i es col·loca a la capa de servei de comunicació superior corresponent, com ara PduR, CanNm, CanTp. El nombre de controladors CAN configurats no és necessàriament el nombre de transceptors CAN utilitzats. Si s’executen diversos tipus de controladors CAN a la mateixa xarxa CAN, és suficient un transceptor CAN, però en funció del tipus de dispositiu de control CAN, es necessiten un o dos CanDrv diferents. El segon controlador de dispositiu CAN de baix nivell disponible és el transceptor CAN CanTrcv. Cada CanTrcv controla el mode de funcionament del transceptor CAN. CanIf només assigna diverses API CanTrcv subjacents a una API única. Per tant, CanSm pot activar la conversió del corresponent mode de transceptor CAN. Les funcions controlades per CanTrcv no s’executen a CanIf. CanIf assigna tots els serveis següents del CanTrcv subjacent a una interfície única:

  • L'únic servei de sol·licitud i lectura del mode CanTrcv per gestionar el mode d'operació de cada dispositiu transceptor CAN subjacent
  • Servei de lectura per a l’emissor-receptor CAN, suport per motius de despertador
  • El servei de sol·licitud de mode habilita, desactiva i esborra cada transceptor CAN utilitzat per l'estat d'esdeveniment de despertador (CanIf_SetTrcvMode).