PRÁCTICA V
Se dispone de una máquina (M1) donde disponemos de un PLC S7-314. Otra de las máquinas (M2) dispone de un módulo de 16 E/S digitales, y un módulo de E/S analógicas, que tendremos que controlar, y otra máquina (M3) dispone de un PLC- OMRON CQM1H.
Se pretende que el sistema disponga de un pulsador de marcha del sistema (PM), que habrá que pulsar para habilitar el funcionamiento del sistema, otro de paro para interrumpir el funcionamiento (PP) y cinco pulsadores distintos (P1 a P5) que permiten las diversas maniobras del sistema. Todas estas señales serán entradas de la máquina M2
Al activar cada pulsador (P1 a P5) se activarán tres salidas distintas en la M2 y otras tres en la M3. Las salidas de la M2 como de la M3 se activarán y permanecerán activadas siempre que el módulo de analógicas, detecte una tensión de entrada superior a 5 Voltios. Cuando esta tensión sea inferior, se desactivarán las salidas.
A su vez, las salidas de la M3, también se podrán desactivar mediante pulsadores (5 entradas distintas para cada grupo de salidas) que permitirán desconectar en cada momento las salidas de la M3 dejando en funcionamiento las de la M2. Estos pulsadores están situados en la M2.
ESCLAVOS
ET200L
Ya explicado en la entrada de la práctica I, aquí.
CQM1H-PRT21
Ya explicado en la entrada de la práctica I, aquí.
CONVERTIDOR A/D
Se trata de un esclavo para profibus DP modular, conversor de señales analógicas a digitales.
Esta formador por tres módulos:
IL PB BK DP/V1-PAC --> Se trata del módulo marcado en el dibujo como 1. Es el encargado de la comunicación, ya que alberga el conector hembra DB9 y los micro interruptores para la selección de la dirección física en la red Profibus, y de la alimentación de este módulo y el resto. Funciona con una tensión de +24V de CC.
- IB IL A0 2/U/BP-ME --> Es el módulo marcado como 2 en el dibujo. Se trata de un módulo para 2 salidas analógicas de 0 a 10V o de -10V a +10V. Tiene una resolución de 13bits, por lo tanto para la transferencia de información necesita 1 Word por salida, y como tiene 2 salidas, enviará y recibirá 2 Words.
- IB IL AI 2/SF-ME --> Se trata del módulo marcado como 3 en el dibujo. Es un módulo que permite conectar 2 entradas analógicas de 0-20mA, 4-20mA, -20mA a +20mA, 0-10V, y de -10V a +10V. Utiliza 1 Word para cada entrada, por tanto envía y recibe 2 Words.
**Al utilizar esclavos modulares como el que tenemos en esta práctica es muy importante el orden en el que están dispuestos los módulos ya que sino probablemente vayamos a buscar información al lugar erróneo de la memoria si esta no esta mapeada de forma correcta**
Para la realización de la práctica sólo hemos utilizado la primera entrada analógica del módulo IB IL AI 2/SF-ME para ver si tenemos una tensión superior a +5V de CC como indica el enunciado de la práctica.
ESQUEMA DE TRANSMISIÓN ENTRE EQUIPOS
- Al maestro se le ha asignado la dirección 2, que es la primera disponible en la red, ya que la 0 y la 1 están reservadas por el sistema. Para el módulo ET200L se le ha asignado la 3 por ser la siguiente libre disponible para ir por orden, al módulo IL PB BK DP/V1-PAC la dirección 4 y al Omron CQM1H la dirección 5 configurado en modo Intel y con 2 Words para entrada y salida de datos.
- Al tener 3 esclavos deberemos de crear la conexión de esta manera con los interruptores de finalización de BUS a ON en el Maestro y en el Omron por ser este el último esclavo del BUS.
FLUJO DE TRANSMISIÓN DE DATOS
DISTRIBUCIÓN DE DATOS EN LA MEMORIA DEL MAESTRO
Para esta práctica el módulo CP342-5 escribirá y leerá los datos en la siguiente área de memoria y con la siguiente distribución:
Como hemos mencionado anteriormente es muy importante que coincida el orden de colocación de los módulos en los esclavos ya que sino habrá errores en la hora del mapeado de la memoria. En nuestro IL PB BK DP/V1-PAC primero tiene colocado el módulo de las entradas analógicas IB IL AI y después tiene colocado el módulo para las salidas analógicas IB IL AO por lo que deberemos configurarlo exactamente igual en el apartado de HW del maestro para que se cumpla este mapeo de memoria.
Recordemos que ambos módulos IB IL AI e IB IL AO usan un word por entrada/salida y como tienen dos entradas y salidas respectivamente enviarán y recibirán 4 bytes.
La ET200L y el Omron CQM1H se comportan como hemos comentado en la entrada del blog "Profibus DP, Práctica I". La ET200L envía y recibe 2 Bytes y el CQM1H envía y recibe 2 Words (4 Bytes)
Como hemos mencionado anteriormente es muy importante que coincida el orden de colocación de los módulos en los esclavos ya que sino habrá errores en la hora del mapeado de la memoria. En nuestro IL PB BK DP/V1-PAC primero tiene colocado el módulo de las entradas analógicas IB IL AI y después tiene colocado el módulo para las salidas analógicas IB IL AO por lo que deberemos configurarlo exactamente igual en el apartado de HW del maestro para que se cumpla este mapeo de memoria.
Recordemos que ambos módulos IB IL AI e IB IL AO usan un word por entrada/salida y como tienen dos entradas y salidas respectivamente enviarán y recibirán 4 bytes.
La ET200L y el Omron CQM1H se comportan como hemos comentado en la entrada del blog "Profibus DP, Práctica I". La ET200L envía y recibe 2 Bytes y el CQM1H envía y recibe 2 Words (4 Bytes)
DESCRIPCIÓN DEL PROCESO DE COMUNICACIÓN
- La ET200L envía al maestro 2 Bytes de información con las entradas que han sido pulsadas y el maestro recibe la información en el MW14.
- A su vez el maestro recibe un valor en hexadecimal en MW 16, que corresponde al valor del voltaje que está leyendo el conversor A/D en su entrada 1.
- Si se cumplen los requistos para activar los distintos grupos de salidas en la ET200L y en el CQM1H el maestro pondra en MW0 y MW10 los valores correspondientes para activar las salidas de ambos esclavos.
Como no disponemos de suficientes pulsadores libres en el laboratorio de prácticas para poder realizar por completo el enunciado usaremos solo 8 de ellos de la siguiente forma:
- Pulsador de marcha --> MW14 = 0000 0001 0000 0000 (256)
- Pulsador de paro --> MW14 = 0000 0010 0000 0000 (512)
- Pulsador 1, activa grupo de salidas 1 --> MW14 = 0000 0100 0000 0000 (1024)
- Pulsador 2, activa grupo de salidas 2 --> MW14 = 0000 1000 0000 0000 (2048)
- Pulsador 3, activa grupo de salidas 3 --> MW14 = 0001 0000 0000 0000 (4096)
- Pulsador 4, desactiva grupo de salidas 1 en el Omron --> MW14 = 1000 0000 0000 0000 (-32768)
- Pulsador 5, desactiva grupo de salidas 2 en el Omron --> MW14 = 0000 0000 0000 0001 (1)
- Pulsador 6, desactiva grupo de salidas 3 en el Omron --> MW14 = 0000 0000 0000 0010 (2)
El valor digital de los 5 voltios lo capturamos, como ya hemos dicho, en el MW16 = 15110(hex), cualquier valor que sea superior a este permitirá que el sistema funcione correctamente.
CONFIGURACIÓN DEL MAESTRO S7-CPU314IFM
Obviaremos como configurar los esclavos ET200L y CQM1H por haberlo hecho en entradas anteriores de este mismo blog y nos centraremos en configurar el módulo IL PB BK DP/V1-PAC que lo podremos encontrar en "Profibus_DP --> Otros aparatos de campo -->I/O --> Phoenix Contact --> Inline" De los dos módulos principales que aparecen elegimos el que tiene el parámetro DIP8=0 y lo arrastramos a la red y le asignamos la dirección 4:
Ahora tenemos que añadir los dos módulos que contiene arrastrándolos desde el menú lateral a los slots de este esclavo, para ello buscaremos los módulos IB IL AI 2/SF-ME e IB IL A0 2/U/BP-ME y los añadiremos por ese orden, ya que como hemos dicho en varias ocasiones es muy importante el orden en el que se configuran y que viene determinado por el orden que están conectados en el esclavo físico, ya que sino dará error de configuración el bus y tampoco podremos acceder de forma correcta a los datos, ya que iremos a buscarlos a una región de la memoria que no se corresponde:
- Como se puede apreciar los hemos colocado por orden, en el slot 0 el módulo de entradas analógicas que recibe y envia 4 bytes (2 words, un word por cada entrada que tiene fisicamente) y que corresponden con la parte de la memoria MB2 a MB5 para recibir los datos que es la parte que nos interesa, ya que solo queremos leer el MW2 que es la entrada que nos indicará si tenemos o no un voltaje superior a los +5V.
- Una vez finalizada la parte de configuración del HW procedemos a salvar y ya podemos escribir el programa.
- Podemos observar como la dirección CPLADDR sigue siendo la misma que en las prácticas anteriores ya que el módulo CP342-5 lo hemos vuelto a colocar en el slot 4.
- Enviamos 14 Bytes contando desde el M0.0.
- Recibimos 14 Bytes contando desde el M14.0.
- Vamos a detallar en primer lugar el programa escrito en el maestro del sistema para la realización de esta práctica:
- Si se actúa sobre el pulsador de marcha en la ET200L recibiremos en el MW14 el valor 256, lo que hace el comparador es verificar que lo que llega de la ET200L es el valor 256 y si es verdadero se setea la marca M80.0 para saber que se ha actuado sobre el pulsador de habilitación.
- Si se actúa sobre el pulsador de paro del sistema en la ET200L en el MW14 recibimos el valor 512, si la comparación da como resultado verdadero se para el sistema, reseteando todas las marcas intermedias que se han utilizado en el programa y mandando sendos 0's a la ET200L para desactivar todas sus salidas y al Omron para que haga lo mismo con las suyas. Esto devuelve el sistema al estado inicial.
- En este segmento de código leemos el valor de la primera entrada analógica del módulo IB IL AI 2/SF-ME que recibimos a través del CP342-5 y se escribe en la MW16. Si ese valor es igual o superior a 15110(hex) activamos una bobina en la marca M70.0, esta marca solo estará activa mientas se cumpla que MW16>=15110(hex) lo que hace que sólo este activa cuando recibimos un voltaje superior a +5V.
- Si esta condición no se cumple el resto del programa no hará nada aunque se actúe sobre los pulsadores ya que la marca M70.0 no estará activa y por tanto aunque esté habilitado el sistema mediante el pulsador de marcha el sistema no variaría ni permitirá que se activen o desactiven grupos de salidas ya que no se cumplen ambas condiciones.
- Si durante la ejecucción normal del programa esta tensión fuese inferior a +5V se congelaría el estado de las salidas y no se podrían modificar.
- Estos tres segmentos se encargan de activar cada uno un grupo de 3 salidas distintas, por ello si la marca M80.0 (se ha actuado sobre el pulsador de marcha) y la marca M70.0 (el voltaje es superior a +5V) esta activas cada segmento con su comparador se encarga de comprobar que grupo se desea activar desde la ET200L, para ello se compara el valor que nos llega y que tenemos disponible en la MW14 y se setea el grupo correspondiente.
- Ahora hay que estudiar las posibles combinaciones que se pueden dar a la hora de actuar sobre los tres pulsadores que activan las tres salidas por grupo. En total tenemos 8 posibles combinaciones de las cuales desechamos la combinación inicial en la que todos los pulsadores de los grupos estar sin pulsar ya que es la combinación inicial de la que partimos.
- Si se ha activado el pulsador del grupo 1, pero no el del 2 o el 3 se cargará el número 7(000-000-111), que en binario representa las tres primeras entradas que queremos activar, en el MW0 para que le llegue ese valor a la ET200L y active sus tres primeras salidas y también lo cargaremos en el MW10 para que el CQM1H lo reciba y active tres de sus salidas.
- Se trata de ir jugando con el número que mandamos en binario que representa las salidas que queremos activar en los esclavos agrupando los bits de tres en tres (000-000-000) siendo el grupo de la izquierda de todo las salidas más bajas
- Si se ha activado el pulsador del grupo 1 y del 2, pero no el del 3 se cargará el número 63(000-111-111) en el MW0 para que le llegue ese valor a la ET200L y active sus seis primeras salidas y también lo cargaremos en el MW10 para que el CQM1H lo reciba y active seis de sus salidas.
- Si se ha activado el pulsador del grupo 1 y del 3, pero no el del 2 se cargará el número 455 (111000111) en el MW0 para que le llegue ese valor a la ET200L y active sus tres primeras salidas y las tres últimas, y también lo cargaremos en el MW10 para que el CQM1H lo reciba y active sus tres primeras salidas y las tres últimas salidas.
- Si se ha activado el pulsador del grupo 1, 2 y 3 se cargará el número 511 (111111111) en el MW0 para que le llegue ese valor a la ET200L y active sus 9 primeras entradas, y también lo cargaremos en el MW10 para que el CQM1H lo reciba y active sus nueve primeras salidas.
- El resto de combinaciones de los tres grupos se basan en el mismo concepto, ver que grupos se han activado y esos grupos que salidas activan y traducir ese número a binario y mandarlo a los esclavos para que activen sus salidas correspondientes:
- Ahora vamos a programar la parte que permite que mediante 3 pulsadores en la ET200L se puedan desactivar los grupos activos en el CQM1H:
- Si se ha actuado sobre el pulsador de marcha (M80.0) y el voltaje sigue siendo superior a +5V (M70.0) si en la ET200L se actúa sobre el pulsador 6, 7 u 8, se reseteará el grupo que ha sido selecciónado, con lo que cambiará el valor que se carga en el CQM1H produciendose así la desactivación del grupo correspondiente de salidas desactivadas gracias a que sabemos que valor transmite la ET200L en la MW14 y podemos "cazarlo" con el comparador y actuar en consecuencia.
- El programa para el funcionamiento en el Omron sólo consta de un segmento de la forma que se ha programado el maestro:
- Con un interruptor que está siempre a ON en cada ciclo de scan se pasa lo que le llega por la red Profibus, recibido en el canal 5 a la salida del PLC, canal 100.
- Como estamos pasando 2 words en formato Intel la información irá en el byte de numeración más baja de los 4 que recibe.
- Cuando realice el truncamiento para mostrar 16 bits, que es lo máximo admisible por canal, cuando realmente le mandamos 32bits cogerá y truncara quedandose con los dos bytes más pequeños que es donde realmente está la información.
- Y como le hemos mandado una secuencia del estilo 000-111-111 cada bit corresponde a una salida del CQM1H, así que activará y desactivará sus salidas en función de las cadenas que le lleguen como hemos explicado en la parte del programa del maestro.
Si todo lo hemos conectado correctamente, cargado los esclavos desde el botón de cargar del maestro y cargado el programa en el esclavo CQM1H el funcionamiento del sistema deberá ser el descrito anteriormente y podremos ver como cuando se habilita el sistema y el voltaje que medimos es superior a +5V si pulsamos en los interruportes de la ET200L se activarán grupos de salidas en la propia ET200L y en el CQM1H y que incluso tenemos la opción mediante otros tres pulsadores de desactivar los grupos de salida del esclavo CQM1H.
Muy bien este post. Has completado un trabajo estupendo.
ResponderEliminarFelicidades.
Antonio Alhambra
Hola a todos, buenos dias. Por suerte hoy he descubierto este blog tan interesante. Mi nombre es Abel y estoy iniciandome en el mundo de la automatización. He estado viendo tus prácticas sobre Profibus y Profinet, muy bien explicadas por cierto, pero sigo teniendo una enorme duda sobre el tema de envío y recepción de datos que no me deja avanzar en mi aprendizaje.
ResponderEliminarHe visto que usas por ejemplo, en Profibus los bloques DP_SEND Y DP_RECEIVE. He visto que existen mas bloques para enviar o recibir datos tales como el PUT, GET etc y ademas dependiendo de como sea el plc maestro, el plc esclavo, las ET´s etc, si llevan puerto integrado o tienen una CP externa se deben usar unas instrucciones u otras.
Quiero decir con esto que todavía no tengo claro que instrucciones puedo usar para enviar o recibir datos dependiendo de como tenga configurado el hardware tanto en Profibus como en Profinet.
¿Podrias aclararme esto?, como te he comentado antes esta duda no me esta dejando seguir avanzando.
Muchas gracias por todo.
Abel