ES2909553T3 - Intercambio de datos en tiempo real entre módulos de programa - Google Patents

Intercambio de datos en tiempo real entre módulos de programa Download PDF

Info

Publication number
ES2909553T3
ES2909553T3 ES17794354T ES17794354T ES2909553T3 ES 2909553 T3 ES2909553 T3 ES 2909553T3 ES 17794354 T ES17794354 T ES 17794354T ES 17794354 T ES17794354 T ES 17794354T ES 2909553 T3 ES2909553 T3 ES 2909553T3
Authority
ES
Spain
Prior art keywords
storage device
data storage
program modules
data
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17794354T
Other languages
English (en)
Inventor
Henning Heutger
Rolf Kleinow
Tobias Drewes
Alexander Beck
Jens Frieben
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phoenix Contact GmbH and Co KG
Original Assignee
Phoenix Contact GmbH and Co KG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phoenix Contact GmbH and Co KG filed Critical Phoenix Contact GmbH and Co KG
Application granted granted Critical
Publication of ES2909553T3 publication Critical patent/ES2909553T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

Procedimiento para el intercambio de datos en tiempo real entre módulos de programa (11, 12, 13), en el que los módulos de programa se ejecutan en un aparato de control en una instalación de automatización, y en el que los módulos de programa son parte de una aplicación general para la ejecución en el aparato de control, que comprende provisión de un dispositivo de almacenamiento de datos (20) que proporciona un espacio de datos global en el que los módulos del programa pueden depositar valores de variables, de modo que otros módulos del programa pueden acceder a estos, en el que el dispositivo de almacenamiento de datos presenta un componente de software que forma parte del firmware del dispositivo de control, provisión de al menos un archivo de descripción, en el que el archivo de descripción presenta metainformación que describe qué variables ofrece un módulo de programa con la ayuda de puertos, configuración del dispositivo de almacenamiento de datos (20) con el archivo de descripción, en el que la metainformación del archivo de descripción se almacena en el dispositivo de almacenamiento de datos, en el que la metainformación almacenada (21-31) presenta al menos una variable, y en el que se proporciona al menos un conector (14), en el que el conector designa una funcionalidad del dispositivo de almacenamiento de datos que proporciona una conexión desde uno de los módulos de programa a otro de los módulos de programa a través del dispositivo de almacenamiento de datos, en el que el conector describe de qué manera se escriben y leen los datos de la variable en una memoria del dispositivo de almacenamiento de datos, de modo que se puede establecer una conexión entre los módulos de programa (11, 12, 13) a través del dispositivo de almacenamiento de datos (20), en el que los módulos de programa (11, 12, 13) se pueden ejecutar por un sistema operativo en tiempo real, e intercambio de las variables entre uno de los módulos de programa (11, 12, 13) y el dispositivo de almacenamiento de datos (20) a través del conector (14), además que presenta provisión de variables en el dispositivo de almacenamiento de datos (20) mediante un primer módulo de programa de los módulos de programa (11, 12, 13), publicación de las variables proporcionadas mediante el dispositivo de almacenamiento de datos (20) para al menos un segundo módulo de programa de los módulos de programa (11, 12, 13), y acceso a las variables en el dispositivo de almacenamiento de datos (20) mediante al menos el segundo módulo de programa.

Description

