Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor...

40
Índice Interfaz OPC Custom 1 Interfaz OPC Automation 2 Edición 07/2002 Computing Interfaz OPC Server Manual SIMATIC Este manual se basa en la versión 2.0 de la especifiación OPC de la Fundación OPC. Este manual sólo está disponible en inglés y español. A5E00170811-01

Transcript of Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor...

Page 1: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Índice

Interfaz OPC Custom 1

Interfaz OPC Automation 2

Edición 07/2002

ComputingInterfaz OPC Server

Manual

SIMATIC

Este manual se basa en la versión 2.0de la especifiación OPC de la Fundación OPC.

Este manual sólo está disponibleen inglés y español.

A5E00170811-01

Page 2: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

!Peligro

Significa que, si no se adoptan las medidas preventivas adecuadas, se producirá la muerte, o bien lesiones cor-porales graves o daños materiales considerables.

!Advertencia

Significa que, si no se adoptan las medidas preventivas adecuadas, puede producirse la muerte, lesiones corpo-rales graves o daños materiales considerables.

!Precaución

Significa que, si no se adoptan las medidas preventivas adecuadas, pueden producirse lesiones corporales.

Precaución

Significa que, si no se adoptan las medidas preventivas adecuadas, pueden producirse daños materiales.

Atención

Se trata de una información importante, sobre el producto o sobre una parte determinada del manual, sobre la quese desea llamar particularmente la atención.

Personal cualificadoSólo está autorizado a intervenir en este equipo el personal cualificado . En el sentido del manual se trata depersonas que disponen de los conocimientos técnicos necesarios para poner en funcionamiento, conectar a tierray marcar los aparatos, sistemas y circuitos de acuerdo con las normas estándar de seguridad.

Uso conformeConsidere lo siguiente:

!Advertencia

El equipo o los componentes del sistema sólo se podrán utilizar para los casos de aplicación previstos en elcatálogo y en la descripción técnica, y sólo con los equipos y componentes de proveniencia tercera recomenda-dos y homologados por Siemens.

El funcionamiento correcto y seguro del producto presupone un transporte, un almacenamiento, una instalación yun montaje conforme a las prácticas de la buena ingeniería, así como un manejo y un mantenimiento rigurosos.

MarcasSIMATIC , SIMATIC NET y SIMATIC HMI son marcas registradas por SIEMENS AG.

Los restantes nombres y designaciones contenidos en el presente documento pueden ser marcas registradascuya utilización por terceros para sus propios fines puede violar los derechos de los proprietarios.

Consignas de seguridad para el usuarioEste manual contiene las informaciones necesarias para la seguridad personal así como para la prevenciónde daños materiales. Las informaciones están puestas de relieve mediante señales de precaución. Las seña-les que figuran a continuación representan distintos grados de peligro:

Hemos probado el contenido de esta publicación con la con-cordancia descrita para el hardware y el software. Sin em-bargo, es posible que se den algunas desviaciones que nosimpiden tomar garantía completa de esta concordancia. Elcontenido de esta publicación está sometido a revisiones re-gularmente y en caso necesario se incluyen las correccionesen la siguiente edición. Agradecemos sugerencias.

Exención de responsabilidadCopyright � Siemens AG 2002 All rights reserved

La divulgación y reproducción de este documento, así comoel uso y la comunicación de su contenido, no estánautorizados, a no ser que se obtenga el consentimientoexpreso para ello. Los infractores quedan obligados a laindemnización de los daños. Se reservan todos los derechos,en particular para el caso de concesión de patentes o demodelos de utilidad.

Siemens AGBereich Automation and DrivesGeschaeftsgebiet Industrial Automation SystemsPostfach 4848, D- 90327 Nuernberg

Siemens AG 2002Sujeto a cambios sin previo aviso.

Siemens Aktiengesellschaft A5E00170811-01

Page 3: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

iInterfaz OPC de servidorA5E00170811-01

Índice

1 Interfaz OPC Custom 1-1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1 Crear y utilizar un objeto OLE en C/C++ 1-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2 Información adicional sobre la descripción de la interfaz OPC Custom 1-5. . . . . . . .

1.3 El objeto “OPCServer” 1-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4 Objetos de la categoría “OPC Group” 1-11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5 Interfaz IDataObject 1-16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Interfaz OPC Automation 2-1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1 Crear y usar un objeto OLE en Visual Basic 2-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 Modelo de objeto de la interfaz de automatización 2-5. . . . . . . . . . . . . . . . . . . . . . . . .

2.3 El objeto “OPCServer” 2-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4 El objeto “OPCBrowser” 2-8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5 El objeto de colección “OPCGroups” 2-10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.6 El objeto “OPCGroup” 2-12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.7 El objeto de colección “OPCItems” 2-15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.8 El objeto “OPCItem” 2-17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Figure1-1 Objeto OPC Server 1-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 Objeto OPC Group 1-11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3 Interfaces IAdviseSink (cliente) y IDataObject (servidor) 1-16. . . . . . . . . . . . . . . . . . . . 2-1 Activar la referencia para la interfaz de automatización 2-2. . . . . . . . . . . . . . . . . . . . . 2-2 Modelo de objeto de la interfaz de automatización 2-5. . . . . . . . . . . . . . . . . . . . . . . . .

Tabelle1-1 Objetos e interfaces de la interfaz OPC Custom 1-5. . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 Propiedades de el objeto “OPCServer” 2-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 Propiedades del objeto “OPCBrowser” 2-8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 Propiedades del objeto “OPCGroup” 2-10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 Propiedades del objeto “OPCGroup” 2-12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5 Propiedades del objeto de colección “OPCItems” 2-15. . . . . . . . . . . . . . . . . . . . . . . . . 2-6 Propiedades del objeto “OPCItem” 2-17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 4: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Índice

iiInterfaz OPC de servidor

A5E00170811-01

Page 5: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

1-1Interfaz OPC de servidorA5E00170811-01

Interfaz OPC Custom

Resumen del capítulo

En este capítulo se describe el manejo de la interfaz OPC Custom. Aquí encontrará tambiénuna relación de las interfaces y los métodos de la interfaz OPC Custom. No es objetivo deeste manual describir detalladamente la interfaz, pero contiene información adicional yespecífica sobre el software Computing.

Ahora existe una versión ampliada de la interfaz OPC Custom, la especificación 2.0. Laversión 2.0 complementa diferentes aspectos de la interfaz OPC Custom anterior,especialmente aquéllos que simplifican el manejo de la comunicación asíncrona.

Las interfaces de la versión 1.0 de la interfaz OPC son completamente compatibles con laversión 2.0.

Apartado Descripción Página

1.1 Crear y utilizar un objeto OLE en C/C++ 1-2

1.2 Información adicional sobre la descripción de la interfaz OPC Custom 1-5

1.3 El objeto “OPCServer” 1-6

1.4 Objetos de la categoría “OPC Group” 1-11

1.5 Interfaz IDataObject 1-16

1

Page 6: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-2Interfaz OPC de servidor

A5E00170811-01

1.1 Crear y utilizar un objeto OLE en C/C++

El siguiente apartado descibe paso a paso cómo activar los métodos de una instancia deuna categoría OLE en C++. Debe tener en cuenta la diferencia entre el término “Categoría”en OLE y en C++:

• Categorías OLE: Un objeto de Windows es una instancia de una categoría OLE. Eltérmino categoría OLE difiere del término categoría usado en C++.

• Categorías C++: En C++ una categoría es una definición de tipo. Sin embargo, unacategoría OLE es una descripción de objeto y no contiene tipos.

Código de identificación de categoría

Cada una de las categorías OLE puede identificarse de forma unívoca con un código deidentificación de 128 bits de longitud, el CLSID. El sistema operativo utiliza ese código parala asignación unívoca de un archivo DLL o EXE que utiliza esta categoría. Cuando uncliente desea utilizar un objeto de una categoría, sólo necesita el CLSID.

