scieee Open visual document viewer

Desarrollo de plataforma hardware y software de una unidad de control electrónico para el motor del vehículo FOX

Marín Cortés, Pablo

Abstract

El presente Trabajo Fin de Máster recoge los avances realizados en el proyecto cuyo objetivo es el diseño de una nueva unidad de control electrónica del vehículo FOX, desarrollado en el seno del Departamento de Ingeniería de Sistemas y Automática con la colaboración del Departamento de Ingeniería Aeroespacial y Mecánica de Fluidos, ambos pertenecientes a la Escuela Técnica Superior de Ingeniería de la Universidad de Sevilla. El estudio parte de las conclusiones del Trabajo Fin de Grado "Estudio Preliminar del Diseño de una Nueva Unidad de Control Electrónico del Motor del Vehículo FOX" [1]. Estructuralmente, es posible dividirlo en varios bloques: de un lado, la recepción y puesta a punto del equipo adquirido, incluyendo las pruebas funcionales necesarias para la validación de sus características; la integración del bus de datos CAN (Controller Area Network) en el computador principal, incluyendo pruebas de comunicación con un microcontrolador externo; por último se propone un montaje experimental que emplea todos los elementos estudiados por separado que constituye el paso inmediatamente anterior a la migración del código de los controladores implantados en el vehículo FOX y a la sustitución de su unidad de control electrónico. Bajo los capítulos en los que toman forma los anteriores bloques, también se adjuntan anexos que complementan los desarrollos presentados, y que ayudan a reproducirlos si así se requiriera.

Full text

