CLIENTE-SERVIDOR

Anuncio
CLIENTE-SERVIDOR
Necesidad
No se precisa conocer los protocolos de
comunicación en bajo nivel. Este nivel solo
deben conocerlo los servidores.
Permite conectar los datos de campo a una
aplicación cliente mediante un servidor
Una aplicación cliente puede conectarse
con varios servidores simultáneamente
Francisco Simón Muñiz
4.1
CLIENTE-SERVIDOR
Protocolos utilizados
DDE (Intercambio dinámicos de datos)
Incorporado en los SO
Gestionado por Microsoft
Utilizado en las aplicaciones de ofimática
OPC (OLE process control)
Gestionado por OPCFoundation
Estándar de hecho
Precisa herramientas de desarrollo
Francisco Simón Muñiz
4.2
DDE-1
Un cliente debe conocer la presencia
del servidor y el nombre de la aplicación
La comunicación establecida es de RW
Las comunicaciones se hacen sin tipo
de datos. Siempre como texto
La conexión cliente-servidor consta de:
Tópico (canal de comunicación)
Items (datos a enlazar)
Francisco Simón Muñiz
4.3
DDE-2
Se puede conectar un servidor a múltiples
clientes
Velocidad de intercambio de datos baja
Los datos se pueden obtener por:
Petición
Suscripción
Permite la ejecución remota de comandos
Existe un API de programación gratuito
DDEML con ejemplos en C++
Francisco Simón Muñiz
4.4
API DDE
Francisco Simón Muñiz
4.5
DDE-SERVER API
Francisco Simón Muñiz
4.6
DDE-CLIENTE API
Francisco Simón Muñiz
4.7
DDE-MENSAJES-CONEXIÓN
WM_DDE_INITIATE
Inicia una conversación entre cliente y
servidor
WM_DDE_TERMINATE
Termina una conversación iniciada entre
cliente y servidor
Francisco Simón Muñiz
4.8
DDE-MENSAJES-DATOS
WM_DDE_REQUEST
WM_DDE_DATA
Realiza una petición de datos del cliente al
servidor
Realiza un envío de datos desde el servidor
a los clientes
WM_DDE_ACK
Reconoce la recepción de un dato
Francisco Simón Muñiz
4.9
DDE-MENSAJES-SUSCRIPCIÓN
WM_DDE_ADVISE
Realiza un enlace permanente de un dato
entre el cliente y el servidor (Suscripción)
WM_DDE_UNADVISE
Termina la conexión de datos permanente
entre cliente y servidor.
Francisco Simón Muñiz
4.10
DDE-MENSAJES-ESCRITURA
WM_DDE_POKE
Realiza la escritura de un dato desde el
cliente al servidor
WM_DDE_EXECUTE
Envía una cadena de caracteres desde el
cliente al servidor que se debe entender
como un comando del sistema.
Francisco Simón Muñiz
4.11
DDE-SERVER EJEMPLO
Francisco Simón Muñiz
4.12
DDE-SERVER CÓDIGO-1
Francisco Simón Muñiz
4.13
DDE-SERVER CÓDIGO-2
Francisco Simón Muñiz
4.14
DDE-SERVER CÓDIGO-4
Francisco Simón Muñiz
4.15
DDE-SERVER CÓDIGO-3
Francisco Simón Muñiz
4.16
DDE-SERVER CÓDIGO-5
Francisco Simón Muñiz
4.17
DDE-SERVER CÓDIGO-6
Francisco Simón Muñiz
4.18
DDE-CLIENTE EJEMPLO
Francisco Simón Muñiz
4.19
DDE-CLIENTE CREACIÓN
Francisco Simón Muñiz
4.20
DDE-CLIENTE CONVERSACIÓN
Francisco Simón Muñiz
4.21
DDE-CLIENTE PETICIÓN
Francisco Simón Muñiz
4.22
DDE-CLIENTE ESCRITURA
Francisco Simón Muñiz
4.23
OPC
OLE PROCESS CONTROL
Creado por Microsoft
Gestionado por OFCFoundation
Se especifican varios cliente-servidor
Acceso a Datos
Alarmas y Eventos
Históricos
Permite comunicación en red
Francisco Simón Muñiz
4.24
NECESIDAD DE OPC
HMI
Software
Driver
Francisco Simón Muñiz
Históricos
Software
Driver
Software
Driver
Informes
Software
Driver
4.25
SOLUCIÓN OPC
HMI
Históricos
Informes
OPC
OPC
OPC
OPC
Software
Driver
Francisco Simón Muñiz
OPC
Software
Driver
OPC
Software
Driver
OPC
Software
Driver
4.26
OPC CARACTERÍSTICAS
Basado en tecnología COM
Es de tiempo real
Suministra información de la conexión
Detecta los servidores instalados
Funciones de consulta de Items
Permite datos con tipo
Incorpora la fecha y calidad a los datos
Un cliente lanza la ejecución del servidor
Ampliamente aceptado
Francisco Simón Muñiz
4.27
OPC MODELO DE OBJETOS
OPC/COM
Interfaces
OPCServer
OPCGroup
OPCGroup
OPCGroup(s)
OPCItem(s)
OPCItem(s)
OPCItem(s)
Francisco Simón Muñiz
OPCItem(s)
OPCItem(s)
OPCItem(s)
OPCItem(s)
OPCItem(s)
OPCItem(s)
OPC DISEÑO DE UN SERVIDOR
OPC/COM Interfaces
Gestión de Grupos e Items OPC
Optimización y Monitorización de Items
Protocolo específico del dispositivo
Gestión Hardware
Francisco Simón Muñiz
4.29
OPC LIBRERÍAS Y PROGRAMAS
Fabricantes:
MATRICON
ICONICS
WINTECH
Otros: Ver OPCFOUNDATION
Programas:
Utilidades de configuración y prueba
Servidores para protocolos específicos
Francisco Simón Muñiz
4.30
OPC WINTECH
Librerías de bajo coste
Cliente
Servidor
Programación en C++
Fáciles de aprender
Documentación pobre
Versión de evaluación (30 minutos)
Francisco Simón Muñiz
4.31
OPC DEMOS
Francisco Simón Muñiz
4.32
OPC DEMOS
Francisco Simón Muñiz
4.33
OPC DEMOS
Francisco Simón Muñiz
4.34
OPC DEMOS
Francisco Simón Muñiz
4.35
OPC DEMOS
Francisco Simón Muñiz
4.36
OPC DEMOS
Francisco Simón Muñiz
4.37
OPC DEMOS
Francisco Simón Muñiz
4.38
OPC DEMOS
Francisco Simón Muñiz
4.39
OPC DEMOS
Francisco Simón Muñiz
4.40
OPC DEMOS
Francisco Simón Muñiz
4.41
OPC DEMOS
Francisco Simón Muñiz
4.42
OPC SERVER
Instalar núcleo redistribuible de OPC
Copiar al directorio del proyecto:
OPC Core Components Redistributable
WtOPCSvr.dll
WTOPCsvr.lib
WTOPCsvrAPI.h
WTOPCsvrEXTapi.h
OpcError.h opc_ae.h opcaedef.h opcda.h
Documentación: WTOPCSvr.doc
Francisco Simón Muñiz
4.43
OPC SERVER
Incluir en proyecto:
WTOPCsvr.lib
Los ficheros .h (en cada fichero .cpp)
Obtener para la aplicación un CLSID
único mediante GUIDGen.exe
const GUID CLSID_OPCSimSvr =
{0x99b8f471, 0xc027, 0x11d2, {0x80,
0xb8, 0x0, 0x60, 0x97, 0x58, 0x58,
0xbe}};
Francisco Simón Muñiz
4.44
OPC SERVER FUNCIONES
BOOL UpdateRegistry (BYTE
*pCLSID_Svr, LPCSTR Name, LPCSTR
Descr, LPCSTR ExePath);
BOOL UnregisterServer (BYTE
*pCLSID_Svr, LPCSTR Name);
BOOL InitWTOPCsvr (BYTE
*pCLSID_Svr, UINT ServerRate);
Francisco Simón Muñiz
4.45
OPC SERVER FUNCIONES
HANDLE CreateTag (LPCSTR Name,
VARIANT Value, WORD InitialQuality,
BOOL IsWriteable);
BOOL UpdateTag (HANDLE
TagHandle, VARIANT Value, WORD
Quality);
BOOL UpdateTagByName (LPCSTR
Name, VARIANT Value, WORD Quality);
Francisco Simón Muñiz
4.46
OPC SERVER FUNCIONES
BOOL ReadTag (HANDLE TagHandle,
VARIANT *pValue);
BOOL ReadTagWithTimestamp
(HANDLE TagHandle, VARIANT
*pValue, WORD *pQuality, FILETIME
*pTimestamp);
BOOL RemoveTag (HANDLE
TagHandle);
Francisco Simón Muñiz
4.47
OPC SERVER FUNCIONES
int NumbrClientConnections ();
void RequestDisconnect ();
UninitWTOPCsvr();
BOOL EnableWriteNotification
(WRITENOTIFYPROC lpCallback, BOOL
ConvertToNativeType);
void CALLBACK EXPORT NotificationHandler
(HANDLE handle,VARIANT *pNewValue,
DWORD *pDeviceError)
Francisco Simón Muñiz
4.48
OPC CLIENT
Instalar núcleo redistribuible de OPC
Copiar al directorio del proyecto:
Wtclient.dll
WTclient.lib
WTclientAPI.h
WTclientapiex.h
OpcError.h opc_ae.h opcaedef.h opcda.h
Documentación: WTclient.doc
Incluir en proyecto Wtclient.lib y *.h
Francisco Simón Muñiz
4.49
OPC CLIENT FUNCIONES
WTclientCoInit ();
int NumberOfOPCServers (BOOL
UseOPCENUM, LPCSTR MachineName);
BOOL GetServerName (int index,
LPSTR Buffer, int BufSize);
HANDLE ConnectOPC(LPCSTR
MachineName, LPCSTR ServerName,
BOOL EnableDLLBuffering);
Francisco Simón Muñiz
4.50
OPC CLIENT FUNCIONES
void DisconnectOPC(HANDLE
hConnect);
int NumberOfOPCItems(HANDLE
hConnect);
BOOL GetOPCItemName (HANDLE
hConnect, int index, char *pBuf, int
BufSize);
Francisco Simón Muñiz
4.51
OPC CLIENT FUNCIONES
HANDLE AddOPCGroup (HANDLE
hConnect, LPCSTR Name, DWORD
*pRate, float *pDeadBand);
void RemoveOPCGroup (HANDLE
hConnect, HANDLE hGroup);
HANDLE AddOPCItem (HANDLE
hConnect, HANDLE hGroup, LPCSTR
ItemName);
Francisco Simón Muñiz
4.52
OPC CLIENT FUNCIONES
void RemoveOPCItem (HANDLE
hConnect, HANDLE hGroup, HANDLE
hItem);
BOOL EnableOPCNotification
(HANDLE hConnect, NOTIFYPROC
lpCallback);
void CALLBACK EXPORT
OPCUpdateCallback (HANDLE hGroup,
HANDLE hItem, VARIANT *pVar,
FILETIME timestamp, DWORD quality)
Francisco Simón Muñiz
4.53
OPC CLIENT FUNCIONES
BOOL ReadOPCItem (HANDLE
hConnect, HANDLE hGroup, HANDLE
hItem, VARIANT *pVar, FILETIME
*pTimeStamp, DWORD *pQuality);
HRESULT ReadOPCItemFromDevice
(HANDLE hConnect, HANDLE hGroup,
HANDLE hItem, VARIANT *pVar,
FILETIME *pTimeStamp, DWORD
*pQuality);
Francisco Simón Muñiz
4.54
DWORD WriteOPCItem (HANDLE
hConnect, HANDLE hGroup, HANDLE
hItem, VARIANT *pVar, BOOL
DoAsync);
BOOL EnableShutdownNotification
(HANDLE hConnect,
SHUTDOWNPROCAPI lpCallback);
void CALLBACK EXPORT
ShutdownCallback (HANDLE hConnect)
Francisco Simón Muñiz
4.55
Descargar