DESCRIPCIÓN
Intercambio de datos en tiempo real entre módulos de programa
La presente invención pertenece al campo de la tecnología de automatización y se refiere a un procedimiento para el intercambio de datos en tiempo real entre módulos de programa. Además, la presente invención se refiere a un dispositivo de almacenamiento de datos, un dispositivo para el intercambio de datos entre módulos de programa, un sistema operativo en tiempo real y un producto de programa informático.
Mediante temas actuales tal como, por ejemplo, la Industria 4,0, el Internet de las cosas o la agenda CPS de la VDI se muestra que en el futuro las instalaciones automatizadas se caracterizarán por una alta proporción de integración en red y software. A este respecto, habrá un cambio de la programación clásica iEc 61131-3 a modernos lenguajes de alto nivel. Hasta el año 2018, alrededor del 70 % del código utilizado debe estar fuera de los lenguajes definidos de acuerdo con IEC. A este respecto, los requisitos existentes, tal como, por ejemplo, la capacidad de funcionamiento en tiempo real y la consistencia, se complementan con una mayor flexibilidad, más seguridad y mejor capacidad de mantenimiento.
En el caso de la integración en red de los sensores, la capacidad de funcionamiento en tiempo real de todo el sistema asume un papel importante. Esto es importante en particular en un entorno industrial con procesos crítico en tiempo. Por lo tanto, es necesario mejorar todos los componentes del sistema en una instalación de automatización en su la capacidad de funcionamiento en tiempo real. Aquí, mediante desarrollos futuros, los dispositivos de almacenamiento y los módulos de programa que acceden a ellos tendrán especial prioridad, ya que se a tener que almacenar y procesar una cantidad creciente de datos.
Por el documento GB 2415806 A se describe una arquitectura de integración de software dinámica con módulos de programa para integrar componentes o sistemas distribuidos por medio de conectores de integración dinámicos, en la que se utilizan conjuntos de reglas de integración para definir reglas de acceso y comunicación de un componente de software asociado, y con un motor de negociación que negocia con los conectores de integración para definir la conectividad de datos y/o control en base a los conjuntos de reglas de integración.
El documento EP 2 456 124 A1 se refiere a la ingeniería de una comunicación de datos, en particular para codificadores en un entorno de automatización industrial, y describe un procedimiento para la comunicación entre módulos de función, por el documento CH 709007 A2 se conoce además un bus de servicio para conectar clientes a servicios de proveedores de servicios en un sistema de procesamiento de datos.
Un objeto de la presente invención es especificar una solución para mejorar un intercambio de datos entre módulos de programa en tiempo real.
Este objetivo se consigue de acuerdo con la invención mediante las características de la reivindicación 1. Además, el objeto se consigue mediante un dispositivo de almacenamiento de datos de acuerdo con la reivindicación 12 y un dispositivo para el intercambio de datos entre módulos de programa de acuerdo con la reivindicación 15. Otras configuraciones resultan de las reivindicaciones dependientes,
En el procedimiento de acuerdo con la invención para el intercambio de datos en tiempo real entre módulos de programa se prevé proporcionar un dispositivo de almacenamiento de datos y almacenar la metainformación en el dispositivo de almacenamiento de datos, en el que la metainformación presenta al menos una variable. Además, el procedimiento prevé proporcionar al menos un archivo de descripción y configurar el dispositivo de almacenamiento de datos con el archivo de descripción. Además, el procedimiento presenta proporcionar al menos un conector, en el que se puede establecer una conexión con el conector entre los módulos del programa a través del dispositivo de almacenamiento de datos dependiendo de una consulta en el archivo de descripción, y en el que los módulos del programa están creados bajo el uso de lenguajes de programación iguales o diferentes y son ejecutables por un sistema operativo en tiempo real. Además, el procedimiento presenta un intercambio de al menos una variable entre uno de los módulos de programa y el dispositivo de almacenamiento de datos a través del conector.
El dispositivo de almacenamiento de datos comprende un componente de software, conformado como parte del firmware de un dispositivo de control, en el que el dispositivo de control está conformado como un aparato de control para controlar un sistema de automatización. Por ejemplo, el dispositivo de control puede servir para leer los datos de sensores y para controlar los actuadores dependiendo de los datos de sensores, en el que con esta finalidad se ejecutan varios módulos de programa en el dispositivo de control.
El dispositivo de almacenamiento de datos comprende una memoria a través de la que los módulos de programa pueden intercambiar datos. Una funcionalidad del dispositivo de almacenamiento de datos denominada como conector proporciona una conexión de un módulo de programa a otro módulo de programa a través del dispositivo de almacenamiento de datos. El dispositivo de almacenamiento de datos puede ofrecer datos locales del aparato a través de la memoria para el intercambio entre los módulos del programa y se puede utilizar igualmente por todos los procesos.
En particular, la metainformación se lee por el dispositivo de almacenamiento de datos y puede ser asignada respectivamente a un módulo de programa, en el que la metainformación puede comprender en particular la identificación de una variable usada en el módulo de programa así como información adicional asignada a esta variable, tal como, por ejemplo, un tipo de datos.
El archivo de descripción define la configuración del dispositivo de almacenamiento de datos, en el que el archivo de descripción puede comprender, por ejemplo, la metainformación o información sobre la metainformación a leer, por ejemplo, en forma de ruta de archivo. Además, el archivo de descripción puede comprender información que define los conectores a crear.
El archivo de descripción se proporciona, por ejemplo, en forma de archivo de texto en una memoria de un dispositivo de control y se lee del dispositivo de almacenamiento de datos como parte del firmware del dispositivo de control, por ejemplo, en la puesta en funcionamiento o encendido del dispositivo de control.
Una entrada para crear un conector en el archivo de descripción se puede considerar como una solicitud para crear un conector correspondiente, es decir, para proporcionar la funcionalidad correspondiente en el dispositivo de almacenamiento de datos. Con esta finalidad, el archivo de descripción comprende, por ejemplo, información sobre qué conexión o puerto de un módulo de programa se debe conectar a qué conexión o puerto de otro módulo de programa. Las conexiones o puertos de los módulos del programa se proporcionan, por ejemplo, a través de APIs.
El archivo de descripción se puede entender como un archivo de meta descripción con el que se puede especificar cada conexión o puerto con su respectivo tipo de datos y dirección de datos.
El dispositivo de almacenamiento de datos proporciona por tanto una memoria o un espacio de datos global, en el que los módulos de programa pueden depositar variables o valores de variables, de modo que otros módulos de programa puedan acceder a ellos.
Con esta finalidad se intercambia al menos una variable o un valor de variable entre uno de los módulos de programa y el dispositivo de almacenamiento de datos a través de la funcionalidad del dispositivo de almacenamiento de datos denominada como conector, es decir, un módulo de programa transmite al dispositivo de almacenamiento de datos una variable o un valor de variable, que se deposita en la memoria o espacio de datos global, o un módulo de programa consulta una variable o valor de variable depositado en la memoria o espacio de datos global, en el que la comunicación se realiza a través de conexiones de los respectivos módulos de programa, que están conectados mediante un conector.
En la tecnología de automatización se puede prever un cambio, que se realiza desde el uso de lenguajes de programación clásicos de PLC al uso de lenguajes de alto nivel. En consecuencia, de acuerdo con la invención se posibilita acceder a una memoria de datos común o a un dispositivo de memoria de datos en tiempo real incluso al usar módulos de programa que se han escrito en diferentes lenguajes de programación.
Hasta ahora, por ejemplo, la norma IEC 61131 regula la sintaxis y la semántica de los lenguajes de programación para controladores programables. Aquí se propone un conjunto unificado de lenguajes de programación para controladores programables. Este conjunto presenta con dos lenguajes de texto (lista de instrucciones y texto estructurado) y dos lenguajes gráficos (diagrama en escalera y diagrama de bloques de funciones). Además, en la norma IEC 61131 (edición 3.0, 2013-02) se definen las características que deben simplificar la comunicación entre los controladores de programa y otros componentes de un sistema automatizado.
Sin embargo, también se pueden usar otros lenguajes de programación de acuerdo con la invención, que se sustituyen por los actuales lenguajes de programación clásicos de acuerdo con IEC 61131 o actualmente ya se utilizan en paralelo con estos. Por ejemplo, se pueden usar módulos de programa que estén programados respectivamente al menos en uno de los lenguajes de programación de acuerdo con la norma IEC 61131, en Matlab/Simulink, C++, C# o JAVA o Python. Igualmente son posibles otros lenguajes de programación.
Por lo tanto, se puede usar un único lenguaje de programación para todos los módulos de programa. También es posible que se usen diferentes lenguajes de programación para dos o más módulos de programa.
Los módulos de programa se controlan, por ejemplo, con la ayuda de una interfaz de programación, en particular con una API (API = interfaz de programación de aplicaciones). El archivo de descripción se puede proporcionar, por ejemplo, como un archivo XML (XML = archivo de lenguaje de marcado extensible).
La interfaz de programación o la API del dispositivo de almacenamiento de datos posibilita que un desarrollador de aplicaciones explore las variables publicadas con su metainformación y establezca conectores en tiempo de ejecución. Además de un enlace estático a través de conectores, también se pueden establecer conexiones dinámicas a través de conectores. Esto puede ser necesario para los componentes cuyo acceso a los datos cambia en tiempo de ejecución, tal como, por ejemplo, un servidor OPC-UA (OPC-UA = arquitectura unificada de comunicaciones de plataforma abierta), que puede ofrecer la exploración de puntos de datos en cualquier momento. Para posibilidades de análisis detalladas y búsqueda de errores, la interfaz de programación o la API ofrece además la posibilidad de enumerar todos los conectores constituidos.
La configuración del dispositivo de almacenamiento de datos y sus conectores se pueden realizar mediante un archivo de descripción o una pluralidad de archivos de descripción, por ejemplo, en forma de un archivo XML o varios archivos XML. Estos archivos de descripción permiten la configuración en lugar de la programación. Por consiguiente, la función de una instalación se puede cambiar en tiempo de ejecución sin tener que compilar nuevamente las partes individuales de la aplicación. El uso de archivos de descripción o una configuración basada en XML también permite al usuario efectuar adaptaciones directamente en el controlador o usar sus propias herramientas y cadenas de herramientas externas. A este respecto, la estructura de un archivo de descripción o archivo XML se predetermina mediante archivos de esquema claramente definidos, que posibilitan una comprobación rápida de la configuración.
Además de la configuración del dispositivo de almacenamiento de datos, los módulos de programa o programas y sus conexiones o puertos también se pueden definir con la ayuda de archivos de descripción, en particular mediante archivos de descripción basados en XML. Los archivos de descripción se pueden entender como archivos de meta descripción con los que se puede especificar cada conexión o puerto con su respectivo tipo de datos y dirección de datos. Adicionalmente, también se pueden especificar otros atributos, a los que se pueden recurrir para la búsqueda dinámica en el dispositivo de almacenamiento de datos. Ejemplos de esto son unidades o etiquetas específicas de la empresa. Para poder implementar un enlace de variables de diferentes dominios de programación, todos los tipos de datos se definen ventajosamente en un lenguaje común. Con este lenguaje común es posible describir programas que utilizan tipos de datos primitivos, autodefinidos o predeterminados mediante bibliotecas o librerías. Este lenguaje de descripción general es ventajoso para el enlace de estructuras o elementos individuales de estas estructuras.
La especificación del dispositivo de almacenamiento de datos, los conectores y los metadatos de programa en varios archivos de descripción o en varios archivos de configuración XML permite dividir una aplicación total en módulos funcionales que se pueden crear por diferentes grupos de desarrolladores o proveedores. Esto no solo facilita el desarrollo de un control de instalación complejo, sino también la ampliación gradual de una instalación en funcionamiento. Por tanto, la aplicación global no debe estar disponible desde el principio, sino que se puede componer de submódulos. En este contexto, bajo una aplicación global se entienden todos los programas o módulos de programa, tareas o tasks y ajustes de configuración que se requieren para la realización en un aparato de control.
En este contexto, los términos "programa" y "módulo de programa" se usan de forma intercambiable.
El archivo de descripción presenta metainformación. La metainformación describe variables y programas, por ejemplo, qué puertos de variables ofrece un programa y de qué tipo de datos son. Bajo puertos se entienden variables que representan entradas o salidas de programas o componentes y, por lo tanto, se pueden interconectar (unidireccionalmente), en tanto que se proporciona espacio de almacenamiento en el dispositivo de almacenamiento de datos. La metainformación describe todo el programa, es decir, la suma de todas las conexiones o puertos entrantes y salientes. La metainformación describe el tipo de variable y cómo están estructuradas, por ejemplo, tipos de datos booleanos, enteros o compuestos complejos. Un ejemplo de metainformación es la variable "release" de tipo booleano. Un conector puede transmitir una variable, por ejemplo, de "release" a otro programa a la variable "go" del tipo bit. Aquí, el valor de la variable se convierte de booleano a bit.
Los datos de la variable se pueden escribir y leer en una memoria del dispositivo de almacenamiento de datos. De qué manera sucede esto se describe con un conector. Se requiere metainformación para describir qué variables ofrece un programa con ayuda de puertos. Por ejemplo, un programa "A" puede ofrecer la variable "release" con el tipo "booleano". Esta variable se almacena en la memoria del dispositivo de almacenamiento de datos y el valor de la variable se escribe por el programa "A". Otros programas pueden leer este valor a través de un conector que sabe dónde está depositada la variable en la memoria del dispositivo de almacenamiento de datos.
Además, en un modo de realización preferente, el procedimiento presenta proporcionar variables en el dispositivo de almacenamiento de datos mediante un primer módulo de programa de los módulos de programa, publicar las variables proporcionadas mediante el dispositivo de almacenamiento de datos para al menos un segundo módulo de programa de los módulos de programa y acceder a las variables en el dispositivo de almacenamiento de datos mediante al menos el segundo módulo de programa.
En otra configuración del procedimiento está previsto proporcionar al menos un mecanismo de búfer para almacenar variables en la metainformación en el dispositivo de almacenamiento de datos.
Se pueden usar diferentes mecanismos de búfer o mecanismos de memoria, tal como, por ejemplo, un búfer cuádruple o un único búfer como un almacenamiento único. El mecanismo de búfer se puede adaptar, por ejemplo, para escalar a sistemas con una pequeña memoria de trabajo.
En otra configuración, el procedimiento presenta además ventajosamente un uso de una interfaz de programación en un módulo de programa, en el que la interfaz de programación posibilita una búsqueda a través de la metainformación en el dispositivo de almacenamiento de datos.
Además, la generación dinámica de conectores se puede prever de manera ventajosa en el procedimiento.
Por ejemplo, la búsqueda a través de la metainformación permite una generación dinámica de conectores (suscripción), por ejemplo, mediante un servidor OPC-UA. En este contexto, dinámico significa que esta conexión no se configura mediante un archivo de descripción, sino que se puede generar y también suprimir en tiempo de ejecución a través de una API del dispositivo de almacenamiento de datos.
Además, en el procedimiento está previsto ventajosamente que el dispositivo de almacenamiento de datos esté conformado para abastecer al menos algunos de los módulos del programa con metainformación en respuesta al archivo de descripción, de tal manera que se puedan ejecutar en diferentes procesos gestionados por el sistema operativo en tiempo real.
En otro modo de realización del procedimiento se puede prever una conversión de las variables de un primer tipo de datos a un segundo tipo de datos mediante el conector.
Además, el procedimiento puede incluir ventajosamente realizar una operación funcional con el conector.
Otra opción de los conectores es la posibilidad de efectuar también operaciones funcionales de forma similar a una conversión de tipos. Así, por ejemplo, una temperatura se puede convertir de Fahrenheit a Celsius sin programación adicional.
En otro modo de realización del procedimiento se puede prever una ampliación del dispositivo de almacenamiento de datos mediante un módulo de programa adicional sin que se lleve a cabo un reinicio de un sistema de control.
Un sistema de control designa un control de secuencia en el que los módulos del programa típicamente se pueden cargar, iniciar, depurar, detener y descargar. El sistema de control se basa en el sistema operativo en tiempo real.
Es ventajoso que sea posible una ampliación del sistema de control sin que se tenga que interrumpir el sistema de control para un reinicio. De esta manera, la operación se puede seguir continuamente.
Además, en el procedimiento se puede prever proporcionar ventajosamente un valor de reemplazo mediante el conector en el caso de que no se realice una actualización de una variable publicada dentro de un intervalo de tiempo definido.
Para satisfacer los diferentes requisitos de los programas, los conectores pueden presentar diferentes propiedades. Por tanto, el usuario tiene la posibilidad de elegir entre diferentes conectores que, dependiendo de los objetivos de diseño de la aplicación, ponen un foco, por ejemplo, en la capacidad de funcionamiento en tiempo real, la consistencia de los datos, el consumo de memoria o combinaciones de estas propiedades. Los conectores pueden asumir adicionalmente la tarea de proporcionar valores de reemplazo si los programas no actualizan sus variables publicadas dentro de un intervalo de tiempo definido.
En otra configuración ventajosa, el procedimiento presenta configurar la memoria de datos con el archivo de descripción mediante definición de una conexión, un tipo de datos para la conexión y una dirección de datos de la conexión.
Aquí el término "conexión" se debe equiparar con la designación "puerto". La dirección de datos de una conexión se puede definir como puerto de entrada o como puerto de salida. La conexión entre un puerto de salida de un programa de publicación y un puerto de entrada de un programa de suscripción se realiza con la ayuda de un conector. El conector proporciona una pluralidad de funcionalidades. Por ejemplo, con el conector se puede efectuar una posible conversión entre diferentes tipos de datos de los dominios del programa involucrados. Así, por ejemplo, un INT de un programa IEC 61131-3 se puede convertir de manera sencilla en un int16 de un programa C++.
Los datos de otros componentes, tal como, por ejemplo, los datos de los sistemas de bus de campo, también se pueden reproducir en el dispositivo de almacenamiento de datos como puertos enlazables. Esto posibilita al usuario conectar de manera sencilla datos IO (IO = Entrada Salida) a los programas de diferentes dominios de programación. De esta manera, por ejemplo, los aparatos de un bus de campo se pueden representar de forma estructurada como variables y recibir nombres definidos por el usuario.
Además, el objetivo de la invención se consigue mediante un dispositivo de almacenamiento de datos para el intercambio de datos entre módulos de programa de lenguajes de programación iguales o diferentes en un sistema operativo en tiempo real, en el que el dispositivo de almacenamiento de datos presenta una memoria para llevar a cabo el procedimiento de acuerdo con a la invención.
El dispositivo de almacenamiento de datos se conforma preferentemente como un dispositivo de almacenamiento de datos global (GDS). Además, el dispositivo de almacenamiento de datos puede estar instalado como un componente de software implementado centralmente de un controlador en una instalación de automatización. En este caso, el dispositivo de almacenamiento de datos puede ofrecer datos locales del aparato a través de una memoria para el intercambio entre programas y se puede utilizar igualmente por todos los procesos.
En una configuración del dispositivo de almacenamiento de datos está prevista un área de intercambio en la memoria del dispositivo de almacenamiento de datos, en la que se pueden escribir datos y leer datos, pudiendo acceder los módulos de programa al dispositivo de almacenamiento de datos a través de interfaces.
El dispositivo de almacenamiento de datos y sus conectores pueden favorecer un intercambio constante de variables dentro de una tarea, así como por encima de los límites de la tarea. El principio de la clásica ejecución de programa IEC 61131-3 se traslada a la ejecución de tareas. Por consiguiente, los datos de entrada están a disposición de los programas en otras tareas de forma consistente a la tarea. Además, la metainformación o los datos se pueden intercambiar directamente entre los programas dentro de una tarea.
Además, el objetivo de la invención se logra mediante un dispositivo para el intercambio de datos entre módulos de programa de lenguajes de programación iguales o diferentes en un sistema operativo en tiempo real. En este caso, el dispositivo presenta un dispositivo de almacenamiento de datos de acuerdo con la invención, al menos un procesador y al menos una interfaz a un dispositivo de automatización.
Además, el objeto de la invención se logra con un sistema operativo en tiempo real para el intercambio de datos entre módulos de programa de lenguajes de programación iguales o diferentes. El sistema operativo en tiempo real presenta un dispositivo de almacenamiento de datos, al menos un archivo de descripción depositado, con el que se puede configurar el dispositivo de almacenamiento de datos, y varios módulos de programa ejecutables por el sistema operativo en tiempo real que se crean utilizando lenguajes de programación iguales o diferentes. En este caso, el dispositivo de almacenamiento de datos está conformado para conectar los módulos de programa entre sí utilizando conectores para intercambiar al menos una variable entre módulos de programa, en el que la metainformación con al menos una variable está almacenada en el dispositivo de almacenamiento de datos.
La metainformación con al menos una variable se puede utilizar por los conectores para establecer una conexión. Además, se usan uno o más archivos de descripción, que pueden estar configurados, por ejemplo, como archivo XML. En el caso de una pluralidad de archivos de descripción, estos se pueden reunir para formar una configuración o una configuración general. Esto puede ocurrir mediante un archivo de configuración de orden superior a los archivos de descripción.
Además, el objetivo de la invención se consigue con un producto de programa informático con medios de código de programa para llevar a cabo el procedimiento de acuerdo con la invención, en el que el producto de programa informático se ejecuta en un sistema informático en un sistema operativo en tiempo real.
Algunos ejemplos de modo de realización de la invención se representan de forma puramente esquemática en los dibujos y se describen con más detalle a continuación. Muestra:
Fig. 1 un ejemplo de modo de realización de un dispositivo para el intercambio de datos entre módulos de programa en un sistema operativo en tiempo real;
Fig. 2 un ejemplo de modo de realización para un enlace de puertos con diferentes tipos de datos para controlar una máquina; y
Fig. 3 un ejemplo de modo de realización para ejecutar tareas con diferentes módulos de programa en un sistema operativo en tiempo real.
La fig. 1 muestra un ejemplo de modo de realización de un dispositivo 10 para el intercambio de datos entre módulos de programa 11, 12, 13 en un sistema operativo en tiempo real. En este caso se lleva a cabo un intercambio de datos en tiempo real entre los módulos de programa 11, 12, 13 a través de un dispositivo de almacenamiento de datos 20. Los módulos de programa 11, 12, 13 con los programas CPPFilter, IEC Sync y SIM_CTRL se pueden conectar entre sí a través de conectores para el intercambio de datos. Un conector 14 a modo de ejemplo, o también denominado "conector inteligente", se muestra esquemáticamente como una flecha entre los módulos de programa 11 y 12, que se puede denominar "conector inteligente". El conector 14 proporciona una conexión desde el módulo de programa 11 al módulo de programa 12 a través del dispositivo de almacenamiento de datos 20.
En este caso, en la fig. 1, la conexión desde el módulo de programa 11 con el CPP_Filter en la memoria global 20 y luego desde allí al módulo de programa 12 con el programa IEC_Sync es una representación simplificada de cómo se accede a los datos o se depositan los datos. El conector 20 define cómo la fuente de datos (CPP_Filter) puede escribir las variables/datos y cómo el sumidero de datos (IEC_Sync) puede leerlos. A este respecto, con "conector inteligente" se designa que, entre otras cosas, también se puede especificar información sobre las conversiones de los datos.
Además del nombre de la variable, también se puede depositar otra metainformación adicionalmente en el dispositivo de almacenamiento de datos 20. A ello pertenecen, entre otras cosas, la hora del último cambio, los derechos de acceso, la visibilidad, el tipo de datos, los atributos definidos por el usuario o un texto descriptivo.
Además de los tipos de datos básicos que se conocen de cada lenguaje de programación, los conectores 14 también pueden enlazar entre sí tipos de datos definidos por el usuario, tal como, por ejemplo, estructuras, matrices o combinaciones de estas dos. A este respecto, un enlace se puede aplicar a todo el tipo de datos o partes de él.
Además, en la fig. 1 están representados esquemáticamente otros componentes, que están realizados, por ejemplo, como componentes de software, tal como un bus de campo 15, un servidor OPC-UA 16, un servidor web 17 y cualquier otro componente 18 de una instalación de automatización, que acceden de lectura y escritura respectivamente en los datos proporcionados 21-31 en el dispositivo de almacenamiento de datos 20.
Además, el dispositivo de almacenamiento de datos 10 presenta un procesador 32 y una interfaz 33 para un dispositivo de automatización. En el presente ejemplo, el dispositivo de almacenamiento de datos 20 está conectado al procesador 32 y también a la interfaz 33. Las conexiones pueden ser cableadas o inalámbricas. Además, la interfaz 33 está conectada con un componente del bus de campo 15 en el presente ejemplo de modo de realización.
El dispositivo de almacenamiento de datos 11 de la fig. 1 es una memoria global para depositar datos, en el que los datos 21-31 están realizados como metadatos o metainformación y contienen al menos una variable. Estas variables se pueden publicar en el dispositivo de almacenamiento de datos 11 y ponerse a disposición de otros módulos de programa 11, 12, 13 o componentes 15, 16, 17, 18 suscribiéndose a ellos y recibiéndolos en tiempo real.
Cada módulo de programa 11, 12, 13, independientemente del dominio de programación, recibe la posibilidad de depositar variables en el dispositivo de almacenamiento de datos 20 como un espacio de datos global mediante el uso de una API predeterminada. Un depósito y publicación de las variables se pueden realizar mediante una configuración estática al inicio del sistema, así como dinámicamente en tiempo de ejecución. A este respecto, las variables reciben un nombre unívoco con el que se pueden buscar en el dispositivo de almacenamiento de datos 20. Después de la publicación, la variable se puede suscribir por otros módulos del programa y, por tanto, se pueden usar sus valores. Una variable publicada se define como puerto de entrada o puerto de salida, de acuerdo con la dirección de lectura o escritura de los datos.
La fig. 2 muestra un ejemplo de modo de realización para un enlace de puertos con diferentes tipos de datos para controlar una máquina, en particular para controlar un tren de accionamiento de la máquina. A este respecto, las conexiones 41 a 46 representan conectores tal como se muestra en la fig. 1. Los puertos que están interconectados en la fig. 1 no están representados en las otras figuras. El conector 41 muestra una conversión de booleano a BIT, el conector 44 la interconexión de estructuras y sus elementos y el conector 46 la interconexión de elementos vectoriales que incluyen intercambio de bytes, corrección de escala/desplazamiento y conversión de tipos. A este respecto, un enlace se puede aplicar a todo el tipo de datos o partes de él.
La fig. 3 muestra un ejemplo de realización para ejecutar las tareas 50, 51 con diferentes módulos de programa 11, 12, 13 en un sistema operativo en tiempo real. Los módulos de programa 11, 12, 13 reciben sus datos, en particular variables suscritas, del dispositivo de almacenamiento de datos 20, tal como se representa y describe en la fig. 1.
La fig. 3 muestra una estructura a modo de ejemplo de las tareas 50, 51 o tasks, programas y conectores, teniendo en cuenta un control de secuencia. El intercambio de datos consistente con la tarea entre la tarea 50 como tarea cíclica principal y la tarea 51 como tarea cíclica de control o tarea de control se implementa mediante mecanismos de búfer 54 del dispositivo de almacenamiento de datos 20. La consistencia de los datos es independiente de las tareas individuales 50, 51 o tasks, su prioridad y su comportamiento temporal.
La primera tarea 50 presenta los módulos de programa 11 y 12 con los programas CPP_Filter e IEC_Sync, en la que los lenguajes de programación de los módulos de programa 11, 12 difieren entre sí. Además, la segunda tarea 51 presenta el módulo de programa 13 con el programa SIM_CTRL. El módulo de programa 13 también está escrito en un lenguaje de programación diferente en comparación con los lenguajes de programación de los módulos de programa 11, 12. Por tanto, todos los módulos de programa presentan un lenguaje de programación diferente.
La fig. 3 reproduce una estructura esquemática de conexiones entre puertos. En este caso, hay puertos entrantes y salientes, que se denominan como puertos de entrada 52 y puertos de salida 53, y se envían a través de los datos de entrada o datos de salida.
Los conectores son las flechas dibujadas en la fig. 3 dentro y fuera de las tareas 50, 51. En este caso, los conectores se sincronizan a través de mecanismos de búfer 54, tal como, por ejemplo, una memoria cuádruple 4, para el intercambio de datos sin bloqueo y consistente con el ciclo entre los módulos de programa 11, 12, 13. Con los conectores se define de qué modo y manera se copian posteriormente los datos en el destino. Un ejemplo de un conector es la ruta completa desde la salida 53 de la tarea 51 hasta la entrada 52 de la tarea 50 a través del mecanismo de búfer 54 del dispositivo de almacenamiento de datos 20.
En la fig. 3 también hay una conexión directa del módulo de programa 11 con CPP_Filter al módulo de programa 12 con IEC_Sync en la tarea 50, sin que se use una ruta a través de los conectores representados a continuación. Esta conexión no está representada en la fig. 1.
Mediante la provisión del dispositivo de almacenamiento de datos 20 de acuerdo con la invención como un almacenamiento de datos global o como un espacio de datos global (GDS) y como parte de un dispositivo de almacenamiento de datos 10 se implementa la posibilidad de una comunicación equivalente entre programas o módulos de programa 11, 12, 13 de diferentes dominios de programación. Es posible un intercambio de datos en tiempo real entre módulos de programa 11, 12, 13 o programas, que también pueden estar escritos en diferentes lenguajes de programación. A este respecto, el dispositivo de almacenamiento de datos 20 puede asumir la función de un conjunto de datos, lo que permite el enlace de tipos de datos tanto primitivos como también complejos de diferentes lenguajes de programación. En este caso se exigen y cumplen altos requisitos en la consistencia de los datos y el rendimiento del intercambio de datos, en particular en la operación en tiempo real. El dispositivo de almacenamiento de datos 20 posibilita una gestión de las conexiones de datos establecidas entre los programas y la metainformación que posibilita una exploración y la conexión dinámica a los datos existentes.
En conjunto, de acuerdo con la invención, se posibilita una funcionalidad como parte de una nueva arquitectura de firmware, en base a la cual se pueden implementar nuevos controles industriales. Esta arquitectura está diseñada en primer lugar para el uso en un aparato o unidad de control.
En este caso, se pretende apoyar la compleción de lenguajes de alto nivel a la programación clásica de controles. Para ello, se busca una transición suave entre IEC 61131-3 y el mundo de los lenguajes de alto nivel. Además de apoyar dichos lenguajes, el requisito previo para esto es la integración perfecta de los diferentes dominios de programación. Entre ellos figuran entre otros Matlab/Simulink, C++, C#, JAVA, Python y los lenguajes IEC 61131­ 3. Para tal integración perfecta, el control debería ser capaz de transferir el proceso conocido de IEC 61131-3 con instancias de programa y tareas al proceso de los otros dominios de programación. A pesar de estos requisitos más complejos para la implementación técnica se garantizan adicionalmente aspectos de seguridad de datos, usabilidad, flexibilidad y, sobre todo, rendimiento.
A continuación, se especifica a modo de ejemplo un posible contenido de un archivo de descripción para configurar un dispositivo de almacenamiento de datos en formato XML:
<?xml version=,,1.0" encoding=,,utf-8"?>
<GdsConfigurationDocument>
<GdsComponentSettings>
<SharedDataSettings Size="1000000" />
<SharedMetaDataSettings Size="1000000" />
<SharedMetaConfigSettings Size="1000000" />
<MetaDataPaths>
<MetaDataPath ConfigPath="./CppCounter.meta.config" />
<MetaDataPath ConfigPath="./CppConfig.meta.config" />
<MetaDataPath ConfigFath="./PizController.meta.config" />
</MetaDataPaths>
</GdsComponentSettings>
<TaskBufferRelations>
<Task-BufferRelation Task="TaskConf" BufferType="Single"/>
<TaskBufferRelation Task="TaskMain" BufferType="Default"/>
<TaskBufferRelation Task="TaskCount' BufferType="Quad"/>
</TaskBufferRelations>
<Connections>
<Connection
StartPort="Arp.Demonstrator.CppCounter-1/CppCounter-1:CounterI6" EndPort="Arp.Fbi.Profinet.Pnc-0/3.3:D016"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Fbi.Profinet.Pnc-0/2.2:FreigabeTaster" EndPort="Arp.Demonstrator.CppConfig-1/CppConfig-1:FreigabeTaster"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Demonstrator.CppConfig-1/CppConfig-I:Freigabe" EndPort="Arp.Fbi.Profinet.Pnc-0/2.2:FreigabeLed"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Demonstrator.CppConfig-1/CppConfig-I:Freigabe" EndPort="Arp.Demonstrator.PizController-I/PizController-1/:Freigabe_Regler" Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Demonstrator.CppConfig-1/CppConfig-I:theta_soll" EndPort="Arp.Demonstrator.PizController-I/PizController-1:theta_soll"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Demonstrator.CppConfig-1/CppConfig-I:psi_soll" EndPort="Arp.Demonstrator.PizController-I/PizController-1:psi-soll"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Demonstrator.PizController-I/PizController-1:U_G_converted" EndPort="Arp.Fbi.Profinet.Pnc-0/2.2:U_G_converted"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Demonstrator.PizController-I/PizController-1:U_N_converted" EndPort="Arp.Fbi.Profinet.Pnc-0/2.2:U_N_converted"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Fbi.Profinet.Pnc-0/1.1 :theta" EndPort="Arp.Demonstrator.PizController-I/PizController-1:theta,
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Fbi.Profinet.Pnc-0/1.1:psi" EndPort="Arp.Demonstrator.PizController-I/PizController-1:psi"
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Fbi.Profinet.Pnc-0/1.1:dot_theta"
EndPort=,,Arp.Demonstrator.PizController-I/PizController-1:dot_thetan
Min="" Max="" Log="True" RangeCheck="false"/>
<Connection
StartPort="Arp.Fbi.Profinet.Pnc-0/1.1:dot psi"
EndPort="Arp.Demonstrator.PizController-I/PizController-1:dot_psi"
Min="" Max="" Log="True" RangeCheck="false"/>
</Connections>
</GdsConfigurationDocument>
A continuación, se especifica a modo de ejemplo un posible contenido de un archivo con metainformación sobre un módulo de programa en formato XML:
<MetaConfiguration Document
xmlns:td="http://www.phoenixcontact.com/schema/typedomain" xmlns="http://www.phoenixcontact.com/schema/metaconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phoenixcontact.com/schema/metaconfig"
schemaVersion="I.3" >
<Program
name="PizController"
version="1.0"
typeDomain="com.phoenixcontact.arp.basetypes.cpp">
<Descriptions>
<Description languageld="DE" text="Eine Programmbeschreibung" />
<Description languageld="EN" text="A program description" />
</Descriptions>
<!-- List of events that can be triggered by this program -->
<Events>
<Event name="ExampleEventThrownByAProgram" >
<Descriptions>
<Description languageld="EN" text="An example Event that is thrown by this program"
/>
</Descriptions>
</Event>
</Events>
<Ports>
<Port name="CompPerson" type="Arp.Demonstrator.PizControllerComponent:Person" kind="Output" multiplicity="1">
<Descriptions>
<Description languageld="DE" text="Typ wurde in Komponente definiert" />
</Descriptions>
</Port>
<Port name="FunktionsStatus" type="float" kind="Output" multiplicity="I">
<Descriptions>
<Description languageld="DE" text="Typ wurde in externer Typdomain definiert" /> </Descriptions>
</Port>
<Port name="theta_soll" type="float" kind="Input" multiplicity="1">
<Attributes>
<Attribute name="Farbe" value="Rot" />
</Attributes>
<Descriptions>
<Description languageld="DE" text="Typ gehoert zur typeDomain des Programms.
Dazu kommt noch ein Attribut." />
</Descriptions>
</Port>
<Port name="psi_soll" type="float" kind="Input" multiplicity="1" />
<Port name="theta" type="float" kind="Input" multiplicity="1" />
<Port name="psi" type="float" kind="Input" multiplicity="1" />
<Port name="dot_theta" type="float" kind=Input" multiplicity="I" /> <Port name="dot_psi" type="float" kind="Input" multiplicity="1" /> <Port name="Freigabe_Regler" type="bool" kind="Input" multiplicity="1" /> <Port name="IAnteil_Aktiv" type="bool" kind="Input" multiplicity="1" /> <Port name="U_N" type="float" kind="Output" multiplicity="I" /> <Port name="U_G" type="float" kind="Output" multiplicity="I" /> <Port name="Sine" type="float" kind="Output" multiplicity="1" /> <Port name="U_G_converted" type="intI6" kind="Output" multiplicity="1" /> <Port name="U_N_converted" type="intI6" kind="Output" multiplicity="1" /> </Ports>
</Program>
</MetaConfiguration Documenta
Lista de referencias
10 Dispositivo
11 Módulo de programa
12 Módulo de programa
13 Módulo de programa
14 Conector
15 Bus de campo o en inglés Fieldbus
16 Servidor OPC-UA
17 Dispositivo de almacenamiento de datos
18 Componente
20 Dispositivo de almacenamiento de datos
21-31 Datos
32 Procesador
33 Interfaz
41-46 Conectores
50 Tareas
51 Tareas
52 Entrada o puerto de entrada
53 Salida o puerto de salida
54 Mecanismo de búfer

