AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Funciones OLE
  • Presentación
  • Programación de automatización para OPC
  • Presentación
  • Definición del nombre del servidor OPC a utilizar
  • Características específicas de la programación de automatización para OPC
  • Limitaciones de WLanguage
  • Errores devueltos por el servidor de Automation
  • Interfaces de automatización para el modo asíncrono
  • Notas
  • Ejemplo
  • Diálogo con un servidor OPC UA
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
OPC son las siglas de "OLE for Process Control".
OPC es una implementación estándar basada en OLE/COM para la gestión de los dispositivos físicos (autómatas, alarmas, captores,...).
Para más información, visite: http://www.opcfoundation.org/
WINDEV permite el acceso a los datos:
  • a través de la automatización.
  • mediante ActiveX (especificación OPC DA Auto 2.0).
  • a través de un servidor OPC UA.
Por lo tanto, el uso de OPC en WINDEV se realiza mediante un objeto de automatización o mediante un ActiveX que se utiliza como capa de cliente OPC.. En la mayoría de los casos, este objeto de automatización o este ActiveX es suministrado por el proveedor de hardware electrónico.
El uso de OPC con WINDEV sigue los mismos principios de programación que los objetos de automatización y ActiveX.
Observación: En el resto de esta Document, los objetos de Automatización y el ActiveX se llamarán "Objetos de Automatización".
Programación de automatización para OPC

Presentación

La programación de objetos de automatización para OPC en WLanguage corresponde a la programación de objetos de automatización.. Para más información, consulte la ayuda de Objetos de automatización.
Sin embargo, algunas restricciones son relacionado al estándar OPC y a la implementación interna de los objetos de automatización.

Definición del nombre del servidor OPC a utilizar

Para utilizar la sintaxis de automatización, debe conocer el nombre del servidor OPC.. su nombre es específico para cada fabricante de hardware OPC.
Este nombre se puede encontrar automáticamente. Para obtener esta información, Contact el fabricante del servidor OPC.

Características específicas de la programación de automatización para OPC

1. Los subíndices de arrays comienzan en 1
La fuente índice del arrays debe ser forzada al principio del código de inicialización del proyecto por el siguiente Line de código:
AutomationParameter(apArrayBaseIndex, 1)
Para obtener más información, consulte la ayuda sobre la función AutomatizaciónParámetros.
2. En la mayoría de los casos, no se acepta pasar parámetros simples (entero, cadena, etc.) por reference.
En WINDEV, pasar los parámetros por reference es el modo Default. Pasar las variables por valor debe ser forzado adjuntando cada parámetro entre paréntesis. Por ejemplo:
oServer>>Connect((sOPCServer),(sComputerName))
3. Gestión de arrays:
  • La entrada arrays debe ser pasada por valor (adjuntando el parámetro entre paréntesis)
  • La salida arrays debe ser necesariamente creada con un tamaño establecido en 0 y pasado por reference.
Ejemplo:
nArrServerHandle is array of 1 int  // input
nArrValue is array of 0 Variant // output
nArrOutputError is array of 0 int // output
...
oGroup>>SyncRead(2,1,(nArrServerHandle),vArrValue,nArrError)
4. Para el modo asíncrono (llamada del procedimiento WLanguage por el objeto Automatización), los objetos de Automatización que se proporcionan proponen interfaces sin description. Por lo tanto, debe utilizar la primera sintaxis de AutomatizaciónEvento.

Limitaciones de WLanguage

En modo asíncrono, para manipular y array de valores, las celdas array deben ser manejadas una por una.. Esta funcionalidad no está disponible en esta versión.

Errores devueltos por el servidor de Automation

La información encontrada en los errores es devuelta directamente por los objetos de automatización.
Por lo tanto, la falta de información proviene de la implementación del objeto OPC Automation.
No podemos Document todos los casos de error de todos los fabricantes.

Interfaces de automatización para el modo asíncrono