ProgID

Para simplificar la identificación de servidores OPC, generalmente hay un nombre legible, elProgID asignado en los CLSIDs. Mientras que CLSID siempre es único debido al algoritmode la compilación, un ProdID puede repetirse. Igual que ocurre con el CLSID, el ProgID loespecifica el proveedor de un servidor OPC.

El ProgID para el servidor OPC de Computing es: OPCServer.WinAC

Crear un objeto COM

Para crear un objeto COM se requieren cinco pasos:

1. Inicializar COM.

2. Buscar el CLSID.

3. Crear un objeto.

4. Activar una función OPC.

5. Liberar las interfaces utilizadas.

Paso 1: Inicializar COM

Antes de poder utilizar las funciones de COM, debe inicializarse la librería COM con elsiguiente orden:

HRESULT r1;

r1 = CoInitialize(NULL);

Page 7: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-3Interfaz OPC de servidorA5E00170811-01

Paso 2: Buscar el CLSID

Si se conoce el nombre de un objeto, el CLSID puede buscarse con la función“CLSIDFromProgID”.

Ejemplo: El siguiente apartado describe cómo buscar el CLSID para el servidor OPC paraComputing.

CLSID clsid; // Get the CLSID from the Name

r1 = CLSIDFromProgID((L“OPCServer.WinAC”),&clsid);

Paso 3: Crear un objeto

Si un cliente quiere utilizar un objeto, transfiere el CLSID al sistema operativo y solicita unainstancia del objeto. Independientemente de la localización del servidor, la solicitud delobjeto siempre se dirige a COM.

La función “CoCreateInstance” crea un objeto perteneciente a la categoría solicitada. Estafunción incluye ciertos pasos intermedios a través de la interfaz “IClassFactory”. La creaciónde un objeto con IClassFactory resulta más eficaz si se deben crear varios objetos de unacategoría.

Ejemplo: A continuación se muestra cómo puede crearse un objeto de la categoría“OPCServer” con referencia a la interfaz “IUnknown”.

IUnknown * pOPCUnknown;

r1 = CoCreateInstance (clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IUnknown,

(void**) &pOPCUnknown );

Paso 4: Activar una función OPC

En este paso se utiliza un método de la interfaz “IOPCServer” del objeto creado paraconocer el estado del servidor. Primero se proporciona un indicador a la interfaz“IOPCServer” a través de “IUnKnown”. Finalmente se activa el método “GetStatus”.

Ejemplo: El programa que se muestra a continuación indica el estado del servidor y lainformación del proveedor. Si el método “GetStatus” se activa con éxito, el servidor OPClocaliza las áreas de memoria correspondientes a la información de retorno a través de lainterfaz “IMalloc”. El usuario debe volver a liberar las áreas de memoria.

IOPCServer *pOPCServer;

OPCSERVERSTATUS *pss;

r1 = pOPCUnknown–>QueryInterface(IID_IOPCServer,

(void**)&pOPCServer);

r1 = pOPCServer –>GetStatus(&pss);

printf(“Status.szVendorInfo = %ls\n”, pss–> szVendorInfo);

// Remember to release the memory returned by the method

pIMalloc–>Free(pss–>szVendorInfo);

pIMalloc–>Free(pss);

Page 8: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-4Interfaz OPC de servidor

A5E00170811-01

Paso 5: Liberar las interfaces utilizadas

Los objetos incluyen contadores de referencias que permiten detectar si el objeto ya no senecesita y puede eliminarse a sí mismo de la memoria. Cada vez que se activa la función“QueryInterface”, el valor del contador de referencias incrementa. Para liberar el objeto esnecesario reiniciar el contador.

Ejemplo: Los siguientes comandos permiten inicializar el contador de referencias para lasinterfaces “IUnknown” y “IOPCServer”.

pOPCServer–>Release();

pOPCUnknown–>Release();

Page 9: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-5Interfaz OPC de servidorA5E00170811-01

1.2 Información adicional sobre la descripciónde la interfaz OPC Custom

En este manual no se describen en profundidad la las interfaces OPC. Esta información sesuministra sin embargo conjuntamente con este producto en un documento en forma dearchivo redactado por la Fundación OPC en lengua inglesa. Los documentos se encuentranen el directorio “DOC” del directorio de productos del servidor OPC para Computing.

En la siguiente información adicional referente a las interfaces figuran los objetos de OPC,sus interfaces y los métodos definidos en estas interfaces, destacando las característicasespeciales del servidor OPC para Computing.

Valores de retorno

Todos los métodos relacionados dan un resultado del tipo HRESULT.

Breve descripción de los objetos y las interfaces

Tabla 1-1 Objetos e interfaces de la interfaz OPC Custom

Objeto Interfaz

IOPCServer

IOPCServerPublicGroups (opcional)

IOPCBrowseServerAddressSpace (opcional)

OPCServer IOPCItemProperties (nuevo en V 2.0)

IConnectionPointContainer (nuevo en V 2.0)

IOPCCommon (nuevo en V 2.0)

IPersistFile (opcional)

IOPCGroupStateMgt

IOPCPublicGroupStateMgt (opcional)

IOPCASyncIO2 (nuevo en V 2.0)

OPCGroupIOPCAsyncIO (no es necesario en V2.0)

OPCGroupIOPCItemMgt

IConnectionPointContainer (nuevo en V 2.0)

IOPCSyncIO

IDataObject (no es necesario en V2.0)

EnumOPCItemAttributes IEnumOPCItemAttributes

Page 10: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-6Interfaz OPC de servidor

A5E00170811-01

1.3 El objeto “OPCServer”

La categoría OPC server tiene diferentes atributos que contienen información sobre elestado, la versión, etc. de un objeto OPCServer. La categoría OPC server también tienemétodos que permiten al cliente gestionar los productos de la categoría OPC group. Unaaplicación cliente sólo se dirige a un objeto de esta categoría directamente a través demecanismos COM. El resto de objetos se crea con los correspondientes métodos OPC.

Los métodos de la interfaz IOPCServer se utilizan para gestionar los objetos de la categoríaOPC group. Los métodos de la interfaz IOPCBrowseServerAddressSpace permitenaveriguar el área de direccionamiento del servidor.

La figura 1-1 ilustra el objeto “OPC Server” con sus interfaces.

ObjetoOPC Server

IUnknown

IOPCItemsProperties (V2.0)

IConnectionPointContainer (V2.0)

IOPCCommon (V2.0)

IOPCBrowseServerAddressSpaceIOPCServer

Figura 1-1 Objeto OPC Server

Interfaz IOPCServer

Esta interfaz contiene métodos para la gestión de grupos dentro de un objeto servidor.También es posible obtener información sobre el estado actual del servidor.

AddGrou p ( szName, bActive, dwRequestedUpdateRate, hClientGroup, pTimeBias,

pPercentDeadband, dwLCID, phServerGroup, pRevisedUpdateRate, riid, ppUnk )

Crea un grupo en el objeto servidor.

Notas:

• El servidor OPC para Computing no evalúa el parámetro “pTimeBias”.

• “LCID” es irrelevante para el servidor OPC para Computing.

• “UpdateRate” la especifica el parámetro de configuración “Minimum Update Rate” comomúltiplo del valor de configuración.

• El parámetro “pPercentDeadband” sólo es efectivo para variables del tipo real (VT_R4).

• Si el parámetro “szName” está vacío, se genera un nombre comenzando por el guiónbajo (por ejemplo “_123456”). Por eso, los nombres definidos por el usuario no deberíancomenzar por un guión bajo.

CreateGroupEnumerato r ( dwScope, riid, ppUnk )

Crea varios enumeradores para el grupo.

