DISEÑO DE UN SOFT-PLC BASADO EN UN COMPUTADOR
DE PLACA REDUCIDA (SBC) RASPBERRY
DAVID FELIPE GARCÍA SEGURA
MIGUEL ANGEL OLIVA VALLEJOS
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD TECNOLÓGICA
INGENIERÍA EN CONTROL
BOGOTÁ D.C.
2018
ii
DISEÑO DE UN SOFT-PLC BASADO EN UN COMPUTADOR DE PLACA REDUCIDA
(SBC) RASPBERRY
DAVID FELIPE GARCÍA SEGURA
MIGUEL ANGEL OLIVA VALLEJOS
Trabajo de grado para optar al título profesional de: Ingeniero en Control
Director Ing. EDUARDO ALBERTO DELGADILLO GÓMEZ
Codirector Ing. ANDRÉS ESCOBAR DÍAZ
MONOGRAFÍA DE GRADO
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD TECNOLÓGICA
INGENIERÍA EN CONTROL
BOGOTÁ D.C.
2018
iii Dedicatoria
A Dios por las bendiciones que ha puesto en mi caminar.
A mis padres por infundir mis principios éticos y morales, para no desfallecer y siempre
agregar los intentos necesarios para alcanzar mis metas.
A cada una de esas personas que me inculcaron el valor del aprendizaje, el estar siempre
con actitud positiva ante cualquier situación.
A mi amigo y hermano Cristian Ardila que por situaciones ajenas no contamos con su
compañía, se me vienen a la mente los momentos en los que sonábamos ser ingenieros y cuando
decías “no me importa el tiempo que me demore estudiando en la universidad, mi deseo es ser
ingeniero en control”, la vida nos arrebató tu presencia y me siento orgulloso de haber podido
llegar a ese logro que algún día los dos soñamos y aunque el tiempo se encarga de sanar este tipo
de heridas, siempre te tendré en mis pensamientos, donde estés mi hermano dedico cada uno de
mis logros en tu memoria.
DAVID FELIPE GARCIA SEGURA
iv Dedicatoria
A mi linda madre Lucia Inés Vallejos, persona incondicional que día a día me ha llenado
de amor y quien me ha acompañado en mi proyecto de vida y con sus tan incomparables consejos
ha sabido guiar mis pasos.
A mis hermanos Nelson Fernando Vallejos y Jenny Alexandra Vallejos por ser mis
mejores amigos y por estar siempre cuando los necesito.
A la familia Vallejos Sánchez por abrirme las puertas de su hogar, por sus consejos y tener
su apoyo y cariño absoluto para poder cumplir mis metas.
A mi novia Angie Natalia Reyes, con quien he compartido momentos inolvidables y de
quien he recibido el apoyo necesario para alcanzar los objetivos propuestos.
A mis compañeros de academia de los que he aprendido mucho a nivel cultura, personal
y profesional.
MIGUEL ANGEL OLIVA VALLEJOS.
v Agradecimientos
Los autores expresan sus agradecimientos a:
A los profesores Eduardo Alberto Delgadillo y Andrés Escobar Díaz por apoyarnos con
con su conocimiento y ser una guía invaluable en la ejecución de este proyecto.
A INSA INGENIERIA S.A.S por abrir sus puertas de manera desinteresada, por
permitirnos obtener información de primera mano y destinar tiempo y conocimiento a nuestro
proyecto, principalmente a l profesional que estuvo involucrado como fue, el Ingeniero Juan
Carlos Casas (Gerente de Proyectos e ingeniería).
Y a todas aquellas personas que de una u otra manera han participado en el desarrollo
de este proyecto.
vi Resumen
Esta investigación presenta el diseño de un soft-plc basado en un computador de placa
reducida (SBC) raspberry. En su desarrollo se describe el proyecto con el cumplimiento de las
características y cualidades de hardware y software de un dispositivo PLC y como se convierte en
una plataforma totalmente operativa en un ambiente académico e industrial, donde se utiliza un
firmware suscrito al entorno de programación CODESYS de la empresa de software alemán 3S-
Smart, junto a una placa de periféricos basada en PSoC 5LP.
Como resultado al estudio de implementación se permitió consolidar un diseño con la
normatividad en aislamiento de tierras, entre otras normas o estándares estudiados e
implementados en el diseño final que contiene las siguientes especificaciones: cuatro entradas y
salidas análogas estándar industrial 4-20Ma, ocho I/O digitales, driver para comunicación ModBus
RTU/TCP.
vii Tabla de Contenidos
NOTA DE ACEPTACIÓN ........................................................... ¡Error! Marcador no definido. Dedicatoria ..................................................................................................................................... iii
Agradecimientos ............................................................................................................................. v Resumen ......................................................................................................................................... vi Tabla de Contenidos ..................................................................................................................... vii Lista de figuras ............................................................................................................................... ix Lista de tablas ................................................................................................................................. 1 Antecedentes y Justificación ........................................................................................................... 2
Problema ......................................................................................................................................... 3
Objetivos ......................................................................................................................................... 4
General. ....................................................................................................................................... 4 Específicos. ................................................................................................................................. 4
Marco teórico conceptual ................................................................................................................ 5 Raspberry .................................................................................................................................... 5
¿Qué es Raspberry Pi? ............................................................................................................ 5 Historia de Raspberry Pi ......................................................................................................... 6
Placas Oficiales ....................................................................................................................... 7 PSoC ......................................................................................................................................... 12
Características de PSoC ........................................................................................................ 13
Núcleos del PSoC. ................................................................................................................ 13 Bloques digitales ................................................................................................................... 14
Bloques análogos .................................................................................................................. 14 Comparación de tarjetas PSoC.............................................................................................. 16
Arquitectura de PSoC 5LP. ................................................................................................... 17 Codesys ..................................................................................................................................... 18
IEC 61131-3 .......................................................................................................................... 19
Versión DEMO ..................................................................................................................... 19 Simulador .............................................................................................................................. 20
HMI ....................................................................................................................................... 20 Motion Control...................................................................................................................... 20 Evolución .............................................................................................................................. 20
CODESYS Control para Raspberry Pi SL ............................................................................ 21 Comunicación SPI .................................................................................................................... 23
Descripción del protocolo SPI .............................................................................................. 24 Bus SPI.................................................................................................................................. 25
Transferencia de datos .......................................................................................................... 26 Polaridad del reloj ................................................................................................................. 27
Controlador Lógico Programable (PLC) .................................................................................. 28 ¿Qué son los controladores Lógicos Programables? ............................................................ 28 Descripción de funcionamiento de un PLC .......................................................................... 30
Campos de aplicaciones ........................................................................................................ 32 Nuevas tendencias ................................................................................................................. 33
Protocolo ModBus-rtu .............................................................................................................. 33
viii
Modos de transmisión ........................................................................................................... 33 Estructura de los mensajes en el modo rtu ............................................................................ 34 Dirección ............................................................................................................................... 34 Código de la Función ............................................................................................................ 35
Campo de Datos .................................................................................................................... 35 CRC....................................................................................................................................... 35
Metodología .................................................................................................................................. 37 Desarrollo de la propuesta ............................................................................................................ 38
Especificaciones técnicas .......................................................................................................... 38 Hardware ................................................................................................................................... 39
Alimentación de voltaje ........................................................................................................ 39
Conexión para comunicación SPI entre raspberry y PSoC ................................................... 41
Entradas digitales lógicas ...................................................................................................... 43 Salidas digitales lógicas ........................................................................................................ 44 Salidas análogas 4-20Ma ...................................................................................................... 48 Entradas análogas 4-20Ma .................................................................................................... 49
Comunicación ModBus RTU ............................................................................................... 49 Software .................................................................................................................................... 50
Programación Raspberry pi 3................................................................................................ 50 Programación PSoC 5 LP ..................................................................................................... 60
Diseño de circuito impreso ....................................................................................................... 61
Conclusiones ................................................................................................................................. 63 Lista de referencias ....................................................................................................................... 64
Anexos .......................................................................................................................................... 66 Anexo 1: FUNCTION_BLOCK SPI_16_RW .......................................................................... 66
Anexo 2: Paquetes de función................................................................................................... 67 Anexo 3: Llamada de función definición POU al PLC ............................................................ 70 Anexo 4: Main program ............................................................................................................ 71
Anexo 5: main program PSoC .................................................................................................. 72
ix Lista de figuras
Figura 1. Raspberry Pi A ............................................................................................................... 7 Figura 2. Raspberry Pi A+ ............................................................................................................. 8 Figura 3. Raspberry Pi B ................................................................................................................ 9
Figura 4. Raspberry Pi B+ ............................................................................................................. 9 Figura 5. Raspberry Pi 2 B ........................................................................................................... 10 Figura 6. Raspberry Pi Zero ......................................................................................................... 11 Figura 7. Raspberry Pi 3 B ........................................................................................................... 12 Figura 8. Esquema general de PSoC 5LP ..................................................................................... 17 Figura 9. Diagrama de bloques del procesador Cortex-M3 utilizado en el PSoC 5LP ................ 18
Figura 10. Transferencia de datos protocolo SPI .......................................................................... 23
Figura 11. Conexión del bus SPI .................................................................................................. 24
Figura 12. Conexión de múltiples esclavos independientes ......................................................... 26 Figura 13. conexión múltiple esclavos en cascada ....................................................................... 26 Figura 14. Transferencia de datos del protocolo SPI. ................................................................... 27 Figura 15. Estructura de los mensajes........................................................................................... 34
Figura 16. Consumo de potencia .................................................................................................. 40 Figura 17. Configuración LM2596 24VDC a 5.1VDC ................................................................ 41
Figura 18. Conexión Raspberry y PSoC ....................................................................................... 41 Figura 19. Conexión SPI en raspberry PI ..................................................................................... 42 Figura 20. Conexión SPI en PSoC 5 LP ....................................................................................... 42
Figura 21. Circuito integrado PL2502L internamente .................................................................. 43 Figura 22. Configuración PL2502L como chip lógico ................................................................. 44
Figura 23. Diagrama de contacto Relé SONGLE ......................................................................... 45 Figura 24. Diagrama Lógico ULN2803A ..................................................................................... 46
Figura 25. Diagrama Esquemático ULN2803A configuración Darlington .................................. 46 Figura 26. Diagrama MOSFET FDS4953 .................................................................................... 47 Figura 27. Driver complementario salida transistorizada ............................................................. 47
Figura 28. Configuración HCNR200 como trasmisor .................................................................. 48 Figura 29. Configuración HCNR200 como receptor .................................................................... 49
Figura 30. Circuito driver ModBus RTU ...................................................................................... 50 Figura 31. Ajuste memoria SDFormatter ...................................................................................... 51 Figura 32. página principal raspberry ........................................................................................... 52
Figura 33. Consulta administración de paquetes .......................................................................... 53 Figura 34. Complementos de Codesys.......................................................................................... 53
Figura 35. Opciones de inicio en nuevo proyecto......................................................................... 54 Figura 36. Opciones de lenguaje de programación ....................................................................... 54
Figura 37. Selección de dispositivo SPI ....................................................................................... 55 Figura 38. Configuración SPI como master .................................................................................. 55 Figura 39. Agregar POU a Codesys .............................................................................................. 56 Figura 40. Nombrar función SPI_16_RW .................................................................................... 56 Figura 41. Definición automática POU para SPI_16_RW ........................................................... 57
Figura 42. Definición modificada POU FUNCTION_BLOCK SPI_16_RW .............................. 57 Figura 43. Macro del POU FUNCTION_BLOCK SPI_16_RW .................................................. 58
Figura 44. Llamado de función POU al PLC ................................................................................ 58
x
Figura 45. Main program de la función ........................................................................................ 59 Figura 46. Top Design PSoC 5 ..................................................................................................... 60 Figura 47. Diseño PCB ................................................................................................................. 62 Figura 48. Visualización 3D tarjeta de periféricos ....................................................................... 62
1
Lista de tablas
Tabla 1. Comparación característica PSoC parte 1 ............................................................16 Tabla 2. Comparación característica PSoC parte 2 ............................................................16 Tabla 3. especificaciones CODESYS para Raspberry pi ...................................................22
2
Antecedentes y Justificación
En el ambiente académico los procesos teórico prácticos se vuelven indispensables
al momento de adquirir competencias del hacer y el saber hacer en contexto, permitiendo
así el análisis y verificación de los conocimientos adquiridos, en especial cuando se lleva
a cabo la aplicabilidad en los Sistemas de Control ya que estos se fundamentan en software
de simulación mostrando resultados ideales, y no permiten ver de manera real el
comportamiento de los diseños; siendo esta aplicación poco eficiente, creando vacíos
prominentes al momento de ponerlos en práctica en ejercicios reales. Dadas estas
circunstancias la educación teórica impartida en las aulas, implementa la experimentación
en plantas a escala, las cuales recrean ambientes industriales reales.
El proyecto curricular de Ingeniería en control por ciclos propedéuticos de la
Universidad Distrital Francisco José de Caldas se basa en un plan académico teórico-
práctico en base a esto la propuesta de desarrollar un Diseño de un Soft-Plc basado en un
computador de placa reducida Raspberry busca entregar a los estudiantes de la Facultad
Tecnológica una plataforma real del sector industrial contando con características robustas
que facilitan el aprendizaje al momento del análisis y verificación de sistemas de control.
3
Problema
En la facultad Tecnológica de la universidad Distrital Francisco José de Caldas se
carece de plataformas PLC de entrenamiento robustas, que facilite la profundización de
aprendizaje en los sistemas de control, debido al alto coste y limitaciones que tienen los
fabricantes, en cuanto a nuevas tecnologías y software que permitan hacer un acercamiento
real a los problemas de automatización encontrados en la industria, debido a esto se
evidencia una mala interacción de aprendizaje entre alumnos y profesores.
4
Objetivos
General.
Diseño de un Soft-Plc basado en un computador de placa reducida (SBC) Raspberry
Específicos.
Diseñar una metodología de comunicación entre los distintos sistemas Raspberry y
PSoC.
Implementar el circuito definitivo que integra todos los sistemas Raspberry, PSoC
y periféricos.
Establecer un test del protocolo de comunicación ModBus RTU y TCP/IP operado
desde Codesys.
Implementar una aplicación para el ejercicio de prueba con el prototipo de PLC.
5
Marco teórico conceptual
Raspberry
Se realizará una descripción a profundidad sobre la placa de desarrollo Raspberry
Pi, partiendo del análisis de cada una de sus partes en hardware, hasta el análisis que nos
puede ofrecer en cuestión de software. También se encontrará comparación con otras
placas desarrollo, para obtener las ventajas y desventajas de otras placas de desarrollo con
respecto a la Raspberry Pi.
¿Qué es Raspberry Pi?
Según sus fabricantes la Raspberry Pi es un ordenador de bajo costo del tamaño de
una tarjeta de crédito, que se conecta a un monitor de ordenador o un televisor, y utiliza un
teclado y un ratón estándar. Es un dispositivo pequeño que les permite a personas de todas
las edades explorar la computación, y aprender a programar en lenguajes como lo son
Python y Scratch. Es capaz de hacer todo lo que esperaría hacer con una computadora de
escritorio, desde navegar por Internet y reproducción de vídeo de alta definición, hacer
hojas de cálculo, usar procesadores de texto, y hasta divertirse con videojuegos. (Dennis
2013)
Es más, La Raspberry Pi tiene la capacidad de interactuar con el mundo exterior, y
se ha utilizado en una amplia gama de fabricación de proyectos digitales, desde las
máquinas de música y detectores de padres hasta estaciones meteorológicas.(Palma et al.
2017) Queremos ver que la Raspberry Pi sea utilizada por los niños de todo el mundo para
aprender a programar y que entienda cómo funcionan los computadores. (LAGU 2014)
6
Historia de Raspberry Pi
La “Raspi”, Es una SBC (Single-Board Computer). Es decir, un ordenador de placa
única. En el caso de la Raspberry Pi, existe un repertorio amplio de sistemas operativos
basados en Linux como: Archlinux ARM, OpenELEC, Pidora, Raspbmc, RISC OS,
Raspbian y otros (openSuSE, Slackware ARM, FreeBSD, Plan 9, OpenWrt, Kali Linux,
Instant Web Kiosk, Ark OS y Minepeon).
La SBC de la Raspberry Pi Fundación es la auténtica y oficial, aunque hayan salido
competidores. Esta placa surgió como estímulo para las escuelas y el acercamiento de las
ciencias de la computación a más personas. El primer germen apareció en 2006, aunque
era una placa basada en microcontrolador Atmel ATmega 644 similar a los de Arduino. Al
ser abierta, tanto sus esquemas y los datos de diseño están disponibles para su descarga, y
es aquí donde radica su mayor éxito, junto con su precio asequible.(Sandeep et al. 2015)
Pero no sería hasta 2009 cuando se creó la Fundación Raspberry Pi en Caldecote,
South Cambridgeshire (Reino Unido) y sus fundadores son: Eben Upton, David Braden,
Jack Lang, Pete Lomas, Alan Mycroft y Robert Mullins. (Palma et al. 2017)
El cofundador Upton, director técnico del departamento sobre arquitectura ASIC
de Broadcom, quería llevar a los niños y entusiastas la misma filosofía del ordenador Acorn
BBC Micro de 1981. Y su proyecto sería apadrinado por la Universidad de Cambridge y
la compañía Broadcom (creadora de los SoCs integrados en la placa). (Rostyslav,
Tkatchenko, and Golovatsyy 2015)
Dos años más tarde de aparecer la fundación, se fabricarían las primeras placas
prototipo para luego comenzar a venderse años después. Su éxito fue tal que se agotó y las
7
manufactureras no daban abasto para sacar al mercado tantos dispositivos como demanda.
El primer lote se fabricaría en Taiwán y China, unas 10.000, para luego trasladar la
producción al Reino Unido. Se fabrican miles al día gracias a una fábrica de Sony en
Pencoed, Gales. (García and López 2014)
Placas Oficiales
Raspberry Pi Modelo A:
Apareció con un precio de unos 25 dólares de coste en fábrica, con un Soc.
Broadcom BCM2835 que integra una CPU, GPU, DSP, RAM y controlador USB. Este
chip es común a todos los modelos, tanto B como B+. La CPU es una ARM1176JZF-S de
la familia ARM11 y con un set de instrucciones ARMv6. Trabaja a 700 Mhz, pero no está
sola dentro del Soc., también incluye una GPU Videocore IV a 250Mhz encargada de los
gráficos y el inicio. Esta GPU soporta OpenGL ES como API gráfica. Además, se
complementa con una memoria SDRAM de 256MB que comparten CPU y GPU. Por otro
lado, dispone de una conexión HDMI para una pantalla externa y un Jack RCA, Jack para
audio, ranura para SD y MMC, pines GPIO, conexión de alimentación por micro USB de
5v o por los cabezales GPIO. El peso y dimensiones son parecidos en las tres placas
oficiales.
Figura 1. Raspberry Pi A
8
Raspberry Pi A+:
Sus características son similares, excepto que su tamaño es más pequeño (solo mide
65 x 56 mm) y que su memoria RAM se ha reducido a 256 MB. También ha cambiado su
conectividad, que ahora reincide de su conexión Ethernet. Igual que ocurría con la
Raspberry Pi A y Raspberry Pi B iniciales, la A+ es más barata. Al igual que ocurría con
la B+, esta placa es más eficiente energéticamente que las anteriores.
Figura 2. Raspberry Pi A+
Raspberry Pi Modelo B
Con un precio de unos 35 dólares de coste en fábrica, las únicas diferencias con el
modelo A son los 512MB SDRAM incluidos en el Soc., dos puertos USB y la integración
de un adaptador Ethernet para conexión a red. El consumo, al tener más elementos sube de
los 300 mA (1,5w) hasta los 700 mA (3,5w). El resto de características son comunes. Es el
modelo más vendido (más de 3 millones de ventas).
9
Figura 3. Raspberry Pi B
Raspberry Pi Modelo B+
Es la actualización del modelo B, cuyas ventajas son la integración de más pines
GPIO (pasando de los 26 de los modelos anteriores a los 40, respetando el esquema de
patillaje anterior), un consumo inferior (600mA, 3w), inclusión de 4 puertos USB on-board
y una mejora en la fuente de alimentación para reducir el ruido y mejorar el sistema de
sonido. Por el resto de características es idéntica a la B. Lo más práctico es lo de los puertos
USB, que se echan mucho en falta en los modelos anteriores, aunque puede ser solucionado
con un hub. Todo esto manteniendo el mismo precio del Modelo B, debido a que la
tecnología ha madurado y permite su manufactura a un menor coste.
Figura 4. Raspberry Pi B+
10
Raspberry Pi 2 Modelo B
Por sorpresa y muy probablemente motivado por la competencia que le estaba
saliendo últimamente, La Fundación Raspberry Pi ha sacado ya la versión 2 Modelo B de
su placa. Una actualización más que necesaria, que no la convierte en la mejor del mercado,
pero que la mete de nuevo en la pelea ya que, si unimos esta mejora con la comunidad que
arrastra y la buena optimización de su software, tenemos la combinación perfecta. Las
dimensiones son las mismas, pero su construcción ha cambiado casi radicalmente, ahora
con 1Gb de RAM, también usa un Quad-Core a 900MHz que a los que estamos
acostumbrados a ella, nos va a resultar muy extraño tanta agilidad. Por otro lado, al cambiar
su arquitectura, vamos a poder disfrutar de otros sistemas operativos más complejos, como
el nuevo Windows 10, que tendrá una versión para desarrolladores gratuita en Raspberry
Pi 2.
Figura 5. Raspberry Pi 2 B
Raspberry Pi Zero
Es una SBC oficial por tan solo 5$ de coste, es decir, la SBC más barata por el
momento. Uno de los principales motivos del triunfo de la Raspberry Pi es su reducido
coste, pues ahora bajan aún más el precio en este nuevo modelo para seguir sumando
11
millones a los usuarios existentes. La placa se fabricará en Gales y vendrá equipada con un
Soc. Broadcom BCM2835, que integra un procesador ARM11 a 1Ghz que es un 40% más
rápido que la Raspberry Pi 1. Segura manteniendo los 512MB de RAM DDR2, ranura
microsd, conexión mini HDMI (con capacidad para vídeo 1080p60), microUSB, 40 pines
GPIO (que respetarán el orden seguido en la A+, B+ y 2B). Todo en un empaquetado con
un factor de 65x30x5mm, sin duda la más pequeña. Pero a pesar de su tamaño, seguirá
permitiendo ejecutar los diestros como Raspbian y disfrutar de todo el software del que
gozamos en el resto de modelos.
Figura 6. Raspberry Pi Zero
Raspberry Pi 3 Modelo B
Es el nuevo modelo de Raspberry Pi lanzado en enero de 2016, su precio se ha
mantenido igual al de otros Modelo B anteriores, pero se ha implementado un hardware
más potente. Ahora va equipada con un Soc. Broadcom BCM 2837 que integra una CPU
que trabaja a 1.2Ghz de 64-bit de cuatro núcleos. También se ha incluido una GPU
Broadcom Videocore IV a 400 Mhz capaz de llegar a los 28.8GFLOPS de potencia de
cálculo y compatible con OpenGL ES 2.0. Se mantiene la conexión Ethernet, aunque el
Wifi y Bluetooth 4.1 son novedad. Los GPIO se han mantenido inalterados con respecto al
modelo anterior y la potencia ha subido debido al mayor rendimiento hasta los 2500 mA
12
(12.5w). Todos los cambios se traducen en mayor funcionalidad y el doble de potente que
su predecesora, la Raspberry Pi 2. (Gonzalez 2015)
Figura 7. Raspberry Pi 3 B
PSoC
Se presentará una descripción de PSoC y su comparación con sus homólogos, se
pretende dar a conocer la facilidad que presenta PSoC cuando se incursiona en las
aplicaciones industriales puesto que dado su precio son muy utilizados en transmisores,
redes de sensores entre otros.
Los PSoC son microprocesadores que en la última década han tomado gran
esfuerzo debido a sus grandes ventajas frente a los tradicionales microprocesadores, estos
ofrecen una arquitectura que agilizan el análisis de información, estos procesan a una gran
velocidad pueden llegar hasta 74 MHz, estas plataforma de diseño por sus prestaciones se
han ido afianzando en aplicaciones como redes de sensores y transmisores inteligentes,
puesto que estos dispositivos son de bajo costo comparado con las funcionalidades que
tienen, puesto que estos tiene bloques digitales como temporizadores, contadores,
protocolos de comunicación PWM, Además de eso cuentan con bloques analógicos como
ADC, DAC, entre otros con los cuales se pueden ayudar al usuario a reducir circuitos y
bajar costos. (López and Charry 2016)
13
Características de PSoC
El PSoC es un dispositivo que utiliza arquitectura Harvard que hace referencia a la
arquitectura de computadora la cual está dividida la memoria de instrucciones y datos.
Estos dispositivos están diseñados para reemplazar los microcontroladores básicos. El
PSoC cuenta con timers, counter, filtros, PGA, comunicación por UART, I2C, ADC, DAC,
los cuales varían de acuerdo a su referencia. Estos cuentan con pines como: Digitales I/O,
entradas análogas, salidas análogas, entradas analógicas directas , estos se pueden utilizar
directamente como entradas análogas para los bloques de capacitancias conmutadas(SC),
entrada de referencia, estos pines se pueden utilizar como suministro para un voltaje de
referencia AGND externa y para una tensión de referencia VREF, estas referencias
externas proporcionan una mayor flexibilidad para los diseños analógicos, también cuenta
con comunicación I2C, entrada externa de reloj (EXT CLK), entre otras muchas más
herramientas.
Núcleos del PSoC.
Un PSoC ofrece subsistemas de la CPU sofisticados con SRAM, EEPROM y
memoria flash, así como una gran variedad de núcleos y de recursos del sistema, donde
podemos encontrar: Osciladores internos, conectividad con oscilador de cristal externo de
precisión, reloj programable, Watchdog y sleep timers. Estos chips también incluyen
interfaces de comunicación como I2C, USB FULL, Y UART.
14
Bloques digitales
Un PSoC cuenta con hasta 18 bloques digitales dependiendo del modelo, los cuales
nueve de tipos básicos y los otros nueve son de comunicaciones.(Cypress Semiconductor
Corporation 2017) Los módulos de estos bloques son los siguientes:
● PWMs with dead band (8- and 16-bit)
● Counters (8- to 32-bit)
● Timers (8- to 32-bit)
● UART 8-bit with selectable parity (up to 2)
● SPI slave and master (up to 2)
● I2C Master Y slave
● CRC generator (8- to 32-bit)
● IrDA (up to 2)
● Pseudo Random source (PRS) generators (8- to 32-bit) USB, Wireless USB
Bloques análogos
En los bloques analógicos, se pueden integrar hasta doce bloques, los cuales se
encuentran divididos en tres grupos de cuatro bloques: de tiempo continuo, de cambio de
capacitor en tiempo continuo y de cambio de capacitor en tiempo discreto, estos módulos
están compuestos por:
● Amplificadores:
○ Amplificadores de ganancia programable (PGA).
○ Amplificadores de instrumentación
○ Amplificadores inversores
15
○ Comparador programable
○ Marcador de tonos DTMF
● Filtros
○ Filtro pasa bajos de 2 polos
○ Pasa bandas de 2 polos
● Conversores D/A
○ Conversor D/A de 6,8 y 9 bits
○ Multiplicadores de 6 y 8 bits
● Conversor análogo digital
○ 6-bits Aproximaciones sucesivas (SAR)
○ 8-bits Delta sigma
○ 11-bits Delta sigma
○ 12-bits incremental
○ 7-13 bits Variable incremental
○ De doble entrada 7-13 bits Variable incremental
○ De triple entrada 7-13 bits Variable incremental
16
Comparación de tarjetas PSoC
Tabla 1. Comparación característica PSoC parte 1
PSoC CPU CLOCK MEMORIA FLASH
PSoC 1 8 bit Hasta 24 MHz, 4 MIPS 8 KB-32 KB
PSoC 3 8-bit 8051 Hasta 67 MHz, 33 MIPS 8KB-64KB
PSoC 4 32-bit Hasta 48 MHz, 32KB con lectura acelerada
PSoC LP 5 32-bit Hasta 74 MHz 256 kB
Tabla 2. Comparación característica PSoC parte 2
PSoC VOLTAJE DE
OPERACIÓN
ADC DAC MÓDULOS
PSoC 1 0.5 a
5.5 V
6 a 14 bits 2 DAC de 6-8 bits I2C, SPI, UART,
PSoC 3 1.71 a
5.5 V
8 a 20 bits 4 DAC de 8 bits FS USB2.0, I2C,
SPI, UART, CAN,
LIN,I2S
PSoC 4 1.71 a
5.5 V
12 bits (SAR) 2 DAC Propósitos
generales
I2C, SPI, UART,
PSoC LP 5 1.71 a
5.5 V
8 a 20 bits 4 DAC de 8 bits 20 a 24 bloques que
pueden tener 8-, 16-, 24-,
and 32-bit timers,
counters, and PWMs, I2C,
UART, SPI, I2S, LIN 2.0
interfaces
17
85+Arquitectura de PSoC 5LP.
Figura 8. Esquema general de PSoC 5LP
Los subsistemas que componen el PSoC 5LP son los siguientes: 1. Unidad central
de procesamiento (CPU). 2. Memoria. 3. Recursos del sistema. 4. Sistema digital. 5.
Sistema analógico. Figura 38. Esquema general del PSoC 5LP viene dotado de un
procesador ARM Cortex-M3, el cual tiene unas propiedades diseñadas específicamente
para microcontroladores que lo hacen muy eficiente para las diversas exigencias en las que
se vea comprometido. La familia de procesadores ARM Cortex establece una arquitectura
estándar dirigida a un amplio espectro de tecnologías. Esta familia se basa en la arquitectura
ARMv7 que tiene tres distintos perfiles dirigidos a aplicaciones específicas:
Perfil A: diseñado para plataformas de aplicación abierta de alto rendimiento.
18
Perfil R: diseñado para sistemas embebidos de alta gama, en las que es necesario el
rendimiento en tiempo real.
Perfil M: diseñado para los sistemas tipo microcontrolador profundamente
embebidos.
Este último perfil es el más relevante, por ser el que tiene incorporado el PSoC 5LP.
El ARM Cortex-M3 es un procesador de 32 bits, tanto la ruta de acceso como el banco de
registros y la interfaz de memoria son de 32 bits, es un procesador con arquitectura
Harvard, lo cual indica que los buses de instrucciones y datos están separados y aumentan
el rendimiento del procesador. Las interfaces de los buses, aunque están separadas
comparten el mismo espacio de memoria que es de 4 GB. En la figura 39 se observa el
esquema general del procesador.
Figura 9. Diagrama de bloques del procesador Cortex-M3 utilizado en el PSoC 5LP
Codesys
Codesys es como un sueño hecho realidad, una misma plataforma con un lenguaje
unificado para la programación de autómatas y controladores.
19
Esto ha permitido a muchos fabricantes ofrecer soluciones sin tener que partir de cero en
el desarrollo de estas. Empresas que llevan muchos años en el mundo del PLC como
Siemens, Rockwell o Omron por ahora son ajenas a Codesys y siguen desarrollando y
utilizando sus plataformas. (3S - Smart Software Solutions GmbH 2010)
Actualmente existe una gran oferta de soluciones de automatización al margen de
“los tradicionales” que utilizando Codesys. Es un software muy utilizado, son decenas de
empresas del mundo de la Automatización Industrial que utilizan Codesys en sus equipos
de automatización: Beckhoff, Festo, EATON, KEBA, IFM, LENZE, Schneider Electric,
ABB, ESA, el software de programación de estas marcas está basado en Codesys, aunque
con ciertas personalizaciones.
Tener un conocimiento de su funcionamiento nos asegura poder prestar servicios a
diferentes máquinas y empresas que utilizan diferentes tecnologías.
IEC 61131-3
Codesys es un software que utiliza el estándar de programación de PLC IEC 61131-
3 con los 5 lenguajes de programación lo que te asegura que tu programación cumple la
norma. (John and Tiegelkamp 2010)
- Lenguaje escalera (LD - Ladder Diagram)
- Diagrama de bloque de funciones (FBD - Function Block Diagram)
- Texto estructurado (ST - Structured Text)
- Lista de instrucciones (IL - Instruction List)
- Bloques de función secuenciales (SFC - Sequential Function Chart)
Versión DEMO
20
Codesys dispone una versión DEMO 100% operativa que te va a permitir aprender
a programar autómatas basados en el lenguaje IEC 61131-3 y poder simular los programas,
una mejor forma de aprender a programar.
Simulador
El simulador integrado permite testear y simular los programas, tanto del PLC como
de pantallas, la mejor forma de ir comprobando sus progresos en programación. CODESYS
Depictor permite insertar simulación 3D
HMI
Codesys dispone de editor HMI para programar interface gráficos para pantallas o
terminales de operador. Poder realizar el programa del autómata y su correspondiente
interfaz gráfica en un mismo software. También soluciones para la visualización HMI en
web como CODESYS WebVisu.
Motion Control
Hoy en día un sistema de automatización no se concibe sin una solución Motion
Control, el control de servo ejes es un hecho que cada día se utiliza en más máquinas.
Codesys dispone de las soluciones como SoftMotion y SoftMotion CNC para afrontar estos
sistemas Motion Control.
Evolución
Codesys es una plataforma que está en continua evolución ofreciendo soluciones
de automatización adaptadas a la evolución de la industria, así como un montón de
21
complementos como CODESYS OPC UA, CODESYS IEC 61850 Server, CODESYS
Control para Raspberry Pi SL, EPLAN Exchange.
CODESYS Control para Raspberry Pi SL
CODESYS Control para Raspberry Pi SL contiene una aplicación de control
CODESYS para todos los Raspberry Pi, incluyendo el módulo Compute, así como la
capacidad de utilizar los módulos de extensión Raspberry PiFace Digital, Raspberry Pi
Camera Y varios dispositivos / rupturas con interfaz de comunicación SPI, I²C o 1 hilo.
Este producto se puede instalar con el plug-in CODESYS Deploytool incluido a través del
sistema de desarrollo CODESYS en una distribución Linux Raspbian. Después de cada
reinicio, el sistema de ejecución se iniciará automáticamente. Si no se puede encontrar una
licencia completa válida, CODESYS Control se ejecuta durante dos horas sin limitaciones
funcionales antes de apagarse.
Este producto admite las siguientes funcionalidades:
MODBUS-TCP Master / Slave
MODBUS-RTU Maestro / Esclavo
Ethernet / IP Escáner / Adaptador
PROFINET Controlador / Dispositivo
EtherCAT Master
CANopen Maestro / Esclavo
CAN / CANopen Maestro / Esclavo
J1939
22
Tabla 3. especificaciones CODESYS para Raspberry pi
Sistema de programación Sistema de desarrollo CODESYS V3.5.6.0 o posterior
Objetivo del Sistema -
Plataformas / dispositivos compatibles Frambuesa Pi
- Pi Modelo B / B +
- Pi2 Modelo B
- Pi3 Modelo B
- Todos los modelos
Requerimientos adicionales - El control CODESYS requiere una interfaz de red (LAN, WLAN), especialmente con el
módulo de cálculo de frambuesa Pi y la frambuesa Pi ZERO.
- Si el producto se utiliza para fines industriales, es responsabilidad del fabricante del
sistema garantizar el cumplimiento de las especificaciones necesarias.
Restricciones - La combinación de Frambuesa Pi y un CODESYS Runtime se destina principalmente a
la prueba y la enseñanza.
- El sistema runtime no tiene un comportamiento en tiempo real. Su fluctuación depende
de muchos factores, especialmente en aplicaciones Linux ejecutadas en paralelo, e
idealmente es de aproximadamente 50 μs - con valores máximos de aproximadamente 400
μs.
Licencias - Activación en el Contenedor Soft CODESYS (parte de este paquete de software)
- Opcional: CODESYS Runtime Key
Si no hay una licencia válida, el sistema de ejecución funciona durante dos horas sin una
restricción funcional y luego termina automáticamente (demo).
23
Accesorio requerido SD-tarjeta (mínimo 4GB)
Opcional: CODESYS Runtime Key
Sistema Operativo Raspbian
Comunicación SPI
Es un protocolo con un bus síncrono, lo que significa que utiliza líneas separadas
para datos y reloj, lo que dota a ambos dispositivos de perfecta sincronización.
El reloj le indica al dispositivo receptor el momento exacto en que puede tomar el
bit de la línea de datos enviado por el transmisor. El pulso de reloj puede ser tanto de subida
(rising) como de bajada (fallin). Cuando el receptor recibe este pulso, inmediatamente toma
el dato de la línea y lo almacena en un registro de corrimiento. Un dato importante a tener
en cuenta son los límites de velocidad del reloj del dispositivo receptor, ya que la frecuencia
de la señal generada por el reloj del transmisor, puede ser más alta que la soportada por el
receptor, causando problemas en la comunicación.(Perez 2008)
Figura 10. Transferencia de datos protocolo SPI
24
Una de las razones por las que el protocolo SPI es muy popular es porque el
hardware que lo compone es un simple registro de desplazamiento (shift register), el cual
tiene un costo mucho más bajo que los chips USART/UART.
Descripción del protocolo SPI
La comunicación SPI, pronunciado spay o es-pi-ai (Serial Peripheral Interface por
sus siglas en inglés) es uno de los protocolos seriales síncronos más versátiles y más
utilizados en el mundo de los microcontroladores, por su facilidad de implementación y su
velocidad de comunicación en distancias cortas. Una gran infinidad de sensores, chips y
módulos de hardware se comunican por medio de este protocolo, por lo que saber
dominarlo y programarlo a la perfección nos abre un mundo de posibilidades a la hora de
crear proyectos y ampliar las capacidades de los mismos con periféricos y sensores que se
comuniquen por medio de este protocolo.
Este protocolo está basado en la arquitectura maestro-esclavo, en el que el
dispositivo maestro tiene el control de bus, el cual pone los datos y genera la señal de reloj
que se enviarán al dispositivo esclavo en particular. Los datos son enviados serial mediante
las 3 líneas que conforman al bus: MOSI (Master Output Slave Input), MISO (Master Input
Slave Output) y SCLK (Clock)(Perez 2008)
Figura 11. Conexión del bus SPI
25
El comportamiento de estas señales depende de si el dispositivo está actuando como
maestro o como esclavo. En el dispositivo maestro, las señales MOSI y SCLK se
comportan como salida y la señal MISO como entrada y son generadas y controladas por
el mismo maestro. En el dispositivo esclavo, la señal MISO es configurada como salida y
las señales MOSI y SCLK como entrada, respondiendo con datos en el bus cuando se
detecta la señal de reloj y los datos de entrada.
Bus SPI
Como se mencionó anteriormente, el protocolo SPI se comunica mediante un BUS,
lo que permite conectar más de 1 dispositivo a este. Existen 2 maneras de conectar
múltiples dispositivos esclavos al bus, una de ellas es la configuración de esclavos
independientes, en el cual se necesita de hardware adicional o salidas digitales dedicadas y
controladas por el dispositivo maestro para seleccionar el dispositivo esclavo conectado al
bus.
La otra manera es la conexión en cascada o Daysi Chain, en la cual el maestro
genera una señal que habilita a todos los dispositivos a la vez y las salidas de datos de los
esclavos (MISO) se conecta en cascada con la entrada de datos (MOSI) del siguiente
esclavo, así el maestro enviará los datos sólo al primer esclavo y recibirá respuesta del
último esclavo.
26
Figura 12. Conexión de múltiples esclavos independientes
Figura 13. conexión múltiple esclavos en cascada
Transferencia de datos
El intercambio de datos se hace bit por bit, el dispositivo maestro prepara el dato
en el bus: la señal MOSI se va a Alto (1) si el bit a enviar es 1 o a Bajo (0) si el bit es un
0, para después generar un pulso ya sea de bajada o de subida por la señal SCLK, con este
pulso el dispositivo esclavo toma como válido el dato puesto en el bus. Al mismo tiempo
27
que el dispositivo maestro envía el dato y el pulso de reloj, el dispositivo esclavo responde
con un dato en la señal MISO, que es el dato que el dispositivo esclavo tiene en su registro
de salida.
Aunque el protocolo no especifica un numero de bits fijo para el tamaño del dato,
por lo regular se usan transferencias de 8 bits, pero el número de bits consecutivos que se
pueden enviar puede ser arbitrario y queda definido por el hardware (en caso de que se
utilice la comunicación por este medio) o por el software (en caso de que se implemente el
protocolo con el método de Bit Bang).
Figura 14. Transferencia de datos del protocolo SPI.
Polaridad del reloj
Ya vimos que los datos se trasmiten sobre el bus bit a bit con cada pulso de reloj,
pero lo que nos falta saber es en qué momento se toman los datos y en qué momento se
actualiza el dato en el bus, para esto se utiliza algo llamado polaridad y la fase.
Básicamente la polaridad indica si la señal de reloj iniciará con flanco de bajada o
de subida para el primer dato a enviar, y la fase indica cuando se toma y actualiza el dato
en el bus, esto puede ser de 2 maneras: Se toma el dato en flanco de subida y se actualiza
28
en flanco de bajada o, al contrario, se toma el dato en flaco de bajada y se actualiza en
flanco de subida.
Controlador Lógico Programable (PLC)
¿Qué son los controladores Lógicos Programables?
Los Controladores Lógicos Programables (PLC) continúan evolucionando a
medida que las nuevas tecnologías se añaden a sus capacidades. El PLC se inició como un
reemplazo para los bancos de relevos. Poco a poco, las matemáticas y la manipulación de
funciones lógicas se añadieron. Hoy en día son los cerebros de la inmensa mayoría de la
automatización, procesos y máquinas especiales en la industria. Los PLCs incorporan ahora
más pequeños tamaños, más velocidad de las CPU y redes y tecnologías de comunicación
diferentes. (Palma et al. 2017)
Se puede pensar en un PLC como un pequeño computador industrial que ha sido
altamente especializado para prestar la máxima confianza y máximo rendimiento en un
ambiente industrial. En su esencia, un PLC mira sensores digitales y analógicos y switch
(entradas), lee su programa de control, hace cálculos matemáticos y como resultado
controla diferentes tipos de hardware (salidas) tales como válvulas, luces, relés,
servomotores, etc. en un marco de tiempo de milisegundos.
Mientras los PLCs son muy buenos con el control rápido de información, no
comparten los datos y las señales con facilidad. Comúnmente los PLCs intercambian
información con paquetes de software en el nivel de planta como interfaces máquina
operador (HMI) o Control de Supervisión y Adquisición de Datos (SCADA). Todo
intercambio de datos con el nivel de negocios de la empresa (servicios de información,
29
programación, sistemas de contabilidad y análisis) tiene que ser recogido, convertido y
transmitido a través de un paquete SCADA. (Hongbin et al. 2010)
Típicamente en la mayoría de PLCs, las redes de comunicación son exclusivas de
la marca y con velocidad limitada. Con la aceptación de Ethernet, las velocidades de
comunicación de la red han aumentado, pero todavía a veces usan se usan protocolos de
propiedad de cada marca.
Las empresas de hoy, que piensan en el futuro, se encuentran provistas de modernos
dispositivos electrónicos en sus máquinas y procesos de control. Hoy las fabricas
automatizadas deben proporcionar en sus sistemas, alta confiabilidad, gran eficiencia y
flexibilidad. Una de las bases principales de tales fabricas es un dispositivo electrónico
llamado Controlador Lógico Programable. Este dispositivo fue inicialmente introducido en
1970 y se ha sido refinando con nuevos componentes electrónicos, tales como Micro-
procesadores de alta velocidad, agregándole funciones especiales para el control de proceso
más complejos. Hoy los Controladores Programables son diseñados usando lo último en
diseño de Micro-procesadores y circuitería electrónica lo cual proporciona una mayor
confiabilidad en su operación en aplicaciones industriales donde existen peligro debido al
medio ambiente, alta respetabilidad, altas temperaturas, ruido ambiente o eléctrico,
suministro de potencia eléctrica no confiable, vibraciones mecánicas etc.
Este medio ambiente es el que el Control Lógico Programable se encuentra en su
elemento, ya que fue diseñado y concebido para su uso en el medio ambiente industrial.
Los Controladores Lógicos Programables, PLC como ellos son comúnmente llamados,
ofrecen muchas ventajas sobre otros dispositivos de control tales como relevadores,
30
temporizadores electrónicos, contadores y controles mecánicos como del tipo tambor. El
objetivo de este manual es mostrar el funcionamiento interno y de programación de este
tipo de controladores, además de mostrar algunas de sus aplicaciones en la industria,
también realizar una serie de prácticas para que el técnico de la industria pueda iniciarse
en este apasionante rema de la automatización.
Descripción de funcionamiento de un PLC
Los Controladores Lógicos Programables, (PLC s, Programable Logic Controller),
nacieron esencialmente como tales, a finales de la década de los 60s y principios de los
70s. Las industrias que propiciaron este desarrollo fueron las automotrices. Ellas usaban
sistemas industriales basadas en reveladores, en sus sistemas de manufactura. Buscando
reducir los costos de los sistemas de control por relevadores, la General Motor preparo en
1968 ciertas especificaciones detallando un "Controlador Lógico Programable", Estas
especificaciones definían un sistema de control por relevadores que podían ser asociado no
solamente a la industria automotriz, si no prácticamente a cualquier industria de
manufactura.(Palma et al. 2017)
Estas especificaciones interesaron a ciertas compañías tales como GE-Fanuc,
reliance Electric, MODICON, Digital Equipment Co., De tal forma que el resultado de su
trabajo se convirtió en lo que hoy se conoce como Controlador Lógico Programable. Los
PLCs surgen como equipos electrónicos sustitutos de los sistemas de control basados en
relevadores, que se hacían más complejos y esto arrojaba ciertas dificultades en cuanto a
la instalación de los mismos, los altos costos de los equipos. Los altos costos de operación
y mantenimiento y la poca Flexibilidad y confiabilidad de los equipos.
31
Los primeros PLCs se usaron solamente como reemplazo de relevadores, es decir,
su capacidad se reducía exclusivamente al control On -Off (de dos posiciones) en máquinas
y procesos industriales. De hecho, todavía se siguen usando en muchos casos como tales.
La gran diferencia con los controles por relevador fue su facilidad de instalación, ocupan
menor espacio, costo reducido, y proporcionan autodiagnósticos sencillos.
En su creación, los requerimientos sobre los cuales se han desarrollado los PLC s,
los enumero la General Motors de la manera siguiente
El dispositivo de control deberá ser fácil y rápidamente programable por el usuario con un
mínimo de interrupción.
Todos los componentes del sistema deben ser capaces de operar en plantas industriales sin
un especial equipo de soporte, de hardware o de ambiente.
El sistema debe ser de fácil mantenimiento y reparación. Deberá diseñarse con indicadores
de status y modularidad para facilitar las reparaciones y la búsqueda de errores.
El sistema deberá ocupar menor espacio que los sistemas de relevador y deberá consumir
menor potencia que los sistemas de control por relevadores.
1. El PLC deberá ser capaz de comunicarse con un sistema central de datos para
propósitos de monitoreo.
2. Deberá ser capaz de trabajar con 120 volts de corriente alterna y con elementos
estándar de control, con interruptores de presión interruptores de limite, etc.
3. Las señales de salida deberán ser capaces de manejar arranques de motores y
válvulas solenoides que operan a 120 volts de C.A.
32
4. Deberá ser expandible desde su mínima configuración hasta su máxima, con una
mínima de alteración y de tiempo perdido.
5. Deberá ser competitivo en costo de venta e instalación, respecto de los sistemas en
base a relevadores.
6. La estructura de memoria empleada deberá ser expandible a un mínimo de 4000
palabras o elementos de memoria.
Campos de aplicaciones
EL PLC por sus especiales características de diseño tiene un campo de aplicación
muy extenso. La constante evolución del Hardware y Software amplia continuamente este
campo para poder satisfacer las necesidades que se detectan en el aspecto de sus
posibilidades reales.
Su utilización se da fundamentalmente en aquellas instalaciones en donde es
necesario realizar procesos de maniobra, control, señalización, etc.... por tanto, su
aplicación abarca desde procesos de fabricación industrial de cualquier tipo al de
transformaciones industriales, control de instalaciones, etc.
Sus reducidas dimensiones, las extremas facilidades de su montaje, la posibilidad
de almacenar los programas para su posterior y rápida utilización, la modificación o
alteración de los mismos, etc., hace que su eficiencia se aprecie fundamentalmente en
procesos en que se reduce necesidades tales como: Espacio reducido. Procesos de
producción periódicamente cambiantes Maquinaria de procesos variables. Instalación de
procesos complejos y amplios. Chequeo de programación centralizada de las partes del
proceso.(Palma et al. 2017)
33
Nuevas tendencias
En general, los PLC son cada vez más rápidos y más pequeños y como resultado
de esto, están ganando capacidades que solían ser dominio exclusivo de la computadora
personal (PC) y de las estaciones de trabajo. Esto se traduce en manejo datos críticos de
manera rápida que se comparte entre el PLC en el piso de la fábrica y el nivel de negocios
de la empresa. Ya no se trata de los PLCs antiguos que únicamente controlaban salidas a
partir de una lógica y de unas entradas.
Algunas de las características que un PLC puede aportar a sus proyectos de
automatización son los servidores web, servidores FTP, envío de e-mail y Bases de Datos
Relacionales Internas.
Protocolo ModBus-rtu
El protocolo ModBus fue desarrollado por la empresa Modicon, parte de la
Schneider Automation. En el protocolo están definidos el formato de los mensajes utilizado
por los elementos que hacen parte de la red ModBus, los servicios (o funciones) que pueden
ser ofrecidos vía red, y también cómo estos elementos intercambian datos en la red.(Palma
et al. 2017)
Modos de transmisión
En la especificación del protocolo están definidos dos modos de transmisión: ASCII
y RTU. Los modos definen la forma como son transmitidos los bytes del mensaje. No es
posible utilizar los dos modos de transmisión en la misma red. En el modo RTU, cada
palabra transmitida posee 1 start bit, ocho bits de datos, 2 stop bits, sin paridad. De este
modo, la secuencia de bits para la transmisión de un byte es la siguiente:
34
Start B0 B1 B2 B3 B4 B5 B6 B7 Stop Stop
En el modo RTU, cada byte de datos es transmitido como siendo una única palabra
con su valor directamente en hexadecimal. El SRW 01 utiliza solamente este modo de
transmisión para comunicación, no poseyendo, por lo tanto, comunicación en el modo
ASCII.
Estructura de los mensajes en el modo rtu
La red ModBus-RTU utiliza el sistema maestro-esclavo para el intercambio de
mensajes. Permite hasta 247 esclavos, más solamente un maestro. Toda comunicación
inicia con el maestro haciendo una solicitación a un esclavo, y esta contesta al maestro el
que fue solicitado. En ambos los telegramas (pregunta y respuesta), la estructura utilizada
es la misma: Dirección, Código de la Función, Datos y Checksum. Solo el contenido de los
datos posee tamaño variable.
Figura 15. Estructura de los mensajes
Dirección
El maestro inicia la comunicación enviando un byte con la dirección del esclavo
para el cual se destina el mensaje. Al enviar la respuesta, el esclavo también inicia el
35
telegrama con él su propia dirección, posibilitando que el maestro conozca cuál esclavo
está enviándole la respuesta.
El maestro también puede enviar un mensaje destinado a la dirección “0” (cero), lo
que significa que el mensaje es destinado a todos los esclavos de la red (broadcast). En este
caso, ninguno esclavo irá contestar al maestro.
Código de la Función
Este campo también contiene un único byte, donde el maestro especifica el tipo de
servicio o función solicitada al esclavo (lectura, escrita, etc.). De acuerdo con el protocolo,
cada función es utilizada para acceder un tipo específico de dato. En el SRW 01, los datos
están dispuestos como registradores del tipo holding (words), o del tipo coil/input discrete
(bits), y, por lo tanto, el relé solo acepta funciones que manipulan estos tipos de datos.
Campo de Datos
Campo con tamaño variable. El formato y el contenido de este campo dependen de
la función utilizada y de los valores transmitidos. Este campo está descrito juntamente con
la descripción de las funciones.
CRC
La última parte del telegrama es el campo para el chequeo de errores de transmisión.
El método utilizado es el CRC-16 (Cycling Redundancy Check). Este campo es formado
por dos bytes, donde primero es transmitido el byte menos significativo (CRC-), y después
el más significativo (CRC+).
36
El cálculo del CRC es iniciado cargándose una variable de 16 bits (referenciado a
partir de ahora como variable CRC) con el valor FFFFh. Después se debe ejecutar los pasos
de acuerdo con la siguiente rutina:
1. Se somete al primer byte del mensaje (solamente los bits de datos - start bit, paridad
y stop bit no son utilizados) a una lógica XOR (O exclusivo) con los 8 bits menos
significativos de la variable CRC, retornando el resultado en la propia variable
CRC;
2. Entonces, la variable CRC es desplazada una posición a la derecha, en dirección al
bit menos significativo, y la posición del bit más significativo es rellenada con 0
(cero);
3. Luego de este desplazamiento, el bit de flag (bit que fue desplazado para fuera de
la variable CRC) es analizado, ocurriendo lo siguiente:
● Si el valor del bit fuera 0 (cero), nada es hecho;
● Si el valor del bit fuera 1 (uno), el contenido de la variable CRC es sometida
a una lógica XOR con un valor constante de A001h y el resultado es
regresado a la variable CRC.
4. Se repiten los pasos 2 y 3 hasta que ocho desplazamientos tengan sido hechos;
5. Se repiten los pasos de 1 a 4, utilizando el próximo byte del mensaje, hasta que todo
el mensaje tenga sido procesado.
El contenido final de la variable CRC es el valor del campo CRC que es transmitido
en el final del telegrama. La parte menos significativa es transmitida primero (CRC-) y en
seguida la parte más significativa (CRC+).
37
Metodología
La metodología que se siguió para el cumplimiento de cada uno de los objetivos se
basó en un proceso de investigación dedicado a funciones y protocolos en el mercado en
cuanto a dispositivos con los cuales se pudiese construir un controlador lógico
programable. Los distintos tipos, robustez y precios, seguido de una clasificación donde se
seleccionó los más aptos para la aplicación dentro de este prototipo, se realizó una nueva
selección de final de los componentes más óptimos de acuerdo a las necesidades y enfoque
principal para la facilidad de replicar en caso de fallas o reproducción del módulo, con la
robustez más alta posible. Después de estos procesos se realizó la programación y
acoplamiento de las tarjetas escogidas para la construcción del PLC diseñando una sola
PCB que acopla todos los dispositivos. Ya listo el diseño se realizó pruebas de
comunicación y un dispositivo para comprobar el éxito del funcionamiento.
38
Desarrollo de la propuesta
Para describir el desarrollo y funcionamiento del sistema general del Soft-plc se va
a dividir en dos subsistemas los cuales consisten en una descripción del hardware y
software que van a cumplir las especificaciones técnicas dentro de los objetivos planteados,
después de obtener un estado del arte robusto y en consecuencia a este se planteó las
siguientes especificaciones técnicas.
Especificaciones técnicas
El controlador lógico programable, cuenta con las siguientes características: 8
entradas digitales aisladas, 6 salidas digitales relé, 2 salidas digitales transistor, 4 entradas
4-20 mA, 4 salidas 4-20 mA, comunicación TCP/IP, puerto serial aislado ModBus RTU.
La fuente de alimentación se estableció con una fuente de DC fija de 24V- 3A con
todas las protecciones contra riesgo eléctrico y cortocircuitos, esta será la encargada de la
alimentación de la Raspberry, el Psoc5 y I/O.
El dispositivo que se encarga del procesamiento es una Raspberry Pi que cuenta
con un microprocesador Quad Core Broadcom BCM 2837 con arquitectura de 64 bit CPU
a 1.2GHz. también cuenta con 1GB RAM, puerto Ethernet, GPIO extendido de 40 pines.
Estas especificaciones son perfectas para el desarrollo de ambientes de programación con
la suite de Codesys corre bajo sistema operativo Linux.
La tarjeta que se encarga de I/O es un Psoc5 este microcontrolador cumple con la
función de adicionar periféricos a la Raspberry, comunicándose mediante el protocolo
Serial Peripheral Interface (SPI), los cuales son: Convertidor análogo digital (ADC) con
una resolución de 12 Bits 4 canales, Convertidor digital análogo (DAC) con una resolución
39
de 12 Bits 4 canales, 8 entradas digitales de alta velocidad, 8 salidas digitales de alta
velocidad.
La plataforma de programación es CODESYS con un entorno de programación de
PLC puede programar utilizando la lógica de escalera tradicional al texto estructurado más
moderno y al diagrama de flujo continuo (normas IEC 61131-3). Uno de los objetivos de
Codesys es poder usar Raspberry como un dispositivo PLC, de esta forma este entorno de
programación nos facilita drivers y packets para poder interactuar directamente desde la
versión de Codesys 3.5.
El aislamiento de tierras de I/O Digital y Análogo se usó circuitos que se encargan
de adaptar la señal eléctrica proveniente de sensores o transmitidas hacia actuadores,
agregan características de protección eléctrica: protección ante picos de voltaje, corriente,
e interferencia electromagnética (EMI). Su función principal es adaptar Lazos de corriente
4-20Ma, las entradas digitales y salidas digitales aisladas.
Hardware
Aquí vamos a describir todas las especificaciones de los componentes electrónicos
usados en el diseño del Soft-plc hasta convertirlo en un sistema adecuado para su trabajo
cumpliendo todos los parámetros de diseño en torno a las especificaciones técnicas
planteadas, con base a lo anterior una compilación de todos los circuitos necesarios en la
implementación de cada conexión.
Alimentación de voltaje
La alimentación de voltaje de todo el sistema es una fuente swichada de 12 voltios
a 3.2 amperios con capacita de 38.4 vatios la cual tiene como función alimentar el regulador
40
de 5 voltios para alimentación del computador de placa reducida y el microcontrolador
encargado de entradas y salidas del sistema, en la figura 16 podemos observar cuanto
consume cada uno de los subsistemas con sus respectivos periféricos.
Figura 16. Consumo de potencia
Estudiando el consumo de corriente de cada uno de los sistemas se toma la decisión
de dejar la fuente de 24 voltios a 3.2 amperios ya que es suficiente para satisfacer la
necesidad del sistema Soft-plc sin ningún inconveniente.
Para la alimentación de las tarjetas raspberry y PSoC se usa el circuito lm2596 el
cual se configura como conversor DC-DC para obtener 5 voltios a máximo 3 amperios de
la fuente principal, la configuración de este sistema se hace a través de las recomendaciones
del fabrícate teniendo en cuenta la configuración de la figura 17.
Fue
nte
de
alim
enta
ció
n • 24 voltios a 3.2 amperios conectada a 110 vac
Ras
pb
erry
pi 3
• regulador
5 voltios 1.5 amperios P
SoC
5 L
P • 5 voltios 1 amperios
• salidas digitales con rele 24 voltios 0.4 amperio
41
Figura 17. Configuración LM2596 24VDC a 5.1VDC
Conexión para comunicación SPI entre raspberry y PSoC
El hardware de conexión entre la Raspberry y PSoC 5 se hace a través de un canal
directo a los pines especificados según el fabricante para esta comunicación.
Figura 18. Conexión Raspberry y PSoC
Raspberry pi 3
MOSI
MISO
SCLK
GND
SS
PSoC 5LP
MOSI
MISO
SCLK
GND
SS
42
Como se observó en el marco teórico la comunicación SPI funciona con estas 5
conexiones que se resumen en un pin emisor, un receptor, un reloj sincronizado, un pin de
tierra compartida, y un pin para determinar el número de esclavo.
En la raspberry pi 3 estos pines los podemos encontrar en los GPIO 17, 19, 21, 23
y 25 como se observar en la figura 19.
Figura 19. Conexión SPI en raspberry PI
La configuración SPI en PSoC 5LP la podemos encontrar en los pines GND, 12.2,
12.3, 12.4 y 2.0 como se observar en la figura 20.
Figura 20. Conexión SPI en PSoC 5 LP
43
La configuración de la comunicación para la transmisión de datos se hace a través
de la programación de los dos dispositivos, esta configuración la podemos observar en la
sección de software.
Entradas digitales lógicas
Las ocho entradas digitales están configuradas con dos circuitos integrados
PS2502L los cuales tienen internamente 4 opto acopladores cada uno, y se encargan de
aislar tierras para la protección de procesador y la tarjeta encargada de las I/O.
Figura 21. Circuito integrado PL2502L internamente
La configuración de cada opto acoplador se hace a través de un circuito tomado de
una configuración de Allen Bradley con el fin de obtener un chip lógico personalizado con
una alimentación que puede ir de 10VDC a 30VDC según la necesidad de la aplicación.
44
Figura 22. Configuración PL2502L como chip lógico
Este es un circuito inversor el cual se polariza en un rango de 10VDC a 30VDC y
produce que se cierre el opto transistor para generar un valor lógico bajo, el circuito está
compuesto por un diodo D3 que evita una polarización inversa, un divisor resistivo, un
condensador para evitar ruido y va polarizado directamente al diodo emisor del opto
acoplador el cual se polariza a un voltaje aproximando entre 1VDC y 3VDC, se hace una
división de escala de voltaje suficiente para que el transistor se polarice y podamos tener
el valor lógico a la salida, la resistencia pull up R6 no se agrega al circuito ya que van
conectadas directamente al PSoC y esté ya las trae incluidas y se pueden configurar.
El circuito permite la aislación por propiedades del opto acoplador cercanas a los
5000 VRMS y cada canal está aislado sin compartir tierras lo cual es beneficioso para
cualquier aplicación.
Salidas digitales lógicas
Las salidas ocho salidas digitales están configuradas en dos grupos, el primer grupo
de seis salidas, está configurado para poder recibir voltajes altos que están aislados a través
45
de un relé de marca SONGLE que permite la conducción de 3 amperios a 24 voltios
suficiente para las aplicaciones típicas de un PLC, en caso que se requiera más corriente
este relé tiene que conectarse a un contactor que se encargue de manejar toda la parte de
corriente.
El relé SONGLE consta de un contacto normalmente cerrado y un contacto
normalmente abierto con el solenoide que hace el cierre del contacto.
Figura 23. Diagrama de contacto Relé SONGLE
Cada uno de estos relés tienen un voltaje nominal de 5VDC y aproximadamente un
consume de 0.066 amperios, donde se tiene un consumo de corriente máxima de 0.4
amperios con los seis relés activos.
El driver usado para estas salidas consta de un circuito integrado ULN2803A de
fácil acceso comercialmente que tiene la capacidad de manejar 8 canales en configuración
Darlington que se utiliza para aumentar corriente de 0.03 amperios.
46
Figura 24. Diagrama Lógico ULN2803A
Figura 25. Diagrama Esquemático ULN2803A configuración Darlington
El otro grupo de dos salidas, este grupo está configurado como salidas
transistorizadas las cuales son compuestas por un transistor MOSFET FDS4953 el cual es
un MOSFET doble que permite por el transistor una capacidad de corriente de 5 amperios
y un voltaje de 30 voltios.
47
Figura 26. Diagrama MOSFET FDS4953
Este MOSTEF está protegido con un fusible de alta velocidad en caso de
inconvenientes, también tiene un driver como circuito de polarización con dos transistores
complementarios un 2N3906 y 2N3904
Figura 27. Driver complementario salida transistorizada
También está aislado con un MOCD 213-M es cual se encarga de aislar todo el
circuito que tiene una capacidad de doble canal y esta polarizado los diodos emisores
conectados directamente al PSoC.
48
Para el primer grupo se utilizó un condensador electrolítico y un condensador
cerámico que actúan como filtros pasa bajos para evitar interacción en el flujo DC y el
PSoC.
Salidas análogas 4-20Ma
Las cuatro salidas análogas están compuestas por un HCNR200 el cual es un opto
acoplador análogo de alta velocidad que consta de un emisor y dos fotodiodos los cuales
se usan para volver lineal la aplicación.
Figura 28. Configuración HCNR200 como trasmisor
La salida del DAC del PSoC está configurado linealmente en un rango de 0.8VDC
a 4VDC, se cambió el circuito operacional LM158 por un LM358 que es de fácil acceso,
y se ajustó un trimmer para ajustar lazos de corriente para manipular el spam y se cambió
el transistor de salida 2N3904 por cuestiones de temperatura por un 2SD400 el cual permite
hasta un amperio entre emisor y colector, el cambio se realiza para evitar inconvenientes
49
cuando el PLC se enfrente a aplicaciones de campo donde se expone a una duración de
trabajo bastante altas.
Entradas análogas 4-20Ma
Las cuatro entradas también están compuestas por un circuito HCNR200
configurado de manera diferente.
Figura 29. Configuración HCNR200 como receptor
En los cuales se utiliza el convertidor de corriente ILOOP que lo convierte de
0VDC a 3.4VDC, el cual va directamente al ADC del psoc y se hace los mismos cambios
de la configuración de las salidas.
Por último, se agregó un filtro pasa bajos con un corte cercano a los 2300 HZ para
evitar ruidos de alta frecuencia y evitar atenuaciones en caso de que se usen dispositivos
de alta velocidad.
Comunicación ModBus RTU
Esta comunicación necesita un circuito aislado a través de un shield configurado
para la correcta comunicación la cual no se caiga por corriente.
50
Figura 30. Circuito driver ModBus RTU
Software
Aquí vamos a describir todas las especificaciones de la composición de
programación usados en el diseño del Soft-plc dividiéndolo en dos subsistemas de software
que son programación de la Raspberry pi y programación de PSoC.
Programación Raspberry pi 3
La programación está configurada con el software Codesys 3.5 SP11 Patch 4 última
versión a la fecha a continuación, se muestra cada paso de configuración con detalle de
programación y adecuación de cada plataforma para su correcto funcionamiento.
Instalación de Raspbian en Raspberry pi 3
El sistema operativo y los datos de usuario se guardarán en una tarjeta microSD de
8 Gigabytes, aunque puede ser de mayor capacidad. El Sistema Operativo se llama
51
Raspbian, que es una versión de GNU/Linux diseñada especialmente para su uso con
Raspberry Pi.
En primer lugar, formatea la tarjeta microSD. El ordenador debe tener algún lector
de tarjetas microSD, o un adaptador que lo permita, por ejemplo, USB.
1. Descarga el software SD Formatter 4.0 para Windows.
2. Sigue las instrucciones para instalar el software.
3. Inserta tu tarjeta microSD en el lector de tu ordenador y toma nota de cómo
se llama dicha unidad, por ejemplo F.
4. En el SD Formatted 4.0 elige la letra de la unidad de disco de tu tarjeta y
formatéala.
Figura 31. Ajuste memoria SDFormatter
5. Ingresar a la página www.raspberrypi.org y descargamos la última versión
de Raspbian
52
Figura 32. página principal raspberry
6. Haz clic en el botón Download ZIP bajo “NOOBS (offline and network
install)” y elige la carpeta donde guardarlo.
7. Extrae los archivos del comprimido ZIP.
8. Una vez que se haya formateado la tarjeta microSD, arrastra los archivos
extraídos del directorio donde se hayan guardado y los sueltas en la unidad
de disco de la tarjeta microSD.
9. Los archivos se copiarán en la tarjeta microSD.
10. Cuando se hayan acabado de copiar, retira de forma segura la tarjeta
microSD y la introduces en la ranura de la tarjeta Raspberry Pi.
Instalar complementos de raspberry para Codesys
El complemento lo podemos descargar directamente de la página principal de
Codesys con el nombre de CODESYS FOR RASBERRY PI SL.
53
Ya dentro de la plataforma Codesys e instalado el complemento podemos ir a la
pestaña herramienta y después administración de paquetes para comprobar que el
complemento este instalado.
Figura 33. Consulta administración de paquetes
Ya dentro del administrador de paquetes podemos verificar el complemento
instalado, también podemos encontrar un botón para la actualización de todos los
complementos instalados y también un acceso directo a la tienda de Codesys.
Figura 34. Complementos de Codesys
54
Configuración de PLC en Codesys
Ya comprobado que tenemos el complemento instalado vamos a llevar a cabo la
configuración del PLC, para esto vamos a abrir un nuevo proyecto, le damos un nombre y
una dirección de ubicación de archivos, escogemos la opción proyecto estándar.
Figura 35. Opciones de inicio en nuevo proyecto
A continuación, vamos a escoger el dispositivo donde vamos a escoger CODESYS
for Raspberry y como lenguaje de programación texto estructurado, anotando que también
sirve con otros lenguajes de programación.
Figura 36. Opciones de lenguaje de programación
55
Configuración comunicación SPI
Ya ingresado a la plataforma vamos a la subdivisión que se encuentra en la parte
izquierda y damos click derecho en SPI y seleccionamos agregar el dispositivo.
Figura 37. Selección de dispositivo SPI
Dejamos el nombre como SPI-master y le damos click al botón agregar dispositivo
Figura 38. Configuración SPI como master
Como ya está agregado el dispositivo de la comunicación SPI, se procede a
configurar para poder llamar las funciones del PSoC ya establecidas por la especificación,
56
para esto vamos agregar un entorno de programación POU, damos click en aplicación,
agregar objeto, y seleccionamos POU.
Figura 39. Agregar POU a Codesys
En la configuración del POU vamos a ponerle el nombre SPI_16_RW y
seleccionamos el tipo bloque de funciones, texto estructurado y click en agregar.
Figura 40. Nombrar función SPI_16_RW
Ya agregado la aplicación POU el programa automáticamente nos deja unas líneas
de definición, variables de registro y los buffers.
57
Figura 41. Definición automática POU para SPI_16_RW
Para agregar el dispositivo PLC se borra las líneas marcadas en el círculo de la
figura 41 de la definición automática y se remplazan por las líneas del Anexo 1
FUNCTION_BLOCK SPI_16_RW.
Figura 42. Definición modificada POU FUNCTION_BLOCK SPI_16_RW
Después de terminar de configurar la definición se configura el marco de la función
que tiene toda la configuración de registros y envían en total ocho paquetes de 16 bits, para
configurarlo escribimos las líneas del Anexo 2 Paquetes de función.
58
Figura 43. Macro del POU FUNCTION_BLOCK SPI_16_RW
Con este paso ya está configurado la raspberry con las funciones predeterminadas
del PSoC, solo queda llamar la función desde un programa de cualquier aplicación, para
llamarlo podemos usar las líneas del anexo 3: llamada de función POU al PLC.
Figura 44. Llamado de función POU al PLC
Después de la definición tenemos que llamar la librería mediante la instancia
llamada psoc: SPI_16_RW que se encuentra en la definición, y agregamos las líneas del
anexo 4: main program, es importante siempre definir las variables enteras sin signo con
59
una longitud máxima de 16 bits, si son entradas o salidas digitales es necesario definirlas
de 8 bits.
Por ultimo vamos a configurar el SPI master vamos a configurar el dMode en 1, el
dbitperword 8 y dmaxspeed 61000 Hz. Es importante recordar que la comunicación solo
se genera si el W_Register:UINT en igual 43690 solo con ese número abre la comunicación
SPI con el PSoC.
Figura 45. Main program de la función
La función retorna los ADC, DAC, entradas digitales y salidas digitales. Para
llamarlo simplemente se asigna valores a las funciones. Cada uno de los if significa una
salida de propósito general con tramas de 16 bits y en el main tags no es necesario
configurar un tiempo cíclico ya que no afecta a la comunicación.
60
Programación PSoC 5 LP
Toda la programación de PSoC está configurada en el software PSoC Creator 4.1
update 1, se muestra cada paso de configuración con detalle de programación y adecuación
de cada plataforma para su correcto funcionamiento.
Configuración de top Desing
Dentro de la configuración esquemática del PSoC vamos a encontrar todas las
configuraciones I/O según las especificaciones técnicas.
Figura 46. Top Design PSoC 5
Dentro de top desing vamos a encontrar un bloque ADC el cual contiene 4 canales
con una resolución de 12 bits que convierten el voltaje de 0VDC A 5VDC configurado con
61
un tiempo de muestreo de 50hz para simular un filtro tipo ventana para evitar ruido; cuenta
con un bloque de comunicación SPIS-1 encargado de la comunicación con la raspberry pi
configurado de modo de 16 bits para que cada vez que se entra un paquete desde la
raspberry se genere una interrupción para cambiar la rutina y tener en cuenta el número de
registro que se desea escribir; tienes 4 bloques DAC configuras a 12 bits conectados a un
seguidor de corriente PGA, ocho entradas digitales configurados con resistencia pull up
para complementar el hardware y ocho salidas digitales configuradas normalmente 6 de
relé y dos de alta velocidad.
Configuración main program PSoC
La configuración de programación del PSoC la podemos observar el Anexo 5,
donde podemos encontrar los buffers de comunicación para el control de cada uno de los
periféricos de top design. Este programa se encarga de enviar una trama completa para leer
y escribir los datos correspondientes a la aplicación.
Diseño de circuito impreso
El diseño del circuito impreso consta de componentes SMD donde vamos a
encontrar todos los circuitos nombrados en las especificaciones de hardware, todo el
circuito fue diseñado en proteus 8.4.
62
Figura 47. Diseño PCB
Figura 48. Visualización 3D tarjeta de periféricos
63
Conclusiones
El desarrollo de este proyecto, permite al estudiante profundizar de forma práctica
en la automatización y control de procesos industriales, al tener contacto directo con una
herramienta que conforma el hardware y software de un sistema PLC con el cual pueden
interactuar directamente hacia la manipulación de dispositivos de campo, donde se
implementan sensores, actuadores, sistemas electrónicos de control y se crean interfaz
humano-máquina interactuando a través de estructuras de programación cumpliendo la
norma IEC 61131-3, es lo esencial en el aprendizaje y experiencia que el estudiante llevara
a su entorno laboral.
Al momento de realizar el diseño de plataformas de entrenamiento fue importante
hacer una investigación exhaustiva ampliando el estado de arte actual de las tecnologías a
utilizar y a su vez es necesario conocer los documentos normativos que aplican para los
diferentes elementos que componen la plataforma.
El Soft-Plc propuesto tiene ventajas en el mercado por sus condiciones de robustez
y bajo precio, este se puede usar en ambientes académicos e industriales, las
especificaciones de diseño están exhaustivamente preparadas para su reproducción fácil
donde los estudiantes de la universidad distrital pueden preparar sus aplicaciones.
64
Lista de referencias
3S - Smart Software Solutions GmbH. 2010. User Manual for PLC Programming with
Codesys 2.3. 3S - Smart Software Solutions GmbH Memminger Straße 151.
http://www.wago.com/wagoweb/documentation/759/eng_manu/333/m07590333_00
000000_1en.pdf.
Cypress Semiconductor Corporation. 2017. “PSoC 5LP: CY8C58LP Family Dadasheet.”
: 1–139.
Dennis, Andrew K. 2013. Raspberry Pi Home Automation with Arduino.
https://books.google.com/books?id=kvdjhugNV7AC&pgis=1.
García, Carlos, and Jose López. 2014. “Integración de Redes Telemáticas.” UOC
Universitat Oberta de Catalunya: 84.
http://openaccess.uoc.edu/webapps/o2/bitstream/10609/40187/6/cgmuelasTFC0115
memoria.pdf.
Gonzalez, Claudio. 2015. “Aplicaciones Orientadas a La Domótica Con Raspberry Pi.”
Hongbin, Gao, Zhou Yun2, Niu Xixian, and Zang Dan. 2010. “The Design and
Implementation of an Automatic Burdening System Based on PLC.” Proceedings -
2015 IEEE 12th International Symposium on Autonomous Decentralized Systems,
ISADS 2015: 3.
John, Karl Heinz, and Michael Tiegelkamp. 2010. “IEC 61131-3: Programming
Industrial Automation Systems: Concepts and Programming Languages,
Requirements for Programming Systems, Decision-Making Aids.” IEC 61131-3:
Programming Industrial Automation Systems: Concepts and Programming
Languages, Requirements for Programming Systems, Decision-Making Aids: 1–390.
65
LAGU, SONALI S. 2014. “RASPBERRY PI FOR AUTOMATION OF WATER
TREATMENT PLANT.” 1: 5.
López, Julián Rolando Camargo, and César Andrey Perdomo Charry. 2016.
INTRODUCCIÓN AL PSoC5LP. Primera ed. ed. Nathalie De la Cuadra N. Bogotá.
Palma, l. Brito, V. Brito, J. Rosas, and P. Gil. 2017. “WEB PLC Simulator for ST
Programming.” In Lisboa, portugal, 6.
Perez, Eric López. 2008. “INGENIERIA EN MICROCONTROLADORES Protocolo
SPI( Serial Peripherical Interface).” Technology: 1–10. http://www.i-
micro.com/pdf/articulos/spi.pdf.
Rostyslav, Kryvyy, Serhiy Tkatchenko, and Ruslan Golovatsyy. 2015. “Features Home
Automation System Development Based Raspberry Pi Using Java ME SDK.”
Proceedings of 13th International Conference: The Experience of Designing and
Application of CAD Systems in Microelectronics, CADSM 2015 1: 3.
Sandeep, V. et al. 2015. “Globally Accessible Machine Automation Using Raspberry Pi.”
2015 International Conference on Advances in Computing, Communications and
Informatics, ICACCI 2015: 4.
66
Anexos
Anexo 1: FUNCTION_BLOCK SPI_16_RW
FUNCTION_BLOCK SPI_16_RW
VAR_INPUT
DAC_1:UINT;
DAC_2:UINT;
DAC_3:UINT;
DAC_4:UINT;
GPO:UINT;
END_VAR
VAR_OUTPUT
ADC_1:UINT;
ADC_2:UINT;
ADC_3:UINT;
ADC_4:UINT;
GPI:UINT;
END_VAR
VAR
W_Register:UINT:=43690;
i:INT:=0;
RxdataHi:UINT;
RxdataLo:UINT;
dX:uint;
TxDataBuffer:ARRAY[0..1] OF BYTE;
RxDataBuffer:ARRAY[0..1] OF BYTE;
TxBuffer:POINTER TO ARRAY[0..1] OF BYTE;
RxBuffer:POINTER TO ARRAY[0..1] OF BYTE ;
RxState:POINTER TO ARRAY[0..1] OF BYTE;
SPI_State:BOOL;
END_VAR
67
Anexo 2: Paquetes de función
i:=i+1;
IF(i=1)THEN
//*******************Registro**************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(W_Register,8));
TxDataBuffer[1]:=UINT_TO_BYTE(W_Register AND 255);
TxBuffer:=ADR(TxDataBuffer);
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=0,udiLen:=
2,uiDelayus:=5,udiSpeedHz:=61000);
//***********************************//
END_IF
IF(i=2)THEN
//**********************RW_Data**********************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(DAC_1,8));
TxDataBuffer[1]:=UINT_TO_BYTE(DAC_1 AND 255);
TxBuffer:=ADR(TxDataBuffer);
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=0,u
diLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//***********************************//
END_IF
IF(i=3)THEN
//*************RW_Data************************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(DAC_2,8));
TxDataBuffer[1]:=UINT_TO_BYTE(DAC_2 AND 255);
TxBuffer:=ADR(TxDataBuffer);
RxBuffer:=ADR(RxState);
RxDataBuffer:=RxBuffer^;
RxdataHi:=BYTE_TO_UINT(RxDataBuffer[0]);
RxdataLo:=BYTE_TO_UINT(RxDataBuffer[1]);
dX:=SHL(RxdataHi,8) OR RxdataLo;
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=Rx
Buffer,udiLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//****************************************//
END_IF
IF(i=4)THEN
//************RW_Data******************//
68
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(DAC_3,8));
TxDataBuffer[1]:=UINT_TO_BYTE(DAC_3 AND 255);
TxBuffer:=ADR(TxDataBuffer);
RxBuffer:=ADR(RxState);
RxDataBuffer:=RxBuffer^;
RxdataHi:=BYTE_TO_UINT(RxDataBuffer[0]);
RxdataLo:=BYTE_TO_UINT(RxDataBuffer[1]);
ADC_1:=SHL(RxdataHi,8) OR RxdataLo;
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=Rx
Buffer,udiLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//****************************************//
END_IF
IF(i=5)THEN
//***************RW_Data***************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(DAC_4,8));
TxDataBuffer[1]:=UINT_TO_BYTE(DAC_4 AND 255);
TxBuffer:=ADR(TxDataBuffer);
RxBuffer:=ADR(RxState);
RxDataBuffer:=RxBuffer^;
RxdataHi:=BYTE_TO_UINT(RxDataBuffer[0]);
RxdataLo:=BYTE_TO_UINT(RxDataBuffer[1]);
ADC_2:=SHL(RxdataHi,8) OR RxdataLo;
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=Rx
Buffer,udiLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//**********************************************//
END_IF
IF(i=6)THEN
//***************RW_Data******************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(GPO,8));
TxDataBuffer[1]:=UINT_TO_BYTE(GPO AND 255);
TxBuffer:=ADR(TxDataBuffer);
RxBuffer:=ADR(RxState);
RxDataBuffer:=RxBuffer^;
RxdataHi:=BYTE_TO_UINT(RxDataBuffer[0]);
RxdataLo:=BYTE_TO_UINT(RxDataBuffer[1]);
ADC_3:=SHL(RxdataHi,8) OR RxdataLo;
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=Rx
Buffer,udiLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//*******************************************//
END_IF
IF(i=7)THEN
69
//****************RW_Data*******************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(0,8));
TxDataBuffer[1]:=UINT_TO_BYTE(0 AND 255);
TxBuffer:=ADR(TxDataBuffer);
RxBuffer:=ADR(RxState);
RxDataBuffer:=RxBuffer^;
RxdataHi:=BYTE_TO_UINT(RxDataBuffer[0]);
RxdataLo:=BYTE_TO_UINT(RxDataBuffer[1]);
ADC_4:=SHL(RxdataHi,8) OR RxdataLo;
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=Rx
Buffer,udiLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//****************************************//
END_IF
IF(i=8)THEN
//*******************RW_Data********************//
TxDataBuffer[0]:=UINT_TO_BYTE(SHR(0,8));
TxDataBuffer[1]:=UINT_TO_BYTE(0 AND 255);
TxBuffer:=ADR(TxDataBuffer);
RxBuffer:=ADR(RxState);
RxDataBuffer:=RxBuffer^;
RxdataHi:=BYTE_TO_UINT(RxDataBuffer[0]);
RxdataLo:=BYTE_TO_UINT(RxDataBuffer[1]);
GPI:=SHL(RxdataHi,8) OR RxdataLo;
SPI_State:=SPI_master.transferExt(pabyTxBuffer:=TxBuffer,pabyRxBuffer:=Rx
Buffer,udiLen:=2,uiDelayus:=5,udiSpeedHz:=61000);
//***************************************//
i:=0;
END_IF
70
Anexo 3: Llamada de función definición POU al PLC
PROGRAM PLC_PRG
VAR
Txdata1:UINT;
Txdata2:UINT;
Txdata3:UINT;
Txdata4:UINT;
Txdata5:UINT;
Rxdata1:UINT;
Rxdata2:UINT;
Rxdata3:UINT;
Rxdata4:UINT;
Rxdata5:UINT;
POT1:REAL;
POT2:REAL;
POT3:REAL;
POT4:REAL;
POT5:REAL;
i:INT:=0;
psoc: SPI_16_RW;
END_VAR
71
Anexo 4: Main program
psoc(DAC_1:= Txdata1, DAC_2:=Txdata2, DAC_3:=Txdata3 , DAC_4:=Txdata4,
GPO:=Txdata5 , ADC_1=>Rxdata1 , ADC_2=>Rxdata2 , ADC_3=>Rxdata3 ,
ADC_4=>Rxdata4 , GPI=>Rxdata5 );
Txdata1:=REAL_TO_UINT(POT1*100);
Txdata2:=REAL_TO_UINT(POT2*100);
Txdata3:=REAL_TO_UINT(POT3*100);
Txdata4:=REAL_TO_UINT(POT4*100);
Txdata5:=REAL_TO_UINT(POT5*10);
72
Anexo 5: main program PSoC
#include "project.h"
#define ADR_PSOC 43690u
int RxBuffer[5],TxBuffer[5];
int Rxdata,Txdata,F1=0,F2=0,i=0,k=0;
CY_ISR(Rx)
{
Rxdata=SPIS_1_ReadRxData();
if(F1==1)
{
RxBuffer[i]=Rxdata;
i++;
if(i==5)
{
i=0;
F1=0;
}
else i=i;
}
if(Rxdata==ADR_PSOC)
{
F1=1;
F2=1;
}
else
{
F1=F1;
F2=F2;
}
}
CY_ISR(Tx)
{
if(F2==1)
{
SPIS_1_WriteTxData(TxBuffer[k]);
k++;
if(k==5)
{
k=0;
F2=0;
73
}
}
else SPIS_1_WriteTxData(0);
}
CY_ISR(ADC)
{
TxBuffer[0]=ADC_GetResult16(0);
TxBuffer[1]=ADC_GetResult16(1);
TxBuffer[2]=ADC_GetResult16(2);
TxBuffer[3]=ADC_GetResult16(3);
TxBuffer[4]=IN_1_Read();
DAC_1_SetValue(RxBuffer[0]);
DAC_2_SetValue(RxBuffer[1]);
DAC_3_SetValue(RxBuffer[2]);
DAC_4_SetValue(RxBuffer[3]);
OUT_1_Write(RxBuffer[4]);
}
int main(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */
SPIS_1_Start();
ADC_Start();
DAC_1_Start();
DAC_2_Start();
DAC_3_Start();
DAC_4_Start();
F1_Start();
F2_Start();
F3_Start();
F4_Start();
isr_1_StartEx(Rx);
isr_2_StartEx(Tx);
isr_3_StartEx(ADC);
for(;;)
{
}
}