Claims (16)

REIVINDICACIONES
1. Procedimiento para el intercambio de datos en tiempo real entre módulos de programa (11, 12, 13), en el que los módulos de programa se ejecutan en un aparato de control en una instalación de automatización, y en el que los módulos de programa son parte de una aplicación general para la ejecución en el aparato de control, que comprende
provisión de un dispositivo de almacenamiento de datos (20) que proporciona un espacio de datos global en el que los módulos del programa pueden depositar valores de variables, de modo que otros módulos del programa pueden acceder a estos, en el que el dispositivo de almacenamiento de datos presenta un componente de software que forma parte del firmware del dispositivo de control,
provisión de al menos un archivo de descripción, en el que el archivo de descripción presenta metainformación que describe qué variables ofrece un módulo de programa con la ayuda de puertos, configuración del dispositivo de almacenamiento de datos (20) con el archivo de descripción, en el que la metainformación del archivo de descripción se almacena en el dispositivo de almacenamiento de datos, en el que la metainformación almacenada (21-31) presenta al menos una variable, y en el que se proporciona al menos un conector (14), en el que el conector designa una funcionalidad del dispositivo de almacenamiento de datos que proporciona una conexión desde uno de los módulos de programa a otro de los módulos de programa a través del dispositivo de almacenamiento de datos, en el que el conector describe de qué manera se escriben y leen los datos de la variable en una memoria del dispositivo de almacenamiento de datos, de modo que se puede establecer una conexión entre los módulos de programa (11, 12, 13) a través del dispositivo de almacenamiento de datos (20), en el que los módulos de programa (11, 12, 13) se pueden ejecutar por un sistema operativo en tiempo real, e
intercambio de las variables entre uno de los módulos de programa (11, 12, 13) y el dispositivo de almacenamiento de datos (20) a través del conector (14),
además que presenta
provisión de variables en el dispositivo de almacenamiento de datos (20) mediante un primer módulo de programa de los módulos de programa (11, 12, 13),
publicación de las variables proporcionadas mediante el
dispositivo de almacenamiento de datos (20) para al menos un segundo módulo de programa de los módulos de programa (11, 12, 13), y
acceso a las variables en el dispositivo de almacenamiento de datos (20) mediante al menos el segundo módulo de programa.
2. Procedimiento de acuerdo con la reivindicación 1, en el que los módulos de programa (11, 12, 13) se crean usando diferentes lenguajes de programación.
3. Procedimiento de acuerdo con una de las reivindicaciones 1 o 2,
además que presenta
provisión de al menos un mecanismo de búfer (34) para almacenar variables (21-31) en el dispositivo de almacenamiento de datos (20).
4. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
uso de una interfaz de programación en un módulo de programa (11, 12, 13), en el que la interfaz de programación posibilita una búsqueda da través de la metainformación (21-31) en el dispositivo de almacenamiento de datos (20).
5. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
generación dinámica de conectores (14).
6. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
caracterizado por que
el dispositivo de almacenamiento de datos (20) está conformado para abastecer al menos algunos de los módulos de programa (11, 12, 13) con metainformación (21-31) en respuesta al archivo de descripción, de tal manera que se pueden ejecutar en diferentes procesos gestionados por el sistema operativo en tiempo real.
7. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
conversión de las variables de un primer tipo de datos a un segundo tipo de datos mediante el conector (14).
8. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
realización de una operación funcional con el conector (14).
9. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
ampliación del dispositivo de almacenamiento de datos (20) mediante un módulo de programa adicional (11, 12, 13) sin que se lleve a cabo un reinicio de un sistema de control.
10. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
provisión de un valor de reemplazo mediante el conector (14) para el caso de que una actualización de una variable publicada no se realice dentro de un intervalo de tiempo definido.
11. Procedimiento de acuerdo con una de las reivindicaciones anteriores,
además que presenta
configuración del dispositivo de almacenamiento de datos (20) con el archivo de descripción mediante definición de un puerto, un tipo de datos para el puerto y una dirección de datos del puerto.
12. Dispositivo de almacenamiento de datos (20) para el intercambio de datos entre módulos de programa (11, 12, 13) en un sistema operativo en tiempo real, en el que los módulos de programa (11, 12, 13) se pueden ejecutar por el sistema operativo en tiempo real en un aparato de control en una instalación de automatización como parte de una aplicación global para la ejecución en el aparato de control, en el que el dispositivo de almacenamiento de datos presenta un componente de software y una memoria, en el que el componente de software forma parte del firmware del aparato de control, y en el que el dispositivo de almacenamiento de datos proporciona un espacio de datos global en el que los módulos de programa pueden depositar valores de variables, de modo que otros módulos de programa puedan acceder a estos, y en el que el dispositivo de almacenamiento de datos se puede configurar con un archivo de descripción, en el que el archivo de descripción presenta metainformación que describe qué variables ofrece un módulo de programa con la ayuda de puertos, y en el que la metainformación del archivo de descripción se almacena en la memoria de datos, en el que la metainformación almacenada (21-31) presenta al menos una variable, y en el que el dispositivo de almacenamiento de datos está conformado para proporcionar al menos un conector (14), en el que el conector designa una funcionalidad del dispositivo de almacenamiento de datos que proporciona una conexión de uno de los módulos de programa a otro de los módulos de programa a través del dispositivo de almacenamiento de datos, en el que el conector describe de qué manera se escriben y leen los datos de la variable en una memoria del dispositivo de almacenamiento de datos, de modo que se puede establecer una conexión entre los módulos de programa (11, 12, 13) a través del dispositivo de almacenamiento de datos (20), y en el que
el dispositivo de almacenamiento de datos está conformado para el intercambio de las variables entre uno de los módulos de programa (11, 12, 13) y el dispositivo de almacenamiento de datos (20) a través del conector (14), y en el que
el dispositivo de almacenamiento de datos está conformado además para
publicar variables proporcionadas mediante un primer módulo de programa de los módulos de programa (11, 12, 13) en el dispositivo de almacenamiento de datos (20) para al menos un segundo módulo de programa de los módulos de programa (11, 12, 13), de modo que se puede acceder a las variables en el dispositivo de almacenamiento de datos (20) mediante al menos el segundo módulo de programa.
13. Dispositivo de almacenamiento de datos (20) de acuerdo con la reivindicación 12, en el que el dispositivo de almacenamiento de datos (20) está conformado para el intercambio de datos entre módulos de programa (11, 12, 13) de diferentes lenguajes de programación.
14. Dispositivo de almacenamiento de datos (20) de acuerdo con una de las reivindicaciones 12 o 13, que presenta un área de intercambio en la memoria en la que se pueden escribir datos y leer datos, en el que el dispositivo de almacenamiento de datos está conformado para que los módulos de programa (11, 12, 13) puedan acceder al dispositivo de almacenamiento de datos a través de las interfaces de programación (20).
15. Dispositivo (10) para el intercambio de datos entre módulos de programa (11, 12, 13) en un sistema operativo en tiempo real, que presenta
un dispositivo de almacenamiento de datos (20) de acuerdo con una de las reivindicaciones 12 a 14; al menos un procesador (32), y
al menos una interfaz (33) a un dispositivo de automatización.
16. Dispositivo (10) de acuerdo con la reivindicación 15, en el que el dispositivo está conformado para el intercambio de datos entre módulos de programa (11, 12, 13) de diferentes lenguajes de programación.
ES17794354T 2016-11-10 2017-11-10 Intercambio de datos en tiempo real entre módulos de programa Active ES2909553T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
LU93300A LU93300B1 (de) 2016-11-10 2016-11-10 Austausch von Echtzeitdaten zwischen Programmmodulen
PCT/EP2017/078924 WO2018087308A1 (de) 2016-11-10 2017-11-10 Austausch von echtzeitdaten zwischen programmmodulen