Nota: Dado que no hay grupos públicos en el servidor OPC para Computing, los valores deretorno del parámetro “dwScope” “...PRIVATE” y “...PUBLIC” son idénticos.

Page 11: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-7Interfaz OPC de servidorA5E00170811-01

GetErrorString ( dwError, dwLocale, ppString )

Proporciona el mensaje de error correspondiente a un código de error específico.

Nota: El servidor OPC para Computing soporta textos de error en alemán e inglés. Loserrores que detecta el sistema operativo Windows se describen en el idioma en que se hainstalado el sistema operativo.

GetGroupByName ( szName, riid, ppUnk )

Proporciona un indicador de interfaz adicional para el nombre de un grupo privado, es decir,,se ha aumentado el valor del contador de referencias.

GetStatus ( ppServerStatus )

Indica el estado del servidor.

Nota: El valor de retorno del servidor OPC para Computing es el nombre y la versión delservidor OPC.

RemoveGroup ( hServerGroup, bForce )

Borra un grupo del servidor.

Nota: El servidor OPC para Computing no acepta el uso del parámetro “bForce”. No sepueden borrar grupos para los cuales todavía hay referencias activadas.

Interfaz IOPCBrowseServerAddressSpace

Esta interfaz contiene métodos con los que se puede averiguar el área de direccionamientodel servidor. El área de direccionamiento contiene todos los elementos OPC que conoce elservidor.

BrowseAccessPaths ( szItemID, ppIEnumString )

Permite consultar la ruta de acceso de un ItemID.

Nota: No es necesaria con el servidor OPC para Computing.

Page 12: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-8Interfaz OPC de servidor

A5E00170811-01

BrowseOPCItemIDs ( dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter,

dwAccessRightsFilter, ppIEnumString )

Proporciona una cadena del tipo “IEnumString” cuyo contenido lo especifican losparámetros de llamada. La posición desde la que se crea la lista puede definirse con elmétodo “ChangeBrowsePosition”.

Notas:

• “BRANCH” excluye los filtros para Type y AccessRights.

• Las normas para la creación de un filtro son las siguientes:

– Asterisco (*) Cualquier cadena de caracteres, incluidas las cadenas vacías

– Más (+) Cualquier cadena de caracteres, siempre que contenga como mínimo uncarácter

– Signos de interrogación (?) Cualquier carácter único

– Corchetes ( [ ] ) Un único carácter del juego especificado

• Para utilizar un caraácter cualquiera de filtro, éste debe estar precedido por una barrainvertida (\).

ChangeBrowsePosition ( dwBrowseDirection, szString )

Permite buscar en el área de direccionamiento. Se puede cambiar al nivel superior o a unarama.

GetItemID ( szItemDataID, szItemID )

Crea un ItemID completo en el área de direccionamiento jerárquica. Esta función esnecesaria dado que la búsqueda sólo proporciona las designaciones por debajo del nodoactual.

Nota: La descripción de GetItemID en la especificación OPC difiere de la descripción deChangeBrowsePosition. ChangeBrowsePosition permite especificar un ItemID completo.Por eso el servidor OPC para Computing ahora sólo admite el comando GetItemID parahojas individuales (LEAF).

QueryOrganization ( pNameSpaceType )

Indica la estructura del área de direccionamiento. El área de direccionamiento puede estarorganizada de forma plana o jerárquica.

Nota: El área de direccionamiento del servidor OPC para Computing tiene una estructurajerárquica.

Page 13: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-9Interfaz OPC de servidorA5E00170811-01

IOPCCommon Interface (Versión 2.0)

La interfaz de la versión 2.0 de la interfaz OPC Custom contiene métodos que permitenajustar el idioma y dar a conocer el nombre del cliente al servidor.

SetLocaleID (dwLcid)

Define el código de idioma del servidor. El código de idioma especifica el idioma en el quese editan los textos del servidor.

Nota: El servidor OPC para Computing está disponible en alemán e inglés.

GetLocaleID (pdwLcid)

Facilita el código de idioma del servidor.

Nota: El servidor OPC para Computing está disponible en alemán e inglés.

QueryAvailableLocaleIDs (pdwLcid)

Indica todos los códigos de idioma disponibles del servidor.

Nota: El servidor OPC para Computing está disponible en alemán e inglés.

GetErrorString (dwError, ppString)

Proporciona el texto de error específico de un código de error en el idioma seleccionado.

SetClientName (szName)

Transfiere un texto descriptivo desde el cliente al servidor. El servidor puede utilizar el textodescriptivo para cualquier fin, por ejemplo para abrir archivos de exploración.

Interfaz IConnectionPointContainer

Esta interfaz es una interfaz COM estándar para la transmisión de eventos asíncrona através de puntos de conexión. Para más información sobre el uso de los puntos deconexión, véase la documentación de OLE/COM.

Interfaz IOPCItemProperties (V 2.0)

Esta interfaz de la versión 2.0 contiene métodos que permiten consultar informaciónespecífica del servidor sobre un elemento.

QueryAvailableProperties (szItemID, pdwCount, ppPropertyIDs,

ppDescriptions, ppvtDataTypes )

Proporciona una lista de las propiedades disponibles para un elemento.

GetItemProperties (szItemID, dwCount, pdwPropertyIDs, ppvData, ppErrors )

Proporciona los valores correspondientes a las propiedades de un elemento transferidos enuna lista de PropertyIDs.

Page 14: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-10Interfaz OPC de servidor

A5E00170811-01

LookupItemIDs (szItemID, dwCount, pdwPropertyIDs, ppszNewItemIDs,

ppErrors);

Proporciona (para los propertyIDs posibles) una lista de ItemIDs correspondientes a unalista de PropertyIDs. Estos ItemIDs pueden incluirse en un grupo con el fin de simplificar yacelerar el acceso a los datos.

Nota: Esta función no es compatible con el servidor OPC para Computing La llamada serechaza con el mensaje de error 0x8004001 (no está implementada).

Page 15: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-11Interfaz OPC de servidorA5E00170811-01

1.4 Objetos de la categoría “OPC Group”

La categoría “OPC Group” gestiona la variables individuales del proceso, los elementosOPC. Con estos objetos grupo, un cliente puede formar unidades semánticas de elementosOPC y ejecutar operaciones con ellas.

La figura 1-2 ilustra un objeto de la categoría “OPC Group” y sus interfaces.

Objeto OPC Group

IUnknown

IOPCItemsAttributes

IDataObject

IOPCAsyncIO

IOPCGroupStateMgtIOPCItemMgt

IOPCSyncIO

IConnectionPointContainer (V 2.0)

IOPCAsyncIO2 (V 2.0)

Figura 1-2 Objeto OPC Group

Interfaz IOPCItemMgt

Esta interfaz proporciona métodos que permiten gestionar más de un elemento de un grupo.Sello horario

OPC proporciona un sello horario con cada valor que se lea. Este sello indica en quémomento se ha recibido o se ha cambiado este valor. Dado que los sistemas SIMATIC noutilizan un sello horario, la hora en la que el servidor recibe el valor se utiliza como sellohorario.

Page 16: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-12Interfaz OPC de servidor

A5E00170811-01

AddItems ( dwNumItems, pItemArray, ppAddResults, ppErrors )

Inserta uno o más elementos en un grupo.

Notas:

• Un nombre unívoco de un elemento del servidor OPC para Computing se genera de lasiguiente manera:

Ejemplos MD0:RealEB0

DB1.DBD0

Este nombre puede especificarse en su forma completa en el ItemID. AccessPath (rutade acceso) debe estar vacío.

• También es posible incluir en AccessPath la parte del nombre que se encuentra entrecorchetes.

Ejemplo: AccessPath: “”

MD0:Real

• Un mismo elemento OPC puede insertarse varias veces en el mismo grupo. Noobstante, en ese caso cada uno de los elementos tiene su propio handle de servidor.

