Sie sind auf Seite 1von 46

Curso: COMUNICACIN DE DATOS Y

REDES INDUSTRIALES
UNIVERSIDAD NACIONAL DE
INGENIERA

Integrantes:
- Gmez Villanueva Kevin

; 20121330F

Nez Varillas Jean Pierre ; 20130108K

Arellano Ponte Jhovar

Rimac, 5 de Junio del 2016

; 20147002F

GUA PARA LA
IMPLEMENTACIN DE
REDES INDUSTRIALES
HACIENDO USO DEL TIA
PORTAL V13.

1. GUA DE IMPLEMENTACIN PROFINET EN TIA PORTAL


Paso 1) Crear Proyecto nuevo

Paso 2) Agregamos el dispositivo (Hardware)

Paso 3) Escogemos una fuente de alimentacin de 5 Amperios

Paso 4) Agregamos un mdulo de entradas y salidas digitales de 16


canales

Paso 5) Realizamos el mismo procedimiento para otro Hardware y


asignamos el nombre de maestro y esclavo a los dos dispositivos
creados

Paso 6) Vamos a Vista de Redes y configuramos la red, escogemos


Conexin S7 y unimos los puertos de ETHERNET

Paso 7) Configurar las IP del maestro y del esclavo verificando que no


sean las mismas

Paso 8) Agregamos un nuevo bloque, bloque de datos que contendr


todos los datos enviados por el maestro

Paso 9) vamos a Main

Paso 10) Programamos el OB1 del maestro, son los contactos de las
entradas digitales que nos van a activar o desactivar los datos a ser
enviados remotamente

Paso 11) Repetimos el proceso para todas las entradas

Paso 12) Se configuran los bloques de programa para el esclavo,


creamos un bloque de datos que contendr todos los datos que va a
recibir el esclavo

Paso 13) Programamos el OB1 del esclavo con una serie de funciones
para dar una serie de pulsos para que se actualicen los bloques GET

que son los que permiten la comunicacin va PROFINET entre los


dos PLCs

Paso 14) Colocamos el bloque GET, para la recepcin de datos que


nos permitir comunicarnos va PROFINET entre el Maestro y el
Esclavo

Paso 15) Colocamos como Interlocutor o Partner al maestro y los


parmetros principales a modificar sern: el parmetro ADRESS que
es el puntero de memoria remota del PLC maestro, el parmetro RD
que es el puntero de memoria del PLC Esclavo donde se guardar el
dato recibido, el parmetro REQ que es la seal que permite que se
ejecute la comunicacin y el parmetro ERROR que se pone en 1
lgico si hay un error en la comunicacin y en 0 si es exitosa.

Paso 16) Realizamos la misma configuracin hasta el segmento 13


(debido a que en este segmente se agotar el nmero de datos
previamente configurados)

Paso 17) Finalmente, colocaremos como contactos abiertos los datos


recibidos por el esclavo desde el maestro de la base de datos local a
las salidas digitales del Esclavo

Paso 18) Repetimos para los siguientes datos

Paso 19) Compilamos el Maestro y verificamos que no hayan errores

Paso 20) Por ltimo, compilamos el esclavo y verificamos que no


hayan errores

2. GUA DE IMPLEMENTACIN PROFIBUS EN TIA PORTAL


Como configurar la comunicacin dentro de una red Profibus, con un maestro
Profibus definido y varios esclavos dentro de la red del PLC y la pantalla.

Establecer la comunicacin Profibus en TIA Portal.


Para establecer la comunicacin Profibus en TIA Portal debemos rellenar la
configuracin de conexiones dentro del proyecto de TIA Portal.

Conexiones en TIA Portal.

Una conexin Profibus en la que existen un maestro y una serie de esclavos


Profibus que forman la red de conexin. Esto significa que cada estacin va a
tener una direccin Profibus, que se debe conocer para poder establecer
comunicacin Profibus entre todas las estaciones. Para ello debemos fijarnos en el
proyecto Step 7 donde en la parte hardware se averigua qu nmero de
estaciones estn asignadas.

Estaciones Profibus definidas en Step 7.

Conexiones en TIA Portal para la comunicacin Profibus.


Como se vio detalladamente los campos a rellenar dentro de la pestaa de
conexiones, se va a pasar a rellenar los campos necesarios para Profibus.

