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.