Los handles de servidor sólo son únicos dentro de un grupo y no para todos loselementos de todos los grupos.

• Los tipos de datos válidos son los siguientes: VT_UI1, VT_UI2, VT_UI4, VT_I1, VT_I2,VT_I4, VT_R4, VT_BOOL, VT_BSTR

CreateEnumerator ( riid, ppUnk )

Crea un enumerador para los elementos de un grupo.

RemoveItems ( dwNumItems, phServer, ppErrors )

Borra uno o más elementos de un grupo.

SetActiveState ( dwNumItems, phServer, bActive, ppErrors )

Ajusta el estado activado de uno o más elementos de un grupo.

SetClientHandles ( dwNumItems, phServer, phClient, ppErrors )

Define el handle de cliente para uno o más elementos de un grupo.

SetDatatypes ( dwNumItems, phServer, pRequestedDatatypes, ppErrors )

Ajusta el tipo de datos solicitado de uno o más elementos de un grupo.

Nota: Véase AddItem

Page 17: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-13Interfaz OPC de servidorA5E00170811-01

ValidateItems ( dwNumItems, pItemArray, bBlobUpdate, ppValidationResults,

ppErrors )

Comprueba la validez de un elemento OPC, por ejemplo si ha sido insertado en un gruposin que se produjera ningún error y proporciona información como por ejemplo el tipo dedatos canónico.

Nota: Véase AddItem

IOPCGroupStateMgt Interface

La interfaz IOPCGroupStateMgt proporciona métodos para la gestión de grupos. Puedeneditarse parámetros de grupo específicos y copiar grupos.

CloneGroup ( szName, riid, ppUnk )

Genera una copia de un grupo. Se copian todos los atributos del grupo con la excepción delos siguientes:

• El estado activo se ajusta a FALSE

• Se asigna un nuevo handle de servidor

Nota: El parámetro “szName” puede estar vacío. En ese caso se genera un nombre unívoco(véase AddGroup).

GetState ( pUpdateRate, pActive, ppName, pTimeBias, pPercentDeadband,

pLCID, phClientGroup, phServerGroup )

Facilita el estado del grupo. La aplicación cliente debe indicar al servidor OPC dónde debenalmacenarse los resultados mediante un indicador.

Notas:

• El parámetro “pTimeBias” no tiene ninguna relevancia para el servidor OPC paraComputing.

• El parámetro “pPercentDeadband” no tiene ninguna relevancia para el servidor OPCpara Computing.

• El parámetro “LCID”, (valores textuales específicos de idioma en leer/escribir) esirrelevante para las variables de SIMATIC.

SetName ( szName )

Permite cambiar el nombre de un grupo. El nombre siempre debe ser unívoco.

Page 18: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-14Interfaz OPC de servidor

A5E00170811-01

SetState ( pRequestedUpdateRate, pRevisedUpdateRate, pActive, pTimeBias,

pPercentDeadband, pLCID, phClientGroup )

SetState permite cambiar varias propiedades del grupo.

Notas:

• El parámetro “pTimeBias” no tiene ninguna relevancia para el servidor OPC paraComputing.

• El parámetro “pPercentDeadband” no tiene ninguna relevancia para el servidor OPCpara Computing.

• El parámetro “LCID”, (valores textuales específicos de idioma en leer/escribir) esirrelevante para las variables de SIMATIC.

• “UpdateRate” se especifica con el parámetro de configuración “Minimum Update Rate”como múltiplo del valor de configuración.

Interfaz IOPCSyncIO

Esta interfaz proporciona métodos de lectura y escritura síncronos. En este caso, síncronosignifica que el cliente espera hasta que la operación de escritura o lectura se completepara continuar la ejecución.

El uso de llamadas síncronas se recomienda en los casos en los que el cliente necesita elresultado para continuar el procesamiento. El resto de clientes no quedan bloqueados yaque el servidor OPC para Computing inicia una hebra diferente para cada cliente.

Por norma general se recomienda el uso de la interfaz IData para procesar cambios devariables (o IAdviseSink en el lado del cliente). Esta interfaz garantiza la máxima salida dedatos posible reduciendo al mismo tiempo el número real de llamadas al mínimo absoluto(sólo si se produce algún cambio).

Read ( dwSource, dwNumItems, phServer, ppItemValues, ppErrors )

Lee los valores, información de estado o sello horario de uno o más elementos de un grupo.Los valores pueden leerse desde la memoria caché del servidor o directamente desde elhardware. La lectura desde la memoria caché sólo es posible si el grupo está activado.

Nota: La llamada se supervisa con el control de retraso (timeout) del servidor. El parámetrode configuración correspondiente es “Read/Write Timeout”.

Write ( dwNumItems, phServer, pItemValues, ppErrors )

Escribe valores de uno o más elementos de un grupo en el hardware.

Nota: La llamada se supervisa con el control de retraso (timeout) del servidor. El parámetrode configuración correspondiente es “Read/Write Timeout”.

Interfaz IOPCAsyncIO

Esta interfaz de la categoría Group aporta métodos de lectura y escritura asíncrona deelementos. En este caso asíncrona significa que el cliente activa una operación de lectura oescritura y sigue procesando a continuación. Las operaciones asíncronas tienen un ID detransacción. Una vez que el servidor completa la operación de lectura o escritura, el clienterecibe un mensaje en su interfaz IAdviseSink.

Page 19: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-15Interfaz OPC de servidorA5E00170811-01

Cancel ( dwTransactionID )

Cancela un trabajo pendiente.

Read ( dwConnection, dwSource, dwNumItems, phServer, pTransactionID,

ppErrors )

Envía un comando de lectura asíncrona. El resultado se envía a la interfaz IAdviseSink delcliente.

Nota: La llamada se supervisa con el control de retraso (timeout) del servidor. El parámetrode configuración correspondiente es “Read/Write Timeout”. Si se cancela el control deretraso, se produce una llamada de retorno con hrStatus=E_ABORT.

Refresh ( dwConnection, dwSource, pTransactionID )

Solicita un valor actual para cada elemento OPC activo.

Write ( dwConnection, dwNumItems, phServer, pItemValues, pTransactionID,

ppErrors )

Envía un comando de escritura asíncrona.

Nota: La llamada se supervisa con el control de retraso (timeout) del servidor. El parámetrode configuración correspondiente es “Read/Write Timeout”. Si se cancela el control deretraso, se produce una llamada de retorno con hrStatus=E_ABORT.

Page 20: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-16Interfaz OPC de servidor

A5E00170811-01

1.5 Interfaz IDataObject

La interfaz IDataObject es la interfaz estándar para la transmisión de datos OLE. Contienemétodos para establecer la conexión entre el cliente y el servidor.

Descripción del mecanismo

Si el servidor quiere enviar un mensaje a un cliente, éste debe proporcionar un contacto alservidor. Ese contacto es la interfaz IadviseSink del cliente. Un servidor envía un mensaje aun cliente con el método OnDataChange de la interfaz IAdviseSink del cliente.

Representación del mecanismo

La figura 1-3 ilustra la interacción de la interfaz “IAdviseSink” en el cliente y la interfaz“IDataObject” en el servidor.

Cliente Servidor

IDataObjectIAdviseSink

IAdviseSink::OnDataChange

IDataObject::DAdvise

Figura 1-3 Interfaces IAdviseSink (cliente) y IDataObject (servidor)

DAdvise (pFmt, adv, pSnk, pConnection);

Establece una conexión entre un servidor y el cliente. Si un cliente quiere recibir unmensaje, debe establecer una conexión con este método. Transmite un indicador delservidor a la interfaz IAdviseSink.

DUnadvise (Connection)

Finaliza una conexión entre el servidor y el cliente.

Page 21: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-17Interfaz OPC de servidorA5E00170811-01

Interfaz IEnumOPCItemAttributes

