View
242
Download
2
Category
Preview:
Citation preview
Í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
!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
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Índice
iiInterfaz OPC de servidor
A5E00170811-01
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
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);
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);
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();
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
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.
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.
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.
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.
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).
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.
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
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.
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.
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.
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.
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.
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.
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
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
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.
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
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
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.
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.
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 (\).
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.
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.
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.
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.
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.
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.
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.
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.
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)
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.
Recommended