P oyec o Fin de Ca e a Ingenie ía de Telecomunicación Fo ma o de Publicación de la Escuela Técnica Supe io de Ingenie ía Au o : F. Ja ie Payán Some Tu o : Juan José Mu illo Fuen es Dep. Teo ía de la Señal y Comunicaciones Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2013 T abajo Fin de Más e Más e Uni e si a io en Ingenie ía Ae onáu ica Desa ollo de Pla a o ma Ha dwa e y So - wa e de una Unidad de Con ol Elec ónico pa a el Mo o del Vehículo FOX Au o : Pablo Ma ín Co és Tu o : F ancisco Ga ilán Jiménez Depa amen o de Ingenie ía Ae oespacial y Mecánica de Fluidos Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2018 T abajo Fin de Más e Más e Uni e si a io en Ingenie ía Ae onáu ica Desa ollo de Pla a o ma Ha dwa e y So wa e de una Unidad de Con ol Elec ónico pa a el Mo o del Vehículo FOX Au o : Pablo Ma ín Co és Tu o : F ancisco Ga ilán Jiménez Depa amen o de Ingenie ía Ae oespacial y Mecánica de Fluidos Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2018 T abajo Fin de Más e : Desa ollo de Pla a o ma Ha dwa e y So wa e de una Unidad de Con ol Elec ónico pa a el Mo o del Vehículo FOX Au o : Pablo Ma ín Co és Tu o : F ancisco Ga ilán Jiménez El ibunal nomb ado pa a juzga el abajo a iba indicado, compues o po los siguien es p o eso es: P esiden e: Vocal/es: Sec e a io: acue dan o o ga le la cali icación de: El Sec e a io del T ibunal Fecha: Ag adecimien os Me gus a ía ag adece a mis pad es, mi he mana y oda mi amilia po el apoyo y la comp ensión que me han b indado a lo la go de mi pe iodo de es udios en la Escuela. Asimismo, mi más since o ag adecimien o a odos mis amigos y compañe os de clase, que han es ado siemp e ahí pa a saca me una son isa cuando más lo necesi aba. Es a sección de ag adecimien os no es a ía de ninguna mane a comple a sin alaba la dedicación demos ada po F ancisco Ga ilán en la ealización de es e p oyec o, siendo de ines imable ayuda pa a llega a las conclusiones que en él se p esen an. Me ecen ambién mi ag adecimien o los miemb os di ec i os del FCCL, po la opo unidad b indada pa a abaja con el FOX: Ca los Bo dons y Miguel Ángel Ridao. Mis ag adecimien os ambién a Juan José Má quez po su iempo y capacidad pa a p es a una mano cuando ue necesa io. I Resumen El p esen e T abajo Fin de Más e ecoge los a ances ealizados en el p oyec o cuyo obje i o es el diseño de una nue a unidad de con ol elec ónica del ehículo FOX, desa ollado en el seno del Depa amen o de Ingenie ía de Sis emas y Au omá ica con la colabo ación del Depa amen o de Ingenie ía Ae oespacial y Mecá- nica de Fluidos, ambos pe enecien es a la Escuela Técnica Supe io de Ingenie ía de la Uni e sidad de Se illa. El es udio pa e de las conclusiones del T abajo Fin de G ado "Es udio P elimina del Diseño de una Nue a Unidad de Con ol Elec ónico del Mo o del Vehículo FOX" [ 1 ]. Es uc u almen e, es posible di idi lo en a ios bloques: de un lado, la ecepción y pues a a pun o del equipo adqui ido, incluyendo las p uebas un- cionales necesa ias pa a la alidación de sus ca ac e ís icas; la in eg ación del bus de da os CAN (Con olle A ea Ne wo k) en el compu ado p incipal, incluyendo p uebas de comunicación con un mic ocon olado ex e no; po úl imo se p opone un mon aje expe imen al que emplea odos los elemen os es udiados po sepa ado que cons i uye el paso inmedia amen e an e io a la mig ación del código de los con olado es implan ados en el ehículo FOX y a la sus i ución de su unidad de con ol elec ónico. Bajo los capí ulos en los que oman o ma los an e io es bloques, ambién se adjun an anexos que comple- men an los desa ollos p esen ados, y que ayudan a ep oduci los si así se equi ie a. III 2Capí ulo 1. In oducción en mic o edes (de inidas como el conjun o de ca gas, gene ado es y sis emas de almacenamien o que pue- de se ges ionado de mane a coo dinada pa a ope a de o ma aislada o conec ada a la ed eléc ica). Se conside a especialmen e la p oblemá ica de la in e conexión en e ehículos eléc icos y mic o edes, así como el p oblema de cambio de opología po la conexión/desconexión de cualquie sis ema de gene ación, almacenamien o o ca ga. El p oyec o p e ende desa olla en e los años 2017 y 2020 dis in as es a egias de con ol en el ma co del Con ol P edic i o pa a ges iona de mane a e icien e la ope ación de es os sis emas, abo dando la econ igu- abilidad an o en lo e e en e a los componen es de una mic o ed, como a mic o edes in e conec adas. Los sis emas de con ol ambién conside a án c i e ios que incluyan los ac o es que a ec an a la deg adación de los sis emas de almacenamien o, con obje o de do a los de una mayo du abilidad. En el ámbi o di ec o de aplicación del p esen e abajo, el FOX consis e en un ehículo de compe ición biplaza adap ado ( éase la igu a 1.1b) pa a se i de pla a o ma de es udio en cuan o a la in eg ación de los ehículos eléc icos y las mic o edes an e io men e mencionadas. Las uen es de ene gía del mismo pueden se ba e ías con encionales o pilas de hid ógeno, clasi icándolo como un ehículo eléc ico (EV) híb ido en e un BEV (Ba e y Elec ic Vehicle) y un FCEV(Fuel Cell Elec ic Vehicle). La plan a mo iz del FOX consis e en cua o mo o es de co ien e con inua sin escobillas (b ushless) si uados de o ma que cada neumá ico puede se accionado de mane a independien e. La necesidad de un sis ema de con ol au omá ico se jus i ica po a ias azones, en e las que se incluyen lo complicado gobe na la ayec o ia del ehículo median e la ac uación di ec a de cada mo o , la ges ión de las ba e ías y la pila de hid ógeno y la segu idad de los ocupan es, así como pa a la ges ión de los da os ú iles pa a la consecución del p oyec o. En cuan o a los elemen os de con ol, el ehículo dispone de olan e y pedales compues os po po en- cióme os lineales, así como de una unidad in eg ada de GPS y medidas ine ciales. Toda la in o mación es p esen ada al conduc o a a és de una pan alla HMI (Human Machine In e ace). Es posible encon a una ep esen ación del sis ema comple o en la igu a 1.3. La unidad de con ol elec ónico del ehículo se encuen a si uada as el asien o del conduc o , con enida en un chasis me álico e ige ado que p esen a los conec o es necesa ios pa a se i de in e az con odos los elemen os del ehículo. Es á compues a po módulos con ac o de o ma PC/104, un es ánda en compu ado es indus iales emba cados, apilados en e sí y conec ados con el es o de elemen os median e una ed de bus CAN, cuya aplicación esul a un es ánda en el mundo au omo ilís ico desde los años 90. El so wa e implemen ado, como ya se expuso en [ 1 ], consis e en la e sión 6.3.2 de QNX, un sis ema ope a i o p i a i o empleado p incipalmen e en sis emas emba cados. 1.2 Es ado inicial del p oyec o Va ios ue on los obje i os conseguidos al inaliza el p oyec o p esen ado en [ 1 ]; po un lado se documen a on aspec os elacionados con el p oyec o FOX necesa ios pa a e isa el sis ema de la ECU y po o o se lle ó a cabo la implemen ación de un sis ema ope a i o en iempo eal (RT) basado en Linux pa a sopo a un en o no exigen e en cuan o a iempos de ejecución, pues o que como se discu ió, el con ol au omá ico p eciso y de e minis a del ehículo depende en g an medida de su obus ez. Ello quedó jus i icado al cons a a se que el sis ema ope a i o basado en QNX ins alado en el ehículo p esen a algunos p oblemas de co upción de da os di íciles de p edeci que ponen en pelig o el desempeño segu o y iable del con olado , sumado a las ca ac e ís icas a o ables del SO elegido (código lib e, ex ensi a documen ación, posibilidad de c ea un SO a medida... e c.) Como se desc ibió en [ 1 , Sección 4.4.1], la di icul ad añadida de la idea esidió en la necesidad de que el ehículo se encon a a ope a i o el mayo iempo posible pa a la ealización de p uebas pe iódicas en i o del so wa e con olado , lo cual imposibili ó abaja di ec amen e sob e los elemen os que componen la ECU. Con ello, el desa ollo se ealizó en un equipo cedido po el depa amen o de Ingenie ía Ae oespacial y Mecánica de Fluidos de la Escuela Técnica Supe io de Ingenie ía de la Uni e sidad de Se illa. Asimismo, es e depa amen o ue el enca gado de p opo ciona pa e de los ma e iales adicionales necesa ios pa a lle a las p uebas a cabo. 1.2 Es ado inicial del p oyec o 3 Figu a 1.3 Esquema gene al de las conexiones del ehículo. Figu a 1.4 Equipo de p uebas empleado en [1]. Los esul ados de ca ac e ización del desempeño del sis ema que se desa olló, si bien esul a on p ome- edo as, pusie on de mani ies o las de iciencias en cuan o al endimien o de la placa p incipal de p uebas, lo cual mo i ó la conclusión de que las capacidades del ha dwa e empleado esul aban insu icien es pa a demos a el de e minismo del sis ema. En la igu a 1.5 se puede ap ecia la pan alla shell en la que queda on e lejados los esul ados. A la is a de las ci as ob enidas, se p opusie on una se ie de disposi i os que eunían los equisi os 4Capí ulo 1. In oducción Figu a 1.5 Resul ados de la encia. su icien es como pa a se i de base a la ins alación, lle ando a la conclusión de que e a posible mejo a las con un equipo basado en ha dwa e ac ualizado y con mayo es p es aciones. Con odo ello, el p incipal obje o del p oyec o queda ma cado po el desa ollo de un sis ema de con ol elec ónico de e minis a que uncione a una ecuencia conjun a de adquisición de da os y p ocesamien o de la señal que se ha demos ado su icien e pa a el con ol del ehículo. Es a ecuencia queda ijada en 50 Hz ( iempo o al de 20 ms en e p ocesamien os sucesi os). O o de los campos que queda on ue a del alcance de [ 1 ] ue el es udio de la comunicación a a és de bus CAN que exis e en el ehículo, la cual juega un papel undamen al pa a consegui el desempeño deseado. 1.3 Obje i os del TFM Una ez se ha pues o en con ex o el a ance ealizado en el p oyec o de mode nización de la ECU, los obje i os conc e os ma cados pa a es e T abajo Fin de Más e son en onces los siguien es: • En p ime luga , la ins alación de un SO con capacidades en iempo eal pa a es e nue o disposi i o, comp obando su desempeño de mane a simila a la lle ada a cabo en [ 1 , Sección 6.6], que se a a á en el capí ulo 2. • Como se ha comen ado, y pues o que el sis ema se comunica con los elemen os de con ol del ehículo a a és de bus CAN (Con olle A ea Ne wo k), el segundo obje i o consis e en añadi es a capacidad de comunicación median e un módulo PC/104 ex e no (Capí ulo 4) y comp oba que el sis ema de comunicaciones esul an e demues a las p es aciones su icien es pa a la aplicación de con ol que se es á conside ando. • Po úl imo se p opone la implemen ación de un p og ama de p ueba que se ejecu e en iempo eal y que, en caso de demos a que su uncionamien o esul e de e minis a y es ic o en cuan o a iempos de ejecución, pueda se i de base pa a la mig ación de los p og amas QNX de los con olado es del ehículo FOX, y con ello cons i ui el bloque undamen al de su Unidad de Con ol Elec ónico. De es a mane a comienza el es udio con la desc ipción del nue o equipo. 2 Recepción del nue o equipo Basándose en las conclusiones expues as en el T abajo de Fin de G ado Es udio p elimina de una nue a unidad de con ol del mo o pa a el ehículo FOX, el Fuel Cell Con ol Lab de la Uni e sidad de Se illa [ 1 ] adquie e el siguien e equipo: •Compu ado emba cado con ac o de o ma PC/104 modelo PCM-3365 de la emp esa Ad an ech •Módulo PC/104 de alimen ación modelo PCM-3910 •Ta je a SATA con 64 Gb de capacidad T anscend MSA370 Se dispone del siguien e ma e ial en el labo a o io: •Fuen e ATX de 350W •Ven ilado de 12V •Moni o •USB de 64Gb •Teclado USB Además, el labo a o io cuen a con el ma e ial elec ónico necesa io pa a algunas de las p uebas que se ealiza án en capí ulos sucesi os. 2.1 PCM-3365 Se a a de un Single Boa d Compu e desa ollado po la emp esa Ad an ech y lanzado al me cado a mediados del año 2016. Es e elemen o cons i uye el e dade o co azón de la unidad de con ol elec ónico del FOX; su misión p incipal consis e en ecibi in o mación ela i a al es ado de los senso es epa idos po el ehículo, p ocesa la y en ia la co espondien e señal de con ol a los mo o es pa a consegui el compo amien o espe ado del mismo. En e o as ca ac e ís icas que se pueden encon a en el da ashee [3], des acan: Tabla 2.1 Ca ac e ís icas de la a je a PCM3365. P ocesado In el Cele on N2930 con elocidad de 1.83 GHz y cua o núcleos Memo ia RAM 8 GB DDR3L Conexión E he ne RS-232/422/485 desde el conec o COM 1, 2 RS-232 desde los conec o es COM2/3. USB 6 pue os ( e sión 2.0) Pue os de expansión Mini PCIe 1 x (Full-size), expansión PC/104 y PCI-104. Fuen e de alimen ación AT/ATX y sopo e pa a alimen ación con módulo PC/104. Tensión de alimen ación 5V±5% A pa i de es os da os, jun o con los co espondien es al modelo de SBC ac ualmen e implan ado en la ECU [ 1 , Sección 2.2.2], es posible p edeci en líneas gene ales que el sis ema esul an e p esen a á unas ca ac e ís icas que supe a án a las en egadas po el p ime o. 5 6Capí ulo 2. Recepción del nue o equipo Figu a 2.1 SBC PCM-3365. Figu a 2.2 Fuen e PCM-3910. 2.2 PCM-3910 Pa a p opo ciona la alimen ación necesa ia en el ehículo se dispuso asimismo de un módulo con ac o de o ma PC/104, modelo PCM-3910 ambién de Ad an ech, que consis e en un con e ido DC/DC con las siguien es ca ac e ís icas ( éase [4]): Tabla 2.2 Ca ac e ís icas de la a je a PCM3910. Po encia nominal 50 W Rango de ensión de alimen ación 10 a 24 VDC ±5% P o ección Pola idad in e sa. 5 VDC @ 10A 12 VDC @ 2A -5 VDC @ 0.4A Salidas -12 VDC @ 0.4A Los da os ela i os a los consumos de po encia eléc ica ecogidos en la abla 2.2 son de u ilidad pa a los cálculos p esen ados en el apéndice A, donde se p ueba el uncionamien o de es e elemen o. En cuan o a los conec o es disponibles, con iene no a que dispone de una o nille a de en ada e ique ada como CN1 (inpu ) y de pue os de expansión PCI/104 e ISA. La conexión a a és de cualquie a de ellos p opo ciona a la PCM-3365 los ol ajes necesa ios pa a su uncionamien o (+5 VDC, +12 VDC y +5 VSB). 2.3 Mon ajes expe imen ales p opues os 7 2.3 Mon ajes expe imen ales p opues os En es e pun o con iene desc ibi los dos mon ajes expe imen ales que se p e enden lle a a cabo. El p ime o de ellos consis e en un banco de desa ollo con el obje o de la pues a a pun o del equipo, en el que la alimen ación del mismo se ealiza a a és de una uen e ATX con encional, y cuya in e az g á ica de usua io consis e en una pan alla de o denado . En el segundo se cambia el módulo de alimen ación pa a adecua lo a las ba e ías del ehículo, y la in e az g á ica es la pan alla in eg ada del HMI (Human Machine In e ace). Los diag amas de bloques de ambos se ecogen en la igu a 2.3 (a) Mon aje expe imen al . (b) Ins alación en el ehículo . Figu a 2.3 Bloques uncionales. En el caso del mon aje en el ehículo, al y como se discu ió en [ 1 ], es necesa io con e i las señales analógicas p oceden es de los pedales y mo o es en señales digi ales que se án ansmi idas a la ECU ía bus CAN como en ada pa a los con olado es; de mane a in e sa, la salida de con ol en o ma o digi al se á con e ida a analógica y alimen ada a los mo o es. La con e sión analógica/digi al y ice e sa se ealiza median e los mismos módulos PC/104 de los que dispone ac ualmen e el ehículo: Ad an ech PCM-3718HO pa a las en adas analógicas y E/S digi ales y Ruby MM-1612 pa a las salidas analógicas. 8Capí ulo 2. Recepción del nue o equipo (a) Espaciado es incluidos . (b) Ins alados en el equipo . Figu a 2.4 Mon aje de los espaciado es hexagonales. 2.4 Ha dwa e Una ez ecogidas las p incipales ca ac e ís icas del nue o ma e ial adqui ido, se p ocedió a implan a al nue o equipo pa a ene un sis ema base sob e el que abaja . El obje o de es a sección es documen a el p oceso lle ado a cabo en es e sen ido. En p ime luga se ins ala on los espaciado es hexagonales que se p opo cionan con la placa PCM-3365 ( igu a 2.4) con el obje o de sepa a la de la mesa de abajo a o eciendo así la en ilación de la misma y e i ando cualquie co oci cui o acciden al con el espacio de abajo. La a je a SATA se mon ó en la anu a si uada en la pa e in e io del equipo, asegu ándola median e el o nillo incluido al e ec o. En la igu a 2.5 puede ap ecia se con de alle el emplazamien o de los p incipales componen es de la pa e in e io de la placa. A con inuación, y haciendo uso de los manuales del PCM-3365 que se incluyen con el mismo, se iden i i- ca on odos los conec o es, éase la igu a 2.6. Pa a el mon aje del banco de p uebas se decidió no u iliza el módulo PCM-3910, empleando en su luga una uen e ATX. Según el manual la alimen ación p incipal del sis ema se hace median e el conec o 2.4 Ha dwa e 9 Figu a 2.5 Vis a in e io de la placa donde se pueden ap ecia las anu as pa a la a je a SATA y pa a el módulo de memo ia RAM. (a) Vis a supe io . (b) Vis a in e io . Figu a 2.6 Conec o es [3]. CN1. Además es necesa ia la conexión de CN2 (ATX powe in) usando el cable de alimen ación ATX que iene incluido. En e ec o, la consul a del manual ( igu a 2.7) indica que los pines de es e conec o son los esponsables de manda la señal de ac i ación a la uen e. Asimismo se conec ó un eclado USB, pa a lo cual se inse ó el adap ado co espondien e en cualquie a de los conec o es CN13, CN16 y CN17. Po úl imo se conec ó la pan alla en CN7 (conec o VGA) ( igu a 2.8). 10 Capí ulo 2. Recepción del nue o equipo (a) In o mación sob e CN2 del manual [3]. (b) Cable pa a ATX . Figu a 2.7 Conexión de la uen e ATX. (a) Cable adap ado USB . (b) Cable adap ado VGA . Figu a 2.8 Conexiones es an es . 3 Ins alación y pa cheado del sis ema ope a i o basado en Linux Como se es udió de alladamen e en [ 1 , Sección 5], un sis ema ope a i o en iempo eal es aquel que ga an iza la ejecución de los dis in as ope aciones que ealice den o de unos má genes de iempo lo más de e minis as posible, aduciéndose odo ello en una ejecución iable y p edecible. A modo de eco da o io, un sis ema ope a i o en iempo eal se puede clasi ica según el g ado en el que se asegu en es os iempos des inados a la ejecución de ope aciones c í icas: se habla de un sis ema ope a i o de iempo eal es ic o cuando se conocen con exac i ud, y de ipo so o no es ic o cuando impo a más la con inuidad de la ejecución de las ope aciones que el iempo que és as disponen pa a hace lo. En es e sen ido, un sis ema ope a i o como Linux puede conside a se que no dispone de capacidades en iempo eal es ic o. No obs an e, exis en algunas écnicas de bajo ni el que pe mi en ges iona las in e upciones del sis ema ope a i o al ni el de su núcleo, pe mi iendo clasi ica el esul an e como de iempo eal es ic o. En [ 1 ] se decidió emplea el conocido como pa che RT Linux. En e o as muchas uncionalidades des ina- das a ga an iza el compo amien o deseado des aca la inclusión de dos nue os schedule s o p og amado es de a eas en iempo eal: FIFO (Fi s In Fi s Ou ) y Round Robin, que son la base pa a la p og amación de hilos POSIX, como se es udia á más adelan e. Habiendo in oducido el con ex o de los sis ema, la p ime a a ea en cuan o a so wa e consis ió en ins ala el sis ema ope a i o y aplica la e sión del pa che que añade uncionalidades de iempo eal es ic o al mismo. Tal y como se es udió en [ 1 , Sección 5.22], se op ó po basa la ECU en un SO Linux en su dis ibución Slackwa e. Se ealizó una búsqueda en la página ke nel.o g pa a conoce el úl imo lanzamien o del pa che RT que coincide con la e sión de su ke nel , que esul a se la 3.10.17 en el momen o en que se esc ibe es e abajo. Es o es inge la e sión más ac ualizada de slackwa e que es posible ins ala en el sis ema a la 14.1, lanzada en 2013 si se quie e emplea es e ipo de mé odo pa a ob ene un sis ema con capacidades RT. Figu a 3.1 Logo ipo de Slackwa e. De es a o ma, a modo de esumen, se deben desca ga los siguien es a chi os: •Disco de ins alación de Slackwa e 14.1 •Código uen e del Ke nel 3.10.17 •Pa che de iempo eal pa a dicha e sión •P og amas de p ueba RT es s 11 18 Capí ulo 3. Ins alación y pa cheado del sis ema ope a i o basado en Linux Código 3.7 lilo.con . ... image = /boo / mlinuz-cus om-3.10.17 #Nue o bloque pa a inclui la imagen del # ke nel pa cheado oo = /de /sda2 # Linux- label = Real ime ead-only # Linux boo able pa i ion con ig ends Pa a aplica los cambios se esc ibe lilo en el e minal. La opción que se acaba de in oduci apa ece ma cada con un as e isco si el p oceso se ha ealizado sa is ac o iamen e. La úl ima comp obación pa a sabe si se ha compilado co ec amen e el ke nel es ejecu a el comando uname una ez se a anque el sis ema equipado con el mismo. Código 3.8 Comp obación. oo @da ks a :~ # uname - 3.10.17- 12- eal ime 3.4 P uebas de endimien o Po úl imo se ealiza án los mismos es s de endimien o empleados pa a ca ac e iza el sis ema que los empleados en [1, Sección 6.6]. El p ime o de ellos es cyclic es , que se enca ga de medi los iempos de la encia c eando p ocesos y midiendo el iempo en e in e upciones, y que supone el p incipal ins umen o pa a conoce el de e minismo del sis ema. Asimismo, pa a p o ee un en o no de ca ga exigen e se empleó el p og ama hackbench, que se ejecu a en pa alelo a la ejecución del código de con ol y la medición de la encias. Su uncionamien o es simple pe o e ec i o; en ía un núme o de paque es en o ma de hilos a a és del p ocesado (o p ocesado es en el caso de a a se de un sis ema de a ios núcleos), de un amaño de e minado, siendo ambos pa áme os in oducidos po el usua io. Un mayo amaño se aduce en una ca ga más g ande, que jun o con el núme o de paque es de e mina el iempo du an e el cual el sis ema pe manece á ca gado. 3.4.1 Paque e - es s-1.3 Se a a de la e sión más ecien e que incluye odas las he amien as necesa ias pa a pone a p ueba el sis ema. Se pueden consegui en h ps:// www.ke nel.o g/ pub/ linux/ u ils/ - es s/ . Pa a la compilación es necesa io dispone de las lib e ías NUMA (Non Uni o m Memo y Acess) y algunos paque es de desa ollado , que se desca gan de www.gnu.o g/ so wa e/ . A con inuación se acili a una lis a de odas los paque es y e siones que se han u ilizado: •numac l 2.0.12 •Au ocon 2.69 •Au omake 1.16 •lib ool 2.4 •m4 1.4 Todas las ins ucciones que hacen e e encia a cada paque e se encuen an ecogidas en el a chi o INSTALL co espondien e. Nó ese que las e siones empleadas son dis in as que en [1, Sección 6.6.1]. 3.4 P uebas de endimien o 19 Figu a 3.11 His og ama de la encias de los núcleos. 3.4.2 Pe il de ca ga Los pa áme os y ca ac e ís icas del ensayo con hackbench ycyclic es son los siguien es: •P io idad de ejecución del hilo de 99% •Tiempo del ensayo ap oximadamen e de 24h •Un hilo po CPU •Tiempo en e hilos de 1000µs A di e encia de [ 1 ], en el p esen e abajo no e a posible dispone ácilmen e de a ias e minales median e las que ejecu a al mismo iempo hackbench ycyclic es . La mane a de soluciona lo es ejecu a el p ime o con los pa áme os an e io es y en ia lo al segundo plano. Es o se ealiza con la combinación de eclas CTRL+Z pa a de ene el p oceso y a con inuación esc ibiendo en la e minal bg pa a pone lo en segundo plano, dejando la e minal lib e pa a pode ejecu a cualquie o o p og ama al mismo iempo. Pa a ecupe a lo desde es e es ado bas a con esc ibi g. Código 3.9 Ejecución de las p uebas. oo @ linux:~ # cd /us /s c/TFM/ - es s-1.3 oo @ linux:/us /s c/TFM/ - es s-1.3 # hackbench -s1000 -l1000000 #P esionamos CTRL+Z as ejecu a es a línea. oo @ linux:/us /s c/TFM/ - es s-1.3 # bg #Se manda al backg ound oo @ linux:/us /s c/TFM/ - es s-1.3 # cyclic es - -p99 -i1000 3.4.3 Resul ados de las p uebas A con inuación, en la igu a 3.11, se p esen a la dis ibución de la encias conseguida con las condiciones de p ueba desc i as en las an e io es secciones. Pa a ob ene el g á ico se le indicó a cyclic es que esc ibie a un iche o de ex o con odos los da os y és os se p ocesa on con un sc ip de MATLAB, que puede encon a se en el anexo B. El g á ico an e io pe mi e e una endencia cla a de la encias al ededo de los 10µs . Es e esul ado es unas diez eces mejo que el ob enido con el equipo o iginal con el que se ealiza on las p ime as p uebas de ca ac e ización de un sis ema en iempo eal (del o den de 500 µs , [ 1 , Sección 6.6.3]), poniendo de mani ies o 20 Capí ulo 3. Ins alación y pa cheado del sis ema ope a i o basado en Linux Figu a 3.12 Segunda p ueba de endimien o. la ele ancia del uso de un ha dwa e yso wa e ac ualizados y con buenas p es aciones en la cons uc- ción de un sis ema con capacidades en iempo eal. En cuan o al peo escena io, en es a p ime a p ueba se ob u ie on 34 µs , ambién muy po debajo de la ci a de 1048 µs ob enida con el p ime mon aje expe imen al. Pa a alida es os da os se ealizó una segunda p ueba con los mismos pa áme os de ca ga que en la abla 3.4.2, pe o limi ando la la encia máxima ep esen ada en el his og ama a 60 µs . Los esul ados se ecogen en la igu a 3.12. Al igual que en el an e io caso, las la encias es án dis ibuidas al ededo de 10 µs , y la más des a o able se man iene en el o den, aumen ando lige amen e has a 48 µs Un compo amien o que se puede obse a que el núcleo núme o 4 p esen a un peo endimien o que el es o, pues o que el núme o de bucles con la encias mayo es es supe io al del es o. Es os esul ados esul an más que sa is ac o ios pa a implemen a una unidad de con ol elec ónico que p esen e una ecuencia de mues eo ípica de 50 Hz (2ms en e mues eos consecu i os), dejando un ma gen muy amplio pa a el p ocesado de la señal de con ol. Median e es as p uebas queda demos ada la idoneidad del sis ema adqui ido pa a se i como unidad de con ol elec ónico pa a el ehículo FOX y pa a p esen a el compo amien o de e minis a necesa io pa a asegu a un ni el de segu idad su icien e pa a su co ec o uncionamien o, a al a de alida expe imen almen e es as a i maciones. Es os aspec os se es udian en las pos e io es secciones. 4 Con olle A ea Ne wo k (CAN) El siguien e componen e de la unidad de con ol elec ónico a es udia es el bus da os CAN (Con olle A ea Ne wo k). És e se emplea pa a hace posible la comunicación en e la ECU y o os disposi i os que p opo cionan el con ol au omá ico del ehículo, como el supe iso . La mane a de implemen a lo en el sis ema que se ha conside ado has a aho a, o mado po la a je a p incipal PCM-3365, es median e una placa con olado a adicional compa ible. La opción come cial elegida es el módulo con ac o de o ma PC/104 PCM-3680I de Ad an ech, que se á es udiada en la sección 4.2. La e i icación del co ec o uncionamien o de es e sis ema de comunicación en la ECU sugi ió a ias ideas y si uaciones. Se plan eó la posibilidad de es ablece una conexión a a és de bus CAN en e la ECU y una a je a mic ocon olado a ex e na, la Mbed LPC1768 de ARM, es udiada en la sección 4.3, como una mane a iable de con i ma que la comunicación se p oduce co ec amen e en e a ias capas ísicas independien es. Las si uaciones conside adas po an o incluyen la conexión en ambos sen idos de los dos disposi i os conside ados y en e sus canales disponibles, en la que se in e cambian los papeles de ansmiso y ecep o . Los disposi i os disponibles pa a es a ase ue on: •Ta je a CAN PC/104 de Ad an ech, modelo PCM-3680I •Mic ocon olado Mbed de ARM, modelo LPC 1768 Los conocimien os necesa ios p e ios a la desc ipción más de allada de los disposi i os y sus mé odos de in e conexión a a és de bus CAN son esencialmen e los elacionados con la capa ísica del p o ocolo, que se desc ibe a con inuación en la sección 4.1. 4.1 Nociones sob e la capa ísica del p o ocolo CAN La capa ísica CAN es aquella que en la ep esen ación del modelo OSI (Open Sys em In e conec ion) se encuen a en el ni el más bajo del p o ocolo ( éase la igu a 4.1). Algunas de sus ca ac e ís icas se encuen an ecogidas en el es ánda ISO 11898 jun o a la capa de da os. Más conc e amen e, el ISO-11898-2 especi ica las subcapas PMA (Physical Medium A achemen )y MDI (Medium Dependen In e ace) de la capa ísica. Los aspec os elacionados con la señalización ísica (PS, Physical Signaling) se encuen an de inidos po la especi icación CAN. El diseñado del sis ema de comunicaciones puede elegi cualquie ansmiso / ecep o y medio de anspo e de la in o mación mien as que se cumplan los equisi os de PS. En es e con ex o, la O ganización In e nacional de Es anda ización (ISO) ha de inido un es ánda que incluye la especi icación CAN jun o con la de la capa ísica (ISO 11898). És e ue o iginalmen e c eado pa a las in e comunicaciones de al a elocidad pa a ehículos a a és de CAN. En la igu a 4.2 se ep esen a un con olado CAN comple o de inido po la especi icación deha dwa e. 4.1.1 MCP2551 El MCP2551 es un ci cui o in eg ado en un paque e Dual-In-line Package (DIP) de 8 pines que implemen a un anscep o CAN de mane a compac a. El da ashee de es e componen e esul a ácil de encon a online, y es necesa io pa a conoce el pinou a la ho a de inclui lo en un ci cui o. La mane a de econoce los pines 21 22 Capí ulo 4. Con olle A ea Ne wo k (CAN) Figu a 4.1 Modelo OSI del p o ocolo CAN [8]. Figu a 4.2 Modelo de ha dwa e CAN. Figu a 4.3 pinou del MCP2551. 4.1 Nociones sob e la capa ísica del p o ocolo CAN 23 Tabla 4.1 Tabla de pinou . Pin E ique a Desc ipción 1 TXD En ada de ansmisión de da os 2Vss Tie a 3VDD Tensión de alimen ación 4 RXD Salida de ecepción de da os 5RsEn ada de con ol de pendien e 6 CANH E/S de ni el al o CAN 7 CANL E/S de ni el bajo CAN 8VREF Salida de e e encia de ol aje Figu a 4.4 Ni eles lógicos CAN. sob e el paque e ísico es no a la ma ca de e e encia en la pa e supe io del mismo. El p ime pin a la izquie da de ella ecibe el núme o 1, y los consecuen es pines se suceden en o den ascenden e en sen ido an iho a io, al y como se mues a en la igu a 4.3 En la abla 4.1 se encuen a la desc ipción de cada uno de los pines del MCP2551. Las ca ac e ís icas p incipales lis adas en el da ashee co espondien e [9] se p esen an a con inuación. •Sopo a elocidades de has a 1Mbps. • Cumple con los eque imien os de la no ma i a ISO-11898 ela i os a la capa ísica del p o ocolo CAN •Válido pa a sis emas de 12V y 24V. •Pendien e con olada de mane a ex e na pa a educi in e e encias elec omagné icas (EMI). •De ección de al a de ie a- 4.1.2 Ni eles lógicos Los ni eles lógicos se di iden en ecesi o y dominan e. El es ánda ISO-11898 de ine un ol aje di e encial pa a ep esen a es os es ados, al y como se mues a en la igu a 4.4 En el es ado ecesi o (1 lógico en la en ada TXD del MCP2551) el ol aje di e encial en e CANH y CANL es meno que el umb al mínimo (<0.5V en la en ada del ecep o o <1.5V en la salida del ansmiso , al y como se ap ecia en la igu a 4.5); en el es ado dominan e (0 lógico) el ol aje di e encial en CANH y CANL es mayo que el umb al mínimo. Un bi dominan e sob eesc ibe a un bi ecesi o en el bus pa a consegui un a bi aje no des uc i o median e bi s. Como puede obse a se en la an e io igu a, cuando el ol aje di e encial de la salida se encuen a en e 1.5V y 3V se conside a un ni el lógico dominan e, mien as que el es ado se á ecesi o cuando se encuen e en e -0.5V y 0.05V. Del mismo modo, en el caso de la en ada se ap ecia que el ango se ex iende desde los 0.9V a los 5V pa a el 1 lógico y en e los -1V y 0.5V pa a el 0 lógico. 24 Capí ulo 4. Con olle A ea Ne wo k (CAN) Figu a 4.5 Umb ales pa a el ol aje di e encial de ansmiso y ecep o en es ados ecesi o y dominan e. Tabla 4.2 Ca ac e ís icas de la a je a PCM-3680I . Velocidad de ansmisión Has a 1 Mbps F ecuencia del con olado 16 MHz P o ección Aislamien o óp ico Leds indicado es Uno po pue o Tempe a u a Amplio ango de ope ación Sis emas ope a i os sopo ados WinXP/Vis a/7 y Linux (32 y 64 bi s) WinCE 5.0/6.0 4.1.3 Conec o es Aunque el es ánda ISO-11898-2 no especi ica qué ipo de conec o es han de emplea se, sí se indica que aquellos que se empleen deben cumpli con los equisi os eléc icos de la especi icación. Asimismo, se equie en esis encias de e minación de un alo nominal de 120Ω en cada ex emo del bus con el obje o de e i a " ebo es" de la señal como consecuencia de un desajus e de impedancias. 4.2 PCM-3680I Es e módulo es el enca gado de añadi ísicamen e la capacidad de comunicación median e bus CAN al sis ema. Se a a de una a je a con ac o de o ma PC/104 con dos canales de bus de da os CAN independien es. Sus p incipales ca ac e ís icas son las e lejadas en la abla 4.2 [10]. Asimismo, es e módulo dispone de un pue o PCI/104 pa a conec a a la compu ado a PCM-3365. 4.2.1 Ins alación de d i e s Con el obje o de ges iona la ed de comunicación es necesa io ins ala los con olado es o d i e s del dispo- si i o PCM-3680I. Jun o a la misma se incluye un disco de ins alación, pe o as consul a su documen ación se llegó a la conclusión de que los d i e s solo son álidos pa a e siones del ke nel 2.6.x.x. Po an o, ue necesa io acudi al si io web de Ad an ech pa a encon a los con olado es más ecien es. Respec o a las e siones sopo adas, se encon ó la in o mación ecogida en la abla de la igu a 4.7; como es posible obse a , las p uebas ealizadas po los desa ollado es de es os con olado es emplea on e siones del Ke nel simila es a la que se implemen ó en el an e io capí ulo ( ecué dese que e a la 3.10.17). Además, en el apa ado e- la i o a sopo e se indica que son álidos pa a e siones 2.6.33 y pos e io es, lo cual concue da con la ins alada. 4.2 PCM-3680I 25 Figu a 4.6 Módulo CAN PCM-3680. Figu a 4.7 Sopo e de las e siones del Ke nel. En h ps:// www.ad an ech.com/ p oduc s se encuen a el eposi o io con los d i e s más ecien es. Los a chi os de los que es necesa io dispone son un a chi o comp imido CAN ca ds (PCI-1680_MIC-3680_PCM- 3680I)_ad Socke CAN_V1.0.0.0. a .gz y el documen o de ex o con la in o mación ela i a a la ins alación. Cabe comen a que pa a acili a el manejo del a chi o en el sis ema de a chi os de Linux es posible au ocomple a el nomb e del mismo esc ibiendo los p ime os ca ac e es y pulsando la ecla TAB. Código 4.1 Ex acción de d i e s. oo @ linux:~ # cd /us /s c/TFM oo @ linux:/us /s c/TFM # a -zx CAN ca ds (PCI-1680 _MIC-3680 _ ex i {PCM -3680I}) _ad Socke CAN _V1.0.0.0. a .gz oo @ linux:/us /s c/TFM # cd ad Socke CAN_V1.0.0.0/ ex i {d i e s} oo @ linux:/us /s c/TFM # make #Se compila án los a chi os ad socke can.ko y ad can_sja1000.ko oo @ linux:/us /s c/TFM # make ins all #Con es e comando se ins alan los ex i {d i e s} El siguien e aspec o a conside a ue que es os d i e s se ca ga an au omá icamen e du an e el a anque del equipo. Pa a ello es necesa io modi ica el iche o enca gado de hace lo, es o es, c.modules-3.10.17-smp del di ec o io /e c/ c.d empleando cualquie edi o de ex o de Linux. Pa a más in o mación sob e el uso de im (Vi IMp o ed) se ecomienda la consul a de [ 1 ]. Sin emba go, la e sión 14.1 de Slackwa e incluye nano, que posee más uncionalidades, po lo que se emplea á a lo la go de odo el p esen e p oyec o. 26 Capí ulo 4. Con olle A ea Ne wo k (CAN) Figu a 4.8 Ca ga de d i e s. Código 4.2 Ca ga au omá ica de d i e s. oo @ linux:~ # cd /e c/ c.d oo @ linux:/e c/ c.d # nano c.modules-3.10.17-smp Los nomb es de los módulos adicionales a ca ga se encuen an desc i os en el a chi o de ex o que se p opo ciona con los d i e s. El aspec o del iche o as la modi icación debe ía se el que apa ece en la igu a 4.8 ( éngase en cuen a que sólo se mues a el agmen o modi icado). Pa a u u as e e encias se ansc ibe el con enido del iche o conside ado en el código 4.3, que como puede obse a se en la igu a 4.8 se decidió inse a jus o al p incipio de odos los módulos ya incluidos: Código 4.3 Inclusión de d i e s CAN. ### Can d i e : # ex i {d i e s} de la a je a CAN de ADVANTECH /sbin/modp obe lp /sbin/modp obe can /sbin/modp obe can_de /sbin/modp obe can_ aw /sbin/modp obe ad can_sja1000 /sbin/modp obe ad socke can No hay que ol ida einicia el equipo as la modi icación de es os a chi os pa a que los sc ip s se ejecu en. La p ime a mane a de comp oba que la ope ación ha sido lle ada a cabo con éxi o es que du an e la ca ga del sis ema ope a i o apa ece á momen áneamen e un g á ico compues o po ca ac e es ASCII en el que se da la bien enida a los d i e s de la a je a CAN y se comp ueban ambos canales disponibles. La segunda consis e en ejecu a el comando ip link lis en el e minal. Es a o den ( ip ) jun o con el su ijo ( link ) mues a las in e aces de la capa de enlace de da os del sis ema, es o es, aquella que ecibe las pe iciones de la capa de ed y hace uso de los se icios de la capa ísica po donde se ansmi e la in o mación. Con los nue os d i e s incluidos deben apa ece dos nue as in e aces, can0 y can1 , co espondien es a los dos canales CAN de los que se dispone. Además, po de ec o es as in e aces es a án desac i adas. Todos es os aspec os 4.2 PCM-3680I 27 Figu a 4.9 Lis a de enlaces de da os. Figu a 4.10 CAN ac i ado. apa ecen en el e minal al y como se indica en la igu a 4.9, donde se puede comp oba el es ado DOWN en la línea de cada in e az CAN. Es e es el es ado en el que ambos enlaces se encon a ían cada ez que se a anque el sis ema. Con el obje o de e i a es o se ealizó un sc ip que se ejecu a en el a anque y que los ac i a con los pa áme os ecomendados en la documen ación de los d i e s. La mane a de lle a a cabo es o es añadi las siguien es líneas al a chi o c.local: Código 4.4 Modi icación en el iche o c.local. ip link se can0 up ype can bi a e 125000 ip link se can1 up ype can bi a e 125000 Con ello lo que se es á haciendo es ac i a cada una de las in e aces (can0 y can1) y asignándoles una elocidad de 125000 bi s po segundo. Ejecu ando de nue o ip link lis se ob iene po pan alla el con enido de la igu a 4.10. Con es o inaliza el p oceso de ins alación de los d i e s de la a je a PCM-3680I. Una de las o mas más sencillas posibles de comp oba la in e az CAN consis e en in e comunica los dos canales disponibles. 4.2.2 Comunicación en e canales El á bol o ee de di ec o ios del código uen e de los d i e s con iene una ca pe a de ejemplos (ad Socke - CAN_V1.0.0.0/examples) donde se encuen a un iche o median e el que es posible p oba el desempeño de las comunicaciones CAN de la a je a PCM-3680I. En el apa ado 5 de la documen ación incluida con los d i e s, éase [ 11 ], se encuen a la línea de comandos necesa ia pa a compila los sc ip s de lec u a y esc i u a de mensajes en el bus, que simplemen e consis e en emplea el comando make en el di ec o io ad Socke CAN_V1.0.0.0/examples. 34 Capí ulo 4. Con olle A ea Ne wo k (CAN) (a) Adminis ado de disposi i os . (b) Ven ana p incipal de Pu y . Figu a 4.18 Visualización a a és de e minal. Código 4.7 P og ama de p ueba. 1 #include "mbed.h" 2 3 in main() { 4 while(1) { 5 p in ("hola mundo"); 6 b eak; 7 } 8 } Si se compila el p og ama al y como se explicó en la sección 4.3, se copia el a chi o .bin en la ca pe a del disposi i o, se ab e un e minal en Pu y y se pulsa el bo ón ese de la placa, el e minal debe e leja la ase "hola mundo", como se puede ap ecia en la igu a 4.19. Un p ime p oblema que se obse ó en el e minal de Pu y ue la inco ec a alineación de las sucesi as líneas de salida del p og ama. Es o se puede a egla en la pes aña de opciones Te minal, al y como se mues a en la igu a 4.20a Pa a acili a el abajo, es posible almacena odas las opciones que se han ido in oduciendo (nom e del 4.3 Mbed LPC1768 35 Figu a 4.19 Mensaje de p ueba en el e minal. (a) "Fix" del e minal. (b) Gua da sesión . Figu a 4.20 Mejo as de Pu y. pue o se ie y opción pa a alinea e minal) en un pe il que se puede ca ga au omá icamen e al inicio de Pu y (obsé ese la igu a 4.20b) De es a mane a se pod á ene una isión inmedia a sob e la salida de la ansmisión y la ecepción de la LPC-1768 a a és de la pan alla del PC del labo a o io, aspec o cla e pa a la e aluación de la alidez de la p ueba. A con inuación se analiza el código de ejemplo de in e comunicación de los canales p opues o en [13]. Código 4.8 P og ama de p ueba pa a comunicación CAN. 1 #include "mbed.h" 2 3 Ticke icke ; 4 Digi alOu led1(LED1); 5 Digi alOu led2(LED2); 6 CAN can1(p9, p10); 7 CAN can2(p30, p29); 8 cha coun e = 0; 9 10 oid send() { 11 p in ("send() n"); 12 i (can1.w i e(CANMessage(1337, &coun e , 1))) { 13 p in ("wloop() n"); 14 coun e ++; 15 p in ("Message sen : %d n", coun e ); 36 Capí ulo 4. Con olle A ea Ne wo k (CAN) Figu a 4.21 Salida del p og ama de in e comunicación del LPC-1768. 16 } 17 led1 = !led1; 18 } 19 20 in main() { 21 p in ("main() n"); 22 icke .a ach(&send, 1); 23 CANMessage msg; 24 while(1) { 25 p in ("loop() n"); 26 i (can2. ead(msg)) { 27 p in ("Message ecei ed: %d n", msg.da a[0]); 28 led2 = !led2; 29 } 30 wai (0.2); 31 } 32 } En p ime luga se de ine un Ticke , que consis e en una in e az pa a es ablece una in e upción ecu en e que llame a una unción con una de e minada ecuencia. A con inuación se asignan las salidas que se emplean en la p ueba; dos leds indicado es y las dos in e aces CAN. Asimismo se asigna el alo 0 a un con ado necesa io pa a la unción send(). És a imp ime po pan alla una línea cada ez que se ejecu a, y si se en ía co ec amen e el mensaje CAN (con las siguien es ca ac e ís icas: iden i icado 1337, di ección señalada po la a iable coun e como con enido y longi ud de 1 bi )al bus median e la unción CANMessage el con ado se inc emen a y no i ica el éxi o de al ope ación, cambiado de es ado el led 1. Pa a la unción p incipal se especi ica que el Ticke p oduzca una in e upción pa a manda un mensaje cada segundo, pa a c ea después o o en blanco que se á en el que se almacenen los sucesi os en iados po send(). Po úl imo y de mane a cíclica, si se iene éxi o leyendo con can2. ead, se no i ica y se cambia de es ado el segundo led, p oduciéndose en onces una espe a de 0.2s. Con ello debe ap ecia se un pa padeo sucesi o de los dos leds indicado es; el del canal 1 pa a la esc i u a y el del 2 pa a lec u a. Es o se comp obó sin p oblemas, lo cual indica el co ec o uncionamien o de la p ueba y ga an iza que se es capaz de lee y esc ibi en el bus de da os median e la LPC-1768. Además, haciendo uso de la comunicación pue o se ie, se pudo comp oba la co ec a ejecución del p og ama, al y como se mues a en la igu a 4.21 4.4 Comunicación en e disposi i os 37 Figu a 4.22 Diag ama de conexión en e placas. Figu a 4.23 Pinou del conec o DB9. 4.4 Comunicación en e disposi i os Una ez p obado cada uno po sepa ado, se p ocedió a conec a los en e ellos pa a comp oba las capacidades conjun as del bus CAN y el sis ema ope a i o en iempo eal implemen ado pa a la ECU. El esquema de conexión se mues a en la igu a 4.22 Con iene hace e e encia al pinou del conec o DB9 que comunica ambos disposi i os. En [ 10 ] se de allan las asignaciones de cada uno de ellos, que pa a una e e encia ápida se encuen an en la igu a 4.23. Es impo an e ene en cuen a si la e minación es macho o hemb a pa a ealiza las conexiones co ec amen e. Po o a pa e, no es necesa io conec a un jumpe al e minal de ie a. Nó ese ambién que se ha omi ido del ci cui o uno de los ascep o es MCP-2551, pues o que es e componen e ya se encuen a implemen ado en la placa PCM-3680I. Median e es e esquema de conexión se es á en condiciones pa a comenza con los dos casos que se conside a on. En las siguien es secciones se analiza el bus con la ECU como ecep o (RX), siendo la LPC-1768 el elemen o complemen a io. 4.4.1 P ueba de uncionamien o El p og ama pa a esc ibi en el bus CAN median e la Mbed LPC1768 se ob u o de [ 16 ], y se adjun a a con inuación en el código 4.9: 38 Capí ulo 4. Con olle A ea Ne wo k (CAN) Código 4.9 P og ama pa a esc ibi en el bus CAN. 1 #include "mbed.h" 2 3 Digi alOu led1(LED1); 4 CAN can1(p30, p29); 5 cha coun e = 0; 6 in main() { 7 can1. equency(125000); 8 p in ("send... "); 9 while(1) { 10 i (can1.w i e(CANMessage(1, &coun e , 1))) { 11 p in ("Message sen : %d n", coun e ); 12 coun e ++; 13 led1=!led1; 14 }else{ 15 can1. ese (); 16 } 17 wai (1); 18 } 19 } El uncionamien o del p og ama consis e en u iliza el canal que se es ablece en e los pines 29 y 30 de la Mbed pa a esc ibi un mensaje CAN cada segundo, en el se en ía un con ado en el campo de da os y se imp ime po pan alla an o el con enido del mensaje como el es ado de la comunicación, además de emplea un led como indicado luminoso de cada ansmisión. En la línea 10 se e alúa median e un bucle i el éxi o de la ansmisión, ese eando el bus si no se p oduce. Es de i al impo ancia pa a la comunicación que an o RX y TX se encuen en a la misma ecuencia. En es e caso hay que eco da que, según lo in oducido en el código 4.4, el bus CAN ans ie e los da os a 125000 bi s po segundo. La mane a de selecciona la ecuencia CAN en la LPC1768 es median e la asignación del a ibu o equency al obje o can , línea 7. Si se omi e es e paso la comunicación no se á posible en ningún sen ido, co iéndose el iesgo de bloquea el sis ema ope a i o. En el caso de la Unidad de Con ol Elec ónico, o mada po la PCM-3365 e in eg ada en el bus median e el módulo PCM-3680I, bas a con u iliza el p og ama de ejemplo de lec u a CAN pa a ecibi la in o mación. Las únicas modi icaciones que se in oduje on ue on la eliminación de los ca ac e es "0x" que p eceden a los bi s con enido del mensaje (pues o que el p og ama de esc i u a de ejemplo en ía núme os en o ma o hexadecimal) y de odos los mensajes que imp imen po pan alla el con enido sal o uno, pues o que el mensaje que se p e ende en ia iene una longi ud de un bi . Además, po simplicidad, se omi e la imp esión del DLC o longi ud en bi s del mensaje. El esul ado que se debe isualiza en el shell del PCM-3365 puede deduci se del análisis del código de lec u a de ejemplo, de allado a con inuación con las modi icaciones ealizadas. Código 4.10 P og ama de ejemplo eadCAN. 1 #include <s dio.h> 2 #include <s dlib.h> 3 #include <unis d.h> 4 #include <s ing.h> 5 #include <ne /i .h> 6 #include <sys/ ypes.h> 7 #include <sys/socke .h> 8 #include <sys/ioc l.h> 9 10 #include <linux/can.h> 4.4 Comunicación en e disposi i os 39 11 #include <linux/can/ aw.h> 12 #include <linux/can/e o .h> 13 #include < cn l.h> 14 15 in main(in a gc,cha **a g ) 16 { 17 in s,i; 18 in nby es; 19 s uc sockadd _can add ; 20 s uc can_ ame ame; 21 s uc i eq i ; 22 cha i name = a g [1]; 23 in se lag,ge lag, e =0; 24 i (a gc != 2) 25 { 26 p in ("usage: eadCAN <CAN in e ace> n"); 27 p in ("ex. eadCAN can0 n"); 28 e u n 0; 29 } 30 i ((s = socke (PF_CAN, SOCK_RAW, CAN_RAW)) < 0) { 31 pe o ("E o while opening socke "); 32 e u n -1; 33 } 34 35 s cpy(i .i _name, i name); 36 ioc l(s, SIOCGIFINDEX, &i ); 37 38 39 add .can_ amily = AF_CAN; 40 add .can_i index = i .i _i index; 41 42 i (bind(s, (s uc sockadd *)&add , sizeo (add )) < 0) { 43 pe o ("E o in socke bind"); 44 e u n -2; 45 } 46 47 48 se lag = se lag|O_NONBLOCK; 49 e = cn l(s,F_SETFL,se lag); 50 ge lag = cn l(s,F_GETFL,0); 51 52 can_e _mask_ e _mask = CAN_ERR_TX_TIMEOUT |CAN_ERR_BUSOFF; 53 e = se sockop (s, SOL_CAN_RAW, CAN_RAW_ERR_FILTER, &e _mask, sizeo ( e _mask)); 54 i ( e !=0) 55 p in ("se sockop ail n"); 56 57 p in ("using %s o ead n", i name); 58 59 while(1) 60 { 61 nby es = ead(s, & ame, sizeo ( ame)); 62 i (nby es > 0) 63 { 64 i ( ame.can_id & CAN_ERR_FLAG) 65 p in ("e o ame n"); 66 else 40 Capí ulo 4. Con olle A ea Ne wo k (CAN) (a) Shell de la LPC-1768 .(b) Shell del PCM-3365 . Figu a 4.24 Salidas po pan alla de la p ime a p ueba. 67 { 68 p in (" nID=%d n", ame.can_id); 69 o (i =0;i$<$ ame.can _dlc;i++) 70 { 71 p in ("da a[%d]=%d n",i, ame.da a[i]); 72 } 73 } 74 75 } 76 } 77 78 79 e u n 0; 80 } En la línea 68 se saca po pan alla el iden i icado del mensaje, mien as que en la 71 se imp ime el con enido del mismo. La salida po pan alla a aumen ando de línea con la ecuencia que se ha in oducido en el código de esc i u a del bus en la LPC-1768, al y como se mues a en la igu a 4.24. A con inuación se p ocedió a some e a ca ga al sis ema mien as se ealizaba la comunicación, ejecu ando la he amien a hackbench con los pa áme os que se emplea on en la p ueba del SO (sección 3.4.2). Además, se p esionó el bo ón ese de la LPC-1768 de mane a alea o ia pa a comp oba la obus ez en cuan o a ejecución del p og ama de lec u a en la ECU an e in e upciones imp e is as. Los esul ados ue on idén icos a los expues os en la sección 3.4, lo cual esul a p ome edo en la búsqueda del compo amien o de e minis a del sis ema. Así concluye es e capí ulo, habiéndose acondicionado un sis ema de comunicaciones basado en el es ánda CAN que esul a de aplicación di ec a en el ámbi o del ehículo FOX. En el siguien e capí ulo se emplea á es a ed jun o con los demás disposi i os pa a ealiza una p ueba global de compo amien o de la unidad de con ol elec ónico. 5 Mon aje expe imen al y código de ejemplo pa a con olado de mo o eléc ico En es e capí ulo se emplean odos los conocimien os que se han ido desa ollando en las secciones an e io es como base pa a ealiza un mon aje expe imen al que si a pa a demos a que median e el ha dwa e y el so wa e escogidos es posible dispone de un sis ema de con ol elec ónico del mo o pa a el ehículo FOX que p esen e las ca ac e ís icas de de e minismo que se ija on como obje i o del p esen e p oyec o. Se comenza á in oduciendo algunas nociones ca ac e ís icas de un código emba cado basado en Linux, desc ibiendo unciones especí icas de es e ipo de sis emas ope a i os cuyas capacidades de iempo eal se añadie on median e el p ocedimien o desc i o en la sección 3.3, in oduciendo a con inuación el alcance de la p ueba y sus componen es, inalizando po úl imo con el código que se p opone pa a la cons ucción del demos ado de concep o de unidad de con ol elec ónica. Es e análisis incluye la me odología empleada pa a lle a a cabo la a ea de con ol median e código, con las elecciones ealizadas y los p oblemas y soluciones halladas en el p oceso de p og amación. 5.1 P ocesos e hilos En la p esen e sección se p e ende expone los elemen os de p og amación más ú iles pa a ealiza la a ea del con ol elec ónico del ehículo: p ocesos e hilos. La in o mación p esen ada bajo es as líneas puede amplia se consul ando [17]. T adicionalmen e, un p oceso UNIX co espondía a una ins ancia de un p og ama en ejecución, más p ecisamen e a un espacio de di ección (space ad ess) y un conjun o de ecu sos dedicados a ejecu a el p og ama. Es a de inición se io o malizada po POSIX. El é mino hilo p o iene del concep o de un hilo indi idual de ejecución, es o es, un camino "lineal" a a és del código. POSIX de ine un hilo como los ecu sos necesa ios pa a ep esen a ese único camino de ejecución. His ó icamen e siemp e ha exis ido el concep o de p oceso en los sis emas ope a i os UNIX. Cada p oceso posee una se ie de ecu sos asociados, incluyendo un espacio de di ección, egis os de la CPU, un iden i ica- do o ID, una se ie de desc ip o es de a chi o abie o, un iden i icado de usua io, una pila o s ack, ...e c. Mien as que és e es un buen modelo, sólo pe mi e un camino secuencial de ejecución. Pa a consegui algún g ado de concu encia en es e modelo, es necesa io c ea múl iples p ocesos, que a menudo equie en algún i- po de comunicación en e p ocesos, que suele esul a ca a y pesada en el con ex o del iempo de compu ación. A inales de los años 80, el concep o de a ios hilos de con ol se hizo popula en la comunidad de UNIX. La idea undamen al e a c ea un conjun o limi ado de los ecu sos de un p oceso y hace a ios juegos del mismo, pe mi iendo de es a mane a la concu encia den o de un único p oceso. Los ecu sos que se eligie on ue on los mínimos necesa ios pa a ep esen a un único es ado de ejecución. És e consis ía p incipalmen e en los egis os de la CPU y la pila o s ack. Cada juego se llamó en onces un "hilo". Es o pe mi ió la concu encia den o de una aplicación sin necesidad de un mecanismo de comunicación en e hilos. Es impo an e no a que es e modelo conse aba el concep o de p oceso único, ex endiendo la de inición pa a inclui múl iples 41 42 Capí ulo 5. Mon aje expe imen al y código de ejemplo pa a con olado de mo o eléc ico hilos den o de es e p oceso. Figu a 5.1 Esquema de p ocesos e hilos. En es a época exis ie on muy pocas implemen aciones expe imen ales de hilos, y ninguna de ellas en p oducción. Es aba cla o, sin emba go, que esol ía una necesidad c ecien e, especialmen e con el desa ollo de máquinas UNIX con p ocesado múl iple en el ho izon e. También du an e es e pe íodo la es anda ización POSIX se encon aba poco desa ollada. Exis ía un g an impulso po c ea un conjun o común de APIs que pudie an ga an iza se pa a odas las implemen aciones de UNIX. Algunos in es igado es desa olla on una API que implan aba el modelo mul ihilo y p oponía inclui lo en el es ánda POSIX. Se acep ó en o ma de bo ado bajo el epíg a e de ex ensiones de iempo eal. Aunque había poca expe iencia en el mundo eal con hilos, la in ención e a p o ee un ma co de abajo común an es de que apa ecie an múl iples implemen aciones que compe i ían en e sí. En los siguien es años, la API pa a hilos de POSIX (conocida como p h eads) ha pasado po nume osas e isiones y se inco po ó al es ánda en 1996. La mayo ía, si no odas las implemen aciones de UNIX incuyen una biblio eca de p h ead, y hay muchas aplicaciones que las usan. 5.2 Mon aje expe imen al del demos ado de concep o Una ez p esen ado el mé odo de p og amación se p ocede a diseña un código de ejemplo que si a como unidad de con ol elec ónico pa a un pequeño mo o eléc ico como demos ado de concep o. El mon aje expe imen al espondió a los siguien es equisi os: • La idea gene al consis e en emplea el LPC 1768 como a je a de adquisición y esc i u a de señales an o analógicas como digi ales, comunicándose a a és de bus CAN con el conjun o PCM-3375 y PCM-3680I, que ac úa como el núcleo de la unidad de con ol elec ónica. •El mo o y su elocidad de gi o se ep esen an median e un se omo o Fu aba S3003, desc i o en la siguien e sección. • El con ol de e oluciones del mo o se ealiza median e un po encióme o lineal a modo de acele ado . Es a decisión esul a ealis a si se iene en cuen a lo expues o en [ 1 ], donde se ap ecia que en el ehículo FOX el acele ado es á compues o esencialmen e po un po encióme o. 5.3 P og amación del con olado 43 5.3 P og amación del con olado En líneas gene ales, el código p incipal de la ECU se p og amó median e un hilo de ejecución POSIX, desc i o en la p ime a sección del p esen e capí ulo, asignando una al a p io idad pa a el schedule . 5.3.1 P h eads (POSIX h eads) La he amien a que se empleó en la p og amación consis e en hilos que cumplen con las especi icaciones del es ánda POSIX. En p ime luga se p esen an las unciones y la sin axis de p h ead. Es posible encon a in o mación más de allada de cada una de ellas en los manuales de Linux P h ead_c ea e Pe mi e c ea un hilo POSIX. La sin axis de es a unción es la siguien e: 1 in p h ead_c ea e(p h ead_ * h ead, 2 cons p h ead_a _ *a , 3 oid *(*s a _ ou ine) ( oid *), 4 oid *a g); • El p ime a gumen o de la unción es un pun e o a una a iable de ipo p h ead_ que indica el iden i icado del hilo. • El segundo a gumen o es un pun e o a un pun e o a una a iable de ipo cons p h ead_a _ con los a ibu os pa a la c eación del hilo. •A con inuación se in oduce un pun e o a la unción p incipal del hilo desde la cual se c ea á. •Po úl imo se encuen an los a gumen os a la unción del hilo. P h ead_join Recoge el e o no del hilo cuando és e e mina. Pa a ello el mismo debe se de ipo joinable. 1 in p h ead_join(p h ead_ h ead, 2 oid ** e al); •El p ime a gumen o de en ada indica el iden i icado del hilo al que aplica es a unción •El segundo es un doble pun e o acío que apun a a la a iable donde se almacena el e o no del hilo. P h ead_exi Es a unción e mina el hilo desde la que se llama. 1 oid p h ead_exi ( oid * e al); El a gumen o de la unción especi ica el e o no que el hilo de ol e á pa a p h ead_join. P h ead_cancel La unción p h ead_cancel() manda una pe ición de cancelación al hilo desde la que se llama. Si el hilo eacciona o no, y cuándo ocu e la cancelación depende de dos a ibu os bajo el con ol de es e hilo: su es ado y ipo de cancelabilidad. El es ado de cancelabilidad de un hilo, de e minado po p h ead_se cancels a e(), puede se ac i ado (po de ec o pa a hilos nue os) o desac i ado. Si el es ado de cancelabilidad es desac i ado, en onces cualquie pe ición de cancelación pe manece en cola has a que al hilo se le a ibuya el es ado ac i ado. Si po el con a io un hilo iene el es ado ac i ado, el ipo de cancelabilidad de e mina cuándo és a ocu e. El ipo de cancelabilidad, de e minado po p h ead_se cancel ype, puede se asínc ono (asynch onous) o di e ido (de e ed) (po de ec o). La cancelabilidad asínc ona quie e deci que el hilo puede se cancelado en 50 Capí ulo 5. Mon aje expe imen al y código de ejemplo pa a con olado de mo o eléc ico Es a unción in en a lee un núme o coun de by es del ile desc ip o d en el bu e especi icado po la a iable de en ada bu . En el caso de que el campo de expi ación del ile desc ip o se encuen e acío es a unción se bloquea, al y como se especi ica en la documen ación de la unción ime d_c ea e() [ 22 ]. Es e compo amien o es el que pe mi e la pe iodicidad en la ejecución del hilo con el pe iodo especi icado en make_pe iodic. Además, en es a unción se almacena el núme o de ciclos de pe iodo especi icado que se ha excedido el iempo de ejecución del código del hilo, lo cual esul a idóneo pa a ca ac e iza el compo amien o del sis ema. Función del hilo del con olado Se encuen a en p ime luga , ocupando desde la línea 74 has a la 177 del código C.1. En la igu a 5.6 se p esen a el diag ama de lujo de la misma. An e io men e se ha c eado una a iable de ipo p h ead_ que co esponde al iden i icado del hilo (h1). Las acciones p incipales que ealiza el p og ama con olado son la lec u a del bus CAN de los mensajes con bi iden i icado adecuado, gene ación de la señal de con ol y esc i u a de un mensaje CAN con la señal, que se á leída po el ac uado co espondien e (LPC1768). Pa a la lec u a CAN se comienza con un bloque de comp obaciones, al y como se puede encon a en [ 11 ]. Es impo an e no a que la in e az CAN que se emplea pa a la comunicación (can0 o can1) debe inclui se en la a iable i name, y que debe coincidi con aquella a la que es á conec ado el cable DB9 desc i o en 4.4. T as comp oba que no se ha p oducido ningún e o , se en a en un bucle p incipal que lee con inua- men e los mensajes con iden i icado 1 (los que se deben lee ), dejando 2 pa a los que se esc iben. A pa i de la línea 142 se encuen a una se ie de bucles i que e alúan la posición del po encióme o y asignan las a iables de encendido pa a los LEDs, que llega án a la LPC 1768 a a és de los mensajes CAN con id = 2. Pa a el con ol del se omo o que ep esen a la salida de la unidad de con ol elec ónico se emplea el comando de la línea 166, en la que el da o del mensaje p o enien e de la mbed LPC-1768, que con iene la posición del po encióme o, se adjun a en el quin o by e del mensaje de salida, con iden i icado 2, pa a que se modi ique la señal de con ol del se o. En la línea 171 se encuen a una llamada a la unción usleep() que si e de s opping poin pa a la unción p h ead_cancel. Po úl imo se llama a p h ead_exi pa a sali del bucle y que de uel a un alo acío (NULL). Función del hilo secunda io Con el obje o de comp oba las uncionalidades de p h ead_cancel y de es ablece un en o no de p ueba ealis a, el código C.1 implemen a una pa ada de eme gencia que unciona median e en ada po pan alla. Un bucle while comp ueba pe iódicamen e el alo de una bande a, que cambia de es ado en el momen o en que se in oduce el ca ác e de pa ada (que en es e caso se eligió 5). Cuando se sale del bucle se ealiza una llamada a p h ead_exi pa a e mina el hilo 2. Función p incipal (main) Desde es a unción se c ean los hilos, se les asigna p io idad y scheduling policy y se e alúa el es ado de los mismos en cuan o se e minan de ejecu a (po pa ada de eme gencia). En cualquie caso, una salida o zada del p og ama p incipal (con la combinación de eclas CTRL+C ) en el e minal bash acaba ambién con cualquie hilo que se haya c eado a a és de la misma. Es e compo amien o puede cambia se median e algunos pa áme os de las unciones de p h ead, pe o se decidió deja lo po segu idad du an e las p uebas. El diag ama de lujo se p esen a en la igu a 5.7 En p ime luga se c ean las a iables pa a almacena la scheduling policy de los dos hilos, y su p io idad. En es e ejemplo de p ueba se decidió emplea alo es bajos pa a no comp ome e el co ec o uncionamien o del equipo en caso de p oduci se un e o a la ho a de p og ama . En el caso de la policy FIFO, el alo máximo es de 99. El p ime hilo en c ea se es el del p og ama del con olado , as lo cual se asigna la policy y la p io idad. Se p ocede de igual mane a pa a el segundo bucle. Se emplea p h ead_join pa a comp oba que los dos hilos han inalizado y pode con inua con la ejecución de la unción p incipal. Po úl imo se incluye código pa a imp imi po pan alla an o la policy como la p io idad de ambos hilos, así como el éxi o a la ho a de inaliza los. Es e bloque se ejecu a á unicamen e cuando se ealice una pa ada de eme gencia del con olado según lo an e io men e dispues o. 5.4 Ca ac e ización del compo amien o 51 Figu a 5.8 Diag ama de lujo del código en la Mbed LPC1768. Código de la a je a de adquisición de da os y ac uado a (Mbed LPC1768) El código implemen ado en la a je a Mbed LPC1768 queda ecogido en el código C.2 del apéndice C. És e se compiló de la mane a desc i a en 4.3.1 en la a je a Mbed LPC1768. A con inuación se explican los p incipales aspec os que p esen a, adjun ándose el diag ama de lujo de la igu a 5.8 pa a su mejo seguimien o. En p ime luga , se inicializan odas las en adas y salidas del mic ocon olado , es o es: •Salidas digi ales pa a los LEDs de a bo do. •Salida de ipo PWM pa a la señal de con ol del se o. •En ada analógica pa a la posición del po encióme o. Además, en la línea 19 se inicializa la in e az CAN pa a pe mi i la comunicación en e disposi i os. Todas las an e io es acciones han de ealiza se espe ando el pinou de la Mbed LPC-1768, p esen ado en la igu a 4.12b. la unción p incipal comienza con la asignación de la ecuencia pa a la señal PWM de con ol del se o. Es impo an e su decla ación an es del bucle while de la línea 28, pues o que de mane a con a ia no se p oduce un compo amien o co ec o del disposi i o. O o de los aspec os más impo an es del código es la asignación de la ecuencia de ansmisión de da os a a és del bus CAN, p esen ada en la línea 30. Una ez leídos los mensajes p oceden es de la ECU se p ocede a ealiza la ac uación de con ol sob e los dos ipos de elemen os con igu ados pa a ello: de un lado, un pa ón de luces LED y de o o el se omo o desc i o en la igu a 5.2. 5.4 Ca ac e ización del compo amien o Cyclic es yHackbench Con obje o de asegu a el compo amien o de e minis a de odo el sis ema, se ealiza on odas las p uebas de idén ica mane a a como se expone en la sección 3.4.2. 52 Capí ulo 5. Mon aje expe imen al y código de ejemplo pa a con olado de mo o eléc ico Un p oblema que su gió a la ho a de p ocede ue que la pa ada de la unción p incipal con obje o de ans e i la a segundo plano ( ómese el código 3.9 como e e encia) e mina con los hilos que se es án ejecu ando a pa i dela misma (main), dejando al sis ema sin con olado . Pa a soluciona lo se hizo uso del comando shell "nohup, del inglés no hung up), cuya sin axis pa a pasa la ejecución del con olado a segundo plano dejando lib e el shell se p esen a a con inuación en el código 5.3 Código 5.3 Comandos shell pa a ejecu a el p og ama del con olado en segundo plano. 1 oo @ linux:~ # gcc -p h ead -o p og ama p og ama.c && nohup ./p og ama>/de / null 2>&1 & En es a línea de comando shell, en p ime luga se compila el código p og ama.c, adjun ando la lib e ía p h ead, pa a a con inuación ejecu a el p og ama di ec amen e en el backg ound (las dos ope aciones se ejecu an secuencialmen e empleando el ope ado && ). Es o libe a el e minal pa a pode ejecu a el pe il de ca ga con hackbench y moni o iza la la encia con cyclic es . Nó ese la sin axis de la pa e del comando que comienza con nohup; lo que se consigue con ella es edi igi la salida que se c ea median e es e comando a /de /null, es o es, eliminándola po comple o. En caso de no ealiza es e ajus e se c ea á un iche o de salida que i á inc emen ando su amaño a medida que a anza el iempo de ejecución del p og ama, llegando a llena e ec i amen e oda la memo ia de la pa ición p incipal, dejando inse ible el compu ado . Respec o a la la encia, seguidamen e en la igu a 5.9 se p esen a el his og ama ob enido de la ejecución del p og ama del con olado con un pe il de ca ga. Figu a 5.9 His og ama de la encias del mon aje comple o. Se obse a que los esul ados en cuan o a la la encia son lige amen e supe io es que en el caso con emplado en la sección de ca ac e ización del compo amien o del sis ema sin ejecu a el con olado (secc. 3.4). No obs an e, la máxima la encia medida po cyclic es es de 71 µ s, muy po debajo de los 500 µ s ob enidos en [ 1 , Sección 6.6.3]. Nó ese ambién cómo la dis ibución del his og ama se aslada hacia la encias supe io es compa ado con el de las igu as 3.11 y 3.12. Es e hecho puede in e p e a se como indica i o de la ca ga que el mon aje expe imen al supone en el sis ema de con ol elec ónico. Medición del iempo en e paque es ecibidos La p ime a concepción del código p incipal de la unidad de con ol elec ónica (código C.1) no conside aba la posibilidad de que la ejecución se ealiza a de mane a pe iódica, sino que si ió pa a comp oba que el p og ama espondía a es ímulos ex e nos en iempo eal. No obs an e, al y como e ec i amen e se ha p esen ado en dicho código y se ha explicado en de alle en la an e io sección, ue necesa io es udia un 5.4 Ca ac e ización del compo amien o 53 Figu a 5.10 Diag ama de lujo de los dos disposi i os du an e la p ueba. mé odo pa a que se o za a al sis ema a abaja de mane a pe iódica, de o ma que se cumplie an los obje i os de elocidad de p ocesamien o. Es a iloso ía de p og amación pe iódica pe mi e ene la ce eza de que el sis ema se compo a de mane a de e minis a en cuan o a iempos de ejecución, lo cual cons i uye el obje i o más undamen al del p esen e p oyec o más allá de la elocidad e ec i a del sis ema. Pa a e mina de con i ma es e compo amien o, se ealizó una p ueba que consis ió en medi el iempo en e que se eciben dos mensajes consecu i os en la Mbed LPC1768, ob eniendo de es a mane a una idea de la la encia del sis ema global (bus CAN, y unidad de con ol p incipal PCM-3365). Pa a ello se emplea on a ias he amien as de p og amación y de gene ación de a chi os en el lenguaje C++. Se c eó un código de p ueba p e ia implemen ación en el p og ama p incipal de la ECU en la a je a Mbed LPC1768, ecogido en el código C.3 del apéndice C. El obje o de es e p og ama no es o o que el de medi los iempos en e ecepción de paque es a a és del bus CAN. El p ime paso consis ió en a e igua cómo ob ene el iempo de ejecución den o de una unción en el lenguaje mbed. Pa a ello es posible emplea uno de los ime s de los que dispone, que p opo ciona en segundos el iempo en e llamadas. Su uso consis e en la decla ación p e ia a la ejecución de la unción p incipal de una a iable de ipo ime (línea 17 del código C.3). Ya den o de la unción p incipal se in oca a .s a () pa a comenza el ime y a .s op() pa a de ene lo. El siguien e p oblema consis e en ealiza las medidas únicamen e cuando se eciba un mensaje nue o a a és del bus CAN, como queda e lejado en la igu a 5.10. La documen ación del API del bus CAN p opo cionada po Mbed [ 23 ] indica que la clase CAN posee una unción a ibu o llamada a ach(), que pe mi e c ea una in e upción cuando se p oduce uno de los siguien es e en os del bus [24]: •CAN::RxI q pa a nue o mensaje ecibido •CAN::TxI q pa a un nue o mensaje ansmi ido o abo ado •CAN::EwI q pa a una ad e encia de e o •CAN::DoI q pa a sob eesc i u a de da os •CAN::WuI q pa a es ado de wake up •CAN::EpI q pa a e o pasi o •CAN::AlI q pa a p oceso de a bi aje pe dido •CAN::BeI q pa a e o del bus 54 Capí ulo 5. Mon aje expe imen al y código de ejemplo pa a con olado de mo o eléc ico Pa a la aplicación que se p e ende lle a a cabo, la p ime a de ellas esul a idónea, pues o que en i ud de la documen ación, es posible lanza una unción cada ez que se p oduzca es e es ado en el bus, es o es, que se eciba un nue o mensaje. Bas a en onces con p og ama dicha unción con la pa ada, lec u a y pues a a ce o del ime an e io men e desc i o. El p oblema que su gió de es a implemen ación esponde a la na u aleza de las in e upciones que se gene an con can.a ach(), que son de ipo ISR (In e up ion Se ice Rou ine). Es as in e upciones p esen an la pa icula idad, en e o as, de que no pueden implemen a unciones de en ada/salida con bu e , ales como p in () o p in () pa a in e upciones con un iempo simila al de aciado de al bu e sin que p esen en allos en la ejecución. Dichos iempos son del o den de 1 ms. Es e compo amien o se ap eció en el hecho de que pe iodos en e ansmisión de paque es median e la PCM-3680I cada ez más bajos empezaban a a oja unos alo es de iempo anscu ido po pan alla inconsis en es, llegando a queda en el en o no de decenas de mic osegundos cuando se ijaba el pe iodo en cualquie alo po debajo de 5ms. Es o puede esol e se de a ias o mas, al cual se ecoge en [ 25 ]. No obs an e, en [ 26 ] se p opo ciona una solución sencilla que consis e en la c eación de una a iable de ipo booleano que cambia a es ado e dade o cada ez que se p oduce la in e upción. Es a a iable se e alúa con inuamen e en la unción p incipal, y si esul a se e dade a, imp ime po pan alla el alo de la lec u a del ime que se ha almacenado en la línea 33 del código C.3. El almacenamien o de los iempos se e minó ealizando de o ma simila a la lle ada a cabo en la sección 4.3.2: la salida po pan alla del sc ip p esen ado en el código C.3 se isualiza median e el p og ama Pu y, p opo cionando al mismo la opción de gua da odas las líneas de salida en un a chi o con ex ensión .log . A pa i de las medidas es posible c ea un his og ama y ep esen a lo de o ma simila a la p esen ada en el apéndice B.2. Pa a acili a el uso u u o se gua dó la sesión al igual que en la sección 4.3.2, incluyendo odas las opciones co espondien es a la sesión del ix del e minal. En la igu a 5.11 se p esen an las p incipales opciones pa a lle a a cabo es e úl imo paso. El código que se ejecu a en la ECU apa ece ecogido en el código C.4, empleado pa a pa a en ia mensajes CAN de mane a pe iódica, siendo el iempo en e ellos (pe iodo) y su núme o o al dos a iables que se pueden modi ica a olun ad. El uncionamien o del p og ama es idén ico al expues o en el apa ado del código C.1, con la c eación de un ime que gene a un ile desc ip o que bloquea la ejecución del hilo has a que no se lee median e la unción wai _pe iod(). En es e caso, sin emba go, no se leen mensajes CAN ni se p ocesa su con enido, sino que simplemen e se mandan a una asa conocida. La di e encia p incipal de es e código en e al C.1 es, como se ha comen ado, la capacidad de con ola el núme o de mensajes CAN que se en ían y el pe iodo de ansmisión. Pa a inaliza es e apa ado se adjun an dis in os g á icos en los que se p esen a la in o mación ob enida de es a úl ima p ueba de ca ac e ización. És as se han ob enido ijando un pe iodo de 20ms (50 Hz), y un o al de 100000 mensajes, lo cual sugie e un iempo o al ap oximado de ejecución de 30 min. Al igual que en las demás p uebas, se ejecu a simul áneamen e en segundo plano el p og ama de ca ga hackbench con el pe il habi ual ( éase el código 3.4.2). En la g á ica 5.12 se puede ap ecia el his og ama de los iempos de ejecución. Los in e alos en los que se p oduce el con eo ienen un ancho de 1µs , y esponden a una dis ibución simila a una de ipo no mal. La endencia que se obse a es que se cumple el pe iodo es ablecido de 20 ms, con algún iempo de ma gen en el sen ido más a o able. Asimismo, en la igu a 5.13 se puede obse a un de alle de la dis ibución comple a de iempos de ejecución (g á ica mensaje en e a iempo de dis ancia con el an e io ). Puede comp oba se la alea o iedad de iempos, aunque en lími es azonables al ededo del pe iodo ijado. El hecho de que no se mues e pa a 5.4 Ca ac e ización del compo amien o 55 Figu a 5.11 Opciones pa a c ea un log ile en Pu y. Figu a 5.12 His og ama de iempos en e mensajes. 56 Capí ulo 5. Mon aje expe imen al y código de ejemplo pa a con olado de mo o eléc ico Figu a 5.13 Dis ibución pa cial de iempos de ejecución. odos los mensajes esponde a la densidad de in o mación que ello supond ía. Con es a sección de es udio de compo amien o, con los esul ados a o ables ob enidos, se alcanzan los obje i os que se ma ca on pa a la ealización de es e p oyec o. En la siguien e sección se ecapi ulan y analizan los esul ados ob enidos du an e el mismo. 6 Conclusiones y abajo u u o En es e úl imo capí ulo se ecogen los esul ados p incipales del es udio lle ado a cabo en es e abajo, y se alo a si son adecuados o no pa a cumpli con los obje i os plan eados al comienzo del p oyec o. 6.1 Recapi ulación y conclusiones Median e lo es udiado en los capí ulos del bloque uno se ha conseguido pone a pun o el compu ado PCM-3365. Es o ha incluido el ha dwa e necesa io (sección 2.4), así como odo el so wa e pa a el sis ema ope a i o Slackwa e de Linux, y su adap ación pa a ope a bajo condiciones de iempo eal es ic o. Las p uebas lle adas a cabo en la sección 3.4, en condiciones de ca ga ela i amen e exigen es compa adas con las que expe imen a la unidad de con ol elec ónico en el ehículo FOX mues an la idoneidad del sis ema pa a su uso en dicha aplicación. En cuan o al segundo bloque, se consiguió ins ala con éxi o una a je a de bus CAN (PCM-3680I) en el PCM-3365, jun o con sus d i e s co espondien es. El uso de un mic ocon olado ex e no con capacidad de comunicación CAN (LPC-1768) ha esul ado de u ilidad en un doble p opósi o; de un lado, en ende el uncionamien o a bajo ni el del p o ocolo, median e el uso del ci cui o in eg ado del anscep o CAN MCP2551, y po o o, comp oba la comunicación en e dos disposi i os dis in os. El úl imo bloque in eg ó odos los an e io es disposi i os p obados jun o con o o nue o, un elemen o sob e el que ac ua como es un se omo o . Ello ha se ido pa a in oduci la gene ación de una señal PWM y el uso de las en adas analógicas de un mic ocon olado gené ico. Va ias han sido las p uebas ealizadas en es e con ex o; de un lado se implemen ó un mon aje expe imen al en la sección 5.2 cuyos esul ados con olando un se omo o ue on sa is ac o ios; de o o, se ealiza on la ca ac e ización del sis ema comple o como en la sección 3.4 y un seguimien o exhaus i o de los iempos de ejecución a a és del bus CAN, demos ando un compo amien o pe iódico ( éase la sección 5.3.3), con el pe iodo es ablecido en los obje i os de la sección 1.3, y asegu ando un éxi o de ansmisión absolu o de los mensajes incluso con ca gas se e as. Con odo ello es posible conclui que se es á en condiciones de mig a el código de los con olado es que se encuen an ac ualmen e implan ados en el ehículo al nue o sis ema, y ealiza p uebas de ca ac e ización de su uncionamien o mien as se ejecu an dichos códigos. Es e plan eamien o se desa olla a con inuación en la sección dedicada a abajo u u o. 6.2 T abajo u u o 6.2.1 P uebas de uncionamien o El ca ác e expe imen al del sis ema es udiado en el p esen e abajo, si bien posee unas ca ac e ís icas que esul an bas an es p ome edo as como se acaba de comen a , hace desaconsejable la ins alación di ec a en 57 58 Capí ulo 6. Conclusiones y abajo u u o (a) P ime a p opues a . (b) Segunda p opues a . Figu a 6.1 Esquemas de p uebas p opues os. el ehículo pa a p uebas en i o, debido a la si uación de iesgo que pod ía supone pa a el pilo o y sus al ededo es la pé dida e ec i a de con ol del mismo. La línea de acción más adecuada consis i ía en ealiza un banco de p uebas ex e no ubicado en el labo a o io del FCCL, de mane a que se pudie a conoce la espues a del sis ema a los da os ecogidos de los dis in os senso es en la unidad de con ol elec ónico y obse a la acción de con ol sob e los ac uado es del ehículo, en es e caso los mo o es. Es e ipo de p uebas eciben en el con ex o de la alidación de concep os ope acionales en ATM (Ai T a ic Managemen )[ 27 ] el nomb e de P uebas en modo somb a, y suponen el ni el de desa ollo del p oyec o más al o sin ealiza p uebas "en i o", en las que el ehículo se ía di ec amen e con olado po el nue o sis ema. Pa a lle a a cabo dichas p uebas, se plan ean dos mé odos hipo é icos. Los esquemas de los mismos se p esen an en la igu a 6.1: • El p ime o consis i ía en emplaza el nue o sis ema en el in e io del ehículo, conec ando las en adas de los senso es, y p og amándolo de mane a que las acciones de con ol se gua da an en un iche o pa a pode lo consul a a pos e io i. • El segundo consis i ía en gua da la señal de ac uación y los iempos de ejecución de la misma du an e el uncionamien o del ehículo en un iche o que pod ía alimen a al banco de p uebas ex e no pa a comp oba el co ec o uncionamien o Apéndice A P ueba de uncionamien o de PCM-3910 En el p esen e anexo se desc ibe de o ma b e e la mane a de p oba el uncionamien o del sis ema de con ol del ehículo sin emplea una uen e de alimen ación ATX, cons uyendo pa a ello un pequeño con e ido AC/DC de 18V pa a simula las ba e ías. La elección de es e ni el pa icula de ol aje se eligió po con eniencia, y se puede modi ica sin más que cambia un único componen e del ci cui o p opues o. Como se ha comen ado, el esquema de conexión es pa ecido al expues o en la igu a 2.3b del capí ulo 2, sólo que en luga de las ba e ías se conec a la salida de es e ci cui o: Figu a A.1 Esquema con con e ido . El ipo de uen e que se cons uyó es del ipo lineal egulada, en las que no exis e a amien o digi al de la ensión pa a su con e sión. La des en aja de es e ipo de ci cui os es su baja e iciencia en e a las mode nas uen es conmu adas (SMPS, Swi ched Mode Powe Supply), que u ilizan modulación de pulsos (PWM). Ello se hace pa en e en el amaño de los componen es necesa ios y en las pé didas po calo en algunos de sus componen es. No obs an e, su cons ucción es sencilla si se ienen en cuen a algunos aspec os que se a an a con inuación. A.1 Conside aciones de diseño En p ime luga se ecu ió al da ashee de la PCM-3910, en el que se encon ó que la ensión de en ada admisible se encuen a en e 10VDC y 24VDC. Los bloques básicos del ci cui o son ans o mado , ec i ica- do , il o y egulado El ans o mado elegido dispone de una en ada de 230VAC y una salida de 24VAC ( igu a A.2a). Pa a con e i es e ni el a co ien e con inua es necesa io un ec i icado , compues o po cua o diodos (puen e de onda comple a). La ensión que se ob iene as es e componen e p esen a un ue e izado, pa a lo cual se añadió un il o consis en e en un condensado de una capacidad adecuada. Es impo an e no a que en la ec i icación en un puen e de onda comple a se cumple la siguien e elación sin ca ga a la salida: Vou (DC)≃√2Vin(AC)(A.1) 59 66 Capí ulo C. Códigos del demos ado de concep o 144 ame2.da a[1] = 0; 145 ame2.da a[2] = 0; 146 ame2.da a[3] = 0; 147 } 148 else i ( ame.da a[0]>25 && ame.da a[0]<=50){ 149 ame2.da a[0] = 0; 150 ame2.da a[1] = 1; 151 ame2.da a[2] = 0; 152 ame2.da a[3] = 0; 153 } 154 else i ( ame.da a[0]>50 && ame.da a[0]<=75){ 155 ame2.da a[0] = 0; 156 ame2.da a[1] = 0; 157 ame2.da a[2] = 1; 158 ame2.da a[3] = 0; 159 } 160 else{ 161 ame2.da a[0] = 0; 162 ame2.da a[1] = 0; 163 ame2.da a[2] = 0; 164 ame2.da a[3] = 1; 165 } 166 ame2.da a[4] = ame.da a[0]; //se lee di ec amen e la posición del 167 //po encióme o de los mensajes en iados po la mbed y se le de uel en 168 //sin modi ica a a és del bus CAN 169 nby es2 = w i e(s, & ame2, sizeo (s uc can_ ame)); 170 } 171 usleep(100); //Es a unción es un s opping poin pa a p h ead_cancel. 172 173 wai _pe iod(&in o); //Función pa a espe a el pe iodo de ejecución 174 175 } //*FIN DEL BUCLE PRINCIPAL*// 176 p h ead_exi (NULL); 177 } //*FIN DE LA FUNCIÓN DEL HILO 1*// 178 179 180 181 oid* un_hilo2(){ 182 //Es a unción in e umpe a la unción 1. Es una pa ada de eme gencia 183 //p in ("Modo de pa ada ac i ado n"); 184 in j; 185 in lag = 0; 186 while( lag == 0){ 187 scan (" %d",&j); 188 i (j==(in )5){ 189 lag = 1; 190 p in (" n !!!!!!!!!!!! PARADA DE EMERGENCIA !!!!!!!!!!!!!! n"); 191 p h ead_cancel(h1); //cie a el hilo p incipal 192 p h ead_exi (NULL); // e mina hilo 193 } else{ 194 p in ("O den no econocida"); 195 } 196 } 197 198 199 200 } C.1 Unidad de Con ol Elec ónico (PCM3365 yPCM-3680I)67 201 202 // NOTA: Typecas ing = pasa de un ipo a o o; 203 // La sin axis es (new a ype)name 204 205 206 207 in main(){ //Función p incipal 208 //*INICIO DE LA FUNCIÓN PRINCIPAL*// 209 210 in policy1; 211 in policy2; 212 213 s uc sched_pa am pa ams1; 214 s uc sched_pa am pa ams2; 215 216 pa ams1.sched_p io i y = 30; 217 pa ams2.sched_p io i y = 40; 218 219 220 p h ead_c ea e(&h1, NULL, un_hilo1, NULL); // uncion de llamada del hilo. Se necesi an 221 //cua o a gumen os: La di eccion del hilo, los a ibu os del mismo, la di eccion de la uncion del hilo y los 222 // pa ame os de en ada. 223 224 i (p h ead_se schedpa am(h1, SCHED_FIFO, ¶ms1)!=0){ 225 p in ("SIN ÉXITO AL CAMBIAR LA POLICY 1 /n"); 226 } 227 228 in e 1 = p h ead_ge schedpa am(h1, &policy1, ¶ms1); 229 230 231 232 p h ead_c ea e(&h2, NULL, un_hilo2, NULL); //C eamos el hilo de pa ada de eme gencia. 233 234 i (p h ead_se schedpa am(h2, SCHED_FIFO, ¶ms2)!=0){ 235 p in ("SIN ÉXITO AL CAMBIAR LA POLICY 2 /n"); 236 } 237 238 in e 2 = p h ead_ge schedpa am(h2, &policy2, ¶ms2); 239 /**/ 240 241 242 243 in comp1 = p h ead_join(h1,NULL); //Funcion que indica si el hilo 1 ha e minado y de uel e si se quie e el es ado de cie e. 244 in comp2 = p h ead_join(h2,NULL); //Funcion que indica si el hilo 1 ha e minado y de uel e si se quie e el es ado de cie e. 245 246 //COMPROBACIONES PARA EL HILO 1 247 i (comp1==0){ 248 p in (" n n n---- COMPROBACIONES---- n n"); 249 p in (" n hilo 1 e minado n"); 250 } 251 else{ 252 p in ("Fallo en e mina el hilo 1"); 68 Capí ulo C. Códigos del demos ado de concep o 253 } 254 255 i (policy1!=SCHED_FIFO){ 256 p in ("NO FUNCIONA LA POLICY 1 n"); 257 p in ("%d n",(in )policy1); 258 } 259 else{ 260 p in ("POLICY 1 SCHED_FIFO n"); 261 } 262 p in ("la p io idad del hilo 1 es %d n",pa ams1.sched_p io i y); 263 264 //COMPROBACIONES PARA EL HILO 2 265 266 267 i (comp2==0){ 268 p in ("hilo 2 e minado n"); 269 } 270 else{ 271 p in ("Fallo en e mina el hilo 2"); 272 } 273 274 i (policy1!=SCHED_FIFO){ 275 p in ("NO FUNCIONA LA POLICY 2 n"); 276 p in ("%d n",(in )policy1); 277 } 278 else{ 279 p in ("POLICY 2 SCHED_FIFO n"); 280 } 281 p in ("la p io idad del hilo 2 es %d n",pa ams2.sched_p io i y); 282 /**/ 283 284 } C.2 Código de la a je a de adquisición de da os y ac uado a (Mbed LPC1768) Código C.2 Código de ejemplo pa a la a je a LPC-1768. 1 #include "mbed.h" 2 3 //Es e p og ama oma la posición de un po encióme o, la manda a la ECU a a é s del bus CAN y esc ibe el ni el que és a de uel e en los LEDs indicado es de la mbed, di ididos en cua o egiones. Además, pe mi e el con ol de un se omo o median e PWM. 4 5 // Inicialización de los LEDs 6 Digi alOu led_low(LED1); //LED que se enciende en el p ime cua o del po enci óme o 7 Digi alOu led_mid_low(LED2); //Segundo cua o del po encióme o 8 Digi alOu led_mid_high(LED3); //Te ce cua o del po encióme o 9 Digi alOu led_high(LED4); //Úl imo cua o del po encióme o 10 11 //Inicilización de la señal de con ol del se o 12 PwmOu se o(p21); 13 C.2 Código de la a je a de adquisición de da os y ac uado a (Mbed LPC1768)69 14 //Inicialización de la en ada analógica pa a el po encióme o 15 AnalogIn po (p20); 16 cha po _c; 17 18 //Inicialización de la in e az CAN 19 CAN can1(p30, p29); 20 21 //Inicialización de a iable pa a gua da mensaje que se lee 22 CANMessage leido; 23 24 25 in main() { 26 27 se o.pe iod(0.020); //F ecuencia de la señal PWM pa a el se o (20ms) 28 while(1) { 29 30 can1. equency(250000); //F ecuencia del bus CAN 31 32 //Se c ea un mensaje CAN con iden i icado 1 pa a esc ibi en el bus la 33 //posición del po encióme o. 34 35 po _c = loo (po *100); 36 37 i (can1.w i e(CANMessage(1, &po _c, 1))){ 38 p in (" n"); 39 .s a (); 40 } 41 42 //Aho a se lee el bus pa a ejecu a la o den de la ECU, sólo se necesi a 43 //lee los mensajes con iden i icado 2 44 45 can1. ead(leido); 46 47 i (leido.id == 2){ 48 //p in ("He leido un mensaje con id=2"); 49 .s op(); 50 p in (" n % ",( loa ) ); 51 52 led_low = leido.da a[0]; 53 led_mid_low = leido.da a[1]; 54 led_mid_high = leido.da a[2]; 55 led_high = leido.da a[3]; 56 57 loa pw = 0.002*leido.da a[4]/100+0.0003; 58 //p in ("% ",pw); 59 se o.pulsewid h(pw); 60 } 61 } 62 } 70 Capí ulo C. Códigos del demos ado de concep o C.3 Medición del iempo en e paque es ecibidos Código C.3 Código de ejemplo pa a medi iempos en e ecepción median e la a je a LPC-1768. 1 #include "mbed.h" 2 #include < s eam> 3 #include <ios eam> 4 5 using namespace s d; 6 7 ola ile loa iempo; 8 9 ola ile bool imp ime = alse; 10 11 //Inicialización de la in e az CAN 12 CAN can1(p30, p29); 13 14 //Inicialización de a iable pa a gua da mensaje que se lee 15 CANMessage leido; 16 17 //Inicialización del ime 18 Time ; 19 20 //Bande a de salidad del bucle p incipal 21 in lag =0; 22 23 //Función de la in e upción 24 oid in e (){ 25 26 can1. ead(leido); 27 i (leido.id==2){ 28 lag=1; 29 } 30 31 .s op(); 32 33 iempo = . ead(); 34 imp ime = ue; 35 . ese (); 36 .s a (); 37 38 } 39 40 41 //Inicio de la unción p incipal 42 in main() { 43 44 cou <<" uncion p incipal"<<endl; 45 can1. equency(250000); 46 can1.a ach(&in e ); 47 48 .s a (); 49 50 while( lag==0){ 51 C.3 Medición del iempo en e paque es ecibidos 71 52 i (imp ime){ 53 imp ime= alse; 54 cou << iempo << endl; 55 } 56 } 57 58 cou << " ue a del bucle" <<endl; 59 cou <<"p og ama e minado"<<endl; 60 } Código C.4 Código de ejemplo pa a en ia mensajes CAN de mane a pe iódica median e el mon aje PCM- 3365 yPCM-3680I. 1 #include <s dio.h> 2 #include <p h ead.h> 3 #include <unis d.h> 4 #include <sched.h> 5 #include <s dio.h> 6 #include <s dlib.h> 7 #include <s ing.h> 8 #include <ne /i .h> 9 #include <sys/ ypes.h> 10 #include <sys/socke .h> 11 #include <sys/ioc l.h> 12 #include <linux/can.h> 13 #include <linux/can/ aw.h> 14 #include <linux/can/e o .h> 15 #include < cn l.h> 16 #include <sys/ ime.h> 17 #include <sys/ ime d.h> 18 19 in pe iodo = 20000; //pe iodo en us 20 in bucles = 10000; 21 s uc pe iodic_in o { 22 in ime _ d; 23 unsigned long long n_pe didas; 24 }; 25 26 s a ic in make_pe iodic(unsigned in pe iod, s uc pe iodic_in o *in o) 27 { 28 in e ; 29 unsigned in ns; 30 unsigned in sec; 31 in d; 32 s uc i ime spec i al; 33 34 //C ea el ime 35 d = ime d_c ea e(CLOCK_MONOTONIC, 0); 36 in o->n_pe didas = 0; 37 in o-> ime _ d = d; 38 i ( d == -1) 39 e u n d; 40 41 //Hace el ime pe iódico 42 sec = pe iod / 1000000; 43 ns = (pe iod - (sec * 1000000)) * 1000; 72 Capí ulo C. Códigos del demos ado de concep o 44 i al.i _in e al. _sec = sec; 45 i al.i _in e al. _nsec = ns; 46 i al.i _ alue. _sec = sec; 47 i al.i _ alue. _nsec = ns; 48 e = ime d_se ime( d, 0, &i al, NULL); 49 e u n e ; 50 } 51 52 s a ic oid wai _pe iod(s uc pe iodic_in o *in o) 53 { 54 unsigned long long pe didas; 55 in e ; 56 57 e = ead(in o-> ime _ d, &pe didas, sizeo (missed)); 58 // ead se pa a si no ha pasado del iempo del ime 59 } 60 61 in o->n_pe didas += pe didas; 62 i (pe didas>1){ 63 p in ("Pe didas = %llc n",pe didas); 64 } 65 } 66 67 s a ic in h ead_1_coun = 0; 68 69 s a ic oid * h ead_1( oid *a g) // FUNCIÓN DEL HILO 70 { 71 s uc pe iodic_in o in o; 72 73 p in ("Comienzo del hilo 1 n"); 74 75 //Comp obaciones pa a bus CAN 76 77 in s,i; 78 in nby es; 79 s uc sockadd _can add ; 80 s uc can_ ame ame; 81 s uc i eq i ; 82 cha *i name = "can0"; 83 84 in se lag,ge lag, e =0; 85 i ((s = socke (PF_CAN, SOCK_RAW, CAN_RAW)) < 0){ 86 pe o ("E o while opening socke "); 87 e u n ( oid*)-1; 88 } 89 90 s cpy(i .i _name, i name); 91 ioc l(s, SIOCGIFINDEX, &i ); 92 93 94 add .can_ amily = AF_CAN; 95 add .can_i index = i .i _i index; 96 97 i (bind(s, (s uc sockadd *)&add , sizeo (add )) < 0){ 98 pe o ("E o in socke bind"); 99 e u n ( oid*)-2; 100 } C.3 Medición del iempo en e paque es ecibidos 73 101 102 103 se lag = se lag|O_NONBLOCK; 104 e = cn l(s,F_SETFL,se lag); 105 ge lag = cn l(s,F_GETFL,0); 106 107 can_e _mask_ e _mask = CAN_ERR_TX_TIMEOUT |CAN_ERR_BUSOFF; 108 e = se sockop (s, SOL_CAN_RAW, CAN_RAW_ERR_FILTER, &e _mask, sizeo (e _mask )); 109 110 make_pe iodic(pe iodo, &in o); 111 112 // Fin de comp obaciones pa a bus CAN 113 114 while ( h ead_1_coun <bucles) { //Función p incipal del hilo 115 116 ame.can_id = 1; 117 ame.can_dlc = 1; 118 119 ame.da a[0] = 1; 120 121 nby es = w i e(s, & ame, sizeo (s uc can_ ame)); 122 123 p in ("%d n", h ead_1_coun ); 124 h ead_1_coun ++; 125 126 wai _pe iod(&in o); 127 } 128 ame.can_id = 2; //Al inal del bucle mandamos un mensaje con id=2 pa a pa a el código 129 // de la mbed LPC-1768 130 131 ame.can_dlc = 1; 132 133 ame.da a[0] = 1; 134 135 nby es = w i e(s, & ame, sizeo (s uc can_ ame)); 136 137 e u n NULL; 138 } 139 140 141 in main() //FUNCIÓN PRINCIPAL 142 { 143 p in ("Comp obación de la pe idicidad de p h eads n"); 144 145 p h ead_ _1; 146 147 in policy; 148 s uc sched_pa am pa ams; 149 150 pa ams.sched_p io i y = 80; 151 152 153 p h ead_c ea e(& _1, NULL, h ead_1, NULL); 154 155 i (p h ead_se schedpa am( _1, SCHED_FIFO, ¶ms)!=0){ 74 Capí ulo C. Códigos del demos ado de concep o 156 p in ("SIN ÉXITO AL CAMBIAR LA POLICY /n"); 157 } 158 159 160 in e = p h ead_ge schedpa am( _1, &policy, ¶ms); 161 162 sleep(10); 163 164 in comp = p h ead_join( _1,NULL); 165 166 167 //COMPROBACIONES PARA EL HILO 168 i (comp==0){ 169 p in (" n n n---- COMPROBACIONES---- n n"); 170 p in (" n hilo e minado n"); 171 } 172 else{ 173 p in ("Fallo en e mina el hilo"); 174 } 175 176 i (policy!=SCHED_FIFO){ 177 p in ("NO FUNCIONA LA POLICY n"); 178 p in ("%d n",(in )policy); 179 } 180 else{ 181 p in ("POLICY SCHED_FIFO n"); 182 } 183 p in ("la p io idad del hilo es %d n",pa ams.sched_p io i y); 184 185 186 e u n 0; 187 } Índice de Figu as 1.1. Vehículo FOX 1 1.2. En idades p omo o as del p oyec o CONFIGURA 1 1.3. Esquema gene al de las conexiones del ehículo 3 1.4. Equipo de p uebas empleado en [1] 3 1.5. Resul ados de la encia 4 2.1. SBC PCM-3365 6 2.2. Fuen e PCM-3910 6 2.3. Bloques uncionales 7 2.4. Espaciado es 8 2.5. Vis a in e io de la placa donde se pueden ap ecia las anu as pa a la a je a SATA y pa a el módulo de memo ia RAM 9 2.6. Conec o es 9 2.7. Conexión de la uen e ATX 10 2.8. Conexiones es an es 10 3.1. Logo ipo de Slackwa e 11 3.2. Ven anas de UNe boo in y Ru us 12 3.3. Pinou de CN10 [3] 13 3.4. Pan alla de inicio 13 3.5. Ven anas de ins alación 14 3.6. Pa iciones necesa ias 14 3.7. Opciones de ins alación 15 3.8. Pa ición obje i o 15 3.9. Opción USB 15 3.10. en ana de menucon ig 17 3.11. His og ama de la encias de los núcleos 19 3.12. Segunda p ueba de endimien o 20 4.1. Modelo OSI del p o ocolo CAN [8] 22 4.2. Modelo de ha dwa e CAN 22 4.3. pinou del MCP2551 22 4.4. Ni eles lógicos CAN 23 4.5. Vol aje di e encial 24 4.6. Módulo CAN PCM-3680 25 4.7. Sopo e de las e siones del Ke nel 25 4.8. Ca ga de d i e s 26 4.9. lis a de enlaces de da os 27 4.10. CAN ac i ado 27 4.11. Resul ado de la comunicación CAN 29 4.12. De alles del mic ocon olado 30 75 82 Bibliog a ía [21] De eloping he pulse wid h modula ion ool (pwm ) o wo ime mechanism echnique in mic ocon o- lle s - scien i ic igu e on esea chga e. h ps:// www. esea chga e.ne / igu e/ PWM-signal-wi h-i s- wo- basic- ime-pe iods_ ig4_271437313. [22] Linux man pages. Documen ación de la unción ime d_c ea e.man7.o g/ linux/ man-pages/ man2/ ime d_c ea e.2.h ml, Consul ado en 2019. [23] Mbed ARM . Documen ación la API del bus CAN. h ps:// os.mbed.com/ docs/ mbed-os/ 5.14/ apis/ can.h ml, Consul ado en 2019. [24] Mbed ARM . Documen ación las unciones miemb o de la clase CAN: can.a ach(). h ps:// os.mbed.com/ docs/ mbed-os/ 5.14/ mbed-os-api-doxy/ classmbed_1_1_c_a_n.h ml# a554dcc c95 8e864de7be65a4a793e98, Consul ado en 2019. [25] Jan Jongboom. Simpli y you code wi h mbed-e en s.h ps:// os.mbed.com/ blog/ en y/ Simpli y-you - code-wi h-mbed-e en s/ , Consul ado en 2019. [26] Mbed ARM. Fo os de p egun as . Explicación ela i a a los p oblemas en el uso de unciones como p in () con in e upciones ISR . h ps:// os.mbed.com/ ques ions/68656/ Add-in e up -in o-queue/ , Consul ado en 2019. [27] Al onso Valenzuela Rome o. Apun es de la asigna u a T á ico Aé eo A anzado del Más e Uni e si a io en Ingenie ía Ae onáu ica de la Uni e sidad de Se illa. Tema 6. Validación de Concep os Ope acionales en ATM. Sección 6.4.2. Pág. 97. , Consul ado en 2019.