Esta interfaz basada en la interfaz estándar IEnum devuelve los elementos de un grupo. Lainterfaz sólo la proporciona “IOPCItemMgr:CreateEnumerator”. No puede obtenerse conQueryInterface.

Clone (ppEnumItemAttributes);

Crea una copia idéntica del enumerador.

Next (celt, ppItemArray, pceltFetched);

Facilita el siguiente elemento OPC del grupo.

Nota: Estas unidades de ingeniería no son compatibles con el servidor OPC paraComputing. Por eso EUType y EUInfo son irrelevantes.

Reset (void);

Reinicia la lista desde el primer elemento del grupo.

Skip (celt);

Salta un número de elementos de la lista.

Interfaz IAsyncIO2 (Versión 2.0)

Esta interfaz de la versión 2.0 aporta métodos de lectura y escritura asíncrona deelementos. En este caso asíncrona significa que el cliente activa una operación de lectura oescritura para seguir procesando a continuación. La versión 2 de la interfaz para lacomunicación asíncrona utiliza puntos de conexión. Esto simplifica el procesamiento de losdatos transferidos.

Read (dwCount, phServer, dwTransactionID, pdwCancelID, ppErrors)

Envía un comando de lectura asíncrona. El resultado se envía al cliente a través de unpunto de conexión.

Nota: La llamada se supervisa con el control de retraso (timeout) del servidor. Si se superael tiempo predefinido, se indica con el estado E_ABORT.

Write (dwCount, phServer, pItemValues, dwTransactionID, pdwCancelID,

ppErrors)

Envía un comando de escritura asíncrona. El mensaje que indica que se ha completado latarea llega a través del punto de conexión especificado.

Nota: La llamada se supervisa con el control de retraso (timeout) del servidor. Si se superael tiempo predefinido, se indica con el estado E_ABORT.

Cancel2 (dwCancelID )

Cancela un trabajo pendiente.

Page 22: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Custom

1-18Interfaz OPC de servidor

A5E00170811-01

Refresh (dwSource, dwTransactionID, pdwCancelID)

Solicita un valor actual para cada elemento OPC activo.

SetEnable (bEnable)

Activa mensaje a través de puntos de conexión. Los mensajes que se generan con elmétodo Refresh se envían independientemente de estas definiciones.

GetEnable (pbEnable)

Devuelve el valor actual de la marca de mensajes a través de puntos de conexión.

Interfaz IConnectionPointContainer

Esta interfaz es una interfaz COM estándar para la transmisión de eventos asíncronos através de puntos de conexión. Para más información sobre el uso de los puntos deconexión, véase la documentación de OLE o COM.

Page 23: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

2-1Interfaz OPC de servidorA5E00170811-01

Interfaz OPC Automation

Resumen del capítulo

Este capítulo describe cómo manejar la interfaz OPC Automation. Además, ofrece unarelación de las propiedades y los métodos de esta interfaz. No se pretende aquí dar unadescripción detallada de la interfaz, pero se ofrece información adicional y específica sobreel servidor OPC de Computing.

Versiones de la interfaz de automatización

La Fundación OPC redactó una especificación sobre la versión 1.0 de la interfaz OPCAutomation, pero esta especificación era poco clara en algunos aspectos. Con laintroducción de Visual Basic 5.0 se evidenciaron algunos fallos de la versión 1.0.

Desde mediados de 1998 está disponible una nueva versión de la especificación de lainterfaz de automatización que puede adquirirse con la versión 2.0. En la información sobreel producto podrá consultar qué aspectos han sido aprobados por la Fundación OPC.

Este manual hace referencia a la versión 2.0 de la especificación de la interfaz OPCAutomation.

Apartado Descripción Página

2.1 Crear y usar un objeto OLE en Visual Basic 2-2

2.2 Modelo de objeto de la interfaz de automatización 2-5

2.3 El objeto “OPCServer” 2-6

2.4 El objeto “OPCBrowser” 2-8

2.5 El objeto de colección “OPCGroups” 2-10

2.6 El objeto “OPCGroup” 2-12

2.7 El objeto de colección “OPCItems” 2-15

2.8 El objeto “OPCItem” 2-17

2

Page 24: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-2Interfaz OPC de servidor

A5E00170811-01

2.1 Crear y usar un objeto OLE en Visual Basic

Visual Basic de Microsoft es un entorno de desarrollo que utiliza la interfaz deautomatización para facilitar el acceso a objetos OLE. En los siguientes apartados sedescribe el uso del servidor OPC con la versión 2.0 de la interfaz de automatización enVisual Basic. Se requiere como mínimo la versión 4 de Visual Basic.

Pasos a seguir para crear un objeto OPC

Crear un nuevo proyecto en Visual Basic. Seleccione el comando de menúProject � References para abrir el cuadro de diálogo “References”. Active la referencia delservidor OPC para la interfaz de automatización 2.0 como se indica en la figura 2-1.

Para crear un objeto OPC en Visual Basic deben realizarse estos cinco pasos:

1. Definir las variables

2. Enlazar el servidor OPC

3. Crear un grupo OPC

4. Insertar elementos OPC

5. Lectura sincronizada

Componentes

OK

Cancel

Available References:

OLE AutomationOPC Automation 2.0Active Setup Control Library

Visual Basic For ApplicationsVisual Basic runtime objects and proceduresVisual Basic objects and procedures

ActiveMovie control type libraryAPI Declaration LoaderAutomation 1.0 Type Library

OPC Automation 2.0Location: C:\SIEMENS\Common\OCX\S7WCDATX.OCX

Browse

Language: Standard

Haga clic sobre OPC Automation 2.0 ysobre el botón “OK”

Figura 2-1 Activar la referencia para la interfaz de automatización

Paso 1: Declarar una variable para el tipo de objeto

En Visual Basic o Visual Basic for Applications, una variable del tipo de objeto se refiere aun objeto OLE. La instrucción DIM declara una instancia de objeto. Ejemplo:

Dim ObjServer As OPCServer

Page 25: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-3Interfaz OPC de servidorA5E00170811-01

Paso 2: Crear y asignar el objeto

Crear un objeto servidor OPC: Los programas Visual Basic también son clientes OPC. Parapoder acceder a una variable del proceso, el cliente deberá crear primero un objeto servidory después enlazar con un servidor OPC.

Ejemplo: La siguiente serie de códigos muestra cómo un cliente Visual Basic puede enlazarcon un objeto servidor OPC.

Set ObjServer = New OPCServer

ObjServer.Connect (“OPCServer.WinAC”)

Paso 3: Crear un grupo OPC

El siguiente paso consiste en crear un objeto grupo para adaptar las variables del proceso.

Primero se declara el objeto grupo y después el objeto de colección. A continuación, alobjeto de colección declarado se le asignan grupos OPC, una propiedad del objeto servidor.Finalmente se crea un grupo mediante el método de inserción del objeto de colección.

Ejemplo: Las siguiente líneas muestran cómo se crea un grupo en Visual Basic.

’Declaraciones

Dim GroupObj As OPCGroup

Dim GroupCollection As OPCGroups

Set GroupCollection = ObjServer.OPCGroups

Set GroupObj = GroupCollection.Add(“MyGroup” )

Paso 4: Insertar elementos OPC

A continuación se insertan elementos OPC en el objeto grupo creado. Los elementosrepresentan los enlaces con las variables del proceso y su parámetro ItemID especifica aqué variable se accede.

El método AddItems permite insertar varios elementos en un grupo en una sola llamada.Para que esto sea posible, los parámetros de transferencia y los valores de retorno sonmatrices unidemensionales de idéntico tamaño. La variable “lNumItems” contiene el númerode elementos que se van a insertar.

Cuando se llama este método, el servidor inicializa los valores correspondientes a lasmatrices “lServerHandles”, “lErrors” y “ItemsObj”. La matriz “IErrors” contiene informaciónsobre el estado de cada uno de los elementos insertados e indica si el elemento en cuestiónha sido insertado con éxito o no.

