Documentos de Académico
Documentos de Profesional
Documentos de Cultura
-1-
Índice
1. Índice
1 Índice 2
2 Estudio Situación Actual en la Industria. 5
2.1 Introducción 5
2.2. Evolución de la automatización industrial. 5
2.2.1. Estructuras generales de los sistemas de control industriales. 7
2.2.2. Control Centralizado. 8
2.2.3. Control Centralizado Multicapa. 8
2.2.3.1. Prestaciones. 9
2.2.3.2. Requisitos. 9
2.2.3.3. Módulos de un SCADA. 10
2.2.4. Control Distribuido. 10
2.3. Características específicas de las redes locales Industriales. 12
2.3.1. Características. 12
2.3.1.1. Entorno de funcionamiento hostil. 12
2.3.1.2. Restricciones Temporales. 12
2.3.1.3. Arquitecturas Adecuadas. 12
2.3.2. Jerarquía entre los niveles de comunicación. 12
2.3.2.1. Red de Factoría. 17
2.3.2.2. Red de Planta. 17
2.3.2.3. Red de Célula. 17
2.3.2.4. Bus de Campo (field bus). 18
2.4. Ejemplos de estudio. 22
2.4.1. Redes Map y Top. 22
2.4.1.1. Características de las redes MAP destacables. 24
2.4.2. Redes MINIMAP. 24
2.4.3. Ethernet Industrial. 26
2.4.4. PROFIBUS. 29
2.4.4.1. Estructura. 30
2.4.4.2.. Configuración física de Bus. 31
2.4.4.3. Versiones Compatibles. 32
2.4.4.4.. Estructura de la red. 35
2.4.4.5. Tecnología de transmisión. 37
2.4.5.. AS-I AKTUATOR SENSOR INTERFACE. 39
2.4.6.. INTERBUS. 41
2.4.7. CAN: CONTROLLER AREA NETWORKING. 44
2.4.8.. Comparación de los casos estudiados. 47
3. Estudio y desarrollo de un control distribuido para una planta. 48
3.1. Introducción. 48
3.2.. Estación de trabajo. 50
3.2.1. Software. 50
3.2.2. Funcionamiento. 51
3.2.2.1. Pantalla Inicio. 51
2
Índice
3
Índice
4
Estudio Situación Actual en la Industria.
2.1. Introducción.
El desarrollo del control distribuido en la industria va paralelo al de las comunicaciones.
Cada vez es más necesario disponer de dispositivos inteligentes para realizar el control o la
supervisión remota, tanto de procesos de fabricación, como de almacenamiento o
distribución.
Los sistemas o redes de comunicación empleados en entornos industriales se encuentran
sometidos a una problemática específica que condiciona enormemente su diseño y los
diferencia de las redes de datos o redes de oficina. El desarrollo de los microprocesadores,
microcontroladores y los controladores lógicos programables (PLCs) dio lugar a la
aparición del control distribuido. En este tipo de esquema, un PLC o un microprocesador
controla una o más variables del sistema realizando un control directo de las mismas. Estos
equipos de control local se comunican con otros elementos de su nivel y con el nivel
superior de supervisión.
Los primeros PLCs se usaron para controlar procesos secuenciales (cadenas de montaje,
transporte, etc.). El problema que presentaba era que su memoria era cableada, por lo que
la reutilización es posible pero costosa. Se empezaron implementar memorias con
semiconductores eliminando las memorias cableadas mayor flexibilidad por la facilidad de
programación. Pero por entonces todavía la tecnología de los microprocesadores no era
-5-
Estudio Situación Actual en la Industria.
En los años "90 cuando los sistemas de control basado en PC hicieron su aparición en la
escena de la automatización industrial, los partidarios de estos sistemas más poderosos y
abiertos afirmaban que dichos sistemas podrían llegar a suplantar a los controladores
lógicos programables (PLC's) y hasta los sistemas de control distribuidos (DCS's) en
numerosas aplicaciones. El PC tenía mucho que ofrecer, pero no suplantaría las
plataformas ya probadas de control industrial, no por lo menos en la forma de un PC de
escritorio. El PC era la mejor opción a la hora de integrar funcionalidad avanzada, como
puede ser conectividad de base de datos, integración, control analógico y simulación
basados en Web y comunicación de datos con terceros. El problema con el control basado
en PC ha sido siempre este. Los PC's que corren en sistemas operativos estándares con
hardware común resultan demasiado frágiles y temperamentales como para brindar un
control industrial confiable.
El resultado de todas estas innovaciones fue la aparición de controladores híbridos que
permiten manejo de variables analógicas y digitales, en conjunto con características como
procesador de punto flotante para cálculos personales, servidor Web interactivo embebido
que facilita las tareas de control y monitoreo, flash compacto removible para la recolección
y registro de datos, puertos seriales múltiples y conexionado mediante buses de campo para
la comunicación con terceros.
6
Estudio Situación Actual en la Industria.
En la misma pueden verse dos áreas bien definidas: Una la parte operativa y otra la parte
de control. En la parte operativa tenemos los dispositivos de hardware y software que
brindan la información necesaria para llevar a cabo las operaciones de planta necesarias,
con una interfaz amigable y entendible para el operador.
En la parte de control encontramos a los dispositivos de control (PLC's, DCP'S y PC’s
industriales) que permiten llevar a cabo las acciones de control en conjunto con los
actuadores. Entre todos estos dispositivos hay comunicación vertical (desde la parte de
control hacia la operativa y viceversa) y comunicaciones horizontales (entre distintos
dispositivos de control).
Las dos arquitecturas más conocidas de control industrial, aunque cabe aclarar que no son
las únicas y muchas soluciones de automatizaciones son una mezcla de estas que se adapta
a las necesidades específicas de cada situación.
7
Estudio Situación Actual en la Industria.
8
Estudio Situación Actual en la Industria.
2.2.3.1. Prestaciones:
Un paquete SCADA debe estar en disposición de ofrecer las siguientes prestaciones:
• Posibilidad de crear paneles de alarmas, que exigen la presencia del operador para
reconocer una parada o situación de alarma, con registro de incidencias.
• Generación de históricos de señal de planta, que pueden ser volcados para su
proceso sobre una hoja de cálculo.
• Ejecución de programas, que modifican la ley de control, o incluso anular o
modificar las tareas asociadas al autómata, bajo ciertas condiciones.
• Posibilidad de programación numérica, que permite realizar cálculos aritméticos de
elevada resolución sobre la CPU del ordenador.
Con ellas, se pueden desarrollar aplicaciones para ordenadores (tipo PC, por ejemplo), con
captura de datos, análisis de señales, presentaciones en pantalla, envió de resultados a disco
e impresora, etc.
Además, todas estas acciones se llevan a cabo mediante un paquete de funciones que
incluye zonas de programación en un lenguaje de uso general (como C, Pascal, o Basic), lo
cual confiere una potencia muy elevada y una gran versatilidad. Algunos SCADA ofrecen
librerías de funciones para lenguajes de uso general que permiten personalizar de manera
muy amplia la aplicación que desee realizarse con dicho SCADA.
2.2.3.2. Requisitos:
Un SCADA debe cumplir varios objetivos para que su instalación sea perfectamente
aprovechada:
• Deben ser sistemas de arquitectura abierta, capaces de crecer o adaptarse según
las necesidades cambiantes de la empresa.
9
Estudio Situación Actual en la Industria.
Existencia de varias unidades de control que llevan a cabo las tareas. En caso de avería o
sobrecarga de trabajo, será posible transferir todo o parte de las tareas a otras unidades.
10
Estudio Situación Actual en la Industria.
La idea de poder hacer bypass a las unidades con problemas permite evitar los bloqueos
necesarios del sistema, (paradas de planta) pero por otra parte exige que los diferentes
controladores tengan una asignación dinámica de las tareas y por tanto se les va a exigir
gran capacidad de acceso a la comunicación y de tratamiento de la información.
La desventaja de esto es la disminución de la velocidad de comunicación debido a los
retardos, posibles desbordamientos en el procesamiento de datos en cada nivel y falta de
flujo de información directa entre controladores. Pero esto está siendo solucionado por la
aparición de nuevas tecnología de comunicación de datos cada vez más potentes
Aquí vemos que también tenemos una unidad de control y supervisión (SCADA) que
cumple con las características antes mencionadas para el control centralizado multicapa.
A continuación se muestra una tabla comparativa sobre los aspectos principales de las dos
arquitecturas antes mencionadas.
TIPO DE CENTRALIZADA DISTRIBUIDA
ARQUITECTURA
RLGt." LATO RIO:
SUPERVISORIO: Lazos
de control cerrados por el Lazos de control cerrados
TIPO DE CONTROL automáticamente por el
operador. Adicional mente:
PREDOMINANTE sistema. Adicionalmente:
control secuencia] y
regulatorio. control secuencia, batch,
algoritmos avanzados, etc.
TIPOS DE VARIABLES DESACOPLADAS ACOPLADAS
Arcas geográficamente
ÁREA DE ACCIÓN Arca de la planta.
distribuidas.
UNIDADES DE
ADQUISICIÓN DE Controladores de lazo, PLC's,
Remotas, PLC's.
DATOS DCS's
Y CONTROL
Radio, satélite, líneas
MEDIOS DE telefónicas, conexión Redes de área local, conexión
COMUNICACIÓN directa. directa.
I.AN. WAN.
BASE DE DATOS CENTRALIZADA DISTRIBUIDA
A partir de lo expuesto hasta aquí se puede observar que la comunicación entre
controladores es un aspecto fundamental para el funcionamiento de un sistema de control
distribuido. A continuación se detallaran las características que deben tener estas redes de
controladores para operar en el ambiente de planta.
11
Estudio Situación Actual en la Industria.
2.3.1. Características:
En general, las redes de datos están orientadas al transporte de grandes paquetes de datos,
que aparecen de forma esporádica (baja carga), y con un gran ancho de banda para permitir
el envío rápido de una gran cantidad de datos. En contraste, las redes de control se
enfrentan a un tráfico formado por un gran número de pequeños paquetes.
En principio, las redes de datos convencionales podrían emplearse para su uso como redes
de control, sin embargo, es evidente que no resultan adecuadas para las necesidades de este
tipo de aplicaciones. Por ejemplo, es sabido que la red Ethernet tiene una gran eficiencia,
hasta el 90-95% de la capacidad del canal cuando los mensajes son largos y
suficientemente espaciados. Sin embargo, la cantidad de información que una red Ethernet
es capaz de transportar cae bruscamente cuando se utiliza por encima del 35% de la
capacidad del canal, si el tamaño de los mensajes es pequeño, como puede verse en la
figura 6. En las redes de control es habitual encontrar este tipo de carga, porque el tráfico
de la red depende directamente de eventos estemos que están siendo controlados (o
monitorizados) por los diferentes nodos que la componen. A menudo, varios nodos
necesitan enviar información simultáneamente en función de uno o más eventos estemos.
Este hecho, junto con el gran número de nodos que suelen estar presentes, implica la
existencia de frecuentes periodos en los que muchas estaciones envían pequeños paquetes
de información.
Ilustración 6 Comparación de la Red Ethernet ante variaciones del tamaño de los paquetes.
Por todas estas razones, es necesario diseñar una arquitectura de red acorde a las
características particulares de este tipo de tráfico. En el diseño se deberán tener en cuenta
aspectos como los tipos de protocolos utilizados, la interoperabilidad, la topología y la
facilidad de administración. Deben usarse protocolos abiertos, disponibles por toda la
13
Estudio Situación Actual en la Industria.
comunidad de fabricantes y usuarios. Este aspecto es básico para conseguir que equipos de
diferentes fabricantes puedan trabajar en conjunto en una misma red. También juega un
papel fundamental determinar el tipo de información que viajará por la red. En las redes de
oficina, esta información consiste básicamente en datos de usuario y en algunas ocasiones
información para la administración y el mantenimiento de la propia red.
En una red de control, esta elección es menos clara ya que el correcto funcionamiento de la
red es vital.
Pueden distinguirse dos tipos de redes según la información que transporten: redes basadas
en comandos y redes basadas en estado. En las redes basadas en comandos, la información
consiste en una orden con la que un nodo controla el funcionamiento de otro. El principal
problema radica en que si se dispone de un amplio conjunto de tipos de nodos, habrá un
aumento exponencial del número de posibles comandos y de la sobrecarga que supone su
procesamiento.
En las redes orientadas a estado las cosas son más sencillas. En este caso, la funcionalidad
de un nodo no depende de ningún otro. Cada nodo enviará mensajes en los que indicará a
los demás el estado en que se encuentra. Los nodos que reciban estos mensajes
modificarán su estado en función de la nueva información. Existen implementaciones que
combinan ambos métodos.
14
Estudio Situación Actual en la Industria.
Por lo que se refiere al tipo de topología que deben adoptar las redes de control, cabe
destacar que cualquiera de las topologías clásicas de las redes de datos es válida. Cada una
de ellas con sus propias ventajas y limitaciones. Cualquiera puede satisfacer las
necesidades de cableado, prestaciones y coste de algún tipo de aplicación. La elección está
determinada fundamentalmente por el control de acceso al medio y el tipo de medio que se
emplea. El conjunto formado por el medio, el control de acceso y la topología, afecta
prácticamente a cualquier otro aspecto de la red de control: coste, facilidad de instalación.
Habilidad, prestaciones, facilidad de mantenimiento y expansión.
La selección de la topología suele hacerse basándose en los requisitos específicos de cada
sistema en cuanto a coste de instalación y tolerancia a fallos. Muchas redes de control
permiten el uso de distintas topologías.
El control de acceso al medio es vital. Elegida una topología, hay que definir como
accederá cada nodo a la red. El objetivo es reducir las colisiones (idealmente eliminarlas)
entre los paquetes de datos y reducir el tiempo que tarda un nodo en ganar el acceso al
medio y comenzar a transmitir el paquete. En otras palabras, maximizar la eficiencia de la
red y reducir el retardo de acceso al medio. Este último parámetro es el factor principal a la
hora de determinar si una red sirve para aplicaciones en tiempo real o no.
El direccionamiento de los nodos es otro de los aspectos claves. En una red de control, la
información puede ser originada y/o recibida por cualquier nodo. La forma en que las
direcciones los paquetes de información afectarán de forma importante a la eficiencia y la
viabilidad global de la red. Se pueden distinguir tres tipos de direccionamiento:
a. Unicast: El paquete es enviado a un único nodo destino.
b. Multicast: El paquete es enviado a un grupo de nodos simultáneamente.
c. Broadcast: El paquete es enviado a todos los nodos de la red simultáneamente.
El direccionamiento broadcast presenta la ventaja de su sencillez. Es adecuado para redes
basadas en información de estado. Cada nodo informa a todos los demás de cuál es estado
actual. El principal inconveniente es que los nodos pueden tener que procesar paquetes que
no les afecten directamente. Los esquemas de direccionamiento unicast y multicast son
más eficientes, y facilitan operaciones como el acuse de recibo y el reenvió, características
que aumentan la Habilidad del sistema. En redes de control, es muy habitual encontrar
esquemas de direccionamiento del tipo maestro-esclavo. Este tipo de esquemas permite
plasmar ciertos aspectos jerárquicos del control de forma sencilla- a la vez que simplifica
el funcionamiento de la red y por tanto abarata los costes de la interfaz física.
La elección del medio físico afecta a aspectos tales como la velocidad de transmisión,
distancia entre nodos y fiabilidad. En muchas redes de control se recurre a una mezcla de
distintos medios físicos para cumplir con los requisitos de diferentes secciones al menor
coste posible. Se incorporarán los routers, puentes o repetidores necesarios para asegurar el
objetivo de una comunicación extremo a extremo transparente, al menor coste posible, y
sin que la integración conlleve una disminución de las prestaciones.
El control en tiempo real demanda de las redes de control buenos tiempos de respuesta
(baja latencia). Por ejemplo, el retardo entre la detección de un objeto en una línea de
montaje de alta velocidad y el arranque de una máquina de pintado puede ser del orden de
decenas de milisegundos. En general, las redes de datos no necesitan una respuesta en
15
Estudio Situación Actual en la Industria.
tiempo real cuando envían grandes conjuntos de datos a través de la red. El control de
acceso al medio y el número de capas implementadas en la arquitectura de red resultan
determinantes a la hora de fijar la velocidad de respuesta de la red. La implementación de
las siete capas del modelo OSI implica una mayor potencia de proceso por la sobrecarga
que conlleva con respecto a un sistema más sencillo que por ejemplo sólo implementase las
dos primeras capas. En ocasiones, los beneficios que aportan las capas adicionales
compensan la sobrecarga adicional (que implica un mayor costo), sobre todo a medida que
aumenta la funcionalidad demandada de la red y mejora la tecnología disponible. Cuando
la velocidad es el factor esencial, como ocurre con muchos buses de campo, el modelo
puede aligerarse ya que en la mayor parte de este tipo de aplicaciones las capas de red,
transporte, sesión y presentación no son necesarias, como muestra el esquema de la
ilustración 8.
16
Estudio Situación Actual en la Industria.
17
Estudio Situación Actual en la Industria.
II. Categorías:
• Redes de autómatas (generalmente dependen del fabricante): por ejemplo Jnct.
Jbus, Modbus, Uni-Telway.
• Redes locales heterogéneas: LAC-1, LAC-2.
• Redes normalizadas: Mini-MAP que resulta de una simplificación de MAP para
poder utilizar en entornos de tiempo real, en donde, el nivel de aplicación acceda
directamente al nivel de enlace del modelo OSI y PROWAY (Process Data Highway)
que consiste en una topología en bus y mecanismo de acceso por paso de testigo,
cuyos aspectos funcionales están orientados a su aplicación en control de procesos.
• Redes de propósito general: Ethernet.
Los controladores actuales disponen de dispositivos configurables de manera que
puedan comunicarse en alguna o varias de las categorías antes mencionadas.
También existen dispositivos que permiten pasar de un protocolo a otro sin
problemas, son como los Gateway de las redes de computadoras convencionales. (En
la sección 5 se abarcaran ejemplos concretos de estas redes).
2.3.2.4. Bus de Campo (field bus):
Un bus de campo es un término genérico que describe un conjunto de redes de
comunicación para uso industrial, cuyo objetivo es sustituir las conexiones punto a punto
entre los elementos de campo y el equipo de control a través del tradicional bucle de
corriente de 4-20mA. Típicamente son redes digitales, bidireccionales, multipunto,
montadas sobre un bus serie, que conectan dispositivos de campo como PLC’s,
transductores, actuadores y sensores. Cada dispositivo de campo incorpora cierta capacidad
de proceso, que lo convierte en un dispositivo inteligente, manteniendo siempre un costo
18
Estudio Situación Actual en la Industria.
bajo. Cada uno de estos elementos será capaz de ejecutar funciones simples de
autodiagnóstico, control o mantenimiento, así como de comunicarse bidireccionalmente a
través del bus.
El objetivo es reemplazar los sistemas de control centralizados por redes para control
distribuido con las que mejorar la calidad del producto, reducir costes y mejorar la
eficiencia. Para ello se basa en que la información que envían y/o reciben los dispositivos
de campo es digital, lo que resulta mucho más preciso que si se recurre a métodos
analógicos. Además, cada dispositivo de campo es un dispositivo inteligente y puede llevar
a cabo funciones propias de control, mantenimiento y diagnóstico. De esta forma, cada
nodo de la red puede informar en caso de fallo del dispositivo asociado, y en general sobre
cualquier anomalía asociada al dispositivo. Esta monitorización permite aumentar la
eficiencia del sistema y reducir la cantidad de horas de mantenimiento necesarias.
La principal ventaja que ofrecen los buses de campo, y la que los hace más atractivos a los
usuarios finales, es la reducción de costes. El ahorro proviene fundamentalmente de tres
fuentes: ahorro en coste de instalación, ahorro en el coste de mantenimiento y ahorros
derivados de la mejora del funcionamiento del sistema. Una de las principales
características de los buses de campo es una significativa reducción en el cableado
necesario para el control de una instalación. Cada célula de proceso sólo requiere un cable
para la conexión de los diversos nodos. Se estima que puede ofrecer una reducción de 5 a 1
en los costes de cableado. En comparación con otros tipos de redes, dispone de
herramientas de administración del bus que permiten la reducción del número de horas
necesarias para la instalación y puesta en marcha. El hecho de que los buses de campo sean
más sencillos que otras redes de uso industrial como por ejemplo MAP, hace que las
necesidades de mantenimiento de la red sean menores, de modo que la confiabilidad del
sistema a largo plazo aumenta. Además, los buses de campo permiten a los operadores
monitorizar todos los dispositivos que integran el sistema e interpretar fácilmente las
interacciones entre ellos. De esta forma, la detección de las fuentes de problemas en la
planta y su corrección resulta mucho más sencilla, reduciendo los costes de mantenimiento
y el tiempo de parada de la planta. Los buses de campo ofrecen mayor flexibilidad al
usuario en el diseño del sistema. Algunos algoritmos y procedimientos de control que con
sistemas de comunicación tradicionales debían incluirse en los propios algoritmos de
control, radican ahora en los propios dispositivos de campo, simplificando el sistema de
control y sus posibles ampliaciones. También hay que tener en cuenta que las prestaciones
del sistema mejoran con el uso de la tecnología de los buses de campo debido a la
simplificación en la forma de obtener información de la planta desde los distintos sensores.
Las mediciones de los distintos elementos de la red están disponibles para todos los demás
dispositivos. La simplificación en la obtención de datos permitirá el diseño de sistemas de
control más eficientes. Con la tecnología de los buses de campo, se permite la
comunicación bidireccional entre los dispositivos de campo y los sistemas de control, pero
también entre los propios dispositivos de campo. Otra ventaja de los buses de campo es
que sólo incluyen 4 capas (Física. Enlace. Aplicación y Usuario), y un conjunto de
servicios de administración. El usuario no tiene que preocuparse de las capas de enlace o
de aplicación. Sólo necesita saber cual es funcionalidad. Al usuario sólo se le exige tener
un conocimiento mínimo de los servicios de administración de la red, ya que parte de la
19
Estudio Situación Actual en la Industria.
información generada por dichos servicios puede ser necesaria para la reparación de
averías en el sistema. De hecho, prácticamente, el usuario sólo debe preocuparse de la capa
física y la capa de usuario.
I. Comunicación en el Bus:
Los métodos utilizados en los buses de campo para actualizar los datos de proceso o
entrada/salida son:
a. Strohe:
Petición de información por parte del maestro (dispositivo de control) y envío desde
los dispositivos esclavos (sensores - actuadores). Este método es muy eficiente para
sensores.
b. Polling:
El maestro envía información de salida al dispositivo y éste le responde con la
información de entradas.
c. Cambio de estado:
El dispositivo no transmite información hasta que se modifica el estado de las
variables. Muy eficiente en sistemas discretos.
d. Cíclico:
El dispositivo envía la información a la red en un intervalo de tiempo prefijado.
Además el bus de campo debe incorporar los servicios de comunicación necesarios
para los procesos de configuración, programación y test del bus.
20
Estudio Situación Actual en la Industria.
• Profibus
• FIP
• Fieldbus Foundation
21
Estudio Situación Actual en la Industria.
y superior fueran totalmente compatibles. Las torres de protocolos de las redes MAP y
TOP siguen capa a capa el modelo OSI. La principal diferencia entre ambas redes está en
el medio físico y en el control de acceso al medio. Mientras las redes MAP sólo
contemplan el uso de paso de testigo en bus de acuerdo con el estándar IEEE 802.4, paso
de testigo en bus (Token Bus), la red TOP permite tanto el uso de Ethernet (o IEEE 802.3),
como de paso de testigo en anillo, Token Ring (IEEE 802.5). El resto de protocolos son
coincidentes. Para la capa de enlace, ambas redes se basan en el protocolo 802.2 (LLC) de
control lógico de enlace, operando en el modo sin conexión como un servicio ofrecido a la
capa de red. La capa de red utiliza el protocolo ISO 8473, que es muy parecido al
protocolo IP. La razón de esta elección es porque con el conocimiento que se tenía sobre la
interconexión de redes en ARPA (el origen de Internet), se demostró que el planteamiento
data grama es más flexible y robusto cuando se conectan redes heterogéneas múltiples, que
es un aspecto importante para las redes MAP y TOP. La capa de transporte se basa en el
protocolo ISO 8073. Se supone que la capa de red no es del todo fiable y gestiona el
control de error y de flujo. De esta forma MAP y TOP han podido conectarse a casi
cualquier tipo de red sin importar las deficiencias de éstas. El precio que se paga es la
necesidad de tener una capa de transporte complicada para ocuparse del servicio no fiable
de la red. Las capas de sesión y presentación utilizan los protocolos ISO 8327 e ISO 8823
respectivamente. Las normas OSI también se utilizan en la capa de aplicación,
particularmente el protocolo de transferencia de archivos y el de terminal virtual.
• Acceso a variables
• Manejo de eventos
• Control de ejecución de los programas
• Comunicación con el operario
• Paso de ficheros
• Manejo de recursos comunes
• Acceso al estado de aparatos remotos
• Carga de programas
• Grabación histórica de eventos
23
Estudio Situación Actual en la Industria.
En una red MAP, en teoría, todos los nodos llevan implantadas las 7 capas del modelo de
referencia OSI.
El grado de complejidad que esto supone y el tiempo necesario para el intercambio de
unidades de protocolo de cada capa, ha provocado la aparición de una opción más sencilla,
que será estudiada en la sección 5.2.
MAP no cubre el nivel de bus de campo (estación y proceso), lo considera un nivel inferior
que se integra en la red mediante dispositivos inteligentes (PLC’s, PCs,...).Estos
dispositivos dispondrán de una conexión de enlace con MAP directamente o a través de
otro dispositivo. El MAP es un protocolo pensado para redes de tipo WAN incluye los
niveles de red, transporte, sesión y presentación. Esto le permite el fraccionamiento de
paquetes y el encaminamiento de los mismos a través de redes públicas o privadas. Lo que
resulta excesivamente costoso y complejo para pequeñas y medianas aplicaciones, sobre
todo para la interconexión de pequeños controladores a nivel industrial.
Basada en un bus con transmisión de banda ancha multicanal, que permite interconectar
los sistemas de control de planta con las aplicaciones de gestión, oficina, CAD.
Ordenadores de planta, canales de datos, voz, imágenes- ya sean estos locales o remotos.
También se modificaron las capas física y de enlace. En la capa física se prescinde del
sistema de transmisión en banda ancha sobre cable coaxial y se pasa a una transmisión en
banda portadora, también sobre coaxial, que abarata enormemente el sistema de cableado y
sobre todo el interfaz de red que precisa cada dispositivo. Esto permite que pueda ser
24
Estudio Situación Actual en la Industria.
empleado con elementos de control en tiempo real de bajo coste. En la capa de enlace, en
el LLC (control lógico de enlace) se sustituye la norma IEEE 802.2 de tipo 1 por la IEEE
802.2 de tipo 3. Esta última proporciona los servicios de Envió de datos con acuse de
recibo y de Petición de datos con respuesta. Esto obliga a una interoperabilidad entre el
LLC y el MAC (mecanismo de detección y corrección de colisiones), teniendo este último
que incorporar la opción de prioridad de respuesta inmediata. Es decir, la estación que
transmite cede (junto con el mensaje que envía) el testigo a la receptora para que esta acuse
recibo o responda a la petición de datos de forma inmediata. Esto lógicamente permite
minimizar los tiempos de respuesta con el fin de ofrecer un buen servicio en tiempo real.
La capa de aplicación incorpora los mismos servicios MMS que MAP, lo que permite que
esta capa se pueda comunicar con una homologa en una red MAP a través de una pasarela
que incorpore las capas que le faltan a MINI-MAP.
La falta de la capa de red impide que haya comunicación extremo a extremo entre nodos
que se encuentran en segmentos separados por encaminadores (routers). Esto no plantea
ningún inconveniente puesto que elementos que han de trabajar en tiempo real deben
conectarse al mismo bus, para evitar las demoras que introducirían los elementos
intermedios.
Por otro lado, las funciones de la desaparecida capa de transporte son asumidas por el LLC
tipo 3 y el mapeado de las funciones entre el LLC y el MMS. Topología y estructura
lógica MINIMAP dispone de una topología de bus con un máximo de 64 nodos, pero
desde el punto de vista lógico funciona como un anillo. La codificación se realiza por
modulación de frecuencia en banda base y la transmisión de tipo síncrono. Cada estación
tiene asignada una dirección única e independiente de su situación física, formada por un
número de red (0 a 127) más un número de estación (0 a 62). El número de red 0 es para
arquitecturas
mono segmento y de I a 127 para multisegmento (varias MINIMAP integradas en una red
MAP).
Al inicializar la red, el testigo se le asigna a la dirección de la estación más alta y el paso
de testigo se realiza por orden decreciente de direcciones. Cuando un nodo recibe testigo
transmite y pasa el testigo, si no tiene mensajes que transmitir pasa el testigo. El tiempo de
posesión del testigo limitado a 800μs.
I. Protocolo:
25
Estudio Situación Actual en la Industria.
Partes Constitutivas:
• Preámbulo 2 bytes: 55 hex. secuencia de 0 y I que se utiliza para la sincronización
y permite localizar el primer BIT útil.
• Inicio trama: carácter especial que depende de la codificación empleada
• Tipo de Trama 1 byte: MAC (Control de acceso al medio) y LLC (control lógico
de enlace)
• Direcciones destino/origen MAC: 6 bytes indican tipo de mensaje (punto a punto
o difundido), los nodos de destino u origen, el número de red y el tipo de servicio
(palabras comunes, memoria compartida,….)
• Datos/Control LLC: Contiene la códigos de registros o áreas de memoria de
origen y destino, así como el código de control LLC, que son ya propios de los
equipos de origen y destino del mensaje.
• CRC: 4 bytes para control de errores
• Fin de trama: al menos un BIT de error y un BIT que marca si es el final de
mensaje o se ha interrumpido por límite de tiempo en la posesión del testigo.
Como el acceso a la red es por paso de testigo y este se ejecuta por orden de mayor
dirección a menor, en caso de pérdida de testigo o arranque de la red una estación no
conoce la dirección de la estación que le precede o le sigue. Para esto existen
procedimientos de inicialización y reinicialización los que permiten crear una tabla con
esta información en cada estación.
Los procedimientos de inicialización y reinicialización se ejecutarán en los siguientes
casos:
26
Estudio Situación Actual en la Industria.
tendencia tecnológica actual, sino que, además, se posibilita obtener acceso a datos en el
nivel de los dispositivos de control mediante Internet.
TCP/IP es el protozoo de nivel de transporte y red de Internet y suele estar vinculado con
las instalaciones Ethernet y el mundo de los negocios. TCP/IP proporciona una serie de
servicios que puede utilizar cualquier pareja de dispositivos para compartir datos. Dado
que la tecnología Ethernet y los conjuntos de protocolos estándar como TCP/IP han sido
proporcionados para uso público, se han producido en forma masiva y pueden conseguirse
fácilmente medios físicos y herramientas de software estandarizadas, con lo que puede
tenerse las ventajas de una tecnología conocida y una gran facilidad de acceso.
El UDP/IP protocolo de data grama de usuario) también se utiliza junto con la red
Ethernet. Este protocolo proporciona un transporte de datos rápido y eficiente,
características necesarias para el intercambio de información en tiempo real.
Para que Ethernet industrial tenga éxito se ha agregado el protocolo CIP al conjunto
TCP/UDP/1P con el fin de proporcionar un nivel de aplicaciones común.
Con la introducción de la tecnología de conmutación de Ethernet (switch) y la transmisión
de datos fuIl-Duplex, se minimizan las colisiones de dalos y el rendimiento en la red
aumenta drásticamente.
Por lo general, una red Ethernet utiliza una topología estrella activa en la que los grupos
de dispositivos están conectados punto a punto con un conmutador. La ventaja de una
topología tipo estrella radica en la compatibilidad con los productos de 10 y 100 Mbps
Puede combinar dispositivos de 10 y 100 Mbps Y el conmutador Ethernet negociará la
velocidad. Asimismo, la topología estrella le ofrece conexiones fáciles de cablear o de
depurar, o en las que resulta fácil delectar fallos o llevar a cabo tareas de mantenimiento.
Ethernet Industrial permite cubrir grandes distancias, la sea a nivel de una LAN: con
tecnología de Switching hasta 200 Km. O bien extendiéndose a una WAN, en todo el
mundo, mediante protocolo TCP/IP.
La ilustración 12 muestra un resumen de las características técnicas de Ethernet Industrial.
27
Estudio Situación Actual en la Industria.
Los dos protocolos más usados son ISO, según normas ISO 8073, y este está optimizado
para la transferencia de variables para servicios y observación en tiempo real. Bajo este
protocolo resulta difícil de realizar encaminamiento (routing) a través de distintas redes por
este motivo se utiliza solo en el ámbito de LAN's.
El otro protocolo utilizado ese muy conocido TCP/IP , optimizado para la transferencia de
grandes cantidades de datos, y este caso si es más fácil y económico el ruteo entre distintas
redes, se utilizan en redes LAN estructuradas y en WAN. Esto permite el uso de
tecnológicas de información IT, como SNMP (protocolo de administración de redes), http
(protocolo de transferencia hipertexto), servicios WEB, etc.
Ethernet Industrial ha sido diseñada para gestionar grandes cantidades de datos de
transmisión de mensajes, hasta 1500 bytes por paquete. Permite la gestión de grandes
volúmenes de datos en modo previsible. Gracias a la gran aceptación de la tecnología
Ethernet en los últimos años, el costo por nodo de dispositivos Ethernet está disminuyendo
rápidamente.
28
Estudio Situación Actual en la Industria.
2.4.4. PROFIBUS:
En el año 1987, las firmas alemanas Bosch, Klóckner Móeller y Siemens iniciaron un
proyecto de desarrollo de una arquitectura de comunicaciones industriales que permitiera
la interconexión de equipos de distintos fabricantes. Esta fue la base de un grupo de trabajo
al que se integraron otras grandes empresas tales como ABB, AEG, Landis&Gír. etc.,
algunas universidades y organizaciones técnicas estatales, entre ellas la propia VDE y el
Ministerio Federal de Investigación Alemán. Se formaron varios grupos de trabajo en
distintas áreas, cuya tarea esencial fue la de desarrollar un sistema abierto de
comunicaciones apto para integrar desde los sencillos transductores y elementos de campo,
pasando por los autómatas y controles numéricos hasta llegar al nivel de los
miniordenadores para diseño y gestión de la producción. El primer objetivo fue sólo el
diseño de un bus de campo con una estructura abierta y un protocolo compatible que
permitiera enlazar con una red adoptada como base en los niveles superiores (MAP).
A partir del año 1990 se abrió la posibilidad para cualquier usuario o empresa de
integrarse en un consorcio denominado PROFIBUS Nutzerorganisation, que a través de
diversos comités sigue desarrollando y dando soporte al nivel de aplicación y certificación
de productos. PROFIBUS es actualmente el líder de los sistemas basados en
buses de campo en Europa y goza de una aceptación mundial. Sus áreas de aplicación
incluyen manufacturación, automatización y generación de procesos.
Profibus especifica las características técnicas y funcionales de un sistema basado en un
bus de campo serie en el que controladores digitales descentralizados pueden ser
conectados entre sí desde el nivel de campo al nivel de control. Se distinguen dos tipos de
dispositivos, dispositivos maestros, que determinan la comunicación de datos sobre el bus.
Un maestro puede enviar mensajes sin una petición externa cuando posee el control de
29
Estudio Situación Actual en la Industria.
acceso al bus (el testigo). Los maestros también se denominan estaciones activas en el
protocolo Profibus. Como segundo tipo están los dispositivos esclavos, que son
dispositivos periféricos. Los esclavos son normalmente dispositivos de E/S, válvulas,
actuadores y transmisores de señal. No tienen el control de acceso al bus y sólo pueden
recibir mensajes o enviar mensajes al maestro cuando son autorizados para ello. Los
esclavos también son denominados estaciones pasivas, por lo que sólo necesitan una parte
del protocolo del bus.
PROFIBUS es un bus de campo normalizado internacional que fue estandarizado bajo la
norma EN 50 170. Esto asegura una protección óptima tanto a los clientes como a los
vendedores y asegura la independencia de estos últimos. Hoy en día, todos los fabricantes
líderes de tecnología de automatización ofrecen interfaces PROFIBUS para sus
dispositivos.
2.4.4.1. Estructura
La tecnología de transmisión más usada es la RS 485, conocida habitualmente como H2.
Su área de aplicación comprende aquellas aplicaciones donde prima su
simplicidad, la velocidad de transmisión y lo barato de la instalación. Se usa un par
diferencial con cable trenzado, previsto para comunicación semi-duplex, aunque
también puede implementarse con fibra óptica y enlaces con estaciones remotas vía
módem o vía radio. La velocidad de transmisión varía entre 9.6Kbits/s y 12Mbits/s,
dependiendo del medio físico, como se indica en la siguiente tabla:
Al conectar varias estaciones, hay que comprobar que el cable de las líneas de datos no sea
trenzado. El uso de líneas apantalladas es absolutamente esencial para el logro de una alta
inmunidad del sistema en ambientes con emisiones altas de
electromagnetismo (como en la fabricación de automóviles). El apantallamiento se usa
para mejorar la compatibilidad electromagnética (CEM).
30
Estudio Situación Actual en la Industria.
I. PROFIBUS PA:
Es un protocolo derivado PA, derivado de Process Automation, es un subconjunto de este
estándar, orientado a las comunicaciones de instrumentos de proceso. Es decir, equipos que
transmiten señales análogas como presión, temperatura, y otros. Está diseñada
especialmente para la automatización de procesos. Permite la conexión de sensores y
actuadores en una línea de bus común, incluso en zonas intrínsecamente seguras. Profibus
PA permite disponer de comunicación de datos y potencia en un mismo bus utilizando una
tecnología de dos hilos según el estándar internacional IEC 1158-2.
• Diseñado para automatización de procesos.
• Permite la conexión de sensores y actuadores a una línea de bus común incluso en
áreas especialmente protegidas.
• Permite la comunicación de datos y energía en el bus mediante el uso de 2
tecnologías (norma IEC 1158-2).
32
Estudio Situación Actual en la Industria.
33
Estudio Situación Actual en la Industria.
Puede decirse sin lugar a dudas que PROFIBUS ha conseguido definir toda una red de
comunicación industrial, desde el nivel físico hasta el de aplicación, superando
ampliamente los límites de un bus de campo, integrando al máximo las técnicas de
comunicación previamente definidas y consolidadas En la actualidad la estructura es tal
que los grupos de los 20 países más industrializados ofrecen un soporte en su idioma para
el resto del mundo. Todos los grupos de usuarios se unen bajo la Organización PROFIBUS
International (Pl), que con más de 750 miembros es la organización de buses de campo
más grande del mundo.
34
Estudio Situación Actual en la Industria.
I. Elementos de Bus.
El elemento esencial del bus es el nodo. PROFIBUS prevé la existencia de dos tipos de
nodos:
• Activos: son nodos que pueden actuar como maestro del bus, tomando
enteramente el control del bus.
• Pasivos: son nodos que únicamente pueden actuar como esclavos y, por tanto, no
tienen capacidad para controlar el bus. Estos nodos pueden dialogar con los nodos
activos mediante un simple mecanismo de pregunta-respuesta, pero no pueden
dialogar directamente entre sí. Aparte de estos dos tipos de nodos, existen otros
dos bloques esenciales en la arquitectura del bus:
• Expansiones E/S: este tipo de bloques constituyen la interfaz con las señales de
proceso y pueden estar integrados tanto en un nodo activo como en un nodo
pasivo.
• Repetidores: los repetidores ejecutan el papel de simples transceptores
bidireccionables para regenerar la señal.
II. Topología.
La topología puede ser simplemente en forma de bus lineal o en forma de árbol, en el que
los repetidores constituyen el nudo de partida de una expansión del bus (ilustración 20).
Este caso, la estructura en árbol es puramente una impresión de dibujo, ya que el
PROFIBUS admite una estructura lógica de maestro flotante y una estación activa,
ejerciendo el papel de maestro, que puede estar físicamente conectada a lo que se pudiera
considerar una expansión del bus. Por tanto, incluso en caso de ramificaciones debe
considerarse como un bus único. El número máximo de nodos conectables a cada tramo
del bus, sin necesidad de repetidores es de 32.
35
Estudio Situación Actual en la Industria.
Naturalmente esta estructura admite la posibilidad de que exista un solo nodo activo en el
bus, con lo que se convertiría en un bus con una estructura del tipo maestro-esclavo. Cabe
señalar que cuando una estación activa posee el testigo, considera a todas las demás como
36
Estudio Situación Actual en la Industria.
37
Estudio Situación Actual en la Industria.
38
Estudio Situación Actual en la Industria.
39
Estudio Situación Actual en la Industria.
Cada esclavo dispone de hasta 4 entradas/salidas, lo que hace que la red pueda controlar
hasta 124 E>'S digitales. La comunicación sigue un esquema maestro -esclavo, en la cual
el maestro interroga a las estaciones enviándoles mensajes (llamados telegramas) de 14 bits
y el esclavo responde con un mensaje de 7 bits. La duración de cada ciclo pregunta-
respuesta es de 150 us. En cada ciclo de comunicación se deben consultar todos los
esclavos, añadiendo dos ciclos extras para operaciones de administración del bus
(detección de fallos). El resultado es un tiempo de ciclo máximo de 5ms. Como muestra la
Ilustración 27.
40
Estudio Situación Actual en la Industria.
2.4.6. INTERBUS.
INTERBUS es un bus de campo para la interconexión de sensores y actuadores. Las partes
claves de INTERBUS han sido estandarizadas en Alemania por la DKE (Deutsche
Elektrotechnische Kommission para DIN y VDE).
INTERBUS se basa en un esquema maestro-esclavo. El maestro del bus actúa
simultáneamente como interfaz con los niveles superiores de la jerarquía de
comunicaciones.
La topología es de anillo, es decir, todos los dispositivos están conectados formando un
camino cerrado. El anillo principal es el que parte del maestro, aunque pueden formarse
otros anillos para adaptarse a la estructura particular de cada sistema. Este tipo de
conexiones se lleva a cabo mediante unos equipos denominados módulos terminadores de
bus.
Un rasgo distintivo de INTERBUS es que las líneas de envío y recepción de datos están
contenidas dentro de un mismo cable que une todos los dispositivos. De esta forma, el
sistema tiene el aspecto físico de un bus o un árbol. Típicamente, la capa física se basa en
el estándar RS-485. Debido a la estructura de anillo y a que es necesario transportar la
masa de las señales lógicas, INTERBUS requiere un cable de cinco hilos para interconectar
dos estaciones. Con velocidades de transmisión de 500 Kbits, pueden alcanzarse distancias
de hasta 400 m entre dispositivos. Cada dispositivo incorpora una función de repetidor que
permite extender el sistema hasta una longitud total de 13 Km. Para facilitar el
funcionamiento de INTERBUS, el número máximo de estaciones está limitado a 512.
La estructura punto a punto de INTERBUS y su división en anillo principal y sub-anillos
es ideal para la incorporación de distintos medios de transmisión en distintas zonas de la
41
Estudio Situación Actual en la Industria.
planta si esto fuese necesario. La estructura de anillo ofrece dos ventajas. La primera es
que permite el envío y recepción simultánea de datos (full dúplex).
datos, por una parte los datos correspondientes a procesos cíclicos, y por otra parte datos
que aparecen asincrónicamente. La capa de enlace es determinista, es decir, garantiza un
tiempo máximo para el transporte de datos entre dispositivos. El control de acceso al
medio se encuadra dentro de los mecanismos TDMA (Time División Múltiple Access),
eliminando así la posibilidad de colisiones. Cada dispositivo tiene reservado un slot de
tiempo adecuado para su función dentro del sistema. El tiempo de ciclo es la suma de los
tiempos asignados a cada dispositivo. Pueden definirse slots adicionales para la
transmisión de bloques de datos en modo conexión. De esta forma pueden enviarse grandes
bloques de datos a través de INTERBUS, sin alterar el tiempo de ciclo para los datos de
proceso. Otra ventaja importante que incorpora este tipo de control de acceso al medio, es
que Iodos los elementos insertan sus datos en el bus simultáneamente, lo que garantiza que
las mediciones en las que se basan los bucles de control, fueron realizadas
simultáneamente.
Este mecanismo también reduce la sobrecarga con información correspondiente al
protocolo, con lo que la eficiencia que se alcanza es alta.
La trama se forma por concatenación de los datos de cada estación. De forma física se
realiza mediante un registro. Cada dispositivo se une al anillo mediante un registro cuya
longitud depende de la cantidad de información que debe transmitir. Los datos
provenientes de las distintas estaciones van llegando al master en función de su posición
dentro del anillo. Cada ciclo de transmisión comienza con una secuencia de datos que
contiene la palabra de loopback seguida de los datos de salida de los distintos dispositivos,
en la línea de salida. Durante el envío de dalos, el flujo de retomo entra el maestro como
flujo de entrada. Tras el envío de la trama completa, se envía un CRC de 32 bits. Debido a
la estructura de conexiones punto a punto, el cálculo siempre se hace entre cada dos nodos,
por lo que no es necesario dar una vuelta completa al anillo. Por último se envía una
palabra de control para indicar el estado de cada dispositivo (detección de errores de
transmisión, etc.). Si no hubo errores comienza un nuevo ciclo, como se ve en el esquema
de la figura 18.
Además de los ciclos de datos, también hay ciclos de identificación. Este ciclo permite la
administración del bus. Cada dispositivo tiene un código de identificación que indica el
tipo de dispositivo de que se trata, y el tamaño de su bloque de datos. La configuración del
bus se lleva a cabo por una secuencia de ciclos de identificación en los que el maestro
comienza a leer en orden, la identificación de los dispositivos conectados. En función de
estas lecturas se configura la trama que circulara en el ciclo de datos. Desde el punto de
vista físico INTERBUS funciona según un procedimiento asíncrono de arranque y parada.
Se envía una cabecera que contiene información adicional como por ejemplo los
delimitadores de trama, código de función y tipo de mensaje, junto con ocho bits de datos
adicionales. Los momentos de inactividad se ocupan con mensajes de estado. No contienen
datos de la capa de enlace y sólo sirven para garantizar una actividad permanente en el
medio de transmisión. Si dicha actividad se interrumpe durante más de 20 ms., se
interpreta por todos los dispositivos como una caída del sistema. En respuesta a esta
situación, los dispositivos se desconectan de la red y van a un punto seguro definido con
antelación.
43
Estudio Situación Actual en la Industria.
44
Estudio Situación Actual en la Industria.
RTR vale 0, indica que se trata de una trama de datos, mientras que si vale 1 indica que se
trata de una petición de datos. En ese caso, el campo de datos indicará los bytes que
formarán la respuesta.
El campo de control está formado por 6 bits. Los bits rl y r0 están reservados para futuras
ampliaciones del protocolo. Los cuatro bits que forman el DLC indican el número de bytes
que forman la trama de datos y que van a continuación.
El campo de datos contiene de cero a ocho bytes. El bit más significativo de cada byte es
el primero que se transmite. A continuación hay un campo de CRC, que contiene un
código de redundancia cíclica de 15 bits y un bit delimitador que siempre vale 1. El campo
de acuse de recibo consiste en dos bits. El primer bit se envía a I y es puesto a cero por las
estaciones que reciben correctamente el mensaje. El segundo es un bit delimitado que vale
I. El delimitador de final de trama consiste en 7 bits a 1. Tras cada trama hay un periodo de
tres bits (deben estar a 1), destinado a dar un tiempo mínimo a las estaciones a prepararse
para la recepción o envío de otro mensaje.
Las tramas de tipo B se diferencian en el campo de arbitraje. En este caso hay un primer
grupo de 11 bits similar al de las tramas de tipo A, y que actúa como valor base del
identificador. La segunda parte de los identificadores (18 bits) es la extensión del
identificador.
Para distinguir ambos formatos, la trama tipo B incorpora dos bits que separan los dos
trozos del identificador. El primero es el bit SRR (Substitute Remote Request). Se envía
siempre a 1 para dar prioridad a las tramas de datos estándar de tipo A con el mismo
identificador base. El bit IDE que sigue al bit SRR se envía siempre a 1, y permite
distinguir tramas tipo A y tipo B.
45
Estudio Situación Actual en la Industria.
Una característica fundamental de CAN es que cuanto menor sea el identificador del
mensaje mayor es su prioridad Si dos nodos intentan transmitir simultáneamente, el
primero que envíe un cero cuando el otro intente enviar un I obtendrá el acceso al medio,
ya que el valor cero es dominante frente al valor I. Como cada estación es capaz de
monitorizar el medio físico, podrá detectar si su trama ha sido sobrescrita por otra de
mayor prioridad (que permanece inalterada). La estación que no ha podido enviar el
mensaje, reintentará el envío en cuanto detecte un periodo de inactividad, como puede
verse en la figura 21. Las ventajas de este mecanismo de acceso son la minimización del
retardo en el acceso al no tener que esperar por el tumo como sucede en un sistema de paso
de testigo, y la mejora de la eficiencia al evitar las colisiones destructivas. Los mensajes
son enviados por orden de prioridad.
Un bus CAN puede tener un máximo de 32 nodos. El número de mensajes por segundo
varía entre 2000 y 5000 en un bus de 250 Kbps, según el número de bytes por mensaje.
Aunque se ha dicho que CAN se basa en un medio físico de par trenzado, también existen
interfaces para la conexión mediante fibra óptica. El método más común es el par trenzado,
de modo que las señales se envían mediante una diferencia de tensión entre los dos hilos.
Los hilos reciben los nombres de CAN_H y CAN_L, y en estado inactivo la diferencia de
tensión entre ambos es de 2.5 V. Un 'I' se envía colocando CAN_H a más tensión que
CAN_L, mientras que un cero se envía colocando CAN_L a más tensión que CAN_H. El
uso de tensiones diferenciales permite el uso de CAN incluso si una de las líneas está
dañada, o en ambientes muy ruidosos.
46
Estudio Situación Actual en la Industria.
47
Estudio y desarrollo de un control distribuido para una planta.
3.1. Introducción:
Para hacer la demostración del funcionamiento del control de un lazo industrial, se ha
diseñado un sistema de automatización industrial, o control distribuido. Para ello se ha
creado una situación ficticia en una planta química, con un proceso indeterminado.
Llegados a este punto es muy importante remarcar, para evitar confusiones e
interpretaciones erróneas no deseadas, que el proceso diseñado y que se presenta a
continuación es totalmente aleatorio. No se ha copiado, ni plagiado en totalidad o parte
ningún proceso industrial real, ya que se vulneraría la posible confidencialidad de éstos.
Todos los elementos que se representan tanto en entornos gráficos, como en la propia
memoria, son totalmente inventados y sin una coherencia real, a nivel de diseño
industrial. El Proceso no muestra productos reales, las presiones, caudales,
intensidades, etc. no han sido calculados para un proceso concreto. Tanto los reactores,
intercambiadores, bombas, etc., no tienen porqué funcionar, ya que no han sido
calculados ni probados para este fin. Todo ello es tan solo un entorno gráfico necesario
para el planteamiento y posterior explicación del lazo de control aquí expuesto. Tras
todo esto solo queda decir, que cualquier semejanza, parecido o similitud a un proceso
real es una total coincidencia, hecho propio de la aleatoriedad y la casualidad.
Se ha elegido para la demostración un proceso químico industrial. Dicho proceso consta de
algunos elementos típicos de las plantas químicas, como pueden ser reactores,
intercambiadores de calor, bombas, depósitos, así como elementos de medida estándares,
medidores de presión de intensidad, de caudal, etc.
Como explicábamos anteriormente, los valores que se mostrarán e incluso podremos
modificar, no serán reales, e incluso podría darse la posibilidad de que fueran valores
incoherentes. Pero en nuestro caso la implicación o coherencia de estos valores no tiene
una relevancia de peso, ya que la parte que nos pertoca, no es la reacción, espesor de
estructuras, kv de válvulas, diámetro de tuberías, ni todo el conjunto de cálculos y diseños
de procesos industriales. Nuestro fin y único destino es el de control, así como de
proporcionar las herramientas y mecanismos necesarios para que el sistema sea seguro,
controlable, ajustable a las necesidades de cada momento y de un fácil manejo e intuitivo.
Estas herramientas están divididas en cinco partes muy diferenciadas y fácilmente
identificables. Pero antes de empezar con la descripción de cada una de ellas, debemos
aclara un aspecto importante de esta parte práctica. El sistema se ha desarrollado usando
como pilar central de comunicaciones el puerto paralelo de los PC’s. Este sistema
ciertamente ya no es muy utilizado en la actualidad, casi en desuso. Se ha tomado esta
determinación ya que poner en práctica un bus tal como el Profibus o similar, requiere de
una dificultad un tanto mayor así como de una inversión en tiempo y capital muy superior.
He creído que para hacer patente el funcionamiento del sistema, era más que suficiente
generar una arquitectura similar obviando este detalle, pero realizando el sistema lo más
parecido a lo existente en la actualidad. Como decíamos anteriormente, la simulación
consta de 5 partes, de las cuales solo daremos una pincelada, ya que más adelante serán
- 48 -
Estudio y desarrollo de un control distribuido para una planta.
ventiladores, válvulas, etc. En nuestro caso simularemos esto con tres ventiladores, y un
circuito electrónico que mediante tres displays simulará el % de apertura de una válvula
reguladora ubicada remotamente en campo.
manipular el caudal que deseamos circule en cada momento. En algunos casos podremos
ponerlo en función automático, de manera que basándose en unos datos preprogramados
ella se auto regulará sola.
Hemos incluido un depósito cuya finalidad desde el punto industrial quizá no sea muy
coherente, pero con ello demostramos un pequeño ciclo de funcionamiento automatizado,
basado en unos parámetros prefijados. Este depósito se va llenando hasta llegar a un nivel
máximo, cuando lo alcanza, automáticamente se pone en marcha una bomba que lo vacía
hasta un nivel mínimo determinado. Tras esto se repite el ciclo nuevamente.
Existen algunos elementos más, los cuales ya expondremos de forma más amplia.
3.2.2. Funcionamiento.
51
Estudio y desarrollo de un control distribuido para una planta.
Una vez hemos elegido el tipo de teclado, podemos decidir si queremos o no ver lo que
escribimos, ya que es muy probable que no nos interese que las personas presentes sepan
cual es el código. Para ello disponemos de un botón que permite codificar los caracteres en
asteriscos.
En la parte superior de la pantalla inicio, encontramos un pequeño menú con dos opciones.
La primera sirve para cambiar el password de acceso, hacerlo periódicamente es algo
recomendable, y la segunda para cerrar el programa, algo que podemos hacer igualmente
52
Estudio y desarrollo de un control distribuido para una planta.
desde el botón “Cerrar”. Una vez introducido el password podemos clicar el botón
“Acceder” o pulsar “Return” en el teclado. Si el password es incorrecto recibiremos un
mensaje:
53
Estudio y desarrollo de un control distribuido para una planta.
La funciones a las que nos da acceso son: activar la simulación, desactivarla y salir del
programa.
En el siguiente sub-menú llamado “Funciones” encontramos dos opciones más. La primera
nos permite visualizar una pantalla hibrida. La llamamos así por un simple motivo.
Anteriormente explicamos que existían dos tipos de pantallas: las que eran funcionales y
las que funcionan en un segundo plano. Pues ésta cumple en parte las dos opciones, ya que
54
Estudio y desarrollo de un control distribuido para una planta.
se encarga de traducir las órdenes que le enviaremos mediante un clic de ratón sobre un
elemento, convirtiéndolas en códigos BCD que viajarán a través del
puerto paralelo al exterior. Pero también podemos acceder a ella y verificar el estado de los
puertos de salida del PC para comprobar que no existan errores en los mismos.
55
Estudio y desarrollo de un control distribuido para una planta.
desplegable tenemos dos secciones: la sección del recuadro superior, y la del recuadro
inferior. La superior está compuesta por 11 indicadores luminosos.
Estos indicadores pueden adoptar tres colores. Cuando están en verde quiere decir que el
dispositivo está activado y funcionando correctamente. Cuando están en negro el
dispositivo está parado de forma correcta. Sin embargo si se encuentra en negro y a su
derecha aparece un indicador morado, quiere decir que el dispositivo se ha parado por un
fallo. Este fallo nos informa de una avería en un dispositivo final. El cuál estará indicado
por una señal acústica y un mensaje de texto que informará de forma escueta de que se
trata., Además el dispositivo supuestamente averiado se pondrá en rojo.
En el recuadro inferior encontramos otro indicador, el cual tan solo nos informa del estado
del PLC. Si está en verde quiere decir que el PLC está activo y funcionando y si por el
contrario está en negro nos informa de que no lo está.
Más abajo encontramos un botón con el nombre de Rearme. Este botón como su nombre
indica, sólo sirve para desenclavar el dispositivo de seguridad, que impide que un
dispositivo no se pueda arrancar sin verificar que ha sido reparado. Cuando un dispositivo
falle, enviará una señal desde el PLC la cual nos para el dispositivo y muestra el indicador
56
Estudio y desarrollo de un control distribuido para una planta.
morado que hemos comentado anteriormente, además de poner dicho elemento en rojo.
Para poder poner nuevamente en funcionamiento este elemento, se debe dar la orden desde
el PLC de que está activo nuevamente. Una vez el indicador morado ha desaparecido,
pulsando rearme, el dispositivo retorna a la posición de paro correcto, permitiendo
arrancarlo nuevamente.
• Una vez terminado de explicar el funcionamiento del menú haremos hincapié en la
pantalla de Entradas y Salidas que habíamos presentado hace un momento.
Esta pantalla, como bien explicamos en su momento, tiene la función principal de traducir
las órdenes, de marcha y paro, en códigos BCD. En este modo de funcionamiento, el
operador no tiene capacidad de manipulación de la información, pero sin embargo puede
acceder a ésta. Este acceso se limita simplemente a un uso informativo o de verificación,
ya que podemos ver el estado en todo momento de las entradas del puerto para
cerciorarnos si estamos recibiendo correctamente la información, o también para ver si
existe algún fallo en el bus de comunicación. Otra opción es el forzado de las salidas con lo
que creamos códigos BCD de forma manual, que permite hacer verificaciones de
funcionamiento.
Continuando por la parte superior izquierda de la pantalla de Reacción, nos topamos con
dos botones que si bien son diferentes tiene un roll común. Anteriormente nos referimos a
la seguridad, diciendo que hay parámetros que tan solo debería poder manipular personal
con un cierto nivel de acceso.
Precisamente estos botones tienen esa finalidad exacta. El botón de la izquierda nos
permite autentificarnos verificando el nivel de acceso que tenemos en el sistema. Como se
trata de una simple simulación, sólo hemos creado dos niveles de acceso: el de “Operador”
que es el que existe por definición y el de “Administrador”.
Lógicamente el nivel de “Operador”, como es el más básico no requiere de clave, tan solo
lo precisa el de Administrador.
57
Estudio y desarrollo de un control distribuido para una planta.
58
Estudio y desarrollo de un control distribuido para una planta.
• El siguiente botón que explicaremos, tiene una forma un tanto peculiar. Como
hemos comentado ya en diversas ocasiones, en el momento en que se genera un error, se
lanza una alarma tanto acústica como visual.
En la ilustración 44 podemos ver las dos formas que toma el mismo botón. Cuando está
activo, la zona roja exterior parpadea para indicarnos que una alarma ha sido lanzada. La
única manera de dar conocimiento al sistema de que nos damos por enterados para que
pare de sonar la sirena, es pulsando el contacto. Pero no nos confundamos, esto no
soluciona el fallo, si el fallo persiste tras ser pulsado, a los pocos segundos la alarma se
reactivará.
• El cuadro de texto que sigue a continuación es el encargado de indicar el tag, que
nos informa de qué tipo de alarma estamos hablando para poder tener una idea y saber
donde hay que actuar. Se puede comportar de dos maneras: cuando no existe ninguna
alarma activa nos muestra el tiempo que hace que se está ejecutando el programa
59
Estudio y desarrollo de un control distribuido para una planta.
y cuando se activa alguna alarma, nos muestra el tag de ésta y al mismo tiempo parpadea
entre rojo y negro.
• Concluyendo con los botones que encabezan esta pantalla, llegamos al que es
probablemente el más importante de todos, el contacto que pone en funcionamiento todo el
sistema. Sin activarlo, la comunicación entre los distintos elementos que conforman este
proyecto no es posible. Cuando activamos este interruptor lo primero que vemos es que el
indicador luminoso de la derecha cambia de estado de “Parado” a “Activo”.
60
Estudio y desarrollo de un control distribuido para una planta.
• Los indicadores de valores medidos, que son los recuadros negros que podemos ver
repartidos a lo largo y ancho de toda la pantalla, tienen la utilizad de informarnos en cada
momento del valor que se está midiendo. Cada uno de ellos está tarado a un máximo y a u
mínimo. Estos valores limítrofes tienen la capacidad de lanzar alarmas en cuanto detecten
que el valor promedio ha llegado o superado este umbral. Si esto sucede, automáticamente
61
Estudio y desarrollo de un control distribuido para una planta.
se pondrán en color rojo, indicándonos que algo no está bien. Por lo que el operario podrá
actuar de alguna para corregir esta incidencia.
Para modificarlos iremos a esta sub-pantalla de apoyo. Llegaremos a ella pulsando con el
botón izquierdo del ratón sobre el recuadro de medida que queramos modificar o
simplemente visualizar. Al hacerlo aparecerá este cuadro. Al ser un elemento de seguridad
necesita de un nivel de acceso superior al de “Operario” para entrar a modificar los datos.
Es por ello que en la parte superior derecha existe un botón, que es exactamente el mismo
que hay en la parte superior izquierda de la pantalla reacción.
Al pulsarlo ocurrirá exactamente lo mismo que antes, nos parecerá el recuadro para
identificarnos. Al hacerlo ya podremos modificar los valores inferior y superior.
Para modificar los valores una vez estemos correctamente identificados, pulsamos
directamente con el botón izquierdo del ratón sobre el recuadro donde está el valor a
corregir. Automáticamente nos aparecerá el cuadro de teclado en pantalla que ya hemos
visto y a su vez a la derecha del cuadro que nos indica el valor que vamos a prefijar,
aparecerá un botón cuya finalidad es verificar el valor que colocaremos.
62
Estudio y desarrollo de un control distribuido para una planta.
Esto nos evitará que podamos equivocarnos y colocar un valor máximo inferior al mínimo
o un mínimo superior al máximo.. Cuando tengamos los valores deseados introducidos
pulsaremos el botón “Salir”. Los límites nuevos ya son operativos, pero para que el
programa sea más liviano y funcione más ágil, estos valores quedan en memoria. Esto
quiere decir que si ahora tenemos un fallo de energía, al arrancar nuevamente el programa
tendríamos que modificarlos de nuevo. La operación que hace al cargar las bases de datos
al principio en la pantalla de “Inicio”, tiene su homólogo cuando cerramos el programa, ya
que nos preguntará antes de cerrarlo si queremos guardar las modificaciones. En caso
afirmativo, reescribirá todas las bases de datos con los nuevos valores.
• Continuando a través de esta pantalla para seguir un orden más o menos coherente,
nos desplazaremos de izquierda a derecha y de arriba abajo.
Lo primero que tenemos que explicar es que no todos los indicadores son iguales. Los hay
de medida y de valor prefijado. El recuadro IT7 superior es un indicador prefijado. En éste
colocamos la temperatura promedio que queramos que tenga el reactor, de forma que el
sistema dirigirá la reacción para que recoja ese parámetro. Podremos modificarlo tan solo
pulsando encima del mismo recuadro, para que nos salga el teclado en pantalla. Le
indicamos el valor deseado y aceptamos. Actuaremos de forma coherente, ya que no
podemos decirle al sistema que baje o suba en la reacción una cantidad absurda de grados,
ya que esto desestabilizaría la reacción. Por esta razón existe una limitación en cuanto a los
grados que se pueden subir y bajar a la vez.
Nosotros no podemos actuar sobre la velocidad de giro de éstas ni sobre ningún otro
parámetro que no sea su marcha o paro.
Una vez pulsemos sobre el motor del agitador nos saldrá una ventana como la de la
ilustración 55, donde nos preguntará si estamos seguros de que queremos conectar el
dispositivo. Pulsando “No”, se cerrará la ventana y nada habrá sucedido. Si de lo contrario
pulsando en “Si”, automáticamente veremos como el motor toma el color verde. Los
indicadores de intensidad del agitador empiezan a marca un valor y el reactor alcanza un
nivel haciendo que todos sus indicadores de temperatura, presión y nivel empiecen a
oscilar. Ningún otro elemento del reactor puede ponerse en marcha sin que el agitador esté
en funcionamiento. Esto es un enclavamiento de seguridad, ya que no podemos vaciar el
contenido del reactor si este no se ha homogenizado correctamente. Para ello primero se ha
de hacer un estudio a nivel de calidad o seguridad, para ver qué tipo de sub-reacción se ha
podido generar al fallar este dispositivo. Este motor será uno de los tres elementos finales
que servirán como ejemplo real de funcionamiento del proyecto. Es decir, que cuando lo
conectemos o paremos, realmente se pondrá en marcha un elemento físico; en nuestro caso
un ventilador. Cuando generemos un error desde el PLC, algo que ya explicaremos cuando
tratemos el software del PLC, este motor se detendrá y se pondrá de color rojo, haciendo
necesario el botón de rearme que explicamos anteriormente en la pestaña desplegable.
• A continuación encontramos una bomba que realiza una recirculación y a su vez
puede ejecutar un vaciado de emergencia del reactor mediante una válvula de 3 vías. Esta
bomba puede darnos información de funcionamiento con tres parámetros: intensidad,
revoluciones y presión. Igual que en el caso del agitador, cuando pulsamos para poner en
marcha la bomba, nos aparece un cuadro que nos pregunta si estamos seguros de realiza la
acción. Si afirmamos, pero no cumplimos la condición que antes explicábamos de que el
agitador esté en marcha, obtendremos el siguiente cartel informativo.
64
Estudio y desarrollo de un control distribuido para una planta.
Sin embargo a modo representativo, en esta bomba hemos introducido otro tipo de
enclavamiento muy común en estos sistemas. Es un tipo de enclavamiento diseñado para
que el elemento se auto proteja de acciones dañinas. Muchos de los motores que se instalan
en la industria están acoplados a elementos reductores o a una infinidad de mecanismos los
cuales son sensibles a cambios bruscos de velocidad. Es por ello que a éste lo hemos
protegido para que en el caso de que lo paremos o se detenga por cualquier motivo, hasta
que la intensidad no baje de un valor, no permite ponerlo nuevamente en marcha. Todo
ello a su vez está directamente relacionado con las revoluciones a las que gira. Si
intentamos tal acción el sistema nos contestara con el siguiente mensaje.
Ilustración 57: Mensaje informativo que protege a la bomba contra cambios bruscos de velocidad.
En cuanto la intensidad baje del valor preestablecido nos permitirá ponerlo en marcha. Para
aumentar el realismo, ya que lo común en este tipo de dispositivos es que estén acoplados a
variadores de frecuencia, por lo que el arranque es progresivo, se ha hecho que los valores
medidos de intensidad, revoluciones y presión aumenten su valor paulatinamente, hasta
llegar al rendimiento de trabajo correcto, con lo que se estabilizan con las pequeñas
fluctuaciones típicas del proceso normal.
• En la parte inferior derecha del reactor, tenemos una bomba que se encarga de
extraer el producto acabado del reactor en condiciones normales de funcionamiento. La
tarea que realiza es prácticamente idéntica a la de la otra bomba. Sólo existe unas pequeñas
diferencias. La puesta en marcha no cambia. Al igual que en el caso anterior depende de
que el agitador del reactor se encuentre en marcha para ejecutar la orden de arranque, con
el mismo mensaje de error si se incumple este requisito. Sin embargo la prohibición de re
arrancar dependiendo de la intensidad, no está activa. Pero hemos incluido otra restricción.
Cuando observamos el diagrama, tras la bomba que estamos tratando existe una válvula
automática. Sería una incoherencia que nos permitiera poner en marcha dicha bomba sin
previamente abrir esta válvula, ya que el trabajo que realizaría esta bomba podría llevar a
65
Estudio y desarrollo de un control distribuido para una planta.
una avería. Entonces es lógico que este acto se tenga que realiza previamente, por lo que si
no lo hacemos nos generará un mensaje de error.
Ilustración 58: Mensaje de error que informa de que la válvula de salida esta cerrada.
66
Estudio y desarrollo de un control distribuido para una planta.
67
Estudio y desarrollo de un control distribuido para una planta.
Está dividida en dos partes: el recuadro de la izquierda, dedicado al ajuste de las gráficas, y
el recuadro de la derecha que nos permite una mínima manipulación de las funciones.
En el recuadro de la izquierda encontramos tres barras de ajuste (POS), la primera se
encarga del ajuste vertical de la variable. El valor de este ajuste se ve representado en todo
momento en un cuadro informativo a la derecha de dicha barra.
La segunda barra que incluye este apartado, tiene la función de jugar con la amplitud de la
gráfica, para poder exagerar los quiebros que esta hace, con el fin de poder observar mejor
estos cambios.
Por último tenemos la barra de “Span”, que realiza una multiplicación sobre la primera, de
modo que cada aumento de ésta supone el doble de rango en la primera.
Por último nos encontramos con dos botones, el primero tal y como su nombre indica
(PAUSA | |), detiene la gráfica y la reanuda al pulsarlo de nuevo. El segundo hace un auto
ajuste de posicionamiento vertical, cuando alguna variable se sale del dominio de la
ventana. Para ello actúa sobre la barra de ajuste vertical y sobre el span que de forma
automática ajusta la variable en el centro de la pantalla, pudiendo después colocarla donde
deseemos. Si empleamos este modo, cuando el sistema haya ajustado el canal deseado, nos
mostrará un mensaje informándonos de este hecho.
Ya hemos explicado cómo se ajustan las variables, pero no como se selecciona la que
deseamos. Para ello entra en juego el recuadro de la derecha. En este recuadro podemos
identificar varios canales. Cada canal está referenciado a una variable, que para
identificarlos de forma más clara, se ha dotado a cada uno de un color diferente. Para
activar o desactivar el canal, se pulsa sobre el botón que tiene el propio nombre. Con ello
lo activamos o desactivamos, pero aun no lo seleccionamos para un previo ajuste. Al
activar el canal aparecerá a la derecha del mismo un círculo azul que nos indica esto,
además de que empezará a dibujarse la función. Para seleccionar un canal cuando lo
queramos ajustar, clicaremos con el ratón en el cuadro de color donde pone el tag.
Automáticamente un recuadro rojo aparecerá, envolviéndolo, de esta manera queda
seleccionado este canal.
• Lo siguiente que encontramos avanzando hacia la derecha es una válvula
reguladora. La válvula funciona de forma diferente a los dispositivos explicados hasta el
momento. Para su activación no tenemos ningún enclavamiento, ya que es autosuficiente.
Pero como su función es regular la refrigeración del intercambiador, si no ponemos en
marcha las bombas de agua, que son con las que ha de intercambiar temperatura, no tiene
mucho sentido actuarla. Cuando hacemos “click” sobre la válvula nos aparece una nueva
ventana.
68
Estudio y desarrollo de un control distribuido para una planta.
69
Estudio y desarrollo de un control distribuido para una planta.
La mayoría al ponerlos en marcha inducen a que los cuadros de medidas que dependen de
ellos tanto sean por el propio dispositivo, como si es por la línea que lo precede, empiecen
a reflejar valores.
• El último dispositivo de funcionamiento diferente a los demás es la válvula
reguladora VA2. Esta válvula funciona prácticamente igual que la reguladora de agua que
hemos explicado anteriormente, con algunas diferencias.
Visualmente podemos ver que son muy parecidas, pero existen algunas diferencias
importantes de funcionamiento. Veamos la ilustración 62. Podemos observar que en la
parte superior izquierda existe un pequeño menú llamado “Ajuste”. Para explicar este
70
Estudio y desarrollo de un control distribuido para una planta.
comando, debemos aclarar un aspecto sobre esta válvula. Al final del proyecto veremos
que se controlan cuatro dispositivos reales, tres de los cuales son unos ventiladores que
simulan ser motores del proceso y el cuarto elemento es una válvula reguladora, que está
físicamente ejemplificada mediante los tres displays de 7 segmentos de un circuito
contadora. Además este último está también reflejado en el software del PLC mediante tres
displays digitales, pero implementados por software. Existe la posibilidad de que el valor
que tenemos en el PLC y el que tenemos en esta reguladora no coincidan, esto es muy
posible cuando ponemos en marcha el sistema. Con este botón sincronizamos a cero los
dos elementos tanto de la estación de trabajo como el del PLC.
Las dos barras de progreso tienen la misma finalidad que en el caso anterior, la única
diferencia es que anteriormente medían temperatura en la primera de ellas y ahora miden
caudal. La segunda sigue refiriéndose a la apertura de 0 a 100.
Los dos marcadores siguen la misma línea, el primero nos indica el caudal en m3 y el
segundo la apertura en %.
Una de las mayores diferencias reside en el control. Sólo podemos aumentar o disminuir la
apertura de 1 en 1%, y no existe el control automático.
Otra de las mayores diferencias es que esta reguladora posee gráfica de tendencias, con lo
que podemos medir en todo momento el caudal y la apertura que necesitamos.
3.3.1. Introducción.
Un puerto paralelo es una interfaz entre una computadora y un periférico, cuya principal
característica es que los bits de datos viajan juntos, enviando un paquete de byte a la vez.
Es decir, se implementa un cable o una vía física para cada bit de datos formando un bus.
Mediante el puerto paralelo podemos controlar también periféricos como focos, motores
entre otros dispositivos, adecuados para automatización.
El puerto paralelo más conocido es el puerto de impresora (que cumplen la norma IEEE
1284, también denominados tipo Centronics) que destaca por su sencillez y que transmite
98 bits.
El puerto paralelo de las computadoras, de acuerdo a la norma Centronics, está compuesto
por un bus de comunicación bidireccional de 8 bits de datos, además de un conjunto de
líneas de protocolo. Las líneas de comunicación cuentan con un retenedor que mantiene el
último valor que les fue escrito hasta que se escribe un nuevo dato, las características
eléctricas son:
72
Estudio y desarrollo de un control distribuido para una planta.
15 32 4 S3 /FEC E ERROR
16 31 14 C2 /INI S INICIALIZAR
17 36 16 /C3 /DSL S SELECT
18 HLH
36 PLH
Resto de MASA
líneas a masa.
Tabla 2: asignación de los contactos en los tres tipos de conectores.
Si deseamos utilizar el puerto paralelo para otros usos distintos de la conexión a una
impresora sabemos que disponemos de las siguientes señales genéricas en función del tipo
de puerto.
El puerto paralelo en los PC’s se presenta siempre como un conector DB-25 hembra al que
se suele conectar un cable CENTRONIC de la impresora por el extremo DB-25 macho.
Los nombres y funciones de las señales se relacionan con la conexión de una impresora
paralelo, pero desde el punto de vista más general, podemos ver el puerto paralelo como un
conjunto de E/S digitales a las que nombraremos según el tipo de registro. De este modo,
las salidas son las líneas D0-D7 del registro de datos y las líneas /C0, /C1, C2 y /C3 del
registro de control. Las entradas son S3, S4, S5, S6 y /S7.
Las señales de / indican lógica negativa: si el bit /S7 está a uno en la línea 11 hay cero
voltios.
La norma IEE 1284 define 3 tipos de conectores:
• Tipo A: Se corresponde con el clásico conector DB25 macho que se suele conectar
al ordenador, posee 25 conectores.
• Tipo B: Se corresponde con el conector CENTRONIC que se suele conectar a la
impresora, posee 36 conectores.
• Tipo C: Es un conector relativamente nuevo que se puede ver en algunos
dispositivos periféricos, posee 36 conectores.
73
Estudio y desarrollo de un control distribuido para una planta.
Cada uno de los puertos instalados dispone de 3 direcciones de E/S para el acceso a 3
registros de 8 bits cada uno. La dirección base de cada uno de estos puertos se puede
obtener en el área de la BIOS.
74
Estudio y desarrollo de un control distribuido para una planta.
75
Estudio y desarrollo de un control distribuido para una planta.
datos) informa al PC de que se ha recibido un nuevo dato poniéndose a nivel bajo. Sin
embargo, puesto que /ACK se corresponde con el bit S6 y éste no tiene inversión hardware
cuando en la línea existan cero voltios en S6 habrá un 0 lógico.
Para evitar confusiones, se utilizan únicamente las nomenclaturas de las líneas a partir del
bit que ocupan. Las que trabajan en lógica negativa son: /S7, /C0’, /C1 y /C3. Como
resumen se muestra a continuación el mapa de entradas / salidas para el puerto paralelo.
El bit C$ se utiliza para activar las interrupciones en la interfaz, normalmente las rutinas de
la ROM-BIOS que manejan el puerto no utilizan interrupciones para comunicarse con la
impresora ya que se trata de un dispositivo de salida; sin embargo, se puede conseguir que
el puerto lance una interrupción (IRQ5 o IRQ7 típicamente) cuando se produce una
transición en el bit S6 (/ACK) correspondiente a la línea 10 del conector DB25.
3.4.2. Descripción.
Como ya hemos explicado anteriormente, el puerto paralelo del PC, está compuesto por un
conector DB25 hembra, estas 25 patillas están dispuestas en tres grupos. Salidas de control,
salidas de datos y entradas.
78
Estudio y desarrollo de un control distribuido para una planta.
proceso desde esta interface decide actuar sobre un elemento, ya sea válvula, motor, o
simplemente modificando una consigna de temperatura, etc. Cuando éste realiza tal acción
se produce una cascada de bits que fluye desde el puerto paralelo de dicha estación de
trabajo en dirección a la red de comunicación. Puesto que todos los elementos de dicho
sistema no utilizan el mismo idioma, hay que traducirlo para que se puedan entender. Esta
es la función principal del circuito en cuestión, por el cual recibe este nombre. Los bits
entran por uno de los puertos DB25, éste es bidireccional, por lo que puede transmitir datos
en ambos sentidos. Pero de momento trataremos solo la afluencia de bits de entrada. Igual
que este puerto, el dispositivo cuenta con tres puertos más de idénticas características, pero
finalidades muy diferentes.
Una vez han atravesado el portal de acceso, la orden del operario en forma de bits, entra en
un circuito electrónico el cual se encargará de dirigirlos adecuadamente y con un orden
correcto. El sistema tiene dos carriles de opuestas direcciones, el carril actual dirección
PLC tiene una peculiaridad respecto al de regreso. Este puede albergar datos de entrada de
dos fuentes diferentes: ET y de la Estación Remota (ET). Es por ello que para separar los
unos de los otros se ha decidido usar una puerta lógica suma (OR) 74LS32, que evita el
trafico inadecuado de bits en sentido peligroso.
Al mismo tiempo hará funciones de driver, para impedir que el puerto paralelo pueda
sufrir por un consumo elevado de corriente al alimentar algún dispositivo.
Ahora tendremos que actuar de alguna manera sobre un dispositivo que nos pueda llevar
físicamente a cero las entradas del puerto paralelo del PLC. Como es lógico nos hemos
decantado por un transistor, ya que son de fácil manejo y muy sencillo funcionamiento. De
toda la amplia gama de transistores del mercado se ha elegido el BD137. Podemos pensar
que para el uso que le daremos es un transistor de mucha potencia, y estará
sobredimensionado quizás en demasía. Esta afirmación es cierta en su totalidad. Pero la
razón es que para la implementación de otros circuitos del proyecto sí que se necesita algo
más de potencia. Por lo que para unificar criterios usando el mismo en todos los circuitos,
decidí su empleo.
80
Estudio y desarrollo de un control distribuido para una planta.
¿Cómo logramos con un transistor poner las entradas del PLC físicamente a un nivel lógico
cero?
En la patilla 2 del transistor o colector conectamos una línea de potencial fijo cero, más
comúnmente conocido como a masa. En la patilla 1 o emisor conectamos la entrada que
deseamos que cambie su potencial a nuestra voluntad, y finalmente la patilla 3 o base, se le
excita con la señal de salida de la puerta suma. Cuando esta última nos proporciona un 1, el
transistor se pone en conducción ya que superamos el umbral EB de 0.6 voltios, por lo que
la resistencia CE se encuentra en su valor mínimo produciéndose un cierre del circuito,
haciendo de esta manera que la entrada seleccionada encuentre al otro lado del transistor
un derivación a masa, por lo que cambia su potencial. Este cambio de potencial se traduce
en un cambio de estado que el PLC es capaz de detectar y actuará en consecuencia.
Sin embargo esto tiene un pequeño inconveniente: el transistor invierte la señal que recibe,
es decir, cuando recibe un 1 en la base, el transistor conduce y pone a cero la entrada. Este
pequeño conflicto es un concepto a tener en cuenta a la hora de la implementación con
software, del programa, ya que si lo obviamos tendremos serios problemas de
comunicación.
Una vez recorrido un carril, nos encontramos en el PLC. Realicemos el camino inverso,
pero por el sendero opuesto. Lo primero que observamos desde esta perspectiva, es que
también tenemos una peculiaridad diferente al ya recorrido. Esta característica
diferenciadora es que usamos dos tipos diferentes de salidas, cosa que en la ET no. Esto se
debe a que en los procesos industriales reales la ET no tiene capacidad de ejecución y el
PLC si. En nuestro caso no podría ser diferente, ya que de lo contrario nos alejaríamos de
la realidad. De ahí que tengamos dos tipos diferentes de salidas: unas se encargan de
activar y desactivar los dispositivos físicos tales como motores, bombas, actuadores,
niveles, etc. y la otra sirve para informar a la ET que la petición se ha realizado con o sin
éxito. Es decir es tan solo un camino de información, no de ejecución.
Sigamos con los bits que el operario había lanzado a nuestra red de control industrial. El
PLC ha recibido la información y decide en consecuencia. Él sabe lo que ha de hacer con
81
Estudio y desarrollo de un control distribuido para una planta.
esos datos, ya que posee una base de datos donde buscar y traducir la información, de tal
forma que opere la información adecuadamente. Una vez traducido, decide porque línea ha
de mandarlos, si es una orden de ejecución usará un camino, que son las salidas de control
del puerto paralelo y si es solo información utilizara las salidas de datos.
Supongamos que lo que deseaba el operador era poner en funcionamiento un dispositivo.
Esto llevara al PLC a tomar la decisión de usar las salidas de control para poder ejecutar la
orden. En cuanto el código sale del puerto del PLC, entra por el 2º puerto de entrada salida
del circuito interface. Este puerto es un conector DB25 idéntico al primero. Atravesado el
mismo llegamos nuevamente a la placa de circuito impreso, a ella accederán los datos
mediante un driver 74LS07. El driver es una puerta lógica muy simple, ya que su salida
tiene siempre el mismo valor que a su entrada. Su función es la de alimentar a los
dispositivos conectados en sus salidas, de tal manera que el elemento que da la señal, no
cargue con el peso del consumo del dispositivo final. De esta manera se protege el puerto
paralelo del ordenador de cualquier sobrecarga. Tiene una peculiaridad, necesita una
resistencia de pull-up. Una resistencia de pull-up es una resistencia de polarización
positiva. Es decir las salidas han de estar alimentadas a cinco voltios a través de una
resistencia de polarización, de lo contrario no funciona.
82
Estudio y desarrollo de un control distribuido para una planta.
3.5.1. Introducción.
La Estación Remota es el elemento del sistema de control distribuido encargado de
controlar localmente las instalaciones y procesos que se le asignan, en los proyectos de
automatización y control.
Es la parte que controla localmente y de la forma más autónoma posible la sección del
proceso que se le encomienda. Consta de dos partes:
• Controlador de procesos y comunicaciones.
• Electrónica de adquisición y telemando (entradas / salidas).
83
Estudio y desarrollo de un control distribuido para una planta.
3.5.2. Descripción.
El circuito en cuestión, recogerá 8 órdenes codificadas de forma BCD. Este número se ha
decidido, no por limitaciones de sistema ni por protocolos, más bien por la creencia de que
con la simulación de cuatro elementos finales era suficiente para exponer el
funcionamiento del lazo de control y hacer comprensible su funcionamiento.
Situémonos en el contexto expuesto en el circuito Interface. Esto nos lleva a ubicarnos en
el puerto de entrada salida 3 del dispositivo. Cuando el PLC ha determinado que la
respuesta que ha de tomar es del tipo ejecutiva, no informativa, dijimos que utilizaba para
tal fin las salidas de control que posee. Estas salidas constan de 4 líneas, donde podemos
codificar hasta 16 códigos BCD. De estos 16 tan sólo necesitamos 8, tres activarán los tres
ventiladores, otros tres los desactivarán y el resto se usan para incrementar o decrementar
el contador del circuito número 3.
Siguiendo con la orden que ejecutó el operador en la ET, nos encontramos un código BCD
de 4 bits que viaja en dirección a la ER. Una vez llegue al puerto de entrada de la ER, el
cual es un DB25 como todos los que conforman el sistema, nos encontramos con el primer
problema de diseño que hemos tenido que salvar para conseguir un funcionamiento
adecuado. Ha consistido en localizar un dispositivo que nos traduzca el BCD y decida
sobre que elemento se actúa si entrar en la complejidad de un sistema con
84
Estudio y desarrollo de un control distribuido para una planta.
Este chip tiene un comportamiento peculiar, ya que las 10 líneas de salida se encuentran
permanentemente a nivel alto hasta que una es seleccionada, la cual cambia su estado a
bajo. Es decir funciona con lógica negada. El comportamiento del chip es ideal, si no
tenemos en cuenta que la conexión de las salidas del puerto paralelo se hará de modo
secuencial. Esto quiere decir, que al poner las líneas de salida del puerto paralelo al nivel
lógico correcto, no todas lo harán a la vez, hay un tiempo de lapso. Este tiempo de lapsus
puede generar diferentes combinaciones BCD, al tiempo que se intenta generar la deseada,
con los posibles errores que todo ello conlleva. Para solucionar esto se ha empleado un
quinta línea, a la que llamaremos línea de activación. Esta línea da permiso para que los
datos accedan al 74LS42, de tal manera que lo hagan todos al unísono.
Para ello necesitan algo más que una simple línea. Necesitan un dispositivo donde actuar y
que haga su vez de puerta que tan solo se pueda abrir cuando la línea de acceso de paso.
Este elemento es una puerta AND. Podemos ver la disposición adoptada a tal efecto en la
ilustración 72 y como sólo es posible pasar los datos de las 4 líneas de entrada a la salida,
conectando la línea de activación. Así garantizamos que todos los bits son entregados a la
vez, por lo que el decodificador sólo podrá interpretar la orden adecuada.
Ahora el decodificador ya tiene su orden correcta y pone la salida correspondiente a cero
durante un margen de tiempo reducido. Necesitamos que un dispositivo sea capaz de leer
85
Estudio y desarrollo de un control distribuido para una planta.
este cambio de flanco y a su vez memorizar el estado, para que no desaparezca tan pronto
como el decodificador cambie el mismo.
La solución a este trabajo lo hace perfectamente un flip-flop J/K. Trabajando directamente
en sus entradas de set y reset obtenemos los resultados deseados. Para nuestra simulación
hemos escogido el integrado 74LS74.
Para ello se excita la base de un transistor mediante la salida Q del flip-flop. Ello hará que
cuando se encuentre a nivel alto, el transistor entre en saturación y cuando esté a nivel bajo
en corte. Esto unido a un relé conectará y desconectara los ventiladores que actuarán como
elementos finales.
86
Estudio y desarrollo de un control distribuido para una planta.
3.6.1. Introducción.
Este circuito será junto a los ventiladores que hacen la función de dispositivos finales del
proceso industrial, una válvula virtual, ya que representará el controlador o iniciador que
llevan estos elementos para ajustar la apertura de la misma en %.
Constará de tres displays digitales de 7 segmentos, los cuales contarán de 0 a 100. Cada
pulsación de apertura o cerrado que el operador realice en la estación de trabajo, se
traducirá en un incremento o decremento numérico visible mediante estos displays. Como
para llevar esto a cabo tan solo disponíamos de dos líneas hemos tenido que hacer un
montaje un tanto particular que pasaremos a presentar de forma mucho más amplia
seguidamente.
3.6.2. Descripción.
Como comentábamos en el apartado anterior, este dispositivo simula la apertura de una
válvula reguladora en %. Para hacer esto disponíamos tan solo de dos líneas, una con la
87
Estudio y desarrollo de un control distribuido para una planta.
finalidad de incrementar y otra de decrementar. Para poder disponer de estas dos líneas,
hemos aprovechado el decodificador del circuito anterior. Como esta funcionalidad no
tenía un peso importante en el circuito ER no lo hemos expuesto, algo que haremos a
continuación.
Del mismo modo que en la ER dependiendo del código BCD activaba o desactivaba los
elementos finales de este lazo de control. Existen dos códigos binarios asignados
exclusivamente para las operaciones de incrementar y decrementar el contador.
Cuando el decodificador recibe cualquiera de estas dos señales, activa la línea de salida
correspondiente, con la única diferencia de que en este caso no existe flip-flop a la salida,
ya que ahora lo que nos interesa son valores pulsantes, no estacionarios, puesto que el
circuito lo que cuenta son pulsos, o cambios de flanco. Las dos líneas que nacen a la salida
del decodificador son directamente las entradas que utilizará para su cuenteo el circuito
contador.
Supongamos que tenemos el circuito en reposo, por lo que deberían verse tres ceros, uno
en cada uno de los display de 7 segmentos. En esta posición inicial pulsamos el botón de
incrementar un 1% la apertura de la reguladora. Tras recibir el decodificador la debida
orden da un el flanco descendente en la línea de salida correspondiente, esta llega al
circuito Contador. Este circuito consta de tres partes. La primera está compuesta por tres
circuitos integrados 74LS192, que son sendos contadores. Estos chips poseen entradas de
incremento (up) y de decremento (down) lo que nos permite el conteo en los dos sentidos.
Poseen también las salidas de acarreo (carry) y (borrow) muy importante a la hora de
ordenar el paso de un display a otro. Cada contador es capaz de contar desde 0 hasta 9,
cuando alcanza a los valores extremos 0 y 9 utiliza las salidas de carry o borrow para
incrementar o decrementar el siguiente contador. Es decir cuando pasamos de un 9 a un 10
como un display de 7 segmentos sólo es capaz de representar hasta 9, para lograr el 10,
cuando contabiliza los 9 pulsos al llegar al décimo, automáticamente se pone a cero y da
un pulso de acarreo a la entrada up del siguiente contador. Análogamente cuando bajamos
de un 10 a un 9 el contador da una señal de borrow haciendo que el contador que marca el
uno decremento y posicionando al contador que marca un 0 en un 9. Una vez ha hecho el
conteo, este C.I. nos da esta información codificada en BCD a través de sus 4 salidas. Pero
88
Estudio y desarrollo de un control distribuido para una planta.
Como su nombre indica este chip tiene la única función de traducir la información BCD
que reciben sus cuatro entradas en siete salidas capaces de gobernar los 7 diodos led que
componen el display.
Existen dos tipos de displays los de ánodo común y los de cátodo común, la diferencia es
bien sencilla. Un display no es más que 7 leds juntos dentro de un mismo encapsulado.
Para ahorrar tamaño no es necesario colocar las 14 patillas necesarias para todos los leds,
ya que sería absurdo. Para ello se utiliza como común o todos los positivos, que sería
ánodo común, o se utilizan todos los negativos, cátodo común. Nosotros nos hemos
decantado por la de ánodo común. El funcionamiento en principio es el mismo, no
presentauna complejidad mayor, pero hemos decidido así por disponibilidad de material.
89
Estudio y desarrollo de un control distribuido para una planta.
3.7. PLC
3.7.2. Introducción.
Igual que en el caso de la estación remota, el PLC que hemos usado para implementar este
proyecto ha sido un PC, pero en este caso portátil. Este hecho hace que el proyecto sea más
transportable, ya que si implementáramos todo con dos PC’s de sobremesa sería difícil y
costoso el transporte. También es cierto que encontrar un portátil que incorporara un DB25
no ha sido tarea fácil, ya que si bien en los de sobre mesa aun es corriente en las placas
base modernas, en los portátiles por sus requerimientos de tamaño y austeridad, hace años
que fue eliminado. Para ello nos hemos decantado, por falta de opciones, de un portátil
algo longevo pero funcional. El dispositivo en sí, funciona bajo Windows 98, ya que por
capacidad de disco duro y memoria no es capaz de albergar un sistema de mayor potencia.
Pero ello no conlleva mayor problema ya que el lenguaje en Visual 6.0 funciona de igual
manera y los requerimientos de potencia que son necesarios para el funcionamiento de la
simulación, los cubre con creces.
De forma similar para este PC se ha desarrollado un software, también implementado en
Visual Basic 6.0, Este software es completamente diferente al de la Estación de Trabajo.
Esta requería de un diseño gráfico importante para su manipulación, algo que en un PLC
no es necesario. Hace años que en la industria han empezado a aparecer PLC’s con
pantallas que soportan un pequeño entorno gráfico. Podría decirse que estos autómatas
están en un sub-segmento entre estos dos dispositivos, pero siguen haciendo más la función
de PLC, ya que están lejos de poderse incorporar como elemento híbrido funcional.
Nosotros lo hemos equipado con una pequeña interface gráfica, a modo demostrativo, para
poder ejemplificar mejor el funcionamiento del sistema, pero podría obviarse en
prácticamente su totalidad y el global funcionaría de igual forma. En nuestro caso el PLC
estará compuesto del propio ordenador portátil más un cable CENTRONIC .
3.7.3. Software.
El software que se ha diseñado para este sistema se puede dividir en dos pantallas, cada
una de las cuales tiene una función específica, pero que para funcionar necesitan del
trabajo combinado de ambas.
• Pantalla principal
• Pantalla de datos.
91
Estudio y desarrollo de un control distribuido para una planta.
92
Estudio y desarrollo de un control distribuido para una planta.
Al desplegar el sub-menú “Datos” se despliega una única opción que es la de “ver datos”.
Ésta opción lo que hace es activar la segunda venta que conforma este software, que
explicaremos en profundidad más adelante.
Hasta aquí llega el menú, ahora tan solo nos queda explicar una seri de botones que hay
distribuidos por la pantalla.
Como sus nombres indican estos botones tienen la función de arrancar y parar el programa
que corre por el PLC. Estos botones son para interrumpir la comunicación
momentáneamente por algún motivo, ya que el PLC se pone en marcha automáticamente al
conectar el sistema desde la Estación de Trabajo.
En el momento en que el programa se carga, automáticamente lee una serie de bancos de
datos que tiene almacenados y los carga en memoria. Estas bases de datos son traducciones
que utilizará el sistema para interpretar en cada momento que es cada código que recibe.
El sistema, aunque esté cargado el programa, no tiene capacidad de leer las entradas si no
se pulsa el botón de “ON” o se le da la orden desde la Estación de Trabajo. Una vez
ponemos en marcha el sistema, va leyendo ininterrumpidamente la entrada del puerto
paralelo, cada vez que le llega una información, la memoriza, se queda una copia en
memoria y otra copia corre todo el programa. La primera es memorizada, porque como ya
explicamos en el apartado en que exponíamos el funcionamiento del puerto paralelo,
cuando se genera un código en el puerto, éste se mantiene en este estado hasta que se
manda otro. Para evitar que esté leyendo durante mucho tiempo el mismo código, haciendo
trabajar inútilmente a todo el software con la misma información, se almacena la primera
vez que lo lee, y la segunda y sucesivas lecturas compara lo que lee con lo que tiene
almacenado, si es lo mismo, no lo deja pasar, de lo contrario tiene vía libre para circular
por el software.
El código que pasa este filtro, es comparado con la base de datos de entradas, y queda
identificado, en el caso de que se tratara de una de las combinaciones no asignadas
quedaría descartada. Una vez la información es identificada se manda a la siguiente
ventana donde se tratará para su posterior salida.
93
Estudio y desarrollo de un control distribuido para una planta.
Hemos podido ver que la manipulación en esta ventana es muy limitada, apenas podemos
hacer nada, ya que no es necesario.
Visualmente podemos ver que esta ventana es algo más completa, pero como
comentábamos anteriormente, es todo ilustrativo, para hacer más comprensible el sistema,
y también nos sirve como ayuda la información que nos da esta pantalla.
No existen botones que nos permitan manipular información, sucede como en la ventana
anterior, porque el hecho de que sea más completa, no implica que sea mucho mas
manipulable, aunque es cierto que se pueden realizar más operaciones y que tiene una
opción, que luego explicaremos, que si es capaz de ejecutar acciones importantes, pero es
solo una excepción.
• Para seguir con la línea marcada hasta ahora, empezaremos introduciéndonos en el
programa, por el menú superior, que como en el caso anterior es muy básico y sencillo. En
el caso de la opción “Menú” vemos que como en el caso anterior solo nos permite cerrar
esta ventana, no tiene ningún uso más.
94
Estudio y desarrollo de un control distribuido para una planta.
Antes de continuar, haremos un inciso necesario para poder explicar debidamente como
funciona este apartado. Si nos fijamos bien en la ilustración 88, podemos ver que se ha
dividido la ventana en 4 recuadros numerados del 1 al 4. Esto en la ventana original
lógicamente no se ve, sólo se ha hecho sobre la imagen de la misma para facilitar la
explicación. Hay que decir que cuando cargamos la pantalla correspondiente a dicha
ilustración, los recuadros 1 y 2 no son visibles. Para que lo sean hay que accionar sendos
comandos que ahora explicaremos. Pero por el contrario los recuadros 3 y 4 están activos y
visibles siempre.
Una vez dicho esto podemos proseguir con el sub-menú que habíamos preintroducido.
Cuando seleccionamos la primera opción “Mostrar Registros IO”, aparecerá en pantalla el
recuadro 1.
Esta pantalla es muy útil para comprobar a que tag equivale un código binario. Quizás
faltaría explicar un punto que no ha quedado del todo claro anteriormente. Las bases de
datos están compuestas por 5 registros. Tres de los cuales son los bits de entradas, los bits
de salidas y los bits de ejecución, así como dos registro de tags de entrada y tags de salida.
Los bits de entrada están directamente relacionados con los tags de entrada. Esto se ha
95
Estudio y desarrollo de un control distribuido para una planta.
hecho para comprobar en todo momento que el código correcto activa la opción deseada.
Así al enviar un código desde la estación de trabajo ha de coincidir con su tag de entrada.
Una vez tenemos el código relacionado con su tag de entrada, se le asigna un código de
salida y un tag de salida. El último registro es únicamente para los dispositivos reales que
se pondrán en marcha a través de los circuitos electrónicos. Si pulsamos en la parte
superior el botón de in, nos saldrá a la izquierda los bits de entrada y los tags que le
corresponde a cada código. De igual manera si pulsamos out ocurrirá lo mismo con la
salida. Pero si lo que queremos es comprobar un código o un tag únicamente
seleccionamos de los recuadros superiores el tag, o el código que queramos, este al ser
seleccionado se colocará en la casilla inferior que le pertoque y automáticamente en el otro
recuadro aparecerá su información homóloga. No tiene un efecto sobre el sistema, pero es
una gran herramienta que nos sirve para verificar si algún código no esta siendo
interpretado adecuadamente.
La segunda opción de este sub-menú, “Registro de entradas”, completa la pantalla anterior,
si recordamos la ilustración 88, veremos que corresponde al cuadro marcado con un 2.
Cada vez que uno de estos dispositivos se activa desde la estación de trabajo, el indicador
luminoso de la izquierda se pone en verde, cuando se desactiva se pone en negro. El
indicador de la derecha permanece apagado, sólo se ilumina si ocurre algún error en
cualquiera de los dispositivos, en este caso se iluminará de rojo. A la vez este error se
transmitirá a la Estación de trabajo, donde el elemento en cuestión se detendrá y se
apostará en rojo. Este error como es generado desde el PLC solo se puede corregir si este
detecta que está solventado, para ello utilizaremos los controles que se encuentran
remarcados en rojo dentro del recuadro con el nombre de “Generar fallo”. Este recuadro
contiene los únicos mandos capaces de introducir modificaciones. Estos botones han sido
ideados únicamente para generar fallos en el sistema ejemplificando las posibles averías
que se puedan dar.
Si pulsamos el desplegable, vemos que en él se encuentran todos los dispositivos que hay
implementados en el proyecto exceptuando la válvula de refrigeración. Cuando queramos
generar un error sólo tenemos que desplegar la lista, seleccionar el dispositivo y pulsar el
botón de aceptar. Automáticamente el indicador rojo del dispositivo seleccionado se
97
Estudio y desarrollo de un control distribuido para una planta.
iluminara, apagándose el verde, siempre y cuando éste estuviera en marcha. Esto dará la
orden de paro a la estación de trabajo del propio elemento, colocándolo en rojo. Cuando el
elemento ha quedado reparado, lo seleccionaremos nuevamente en el desplegable y cuando
pulsemos el botón de reset dicho componente restaurara el Led de avería apagándose éste.
Aquí es donde entra en juego el botón que teníamos en el cuadro desplegable de la pantalla
principal de la Estación de Trabajo. Ahora que la avería ha sido restaurada en el PLC, para
que el operado pueda disponer de la unidad, ha de pulsar este botón que resetea la avería en
la Estación de Trabajo.
• Por último tenemos el recuadro número 4, este recuadro es únicamente informativo,
solo da información útil para el observador.
En primer caso lo que más llama la atención es el gran display digital. Éste marcará en
todo momento los incrementos y decrementos que desde la Estación de Trabajo le ordene
el operador. A su vez la barra de progreso irá avanzando o retrocediendo del mismo modo.
En el lado derecho tenemos cuatro recuadros informativos, los cuales nos dan lectura de
código de entrada y su tag, así como el código correspondiente de salida y su tag.
98
Conclusiones y Líneas futuras
- 99 -
Conclusiones y Líneas futuras.
INT hDev;
INT hTime;
STRING sText;
IF hTraceOn THEN
IF (StrLeft(sPrompt, StrLength(sMask)) = sMask) THEN
TraceMsg(sPrompt);
hTime = TimeCurrent();
sText = TimeToStr(hTime, 2)+" "+TimeToStr(hTime, 1)+"
"+sPrompt;
SemWait(hDebugSem, 10);
FileWriteLn(hDebugFile, sText);
SemSignal(hDebugSem);
END
END
END
En el tema hardware, empezaríamos por sustituir un bus paralelo, que si bien es más
potente que el serie, está limitado en cuanto a distancia y a número de datos a transmitir.
Por lo que sería otro punto mejorable dentro de nuestro sistema. Como estudiamos en la
primera parte del proyecto, la mayoría de los buses existentes hoy en DIA para entornos
industriales, se implementan sobre bus serie. Al sustituir esto cambiaremos también el
protocolo de comunicación por un más efectivo TCP IP por ejemplo. Nos permite un
mayor control del bus axial como detección de errores y un flujo de información mas
ordenado.
También podríamos introducir mejoras en los dispositivos electrónicos diseñados, sobre
todo en el circuito Estación Remota. Donde se le podría dotar de inteligencia utilizando un
microprocesador. A diferencia de ahora que la repartición de funciones la realiza un
decodificador
- 100 -
Bibliografía y Software empleado.
5. Bibliografía.
¾ " I he Measurement and Automation" calalog 2004 National Instrumentéis
¾ Revista "Instrumentación y Control Automático" n° 122
¾ "EtberNet/IP" Rockwell automation Noviembre 2000
¾ "NetLínx" Rockwell automation Noviembre 2002
¾ "Latinoamericana Advance" Siemens 2004
¾ "Sistemas De Control "Carmen D'Sousa www.monografias.com
¾ "Tecnologías y actividades de estandarización para la interconexión de Industrial
Networks" Alcatel para Fundación AUNA
¾ "Comunicaciones Industriales" Autores: V.Sempere, J. Silvestre, J.A. Martínez
Editorial: SPUPV (SPUPV-2002.213) Año:2002
¾ Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo
¾ Universidad Miguel Hernández Dpto. Ingeniería.
¾ http://en.wikipedia.org/wiki/Citect
¾ http://es.wikipedia.org/wiki/Profibus_PA
¾ http://formacion.plcmadrid.es/descargas/docs/omron/ProfibusOmron.pdf
¾ Electrónica digital moderna. Teoría y Práctica . J.M.Angulo. Editorial Paraninfo.
¾ http://www.datasheetcatalog.net/es/datasheets_pdf/7/4/L/S/74LS74.shtml
¾ http://es.rs-online.com/web/
¾ http://www.alldatasheet.com/datasheet-pdf/pdf/27999/TI/74LS266.html
¾ Visual Basic Curso de programación Fco. Javier Ceballos Editorial ra-ma.
- 101 -
Links datasheets
6. Link Datasheets.
¾ http://www.datasheetcatalog.org/datasheets/50/375549_DS.pdf
(74LS266)
¾ http://www.datasheetcatalog.org/datasheets/70/375318_DS.pdf
(74LS04)
¾ http://www.datasheetcatalog.org/datasheets/70/375337_DS.pdf
(74LS08)
¾ http://www.datasheetcatalog.org/datasheets/70/375334_DS.pdf
(74LS07)
¾ http://www.datasheetcatalog.org/datasheets/70/375703_DS.pdf
(74LS74)
¾ http://www.datasheetcatalog.org/datasheets/70/375646_DS.pdf
(74LS47)
¾ http://www.datasheetcatalog.org/datasheet/motorola/SN74LS148D.p
df (74LS147)
¾ http://www.datasheetcatalog.org/datasheets/105/361053_DS.pdf
(74LS192)
¾ http://www.datasheetcatalog.org/datasheet/fairchild/BD137.pdf
(BD137).
- 102 -
Índice de Anexos
ANEXOS
- 103 -
Anexos1 Rutinas Programadas
If act = 7 Then
Else
ProgressBar1.Visible = True
Dim EXL As Excel.Application
Set EXL = New Excel.Application
Dim w As Excel.Workbook
Set w = EXL.Workbooks.Open(App.Path + "\MAXMIN.xls")
Dim s As Excel.Worksheet
Set s = w.Sheets("Hoja1")
For i = 2 To 23
ProgressBar1.Value = i
s.Range("C" & i).Value = MAX(i)
s.Range("D" & i).Value = MIN(i)
Next
Set s = Nothing
w.Save
w.Close
Set w = Nothing
Set EXL = Nothing
End If
Timer1.Enabled = True
End Sub
105
Anexos1 Rutinas Programadas
Form2.Visible = True
NUM = 1
Form2.Frame2.Enabled = True
End Sub
Private Sub ACCESO1_KeyPress(KeyAscii As Integer) 'Realiza la misma
función que el botón acceder pero pulsando el botón Return del
teclado.
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Call Botonacceso_Click
End If
End Sub
106
Anexos1 Rutinas Programadas
Frame2.Enabled = False
Unload Form2
End Sub
107
Anexos1 Rutinas Programadas
End Select
Call Command42_Click
Frame2.Enabled = False
Unload Form2
End Sub
108
Anexos1 Rutinas Programadas
109
Anexos1 Rutinas Programadas
110
Anexos1 Rutinas Programadas
End Sub
111
Anexos1 Rutinas Programadas
A = 1
Call error
Exit Sub
End If
If Text2 = "" Then
A = 2
Call error
Exit Sub
End If
If Text1 = Text2 Then
Else
A = 3
Call error
Exit Sub
End If
psw = Text2.Text
'ENCRIPT = Encriptado(psw)
direccion = App.Path & "\password.txt"
Open direccion For Output As #1
Print #1, psw
Close #1
Form1.Acceso1.SetFocus
Unload NPASSWORD
End Sub
113
Anexos1 Rutinas Programadas
KeyAscii = 0
Call Command1_Click
End If
End Sub
7.1.4. Código Válvula Amoniaco.
Option Explicit
Dim MAX As Integer
Else
Timer3.Enabled = True
End If
End Sub
115
Anexos1 Rutinas Programadas
Else
Picture3.Visible = False
Picture2.Visible = True
End If
End Sub
Load PPrincipal
PPrincipal.Visible = True
Unload Form1
Else
MsgBox "¡PASSWORD INCORRECTO!", vbCritical, "¡ERROR!"
Acceso1 = ""
Acceso1.SetFocus
Exit Sub
End If
GoTo C
B:
MsgBox "¡Error acceso Password!", vbCritical, "¡ERROR!"
C:
End Sub
117
Anexos1 Rutinas Programadas
End
End If
End Sub
118
Anexos1 Rutinas Programadas
PPrincipal.Text18 = Form2.text1
Case 6
MAXMIN.Text2 = Form2.text1
End Select
Call Command42_Click
Frame2.Enabled = False
Unload Form2
End Sub
120
Anexos1 Rutinas Programadas
mem(i) = "G"
End Sub
121
Anexos1 Rutinas Programadas
mem(i) = "O"
End Sub
122
Anexos1 Rutinas Programadas
mem(i) = "W"
End Sub
End Sub
123
Anexos1 Rutinas Programadas
End Sub
125
Anexos1 Rutinas Programadas
126
Anexos1 Rutinas Programadas
127
Anexos1 Rutinas Programadas
128
Anexos1 Rutinas Programadas
F = 0
Else
Picture1.ScaleMode = 3
If CANAL1 = True Then
Picture1.ForeColor = &HFF00&
Picture1.Line (Start_Pos, B)-(End_Pos, A)
VAL1 = Aleatorio(CLng(4), CLng(12))
Text11 = C1B
End If
If CANAL2 = True Then
Picture1.ForeColor = &HFF&
Picture1.Line (Start_Pos, D)-(End_Pos, C)
val2 = Aleatorio(CLng(10), CLng(17))
Text12 = C1A
End If
If CANAL3 = True Then
Picture1.ForeColor = &HFFFF&
Picture1.Line (Start_Pos, F)-(End_Pos, E)
val3 = Aleatorio(CLng(1), CLng(10))
Text13 = C1C
End If
B = A
D = C
F = E
Start_Pos = End_Pos
End_Pos = End_Pos + 2.5
End If
End Sub
129
Anexos1 Rutinas Programadas
Shape1.Visible = False
Shape2.Visible = True
Shape3.Visible = False
HScroll1.Value = 0
FlatScrollBar1.Value = 1
Label1.Caption = "CANAL2"
End Sub
130
Anexos1 Rutinas Programadas
ProgressBar1.Value = 0
End If
End If
If Shape2.Visible = True Then
On Error GoTo D
ProgressBar1.MAX = Text12 + 300
ProgressBar1.Value = Text4
D:
If HScroll1.Value - Text12 < 201 Then
If HScroll1.Value = HScroll1.MAX Then
If FlatScrollBar1.Value = FlatScrollBar1.MAX Then
Timer3.Enabled = False
MsgBox "Span fuera de rango", vbExclamation,
"¡Atención!"
Else
FlatScrollBar1.Value = FlatScrollBar1.Value + 1
End If
Else
HScroll1.Value = HScroll1.Value + 1
End If
ElseIf HScroll1.Value - Text12 > 201 Then
If HScroll1.Value = HScroll1.MIN Then
If FlatScrollBar1.Value = FlatScrollBar1.MIN Then
Timer3.Enabled = False
MsgBox "Span fuera de rango", vbExclamation,
"¡Atención!"
Else
FlatScrollBar1.Value = FlatScrollBar1.Value - 1
HScroll1.Value = HScroll1.MAX
End If
Else
On Error GoTo ZZ
HScroll1.Value = HScroll1.Value + 1
ZZ:
End If
End If
131
Anexos1 Rutinas Programadas
Else
FlatScrollBar1.Value = FlatScrollBar1.Value + 1
End If
Else
HScroll1.Value = HScroll1.Value + 1
End If
ElseIf HScroll1.Value - Text13 > 201 Then
If HScroll1.Value = HScroll1.MIN Then
If FlatScrollBar1.Value = FlatScrollBar1.MIN Then
Timer3.Enabled = False
MsgBox "Span fuera de rango", vbExclamation,
"¡Atención!"
Else
FlatScrollBar1.Value = FlatScrollBar1.Value - 1
HScroll1.Value = HScroll1.MAX
End If
Else
HScroll1.Value = HScroll1.Value + 1
End If
End If
If HScroll1.Value - Text13 = 201 Then
Timer3.Enabled = False
MsgBox "CANAL3 Ajustado", vbInformation, "¡Atención!"
ProgressBar1.Value = 0
End If
End If
End Sub
132
Anexos1 Rutinas Programadas
133
Anexos1 Rutinas Programadas
End If
End Sub
134
Anexos1 Rutinas Programadas
bRetVal = GetPortBit(&H378, 1)
Select Case bRetVal
Case Is = False
' pone el bit 1 q corresponde al pin 4 a nivel 1
SetPortBit &H378, 1
Text1.Text = Val(Text1.Text) + 2
led1(1).Visible = True
led0(1).Visible = False
Case Is = True
' pone el bit 1 q corresponde al pin 4 a nivel 0
NotPortBit &H378, 1
Text1.Text = Val(Text1.Text) - 2
led1(1).Visible = False
led0(1).Visible = True
End Select
End Sub
135
Anexos1 Rutinas Programadas
136
Anexos1 Rutinas Programadas
led0(6).Visible = True
End Select
End Sub
137
Anexos1 Rutinas Programadas
Le6 = "1"
LedE1(5).Visible = True
LedE0(5).Visible = False
Else
Le6 = "0"
LedE1(5).Visible = False
LedE0(5).Visible = True
End If
If GetPortBit(&H378, 6) = True Then
Le7 = "1"
LedE1(6).Visible = True
LedE0(6).Visible = False
Else
Le7 = "0"
LedE1(6).Visible = False
LedE0(6).Visible = True
End If
If GetPortBit(&H378, 7) = True Then
Le8 = "1"
LedE1(7).Visible = True
LedE0(7).Visible = False
Else
Le8 = "0"
LedE1(7).Visible = False
LedE0(7).Visible = True
End If
End If
End Sub
138
Anexos1 Rutinas Programadas
If Label5(2).Caption = 1 Then
Label2 = Label2 + 2
Else
Label2 = Label2
End If
If Label5(3).Caption = 1 Then
Label2 = Label2 + 4
Else
Label2 = Label2
End If
If Label5(4).Caption = 1 Then
Label2 = Label2 + 8
Else
Label2 = Label2
End If
If Label5(5).Caption = 1 Then
Label2 = Label2 + 16
Else
Label2 = Label2
End If
End Sub
139
Anexos1 Rutinas Programadas
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 3 ' BOMBA CIRCUITO REACTOR MARCHA
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 4 ' BOMBA CIRCUITO REACTOR PARO
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 5 'REGULADORA INCREMENTO
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
140
Anexos1 Rutinas Programadas
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 6 'REGULADORA DECREMENTO
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 7 'BOMBA VACIADO MARCHA
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 8 'BOMBA VACIADO PARO
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
141
Anexos1 Rutinas Programadas
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 9 'BOMBA REFRIGERACION1 MARCHA
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 10 'BOMBA REFRIGERACION1 PARO
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 11 'BOMBA REFRIGERACION2 MARCHA
If GetPortBit(&H378, 0) = False Then
142
Anexos1 Rutinas Programadas
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 12 'bomba refrigeracion 2 parada
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 13 'valvula salida abierta
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
143
Anexos1 Rutinas Programadas
'*******************************************************************
*****
Case 14 'valvula salida cerrada
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 15 'comprobacion plc marcha
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 16 'válvula frío cerrada
'*******************************************************************
*****
Case 17 ' motor 1 agua marcha
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
144
Anexos1 Rutinas Programadas
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 18 'motor 1 agua paro
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 19 ' motor 2 agua marcha
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 23 'VLVULA AIREACION ABIERTA
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
145
Anexos1 Rutinas Programadas
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 24 'VALVULA AIREACION CERRADA
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 25 ' motor 2 agua paro
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 26 'MARCHA SOPLANTE
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
146
Anexos1 Rutinas Programadas
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
Case 27
If GetPortBit(&H378, 0) = False Then
SetPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = False Then
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
Timer4.Enabled = True
'*******************************************************************
*****
End Select
End Sub
Private Sub Timer4_Timer()
If GetPortBit(&H378, 0) = True Then
NotPortBit &H378, 0
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then
NotPortBit &H378, 4
End If
ENTSAL = 0
Timer4.Enabled = False
Unload INOUT
147
Anexos1 Rutinas Programadas
End Sub
148
Anexos1 Rutinas Programadas
149
Anexos1 Rutinas Programadas
NUM = 6
ButtonMac3.Visible = True
End Sub
150
Anexos1 Rutinas Programadas
PPrincipal.Shape21.Visible = False
PPrincipal.Shape22.Visible = False
PPrincipal.Shape25.Visible = False
PPrincipal.Shape26.Visible = False
PPrincipal.Shape27.Visible = False
PPrincipal.Shape28.Visible = False
PPrincipal.Shape29.Visible = False
PPrincipal.Shape30.Visible = False
PPrincipal.Shape31.Visible = False
PPrincipal.Shape32.Visible = False
PPrincipal.Shape33.Visible = False
PPrincipal.Shape35.Visible = False
PPrincipal.Label2.Visible = False
PPrincipal.Label3.Visible = False
PPrincipal.Label4.Visible = False
PPrincipal.Label5.Visible = False
PPrincipal.Label6.Visible = False
PPrincipal.Label7.Visible = False
PPrincipal.Label8.Visible = False
PPrincipal.Label11.Visible = False
PPrincipal.Label12.Visible = False
PPrincipal.Label13.Visible = False
PPrincipal.Label15.Visible = False
PPrincipal.Label16.Visible = False
PPrincipal.Label17.Visible = False
PPrincipal.Label18.Visible = False
PPrincipal.Label19.Visible = False
PPrincipal.Label20.Visible = False
PPrincipal.Label21.Visible = False
PPrincipal.Label22.Visible = False
PPrincipal.Label23.Visible = False
PPrincipal.Label24.Visible = False
PPrincipal.Label25.Visible = False
PPrincipal.Label26.Visible = False
PPrincipal.Label27.Visible = False
PPrincipal.Label28.Visible = False
PPrincipal.Label29.Visible = False
PPrincipal.Label30.Visible = False
PPrincipal.Label31.Visible = False
PPrincipal.Label32.Visible = False
PPrincipal.Label33.Visible = False
PPrincipal.Label34.Visible = False
PPrincipal.Label35.Visible = False
PPrincipal.Label37.Visible = False
Select Case MARCO
Case 1
PPrincipal.Shape14.Visible = True
PPrincipal.Label22.Visible = True
Case 2
PPrincipal.Shape28.Visible = True
PPrincipal.Label21.Visible = True
Case 3
PPrincipal.Shape28.Visible = True
PPrincipal.Label21.Visible = True
153
Anexos1 Rutinas Programadas
Case 4
PPrincipal.Shape13.Visible = True
PPrincipal.Label20.Visible = True
Case 5
PPrincipal.Shape12.Visible = True
PPrincipal.Label19.Visible = True
Case 6
PPrincipal.Shape27.Visible = True
PPrincipal.Label18.Visible = True
Case 7
PPrincipal.Shape27.Visible = True
PPrincipal.Label18.Visible = True
Case 8
PPrincipal.Shape26.Visible = True
PPrincipal.Label17.Visible = True
Case 9
PPrincipal.Shape26.Visible = True
PPrincipal.Label17.Visible = True
Case 10
PPrincipal.Shape11.Visible = True
PPrincipal.Label16.Visible = True
Case 11
PPrincipal.Shape10.Visible = True
PPrincipal.Label15.Visible = True
Case 12
PPrincipal.Shape9.Visible = True
PPrincipal.Label13.Visible = True
Case 13
PPrincipal.Shape25.Visible = True
PPrincipal.Label12.Visible = True
Case 14
PPrincipal.Shape22.Visible = True
PPrincipal.Label11.Visible = True
Case 15
PPrincipal.Shape8.Visible = True
PPrincipal.Label5.Visible = True
Case 16
PPrincipal.Shape6.Visible = True
PPrincipal.Label7.Visible = True
Case 17
PPrincipal.Shape1.Visible = True
PPrincipal.Label3.Visible = True
Case 18
PPrincipal.Shape2.Visible = True
PPrincipal.Label2.Visible = True
Case 19
PPrincipal.Shape3.Visible = True
PPrincipal.Label4.Visible = True
Case 20
PPrincipal.Shape4.Visible = True
PPrincipal.Label8.Visible = True
Case 21
PPrincipal.Shape7.Visible = True
PPrincipal.Label6.Visible = True
154
Anexos1 Rutinas Programadas
Case 22
PPrincipal.Shape29.Visible = True
PPrincipal.Label23.Visible = True
Case 23
PPrincipal.Shape30.Visible = True
PPrincipal.Label24.Visible = True
Case 24
PPrincipal.Shape15.Visible = True
PPrincipal.Label25.Visible = True
Case 25
PPrincipal.Shape18.Visible = True
PPrincipal.Label26.Visible = True
Case 26
PPrincipal.Shape31.Visible = True
PPrincipal.Label27.Visible = True
Case 27
PPrincipal.Shape32.Visible = True
PPrincipal.Label28.Visible = True
Case 28
PPrincipal.Shape19.Visible = True
PPrincipal.Label29.Visible = True
Case 29
PPrincipal.Shape20.Visible = True
PPrincipal.Label30.Visible = True
Case 30
PPrincipal.Shape17.Visible = True
PPrincipal.Label31.Visible = True
Case 31
PPrincipal.Shape21.Visible = True
PPrincipal.Label32.Visible = True
Case 32
PPrincipal.Shape16.Visible = True
PPrincipal.Label34.Visible = True
PPrincipal.Label33.Visible = True
Case 33
PPrincipal.Shape33.Visible = True
PPrincipal.Label35.Visible = True
Case 34
Case 35
PPrincipal.Shape35.Visible = True
PPrincipal.Label37.Visible = True
End Select
Timer1.Enabled = False
Unload PPRINAPOYO
End Sub
156
Anexos1 Rutinas Programadas
157
Anexos1 Rutinas Programadas
End Sub
158
Anexos1 Rutinas Programadas
Call EntradasLeidas
End If
End Sub
159
Anexos1 Rutinas Programadas
Picture4.Visible = False
Picture13.Visible = False
Picture12.Visible = True
Timer2.Enabled = False
ENTSAL = 2
Load INOUT
End If
End Sub
160
Anexos1 Rutinas Programadas
161
Anexos1 Rutinas Programadas
End If
Volumen &HAD, 0, 1, 0
ACTB = MsgBox("¿ MARCHA BOMBA?" & Chr(13), 324, "ATENCION")
Volumen &HAD, 0, 1, 0
If ACTB = 7 Then
Else
If LED3(3).Visible = True Then
MsgBox "Imposible poner en marcha, Fallo en bomba",
vbCritical, "¡Atención!"
Exit Sub
End If
Picture17.Visible = False
Picture16.Visible = True
Timer10.Enabled = True
Text12.BackColor = &H80000008
Text13.BackColor = &H80000008
Text14.BackColor = &H80000008
i2 = 0
ENTSAL = 7
Load INOUT
End If
End Sub
162
Anexos1 Rutinas Programadas
Picture19.Visible = False
Picture18.Visible = True
End If
SNIFERIN.Enabled = True
End If
End Sub
163
Anexos1 Rutinas Programadas
Else
Picture25.Visible = True
Picture24.Visible = False
ENTSAL = 12
Load INOUT
End If
End Sub
164
Anexos1 Rutinas Programadas
Picture30.Visible = False
Picture29.Visible = True
ENTSAL = 24
Load INOUT
End If
End Sub
165
Anexos1 Rutinas Programadas
166
Anexos1 Rutinas Programadas
AMONIAC.Show
End Sub
167
Anexos1 Rutinas Programadas
End If
End Sub
168
Anexos1 Rutinas Programadas
Else
N0 = 1
s = 1
End If
If GetPortBit(&H379, 4) = True Then
N1 = 0
Else
N1 = 1
s = s + 2
End If
If GetPortBit(&H379, 5) = True Then
N2 = 0
Else
N2 = 1
s = s + 4
End If
If GetPortBit(&H379, 6) = True Then
N3 = 0
Else
N3 = 1
s = s + 8
End If
If GetPortBit(&H379, 7) = True Then
N4 = 1
s = s + 16
Else
N4 = 0
End If
FORZAR = N4 & N3 & N2 & N1 & N0
If s = 0 Then
GoTo FIN
Else
fallodisp = s
s = 0
End If
Call EntradasLeidas
FORZAR = ""
s = 0
FIN:
End Sub
Private Sub EntradasLeidas()
Select Case fallodisp
Case 1 'PARO AGITADOR REACOR
If MSGALRM = 6 Then
Else
MSGALRM = 6
Call ALARMAS
End If
Timer2.Enabled = False
Picture12.Visible = True
Picture13.Visible = False
ENTSAL = 2
Load INOUT
Case 2 ' Bomba vaciado parada
169
Anexos1 Rutinas Programadas
If MSGALRM = 9 Then
Else
MSGALRM = 9
Call ALARMAS
End If
Picture16.Visible = False
Picture17.Visible = True
ENTSAL = 8
Load INOUT
Timer10.Enabled = False
If Text13 < 10 Then
Else
Timer10.Enabled = True
End If
Case 3 ' PARO BOMBA CIRCUITO REACTOR
If MSGALRM = 8 Then
Else
MSGALRM = 8
Call ALARMAS
End If
Picture14.Visible = True
Picture15.Visible = False
ENTSAL = 4
Load INOUT
Timer11.Enabled = False
On Error GoTo A2
If Text11 < 10 Then 'Esta condición es para que en caso de que
coincida que hay un fallo con la bomba casi parada, no ponga el
timer en marcha el cual subiría la intensidad de la bomba de forma
irreal
Else
Timer11.Enabled = True
End If
A2:
Case 4 'PARO BOMBA REFRIGERACION 1
If MSGALRM = 10 Then
Else
MSGALRM = 10
Call ALARMAS
End If
ENTSAL = 10
Load INOUT
Picture22.Visible = True
Picture23.Visible = False
Case 5 ' PARO BOMBA REFRIGERACIÓN 2
If MSGALRM = 11 Then
Else
MSGALRM = 11
End If
Call ALARMAS
ENTSAL = 12
Load INOUT
Picture25.Visible = True
Picture24.Visible = False
170
Anexos1 Rutinas Programadas
Case 13
If MSGALRM = 7 Then
Else
MSGALRM = 7
Picture18.Visible = False
Picture19.Visible = True
Call ALARMAS
End If
Case 29 ' plc DESACTIVADO
Picture10(12).Visible = False
Picture42(11).Visible = True
MsgBox "PLC desactivado", vbExclamation, "¡Atención!"
Label69 = "PLC OFF"
Call Picture36_Click
Case 30 ' plc ACTIVADO
Picture10(12).Visible = True
Picture42(11).Visible = False
Picture45.Visible = False
Label69 = "PLC ON"
End Select
End Sub
171
Anexos1 Rutinas Programadas
172
Anexos1 Rutinas Programadas
173
Anexos1 Rutinas Programadas
MARCO = 2
End Sub
174
Anexos1 Rutinas Programadas
175
Anexos1 Rutinas Programadas
176
Anexos1 Rutinas Programadas
Load PPRINAPOYO
MARCO = 16
End Sub
177
Anexos1 Rutinas Programadas
178
Anexos1 Rutinas Programadas
I5 = I5 - 2
If Text13 < 0 Then
Else
Text13 = (I3 - 7) '& " RPM"
End If
If Text14 < 0 Then
Else
Text14 = (I4 - 1) '& " Kg/cm2)"
End If
If Text12 < 0 Then
Else
Text12 = (I5 - 2) '& " A"
End If
End If
End If
If i2 > 30 Then
Timer10.Enabled = False
If Picture16.Visible = True Then
Timer8.Enabled = True
Else
Text13 = "0 RPM"
End If
End If
End Sub
179
Anexos1 Rutinas Programadas
Text27 = I3
Text10 = I4
Text11 = I5
End If
Else
If i2 < 2 Then
I3 = I3 - 7
I4 = I4 - 1
I5 = I5 - 2
Else
I3 = I3 - 4
I4 = I4 - 1
I5 = I5 - 2
If Text27 < 0 Then
Else
Text27 = I3
End If
If Text10 < 0 Then
Else
Text10 = I4
End If
If Text11 < 0 Then
Else
Text11 = I5
End If
End If
End If
If i2 > 30 Then
Timer11.Enabled = False
If Picture15.Visible = True Then
Timer9.Enabled = True
End If
End If
End Sub
180
Anexos1 Rutinas Programadas
Timer14.Enabled = True
End Sub
181
Anexos1 Rutinas Programadas
End If
Timer18.Interval = 100
If Text16 < 1350 Then
Text16 = Text16 + 5.3
Else
CAU = Aleatorio(CLng(1327), CLng(1350))
Text16 = CAU
Timer18.Interval = 1000
End If
End Sub
182
Anexos1 Rutinas Programadas
183
Anexos1 Rutinas Programadas
End If
If MSGALRM = 16 Then 'temperatura inferior reactor baja
Else
If Text6 < MIN(4) Then
MSGALRM = 16
Call ALARMAS
Text6.BackColor = &HFF&
End If
End If
If MSGALRM = 17 Then 'temperatura inferior reactor alta
Else
If Text8 > MAX(5) Then
MSGALRM = 17
Call ALARMAS
Text6.BackColor = &HFF&
End If
End If
If MSGALRM = 18 Then 'temperatura inferior reactor baja
Else
If Text8 < MIN(5) Then
MSGALRM = 18
Call ALARMAS
Text6.BackColor = &HFF&
End If
End If
If MSGALRM = 19 Then 'temperatura inferior reactor alta
Else
If Text7 > MAX(6) Then
MSGALRM = 19
Call ALARMAS
Text7.BackColor = &HFF&
End If
End If
If MSGALRM = 20 Then 'temperatura inferior reactor alta
Else
If Text7 < MIN(6) Then
MSGALRM = 20
Call ALARMAS
Text7.BackColor = &HFF&
End If
End If
B:
End Sub
184
Anexos1 Rutinas Programadas
End Sub
Private Sub TEXT11_CLICK()
mxmn = 10
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT8_click()
mxmn = 5
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT5_click()
mxmn = 3
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT6_click()
mxmn = 4
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT7_click()
mxmn = 6
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT9_click()
mxmn = 7
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT10_click()
mxmn = 8
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT13_CLICK()
mxmn = 13
Load MAXMIN
MAXMIN.Visible = True
End Sub
Private Sub TEXT14_CLICK()
mxmn = 14
Load MAXMIN
MAXMIN.Visible = True
End Sub
185
Anexos1 Rutinas Programadas
End Sub
186
Anexos1 Rutinas Programadas
End If
End Sub
187
Anexos1 Rutinas Programadas
MAXMIN.Visible = True
End Sub
Private Sub TEXT16_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
Else
KeyAscii = 0
End If
End Sub
188
Anexos1 Rutinas Programadas
Load MAXMIN
MAXMIN.Visible = True
End Sub
189
Anexos1 Rutinas Programadas
190
Anexos1 Rutinas Programadas
191
Anexos1 Rutinas Programadas
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 21
Text1 = "IT5 Temperatura circuito reactor alta "
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 22
Text1 = "IT5 Temperatura circuito reactor baja "
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 23
Text1 = "IP3 Presión circuito reactor alta "
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 24
Text1 = "IP3 Presión circuito reactor baja "
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 25
Text1 = "II3 Intensidad bomba circuito reactor alta"
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 26
Text1 = "II3 Intensidad bomba circuito reactor baja"
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 27
Text1 = "IR2 Revoluciones bomba circuito reactor altas"
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 28
Text1 = "IR2 Revoluciones bomba circuito reactor bajas"
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 29
Text1 = "IR1 Revoluciones bomba vaciado reactor altas"
Timer3.Enabled = True
Call REGISTRO_ALARMAS
Case 30
Text1 = "IR1 Revoluciones bomba vaciado reactor bajas"
Timer3.Enabled = True
Call REGISTRO_ALARMAS
End Select
End Sub
192
Anexos1 Rutinas Programadas
Picture39.Visible = True
Picture35.Visible = False
End If
End Sub
193
Anexos1 Rutinas Programadas
PPrincipal.Width = 15405 + i
If PPrincipal.Width = 17145 Then
Timer22.Enabled = False
End If
Next
ElseIf PPrincipal.Width = 17145 Then
For i = 0 To 1740
PPrincipal.Width = 17145 - i
If PPrincipal.Width = 15405 Then
Timer22.Enabled = False
End If
Next
End If
End Sub
194
Anexos1 Rutinas Programadas
Picture10(7).Visible = True
Picture42(6).Visible = False
Case 14
Picture10(7).Visible = False
Picture42(6).Visible = True
Case 17
Picture10(8).Visible = True
Picture42(7).Visible = False
Case 18
Picture10(8).Visible = False
Picture42(7).Visible = True
Case 19
Picture10(9).Visible = True
Picture42(8).Visible = False
Case 23
Picture10(10).Visible = True
Picture42(9).Visible = False
Case 24
Picture10(10).Visible = False
Picture42(9).Visible = True
Case 25
Picture10(9).Visible = False
Picture42(8).Visible = True
Case 26
Picture10(11).Visible = True
Picture42(10).Visible = False
Case 27
Picture10(11).Visible = False
Picture42(10).Visible = True
End Select
Select Case fallodisp
Case 1 ' AGITADOR REACTOR
For i = 0 To 10
LED3(i).Visible = False
Next
LED3(0).Visible = True
Case 2 'BOMBA VACIADO REACTOR
LED3(3).Visible = True
Picture44(3).Visible = True
Case 3 ' BOMBA CIRCUITO REACTOR
LED3(1).Visible = True
Picture44(1).Visible = True
Case 4 ' bomba refrigeración 1
LED3(4).Visible = True
Picture44(4).Visible = True
Case 5 ' bomba refrigeración 2
LED3(5).Visible = True
Picture44(5).Visible = True
Case 30
Case 31
For i = 0 To 10
LED3(i).Visible = False
Next
End Select
195
Anexos1 Rutinas Programadas
End Sub
196
Anexos1 Rutinas Programadas
End Sub
197
Anexos1 Rutinas Programadas
198
Anexos1 Rutinas Programadas
199
Anexos1 Rutinas Programadas
If CL = False Then
HScroll1.Value = HScroll1.Value + 1
End If
ENTSAL = 5
Load INOUT
End If
If Text3 < 1 Then
Else
ProgressBar1.Value = Text3
End If
End Sub
201
Anexos1 Rutinas Programadas
End If
If GetPortBit(&H378, 1) = True Then
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then
SetPortBit &H378, 4
End If
APERTURA.Value = 0
Text3 = 0
ProgressBar1.Value = 0
HScroll1.Value = 0
End Sub
202
Anexos1 Rutinas Programadas
Else
KeyAscii = 0
End If
End Sub
204
Anexos1 Rutinas Programadas
For i = 1 To 32
If MATRIZBITS(i) = "" Then
MATRIZBITS(i) = DATOSBITS
GoTo B1
End If
Next
B1:
Loop
BB1:
Close #1
'*******************************************************************
*******************************************
' LECTURA DATOS MATRIZ BITS SALIDAS
direccion = App.Path & "\bitssalidas.txt" 'PATH DONDE SE ENCUNTRA EL
ARCHIVO DE REGISTRO
Open direccion For Input As #1
Do While Not EOF(1) 'EOF: End Of File (Final del archivo)
Input #1, DATOSBITSSALIDAS
If DATOSBITSSALIDAS = "" Then
GoTo BB2
End If
For i = 1 To 32
If MATRIZBITSSALIDAS(i) = "" Then
MATRIZBITSSALIDAS(i) = DATOSBITSSALIDAS
GoTo B2
End If
Next
B2:
Loop
BB2:
Close #1
'*******************************************************************
*******************************************
' LECTURA DATOS MATRIZ TAGS SALIDAS
direccion = App.Path & "\TAGSALIDAS.txt" 'PATH DONDE SE ENCUNTRA EL
ARCHIVO DE REGISTRO
Open direccion For Input As #1
Do While Not EOF(1) 'EOF: End Of File (Final del archivo)
Input #1, DATOSTAGSSALIDAS
If DATOSTAGSSALIDAS = "" Then
GoTo BB3
End If
For i = 1 To 32
If MATRIZTAGSSALIDAS(i) = "" Then
MATRIZTAGSSALIDAS(i) = DATOSTAGSSALIDAS
GoTo B3
End If
Next
B3:
Loop
BB3:
Close #1
'*******************************************************************
********************************************
205
Anexos1 Rutinas Programadas
206
Anexos1 Rutinas Programadas
207
Anexos1 Rutinas Programadas
End If
s = s - 1
s = s * 10
Else
AA = AA & 1
If GetPortBit(&H37A, 2) = True Then
NotPortBit &H37A, 2
End If
s = s * 10
End If
If s > 0.9 Then
AA = AA & 1
If GetPortBit(&H37A, 1) = True Then
NotPortBit &H37A, 1
End If
s = s - 1
s = s * 10
Else
Text2 = Text2 & 0
AA = AA & 0
If GetPortBit(&H37A, 1) = False Then
SetPortBit &H37A, 1
End If
s = s * 10
End If
If s > 0.9 Then
Text2 = Text2 & 0
AA = AA & 0
If GetPortBit(&H37A, 0) = True Then
NotPortBit &H37A, 0
End If
s = s - 1
s = s * 10
Else
AA = AA & 1
If GetPortBit(&H37A, 0) = False Then
SetPortBit &H37A, 0
End If
s = s * 10
End If
End If
If CountExit = 2 Then
If GetPortBit(&H378, 6) = False Then
SetPortBit &H378, 6
End If
End If
If CountExit = 3 Then
CountExit = 0
NotPortBit &H378, 6
SALIDA.Enabled = False
End If
End Sub
208
Anexos1 Rutinas Programadas
End
End Sub
DatosIO.Text5 = forzar2
Dim d1, d2 As Integer 'variable que se queda con la posición del
dato encontrado en la matriz
For i = 1 To 32
If forzar2 = MATRIZBITS(i) Then
d1 = i
GoTo B2
Else
If i = 32 Then
ALARM = 2
Call Alarma
End If
End If
Next
B2:
DatosIO.Text1 = MATRIZTAGS(d1)
contenedor = MATRIZTAGS(d1)
For i = 1 To 32
If contenedor = MATRIZTAGSSALIDAS(i) Then
d2 = i
GoTo B3
End If
Next
B3:
DatosIO.Text6 = MATRIZBITSSALIDAS(d2)
contenedor2 = MATRIZBITSSALIDAS(d2) 'con estos datos trabajaremos
para asignar las salidas
s = contenedor2 / 10000
If s > 0.9 Then
ALARM = 1
Call Alarma
DatosIO.Text6 = "SIN SALIDA"
DatosIO.Text2 = "SIN SALIDA"
209
Anexos1 Rutinas Programadas
Else
DatosIO.Text6 = MATRIZBITSSALIDAS(d2)
DatosIO.Text2 = MATRIZTAGSSALIDAS(i)
s = s * 10
s2 = 4
For i = 0 To 3
s2 = s2 - 1
If s > 0.9 Then
Text2 = Text2 & 1
AA = AA & 1
If GetPortBit(&H37A, s2) = False Then
SetPortBit &H37A, s2
End If
s = s - 1
s = s * 10
Else
Text2 = Text2 & 0
AA = AA & 0
If GetPortBit(&H37A, s2) = True Then
NotPortBit &H37A, s2
End If
s = s * 10
End If
Next
End If
FG = "1110"
If AA = FG Then
DatosIO.REPARTIDOR.Enabled = True
End If
FG = "1101"
If AA = FG Then
DatosIO.REPARTIDOR.Enabled = True
End If
AA = ""
End Sub
210
Anexos1 Rutinas Programadas
DatosIO.LED4.Visible = False
Else
LED6.Visible = True
DatosIO.LED4.Visible = True
End If
End Sub
211
Anexos1 Rutinas Programadas
DatosIO.Text5 = forzar
DatosIO.LECTOR.Enabled = True
End If
End If
Text7 = forzar
b:
forzar = ""
End Sub
212
Anexos1 Rutinas Programadas
213
Anexos1 Rutinas Programadas
contenedor2 = MATRIZBITS(i)
DatosIO.Text6 = MATRIZBITSSALIDAS(i)
DatosIO.Text5 = MATRIZBITS(i)
DatosIO.Text2 = MATRIZTAGSSALIDAS(i)
DatosIO.Text1 = MATRIZTAGS(i)
Text5 = contenedor2 & " " & contenedor
If contenedor = "00000" Then
GoTo FIN
End If
If contenedor = "10001" Then
Call controlsalidas
GoTo FIN
ElseIf contenedor = "10010" Then
Call controlsalidas
GoTo FIN
ElseIf contenedor = "10011" Then
Call controlsalidas
GoTo FIN
End If
s = contenedor / 10000
If s > 0.9 Then
ALARM = 1
Call Alarma
DatosIO.Text6 = "SIN SALIDA"
DatosIO.Text2 = "SIN SALIDA"
Else
DatosIO.Text6 = MATRIZBITSSALIDAS(i)
DatosIO.Text2 = MATRIZTAGSSALIDAS(i)
s = s * 10
s2 = 4
SALIDA.Enabled = True
End If
GoTo veri
Else
End If
Next
FIN:
veri:
End Sub
214
Anexos1 Rutinas Programadas
PUESTAACERO.Enabled = True
End Sub
216
Anexos1 Rutinas Programadas
I2 = 2
ElseIf Combo1.Text = "Bomba Vaciado Reactor" Then
I2 = 3
If LED2(3).Visible = True Then
If GetPortBit(&H378, 1) = True Then '0
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = False Then '1
SetPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = True Then '0
NotPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then '0
NotPortBit &H378, 4
End If
If GetPortBit(&H378, 5) = True Then '0
NotPortBit &H378, 5
End If
PUESTAACERO.Enabled = True
End If
ElseIf Combo1.Text = "Bomba Refrigeración Reactor 1" Then
I2 = 4
If LED2(4).Visible = True Then
If GetPortBit(&H378, 1) = True Then '0
NotPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then '0
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then '1
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then '0
NotPortBit &H378, 4
End If
If GetPortBit(&H378, 5) = True Then '0
NotPortBit &H378, 5
End If
PUESTAACERO.Enabled = True
End If
ElseIf Combo1.Text = "Bomba Refrigeración Reactor 2" Then
I2 = 5
If LED2(5).Visible = True Then
If GetPortBit(&H378, 1) = False Then '1
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then '0
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then '1
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = True Then '0
217
Anexos1 Rutinas Programadas
NotPortBit &H378, 4
End If
If GetPortBit(&H378, 5) = True Then '0
NotPortBit &H378, 5
End If
PUESTAACERO.Enabled = True
End If
ElseIf Combo1.Text = "Válvula Salida Reactor" Then
I2 = 6
If LED2(6).Visible = True Then
If GetPortBit(&H378, 1) = False Then '1
SetPortBit &H378, 1
End If
If GetPortBit(&H378, 2) = True Then '0
NotPortBit &H378, 2
End If
If GetPortBit(&H378, 3) = False Then '1
SetPortBit &H378, 3
End If
If GetPortBit(&H378, 4) = False Then '1
SetPortBit &H378, 4
End If
If GetPortBit(&H378, 5) = True Then '0
NotPortBit &H378, 5
End If
PUESTAACERO.Enabled = True
End If
ElseIf Combo1.Text = "Bomba Agua 1" Then
I2 = 7
ElseIf Combo1.Text = "Bomba Agua 2" Then
I2 = 8
ElseIf Combo1.Text = "Válvula Aireación" Then
I2 = 9
ElseIf Combo1.Text = "Soplante" Then
I2 = 10
End If
End If
For i = 0 To 10
If I2 = i Then
LED3(i).Visible = True
LED4(i).Visible = False
GoTo H
End If
LED3(i).Visible = False
LED4(i).Visible = True
H:
Next
End Sub
218
Anexos1 Rutinas Programadas
Else
LED1(2).Visible = False
LED2(2).Visible = True
End If
ComponentesActivos.Enabled = False
End Sub
219
Anexos1 Rutinas Programadas
LED2(5).Visible = True
LED1(5).Visible = False
ElseIf Entradas = "01100" Then
LED2(5).Visible = False
LED1(5).Visible = True
ElseIf Entradas = "01101" Then
LED2(6).Visible = True
LED1(6).Visible = False
ElseIf Entradas = "01110" Then
LED2(6).Visible = False
LED1(6).Visible = True
ElseIf Entradas = "01111" Then
Form2.ON = True
ElseIf Entradas = "10001" Then
LED2(7).Visible = True
LED1(7).Visible = False
ElseIf Entradas = "10010" Then
LED2(7).Visible = False
LED1(7).Visible = True
ElseIf Entradas = "10011" Then
LED2(8).Visible = True
LED1(8).Visible = False
ElseIf Entradas = "11001" Then
LED2(8).Visible = False
LED1(8).Visible = True
ElseIf Entradas = "10111" Then
LED2(9).Visible = True
LED1(9).Visible = False
ElseIf Entradas = "11000" Then
LED2(9).Visible = False
LED1(9).Visible = True
ElseIf Entradas = "11010" Then
LED2(10).Visible = True
LED1(10).Visible = False
ElseIf Entradas = "11011" Then
LED2(10).Visible = False
LED1(10).Visible = True
ElseIf Entradas = "11100" Then
If Text4 > 50 Then
SD2 = 100
Else
SD2 = 0
End If
End If
LECTOR.Enabled = False
End Sub
220
Anexos1 Rutinas Programadas
221
Anexos1 Rutinas Programadas
222
Anexos1 Rutinas Programadas
KeyAscii = 0
Else
KeyAscii = 0
End If
End Sub
223
Anexos1 Rutinas Programadas
SD1 = 9
Else
SevenSegment2.DisplayNumber = SD1
End If
Text4 = SD2
ProgressBar2.Value = SD2
End Sub
Private Sub Timer2_Timer()
If IO = True Then
If busc = False Then
buscar = VISUALBITS.SelText
Text8 = buscar
For i = 1 To 32
If buscar = MATRIZBITS(i) Then
Text7 = MATRIZTAGS(i)
GoTo B1
End If
Next
B1:
Else
buscar2 = VISUALTAGS.SelText
Text7 = buscar2
For i = 1 To 32
If buscar2 = MATRIZTAGS(i) Then
Text8 = MATRIZBITS(i)
GoTo B2
End If
Next
B2:
End If
Else
If busc = False Then
buscar = VISUALBITS.SelText
Text8 = buscar
For i = 1 To 32
If buscar = MATRIZBITSSALIDAS(i) Then
Text7 = MATRIZTAGSSALIDAS(i)
GoTo B3
End If
Next
B3:
Else
buscar2 = VISUALTAGS.SelText
Text7 = buscar2
For i = 1 To 32
If buscar2 = MATRIZTAGSSALIDAS(i) Then
Text8 = MATRIZBITSSALIDAS(i)
GoTo B4
End If
Next
B4:
End If
End If
Timer2.Enabled = False
224
Anexos1 Rutinas Programadas
End Sub
Private Sub Timer4_Timer()
If GetPortBit(&H379, 3) = False Then
MsgBox "Entrada S3 correcta"
End If
End Sub
Private Sub VISUALBITS_click()
Timer2.Enabled = True
busc = False
End Sub
Private Sub VISUALTAGS_click()
Timer2.Enabled = True
busc = True
End Sub
Private Sub sumardisplay()
Dim x, y, z As Integer
If SD2 = 100 Then
Exit Sub
End If
SD2 = SD2 + 1
If SD2 > 0 Then
If SD2 < 100 Then
Text4 = SD2
Picture3(0).Visible = True
z = SD2 Mod 10
For i = 0 To 9
If i = z Then
Picture1(i).Visible = True
Else
Picture1(i).Visible = False
End If
Next
y = (SD2 / 10) - z / 10
Text9 = y
For i = 0 To 9
If i = Text9 Then
Picture2(i).Visible = True
Else
Picture2(i).Visible = False
If i = y Then
Picture2(y).Visible = True
End If
End If
Next
ElseIf SD2 > 99 Then
For i = 1 To 9
Picture1(i).Visible = False
Picture2(i).Visible = False
Next
Picture3(1).Visible = True
Picture3(0).Visible = False
Picture1(0).Visible = True
Picture2(0).Visible = True
Text4 = 100
225
Anexos1 Rutinas Programadas
SD2 = 100
End If
Else
Picture3(0).Visible = True
Picture1(0).Visible = True
Picture2(0).Visible = True
Text4 = SD2
End If
ProgressBar2.Value = SD2
Label18 = " Abriendo válvula %"
End Sub
Private Sub restardisplay()
Dim x, y, z As Integer
If SD2 = 0 Then
Exit Sub
End If
If SD2 > 0 Then
SD2 = SD2 - 1
If SD2 < 100 Then
Text4 = SD2
Picture3(0).Visible = True
z = SD2 Mod 10
For i = 0 To 9
If i = z Then
Picture1(i).Visible = True
Else
Picture1(i).Visible = False
End If
Next
y = (SD2 / 10) - z / 10
Text9 = y
For i = 0 To 9
If i = Text9 Then
Picture2(i).Visible = True
Else
Picture2(i).Visible = False
If i = y Then
Picture2(y).Visible = True
End If
End If
Next
Else
For i = 1 To 9
Picture1(i).Visible = False
Picture2(i).Visible = False
Next
Picture3(1).Visible = True
Picture3(0).Visible = False
Picture1(0).Visible = True
Picture2(0).Visible = True
End If
Else
For i = 1 To 9
Picture1(i).Visible = False
226
Anexos1 Rutinas Programadas
Picture2(i).Visible = False
Next
Picture3(0).Visible = True
Picture3(1).Visible = False
Picture1(0).Visible = True
Picture2(0).Visible = True
Text4 = SD2
End If
ProgressBar2.Value = SD2
Label18 = " Cerrando válvula %"
End Sub
Private Sub TEXT3_DblClick()
Text3 = ""
EndSub
227
Anexo 2: Planos
8. Anexo2: Planos
8.1. Planos Circuito Interface.
8.1.1. Esquema Eléctrico.
- 228 -
Anexo 2: Planos
- 229 -
Anexo 2: Planos
- 230 -
Anexo 2: Planos
- 231 -
Anexo 2: Planos
- 232 -
Anexo 2: Planos
- 233 -
Anexo 2: Planos
- 234 -
Anexo 2: Planos
- 235 -
Links Datasheets.
- 236 -