Nombre de la conexin.
Le damos un nombre aleatorio e identificativo para la comunicacin Profibus entre
nuestra HMI y el PLC.

Establecer nombre a la conexin de Profibus entre HMI y PLC.

Driver de comunicacin.
Nos da la opcin de seleccionar nuestro dispositivo de una lista desplegable
donde podemos encontrar todos los autmatas posibles para la conexin.
Seleccionaremos un S7-300 ya que el proyecto de Step 7 engloba esta CPU.

Seleccionar la CPU que tenemos en nuestra red Profibus.

Interfaz de conexin entre PLC y HMI.


Nos da dos opciones de seleccin, una que es para una conexin Ethernet y la
otra que se denomina 1FB1 B, que ser la que debemos seleccionar para la red
Profibus.

Seleccionar la interfaz para la comunicacin Profibus.

Establecer los puntos de acceso para HMI y PLC.


A continuacin debemos definir las caractersticas para la comunicacin Profibus para el panel
de operador, para la red y para el controlador o PLC.

Para el panel de operador seleccionamos una velocidad de transferencia que


deber ser la misma que la que hayamos escogido en la red en el proyecto de

Step 7, segn la figura:

Propiedades de la red DP en el proyecto de Step 7.

Una vez sabemos la velocidad establecida en Step 7, debemos colocar la misma


para la pantalla, en este caso velocidad de 1,5 Mbit/s para la red Profibus DP.
Asimismo, hay que establecer un nmero de direccin Profibus DP para la
pantalla, siempre observando de no utilizar un nmero que ya exista en la red. En
nuestro caso vamos a utilizar la nmero 1, ya que est libre en la red (ver
imgenes de Step 7 ms arriba donde se ven las direcciones del maestro y
esclavos).

Campos a rellenar para el panel de operador para una red Profibus.

Los siguientes campos a rellenar son la Red y el Controlador, donde indicaremos


el perfil de la red, que en nuestro caso ser una red de Profibus DP, con una
estacin ms alta de 31, ya que solamente tenemos 2 esclavos y un maestro, por
tanto no es preciso colocar un valor ms alto. El nmero de maestros es 1, que
como habamos comentado, ser la CPU. En cuanto a controlador, debemos de
colocarle la direccin que tenga en el proyecto de Step 7, que si vemos en las
imgenes de Step 7 ms arriba, veremos que se le ha asignado una direccin DP
nmero 2.

Par
metros para una comunicacin Profibus entre HMI y PLC.

Y con estos parmetros ya estara establecida la comunicacin entre un HMI y un


PLCpara una red Profibus, siempre teniendo en cuenta de no solapar ninguna
direccin dentro la red, es decir, que siempre, cada estacin (PLC, HMI, esclavo 1,
esclavo 2) debe tener un nmero diferente.

3. GUA DE IMPLEMENTACIN MPI EN TIA PORTAL

GENERALIDADES
El pase de mensajes es un modelo de comunicacin ampliamente usado en
computacin paralela. En aos recientes se han logrado desarrollar aplicaciones
importantes basadas en este paradigma. Dichas aplicaciones (incluyendo algunas
del dominio pblico) han demostrado que es posible implementar sistemas
basados en el pase de mensajes de una manera eficiente y portable. El
crecimiento en el volumen y diversidad de tales aplicaciones originaron la
necesidad de crear un estndar, es as como surge MPI o Message Passing
Interface.
OBJETIVOS DE MPI
De manera simple, el objetivo de MPI es desarrollar un estndar para ser
ampliamente usado que permita escribir programas usando pase de mensajes.
Por lo tanto, la interface debera establecer un estndar prctico, portable,
eficiente y flexible.

Disear una API (Application Programming Interface).


Hacer eficiente la comunicacin.
Permitir que las aplicaciones puedan usarse en ambientes heterogneos.
Soportar conexiones de la interface con C y Fortran 77, con una semntica

independiente del lenguaje.


Proveer una interface de comunicacin confiable.
CARACTERISTICAS
a) Generales
Los comunicadores combinan procesamiento en contexto y por
grupo para seguridad de los mensajes.
Seguridad en la manipulacin de aplicaciones con hebrado.
b) Manejo de ambiente. MPI incluye definiciones para:

