Sistemas de Numeración Definición Es un conjunto de símbolos y reglas de generación que permiten construir todos los números válidos en el sistema. Sistema binario. Sistema de numeración discreta en el que todas las cantidades se representan utilizando como base el número dos, o sea, que sólo hay dos dígitos posibles. Estos dos dígitos suelen representarse con ceros y unos. El funcionamiento del sistema digital se basa en el sistema binario. Es el principio fundamental sobre el que se basan las computadoras digitales, pues para procesar y almacenar los datos sólo manejan unos y ceros. Representación de las cantidades binarias Dado que el PLC recibe la información proveniente del proceso ya sea en forma discreta o análoga, donde la información se almacena en forma de una agrupación binaria, es preciso por lo tanto, disponer de un medio de representación que facilite su manejo y mejore la capacidad de procesamiento. Para ello se emplean con mayor frecuencia tres tipos de representación para la información, éstos son: bit, byte y palabra, en algunos casos se utilizan la doble palabra. Bit El bit es la unidad elemental de información donde sólo puede tomar dos valores un "1" ó un "0 ", es decir, un bit es suficiente para representar una señal binaria. Byte El byte es una unidad compuesta por una agrupación ordenada de 8 bits, es decir, ocho dígitos binarios. Los bits se agrupan de derecha a izquierda tomando como número de bit del 0 al 7. En un byte se puede representar el estado de hasta ocho señales binarias, puede usarse para almacenar un número cuya magnitud como máximo sería: Número máximo de un byte = 1 1 1 1 1 1 1 1 = 28 1 255 (Valor Decimal) Palabra Para obtener mayor capacidad de procesamiento a veces se agrupan los bytes formando lo que se denomina las palabras. La palabra es una unidad mayor compuesta de 16 bits = 2 bytes. Los bits de una palabra se agrupan de derecha a izquierda tomando como número de bit del 0 al 15. En una palabra se pueden representar hasta 16 señales binarias, puede usarse para almacenar un número cuya magnitud como máximo sería Número máximo en una Palabra = 216 1 65535
1
Sistema decimal. Es un sistema de numeración en el que las cantidades se representan utilizando como base el número diez, por lo que se compone de las cifras: cero (0), uno (1), dos (2), tres (3), cuatro (4), cinco (5), seis (6), siete (7), ocho (8) y nueve (9). Sistema hexadecimal. Sistema numérico en base 16, esto significa que contiene 16 símbolos únicos para representar datos: los números del 0 al 9 y las letras de la A a la F. Este sistema es útil porque puede representar cada byte (8 bits) con dos dígitos hexadecimales consecutivos. Esto permite a las personas leer números hexadecimales más fácilmente que los números binarios.
2
Conversión de sistema. Conversión de decimal a binario Para realizar la conversión de Decimal a Binario, se debe realizar lo siguiente: 1) Divida la cantidad decimal entre 2, de la división se obtienen dos números, uno llamado Residuo y otro llamado Cociente. 2) Con ambos realice una lista poniendo al lado izquierdo el Cociente y al lado derecho el Residuo. 3) Y así sucesivamente, hasta que el Cociente sea cero. 4) Para agrupar o contar la cantidad binaria resultante, comience de la parte inferior. Ejemplos 1: 164 = 10100100 Proceso:
División 164/2 82/2 41/2 20/2 10/2 5/2 2/2 1/2
Cociente 82 41 20 10 5 2 1 0
Residuo 0 0 1 0 0 1 0 1
LSB
MSB
Agrupe el residuo de Abajo hacia Arriba: 10100100 (Valor decimal convertido a Binario). Ejemplo 2: 1568 = 11000100000 Proceso:
División 1568/2 784/2 392/2 196/2 98/2 49/2 24/2 12/2 6/2 3/2 1/2
Cociente 784 392 196 98 49 24 12 6 3 1 0
Residuo: 0 0 0 0 0 1 0 0 0 1 1
Agrupe el residuo de Abajo hacia Arriba: 11000100000 (Valor decimal convertido a binario). 3
Ejemplo 3: 1111 = 10001010111 Proceso:
División 1111/2 555/2 277/2 138/2 69/2 34/2 8/2 4/2 2/2 1/2
Cociente 555 277 138 69 34 17 4 2 1 0
Residuo 1 1 1 0 1 0 0 0 0 1
Agrupe el residuo de abajo hacia arriba: 10001010111 (Valor decimal convertido a binario). Conversión de fracciones decimales a binario Para convertir un número decimal fraccionario a binario empezamos multiplicando dicho número por 2, después se multiplica cada parte fraccional resultante del producto por 2 hasta que el producto fraccionario sea 0, o se alcance el número deseado de posiciones decimales. Los dígitos acarreados, o acarreos, generados por las multiplicaciones dan lugar al número binario: El primer acarreo que se obtiene es el MSB El último acarreo obtenido es el LSB Ejemplo 4: Convertir a binario el número decimal fraccionario 0,364: 0,364 x 2 = 0,728 › MSB 0,728 x 2 = 1,456 0,456 x 2 = 0,912 0,912 x 2 = 1,824 0,824 x 2 = 1,648 0,648 x 2 = 1,296 0,296 x 2 = 0,592 0,592 x 2 = 1,184 0,184 x 2 = 0,368 0,368 x 2 = 0,772 0,772 x 2 = 1,544 0,544 x 2 = 1,088 › LSB Podríamos seguir hasta que la parte fraccional sea todo 0, o parar una vez se han obtenido el número de posiciones decimales deseadas (podríamos interpretar de esta última forma el ejemplo). Y de este modo el número decimal fraccionario 0,364, en binario es: 0,010111010011
4
Conversión de binario a decimal. Una determinada cifra, que se denominará número decimal, se puede expresar de la siguiente forma: n
No = (dígito)i * (base)i i= -d
Donde: base = 10 i = posición respecto a la coma d = n.o de dígitos a la derecha de la coma, n = n.o de dígitos a la derecha de la coma - 1, dígito = cada uno de los que componen el número La fórmula responde al Teorema Fundamental de la Numeración. El teorema fundamental de la numeración dice: “El valor en el sistema decimal de una cantidad expresada en otro sistema cualquiera de numeración, viene dado por la fórmula: ... + X4*B4 + X3*B3 + X2*B2 + X1*B1 + X0*B0 + X-1*B-1 + X-2*B-2 + X-3*B-3 + ...” donde X es el dígito y B la base. Ejemplo 5: Convertir de binario a decimal el número 10100100 1*27 + 0*26 + 1*25 + 0*24 + 0*23 + 1*22 + 0*21 + 0*20 = 164
Conversión de hexadecimal a binario. La transformación de una base a la otra se hace en forma directa dígito a dígito. Cada dígito hexadecimal será reemplazado por 4 dígitos binarios (4 por ser la potencia que relaciona ambas bases), según la tabla que tenemos a continuación. Hexadecimal 0 1 2 3 4 5 6 7
Binario 0000 0001 0010 0011 0100 0101 0110 0111
Hexadecimal 8 9 A B C D E F
Binario 1000 1001 1010 1011 1100 1101 1110 1111
5
Ejemplo 6:
Convertir a binario el número 5A8,39C16 5 0101
A 1010
8, 1000,
3 0011
9 1001
C 1100
5A8,39C16 = 10110101000,00111001112 Como se puede ver, los ceros al comienzo se han quitado, igual que los ceros que se hallan a la derecha de la coma (ya que no tienen ningún sentido). Conversión de binario a hexadecimal. En esta conversión se debe tener en cuenta cuatro símbolos binarios los que corresponde a un digito hexadecimal. Para realizar correctamente esta conversión el número de dígitos a la derecha de la coma decimal debe ser múltiplo de 4 si no lo fuera deberá agregarse al final del número tantos ceros como sea necesario. Idéntico caso será a la izquierda de la coma, en dicho caso los ceros se agregan al principio del número. Ejemplo 7: Convertir el binario 1010101011,00111 a hexadecimal. 0010 2
1010 A
1011, B,
0011 3
1000 8
Los (0) cero agregado al número son para permitir la correcta conversión. 1010101011,00111 2 = 2AB,38 (HEX) Conversión de decimal a hexadecimal. Para realizar la conversión de decimal a hexadecimal, se debe realizar lo siguiente: 1) Divida la cantidad decimal entre 16, de la división se obtienen dos números, uno llamado Residuo y otro llamado Cociente. 2) Con ambos realice una lista poniendo al lado izquierdo el Cociente y al lado derecho el Residuo. 3) Y así sucesivamente, hasta que el Cociente sea cero. 4) Para agrupar o contar la cantidad hexadecimal resultante, comience de la parte inferior. Ejemplo8: Convertir el número 250,25 a Hexadecimal Se toma la parte entera y se divide sucesivamente por el número decimal 16 (base) hasta que le cociente sea 0. Los números enteros resultantes de los cocientes, pasarán a conformar el número hexadecimal correspondiente, teniendo en cuenta que el sistema de numeración hexadecimal posee solo 16 símbolos, donde los números del 10 hasta el 15 tienen símbolos alfabéticos. La parte fraccionaria del número a convertir se multiplica por 16 (base) sucesivamente hasta que el producto resultante no tenga parte fraccionaria.
6
Al igual que en los sistemas anteriores, el número equivalente se forma, de la unión de los dos números equivalentes, tanto entero como fraccionarios, separados por un punto que establece la diferencia entre ellos. División 250/16 15/16
Cociente 15 0
Residuo 10 = A 15 = F
Parte fraccionaria: 0,25 x 16 = 4 Entonces, 250,25 (Dec.) = FA,4 (Hexadecimal) Conversión de Hexadecimal a decimal. Para la conversión se debe tener en cuenta al “Teorema Fundamental de Numeración” y considerar que el sistema hexadecimal tiene como base 16. Ejemplo 9: se puede convertir el número hexadecimal FA,4 a decimal de la siguiente manera: F*161 + A*160 + 4*16-1= 15*161 + 10*160 + 4*16-1= 250,25 Por lo tanto, FA,4 (hex.) = 250,25 (dec.) Operaciones binarias La Unidad Aritmético Lógica (ALU), en la CPU del procesador, es capaz de realizar operaciones aritméticas, con datos numéricos expresados en el sistema binario. Naturalmente, esas operaciones incluyen la adición, la sustracción, el producto y la división. Las operaciones se hacen del mismo modo que en el sistema decimal, pero debido a la sencillez del sistema de numeración, pueden hacerse algunas simplificaciones que facilitan mucho la realización de las operaciones. Suma Para sumar en el sistema binario sólo hay que recordar cuatro combinaciones posibles: +
0
1
0
0
1
1
1
0+1
Las sumas 0 + 0, 0 + 1 y 1 + 0 son evidentes: 0+0=0 0+1=1 1+0=1 7
Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda. Ejemplo 10: 010 +
2
101 --------111
+ 5 ------7
Ejemplo 11: 001101 + 100101 ----------110010
13
+ 37 ------50
Ejemplo 12: 1011011 + 1011010 -----------10110101
91
+ 90 ------181
Ejemplo 13: 110111011 + 100111011 -------------------1011110110
443
+ 315 -------758
8
Resta Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia. -
0
1
0
0
1
1
1+1
0
Las restas 0 - 0, 1 - 0 y 1 - 1 son evidentes: 0–0=0 1–0=1 1–1=0 La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Ejemplo 14: 111 101 -------010
7
5 -----2
Ejemplo 15: 10001 -
17
01010 ---------00111
10 ------07
Ejemplo 16: 11011001 -
217
10101011 --------------00101110
171 ------046
Ejemplo 17: 111101001 101101101 ---------------001111100
489
365 -------124
9
A pesar de lo sencillo que es el procedimiento de restar, es fácil confundirse. Tenemos interiorizado el sistema decimal y hemos aprendido a restar mecánicamente, sin detenernos a pensar en el significado del arrastre. Para simplificar las restas y reducir la posibilidad de cometer errores hay varias soluciones: a) Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide una resta larga en tres restas cortas: 100110011101 010101110010 010000101011
1001 0101 0100
1001 0111 0010
1101 0010 1011
b) Calculando el complemento a dos del sustraendo. El problema que se trata de resolver es la forma de expresar números negativos en el sistema binario. El complemento a uno de un valor binario. Se obtiene invirtiendo el estado de todas sus cifras, incluyendo los ceros a la izquierda hasta completar la capacidad del registro. Por ejemplo, el valor 10011 en un registro de 8 bits (cifras) será 00010011 y su complemento a uno será 11101100. El complemento a dos de un valor binario. Se obtiene sumando 1 al complemento a 1. Por ejemplo, el complemento a dos de 10011 (el mismo anterior) será 11101100 + 1 = 11101101. Cómo restar sumando. El complemento a dos de un número binario se puede considerar directamente su equivalente negativo. Por lo tanto, para hacer la resta A - B = ¿X? basta con calcular el resultado "X" (sin olvidar el tamaño del registro que se utilice) como: X = A + (complemento a dos de B) El tamaño de los registros es normalmente el número de bits del procesador de la máquina, actualmente 32 en la mayoría de los ordenadores y autómatas industriales. Ejemplos 18: Hagamos la siguiente resta, 91 – 46 = 45, en binario: 1011011 (minuendo) – 0101110 (Sustraendo) ------------0101101 (Diferencia) 10
Tiene alguna dificultad, cuando se acumulan los arrastres a la resta siguiente. Pero esta misma resta puede hacerse como una suma, utilizando el complemento a dos del sustraendo: a) Calculo del complemento a uno del sustraendo: 1010001 b) Caculo del complemento a dos del valor del punto a) 1010001 + 1 -----------01100010 c) Realizo la suma del minuendo y del complemento a dos del sustraendo: 1011011 + 1010010 ------------0101101 En el resultado de la suma nos sobra un bit, que se desborda por la izquierda. Pero, como el número resultante no puede ser más largo que el minuendo, el bit sobrante se desprecia. Ejemplo 19: Hagamos esta otra resta, 219 – 23 = 196, utilizando el complemento a dos: 11011011 (minuendo) 00010111 (sustraendo) -------------111000100 (diferencia) a) Cálculo del complemento a uno del sustraendo: 11101000 b) Cálculo del complemento a dos del valor del punto a) 11101000 + 1 -------------11101001
11
c) Realizo la suma del minuendo y del complemento a dos del sustraendo: 11011011 + 11101001 ------------111000100 Y, despreciando el bit que se desborda por la izquierda, llegamos al resultado correcto: 110001002 = 19610 Multiplicación La multiplicación en binario es más fácil que en cualquier otro sistema de numeración. Como los factores de la multiplicación sólo pueden ser CEROS o UNOS, el producto sólo puede ser CERO o UNO. En otras palabras, las tablas de multiplicar del cero y del uno son muy fáciles de aprender: x
0
1
0
0
0
1
0
1
Ejemplo 20: 110100010101 x 1101 -----------------------110100010101 000000000000 110100010101 110100010101 --------------------------1010101000010001
3349 x 13 --------10047 3349 ---------43537
12
División Igual que en el producto, la división es muy fácil de realizar, porque no son posibles en el cociente otras cifras que UNOS y CEROS. Ejemplo 21: Realizar la siguiente división 42 / 6 = 7, en binario: 42 = 101010 6 = 110 101010 |_110_ -110_ 111 1001 -110_ 0110 -110 000
(Dividendo) |_(Divisor)_ (Resto) (Cociente)
Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo número de cifras (100 entre 110, en el ejemplo). Si no puede dividirse, se intenta la división tomando un dígito más (1001 entre 100). Si la división es posible, entonces, el divisor sólo podrá estar contenido una vez en el dividendo, es decir, la primera cifra del cociente es un UNO. En ese caso, el resultado de multiplicar el divisor por 1 es el propio divisor. Restamos las cifras del dividendo del divisor y bajamos la cifra siguiente.
Definición de variables. Variables Las variables sirven para el intercambio de datos dentro de una sección, entre secciones distintas y entre el programa y el PLC. A las variables que se le asigna una dirección se le llama Located Variables. Pero, si no se le asigna ninguna dirección se habla de una Unlocated Variables. Located Variables Las Located Variables tienen asignada una dirección de memoria de señal (direcciones de referencia 0x, 1x, 3x, 4x). El valor de estas variables se almacena en la memoria de señal y se puede modificar online con el editor de datos de referencia. Para acceder a estas variables se puede utilizar su nombre simbólico o su dirección de referencia. Todas las entradas y salidas del PLC están conectadas a la memoria de señal. El acceso del programa a señales periféricas conectadas al PLC se efectúa sólo mediante Located Variables. Los accesos externos a través de las interfases Modbus o Modbus Plus del PLC, p. ej., por parte de sistemas de visualización, también son posibles mediante Located Variables.
13
Unlocated Variables A las Unlocated Variables no se les asigna ninguna dirección de memoria de señal. Por lo tanto, tampoco ocupan ninguna dirección de memoria de señal. El sistema almacena internamente el valor de estas variables, que se puede modificar con el editor de datos de referencia. A estas variables sólo se accede mediante su nombre simbólico. Las señales que no requieren acceso a la periferia, p. ej., resultados intermedios, marcas de sistema, etc., deberían declararse preferiblemente como Unlocated Variables. Comportamiento de arranque de las variables Al hablar del comportamiento de arranque de los PLC se distingue entre arranque en frío y en caliente: Arranque en frío Después de un arranque en frío (carga del programa con Online → Cargar) todas las variables (independientemente de su tipo) se ponen a "0" o, si lo hubiera, a su valor inicial. Arranque en caliente En el caso del arranque en caliente (detener y arrancar el programa o Online → Cargar las modificaciones en PLC) ambos comportamientos de arranque sirven para Located Variables/direcciones directas y Unlocated Variables: Located Variables/direcciones directas En un arranque en caliente todos los registros 0x, 1x y 3x se ponen a "0" o, en caso de haberlo, vuelven a su valor inicial. Una excepción a esto son las bobinas con retención. Las bobinas con retención conservan su valor actual (comportamiento de memorización). Los registros 4x conservan su valor actual (comportamiento de memorización).
Unlocated Variables En un arranque en caliente todas las Unlocated Variables conservan su valor actual (comportamiento de memorización).
14
Literales (Valores) Los literales sirven para dar un valor directo a las entradas de FFB, a las condiciones de transición, etc. La lógica del programa no puede sobrescribir estos valores (están protegidos contra escritura). Los valores de los literales pueden modificarse online. En el caso de los literales, se distingue entre literales genéricos y tipificados. La siguiente descripción es una visión general de los literales:
Literales genéricos Si no considera relevante el tipo de datos de un literal, indique solamente el valor para dicho literal. En este caso, Concept asigna automáticamente al literal un tipo de datos adecuado.
Literales Tipificados Si desea establecer usted mismo el tipo de datos de un literal, puede hacerlo con la siguiente construcción: "nombre del tipo de datos"#"valor del literal" por ej.: INT#15 (tipo de datos: entero, valor: 15), BYTE#00001111 (tipo de datos: Byte, valor: 00001111) REAL#23.0 (tipo de datos: Real, valor: 23.0)
Direcciones directas Las direcciones directas son rangos de memoria en el PLC. Se encuentran en la memoria de señal y pueden estar asignadas a módulos de entrada/salida. La indicación/visualización de direcciones directas puede hacerse en distintos formatos. El formato de visualización no influye en el formato de entrada, es decir, las direcciones directas se pueden introducir en cualquier formato. Son posibles los siguientes formatos de dirección: Formato estándar (400001) Justo detrás de la primera cifra (la referencia) está la dirección de cinco posiciones. Formato de separador (delimitador) (4:00001) La primera cifra (la referencia) se separa mediante dos puntos (:) de las siguientes cinco posiciones de la dirección. Formato compacto (4:1) La primera cifra (la referencia) se separa de la siguiente dirección mediante dos puntos (:) sin poner en la dirección los ceros a la izquierda. Formato IEC (QW1) En la primera posición hay un identificador conforme a IEC, seguido de la dirección de cinco posiciones: %0x12345 = %Q12345 %1x12345 = %I12345 %3x12345 = %IW12345 %4x12345 = %QW12345 Los valores de las direcciones directas se pueden modificar online con el Editor de datos de referencia
15
Cada dirección directa es una referencia que comienza por una clave que indica si se trata de una entrada o una salida o de un bit o una palabra Rango 0x = bits de salida/marca Rango 1x = bits de entrada Rango 3x = palabras de entrada Rango 4x = palabras de salida/marca En la asignación de los rangos de E/S se permiten las siguientes referencias: Referencias 3x para módulos de entrada analógicos Referencias 4x para módulos de salida analógica Referencias 3x o 1x para módulos de entrada digital Referencias 4x o 0x para módulos de salida digital Referencias 3x o 1x para módulos de experto (entrada) Referencias 0x o 4x para módulos de experto (salida) Editor de Variables La declaración de variables sirve para el intercambio de datos en el programa de aplicación. En este sentido, se pueden dirigir las variables (located y variables unlocated) y/o asignar un valor a las constantes. Las variables o direcciones directas se asignan mediante la dirección de la Dotación E/S y se pueden utilizar en la programación con el nombre simbólico (variable) o con la dirección directa. Aquí se intercambian valores entre diferentes secciones a través de las variables o direcciones directas. Declarar variables En la declaración de variables se determina el tipo de datos, la dirección y el nombre simbólico. A través de la dirección se definen las entradas (1x/3x), o bien, las salidas (0x/4x), las cuales están asignadas con la selección del tipo de datos a la función correspondiente, o bien, a los módulos de función correspondientes en el programa de aplicación. Adicionalmente se puede asignar a cada variable un valor de inicio, el cual se transfiere durante la primera carga al PLC. Existe la posibilidad de escribir para cada variable o dirección directa un comentario que permita reconocer la asignación de una función. Si se modifican, borran o añaden estas declaraciones, se identifica este estado de modificación mediante determinados símbolos en la primera columna.
16
Tipo de datos Un tipo de datos es una categoría de datos con nombre que se distingue por un conjunto de valores, una forma de indicar dichos valores y una serie de operaciones implícitas que pueden interpretar y manipular los valores. Los tipos de datos usados habitualmente por nosotros son: BOOL: indica el tipo de datos "booleario". La longitud de los elementos de datos es de 1 bit (en la memoria se guarda en 1 byte). El rango de valores para las variables de este tipo de datos es 0 (FALSE) y 1 (TRUE). BYTE: indica el tipo de datos "secuencia de bits 8". La entrada se efectúa en forma de literal de base 2, literal de base 8 o literal de base 16. La longitud de los elementos de datos es de 8 bits. A este tipo de datos no se le puede asignar un rango de valores numérico. INT: representa el tipo de datos "número entero (integer)". La entrada se efectúa en forma de literal entero, literal de base 2, literal de base 8 o literal de base 16. La longitud de los elementos de datos es de 16 bits. El rango de valores para las variables de este tipo de datos va desde -2 exp (15) hasta 2 exp (15) -1. DINT: representa el tipo de datos "número entero de longitud doble (double integer)".La entrada se efectúa en forma de literal entero, literal de base 2, literal de base 8 o literal de base 16. La longitud de los elementos de datos es de 32 bits. El rango de valores para las variables de este tipo de datos va desde -2 exp (31) hasta 2 exp (31) -1.
WORD: representa el tipo de datos "secuencia de bits 16". La entrada se efectúa en forma de literal de base 2, literal de base 8 o literal de base 16. La longitud de los elementos de datos es de 16 bits. A este tipo de datos no se le puede asignar un rango de valores numérico.
17