1. Determinación por el registro
Las interfaces de automatización para el modo asíncrono se pueden encontrar en el registro de un ordenador en el que se instaló el objeto de automatización a utilizar.
Tpara encontrar la interfaz Event del servidor OPC, busca "DIOPCServerEvent" en los datos. La clave que contiene este valor es la clave a utilizar.
Para encontrar la interfaz de eventos del grupo OPC, busque "DIOPCGroupEvent" en los datos. La clave que contiene este valor es la clave a utilizar.
Tpara encontrar la interfaz Event de todos los grupos OPC, busca "DIOPCGroupsEvent" en los datos. La clave que contiene este valor es la clave a utilizar.
Si se encuentran varios valores, significa que varios objetos de Automatización OPC están instalados en el equipo:
  • la subclave TypeLib tiene un valor con el siguiente formato (por Default): {01704EB3-44B5-11D3-9C09-00105A3DD3AC} que corresponde al identificador del objeto de automatización
  • realizar una búsqueda por clave del valor encontrado {01704EB3-44B5-11D3-9C09-00105A3DD3AC}.
  • esta clave tiene subclaves como "1.0" o "2.0" que dan el nombre del objeto de automatización OPC que proporciona la interfaz
2. Determinación por OLEView
"OLE View" es una herramienta suministrada con MS Visual Studio.
  1. Iniciar vista OLE.
  2. En la vista de árbol de la izquierda, abra la rama "Bibliotecas tipográficas".
  3. Buscar el cliente OPC deseado: por ejemplo, "Siemens OPC DAAutomation 2.0" o "Matrikon OPC Automation 2.0".
  4. Haga doble clic en el árbol fila para abrir el description: se abre una nueva ventana con un árbol a la izquierda y un texto a la derecha.
  5. copy el texto completo en un editor de texto.
Para encontrar la interfaz de eventos para el grupo OPC, busque "disinterface DIOPCGroupEvent" para encontrar un bloque como:
[
uuid(F8582D2B-88FB-11D0-B850-00C0F0104305),
helpstring("OPC Group Events"),
nonextensible
]
dispinterface DIOPCGroupEvent {
properties:
methods:
[id(0x00000001)]
void DataChange(
[in] long TransactionID,
[in] long NumItems,
[in] SAFEARRAY(long)* ClientHandles,
[in] SAFEARRAY(VARIANT)* ItemValues,
[in] SAFEARRAY(long)* Qualities,
[in] SAFEARRAY(DATE)* TimeStamps);
[id(0x00000002)]
void AsyncReadComplete(
[in] long TransactionID,
[in] long NumItems,
[in] SAFEARRAY(long)* ClientHandles,
[in] SAFEARRAY(VARIANT)* ItemValues,
[in] SAFEARRAY(long)* Qualities,
[in] SAFEARRAY(DATE)* TimeStamps,
[in] SAFEARRAY(long)* Errors);
[id(0x00000003)]
void AsyncWriteComplete(
[in] long TransactionID,
[in] long NumItems,
[in] SAFEARRAY(long)* ClientHandles,
[in] SAFEARRAY(long)* Errors);
[id(0x00000004)]
void AsyncCancelComplete([in] long CancelID);
};
La interfaz se da al principio del bloque: aquí {F8582D2B-88FB-11D0-B850-00C0F0104305}.
El número de Event se da para cada Event: aquí, id(0x00000001) para el DataChange Event.
Para encontrar la interfase de eventos para el servidor OPC, busque "disinterface DIOPCServerEvent" para encontrar un bloque como:
[
uuid(F8582D26-88FB-11D0-B850-00C0F0104305),
helpstring("OPC Server Event"),
nonextensible
]
dispinterface DIOPCServerEvent {
properties:
methods:
[id(0x00000001)]
void ServerShutDown([in] BSTR Reason);
};
La interfaz se da al principio del bloque: aquí { F8582D26-88FB-11D0-B850-00C0F0104305}.
El número de Event se da para cada Event: aquí, id(0x00000001) para el ServerShutDown Event.

Notas

  • WINDEV soporta las características del cliente OPC para acceder a los datos.
  • WINDEV soporta la especificación DA Auto 2.0 (acceso a los datos a través de la interfaz de automatización).
  • WINDEV no soporta la arrays de valores en modo asíncrono.. Si la array tiene un tamaño pequeño, se puede definir un elemento OPC para cada valor de array.

Ejemplo

WINDEV dispone de un ejemplo de gestión OPC. Este ejemplo no se puede utilizar tal cual. Debe ser adaptado a su servidor OPC.
Diálogo con un servidor OPC UA
WINDEV le permite conectarse a un servidor OPC UA. Para más detalles, consulte el ejemplo proporcionado.
Versión mínima requerida
  • Versión 9
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 22/03/2023

Señalar un error o enviar una sugerencia | Ayuda local