Temporizadores y sincronizadores.
Inicializar y finalizar.
Control de errores.
Interaccin con el ambiente de ejecucin.

c) Comunicacin punto a punto:


Heterogeneidad para buffers estructurados y tipos de datos
derivados.
Varios modos de comunicacin
d) Comunicaciones colectivas
Capacidad

de

manipulacin

de

operaciones

colectivas

con

operaciones propias o definidas por el usuario.


Gran nmero de rutinas para el movimiento de datos.
Los subgrupos pueden definirse directamente o por la topologa.
e) Topologas por procesos:
Soporte incluido para topologas virtuales para procesos (mallas y grafos).

TAMAO DE MPI
El estndar es extenso en cuanto al nmero de rutinas que se especifican;
contiene alrededor de 129 funciones muchas de la cuales tienen numerosas
variantes y parmetros. Para aprovechar las funcionalidades extendidas de MPI se
requieren muchas funciones. Esto no implica una relacin directamente
proporcional entre la complejidad y el nmero de funciones; muchos programas
paralelos pueden ser escritos usando slo 6 funciones bsicas. Sin embargo, MPI
permite flexibilidad cuando sea requerida, adems de que no se debe ser un
experto en todos los aspectos de MPI para usarlo satisfactoriamente. En esta
Introduccin a MPI solo se cubrir algunas de las funciones usualmente ms
usadas.

ELEMENTOS BSICOS DE LA PROGRAMACIN CON MPI


Uno de los objetivos de MPI es lograr portabilidad del cdigo fuente. Por lo tanto,
un programa escrito en MPI no debe requerir cambios en el cdigo fuente cuando
sea migrado de un sistema a otro siempre y cuando cumpla con los estndares del
lenguaje base. Explcitamente el estndar MPI no especfica como un programa es
arrancado o que debe hacer el usuario con su ambiente para lograr ejecutar un
programa MPI. Sin embargo, una implementacin puede requerir cierta
configuracin previa antes de poder ejecutar llamadas a rutinas de MPI. Para esto,
MPI incluye una rutina de inicializacin MPI_Init
Paralelamente existe la rutina MPI_Finalize que permite purgar o eliminar todos
los estados de MPI. Una vez que esta rutina es llamada ninguna otra rutina (ni
siquiera MPI_Init) puede ser llamada. El usuario debe asegurarse de que todas las
acciones Fpendientes sean completadas antes de llamar a MPI_Finalize.
A continuacin se muestra ejemplos bsicos de programacin de un MPI en TIA
PORTAL v13, este programa nos presenta una interfaz apropiada para realizar la
programacin adecuada de redes y comunicaciones.

a) Funcin para iniciar MPI


MPI_Init()
Inicia el computo
( argc y argv solo son requeridos en C )
int MPI_Init(int *argc, char ***argv)
MPI_INIT(IERROR)
INTEGER IERROR

b) Funcin para finalizar MPI


MPI_Finalize()
Finaliza el computo
int MPI_Finalize(void)
MPI_FINALIZE(IERROR)
INTEGER IERROR

c) Programa bsico en MPI


#include <stdio.h>
#include <mpi.h>
int main (int argc, char** argv)
{
MPI_Init(&argc, &argv);
printf("Hola Mundo!\n");
MPI_Finalize();
}
program main
include 'mpif.h'
integer ierr
call MPI_INIT( ierr )
print *, 'Hola Mundo!'
call MPI_FINALIZE( ierr )
end

MIDIENDO EL TIEMPO
Medir el tiempo que dura un programa es importante para establecer su eficiencia
y para fines de depuracin, sobre todo cuando ste es paralelo. Para esto MPI
ofrece las funciones MPI_Wtime y MPI_Wtick. Ambas proveen alta resolucin y
poco costo comparados con otras funciones similares existentes en POSIX,
Fortran, etc.

MPI_Wtime devuelve un punto flotante que representa el nmero de segundos