Page 26: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-4Interfaz OPC de servidor

A5E00170811-01

Ejemplo: En el siguiente ejemplo se crean dos elementos en el grupo OPC “GrpObj” creadopreviamente. El primer elemento representa MD0 y el segundo MD4.

’Declaración

Dim ItemCollection As OPCItems

Dim ItemServerHandle() As Long

Const MAX_INDEX = 2

Dim lNumItems As Long

Dim lClientHandles(MAX_INDEX) As Long

Dim perror() As Long

Dim szItemIDs(MAX_INDEX) As String

Dim AccPath(MAX_INDEX) As String

Dim ReqDataTypes(MAX_INDEX) As Integer

’Definición de ItemIDs

szItemIDs(1) = “MD0:Real”

szItemIDs(2) = “MD4:Real”

AccPath(1) = “”

AccPath(2) = “”

ReqDataTypes(1) = vbVLong

ReqDataTypes(2) = vbVString

lClientHandles(1) = 1

lClientHandles(2) = 2

’Insertar elementos en grupo

Set ItemCollection = GroupObj.OPCItems

ItemCollection.Add MAX_INDEX, szItemIDs, lClientHandles, _

ItemServerHandle, perror, ReqDataTypes, AccPath

Paso 5: Lectura síncrona

En el último paso se lleva a cabo una lectura síncrona de las variables de procesamiento deun grupo. En este caso síncrona significa que el servidor no devuelve el control al programaVisual Basic hasta que se hayan devuelto los resultados requeridos a través del sistema decomunicación. Eso significa que el flujo de comunicación se retrasa el tiempocorrespondiente a la duración de esta comunicación.

Ejemplo: Tal y como ocurre con el comando AddItems, OPCRead también es una operaciónde grupo, es decir, que dentro de un grupo puede accederse simultáneamente a variasvariables del proceso. El parámetro “lNumItems” especifica el número de variables que sevan a leer. Cada una de las varibles se describe en la matriz “lServerHandles” con el handleasignado por el servidor.

Definición de las variables para OPCRead

’Parámetro Out

Dim vValues() As Variant

Dim pErrors() as Long

GroupObj.SyncRead OPCDevice, 2, ItemServerHandle, vValues, pErrors

Page 27: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-5Interfaz OPC de servidorA5E00170811-01

2.2 Modelo de objeto de la interfaz de automatización

El modelo de objeto de la interfaz OPC Automation según la especificación 2.0 difiere delmodelo descrito en el apartado 5.3. Otros objetos de colección independientes gestionan losobjetos OPCGroup y OPCItem. Los objetos de colección cuentan con funciones de recuentode los objetos que tienen asignados. Las funciones de búsqueda también se recogen en unobjeto independiente.

OPCBrowserOPCGroups (objeto colección)

OPCGroup

OPCItems (objeto colección)

OPCServer

OPCItem

1:1 1:n

1:n

1:n

1:1

Figura 2-2 Modelo de objeto de la interfaz de automatización

Page 28: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-6Interfaz OPC de servidor

A5E00170811-01

2.3 El objeto “OPCServer”

Los objetos correspondientes a la categoría servidor OPC (OPCServer) los genera elcliente. Las propiedades de un servidor OPC contienen información general sobre elservidor. Cuando se crea un objeto OPCServer, también se crea además un objeto decolección de OPCGroup como propiedad del objeto OPCServer.

Propiedades de “OPCServer”

Tabla 2-1 Propiedades de el objeto “OPCServer”

Propiedad Tipo Breve descripción

StartTime Fecha y hora Hora en la que se inició el servidor (en UTC)

CurrentTime Fecha y hora La hora actual (UTC), tal y como el sistema se la indica alservidor

LastUpdateTime Fecha y hora La hora (UTC) en la que el servidor envió la última actualizaciónde los datos al cliente

MajorVersion Númeroentero

El número mayor de la versión del servidor

MinorVersion Númeroentero

El número menor de la versión del servidor

BuildNumber Númeroentero

El número de build del servidor

VendorInfo Cadena Información sobre el proveedor

ServerState Largo Estado del servidor

Bandwidth Largo Ancho de banda del servidor

OPCGroups Grupos OPC Una colección de objetos OPCGroup

PublicGroupNames

Variante Los nombres de los grupos públicos que proporciona esteservidor

OPCServers Variante Los nombres (ProgID) de los servidores OPC registrados.

Utilice uno de estos nombres para el método “Connect”. Losnombres se entregan de vuelta en forma de una matriz decadenas.

Notas:

• El servidor OPC para Computing indica lo siguiente como información sobre el vendedor:“Computing OPC-Server”

• Los grupos públicos no son compatibles con el servidor OPC para Computing.

• La propieda Bandwith no es compatible con el servidor OPC para Computing.

Page 29: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-7Interfaz OPC de servidorA5E00170811-01

Métodos de “OPCServer”

Connect (ProgID As String, Optional NodeName As String) As Long

Estructura de un enlace con un servidor OPC. El ProgID para Computing es:OPCServer.WinAC

Disconnect ()

Estructura del enlace con un servidor OPC.

Nota: El servidor OPC para Computing cierra todas las comunicaciones tras la desconexióndel último cliente OPC.

ReleaseAll ()

Borra todos los grupos y elementos actuales a modo de preparación para la desconexión.

CreateBrowser () As OPCBrowser

Crea un objeto de la categoría de buscador OPC para averiguar el área de direccionamientodel servidor.

Nota: Véase la descripción del objeto en el apartado 2.4.

GetErrorString (ErrorCode As Long , Optional LocaleID As Long) As String

Emite el mensaje de error referente a un código de error específico.

Nota: El servidor OPC para Computing dispone de textos de error en alemán e inglés. Loserrores que detecta el sistema operativo Windows se describen en el idioma en que se hainstalado el sistema operativo.

Page 30: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-8Interfaz OPC de servidor

A5E00170811-01

2.4 El objeto “OPCBrowser”

El objeto OPCBrowser es una colección que permite averiguar el área de direccionamientodel servidor OPC. Debe crearse un objeto de la categoría OPCBrowser con el métodoCreateBrowser para el objeto OPCServer. Pueden crearse diferentes objetos OPCBrowserpara un servidor.

Propiedades de “OPCBrowser”

Tabla 2-2 Propiedades del objeto “OPCBrowser”

Propiedad Tipo Breve descripción

Organization Largo La estructura organizativa del área de direccionamiento:jerárquica o plana

Filter Cadena El filtro eficaz para los métodos ShowBranches y ShowLeafs

DataType Númeroentero

El tipo de datos necesario para el método ShowLeafs. El valorpor defecto para esta propiedad es vbEmpty.

AccessRights Largo Los derechos de acceso necesrios para el método ShowLeafs.

CurrentPosition Cadena (sólolectura)

Posición actual del área de direccionamiento en el árboljerárquico. El valor es “ ” si la ruta se inicializa o si la estructura esplana.

Count Largo Propiedades necesarias para la colección, indica el nombre deentredas

Notas:

• La estructura del área de direccionamiento del servidor OPC para Computing esjerárquica.

• Las normas para la creación de un filtro son las siguientes:

– Asterisco (*) Cualquier cadena de caracteres, incluidas las cadenas vacías

– Más (+) Cualquier cadena de caracteres siempre que contenga como mínimo un carácter

– Signo de interrogación (?) Cualquier carácter individual

– Corchetes ( [ ] ) Exactamente un carácter del juego especificado

• Para utilizar cualquiera de los caracteres de filtro, éste debe estar precedido por unabarra invertida (\).

Page 31: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-9Interfaz OPC de servidorA5E00170811-01

Métodos de “OPCBrowser”