Publications (1)

Publication Number Publication Date
ES2909553T3 true ES2909553T3 (es) 2022-05-09

Family

ID=57960772

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17794354T Active ES2909553T3 (es) 2016-11-10 2017-11-10 Intercambio de datos en tiempo real entre módulos de programa

Country Status (7)

Country Link
US (1) US10977099B2 (es)
EP (2) EP3538996B1 (es)
CN (1) CN109937404B (es)
DK (1) DK3538996T3 (es)
ES (1) ES2909553T3 (es)
LU (1) LU93300B1 (es)
WO (1) WO2018087308A1 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094192B (zh) * 2021-04-23 2024-05-28 杭州网易云音乐科技有限公司 一种数据处理方法、装置、介质和设备
CN115291853B (zh) * 2022-10-09 2023-02-24 浙江中控研究院有限公司 一种ld语言在plc编程软件中导出导入的方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915487B2 (en) * 2000-12-11 2005-07-05 International Business Machines Corporation Method, system, computer program product, and article of manufacture for construction of a computer application interface for consumption by a connector builder
US7499899B2 (en) * 2004-07-02 2009-03-03 Northrop Grumman Corporation Dynamic software integration architecture
EP2456124A1 (de) * 2010-11-23 2012-05-23 Siemens Aktiengesellschaft Geberschnittstellenengineering
US20130055291A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
FR3006473B1 (fr) * 2013-06-04 2017-10-13 Euriware Procede d'echange de donnees descriptives d'installations techniques
CN103455591B (zh) * 2013-08-30 2017-05-10 国家电网公司 一种并行协同系统的标准数据交换接口方法
CH709007A2 (de) * 2013-12-19 2015-06-30 Opacc Lab Ag Service Bus zur Integration verteilter Informations- und Kommunikationsdienste in die Anwendungslandschaft eines kleinen oder mittelständischen Unternehmens.