transcurridos a partir de cierto tiempo pasado, el cual se garantiza que no cambia
durante la vida del proceso. Es responsabilidad del usuario hacer la conversin de
segundos a otras unidades de tiempo: horas, minutos, etc.
MPI_Wtick permite saber cuntos segundos hay entre tics sucesivos del reloj. Por
ejemplo, si el reloj esta implementado en hardware como un contador que se
incrementa cada milisegundo, entonces MPI_Wtick debe devolver 10-3.
a) Medir el tiempo usando MPI_Wtime
MPI_Wtime()
Retorna el nmero de segundos transcurridos a partir de
cierto tiempo pasado
double MPI_Wtime(void)
DOUBLE PRECISION MPI_WTIME()
b) Medir el tiempo usando MPI_Wtick
MPI_Wtick()
Retorna la resolucin

de

MPI_Wtime

en

segundos
double MPI_Wtick(void)
DOUBLE PRECISION MPI_WTICK()

En el software se configura en las ventanas que aparecen seleccionadas para


medir el tiempo.

COMUNICACIN PUNTO A PUNTO


Lo que se conoce, en MPI, como comunicacin punto a punto es el mecanismo
bsico de transferencia de mensajes entre un par de procesos, uno enviando, y el
otro, recibiendo. La mayora de los constructos de MPI estn construidos
alrededor de operaciones punto a punto; por lo tanto, esta seccin es fundamental
para el aprendizaje y uso de MPI.
MPI provee de un conjunto de funciones de envo y recepcin de mensajes que
permiten la comunicacin de datos de cierto tipo con una etiqueta (tag) asociada.
El tipo de datos del contenido de los mensajes se hace necesario para dar soporte
a la heterogeneidad. La informacin del tipo es utilizada para realizar las
conversiones en la representacin cuando se envan datos de una arquitectura a
otra. Mientras que, la etiqueta del mensaje permite, del lado del receptor,
seleccionar un mensaje en particular si as lo desea.

Envo y recepcin de mensajes


El envo y recepcin de un mensaje involucra el intercambio de informacin entre
procesos. Para proveer un mecanismo de transferencia de mensajes debe haber

alguna manera de dar respuesta a las siguientes preguntas: a quin se envan


los datos?, qu es lo que se enva? y cmo hace el receptor para identificar el
mensaje?
Los aspectos que MPI provee para el envo de datos y ganar portabilidad son los
siguientes:
a) Especificacin de los datos a enviar con tres campos: direccin de inicio,
tipo de dato y contador, donde tipo de dato puede ser:

Elemental: Todos los tipos de datos de C y Fortran (Tablas 1 y 2).


Arreglos continuos de tipos de datos.
Bloques dispersos de tipos de datos.
Arreglos indexados de bloques de tipos de datos.
Estructuras generales

b) Los tipos de datos son construidos recursivamente.


c) Las especificaciones de tipos de datos permiten

comunicaciones

heterogneas.
d) Eliminacin de la longitud en favor del contador.
El software TIA PORTAL v13 posee una interfaz que permite simular sistemas
SCADA en los cuales se visualiza la comunicacin que realiza de envo y
recepcin de datos.

COMUNICACIONES COLECTIVAS

En ciertas aplicaciones se requiere enviar un conjunto de datos a mltiples


procesos o recibir en un nico proceso datos de varios remitentes. Las
comunicaciones colectivas permiten la transferencia de datos entre todos los
procesos que pertenecen a un grupo especfico (el tratamiento de los grupos se
estudiar posteriormente). En este caso, no se usan etiquetas para los mensajes,
estas se sustituyen por comunicadores.
Las operaciones colectivas de MPI pueden ser clasificadas en tres clases:
Sincronizacin. Barreras para sincronizar.
Movimiento (transferencia) de datos. Operaciones para difundir, recolectar
y esparcir.
Clculos colectivos. Operaciones para reduccin global, tales como suma,
mximo, mnimo o cualquier funcin definida por el usuario.
Estas operaciones estn resumidas. Todas las funciones, excepto la de difusin,
tienen dos variantes: una en la cual todos los datos transferidos son del mismo
tamao (homogneo) y otra donde cada tem de datos puede tener un tamao
distinto (vector). Algunas de estas funciones, como la de difusin y recoleccin,
tienen un proceso originador o un proceso receptor. Dicho proceso es llamado raz
(root).
Ejemplo de un programa usando funciones colectivas:
MPI_Bcast(inbuf, incnt, intype, root, comm)
Difunde datos desde root a todos los procesos
ES
inbuf

direccin del buffer


de

recepcin,

buffer de envio en
E