Item (Key As Variant) As String

Indica el nombre de la entrada especificada en el índice “Key”.

ShowBranches ()

Introduce en la colección el nombre de las ramas de la posición actual.

ShowLeafs (Optional Flat As Boolean)

Introduce en la colección el nombre de las hojas de la posición actual. Si el parámetro “Flat”está activado, se completa la colección con todas las hojas de las ramas actual e inferiorescomenzando por la posición actual. El estado por defecto de “Flat” es desactivado.

MoveUp ()

Sube la posición actual un nivel dentro del área de direccionamiento.

MoveDown (Branch As String)

Baja la posición actual dentro del área de direccinamiento a la rama actual (un nivel menos).

MoveToRoot ()

Mueve la posición actual dentro del área de direccionamiento a la raíz.

GetItemID (Leaf As String) As String

Crea un ItemID completo en el área de direccionamiento jerárquica. Esta función esnecesaria dado que la búsqueda en sí sólo proporciona las designaciones por debajo delnodo actual.

GetAccessPaths (ItemID As String) As Variant

Proporciona la posibilidad de consultar la ruta de acceso en un ItemID.

Nota: No es necesaria con el servidor OPC para Computing.

Page 32: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-10Interfaz OPC de servidor

A5E00170811-01

2.5 El objeto de colección “OPCGroups”

El objeto OPCGroups es un objeto de colección para crear y administrar los grupos OPC.Las propiedades predeterminadas de los grupos OPC especifican los valores por defectopara la creación de todos los grupos OPC.

Los grupos públicos no son compatibles con el servidor OPC para Computing.

Propiedades de “OPCGroup”

Tabla 2-3 Propiedades del objeto “OPCGroup”

Propiedad Tipo Breve descripción

Parent Servidor OPC(sólo lectura)

Proporciona una referencia al objeto servidor OPCcorrespondiente

DefaultGroupActive Booleano Especifica el valor inicial de la propiedad “ActiveState” degrupos OPC recién creados

Estado por defecto: activada

DefaultGroupUpdate Largo Especifica el valor inicial de la propiedad “update rate” degrupos OPC recién creados

Estado por defecto: 1000 milisegundos

DefaultDeadband Único Especifica el valor inicial de la propiedad “Deadband” degrupos OPC recién creados

DefaultLocale Largo Especifica el valor inicial de la propiedad “locale ID” degrupos OPC recién creados

DefaultTimeBias Largo Especifica el valor inicial de la propiedad “time bias” degrupos OPC recién creados

Count Largo Propiedades necesarias para la colección, indica elnombre de entredas

Notas:

• El servidor OPC para Computing no evalúa la propieda DefaultTimeBias.

• DefaultLocale es irrelevante para el servidor OPC para Computing.

• La propiedad DefaultGroupUpdate es especificada por el parámetro de configuración“Minimum Update Rate” como múltiplo del valor de configuración.

• La propiedad DefaultDeadband no tiene ninguna relevancia para el servidor OPC paraComputing.

Page 33: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-11Interfaz OPC de servidorA5E00170811-01

Métodos de “OPCGroups”

Item (Key As Variant) As OPCGroup

Proporciona una referencia al objeto de la colección indexado.

Add (Name As string, ByRef ServerHandle As Long) As OPCGroup

Crea un grupo en el objeto servidor.

Nota: Si el parámetro szName está vacío, se genera un nombre comenzando por el guiónbajo (por ejemplo “_123456”). Por eso, los nombres definidos por el usuario no deberíancomenzar por un guión bajo.

GetOPCGroup (Key As Variant) As OPCGroup

Proporciona la referencia al grupo OPC indicado por el nombre o por el handle del servidor.

Remove (Key As Variant)

Borra un grupo del servidor.

RemoveAll (Key As Variant)

Borra todos los grupos y elementos del servidor.

Eventos de “OPCGroups”

AllGroupsDataChange (GroupHandle as Long, MasterQuality as Long,

MasterError as Long, NumItems as Long, ClientHandles() as Long,ItemValues() as Variant, Qualities() as Long, TimeStamps() as Date)

Este evento simplifica el procesamiento de eventos de todos los grupos de la coleccióninformando sobre los cambios en el valor y el estado de todos los elementos de todos losgrupos.

Page 34: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-12Interfaz OPC de servidor

A5E00170811-01

2.6 El objeto “OPCGroup”

La categoría “OPC Group” gestiona la variables individuales del proceso, los elementosOPC. Con estos objetos de grupo, un cliente puede formar unidades con sentido semánticode elementos OPC y ejecutar operaciones con ellas.

Propiedades de “OPCGroup”

Tabla 2-4 Propiedades del objeto “OPCGroup”

Propiedad Tipo Breve descripción

Parent ServidorOPC

Proporciona una referencia al objeto servidor OPCcorrespondiente

Name Cadena El nombre del grupo

IsPublic Booleano Indica “True” si el grupo es público, en caso contrario “False”

IsActive Booleano Estado activo del grupo

Un grupo activo crea eventos para todos los elementos activosdel grupo.

ClientHandle Largo Un handle asignado por el cliente y que puede ser utilizado en elprograma cliente para la localización de datos (por ejemplo unalínea de una tabla)

ServerHandle Largo Un handle único para el grupo por parte del servidor

El cliente debe hacer referencia a este handle con uno de losnumerosos métodos que repercuten en el grupo (por ejemplo,Remove).

LocaleID Largo Especifica el ID de idioma para cadenas proporcionadas por elservidor (por ejemplo, textos de error)

TimeBias Largo Indica el retardo temporal aplicado a la hora local para cambiar elsello horario de los datos

DeadBand Único Especifica un ancho de banda dentro de la cual los cambios enlos valores no generan un mensaje

UpdateRate Largo La velocidad más rápida a la que el cliente recibe información decambios en valores o estados de elementos

OPCItems ElementosOPC

Recopila objetos “OPCItems” para gestionar los elementos de ungrupo

Notas:

• El servidor OPC para Computing no evalúa la propieda TimeBias.

• LocaleID es irrelevante para el servidor OPC para Computing.

• UpdateRate la especifica el parámetro de configuración “Minimum Update Rate” comomúltiplo del valor de configuración.

• La propiedad PercentDeadBand no tiene ninguna relevancia para el servidor OPC paraComputing.

Page 35: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-13Interfaz OPC de servidorA5E00170811-01

Métodos de “OPCGroup”

SyncRead (Source As Integer, NumItems As Long, ServerHandles() As Variant,

ByRef Values() As Variant, ByRef Errors() As Variant, Optional ByRef

Qualities As Variant, Optional ByRef TimeStamps As Variant) As Long

Lectura síncrona de los valores, información de estado o sello horario de uno o máselementos de un grupo. Los valores pueden leerse desde la memoria caché del servidor odirectamente desde el hardware. La lectura desde la memoria caché sólo es posible si elgrupo está activado.

Nota: La llamada se controla mediante el control de retraso del servidor. El parámetro deconfiguración correspondiente es “Read/Write Timeout”.

SyncWrite (NumItems As Long, ServerHandles() As Variant, Values() AsVariant, ByRef Errors() As Variant) As Long

Escritura sincronizada de valores de uno o más elementos de un grupo en el hardware.

Nota: La llamada se supervisa mediante el control de retraso (timeout) del servidor. Elparámetro de configuración correspondiente es “Read/Write Timeout”.

AsyncRead (Source As Integer, NumItems As Long, ServerHandles() As Variant,

ByRef Errors() As Variant, ByRef TransactionID As Long) As Long

Envía una orden de lectura síncrona. El resultado se indica con el evento“AsyncReadComplete”.

Nota: La llamada se controla mediante el control de retraso del servidor. El parámetro deconfiguración correspondiente es “Read/Write Timeout”.