Also Published As

Publication number Publication date
DK3538996T3 (da) 2022-04-11
US10977099B2 (en) 2021-04-13
CN109937404A (zh) 2019-06-25
EP3995960A1 (de) 2022-05-11
EP3538996B1 (de) 2022-01-26
LU93300B1 (de) 2018-06-18
WO2018087308A1 (de) 2018-05-17
CN109937404B (zh) 2023-05-09
US20190272203A1 (en) 2019-09-05
EP3538996A1 (de) 2019-09-18

Similar Documents

Publication Publication Date Title
US20140123104A1 (en) Method and device for the programming and configuration of a programmable logic controller
Drath et al. Concept for interoperability between independent engineering tools of heterogeneous disciplines
EP1735704A2 (en) Dependency graph parameter scoping
CN104462269A (zh) 一种异构数据库数据交换方法及系统
ES2909553T3 (es) Intercambio de datos en tiempo real entre módulos de programa
ES2913636T3 (es) Control de secuencia de módulos de programa
CN109643355B (zh) 控制器和控制管理系统
US8341652B2 (en) Method for programmatic editing of configuration files
CN103827849A (zh) 支持事务式中间件机器环境中的复杂消息标头的系统和方法
Stavrinos ROS2 for ROS1 users
WO2005124571A1 (ja) データ相互アクセス方法およびデータ相互アクセスシステム
US9830204B2 (en) Facilitating communication between software components that use middleware
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
US10635625B2 (en) Plug connector component, plug connector, plug connector system and method for assembling and operating a plug connector
Henrio et al. Active objects with deterministic behaviour
US11249738B2 (en) On-board computing system for an aircraft
US9342296B2 (en) Navigation between application locations of resources in automation systems
US20210409257A1 (en) Managing data schema differences by path deterministic finite automata
US20230014487A1 (en) Updating a Digital Object Representing a Real-World Object
JP6466024B1 (ja) 制御システムおよび経路情報生成方法
Aycock MPI Ruby with remote memory access
CN117667315A (zh) 基于容器的多版本开发环境构建方法、装置及存储介质
Ives et al. Moving to the open source open62541 library for PLC communication at the European Southern Observatory's Very Large Telescope
Kern et al. The Dimension Architecture: A New Approach to Resource Access
US8838634B1 (en) Custom user parallel data import and export