incnt

root
nmero
elementos

intype

de
en

el

buffer de envio
tipo de dato de los
elementos

del

E
E

root

buffer de envio
rango del proceso

comm

root
comunicador

int MPI_Bcast(void *inbuf, int incnt, MPI_Datatype intype, int root, MPI_Comm
comm)
MPI_BCAST(INBUF, INCNT, INTYPE, ROOT, COMM, IERROR)
<tipo> INBUF(*)
INTEGER INCNT, INTYPE, ROOT, COMM, IERROR

DEFINICION DE TIPOS DE DATOS EN MPI


MPI tiene una gran potencialidad al permitir al usuario construir nuevos tipos de
datos en tiempo de ejecucin; estos nuevos tipos son llamados tipos de datos
derivados. A travs de los tipos de datos derivados, MPI soporta la comunicacin
de estructuras de datos complejas tales como secciones de arreglos y estructuras
que contienen combinaciones de tipos de datos primitivos. Los tipos derivados se
construyen a partir de tipos de datos bsicos usando los constructos. Un tipo
derivado es un objeto opaco que especifica dos cosas: una secuencia de datos
primitivos y una secuencia de desplazamientos.
La extensin de un tipo de dato se define como el espacio que hay del primer byte
al ltimo byte que ocupa el tipo de dato, redondeado hacia arriba para satisfacer
requerimientos de alineacin. Si por ejemplo tipo = {(double,0),(char,8)}, un doble
con desplazamiento 0 y un carcter con desplazamiento 8, y los dobles deben ser
alineados en direcciones que son mltiplos de 8, entonces el tamao de este tipo

es 9 mientras que su extensin es 16 (9 redondeado al prximo mltiplo de 8). La


extensin y tamao de un tipo de dato se puede obtener con MPI_Type_extent y
MPI_Type_size respectivamente.
MPI_Type_vector define un tipo de dato derivado que consiste de un arreglo de
bloques separados por una distancia fija. Cada bloque se obtiene por la
concatenacin de un mismo nmero de copias del tipo de dato base (oldtype). El
espacio entre bloques es un multiplo de la extensin del tipo de dato viejo.
MPI_Type_contiguous(cnt,oldtype,newtype)

es

equivalente

MPI_Type_vector(cnt,1,1,oldtype,newtype)

MPI_Type_vector(1,cnt,num,oldtype,newtype) con num arbitrario.

MPI_Type_contiguous(count, oldtype, newtype)


Definir un arreglo de datos
E
count

nmero
elementos

E
S

oldtype
newtype

de
en

el

arreglo
tipo de dato viejo
tipo de dato nuevo

int MPI_Type_contiguous(int count, MPI_Datatype oldtype, MPI_Datatype


*newtype)
MPI_TYPE_CONTIGUOUS(COUNT, OLDTYPE, NEWTYPE, IERROR)
INTEGER COUNT, OLDTYPE, NEWTYPE, IERROR

EMPAQUETAMIENTO DE DATOS

Con el objetivo de dar mayor flexibilidad y de ser compatible con las ideas de otras
bibliotecas como PVM y Parmacs, MPI provee mecanismos para empaquetar
datos no continuos para que sean enviados como un buffer continuo y para
esparcirlos nuevamente en localidades discontinuas en el proceso receptor.
Adems, las operaciones de packed y unpacked dan a MPI capacidades que de
otra manera no podran lograrse como el poder recibir un mensaje en partes,
donde la operacin de recepcin dependa del contenido de las partes que forman
el mensaje. Tambin, estas operaciones facilitan el desarrollo de bibliotecas
adicionales de comunicacin basadas sobre MPI.
MPI_Pack(inbuf, incnt, datatype, outbuf, outsize, position, comm)
Empaqueta mensajes
E
inbuf
buffer de entrada
E
incnt
nmero
componentes
E

datatype

ES
E

de

entrada
tipo de dato de cada
componente

S
E

de

de

outbuf
outsize

entrada
buffer de salida
tamao del buffer de

position

salida en bytes
posicin actual en el

comm

buffer
comunicador

para

mensajes
empaquetados
int MPI_Pack(void *inbuf, int incnt, MPI_Datatype datatype, void *outbuf, int outsize, int
*position,
MPI_Comm comm)
MPI_PACK(INBUF, INCNT, DATATYPE, OUTBUF, OUTSIZE, POSITION, COMM,
IERROR)

