Hola, Este es el quinto capítulo del curso
de programación de Arduino para usos industriales.
Primero de todo quiero hacer unos comentarios
sobre el capítulo anterior. A los que rellenaste
el formulario ya pudisteis recibir el programa
para cargarlo directamente. A los que aún
no lo habéis recibido os recomiendo que abráis
el capítulo número 4 y rellenéis el formulario.
Al contestar podréis ver un link para descargaros
el documento. Una vez cargado el programa
al PLC basado en Arduino. Es necesario verificar
el puerto COM en el fichero del processing.
Luego ya podemos ejecutar el programa en el
processing. Como veis se abre la plataforma
SCADA para simular las entradas y las salidas
del PLC. En esta plataforma se pueden leer
todas las entradas, tanto analogicas como
digitales. También se pueden activar todas
las salidas, tanto analogicas como digitales(que
en este caso utiliza salidas a relé). Tal
y como podemos ver en el montaje que tenemos,
hemos puesto una serie de botones y un piloto
led para ver que a parte de los leds que ya
dispone el PLC también podemos verificar
que el PLC activa la salida. Es importante
tener el PLC conectado a la alimentación
que puede ser de 12 a 24Vdc. El PLC está
conectado por el puerto USB al ordenador y
como se puede ver la visualización en pantalla
es instantánea sin ningún tipo de retardo.
Al igual que cuando se activa una salida también
es activada por el PLC de forma inmediata.
En el ejemplo hemos conectado directamente
una salida analógica del PLC a una de las
entradas analogicas por lo que podemos ver
que cuando modificamos el valor de la salida
analógica también leemos el voltaje en la
entrada. El cableado de este tipo de PLCs
está hecho utilizando los cables estándar
que se utilizan en automatización. Para los
conectores con fijación por fleje elástico
no hace falta puntera por lo que se puede
conectar el cable pelado directamente en el
conector. Os recomiendo intentar leer todo
el código en el Arduino IDE si bien hay algunas
partes que aún no hemos dado en el curso
y os pueden resultar difíciles. Siguiendo
con el capítulo 5. Vamos a ver diferentes
tipos de variables. Ahora nos quedan unos
pocos capítulos donde aprenderemos conocimientos
básicos que tendremos que tener en cuenta
a la hora de programar. Veremos los diferentes
puntos que trataremos en este capítulo directamente
desde la página web de Arduino donde vamos
el manú learning y clicamos en Reference.
En este capítulo nos centraremos en las variables
del tipo Constantes y del tipo De datos. Como
vemos en DATA Types. En el tipo constantes.
Es importante tener claro cómo funcionan
este tipo de variables ya que las utilizaremos
mucho en todos los programas que hagamos.
Primero de todo tenemos variables a nivel
lógico y tenemos variables a nivel de pin..
Las variables a nivel de pin, como vimos en
los capítulos anteriores básicamente son
HIGH y LOW cómo utilizamos en las diferentes
entradas y salidas. Las variables a nivel
lógico se entiende que son señales que nos
indican si su estado es verdadero o falso
y se programa utilizando la sentencia TRUE
o FALSE. Una vez vistos los diferentes niveles
veremos las entradas y las salidas. Estas
son constantes que van asociadas a un pin
de Arduino que en el PLC se asigna a una entrada
o salida, digital, analógica o relé, en
función de las especificaciones del equipo.
Las entradas se configuran con la sentencia
PINMODE dentro del setup como ya vimos en
los anteriores capítulos. Una cosa muy importante
a tener en cuenta si utilizamos una placa
Arduino es que las placas arduino necesitan
de una resistencia de pull up o pull down
para evitar que estas señales queden al aire
cuando la entrada no esté activa. Estas resistencias
se pueden poner de pull up o de pull down.
Es muy importante tener claro cómo están
diseñadas las diferentes entradas ya que
en el caso de tener una resistencia de pull
down. Cuando la entrada se encuentra desactivada.
Significa que no recibimos voltaje y por lo
tanto leemos el estado LOW. Esto es así porque
tenemos la entrada conectada a massa. Cuando
la entrada se activa lo que hacemos es activar
el transistor del optoacoplador por lo que
debido a que tenemos una resistencia de pull
down la placa Arduino recibe 5 Voltios por
lo que pasamos a leer un estado HIGH. Esta
es la forma como los PLCs están diseñados
y tenemos que tener en cuenta que esta es
la forma estándar como tenemos que trabajar.
Si leemos la entrada es HIGH y si no leemos
la entrada es LOW. Ahora bien, si tenéis
una placa arduino y os hacéis vuestro propio
esquema podría darse el caso que pusierais
una resistencia de pull up. En este caso la
forma de trabajar es completamente inversa.
Esto significa que si la entrada se encuentra
activa la entrada del Arduino lee la masa
por lo que leemos LOW y si la entrada se encuentra
desactivada el transistor no se activa por
lo que leemos el voltaje y la señal se encuentra
en HIGH. Una vez vista las entradas. Vamos
a ver las salidas. Que, tal y como hemos visto
en los capítulos anteriores las configuramos
utilizando la sentencia PINMODE en el SETUP.
La siguiente constante que tenemos es la constante
INTEGER. Esta hace referencia a un número entero.
En las placas Arduino que utilizamos. Arduino
mega y Arduino Leonardo estas constantes tienen
16 bits lo que trabajando a 2 bytes significa
que tenemos un rango de trabajo de -2^15 a
+ 2^15 -1 que son de – 32768 a más 32676.
Es importante tener en cuenta este rango ya
que utilizar constantes del tipo INTEGER no
almacena valores ni por encima ni por debajo
de este rango. El almacenamiento de estos
datos se puede hacer en decimal, binario,
octal o base hexadecimal. En función a nuestras
necesidades. Las últimas constantes que tenemos
son las del tipo coma flotante. La ventaja
es que estas constantes nos permite trabajar
con decimales. Continuando con las variables
tenemos el tipo de datos. Primero de todo
tenemos los datos tipo VOID que como hemos
visto en los capítulos anteriores sirve para
declarar funciones. Hasta el momento hemos
visto funciones del tipo setup, para la configuración,
y loop, donde utilizamos el código principal
del programa. Con esta función podemos crear
nuestras propias funciones con el fin de simplificar
el código del programa. También tenemos
los datos del tipo booleano. Estos datos básicamente
tienen 2 posibles estados, true y false que
funcionan como hemos visto antes. El siguiente
tipo de datos es el tipo CHAR o caracteres
tes. Este tipo de datos sirve para poder almacenar
una cadena de caracteres o lo que llamaríamos
como texto. Quiero remarcar que hay varias
formas de almacenar texto. Por un lado sería
el texto que utilizamos para utilizar las
palabras, o sea las letras. Y por otro lado
es el texto que realmente utiliza para almacenar
cada una de estas letras. Básicamente se
trata del código ASCII. Este código seguramente
ya lo habrás visto que es el código que
almacena y va asociado a cada una de las letras
y símbolos del teclado. Un dato del tipo
CHAR puede almacenar un valor de -128 a 127
caracteres diferentes ya que trabaja a 8 bits.
(Entendemos estos números como el código
ASCII de cada una de las letras y símbolos.
Ya que por un lado tenemos el tipo CHAR que
puede recoger valores negativos y positivos.
También podemos utilizar el tipo UNSIGNED
CHAR dónde no podemos utilizar valores negativos
y en este caso tenemos un rango de 0 a 255.
El siguiente tipo de datos a tener en cuenta
es el Byte. Un byte es capaz de almacenar
8 bits lo que le permite almacenar el rango
número de 0 a 255. Podríamos entender que
un tipo byte es como un UNSIGNED CHAR. El
siguiente dato que tenemos es el INT o Entero
que tal como hemos visto almacena 16bits,
tanto positivos como negativos. Os recuerdo
que estos 16 bits son debidos a las capacidades
de las placas Arduino Mega y Arduino Leonardo
que estamos utilizando en nuestros PLCs. Así
como hemos visto en otros tipos de datos también
tenemos la posibilidad de utilizar el UNSIGNED
INT donde básicamente trabajamos en un rango
entre 0 y 65535 que es lo mismo que 2^16 (que
son los bits que tenemos) – 1 debido a que
el primer valor del rango es 0. Continuando
con el tipo de datos que podemos utilizar
está el tipo WORD. Este tipo utiliza 16 bits
y trabaja sin signo como los UNSIGNED que
hemos visto hasta ahora. Otro tipo de datos
que nos permite trabajar con grandes números
es el tipo LONG. Esto es así porque este
tipo trabaja a 32 bits por lo que tenemos
más de 2000 millones de datos, tanto negativos
como positivos para almacenar valores. Así
como en la variable LONG tenemos números
negativos y positivos también tenemos la
opción definir el tipo de variables UNSIGNED
LONG lo que nos da un rango de trabajo desde
0 a 2^32 bits -1. Lo que va de 0 a más de
4000 millones de datos. El siguiente tipo
de datos es el tipo FLOAT y nos permite trabajar
con decimales. En este caso tenemos 32bits
lo que nos da un rango de -2^31 hasta +2^31
– 1. Ahora que ya vamos acabando nos queda
repasar las variables del tipo DOUBLE que
entenderíamos que son variables del tipo
FLOAT para las placas arduino que utilizamos.
Para acabar nos quedan 2 tipos de datos más.
Primero de todo el tipo string y luego el
array. El tipo string podríamos entender
que nos sirve para almacenar texto, nombres
y este tipo de datos. Y el último tipo de
todos es el tipo ARRAY. Que básicamente nos
permite almacenar diferentes datos de forma
ordenada pudiendo acceder a estos mediante
un índice de forma muy sencilla. Bien, el
motivo para explicar todos estos tipos de
datos es porque es importante definir el tipo
de dato lo mínimo necesario que podamos necesitar.
A la hora de programar no todos los datos
se tratan de la misma forma si bien se parece
mucho. Pero lo importante aquí es la optimización
del código ya que en caso que necesites una
variable del tipo byte, por ejemplo, no es
necesario declarar esa variable del tipo LONG
ya que el programa no sería óptimo y nos
puede ocasionar problemas a posteriori. Espero
que este capítulo os haya servido de ayuda.
Nos vemos en el próximo capítulo.
