2. OPC

Anuncio
2. OPC
La idea principal, sobre la que se construye todo el sistema, es el
aprovechamiento del estándar OPC, como sistema abierto, para asegurar la
normalización de nuestro sistema y su aprovechamiento para un amplio rango de
software de control (todos aquellos que compartan interfaz como clientes OPC).
OPC nos permite establecer una comunicación estandarizada entre clientes y
servidores OPC. Todos los estándares OPC deben tener un conjunto básico de
interfaces, de manera que cualquier cliente desarrollado bajo este estándar se pueda
comunicar con servidores de distintos fabricantes sin problemas. Esto se consigue
gracias a estar desarrollado sobre las librerías COM (Component Object Model).
Función
CoInitializeEx
CoRegisterClassObject
Resultado
Initializes the COM library for use by the calling thread, sets
the thread's concurrency model, and creates a new
apartment for the thread if one is required.
Registers an EXE class object with OLE so other applications
can connect to it.
CoAddRefServerProcess
Informs OLE that a class object, previously registered with
the CoRegisterClassObject function, is no longer available for
use.
Decrements the global per-process reference count
CoReleaseServerProcess
Decrements the global per-process reference count
CoRevokeClassObject
CoUninitialize
Closes the COM library on the current thread, unloads all
DLLs loaded by the thread, frees any other resources that the
thread maintains, and forces all RPC connections on the
thread to close.
Tabla 1. Funciones de interés de librería COM
COM es una tecnología desarrollada por Microsoft basada en una interacción
cliente-servidor, con el objetivo de la reutilización de software. Un software que soporte
COM podrá ser reutilizado desde otra aplicación a través de una serie de funciones o
interfaces. Como extensión de COM para su uso a través de una red es Distributed
COM (DCOM).
COM es un estándar binario que permite el desarrollo de clientes y servidores
sobre Visual Basic y C/C++.
COM esta basado en objetos. Entendemos por objeto COM, a una pieza de
código, perfectamente encapsulada en Componentes/Servidores, de manera que tan
solo son accesibles a través de interfaces. La comunicación entre los objetos y los
clientes COM se hará tan solo utilizando estos interfaces. La definición de los interfaces
se debe hacer en lenguaje IDL (Interface Definition Language), pero la implementación
de los métodos de este se puede hacer en cualquier lenguaje de programación.
Comunicación entre Simulink y Sistemas de control
Simulink OPC Server
11
Figura 5. Estructura de objetos sobre tecnología COM
Todos los objetos e interfaces COM son identificados con el GUID (Globally
Unique Identifier). Llamaremos CLSID a los identificadores para los objetos y IID para
los interfaces. De esta manera aseguramos que sea perfectamente inequívoco identificar
cualquier objeto COM en el mundo suponiendo un “nombre” para llamar a cualquier
interfaz y por tanto a cualquier servidor COM.
Cada vez que un cliente intenta acceder a un método perteneciente a un interfaz,
el servidor crea un nuevo objeto COM, de esta manera podrían conectarse varios
clientes a un mismo interfaz, cada uno establecería la comunicación con un objeto
distinto. Cuando un cliente se desconecta del objeto, el servidor debe eliminarlo.
Una vez es publicado a los usuarios un nuevo interfaz, sus métodos no pueden
cambiarse, si fuera así debería de crearse un nuevo interfaz con un nuevo nombre, de
esta manera no se interfiere con clientes que estuvieran utilizando los métodos antiguos
del interfaz.
El interfaz IUnknown debe de encontrarse en todos los objetos COM y
contiene 3 métodos:
• QueryInterface, toma como parámetro un IID, devolviendo un puntero al interfaz.
• AddRef, incrementa el número de objetos COM
• Release, decrementa el número de objetos COM
Finalmente destacar la necesidad de las DLL que llamaremos Proxy y stub que
se encargarán de la “conversión” entre los espacios de direcciones de cliente y servidor
para el correcto uso de métodos en aplicaciones remotas.
Figura 6. Comunicación a través de Proxy y stub.
Comunicación entre Simulink y Sistemas de control
Simulink OPC Server
12
Tanto el cliente como el servidor OPC son objetos COM.
2.1. Arquitectura básica OPC
Las especificaciones OPC definen 3 tipos de servidores OPC:
• Data Access, define interfaces para la lectura y escritura de datos en el sistema de
control.
• Alarms and Events, permite mantener vigilancia sobre posibles condiciones
anormales en el sistema.
• Historical Data Access, mantiene una base de datos sobre un servidor OPC DA
En nuestro caso desarrollaremos el trabajo sobre un servidor OPC DA, para el
intercambio de datos con un sistema SCADA.
OPC también define dos series de interfaces:
•
Custom
•
Automation
Figura 7. Tipos de interfaces OPC
Sobre C++ se usa el interfaz Custom y por tanto este será sobre el que trabajaremos.
2.2. OPC DA
El estandar define 3 tipos de objetos COM:
Comunicación entre Simulink y Sistemas de control
Simulink OPC Server
13
•
OPC Server, es el primer objeto al que se conecta el cliente. Mantiene
información sobre el propio servidor, servidores del entorno y contenedores para
los objetos OPC Group.
•
OPC Group, proporciona una manera de organizar los datos. Hay dos tipos:
públicos (accesibles por todos los clientes), y locales (solo accesible por el
cliente que lo creo). En nuestro caso el objetivo del cliente no será crear grupos,
será el propio servidor el encargado de crear grupos públicos.
•
OPC Item, representa una conexión con los datos físicos, no son fuentes de
datos. No tiene realmente un interfaz hacia los clientes, siendo accesibles tan
solo a través de los grupos que lo contienen. Cada item lleva asociado el valor,
el tipo VARIANT, la calidad y el tiempo de la ultima actualización, además del
identificador ID a través del cual el cliente accede de manera indirecta a los
anteriores campos.
Figura 8. Estructura de objetos OPC
Todos estos valores se actualizan también en la cache, para su lectura por la propia
fuente emisora y receptora de señales físicas.
Comunicación entre Simulink y Sistemas de control
Simulink OPC Server
14
Descargar