<tipo> INBUF(*), OUTBUF(*)


INTEGER INCNT, DATATYPE, OUTSIZE, POSITION, COMM, IERROR

PROCESAMIENTO POR GRUPOS


Todas las comunicaciones en MPI estn relacionas a un comunicador
communicator el cual contiene un contexto y un grupo. El grupo denota a un
conjunto de procesos. El procesamiento por grupos permite a MPI cubrir una serie
de debilidades presentes en algunas bibliotecas de pases de mensajes e
incrementa sus capacidades de portabilidad, eficiencia y seguridad. El
procesamiento por grupos agrega elementos como: divisin de procesos,
transmisin de mensajes sin conflictos, extensibilidad para los usuarios
(especialmente los que escriben bibliotecas de funciones) y seguridad.
Un grupo, en MPI, es un conjunto ordenado de procesos; donde cada proceso es
identificado a travs de un nmero entero denominado rango (rank). El grupo
especial MPI_GROUP_EMPTY sirve para denotar aquel grupo que NO tiene
miembros. Mientras, la constante MPI_GROUP_NULL es un valor usado para
referirse a un grupo no vlido.
Un elemento fundamental en el intercambio de informacin en MPI es el
comunicador (communicator), el cual es un objeto opaco con un nmero de
atributos y reglas que gobiernan su creacin, uso y destruccin. Tal comunicador
especifica un dominio de comunicacin, por ejemplo MPI_COMM_WORLD. Un
comunicador puede ser usado para las comunicaciones entre los procesos de un
mismo grupo, en cuyo caso se habla de un intercomunicador (intracommunicator),
o para comunicaciones punto a punto (las nicas permitidas) entre procesos de
diferentes

grupos

los

cuales

(intercommunicator).

CREANDO COMUNICADORES

se

denominan

intercomunicadores

Como se mencion anteriormente, las etiquetas de los mensajes (tag) proveen un


mecanismo para distinguir entre mensajes con distintos propsitos. Sin embargo,
no son suficientes para diseos modulares. Por ejemplo, consideremos una
aplicacin que llama una rutina de una librera. Es importante que las etiquetas
usadas en la librera sean diferentes de las usadas en el resto de la aplicacin, de
lo contrario podra haber confusin de mensajes. Sin embargo, no hay forma de
que el usuario sepa cuales etiquetas son usadas por la librera ya que muchas
veces son generadas dinmicamente. Los comunicadores proveen una solucin a
este problema a continuacin se muestran algunas funciones que permiten usar
los comunicadores en forma ms flexible.
MPI_Comm_dup(comm, newcomm)
Crea un nuevo comunicador: mismo grupo, nuevo contexto
E
comm
communicador
S
newcom
comunicador
int

MPI_Comm_dup(MPI_Comm

comm,

MPI_Comm

*newcomm)
MPI_COMM_DUP(COMM, NEWCOMM, IERROR)
INTEGER COMM, NEWCOMM, IERROR

MPI_Comm_split puede crear un nuevo comunicador que slo incluya un


subconjunto de un grupo de procesos dado. Estos procesos despus pueden
comunicarse entre ellos sin temor de conflictos con otras operaciones
concurrentes. MPI_Comm_split es colectiva, implicando que todos los procesos
asociados con comm deben ejecutarla. Se crea un nuevo comunicador
(newcomm) por cada valor distinto de color y diferente de MPI_UNDEFINED. Si un
proceso llama MPI_Comm_split con color = MPI_UNDEFINED, entonces no
formara parte del nuevo comunicador y en este se devolver newcomm =
MPI_COMM_NULL.
MPI_Comm_split(comm, color, key, newcomm)
Particiona un grupo en subgrupos disjuntos

E
E
E

comm
color

communicador
control para los

key

subgrupos
control para

los

rangos

los

newcom

de

procesos
comunicador

MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm


*newcomm)
MPI_COMM_SPLIT(COMM, COLOR, KEY, NEWCOMM, IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

El software permite comunicar datos en todos niveles, desde nivel administrativo


hasta el de sensores y actuadores, lo cual se representa mediante:

Das könnte Ihnen auch gefallen