AsyncWrite (NumItems As Long, ServerHandles() As Variant, Values() As

Variant, ByRef Errors() As Variant, ByRef TransactionID As Long) As Long

Envía una orden de escritura asíncrona. El resultado se indica con el evento“AsyncWriteComplete”.

Nota: La llamada se controla mediante el control de retraso del servidor. El parámetro deconfiguración correspondiente es “Read/Write Timeout”.

AsyncRefresh (Source As Integer, ByRef TransactionID As Long) As Long

Solicita un valor actual para cada elemento OPC activo. Los resultados se indican con elevento “DataChange”.

AsyncCancel (TransactionID As Long)

Cancela un trabajo asíncrono pendiente.

Eventos de “OPCGroup”

La interfaz OPC Automation indica los cambios de los valores de elementos activos asícomo los resultados de operaciones asíncronas con eventos.

Page 36: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-14Interfaz OPC de servidor

A5E00170811-01

DataChange (NumItems As Long, ClientHandles() As Long, ItemValues() As

Variant, Qualities() As Variant, TimeStamps() As Date)

El evento DataChange se produce cuando se detecta que un elemento activo tiene un valorde cambio o una calidad de cambio. La comprobación de los cambios de los valores losactiva el temporizador UpdateRate. Sólo se crean elementos activos dentro de un grupo deeventos.

AsyncReadComplete (TransactionID As Long, NumItems As Long, ClientHandles()

As Long, ItemValues() As Variant, Qualities() As Variant, TimeStamps() As

Date, Errors() As Variant)

El evento AsyncReadComplete se activa cuando se completa un trabajo de lectura.

AsyncWriteComplete (TransactionID As Long, NumItems As Long,

ClientHandles() As Long, Errors() As Variant)

El evento AsyncWriteComplete se activa cuando se completa un trabajo de escritura.

AsyncCancelComplete (TransactionID As Long)

El evento AsyncCancelComplete se activa cuando se completa un trabajo de interrupción.

Page 37: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-15Interfaz OPC de servidorA5E00170811-01

2.7 El objeto de colección “OPCItems”

El objeto OPCItems es un objeto de colección para la creación y la administración deelementos OPC. Las propiedades predeterminadas de los elementos OPC especifican losvalores por defecto para la creación de todos los elementos OPC.

Propiedades de “OPCItems”

Tabla 2-5 Propiedades del objeto de colección “OPCItems”

Propiedad Tipo Descripción

Parent OPC Grupo Proporciona una referencia al objeto OPCGroupcorrespondiente

DefaultRequestedDataType Númeroentero

Especifica el valor inicial de la propiedad“RequestedDataType” de elementos recién insertados

El valor por defecto es vbEmpty para el tipo de datoscanónico.

DefaultAccessPath Cadena Especifica el valor inicial de la propiedad “AccessPath” deelementos reicén insertados

El valor por defecto es una cadena vacía.

DefaultIsActive Boolean Especifica el valor inicial de la propiedad “Active State” deelementos recién insertados

El valor por defecto está activado.

Count Largo Propiedades necesarias para la colección, indican elnombre de entradas

Métodos de “OPCItems”

Item (ItemSpecifier As Variant) As OPCItem

Proporciona una referencia al elemento de la colección descrito por el indicadorItemSpecifier. (Por otro lado, el método “GetOPCItem” porporciona una referencia a travésdel handle del servidor.)

GetOPCItem (ServerHandle As Long) As OPCItem

Proporciona una referencia al hadle del servidor creado mediante Add.

Add (NumItems As Long, ItemIDs() As String, ClientHandles() As Long, ByRef

ServerHandles() As Long, ByRef Errors() As Long, Optional

RequestedDataTypes() As Variant, Optional AccessPaths() As Variant)

Inserta uno o más elementos en la colección OPCItems de un grupo.

Nota: se puede insertar un elemento OPC varias veces en el mismo grupo. En tal caso,cada uno de los elementos tiene su propio handle de servidor. Los handles de servidor sóloson únicos dentro de un grupo y no para todos los elementos de todos los grupos.

Page 38: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-16Interfaz OPC de servidor

A5E00170811-01

Remove (NumItems As Long, ServerHandles() As Long, ByRef Errors() As Long)

Borra uno o más elementos de un grupo.

Validate (NumItems As Long, ItemIDs() As String, ByRef Errors() As Long,

Optional RequestedDataTypes () As Variant, Optional AccessPaths() As

Variant)

Comprueba la validez de un elemento OPC, por ejemplo si ha sido insertado sin que seprodujera ningún error y proporciona información como por ejemplo el tipo de datoscanónico.Nota: Véase Add.

SetActive (NumItems As Long, ServerHandles() As Long, ActiveState As

Boolean, ByRef Errors() As Long)

Ajusta el estado activado de uno o más elementos de un grupo.

SetClientHandles (NumItems As Long, ServerHandles() As Long,

ClientHandles() As Long, ByRef Errors() As Longt)

Cambia el hadle de cliente para uno o más elementos de un grupo.

SetDataTypes (NumItems As Long, ServerHandles() As Long,

RequestedDataTypes() As Long, ByRef Errors() As Long )

Ajusta el tipo de datos necesario de uno o más elementos de un grupo.

Page 39: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-17Interfaz OPC de servidorA5E00170811-01

2.8 El objeto “OPCItem”

Un objeto de la categoría elemento OPC representa un vínculo con una variable delproceso, por ejemplo para el módulo de entrada de un controlador programable. Unavariable de proceso es un dato de las E/S del proceso que puede escribirse/leerse, comopor ejemplo la temperatura de un tanque. Cada variable de proceso está asociada a unvalor (tipo de datos variante), a una cualidad y a un sello horario.

Propiedades de “OPCItem”

Tabla 2-6 Propiedades del objeto “OPCItem”

Propiedad Tipo Breve descripción

Parent OPC Grupo Proporciona una referencia al objeto OPCGroup superior

ClientHandle Largo Un handle libremente definible por el usuario que permite asignarsimple de una variable de proceso en estructuras de datosinternas del cliente

ServerHandle Largo Un handle único asignado al elemento por el servidor

Este handle es necesario en diferentes operaciones paraidentificar un elemento.

AccessPath Cadena La ruta de acceso del elemento tal y como está especificada enla función Add

AccessRights Largo Proporciona los derechos de acceso de la variable

ItemID Cadena El nombre unívoco del elemento tal y como está especificado enla función Add

IsActive Booleano

Especifica si se crearán eventos de mensaje para este elemento

RequestedDataType Númeroentero

El tipo de datos en el que se proporciona el valor del elemento

Value Variante El último valor válido de la variable (propiedad por defecto delobjeto OPCItem)

Quality Largo La calidad del último valor leído

La calidad indica la validez del valor de la variable.

TimeStamp Fecha yhora

La hora a la que se adquirió el último valor

CanonicalDataType Númeroentero

El tipo de datos originales del elemento

EUType Númeroentero

Identifica la unidad del valor

Si no hay ninguna unidad disponible, el valor siempre es“VT_EMPTY”.

EUInfo Variante Información sobre la unidad del valor

Nota: Estas unidades no son compatibles con el servidor OPC para Computing (unidadesde ingeniería)

Page 40: Computing Interfaz OPC de servidor - Siemens AG OPC Custom 1-2 Interfaz OPC de servidor A5E00170811-01 1.1 Crear y utilizar un objeto OLE en C/C++ El siguiente apartado descibe paso

Interfaz OPC Automation

2-18Interfaz OPC de servidor

A5E00170811-01

Métodos de “OPCItem”

Read (Source As Integer, optional ByRef Value As Variant, optional ByRef

Quality As Variant, optional ByRef TimeStamp As Variant )

Lee el valor, la cualidad y/o el sello horario de esta variable.

Write (Value As Variant)

Ajusta el valor para esta variable de forma síncrona.