<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1815-5928</journal-id>
<journal-title><![CDATA[Ingeniería Electrónica, Automática y Comunicaciones]]></journal-title>
<abbrev-journal-title><![CDATA[EAC]]></abbrev-journal-title>
<issn>1815-5928</issn>
<publisher>
<publisher-name><![CDATA[Universidad Tecnológica de La Habana José Antonio Echeverría, Cujae]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1815-59282013000300008</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Sistema de control de acceso e interbloqueo para el Centro de Inmunología Molecular]]></article-title>
<article-title xml:lang="en"><![CDATA[Access control and interlocking system for the Molecular Immunology Center]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pedreira Marcel]]></surname>
<given-names><![CDATA[Marcel]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Moreno Vega]]></surname>
<given-names><![CDATA[Valery]]></given-names>
</name>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Centro de Inmunología Molecular  ]]></institution>
<addr-line><![CDATA[La Habana ]]></addr-line>
<country>Cuba</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Instituto Superior Politécnico José Antonio Echeverría Facultad de Ingeniería Eléctrica Departamento de Automática]]></institution>
<addr-line><![CDATA[La Habana ]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2013</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2013</year>
</pub-date>
<volume>34</volume>
<numero>3</numero>
<fpage>74</fpage>
<lpage>88</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S1815-59282013000300008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S1815-59282013000300008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S1815-59282013000300008&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En el presente trabajo se muestra el diseño y desarrollo de un sistema de control de acceso e interbloqueo en el Centro de Inmunología Molecular debido a que los sistemas comerciales de este tipo instalados en dicho centro no cumplen todas las necesidades. El sistema propuesto consta de dos tarjetas electrónicas: el controlador de puertas y el controlador de interbloqueo, ambas fueron desarrolladas a base de microcontrolador PIC de Microchip programados usando el compilador PCW de CCS. Estas tarjetas son capaces de comunicarse con dispositivos de lectura de código de barras, proximidad, biométricos o cualquier otro que transmita por protocolo Wiegand. Además deben ser configuradas para que operen de manera deseada, para ello fue desarrollada una aplicación software de parametrización utilizando Qt como framework, e implementando prácticas eficientes de ingeniería de software. Esta aplicación se comunica con los controladores vía RS232 con protocolo Modbus.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[This paper shows the design and development of an access control and interlocking system for the Molecular Immunology Center because the commercial systems installed in this center do not meet all needs. The proposed system consists of two electronic boards: the door controller and the interlock controller, both were developed based on Microchip's PIC microcontroller programmed using CCS PCW compiler. These cards are able to communicate with devices like barcode reading, proximity, biometric or any other that transmit by Wiegand protocol. They must also be configured to operate in a desired manner and therefore a software application was developed using Qt as framework, and implementing effective practices of software engineering. This application communicates with the controllers via RS232 using Modbus protocol.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[control de acceso]]></kwd>
<kwd lng="es"><![CDATA[interbloqueo]]></kwd>
<kwd lng="es"><![CDATA[microcontrolador]]></kwd>
<kwd lng="es"><![CDATA[modbus]]></kwd>
<kwd lng="es"><![CDATA[wiegand]]></kwd>
<kwd lng="es"><![CDATA[ingeniería de software]]></kwd>
<kwd lng="en"><![CDATA[access control]]></kwd>
<kwd lng="en"><![CDATA[interlocking]]></kwd>
<kwd lng="en"><![CDATA[microcontroller]]></kwd>
<kwd lng="en"><![CDATA[modbus]]></kwd>
<kwd lng="en"><![CDATA[wiegand]]></kwd>
<kwd lng="en"><![CDATA[software engineering]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[   <font size="2" face="Verdana">  </font>     <P align="right"><font size="2" face="Verdana"><strong>ARTICULO ORIGINAL</strong></font></P>     <P>&nbsp;</P>     <P><font size="4" face="Verdana"><B>Sistema de control de acceso e interbloqueo para el Centro    de Inmunolog&iacute;a Molecular </B></font></P>     <P>&nbsp;</P>     <P><font size="2"><font size="3" face="Verdana"><B>Access control and interlocking system for the Molecular Immunology Center</B></font></font></P>     <P>&nbsp;</P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana"><strong>Ing. Marcel Pedreira Marcel<sup>1</sup>, Dr. Valery Moreno Vega<sup>2</sup></strong></font></P>     <P><font size="2" face="Verdana">1. Centro de Inmunolog&iacute;a Molecular, La Habana,    Cuba, E-mail: <a href="mailto:marcel@cim.sld.cu">marcel@cim.sld.cu</a><FONT COLOR="#0000ff">.</FONT></font>    ]]></body>
<body><![CDATA[<br>   <font size="2" face="Verdana">2</font>. <font size="2" face="Verdana">Departamento de Autom&aacute;tica, Facultad de Ingenier&iacute;a El&eacute;ctrica,</font> <font size="2" face="Verdana">Instituto Superior Polit&eacute;cnico Jos&eacute; Antonio Echeverr&iacute;a, La Habana, Cuba. E-mail:   <a href="mailto:valery@electrica.cujae.edu.cu">valery@electrica.cujae.edu.cu</a>.</font></P>     <P>&nbsp;</P>     <P>&nbsp;</P> <hr>     <P><font size="2"><b><font face="Verdana">RESUMEN</font></b></font></P>     <P><font size="2" face="Verdana">En el presente trabajo se muestra el dise&ntilde;o y desarrollo de un sistema de control de acceso  e interbloqueo en el Centro de Inmunolog&iacute;a Molecular debido a que los sistemas comerciales de  este tipo instalados en dicho centro no cumplen todas las necesidades. El sistema propuesto consta  de dos tarjetas electr&oacute;nicas: el controlador de puertas y el controlador de interbloqueo,  ambas fueron desarrolladas a base de microcontrolador PIC de Microchip programados usando el  compilador PCW de CCS. Estas tarjetas son capaces de comunicarse con dispositivos de lectura de c&oacute;digo  de barras, proximidad, biom&eacute;tricos o cualquier otro que transmita por protocolo Wiegand.  Adem&aacute;s deben ser configuradas para que operen de manera deseada, para ello fue desarrollada una  aplicaci&oacute;n software de parametrizaci&oacute;n utilizando Qt como framework, e implementando pr&aacute;cticas  eficientes de ingenier&iacute;a de software. Esta aplicaci&oacute;n se comunica con los controladores v&iacute;a RS232 con  protocolo Modbus. </font></P>     <P><font size="2" face="Verdana"><strong>Palabras claves:</strong> control de acceso, interbloqueo, microcontrolador, modbus, wiegand, ingenier&iacute;a  de software. </font>    <br> </P> <hr>     <P><font size="2"><b><font face="Verdana">ABSTRACT</font></b></font></P>     <P> <font size="2" face="Verdana">This paper shows the design and development of an access control and interlocking system for  the Molecular Immunology Center because the commercial systems installed in this center do not  meet all needs. The proposed system consists of two electronic boards: the door controller and  the interlock controller, both were developed based on Microchip's PIC microcontroller  programmed using CCS PCW compiler. These cards are able to communicate with devices like barcode  reading, proximity, biometric or any other that transmit by Wiegand protocol. They must also be  configured to operate in a desired manner and therefore a software application was developed using Qt  as framework, and implementing effective practices of software engineering. This  application communicates with the controllers via RS232 using Modbus protocol.</font></P>     <P><font size="2"><font face="Verdana"><strong>Key words</strong>: access control, interlocking, microcontroller, modbus, wiegand,software engineering.    ]]></body>
<body><![CDATA[<br> </font></font></P> <hr>     <P>&nbsp;</P>     <P>&nbsp;</P>     <P><font size="3" face="Verdana"><B>INTRODUCCION</B> </font></P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">El concepto de control de acceso se ha utilizado en varios contextos, yfrecuentemente se asocia a conceptos    de seguridad inform&aacute;tica y redes de computadoras. Sin embargo, en este trabajo se hace alusi&oacute;n al sistema vinculado a    las puertas de una edificaci&oacute;n. Bajo estos principios, un sistema de control de acceso administra el ingreso a    &aacute;reas restringidas y evita que personas no autorizadas o indeseables tengan la libertad de acceder a determinados    locales. As&iacute; mismo se puede tener conocimiento de la asistencia del personal, horarios de ingreso y egreso, y tambi&eacute;n    poder tener un control hist&oacute;rico de entradas de personas a todas las &aacute;reas. </font></P>     <P><font size="2" face="Verdana">Los sistemas de control de acceso est&aacute;n formados por diversos dispositivos o componentes. Los controladores  de puerta constituyen el elemento fundamental o de inteligencia en un sistema de control de acceso. Por otra parte,  los      dispositivos de lectura se utilizan para la identificaci&oacute;n del usuario a trav&eacute;s de alguna tecnolog&iacute;a, como puede  ser c&oacute;digo de barras, </font><font size="2" face="Verdana">radiofrecuencia o biometr&iacute;a.Los elementos de acci&oacute;n final se encargandel bloqueo f&iacute;sico de las  puertas,&eacute;stospueden ser hembrillas o cerraduras electr&oacute;nicas, electroimanes, etc. Adem&aacute;s, estos sistemas presentan,normalmente, un  software de </font><font size="2" face="Verdana">supervisi&oacute;n que opera sobre todos los controladores dispuestos en red, y de esta forma realizar labores de  monitoreo y control.Es posible tambi&eacute;n integrar circuitos cerrados de televisi&oacute;n, sistemas contraincendios, contra intrusos  y mecanismos de interbloqueo. Mediante estos &uacute;ltimos, se puede bloquear el acceso a un &aacute;rea com&uacute;n entre dos  puertas cuando una de ellas se ha abierto. </font></P>     <P><font size="2" face="Verdana">El Centro de Inmunolog&iacute;a Molecular (CIM), perteneciente al polo cient&iacute;fico en el oeste de la capital cubana, es  una instituci&oacute;n especializada en la investigaci&oacute;n, desarrollo y manufactura de productos biofarmac&eacute;uticos para la  lucha contra el c&aacute;ncer a partir del cultivo de c&eacute;lulas de mam&iacute;feros de acuerdo con las regulaciones de las buenas pr&aacute;cticas  de producci&oacute;n (GMP).Este Centro, al igual que otros del polo dedicados a la biotecnolog&iacute;a, posee &aacute;reas de  producci&oacute;n denominadas salas limpias especialmente dise&ntilde;adas para obtener bajos niveles de contaminaci&oacute;n. Estas salas  tienen sus par&aacute;metros ambientales estrictamente controlados: part&iacute;culas en el aire, temperatura, humedad, flujo de  aire, presi&oacute;n interior, iluminaci&oacute;n  etc.<SUP>1</SUP> </font></P>     <P><font size="2" face="Verdana">El sistema de control de acceso juega un importante papel en lograr tal objetivo. Actualmente en el CIM se  encuentran en funcionamiento dos sistemas de control de acceso e interbloqueo de diferentes fabricantes: Kantech y  Siemens. Estos sistemas tienen las siguientes desventajas en su aplicaci&oacute;n: </font></P>     <P><font size="2" face="Verdana">&#183;     Arquitectura cerrada. Existe incompatibilidad en cuanto a protocolos de comunicaci&oacute;n, bases de datos etc.  Por tal motivo la informaci&oacute;n esta fragmentada o dividida lo que dificulta una gesti&oacute;n a nivel central. </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">&#183;     Soporte t&eacute;cnico. Se han presentado dificultades con la obtenci&oacute;n de las tarjetas de proximidad y actualmente  se encuentran agotadas existiendo trabajadores con necesidad de entrar a determinada &aacute;rea que no cuentan  con el medio para hacerlo. </font></P>     <P><font size="2" face="Verdana">&#183;     A pesar de ser sistemas bien eficientes y robustos, se han dado circunstancias particulares en las que no  son eficaces o incapaces de resolver el problema usando el sistema por si solo con las opciones que trae  por definici&oacute;n. </font></P>     <P><font size="2" face="Verdana">Por este motivo se ha planteado la necesidad de implementar un nuevo sistema de control de acceso e  interbloqueo,que sea desarrollado totalmente en el CIM.&Eacute;ste permitir&aacute; una gesti&oacute;n central de la informaci&oacute;n y un mayor nivel  de configuraci&oacute;n, personalizaci&oacute;n y expansi&oacute;n, permitiendo suplir las necesidades no resueltas por los sistemas de  pago instalados en la actualidad. </font></P>     <P><font size="2" face="Verdana">En este trabajo se describe el proceso de desarrollo del sistema propuesto para dar soluci&oacute;n a la problem&aacute;tica  anterior. En la secci&oacute;n 2 se da una descripci&oacute;n, a grandes rasgos, de dicho sistema haciendo hincapi&eacute; en los elementos que  lo componen as&iacute; como los protocolos utilizados. En la secci&oacute;n 3 se detalla el dise&ntilde;o de los controladores, d&iacute;gase  hardware y firmware, requerido para su funcionamiento. La secci&oacute;n 4 aborda todo el proceso de desarrollo de la  aplicaci&oacute;n software de parametrizaci&oacute;n de cada uno de los controladores. Finalmente, en la secci&oacute;n 5 se describen los  resultados obtenidos en la implementaci&oacute;n del sistema a escala piloto. </font></P>     <P>&nbsp;</P>     <P><font size="3" face="Verdana"><B>DESCRIPCI&Oacute;N GENERAL DELSISTEMA PROPUESTO</B> </font></P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">La soluci&oacute;n presentada consiste en un sistema compuesto por dos elementos fundamentales: el controlador de    puerta y el controlador de interbloqueo. Ambos son tarjetas electr&oacute;nicas con finalidades diferentes dentro del sistema. </font></P>     <P><font size="2" face="Verdana">La funci&oacute;n del controlador de puerta es, como su nombre lo indica, el control de las puertas. Un controlador de este  tipo puede controlar un m&aacute;ximo de dos puertas. De esta forma se encarga de recibir la solicitud de acceso que viene  del elemento de identificaci&oacute;n, determinar si el c&oacute;digo arribado tiene acceso por la puerta especificada seg&uacute;n  previa configuraci&oacute;n y, de ser positiva o v&aacute;lida, entonces desbloquear la puerta en cuesti&oacute;n. En la <a href="#f1">figura 1</a> se muestra  la conexi&oacute;n de este controlador. Cabe destacar que &eacute;ste es capaz de recibir la codificaci&oacute;n enviada desde cualquier  lector que implemente protocolo Wiegand formato 26. Este protocolo es abierto y se considera un est&aacute;ndar dentro de  los sistemas de control de acceso. De esta forma se garantiza la comunicaci&oacute;n con una amplia gama de dispositivos  de lectura que existen en la actualidad. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f0108313.jpg" width="574" height="352"><a name="f1"></a></P>     
]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">Otro elemento asociado al sistema es un dispositivo para detectar el caso de que un usuario desee salir de un local  a trav&eacute;s de alguna puerta controlada, es decir, por la parte contraria en donde se encuentra situado el lector.Estos  casos se denominan REX (Request for EXit)en la mayor&iacute;a de los sistemas de control de acceso, y para ello se incluye en  el sistema un elemento hardware que notifique, a trav&eacute;s de una se&ntilde;al, esta acci&oacute;n al controlador. Este elementopuede  ser un sensor de presencia o un simple  bot&oacute;n.<SUP>2</SUP> </font></P>     <P><font size="2" face="Verdana">El controlador de interbloqueo se encarga de agregar la capacidad de interbloqueo al sistema. Este mecanismo  consiste en el bloqueo de una o m&aacute;s puertas tras la detecci&oacute;n de la apertura de una puerta determinada. Esto se realiza,  por supuesto, con una previa configuraci&oacute;n del controlador, donde se establece esta relaci&oacute;n o interacci&oacute;n entre  las puertas. Este sistema puede tener muchos usos o aplicaciones y, en el caso del CIM, se utiliza para disminuir  los riesgos de contaminaci&oacute;n cruzada, concepto asociado a las GMP en el que una persona saliendo del &aacute;rea limpia  pueda inducir contaminaci&oacute;n a aquella que est&aacute; entrando. La <a href="#f2">figura 2</a> muestra la conexi&oacute;n de este dispositivo. </font></P>     <P align="center"><font size="2" face="Verdana"><img src="/img/revistas/eac/v34n3/f0208313.jpg" width="452" height="292"></font><a name="f2"></a></P>     
<P><font size="2" face="Verdana">Estos dispositivos deben ser configurados, o parametrizados, para que realicen la funci&oacute;n deseada. Para ello  se desarrolla una herramienta de software que se comunique con &eacute;stos a trav&eacute;s de un puerto RS-232 utilizando una PC.  El protocolo de comunicaci&oacute;n entre la aplicaci&oacute;n y los dispositivos es Modbus. Se implement&oacute; este protocolo  abierto para que los controladores sean capaces de comunicarse con el mayor n&uacute;mero de softwares posible, facilitando de  esta manera futurasimplementaciones o facilidades al sistema, como la posibilidad de supervisi&oacute;n central a trav&eacute;s de  un SCADA, por citar un ejemplo. </font></P>     <P><font size="2" face="Verdana">Las dos tarjetas est&aacute;n basadas en microcontroladores PIC de Microchip, por la gran difusi&oacute;n que existe de  estos dispositivos y por la disponibilidad de &eacute;stos con sus herramientas asociadas para implementar y  verificaraplicaciones de este tipo en el CIM. La programaci&oacute;n de los microcontroladores se hizo utilizando el compilador PCW de CCS,  por motivos de conocimiento del autor y tambi&eacute;n por disponibilidad legal de dicho software en el Centro. Las pruebas  de la configuraci&oacute;n de hardware de los dispositivos se realizaron utilizando el PICSCHOOL, herramienta consistente  en una maqueta o protoboard para la puesta a punto de aplicaciones utilizando microcontroladores PIC. La aplicaci&oacute;n  de parametrizaci&oacute;n fue desarrollada utilizando el framework Qt, por ser una poderosa plataforma de c&oacute;digo abierto  muy difundida en estos momentos. </font></P>     <P><font size="2" face="Verdana"><B>Protocolo Wiegand</B> </font></P>     <P><font size="2" face="Verdana">Este protocolo es unidireccional y permite el traspaso de datos desde un lector hacia el controlador. A pesar de que  fue concebido para los lectores de efecto Wiegand, dada su eficiencia en este &aacute;mbito, ha sido implementado tambi&eacute;n  en lectores con otra tecnolog&iacute;a, como los de proximidad o radiofrecuencia e, incluso, en teclados num&eacute;ricos. El  protocolo establece l&iacute;neas de datos, alimentaci&oacute;n y se&ntilde;alizaci&oacute;n. Las l&iacute;neas de se&ntilde;alizaci&oacute;n son las usadas para el manejo de  la bocina y los leds, que normalmente poseen estos lectores, mientras que la transmisi&oacute;n de datos se realiza a trav&eacute;s  de tres hilos: </font></P>     <P><font size="2" face="Verdana">&#183;     DATA1: L&iacute;nea para enviar los unos l&oacute;gicos. </font></P>     <P><font size="2" face="Verdana">&#183;     DATA0: L&iacute;nea para enviar los ceros l&oacute;gicos. </font></P>     <P><font size="2" face="Verdana">&#183;     GND: L&iacute;nea de tierra de referencia de ambos.    </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">La <a href="#f3">figura 3</a> representa gr&aacute;ficamente este sistema de transmisi&oacute;n. En estado de reposo las l&iacute;neas DATA1 y  DATA0 est&aacute;n a nivel alto. Para transmitir un bit en `1'se manda un pulso a  nivel bajo de 50 &igrave;s de duraci&oacute;n por la l&iacute;nea  DATA1, mientras DATA0 permanece en alto. Por el contrario, para transmitir un bit en`0' lo que se hace es enviar un pulso  bajo, de la misma duraci&oacute;n, pero por la l&iacute;nea DATA0 mientras la l&iacute;nea DATA1 permanece en alto. La separaci&oacute;n entre  cada pulso y el siguiente es de unos 2 ms. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f0308313.jpg" width="520" height="288"><a name="f3"></a></P>     
<P><font size="2" face="Verdana">Mediante este sistema se puede transmitir cualquier n&uacute;mero de bits. Existe, sin embargo, un consenso  internacional para utilizar un determinado n&uacute;mero de bits y la interpretaci&oacute;n de los mismos. El formato m&aacute;s utilizado, y por tanto  el empleado en este proyecto, es el Wiegand26, que especifica que el primer bit (B0) es la paridad par de los primeros  12 bits transmitidos (B1:12), los ocho siguientes (B1:B8) constituyen un entero de 8 bits denominado FacilityCode, los  16 bits siguientes (B9:B24) representan un entero de 16 bits llamado UserCode y el &uacute;ltimo bit (B25) es la paridad impar  de los &uacute;ltimos 12 bits transmitidos  (B13:B24).<SUP>2</SUP> </font></P>     <P><font size="2" face="Verdana"><B>Protocolo Modbus</B> </font></P>     <P><font size="2" face="Verdana">El protocolo Modbus est&aacute; basado en la arquitectura maestro/esclavo. Dise&ntilde;ado en 1979 por la empresa Modicon  para su gama de PLCs, se ha convertido en un protocolo de comunicaciones est&aacute;ndar de facto en la industria y es el  que goza de mayor disponibilidad para la conexi&oacute;n de dispositivos inteligentes.&Eacute;sto es debido fundamentalmente a  las siguientes razones: </font></P>     <P><font size="2" face="Verdana">&#183;     Es p&uacute;blico. </font></P>     <P><font size="2" face="Verdana">&#183;     Su implementaci&oacute;n es f&aacute;cil y requiere poco desarrollo. </font></P>     <P><font size="2" face="Verdana">&#183;     Maneja bloques de datos sin suponer restricciones. </font></P>     <P><font size="2" face="Verdana">En ocasiones, en la literatura se refiere a Modbus como una estructura de mensaje, debido a que no especifica una  capa f&iacute;sica, por loque se puede implementar usando diferentes normas, como RS232, RS422, RS485 e, incluso, sobre  Ethernet. Existen dos variantes con diferentes representaciones num&eacute;ricas de los datos y detalles del protocolo  ligeramente desiguales: Modbus RTU y Modbus ASCII.Tambi&eacute;n existe una versi&oacute;n Modbus TCP, pero m&aacute;s bien es el formato  RTU estableciendo la transmisi&oacute;n mediante paquetes TCP/IP. La variante utilizada en este proyecto es la RTU. </font></P>     <P><font size="2" face="Verdana">En una red Modbus cada dispositivo tiene una direcci&oacute;n&uacute;nica. Cualquier dispositivo puede enviar &oacute;rdenes, aunque  lo habitual es permitirlo solo al maestro y los esclavos se limitan a responder  las solicitudes del mismo. Un  mensaje Modbus enviado desde el </font><font size="2" face="Verdana">maestro hacia un esclavo contiene la direcci&oacute;n del esclavo, el comando u orden a realizar, los datos asociados  al comando, y una informaci&oacute;n redundante o check sum para asegurar la integridad de la recepci&oacute;n. El protocolo  establece una gran variedad de comandos o funciones,y en este proyecto solo son utilizados los asociados a la modificaci&oacute;n  del valor de varios de los registros del esclavo (writeMultipleRegisters) y la solicitud del contenido de dichos  registros (readHoldingRegisters). Cabe destacar que el est&aacute;ndar oficial establece registros de 16 bits entre otras  especificaciones.<SUP>3</SUP> </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">Luego, como ya se refiri&oacute; anteriormente, en este proyecto se utiliza protocolo Modbus RTU sobre RS232, donde la  PC es el dispositivo maestro y los controladores son los esclavos, aunque se conecta uno a la vez. Por este motivo, no  hay necesidad de especificar direcciones para cada uno de los esclavos, pues todos los mensajes enviados por el  maestro son broadcast o de difusi&oacute;n (direcci&oacute;n 0) y solo ser&aacute;n recepcionados por el &uacute;nico esclavo conectado al mismo.  No obstante, la implementaci&oacute;n de este protocolo brinda la posibilidad de expandir el sistema resultante para de  una manera f&aacute;cil, sin muchos cambios significativos, introducir un sistema de supervisi&oacute;n o SCADA y conectar  los controladores conformando una red Modbus. </font></P>     <P>&nbsp;</P>     <P><font size="3" face="Verdana"><B>DESARROLLO DE LOS CONTROLADORES</B> </font></P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">Como se se&ntilde;al&oacute; previamente, las tarjetas que representan los controladores que componen el sistema propuesto    est&aacute;n basadas en microcontroladores PIC. En este caso se utiliz&oacute; un 16F877 para cada tarjeta. &Eacute;stees un microcontrolador    de 8 bits, perteneciente a la gama media de esta familia y que cumple perfectamente con los requerimientos de    ambas aplicaciones, d&iacute;gase cantidad de memoria, n&uacute;mero de entradas y salidas entre otros aspectos. A continuaci&oacute;n    se expone la configuraci&oacute;n circuital de las mencionadas tarjetas, as&iacute; como el firmware programado en los    microcontroladores para su adecuado funcionamiento. </font></P>     <P><font size="2" face="Verdana"><B>Hardware del controlador de puerta </B> </font></P>     <P><font size="2" face="Verdana">En la <a href="#f4">figura 4</a> se muestra un esquema de la configuraci&oacute;n de hardware de la tarjeta que representa el controlador  de puerta. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f0408313.jpg" width="488" height="278"><a name="f4"></a></P>     
<P><font size="2" face="Verdana">Se utilizaron las l&iacute;neas del nible alto del Puerto B para la recepci&oacute;n de los datos enviados desde los dos lectores que  se pueden conectar a un controlador  pues, seg&uacute;n lo descrito anteriormente sobre el protocolo Wiegand, cada  lector utiliza dos l&iacute;neas para la transmisi&oacute;n de los datos: DATA0 y DATA1. Se conect&oacute; de esta forma para usar la  interrupci&oacute;n por cambio de estado en las cuatro entradas m&aacute;s significativasdel puerto B. De esta forma, cualquier variaci&oacute;n  en alguno de estos pines interrumpe la operaci&oacute;n del microcontrolador coincidiendo con el arribo de alg&uacute;n bit  perteneciente al tren de pulsos correspondiente a un c&oacute;digo enviado por un lector. Otras seis l&iacute;neas de entrada/salida  del microcontrolador, esta vez configuradas como salidas, fueron utilizadas para el manejo de los lectores. En este caso  se reservaron para la conexi&oacute;n de tres hilos de se&ntilde;alizaci&oacute;n que proveen la mayor&iacute;a de los lectores que implementan  el mencionado protocolo para la activaci&oacute;n de los leds rojo y verde, as&iacute; como la bocina. </font></P>     <P><font size="2" face="Verdana">La memoria externa se conect&oacute; usando interface  I<SUP>2</SUP>C, yes la encargada de almacenar los c&oacute;digos de los  usuarios autorizados a acceder a alguna de las puertas pertenecientes al controlador en cuesti&oacute;n. Se decidi&oacute; que la  memoria fuera externa por dos razones fundamentales: </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">1.     La memoria EEPROM interna del microcontrolador no cumple con las necesidades de espacio. </font></P>     <P><font size="2" face="Verdana">2.     Facilita el mantenimiento y reconfiguraci&oacute;n del sistema al ser posible la exportaci&oacute;n/importaci&oacute;n de los datos. </font></P>     <P><font size="2" face="Verdana">La estructura de esta memoria se muestra en la <a href="#f5">figura 5</a>. Como se puede apreciar, se utilizan cuatro localizaciones  para un c&oacute;digo de usuario.En la primera se guarda el Facility Code, que como se dijo anteriormente es un n&uacute;mero de 8  bits. A continuaci&oacute;n se almacena el User Code, que es de 16 bits, por tanto se usan dos localizaciones para ello, en la  primera de &eacute;stas la parte alta y en la </font><font size="2" face="Verdana">segunda la parte baja de este n&uacute;mero. Finalmente la cuarta localizaci&oacute;n del c&oacute;digo la ocupa la pol&iacute;tica de acceso,  que no es m&aacute;s que un n&uacute;mero que identifica el tipo de acceso que tiene el usuario propietario del c&oacute;digo en cuesti&oacute;n. En  la <a href="#t1">Tabla 1</a> se relacionan los tipos de acceso y su correspondiente n&uacute;mero de pol&iacute;tica de acceso. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f0508313.jpg" width="410" height="276"><a name="f5"></a></P>     
<P></P>     <P align="center"><img src="/img/revistas/eac/v34n3/t0108313.jpg" width="320" height="218"><a name="t1"></a></P>     
<P><font size="2" face="Verdana">El n&uacute;mero m&aacute;ximo de usuarios para un controlador se fij&oacute; a 256, cantidad que satisface perfectamente las  necesidades de la aplicaci&oacute;n.Luego, con la estructura antes expuesta, una memoria EEPROM  I<SUP>2</SUP>C de 1Kx8 localizaciones es  necesaria. Para este objetivo se utiliz&oacute; el circuito integrado ST24W08M6R que constituye una memoria con las  caracter&iacute;sticas requeridas. </font></P>     <P><font size="2" face="Verdana">El canal asincr&oacute;nico del puerto serie, o USART del microcontrolador, se reserv&oacute; para la conexi&oacute;n de la tarjeta a una  PC y realizar la configuraci&oacute;n o parametrizaci&oacute;n del controlador por esta v&iacute;a. Es por &eacute;sto que las l&iacute;neas del puerto  serie fueron acopladas a un MAX232, circuito integrado que adapta los niveles de voltaje que maneja el microcontrolador  a los espec&iacute;ficos de la norma RS-232. Por esta v&iacute;a se comunica la PC con el microcontrolador usando protocolo Modbus. </font></P>     <P><font size="2" face="Verdana">Se usaron dos l&iacute;neas m&aacute;s de entrada/salida del microcontrolador (configuradas como salidas) para el accionamiento  de las puertas. Este puede ser basado en diversos tipos de cierre electr&oacute;nico: hembrilla, electroim&aacute;n etc.y,en  cualquier caso cabe destacar que estos elementos son alimentados con 24VDC o 12VDC. Luego se acopl&oacute; a estas dos salidas  del microcontrolador el circuito necesario para el accionamiento a base de relays.   </font></P>     <P><font size="2" face="Verdana">Otras tres l&iacute;neas de entrada/salida del microcontrolador (esta vez configuradas como entradas) fueron usadas  para detectar las se&ntilde;ales REX que, como se dijo anteriormente, pueden proceder de un bot&oacute;n o un sensor de presencia.  En cualquier caso debe conectarse el dispositivo sensor a una de las entradas destinadas para &eacute;sto, en dependencia de  la puerta que se trate. La configuraci&oacute;n de hardware del controlador de puerta incluye un circuito de  acondicionamiento de estas se&ntilde;ales digitales a las entradas del microcontrolador, as&iacute; como una l&oacute;gica para que una activaci&oacute;n de  cualquiera de estas se&ntilde;ales interrumpa al mismo por la l&iacute;nea correspondiente a la interrupci&oacute;n  externa.<SUP>4-5</SUP> </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana"><B>Firmware del controlador de puerta </B> </font></P>     <P><font size="2" face="Verdana">El papel del controlador de puerta es la recepci&oacute;n del c&oacute;digo enviado desde cualquiera de los dos lectores a trav&eacute;s  del protocolo Wiegand y compararlo con los almacenados en la memoria externa para que, en caso de encontrarse  coincidencia y se aplique la pol&iacute;tica de acceso, se proceda a dar el acceso a la puerta en cuesti&oacute;n. El firmware del  microcontroladorse obtuvo utilizando el compilador PCW de CSS, como ya se refiri&oacute; anteriormente, utilizando lenguaje C para la  programaci&oacute;n. Este compilador posee diversas facilidades para el programador, en este trabajo se utilizaron los drivers que brinda  esta herramienta para el manejo de dispositivos  I<SUP>2</SUP>C y para la implementaci&oacute;n de un dispositivo Modbus  esclavo respectivamente. Luego el programa est&aacute; seccionado fundamentalmente en tres funciones: </font></P>     <P><font size="2" face="Verdana">1.     La funci&oacute;n principal: main. </font></P>     <P><font size="2" face="Verdana">2.     La funci&oacute;n de atenci&oacute;n por interrupci&oacute;n por cambio de estado en cualquiera de los cuatro pines m&aacute;s  significativos del puerto B. </font></P>     <P><font size="2" face="Verdana">3.     La funci&oacute;n de atenci&oacute;n por interrupci&oacute;n externa. </font></P>     <P><font size="2" face="Verdana">En la <a href="/img/revistas/eac/v34n3/f0608313.jpg">figura 6</a> se muestra el diagrama de flujo de la funci&oacute;n  principal<B>.</B> En esta funci&oacute;n lo que se hace es  encuestar constantemente por el arribo de alg&uacute;n mensaje Modbus. En caso afirmativo, se identifica cu&aacute;l es el comando  enviado desde el maestro a trav&eacute;s del mensaje en cuesti&oacute;n, yse realiza la acci&oacute;n correspondiente, que no es m&aacute;s que la  lectura o escritura de los registros, y se env&iacute;a una respuesta al maestro. Los comandos que se utilizan en esta aplicaci&oacute;n  son read Holding Register, para la lectura por parte del maestro de los registros que almacenan los c&oacute;digos de  usuariodel controlador conectado, y writeMultipleRegisters en caso de que se quiera modificar el contenido de estos  registros.<SUP>3</SUP> </font></P>     
<P><font size="2" face="Verdana">La <a href="/img/revistas/eac/v34n3/f0708313.jpg">figura 7</a> ofrece un diagrama de flujo de la funci&oacute;n de atenci&oacute;n a la interrupci&oacute;n por cambio de estado en los  cuatro bits m&aacute;s significativos del puerto B. El objetivo fundamental de esta funci&oacute;n es la actualizaci&oacute;n del buffer de  c&oacute;digo Wiegand, pues se ejecutar&aacute; con la llegada de alg&uacute;n bit correspondiente a dicho c&oacute;digo. Esta interrupci&oacute;n  puede presentarse tanto por un flanco de ca&iacute;da como por uno de subida en cualquiera de los pines m&aacute;s significativos  del puerto B<B>.</B> Luego, analizando el funcionamiento del protocolo Wiegand, expuesto con anterioridad, se puede inferir  que el arribo de un bit por alguna de las l&iacute;neas de datos, representado por un pulso a nivel bajo, provocara dos  interrupciones por cambio de estado en el pin conectado a dicha l&iacute;nea. Por este motivo se decidi&oacute; realizar la actualizaci&oacute;n del buffer  de c&oacute;digo Wiegand solo con la detecci&oacute;n del flanco de bajada del pulso correspondiente a la llegada de un bit, por  tanto es necesario primeramente leer el puerto y descartar los posibles casos en que la interrupci&oacute;n haya sido motivada  por un  flanco de subida. En caso afirmativo, es decir que la interrupci&oacute;n haya sido motivada por un flanco de bajada,  se identifica el pin por el que se produce el pulso para de esta forma actualizar el buffer de c&oacute;digo con '1' o '0'  seg&uacute;n corresponda (DATA0 o DATA1) y establecer la puerta de donde viene el c&oacute;digo. Finalmente, se comprueba si se  lleg&oacute; al final del c&oacute;digo, en cuyo caso se debe determinar si el c&oacute;digo arribado est&aacute; autorizado, es decir, si est&aacute;  almacenado en la memoria de c&oacute;digos de usuario.En caso afirmativo, se concede el acceso si se aplica la pol&iacute;tica de acceso. </font></P>     
<P><font size="2" face="Verdana">La funci&oacute;n de atenci&oacute;n a la interrupci&oacute;n externa lo &uacute;nico que hace es determinar por cual de las dos puertas se  produjo el REX y luego permitir el acceso. Se entiende por conceder acceso por una puerta, la acci&oacute;n de desbloqueo de la  misma por parte del controlador por un per&iacute;odo de tiempo de cinco segundos.  </font></P>     <P><font size="2"><b><font face="Verdana">Hardware del controlador de interbloqueo</font></b></font></P>     <P><font size="2" face="Verdana">En la <a href="#f8">figura 8</a> se muestra un esquema de la configuraci&oacute;n de hardware de la tarjeta que representa el controlador  de interbloqueo. </font></P>     ]]></body>
<body><![CDATA[<P align="center"><img src="/img/revistas/eac/v34n3/f0808313.jpg" width="486" height="310"><a name="f8"></a></P>     
<P><font size="2" face="Verdana">Como se puede apreciar, el hardware del controlador de interbloqueo es mucho m&aacute;s simple comparado con el  del controlador de puerta<B>.</B> Est&aacute; formado, en su estructura b&aacute;sica, por ocho entradas digitales con los  correspondientes circuitos de acondicionamiento a las entradas del microcontrolador, y ocho salidas a relay. Al igual que el  controlador de puerta, se usa el canal USART del microcontrolador para la comunicaci&oacute;n con la PC a trav&eacute;s de protocolo  Modbus, por tanto tambi&eacute;n es necesario el empleo del circuito integrado MAX232 explicado  anteriormente.<SUP>4-5</SUP> </font></P>     <P><font size="2" face="Verdana"><B>Firmware del controlador de interbloqueo</B> </font></P>     <P><font size="2" face="Verdana">La funci&oacute;n b&aacute;sica del controlador de interbloqueo no es m&aacute;s que encuestar las entradas y, en dependencia de lo  le&iacute;do y la configuraci&oacute;n previa realizada,activar las salidas correspondientes. La configuraci&oacute;n se realiza a trav&eacute;s de  una aplicaci&oacute;n de parametrizaci&oacute;n que corre en una PC yque se conecta a la tarjeta v&iacute;a RS-232, la cuales guardada en  la memoria EEPROM interna del microcontrolador. La estructura de esta memoria se muestra en la <a href="#f9">figura 9</a>. Como  se puede apreciar, en las localizaciones de la misma se almacena un n&uacute;mero que codifica las salidas que deben  activarse cuando se activa alguna entrada.De esta forma, en las dos primeras localizaciones se encuentra la codificaci&oacute;n de  las salidas para la entrada 0, a continuaci&oacute;n la de la entrada 1 y as&iacute; sucesivamente. Se usaron dos localizaciones para  cada entrada debido a que el protocolo Modbus utiliza registros de 16 bits. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f0908313.jpg" width="366" height="220"><a name="f9"></a></P>     
<P><font size="2" face="Verdana">El algoritmo de la funci&oacute;n principal del programa (main) se representa en la <a href="/img/revistas/eac/v34n3/f1008313.jpg">figura 10</a>. Est&aacute; basado fundamentalmente  en la constante lectura del puerto que constituye las entradas del controlador para luego mapearla con la  configuraci&oacute;n almacenada en la memoria y, de esta forma, conformar el resultado que luego se saca por el puerto de salida.  A continuaci&oacute;n se encuesta por la llegada de un mensaje por protocolo Modbus y,en caso afirmativo, se procede de  la mima forma que en el programa del controlador de puerta. Es decir, se identifica el comando enviado desde el  maestro a trav&eacute;s del mensaje recibido, se realiza la acci&oacute;n correspondiente y se env&iacute;a una respuesta al maestro. </font></P>     
<P>&nbsp;</P>     <P><font size="3" face="Verdana"><B>DESARROLLO DE LA APLICACI&Oacute;N DE PARAMETRIZACI&Oacute;N </B> </font></P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">Para la configuraci&oacute;n de los controladores fue necesario desarrollar una aplicaci&oacute;n de software para que, de    manera f&aacute;cil, amigable e intuitiva, el operador llevara a cabo dicha parametrizaci&oacute;n. Esta aplicaci&oacute;n debe comunicarse    haciendo uso del puerto serie RS-232 de la PC con los controladores para, de esta forma, escribir y leer la    configuraci&oacute;n implementando protocolo Modbus. El desarrollo se llev&oacute; a cabo usando el framework Qt, por las razones    antes expuestas, con C++ como lenguaje de programaci&oacute;n. </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">Se decidi&oacute; implementar una aplicaci&oacute;n de parametrizaci&oacute;n diferente para cada controlador por razones de comodidad  y claridad. No obstante las dos son muy similares, ysolamente difieren en peque&ntilde;os aspectos en cuanto a la forma  de manejar los datos y representar la informaci&oacute;n.  Esto se ilustrar&aacute; mejor a medida que se vaya abordando el proceso  de desarrollo de las aplicaciones, lo cual se describe a continuaci&oacute;n. </font></P>     <P><font size="2"><b><font face="Verdana">Aplicaci&oacute;n de parametrizaci&oacute;n del controlador de puerta</font></b></font></P>     <P><font size="2" face="Verdana">Para el caso del controlador de puerta se procedi&oacute;, en un inicio, a hacer un levantamiento de los requisitos de usuario. </font></P>     <P><font size="2" face="Verdana">Requisitos funcionales: </font></P>     <P><font size="2" face="Verdana">1. La aplicaci&oacute;n debe conectarse con el controlador, leer la configuraci&oacute;n existente y representar la informaci&oacute;n. </font></P>     <P><font size="2" face="Verdana">2. El usuario debe tener la posibilidad de agregar y modificar los c&oacute;digos, as&iacute; como la pol&iacute;tica de acceso. </font></P>     <P><font size="2" face="Verdana">3. La aplicaci&oacute;n debe actualizar el controlador cuando se solicite, para de esta forma descargarle todos los  posibles cambios en la configuraci&oacute;n realizados por el usuario. </font></P>     <P><font size="2" face="Verdana">Requisitos no funcionales: </font></P>     <P><font size="2" face="Verdana">1. Uso de idioma espa&ntilde;ol en todo el proyecto. </font></P>     <P><font size="2" face="Verdana">2. Utilizar un formato y estilo uniforme en todas las ventanas de la aplicaci&oacute;n. </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">A partir del levantamiento de los requerimientos de usuario se definen, entonces, los casos de uso, cuyo diagrama  se muestra en la <a href="#f11">figura 11</a>. El actor del sistema es el administrador, que es el &uacute;nico operador del sistema capaz de  modificar y monitorizar la configuraci&oacute;n de los controladores. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f1108313.jpg" width="532" height="350"><a name="f11"></a></P>     
<P><font size="2" face="Verdana">A partir de los casos de uso se pasa entonces a la etapa de an&aacute;lisis donde se definen las clases que formar&aacute;n parte  de la arquitectura como tal del software y las relaciones entre s&iacute;. Para el dise&ntilde;o de la aplicaci&oacute;n se us&oacute; una estructura  de dos capas, compuesta por la capa de presentaci&oacute;n, que representa la interfaz con el usuario, y la capa de  negocios donde se realiza la l&oacute;gica de la aplicaci&oacute;n as&iacute; como el acceso a datos.</font></P>     <P><font size="2" face="Verdana">La <a href="#f12">figura 12</a> muestra un diagrama de clases de la aplicaci&oacute;n. La capa de negocios est&aacute; formada por una sola    clase: TController, que encapsula todas las operaciones a realizar con los controladores. El acceso a datos se realiza    usando la librer&iacute;a de c&oacute;digo abierto FieldTalk, que posibilita un manejo sencillo del protocolo Modbus sin tener que    dominar muchos detalles del mismo. La capa de vista, o presentaci&oacute;n, est&aacute; estrechamente relacionada con el framework de    Qt, el cual brinda las clases necesarias para el desarrollo de la interfaz de usuario, o GUI de la aplicaci&oacute;n de software.    La interfaz est&aacute; compuesta por una ventana principal, que hereda de la clase QMainWindow de la librer&iacute;a de Qt.As&iacute;    mismo se crean dos ventanas de forma din&aacute;mica del tipo QDialog, para los casos en que el operador desee editar los    c&oacute;digos &oacute; establecer los par&aacute;metros de la conexi&oacute;n con el controlador    respectivamente.<SUP>6-7   </SUP> </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f1208313.jpg" width="548" height="448"><a name="f12"></a></P>     
<P><font size="2" face="Verdana">Cabe destacar que la clase TController, que es desde donde se produce el acceso a los datos a trav&eacute;s de la  librer&iacute;a FieldTalk, tiene un miembro que constituye el modelo de los datos, d&iacute;gase c&oacute;digos y pol&iacute;tica de acceso, que  se muestran en la vista. Aqu&iacute; se ha utilizado un patr&oacute;n de dise&ntilde;o muy difundido en el desarrollo de software  llamado modelo vista controlador (M-V-C), donde se separa el procesamiento de los datos de su presentaci&oacute;n facilitando as&iacute;  la reusabilidad y el mantenimiento. El framework Qt brinda una implementaci&oacute;n m&aacute;s f&aacute;cil de este patr&oacute;n, de modo que  se crea un modelo de los datos creando un objeto de tipo QStandardItemModel y se le asocia un objeto visual de  tipo QTableView a trav&eacute;s del cual se presenta y modifica la informaci&oacute;n </font><font size="2" face="Verdana">del modelo. De esta forma, en la capa de negocios se hace el procesamiento de los datos y la capa de  presentaci&oacute;n funge como interfaz con el  usuario.<SUP>7-8</SUP> </font></P>     <P><font size="2" face="Verdana">Una vez que se tiene el dise&ntilde;o de clases, se hace un an&aacute;lisis m&aacute;s profundo de los casos de uso, pero desde  una perspectiva diferente, ya que se analiza la secuencia de interacciones cronol&oacute;gicas entre objetos individuales  del sistema para que pueda ejecutarse completamente cada caso de  uso.<SUP>9</SUP> </font></P>     <P><font size="2" face="Verdana">La <a href="/img/revistas/eac/v34n3/f1308313.jpg">figura 13</a> muestra la secuencia de eventos para el caso de uso Conectar Controlador. En este caso, en la  ventana principal de la aplicaci&oacute;n, objeto MainWindow de la clase TMainWindow, se brinda la posibilidad a trav&eacute;s de un  bot&oacute;n de que el usuario ordene la conexi&oacute;n con el controlador.Inmediatamente se muestra una ventana de di&aacute;logo donde  se da la posibilidad de especificar los par&aacute;metros de la conexi&oacute;n, d&iacute;gase puerto de la PC, velocidad, etc. Esto &uacute;ltimo  se hace creando un objeto de tipo ConectionDialog heredada de QDialog que presenta los campos asociados a  los par&aacute;metros mencionados y devuelve sus valores una vez que el usuario acepte en la ventana de di&aacute;logo. </font></P>     
<P><font size="2" face="Verdana">Una vez que el objeto MainWindow recibela informaci&oacute;n, entonces se crea un objeto de la clase TController y  ejecuta el m&eacute;todo openProtocol de dicho objeto para abrir la conexi&oacute;n con los par&aacute;metros especificados. A continuaci&oacute;n,  el objeto Controller ejecuta el comando readHoldingRegister perteneciente al protocolo Modbus, a trav&eacute;s del cual se  lee la configuraci&oacute;n actual del controlador conectado. Con esta informaci&oacute;n, entonces, se procede a actualizar el  modelo de los datos, con lo cual se env&iacute;a una se&ntilde;al o mensaje para la actualizaci&oacute;n autom&aacute;tica de la vista por el mecanismo  de Qt para el patr&oacute;n M-V-C antes  mencionado.<SUP>10</SUP> </font></P>     <P><font size="2" face="Verdana">El caso de uso Agregar C&oacute;digo, cuya secuencia se ilustra en la <a href="/img/revistas/eac/v34n3/f1408313.jpg">figura 14</a>, se inicia una vez que el usuario presione  el bot&oacute;n correspondiente de la ventana principal. Cuando el objeto MainWindow recibe la se&ntilde;al de este evento crea  un objeto de la clase EditDialog heredada de QDialog donde se brindan los campos necesarios para la edici&oacute;n del  nuevo c&oacute;digo a agregar. Una vez que el usuario termine la edici&oacute;n, entonces se actualiza el modelo de los datos  perteneciente al objeto Controller y &eacute;ste, autom&aacute;ticamente, lanza una se&ntilde;al para la actualizaci&oacute;n de los mismos en la  vista.<SUP>7</SUP> </font></P>     
]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">La secuencia para el caso de uso Editar C&oacute;digo es similar a la de Agregar C&oacute;digo, la diferencia estriba en un  ligero cambio en el modo de actualizar los datos en el modelo, pues aqu&iacute; no se agrega un nuevo registro sino que se  determina cual es el registro que se quiere cambiar, y se procede a su modificaci&oacute;n. </font></P>     <P><font size="2" face="Verdana">Por &uacute;ltimo, la <a href="/img/revistas/eac/v34n3/f1508313.jpg">figura 15</a> muestra la secuencia de eventos para el caso de uso Actualizar Controlador. Cuando el  usuario lo especifique mediante bot&oacute;n en la ventana principal, el objeto MainWindow instancia la funci&oacute;n actualizar del  objeto Controller.Esta funci&oacute;n ejecuta el comando writeMultipleRegisters correspondiente al protocolo Modbus, el  cual escribe la configuraci&oacute;n de los datos presentes en el modelo en la memoria de configuraci&oacute;n del controlador conectado. </font></P>     
<P><font size="2"><b><font face="Verdana">Aplicaci&oacute;n de parametrizaci&oacute;n del controlador de interbloqueo</font></b></font></P>     <P><font size="2" face="Verdana">En este caso el producto final es similar al del controlador de puerta, y la diferencia estriba en la presentaci&oacute;n de  la informaci&oacute;n.Es decir, las ventanas son las mismas excepto que los elementos que las conforman cambian.  De  esta forma, la ventana principal, en lugar de presentar una tabla para representar los c&oacute;digos del controlador de puerta,  en este caso lo que se tiene es un &aacute;rbol, donde en cada entrada se muestran las salidas que dependen de ella.  Igualmente, esta informaci&oacute;n est&aacute; basada en un modelo que forma parte de una clase TController perteneciente a la capa  de negocio. De la misma forma, la ventana de di&aacute;logo para la edici&oacute;n de la configuraci&oacute;n cambia su composici&oacute;n. </font></P>     <P><font size="2" face="Verdana">Los requisitos de usuario son similares exceptuando el requisito funcional dos del controlador de puerta, pues en  el caso del controlador de interbloqueo no se agregan ni se editan c&oacute;digos, simplemente se relacionan salidas con  las entradas. Por tanto el diagrama de casos de uso tiene un ligero cambio al eliminarse los casos de uso agregar y  editar c&oacute;digo, e incorporar un nuevo caso de uso llamado Editar Configuraci&oacute;n, lo cual se ilustra en la <a href="#f16">figura 16</a>. La  secuencia de eventos para este caso de uso es similar al de agregar y editar c&oacute;digo en el controlador de puerta, solo que  la ventana de edici&oacute;nes diferente. </font></P>     <P align="center"><img src="/img/revistas/eac/v34n3/f1608313.jpg" width="560" height="356"><a name="f16"></a></P>     
<P>&nbsp;</P>     <P><font size="2"><b><font size="3" face="Verdana">RESULTADOS</font></b></font></P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">Despu&eacute;s de la correspondiente simulaci&oacute;n de los controladores utilizando el software    Proteus, se procedi&oacute; al montaje del hardware de los mismos en PICSCHOOL, que como se dijo    anteriormente, consiste en una especie de protoboard donde se pueden probar los prototipos de    aplicaciones basadas en microcontroladores PIC. El resultado esperado para el controlador de puerta, era    que &eacute;ste recibiera correctamente el c&oacute;digo Wiegand enviado desde un lector de proximidad    perteneciente al sistema Kantech. Tambi&eacute;n deb&iacute;a comunicarse correctamente con la aplicaci&oacute;n de    parametrizaci&oacute;n utilizando protocolo Modbus y, seg&uacute;n la configuraci&oacute;n establecida a trav&eacute;s de esta aplicaci&oacute;n,    proveer el acceso a los c&oacute;digos programados. As&iacute; mismo, en el caso del controlador de    interbloqueo lo que se persegu&iacute;a era que respondiera correctamente en la interacci&oacute;n entre las entradas y    las salidas, seg&uacute;n previa configuraci&oacute;n realizada a trav&eacute;s de la aplicaci&oacute;n de configuraci&oacute;n. </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">Las pruebas se fueron realizando de forma gradual, o por pasos. En el caso del controlador  de puerta, primero se comprob&oacute; la comunicaci&oacute;n Modbus a trav&eacute;s de una aplicaci&oacute;n de terceros, que  se comporta como maestro, ejecut&aacute;ndose en la PC conectada al kit a trav&eacute;s del puerto serie RS232.  Con este software se pudo comprobar que las respuestas del controlador a los comandos que se  le enviaban eran correctas. Seguidamente se procedi&oacute; a la utilizaci&oacute;n de la aplicaci&oacute;n  de parametrizaci&oacute;n desarrollada y se conect&oacute; un lector de proximidad del sistema Kantech,  que transmite usando protocolo Wiegand. Se pudo comprobar que los c&oacute;digos configurados y  programados  en el controlador a trav&eacute;s de la aplicaci&oacute;n de parametrizaci&oacute;n, eran aceptados por el  controlador como correctos inmediatamente despu&eacute;s de ser ingresados a trav&eacute;s del lector, comport&aacute;ndose  as&iacute; correctamente en su papel como controlador de puerta. </font></P>     <P><font size="2" face="Verdana">De la misma forma, para el controlador de interbloqueo se utiliz&oacute; el software de terceros  para comprobar la comunicaci&oacute;n Modbus. Se acoplaron las entradas a los conmutadores presentes en  el PICSCHOOL y las salidas a los LEDs. De esta forma se pudo verificarque las salidas se  activaban con la activaci&oacute;n de las entradas respetando la configuraci&oacute;n programada a trav&eacute;s del  software que se desempe&ntilde;aba como maestro Modbus. Luego, continuando con las pruebas, se sustituy&oacute; el  software de terceros por la aplicaci&oacute;n de parametrizaci&oacute;n desarrollada, y se comport&oacute; igualmente.  Por tanto, se puede concluir que el desarrollo de los controladores a escala piloto se llev&oacute; a  cabo satisfactoriamente ydesempe&ntilde;ando su labor correctamente, como se esperaba. </font></P>     <P><font size="2" face="Verdana">En cuanto a la utilizaci&oacute;n de los microcontroladores, en el desarrollo del controlador de  puerta se usaron 19 l&iacute;neas de entrada/salida de las 32 disponibles en el PIC16F877, pero las  restantes pueden ser utilizadas en futuras expansiones o adaptaciones si se quiere conectar  los controladores en red, por ejemplo. Se us&oacute; el canal  I<SUP>2</SUP>C, as&iacute; como el USART y tres fuentes  de interrupci&oacute;n. El firmware ocup&oacute; el 57% de la memoria ROM o de programa y utiliza el 65% de la RAM,  o memoria de datos. En el caso del controlador de interbloqueo, que posee un microcontrolador  similar, igualmente se utiliz&oacute; una parte del total de entrada/salida disponibles, en este caso 18. De  la misma forma las l&iacute;neas restantes pueden ser requeridas para  una expansi&oacute;n por necesidad  de encuestar un mayor n&uacute;mero de entradas, o accionar mayor cantidad de salidas, por citar dos  ejemplos. Tambi&eacute;n se us&oacute; el canal USART y solo una fuente de interrupci&oacute;n. El firmware ocup&oacute; el 20% de la  ROM y utiliza un 39% de la RAM.<SUP>4</SUP> </font></P>     <P>&nbsp;</P>     <P><font size="3" face="Verdana"><B>CONCLUSIONES</B> </font></P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">En el trabajo se ha expuesto la concepci&oacute;n y desarrollo de un sistema de control de acceso    e interbloqueo, lo cual incluy&oacute; la puesta a punto, tanto de los controladores como de la    aplicaci&oacute;n de parametrizaci&oacute;n. Estos elementos fueron testeados arrojando resultados satisfactorios.    El sistema traer&aacute; diversas ventajas y beneficios en su implementaci&oacute;n en el CIM, como sonun    mayor soporte t&eacute;cnico y unamayor personalizaci&oacute;n. El desarrollo de la aplicaci&oacute;n de    parametrizaci&oacute;n se hizo teniendo en cuenta una </font><font size="2" face="Verdana">estructura por capas, as&iacute; como la utilizaci&oacute;n del patr&oacute;n de dise&ntilde;o M-V-C, garantizando un  mayor mantenimiento y reutilizaci&oacute;n del c&oacute;digo, elementos claves en una buena ingenier&iacute;a de  software. En el desarrollo de los controladores, igualmente, se tuvieron en cuenta diversos factores  para un mayor rendimiento y compatibilidad del sistema, como son: </font></P>     <P><font size="2" face="Verdana">&#183;     Empleo de protocolo Wiegand en la comunicaci&oacute;n con los lectores. </font></P>     <P><font size="2" face="Verdana">&#183;     Empleo de protocolo Modbus en la comunicaci&oacute;n con la aplicaci&oacute;n de parametrizaci&oacute;n  que corre en la PC. </font></P>     <P><font size="2" face="Verdana">&#183;     Empleo de memoria externa para almacenar la configuraci&oacute;n en el caso del controlador  de puertas, lo cual facilita el mantenimiento o sustituci&oacute;n de los mismos al posibilitar  la importaci&oacute;n/exportaci&oacute;n de los datos. </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">El sistema obtenido funciona de forma aut&oacute;noma. No obstante, la forma en la que fue  dise&ntilde;ado brinda posibilidades de expansi&oacute;n sin mucha complicaci&oacute;n, para integrarlo en un sistema  de supervisi&oacute;n o SCADA con la implementaci&oacute;n de una red Modbus. </font></P>     <P>&nbsp;</P>     <P><font size="3" face="Verdana"><B>REFERENCIAS</B> </font></P>     <P>&nbsp;</P>     <!-- ref --><P><font size="2" face="Verdana">1.     Pedreira, M. &#171;Supervisi&oacute;n del acceso a locales del Centro de Inmunolog&iacute;a Molecular&#187;.  Tesis de diploma. CUJAE, 2008.     </font></P>     <!-- ref --><P><font size="2" face="Verdana">2.     Cosentino, L. &#171;Control de Accesos, Elementos de Identificaci&oacute;n&#187;. RNDS. 2008, 168 p.      </font></P>     <!-- ref --><P><font size="2" face="Verdana">3.     Pefhany, S. Modbus Protocol. 2000.     </font></P>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana">4.     Microchip Technology Inc. PIC16F87XA Data  Sheet. 1998. </font></P>     <!-- ref --><P><font size="2" face="Verdana">5.     Breijo, E.G. Compilador C CCS y Simulador Proteus para Microcontroladores  Pic. M&eacute;xico: Marcombo, 2008. 276 p. ISBN: 978-970-15-1397-2.     </font></P>     <!-- ref --><P><font size="2" face="Verdana">6.     Eeles, P. Layering Strategies. Cupertino: Rational Software, 2002. 13 p.     </font></P>     <!-- ref --><P><font size="2" face="Verdana">7.     Thelin, J. Foundations of Qt  Development. New York: Apress, 2007. 528 p. ISBN: 978-1-59059-831-3 </font><!-- ref --><P><font size="2" face="Verdana">8.     Gamma, E. , Helm, R., Johnson, R., Vlissides, J.        Design Patterns: Elements of Reusable Object-Oriented  Software. 1997. 431 p.     </font></P>     <!-- ref --><P><font size="2" face="Verdana">9.     Schmuller, J. Aprendiendo UML 24  horas. 2004. 398 p.     </font></P>     ]]></body>
<body><![CDATA[<!-- ref --><P><font size="2" face="Verdana">10.     FieldTalk Inc. FieldTalk Modbus Master C ++ Library Software  manual.     2009. </font></P>     <P>&nbsp;</P>     <P>&nbsp;</P>     <P><font size="2" face="Verdana">Recibido: Julio 2013    <br>   Aprobado: Septiembre 2013 </font></P>     <P></P>     <P>&nbsp;</P>     <P>&nbsp;</P>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pedreira]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Supervisión del acceso a locales del Centro de Inmunología Molecular]]></source>
<year>2008</year>
<publisher-name><![CDATA[CUJAE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cosentino]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[Control de Accesos, Elementos de Identificación]]></article-title>
<source><![CDATA[RNDS]]></source>
<year>2008</year>
<page-range>168</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pefhany]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<source><![CDATA[Modbus Protocol]]></source>
<year>2000</year>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pefhany]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<person-group person-group-type="editor">
<name>
</name>
</person-group>
<source><![CDATA[PIC16F87XA Data Sheet.]]></source>
<year>1998</year>
<publisher-name><![CDATA[Microchip Technology Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Breijo]]></surname>
<given-names><![CDATA[E.G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Compilador C CCS y Simulador Proteus para Microcontroladores Pic.]]></source>
<year>2008</year>
<page-range>276</page-range><publisher-name><![CDATA[Marcombo]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Eeles]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Layering Strategies]]></article-title>
<source><![CDATA[Cupertino: Rational Software]]></source>
<year>2002</year>
<page-range>13</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Thelin]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Foundations of Qt Development]]></source>
<year>2007</year>
<page-range>528</page-range><publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[Apress]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gamma]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Helm]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Johnson]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Vlissides]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Design Patterns: Elements of Reusable Object-Oriented Software]]></source>
<year>1997</year>
<page-range>431</page-range></nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schmuller]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Aprendiendo UML 24 horas]]></source>
<year>2004</year>
<page-range>398</page-range></nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schmuller]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<person-group person-group-type="editor">
<name>
</name>
</person-group>
<source><![CDATA[FieldTalk Modbus Master C ++ Library Software manual]]></source>
<year></year>
<publisher-name><![CDATA[FieldTalk Inc.]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
