MXPA04008163A - Memoria compartida, distribuida, tolerante a las fallas. - Google Patents

Memoria compartida, distribuida, tolerante a las fallas.

Info

Publication number
MXPA04008163A
MXPA04008163A MXPA04008163A MXPA04008163A MXPA04008163A MX PA04008163 A MXPA04008163 A MX PA04008163A MX PA04008163 A MXPA04008163 A MX PA04008163A MX PA04008163 A MXPA04008163 A MX PA04008163A MX PA04008163 A MXPA04008163 A MX PA04008163A
Authority
MX
Mexico
Prior art keywords
memory
segment
data
additional
devices
Prior art date
Application number
MXPA04008163A
Other languages
English (en)
Inventor
Timothy Robert Day
Original Assignee
Mc Graw Edison Co
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 Mc Graw Edison Co filed Critical Mc Graw Edison Co
Publication of MXPA04008163A publication Critical patent/MXPA04008163A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer And Data Communications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Small-Scale Networks (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

Tecnicas de comparticion de memoria que incluye proporcionar un primer dispositivo y uno o mas dispositivos adicionales. Cada dispositivo tiene una memoria y se configura para que se conecte con una red. Se asigna una porcion de la memoria del primer dispositivo y puede dividirse en dos o mas segmentos de memoria del primer dispositivo. Cada segmento de memoria del primer dispositivo corresponde a un dispositivo, y al menos uno de los segmentos de memoria del primer dispositivo corresponde a un dispositivo adicional. Se asigna una porcion de la memoria del dispositivo adicional y puede dividirse en dos o mas segmentos de memoria del dispositivo adicional. Cada segmento de la memoria del dispositivo adicional corresponde a un dispositivo y al menos un segmento de la memoria del dispositivo adicional corresponde al primer dispositivo. Se proporciona un segmento de datos del primer dispositivo al dispositivo adicional y se deriva una indicacion de validez de datos del primer dispositivo en el dispositivo adicional. Se asocia la indicacion de validez de datos del primer dispositivo con el segmento de datos del primer dispositivo, y se actualiza el area de memoria del dispositivo adicional correspondiente al primer dispositivo basandose en la asociacion.

Description

MEMORIA COMPARTIDA, DISTRIBUIDA, TOLERANTE A LAS FALLAS ANTECEDENTES DE LA INVENCIÓN Las aplicaciones de memoria compartida muchas veces implican una sola memoria física que se usa por múltiples dispositivos, como por ejemplo, microprocesadores. Por lo general, el sistema físico especializado es necesario para resolver cuestiones como conflictos en el acceso cuando dos o más dispositivos intentan almacenar datos de forma simultanea. Semejante metodología puede resultar costosa cuando se almacenan datos entre nodos de control y de monitoreo físicamente dispersos y conectados en una red de comunicaciones de baja velocidad.
SUMARIO DE LA INVENCIÓN La siguiente descripción se relaciona con una memoria compartida y, en particular, con la compartición de información entre nodos de una red de comunicaciones. El espacio de memoria puede compartirse de una manera sólida entre múltiples dispositivos conectados a una red de comunicación, manteniendo información compartida en varios nodos individuales de red. Cada dispositivo participante se conecta a la red de comunicación y tiene una memoria configurada para almacenar datos provistos por los dispositivos participantes. Puede compartirse cantidades arbitrarias de memoria. También, los datos compartidos pueden incluir cualquier tipo de datos, como por ejemplo, números de punto flotante, números enteros firmados o no firmados de cualquier longitud, caracteres, bytes, bitios, colecciones de bitios y estructura de datos. Se usan técnicas para proporcionar asuntos de arbitraje de datos. Por ejemplo, la memoria puede tener varios segmentos preasignados para almacenar información provista por los dispositivos participantes conectados a una red de comunicación. Cada dispositivo es responsable de actualizar su bloque de memoria asignada en otros dispositivos. Únicamente a un dispositivo puede permitírsele actualizar un segmento de memoria predeterminado, pero el segmento de memoria es visible a otros dispositivos participantes y puede leerse y utilizarse por otros dispositivos. Puede usarse un mecanismo de difusión como por ejemplo, un comando de difusión basado en el módulo Modbus, para publicar los contenidos de un bloque de memoria asignado a un dispositivo. Se usan técnicas para resolver conflictos en la red, derechos de acceso arbitrarios de red, y para la recuperación de datos causados por fallas, por ejemplo, una falla en el enlace de comunicaciones o una falla en el dispositivo. Por ejemplo, puede emplearse un esquema cíclico al usar un mecanismo de dominio de enlace colectivo basándose en la dirección de la memoria y un mecanismo de pausa. También, donde la fase física de la red de comunicaciones es capaz de detectar y arbitrar conflictos de acceso a la red, cada dispositivo puede intentar trasmitir su segmento de datos, tan pronto como van llegando. Se usan técnicas para detectar y reportar errores en las comunicaciones. Por ejemplo, puede proporcionarse una indicación de validez de datos y asociarse con los datos provistos por un dispositivo participante, lo que permite detectar y reportar errores. También, la detección y reporte de errores en un dispositivo permite que el dispositivo haga decisiones basándose en el mejor conjunto de datos válidos disponibles. Puede usarse semejante sistema en muchos contextos, como por ejemplo, en el control, supervisión y protección de una red de un sistema de alimentación de energía o en el control y supervisión de un proceso industrial . En un aspecto general, la compartición de memoria incluye proporcionar un primer dispositivo y uno o más dispositivos adicionales. Cada dispositivo tiene una memoria y se configura para que se conecte a una red. Se asigna una porción de memoria del primer dispositivo, y puede dividirse en dos o más segmentos de memoria del primer dispositivo. Cada segmento de memoria del primer dispositivo corresponde a un dispositivo, y al menos uno de los segmentos de memoria del primer dispositivo corresponde a un dispositivo adicional. Se asigna una porción de memoria del dispositivo adicional y puede dividirse en dos o más segmentos de memoria del dispositivo adicional. Cada segmento de memoria del dispositivo adicional corresponde a un dispositivo, y al menos un segmento de memoria del dispositivo adicional corresponde al primer dispositivo. Se proporciona un segmento de datos del primer dispositivo al dispositivo adicional y una indicación de validez de datos del primer dispositivo se deriva al dispositivo adicional. La indicación de validez de datos del primer dispositivo se asocia con el segmento de datos del primer dispositivo y el segmento de memoria del dispositivo adicional correspondiente al primer dispositivo se actualiza basándose en la asociación. Las implementaciones pueden incluir una o más de las siguientes características. Por ejemplo, puede tomarse una decisión mediante el dispositivo adicional basándose al menos en parte del segmento de memoria actualizada del dispositivo adicional correspondiente al primer dispositivo. Puede usarse la decisión, por ejemplo, al menos en parte, para supervisar, controlar o proteger un sistema de alimentación de energía, o para supervisar y controlar un proceso industrial. En otra implementación, puede suministrarse el segmento de datos del primer dispositivo periódicamente a los dispositivos adicionales. El tamaño de la porción de memoria asignada para cada dispositivo puede ser igual o diferente al tamaño de la memoria asignada para cada otro dispositivo. También, el tamaño del segmento de memoria para un dispositivo puede ser igual o diferente al tamaño del segmento de memoria de otro dispositivo. En otra modalidad, la red puede incluir un enlace de datos en serie con los dispositivos físicamente dispersos unos de los otros. El segmento de datos del primer dispositivo puede proporcionarse utilizando el protocolo Modbus, y el primer dispositivo puede proporcionar un mecanismo de verificación de errores al dispositivo adicional. También, la indicación de validez del primer dispositivo puede derivarse mediante el dispositivo adicional basándose en la recepción del segmento de datos del primer dispositivo por medio del dispositivo adicional. En todavía otra implementación, puede proporcionarse un segmento de datos del dispositivo adicional al primer dispositivo, y puede derivarse una indicación de validez de datos mediante el primer dispositivo. La indicación de validez de datos del dispositivo adicional se asocia con el segmento de datos del dispositivo adicional, y el segmento de memoria del primer dispositivo correspondiente al dispositivo adicional se actualiza basándose en la asociación. Puede suministrarse el segmento de memoria del dispositivo adicional de forma periódica al primer dispositivo. En otro aspecto general, la compartición de memoria incluye proporcionar dos o más dispositivos participantes. Cada dispositivo participante tiene una memoria y se configura para que se conecte a una red. Se asigna una porción de memoria de cada dispositivo participante, y la porción asignada de memoria tiene dos o más segmentos de memoria, cada uno de los cuales corresponde a un dispositivo participante. Se proporciona un segmento de datos desde un dispositivo participante a todos los otros dispositivos participantes. Se deriva una indicación de validez de datos para el segmento de datos en cada dispositivo participante. La indicación de validez de datos se asocia con el segmento de datos y se actualiza el segmento de memoria correspondiente al segmento de datos provisto . En una implementación, a cada dispositivo participante se le asigna un indicador de secuencia de transmisión, y los segmentos de datos provenientes de los dispositivos participantes se suministran en secuencialmente al proporcionar un segmento de datos de un dispositivo participante a todos los otros dispositivos participantes de acuerdo con el indicador de secuencia de transmisión. El indicador de secuencia de transmisión puede basarse en la dirección del segmento de memoria correspondiente al dispositivo participante. En otra implementación, se suministra un intervalo de tiempo designado para cada dispositivo participante para proporcionar un segmento de datos que corresponda a ese dispositivo. Se proporciona un contador de intervalos asignados y se inicia. Se monitorea el intervalo de tiempo para el suministro de un segmento de memoria mediante el dispositivo participante apropiado, y el siguiente dispositivo en secuencia proporciona un segmento de datos basándose en la terminación del contador de intervalos asignados de transmisión y en la falla que pueda tener el dispositivo participante apropiado para proporciona un segmento de datos. Serán evidentes otras características y ventajas a partir de la descripción, dibujos y reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS O FIGURAS Las Figuras 1 a 3 son diagramas en bloque de un sistema de comunicaciones.
La Figura 4 es un diagrama de un área de memoria compartida que puede implementarse en los sistemas de las Figuras 1 a 3. La Figura 5 es un diagrama de un formato de intercambio de datos que puede implementarse en los sistemas de las Figuras 1 a 3. La Figura 6 es un diagrama en bloques de una secuencia de transmisión de datos que puede implementarse en los sistemas de las Figuras 1 a 3. La Figura 7 es un diagrama en bloques de un sistema de comunicaciones con una condición de falla en una vía de comunicaciones. La Figura 8 es un diagrama en bloques de un sistema de comunicaciones con una condición de falla en un dispositivo. La Figura 9 es un diagrama de flujo de un proceso que puede implementarse mediante el sistema de las Figuras 1 a 3. Los símbolos de referencia similares en los diversos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN . Tal como se muestra en la Figura 1, un sistema de comunicaciones (100) incluye múltiples dispositivos (105A), (105B), (105C) conectados a una red de comunicaciones (120) . El sistema de comunicaciones (100) puede ser, por ejemplo, una red de igual a igual. Los dispositivos (105A) , (105B), (105C) tienen memorias asociadas (110A), (110B), (110C) . Puede utilizarse una cantidad definida de dispositivos en el sistema de comunicaciones (100). Aunque la Figura 1 muestra un sistema de comunicaciones que utiliza tres dispositivos, puede usarse una cantidad diferente de dispositivos. Por ejemplo, pueden usarse dos dispositivos o pueden usarse más de dos dispositivo. Los dispositivos (105A), (105B), (105C) pueden incluir microprocesadores o mícrocontroladores . En una implementación, el sistema de comunicaciones (100) tiene múltiples dispositivos autónomos que no comparten una memoria primaria, pero cooperan al enviar mensajes en la red de comunicaciones (120) . Los dispositivos pueden físicamente cerrarse unos con respecto a otros, físicamente dispersarse, conectarse mediante una red de comunicaciones más confiable y relativamente rápida, o conectarse mediante una red de comunicaciones menos confiable y relativamente lenta. La red de comunicaciones (120) puede ser cualquier red descrita o conocida incluyendo, por ejemplo, redes de telefonía inalámbrica o alámbrica, digital o análoga (por ejemplo, las redes PSTN, ISDN y xDSL) , radio, fibra óptica, la Internet, la red mundial (World wide web) , las WAN, LAN, cable, satélite y/o cualquier otro mecanismo de suministro para transportar datos. Puede compartirse la información de la memoria compartida utilizando cualquier protocolo de comunicaciones, como por ejemplo, el protocolo Modbus . Las porciones (115A), (115B) , (115C) de las memorias (110A) , (110B), (110C) de los dispositivos (105A), (105B) , (105C) se asignan para los propósitos de compartición de memoria. A las porciones (115A), (115B), (115C) asignadas se les nombra el área de memoria compartida. Las porciones de memoria asignadas pueden ser de cualquier tamaño. El tamaño de la porción asignada de memoria puede predeterminarse para cada dispositivo, y puede diferir de un dispositivo a otro. La porción de memoria asignada para un dispositivo, también nombrada el área de memoria o bloque de memoria, se subdivide en uno o más segmentos de memoria, con cada uno de los segmentos de memoria correspondiente a uno de los dispositivos conectados en red que participan en la actividad de compartición de memoria. Por ejemplo, se divide la porción asignada (115A) de memoria para el dispositivo (105A) en tres segmentos de memoria (116A) , (117A) , (118A). El segmento de memoria (116A) corresponde al dispositivo (105A), el segmento de memoria (117A) corresponde al dispositivo (105B) y el segmento de memoria (118A) corresponde al dispositivo (105C). De modo similar, también se dividen las porciones asignadas (115B), (115C) de las memorias (110B), (110C) para los dispositivos (105B), (105C) en tres segmentos de memoria (116B) , (117B) , (118B) y (116C), (117C), (118C), respectivamente. Los segmentos de memoria (116B) , (116C) corresponden al dispositivo (105A) , los segmentos de memoria (117B), (117C) corresponden al dispositivo (105B) y los segmentos de memoria (118B), (118C) corresponden al dispositivo (105C) . . En una implementación del sistema de comunicaciones (100) de la Figura 1, los dispositivos (105A), (105B), (105C) se asignan cada uno a la misma cantidad de memoria. Las áreas de memoria compartida (115A), (115B) , (115C) se subdividen aún más en un número de segmentos de memoria más pequeños, con cada segmento de memoria correspondiente a un dispositivo diferente y actualizado por el mismo. Cada segmento se actualiza por su dispositivo correspondiente, pero los datos son visibles a otros dispositivos y pueden leerse y usarse por estos otros dispositivos en los que se proporcionó el segmento de datos. En particular, se divide el área de memoria (115A) para el dispositivo (105A) en tres segmentos de memoria (116A), (117A), (118A) . El segmento de memoria (116A) corresponde al dispositivo (105A) y se actualiza por el mismo, el segmento de memoria (117A) corresponde al dispositivo (105B) y se actualiza por el mismo, y el segmento de memoria (118A) corresponde al dispositivo (105C) y se actualiza por el mismo. De modo similar, se dividen las áreas de memoria (115B) , (115C) para los dispositivos (105B), (105C) en los segmentos de memoria (116B), (117B), (118B), y (116C), (117C), (118C), respectivamente. Los segmentos de memoria (116B), (116C) corresponden al dispositivo (105A) y se actualizan por el mismo, los segmentos de memoria (117B) , (117C) corresponden al dispositivo (105B) y se actualizan por el mismo, y los segmentos de memoria (118B), (118C) corresponden al dispositivo (105C) y se actualizan por el mismo. En una implementación, el sistema de comunicaciones (120) puede usar el protocolo de comunicación odbus utilizando comunicaciones en serie en los enlaces de datos físicos. El sistema de comunicaciones (120) puede ser, por ejemplo, un enlace de comunicación de datos en serie RS-422, RS-485 o RS-232. En otras implementaciones , el sistema de comunicaciones (120) puede ser, un bus serial universal (USB) o un enlace de comunicación de datos en paralelo. Tal como se muestra en la Figura 2, un sistema de comunicaciones (200) ilustra una implementación del sistema de comunicaciones (100) de la Figura 1 e incluye múltiples dispositivos (105A) , (105B) , (105C) conectados a una red de comunicación (120). Cada uno de los dispositivos (105A), (105B), (105C) tiene una memoria (110A) , (110B) , (110C) . Tal como se muestra en la implementación de la Figura 2, a cada uno de los dos dispositivos (105A) , (105B) se le ha asignado a la misma cantidad de memoria (215A) , (215B) , y a un dispositivo (105C) se le ha asignado una cantidad diferente de memoria (215C) . En el ejemplo de la Figura 2, pueden utilizarse los dispositivos (105A) , (105B), (105C) en el control, supervisión y protección de un sistema de alimentación de energía o en el control y supervisión de un proceso industrial. Por ejemplo, los dispositivos (105A), (105B) pueden corresponder a los relevadores protectores en un sistema de alimentación de energía que midan voltaje y corriente, y el dispositivo (105C) puede corresponder a un relevador protector que mida voltaje, corriente y energía. En otra implementación, los dispositivos (105A) , (105B) pueden corresponder a nodos de control y monitoreo en un proceso industrial que monitoree dos variables de proceso, y el dispositivo (105C) puede corresponder a un nodo de control y monitoreo que monitorea tres variables de proceso. En estos ejemplos, los dispositivos (105A), (105B) requieren menos información y por consiguiente menos memoria que el dispositivo (105C). . Cada una de las áreas de memoria compartida (215A) , (215B) , (215C) se ha subdividido en un número de segmentos de memoria más pequeños, con cada segmento de memoria corresponde a un dispositivo diferente y se actualiza por este mismo. Cada segmento se actualiza por su dispositivo correspondiente, pero los datos son visibles a otros dispositivos y pueden leerse y usarse por estos otros dispositivos en los que se proporcionó el segmento de datos . En particular, se dividen las áreas de memoria (215A), (215B) para los dispositivos (105A), (105B) en los segmentos de memoria (216A) , (217A) , (218A) , y (216B) , (217B) , (218B) , respectivamente. Los segmentos de memoria (216A) , (216B) corresponden al dispositivo (105A) y se actualizan por el mismo, los segmentos de memoria (217A) , (217B) corresponden al dispositivo (105B) y se actualizan por el mismo, y los segmentos de memoria (218A) , (218B) corresponden al dispositivo (105C) y se actualizan por el mismo . Cada uno de los segmentos de memoria (216A) , (216B) se divide en dos segmentos adicionales (216A1) , (216A2) y (216B1), (216B2). Estos segmentos pueden corresponder, por ejemplo, al voltaje y corriente monitoreados por un relevador protector en el dispositivo (105A) o a dos variables de proceso monitoreadas por el dispositivo (105A) . Cada uno de los segmentos de memoria (217A) , (217B) se divide en dos segmentos adicionales (217A1), (217A2) y (217B1), (217B2). Estos segmentos pueden corresponder, por ejemplo, al voltaje y corriente monitoreados por un relevador protector en el dispositivo (105B) o a dos variables de proceso monitoreadas por el dispositivo (105B). De modo similar, cada uno de los segmentos de memoria (218A) , (218B) se divide en dos segmentos adicionales (218A1) , (218A2) y (218B1), (218B2) . Estos segmentos pueden corresponder, por ejemplo, al voltaje y corriente monitoreados por un relevador protector en el dispositivo (105C) o a dos variables de proceso monitoreadas por el dispositivo (105C) . El área de memoria (215C) para el dispositivo (105C) se divide en los segmentos de memoria (216C) , (217C) , (218C) , que no son iguales en tamaño. El segmento de memoria (216C) corresponde al dispositivo (105A) y se actualiza por el mismo, el segmento de memoria (217C) corresponde al dispositivo (105B) y se actualiza por el mismo, y el segmento de memoria (218A) corresponde al dispositivo (105C) y se actualiza por el mismo. Cada uno de los segmentos de memoria (216C) , (217C) se subdivide en dos segmentos adicionales (216C1), (216C2) y (217C1), (217C2). Estos segmentos pueden corresponder, por ejemplo, al voltaje y corriente monitoreados por un relevador protector en los dispositivos (105A), (105B) o a dos variables de proceso monitoreadas por los dispositivos (105A) , (105B) . Sin embargo, a diferencia de las áreas de memoria (215A) , (215B) , el segmento de memoria (218C) ubicado en el área de memoria (215C) se divide en tres segmentos adicionales (218C1) , (218C2) , (218C3) . Estos segmentos pueden corresponder, por ejemplo, al voltaje, corriente y energía monitoreados por un relevador protector en el dispositivo (105C) o a tres variables de proceso monitoreadas por el dispositivo (105C) . Tal como se muestra en la Figura 3, un sistema de comunicaciones (300) ilustra una implementación del sistema de comunicaciones (100) de la Figura 1 e incluye múltiples dispositivos (105A), (105B), (105C) , (105D) conectados a una red de comunicaciones (120). Cada uno de los dispositivos (105A) , (105B) , (105C) , (105D) tiene una memoria (110A), (110B), (110C) , (110D). Tal como se muestra en la implementación de la Figura 3, tres dispositivos (105A), (105B) , (105C) forman un primer grupo (300A) , y dos dispositivos (105C) , (105D) forman un segundo grupo (300B). El dispositivo (105C) es común a ambos grupos (300A) , (300B) . En el primer grupo (300A) , a cada uno de los dos dispositivos (105A) , (105B) se le ha asignado la misma cantidad de memoria (315A) , (315B) , y a un dispositivo (105C) se le ha asignado a una cantidad diferente de memoria (315C) . En el segundo grupo (300B) , al dispositivo (105C) se le ha asignado una cantidad de memoria diferente a la del dispositivo (105D) . La cantidad de memoria asignada al dispositivo (105D) puede ser más pequeña que de la asignada a los dispositivos (105A), (105B) . En este ejemplo, los dispositivos (105A), (105B) , (105D) pertenecen sólo a un grupo y por ello requieren que se les asigne menos memoria que la requerida por el dispositivo (105C). Cada una de las áreas de memoria compartida (315A), (315B), (315C) , (315D) se ha subdividido en un número de segmentos de memoria más pequeños, con cada segmento de memoria correspondiente a un dispositivo diferente y actualizado por el mismo. Cada segmento se actualiza por su dispositivo correspondiente, pero los datos son visibles a otros dispositivos y pueden leerse y usarse por estos otros dispositivos en los que se proporcionó el segmento de datos. En particular, en el primer grupo (300A) , cada una de las áreas de memoria (315A) , (315B) para los dispositivos (105A), (105B) se dividen en tres segmentos de memoria (316A) , (317A) , (318A) y (316B) , (317B) , (318B). Los segmentos de memoria (316A) , (316B) corresponden al dispositivo (105A) y se actualizan por el mismo, los segmentos de memoria (317A) , (317B) corresponden al dispositivo (105B) y se actualizan por el mismo, y los segmentos de memoria (318A) , (318B) corresponden al dispositivo (105C) y se actualizan por el mismo. El área de memoria (315C) para el dispositivo (105C) se divide en los segmentos de memoria (316C) , (317C) , (318C) , (319C) . El segmento de memoria (316C) corresponde al dispositivo (105A) y se actualiza por el mismo, el segmento de memoria (317C) corresponde al dispositivo (105B) y se actualiza por el mismo, y el segmento de memoria (318C) corresponde al dispositivo (105C) y se actualiza por el mismo. El segmento de memoria (319C) corresponde al y se actualiza por el dispositivo (105D) del segundo grupo (300B) . En el segundo grupo (300B) , el área de memoria (315C) para el dispositivo (105C) se divide los segmentos de memoria (316C) , (317C) , (318C) , (319C) . El segmento de memoria (318C) corresponde al dispositivo (105C) y se actualiza por el mismo, y el segmento de memoria (319C) corresponde al dispositivo (105D) y se actualiza por el mismo. El área de memoria (315D) para el dispositivo (105D) se divide en los segmentos de memoria (318D) y (319D) . El segmento de memoria (318D) corresponde al dispositivo (105C) y se actualiza por el mismo, y el segmento de memoria (319D) corresponde al dispositivo (105D) y se actualiza por el mismo. Tal como se muestra en la Figura 4, un dispositivo (400) tiene una memoria (410) con una sección de espacio de memoria asignado a un área de memoria compartida (415). El área de memoria compartida (415) se divide en segmentos de memoria. En una implementación, el área de memoria compartida (415) se divide en tres segmentos de memoria (416), (417), (418), con cada segmento correspondiente a un dispositivo conectado en red diferente, donde hay tres dispositivos en la red, dispositivo #1, dispositivo #2, dispositivo #3. El área de memoria compartida (415) puede asignarse idénticamente en todos los tres dispositivos. En otras implementaciones, el área de memoria compartida (415) puede dividirse en menos segmentos si la memoria no se comparte con todos los dispositivos conectados en red para una red de tres dispositivos o puede dividirse en más segmentos si hay más de tres dispositivos en la red. También, pueden conectarse a la red menos de tres dispositivos o más de tres dispositivos . La Figura 4 ilustra una dirección de ensayo (411) y datos de ensayo para el área de memoria compartida (415) . En el segmento (416), la dirección de memoria (0) a (3) (416A, 416B, 416C, 416D) corresponde al dispositivo #1. Las direcciones de memoria (0) a (2) (416A, 416B, 416C) se usan para los datos, y la dirección de memoria 3 (416D) se usa para una indicación de validez de datos. El dispositivo #1 está autorizado a escribir en las direcciones de memoria 0 a 2 (416A, 416B, 416C) en las áreas de memoria compartida de todos los tres dispositivos, y todos los tres dispositivos están autorizados a leer las direcciones de memoria (0) a (2) (416A, 416B, 416C) . Por ejemplo, el dispositivo #1 puede difundir un segmento de datos que contenga los datos "a" (416A) , datos "b" (416B) y los datos "c" (416C) hacia el dispositivo #2 y dispositivo #3. De este modo, asumiendo que no hay error en la transmisión y recepción, el segmento de datos (que contiene los datos "a", "b", "c") se almacena en el segmento de memoria (416) de todos los tres dispositivos, y por ello es visible a todos los dispositivos. La indicación de validez de datos, en esta dirección de memoria ( 16D) de ejemplo, se actualiza por el dispositivo individual basándose en la validez de los datos recibidos de la red. De tal manera, por ejemplo, la indicación de validez de datos para los datos recibidos del dispositivo #1 se actualiza mediante el dispositivo #1 en el área de memoria del dispositivo #1, se actualiza mediante el dispositivo #2 en el área de memoria del dispositivo #2, y se actualiza mediante el dispositivo #3 en el área de memoria del dispositivo #3. En el segmento (417), las direcciones de memoria 4 a 7 (417A, 417B, 417C, 417D) corresponden al dispositivo #2. Las direcciones de memoria 4 a 6 (417A, 417B, 417C) se usan para datos, y la dirección de memoria 7 (417D) se usa para una indicación de validez de datos. El dispositivo #2 está autorizado a escribir en las direcciones de memoria 4 a 6 (417A, 417B, 417C) en las áreas de memoria compartida de todos los tres dispositivos, y todos los tres dispositivos están autorizados a leer las direcciones de memoria 4 a 6 (417A, 417B, 417C) . Por ejemplo, el dispositivo #2 puede difundir un segmento de datos que contenga los datos "p" (417A), datos "q" (417B) y los datos "r" (417C) hacia el dispositivo #1 y dispositivo #3. De este modo, asumiendo que no hay error en la transmisión y recepción, el segmento de datos (que contiene los datos "p", "q", "r") se almacena en el segmento de memoria (417) de todos los tres dispositivos, y por ello es visible a todos los dispositivos. La indicación de validez de datos, en esta dirección de memoria (417D) de ejemplo, se actualiza por el dispositivo individual basándose en la validez de los datos recibidos de la red. De tal manera, por ejemplo, la indicación de validez de datos para los datos recibidos del dispositivo #2 se actualiza mediante el dispositivo #1 en el área de memoria del dispositivo #1, se actualiza mediante el dispositivo #2 en el área de memoria del dispositivo #2, y se actualiza mediante el dispositivo #3 en el área de memoria del dispositivo #3.
De modo similar, en el segmento (418) , las direcciones de memoria 8 a 11 (418A, 418B, 418C, 418D) corresponden al dispositivo #3. Las direcciones de memoria 8 a 10 (418A, 418B, 418C) se usan para datos, y la dirección de memoria 11 (418D) se usa para una indicación de validez de datos. El dispositivo #3 está autorizado a escribir en las direcciones de memoria 8 a 10 (418A, 418B, 418C) en las áreas de memoria compartida de todos los tres dispositivos, y todos los tres dispositivos están autorizados a leer las direcciones de memoria 8 a 10 (418A, 418B, 418C) . Por ejemplo, el dispositivo #3 puede difundir un segmento de datos que contenga los datos "x" (418A), datos "y" (418B) y los datos "z" (418C) hacia el dispositivo #1 y dispositivo #2. De este modo, asumiendo que no hay error en la transmisión y recepción, el segmento de datos (que contiene los datos "x", "y", "z") se almacena en el segmento de memoria (418) de todos los tres dispositivos, y por ello es visible a todos los dispositivos . La indicación de validez de datos, en esta dirección de memoria (418D) de ejemplo, se actualiza por el dispositivo individual basándose en la validez de los datos recibidos de la red. De tal manera, por ejemplo, la indicación de validez de datos para los datos recibidos del dispositivo #3 se actualiza mediante el dispositivo #1 en el área de memoria del dispositivo #1, se actualiza mediante el dispositivo #2 en el área de memoria del dispositivo #2, y se actualiza mediante el dispositivo #3 en el área de memoria del dispositivo #3. Cada dispositivo abastecerá a los otros dispositivos con el contenido de su segmento de memoria individual. En una implementación, cada dispositivo puede difundir el contenido de su segmento de memoria individual hacia otros dispositivos. A menudo, se hacen los suministros para, por ejemplo, enviar la dirección u otro identificador del segmento de memoria que se va a difundir, también para detectar o reportar errores en las comunicaciones, evitar conflictos en la red, como por ejemplo, cuando múltiples dispositivos intentan transmitir al mismo tiempo, y para restaurar el sistema en la posición inicial después de una falla en la red de comunicaciones o en un dispositivo individual. La Figura 5 ilustra un formato de datos de ensayo para difundir datos y enviar la dirección del segmento de memoria individual utilizando el protocolo de comunicación Modbus. El uso de un protocolo estándar de comunicación, como por ejemplo, el protocolo de comunicación Modbus, ofrece un formato estandarizado para el intercambio de datos en una variedad de enlaces de datos físicos utilizando, por ejemplo, comunicaciones en serie. Los dispositivo Modbus pueden comunicarse utilizando técnicas de comunicación tanto maestro-esclavo e igual a igual. También pueden utilizarse otros formatos de datos y protocolos de comunicaciones. En el ejemplo de la Figura 5, el formato de datos (500) incluye una serie de nombres del campo (505) y datos (510). Al utilizar el formato de datos (500), los datos pueden compartirse al difundirlos hacia otros dispositivos. En particular, con el propósito de difundir los datos hacia todos los otros dispositivos participantes iguales, la dirección esclava (515) se establece en cero en conformidad con el protocolo Modbus para la difusión de los datos. La Figura 5 muestra el código de función (520) para el comando #16 de Modus (10 en hexadecimal) , "Preset Múltiple Registers" (preestablecer múltiples registradores) , que permitirá escribir datos en múltiples dispositivos. La Figura 5 muestra la difusión de los datos, "p", "q",. "r" (550-575) correspondientes con los datos "p", "q", "r" (417A-417C) del dispositivo #2 en el ejemplo de la Figura 4. La dirección de inicio de los datos que se van a difundir (525), (530), corresponde a la dirección de memoria 4 (417A) en la Figura 4, y el número de registros que se van a difundir (535) , (540) , es decir, tres registradores, corresponde a los tres registradores de datos (417A, 417B, 417C) del dispositivo #2 en la Figura 4.
El formato de datos (500) también tiene un campo de verificación de errores (580) . El campo de verificación de errores (580) puede ser, por ejemplo, un control por redundancia cíclico (CRC) u otro mecanismo de verificación de errores apropiado, como por ejemplo, verificación de redundancia longitudinal (LRC) . Tal como se muestra en la Figura 6, puede usarse un- intercambio ordenado de información entre los múltiples dispositivos conectados a una red de comunicación para evitar conflictos en la red, como por ejemplo, cuando dos o más dispositivos intentan enviar datos al mismo tiempo. En particular, tal como se muestra en la Figura 6, tres dispositivos pueden alternarse al transmitir datos de una manera de tipo circuito cíclico. Los datos pueden transmitirse continuamente, alternando un ciclo de transmisión (600A) seguido por otro ciclo de transmisión (600B) . Cada ciclo de transmisión (600A), (600B) incluye una oportunidad para cada dispositivo participante transmisor de datos. Puede emplearse una función de suspensión al no detectar transmisión desde un dispositivo. En el ejemplo de la Figura 6, tres dispositivos (dispositivo #1, dispositivo #2, dispositivo #3) se alternan al difundir el contenido de su bloque de memoria designado. Los dispositivos pueden transmitir en una secuencia predefinida, como por ejemplo, en un orden ascendente o descendente basándose en la dirección de memoria asignada inicial del dispositivo en el área de memoria compartida. Tal como se muestra en la Figura 4, el dispositivo #1 tiene la dirección de memoria (416A) inicial más baja, el dispositivo #2 tiene la siguiente dirección de memoria (417A) inicial más baja, y el dispositivo #3 tiene la dirección de memoria (418A) inicial más alta. Por lo tanto, en este ejemplo, si el orden de transmisión del dispositivo es en el orden ascendente de la dirección de memoria inicial, el orden de transmisión de datos de un ciclo de transmisión (600A) deberá ser el dispositivo #2 que transmite un primer paquete de datos (605), seguido por un paquete de datos del dispositivo #2 (610) y terminando con un paquete de datos (615) trasmitidos por el dispositivo #3. Después de que se complete un primer ciclo de transmisión (600A) , puede entonces iniciarse un segundo ciclo de transmisión (600B) con el dispositivo #1. Una vez que haya terminado el segundo ciclo de transmisión (600B), puede iniciarse otro ciclo de transmisión. La transmisión de tipo circuito cíclico (600) puede continuar siempre y cuando haya al menos dos dispositivos en la red. Pueden usarse otros mecanismos que eviten conflictos. Por ejemplo, algunas redes de comunicaciones pueden proporcionar un mecanismo que evite conflictos, como por ejemplo, el mecanismos Carrier Sense Múltiple Access / Collision Detection (CSMA/CD) (Acceso Múltiple con Detección de Portadora y Detección de Conflicto) como una parte de la especificación de fase física de la red. Cuando resulta apropiado, puede utilizarse un diferentes mecanismo que evite conflictos apropiado. Por ejemplo, donde la fase física de la red de comunicaciones es capaz de detectar y arbitrar los conflictos de acceso a la red, cada dispositivo puede intentar transmitir su segmento de datos tan pronto llegue. El segmento de datos transmitido puede incluir un campo de expiración de tiempo para operar un contador de suspensión de la transmisión en los dispositivos receptores. Los suministros pueden hacerse para restaurar el sistema detenido por causa de una falla en el enlace de comunicación entre los dispositivos o una falla en un dispositivo individual. En una implementación, puede utilizarse una función de suspensión para detectar si un dispositivo determinado se sufrido alguna falla al momento de transmitir en su intervalo de tiempo asignado, y, de ser así, el siguiente dispositivo en secuencia puede iniciar a transmitir una vez que el periodo de suspensión haya expirado. Cada dispositivo conoce su propio turno y transmite en su intervalo de tiempo designado. Si un dispositivo falla al momento de usar su intervalo de tiempo, el siguiente dispositivo en secuencia lo relevará.
Sin embargo, si un dispositivo pierde su intervalo de tiempo designado, el mismo sólo necesitará esperar la terminación de un solo ciclo tipo circuito cíclico para iniciar su transmisión de nueva cuenta. Por ejemplo, en una implementación, todos los dispositivos pueden comunicarse utilizando la misma velocidad de comunicaciones, misma que ya ha sido predeterminada. Los dispositivos individuales pueden calcular la cantidad de tiempo necesario para trasmitir un solo segmento de memoria al dividir el número de bitios en el paquete de datos del segmento de memoria por la velocidad de comunicación. Todos los dispositivos participantes pueden usar un intervalo de suspensión predefinido y común. Después de recibir un mensaje válido transmitido desde un dispositivo determinado, todos los dispositivos actualizan sus respectivos segmentos de memoria que correspondan al dispositivo transmisor. Todos los dispositivos entonces restablecer su temporizador de suspensión, el cual se usará para supervisar la recepción de datos provenientes del siguiente dispositivo designado para transmitir datos. Si el dispositivo designado falla el responder dentro del periodo de suspensión predefinido, el siguiente dispositivo designado se asigna a tomar el control de la red de comunicaciones e inicia a trasmitir sus datos. Esta secuencia se repite hasta que se agoten todos los dispositivos disponibles e inicie el siguiente ciclo tipo circuito cíclico. Todos los dispositivos participantes pueden mantener un registro del orden de la transmisión de datos en el ciclo tipo circuito cíclico. Si un mensaje recibido se encuentra fuera del orden esperado, todos los segmentos de memoria perdidos (es decir, todos los segmentos de memoria entre el último segmento válido y el segmento actualmente recibido) se etiquetan como inválidos al, por ejemplo, desactivar un bitio de validez asociado. Un dispositivo que previamente ha sufrido alguna falla durante la transmisión, puede responder al intercambio de datos en su siguiente intervalo de tiempo regularmente programado. Por ejemplo, si un dispositivo se ha inactivado previamente, el mismo puede responder al intercambio de datos al monitorear la actividad en el enlace de datos durante al menos los periodos de suspensión N-l antes de intentar transmitir sus datos, donde N es el número total de dispositivos que participan en el intercambio de datos. Este arbitraje de derechos de acceso a la red ayuda a reducir los problemas de conflictos y también permite la restauración automática del sistema detenido por una falla en el enlace de comunicaciones o por una falla en un dispositivo individual. El intervalo de suspensión por lo general puede establecerse entre aproximadamente 1/3 y aproximadamente 2/3 de la longitud del paquete de datos. Por ejemplo, si se usa el protocolo Modbus, el intervalo de suspensión por lo general es mayor que el intervalo entre mensajes de 3.5 caracteres en el modo Unidad Terminal Remota (RTU, Remote Terminal Unit) y menor que la cantidad del tiempo necesario para transmitir con éxito un solo paquete Modbus. Si un dispositivo falla en transmitir en intervalo de tiempo asignado, el siguiente dispositivo designado inicia a trasmitir después de que al temporizador de suspensión haya expirado. En efecto, la razón de intercambio de datos se acelera á causa de que el siguiente dispositivo designado inicia a transmitir antes de lo que lo hubiera hecho. También, en otra implementación, donde la fase física de la red de comunicaciones es capaz de detectar y arbitrar los conflictos de acceso a la red, el segmento de datos transmitido puede incluir un campo de tiempo expiración para operar un contador de suspensión de transmisión en los dispositivos receptores. Haciendo referencia de nueva cuenta a la Figura 4, cada uno de los segmentos de memoria (416), (417), (418) tiene una posición (416D) , (417D) , (418D) reservado para indicar la validez del contenido del segmento. La indicación de validez se proporciona y se asocia con el segmento de datos con el propósito de permitir la detección de problemas en la comunicación, como por ejemplo, errores en la transmisión de datos, incluyendo la corrupción de datos, lo que puede ocurrir. Aunque la validez del mensaje se muestra como una posición de memoria (416D), (417D), (418D), puede indicarse con un solo bitio. La indicación de validez también puede almacenarse fuera de la estructura (415) de área de memoria principal compartida. Cada segmento de datos, correspondiente a los datos provenientes del cada dispositivo, se asocia con una indicación de validez . Por ejemplo, puede etiquetarse un segmento de memoria como inválido si el mensaje proveniente de un dispositivo determinado se pierde en su secuencia programa o la dirección de inicio es incorrecta, como es el caso cuando la dirección de inicio no es el limite de dirección esperado. También puede etiquetarse un segmento de memoria inválido si, por ejemplo, el número de registros no coincide con el tamaño del segmento, la cuenta de bytes es incorrecta, el byte de verificación de errores (por ejemplo, CRC) no coincide, se detecta un error en la comunicación, se detecta un error en el enlace físico o se detecta un conflicto. La indicación de validez se actualiza continuamente, por lo general con la transmisión del segmento de memoria correspondiente, proporcionando de este modo una indicación de tiempo real de la conflabilidad de los datos almacenados en la memoria compartida de cada dispositivo. Por ejemplo, si sólo un dispositivo experimenta corrupción de datos al recibir un segmento de datos determinado, sólo ese dispositivo deberá etiquetar el segmento de datos recibidos como inválido mientras que todos los otros dispositivos participantes deberán etiquetar el segmento de datos recibido como válido. El mecanismo de detección de errores ayuda tomar decisiones de que hacer en cada dispositivo al usar los mejores datos disponibles para ese dispositivo en el momento de la decisión, al no tomar en cuenta los datos inválidos en el proceso de toma de decisión. Por ejemplo, la indicación de validez continuamente actualizada ayuda a los dispositivos a tomar decisiones confiables en presencia de una red de comunicación poco confiable usada para compartir datos. Los indicadores de validez individuales en cada dispositivo ayudan a tomar en cuenta que algunos dispositivos no pueden recibir algunos de los mensajes difundidos por otros dispositivos, haciendo de este modo algunas porciones de sus áreas de memoria compartidas inválidas por un periodo corto de tiempo, por ejemplo, hasta el arribo del siguiente mensaje válido. Incluso aunque algunos de los segmentos de memoria individuales puedan estar corruptos y por lo tanto etiquetados como inválidos, el uso de un indicador de validez continuamente actualizado permite que los dispositivos individuales hagan las mejores decisiones posibles en tiempo real lo que determina el conjunto de datos parciales disponibles para el dispositivo en un punto determinado de tiempo. Si un dispositivo llega a desconectarse o inhabilitarse a causa de, por ejemplo, una falla localizada en el sistema físico, todos los subconjuntos comunicantes de la red continúan con la función con los mejores datos disponibles y se reconectarán a un área de memoria común compartida cuando los dispositivos con fallas se reintegren a la operación. De este modo, la asociación de un indicador de validez continuamente actualizado con cada segmento de memoria individual ayuda al proceso de toma de decisión distribuida . Tal como se muestra en la Figura 7, un sistema de comunicaciones (700) ilustra una implementacion del sistema de comunicaciones (100) de la Figura 1. Tal como se muestra en la Figura 7, a cada uno de los tres dispositivos (105A), (105B), (105C) se le ha asignado la misma cantidad de memoria . En el ejemplo de la Figura 7, la vía de comunicaciones entre el dispositivo (105A) y el dispositivo (105C) ha experimentado una falla, de tal modo que el dispositivo (105A) ya no recibe datos procedentes del dispositivo (105C), y el dispositivo (105C) ya no recibe datos procedentes del dispositivo (105A). En semejante caso, los indicadores de validez en las áreas de memoria (715A), (715C) se actualizarán para indicar la falla en la vía de comunicación. En particular, en el área de memoria (715A), el segmento de datos (718A) asociado con el dispositivo (105C) se etiqueta como inválido siempre y cuando no se reciban otras comunicaciones procedentes del dispositivo (105C). Del mismo modo, para el dispositivo (105C), el segmento de datos (716C) asociado con el dispositivo (105A) se etiqueta como inválido siempre y cuando no se reciban otras comunicaciones procedentes del dispositivo (105A). Sin embargo, el dispositivo (105B) continua recibiendo datos provenientes de tanto el dispositivo (105A) como del dispositivo (105C), y por lo tanto los indicadores de validez de datos para el área de memoria (715B) muestran todos los segmentos de datos como válidos. Si se reestablecen las comunicaciones entre los dispositivos (105A) y (105C) , los indicadores de validez datos para los segmentos de memoria respectivos se actualizarán para indicar los datos como válidos en lugar de inválidos. Tal como se muestra en la Figura 8, un sistema de comunicaciones (800) ilustra una implementación del sistema de comunicación (100) de la Figura 1. Tal como se muestra en la Figura 8, a cada uno de los dispositivos (105A), (105B), (105C) se le ha asignado la misma cantidad de memoria . En el ejemplo de la Figura 8, el dispositivo (105C) ha experimentado una falla de manera que el dispositivo (105C) ya no transmite datos hacia los dispositivos (105A), (105B) y ya no recibe datos provenientes de los dispositivos (105A), (105B) . En semejante caso, los indicadores de validez en las áreas de memoria (815A), (815B) se actualizarán para indicar una falla en el dispositivo (105C) . En particular, en el área de memoria (815A) , el segmento de datos (818A) asociado con el dispositivo (105C) se etiqueta como inválido siempre y cuando no se reciban otras comunicaciones procedentes del dispositivo (105C) . Del mismo modo, el segmento de datos (818B) asociado con el dispositivo (105C) se etiqueta como inválido siempre y cuando no se reciban otras comunicaciones procedentes del dispositivo (105C) . Si el dispositivo (105C) restablece el sistema por una falla, y si las comunicaciones se restablecen con los dispositivos (105A) y (105B), los indicadores de validez de datos para los segmentos de memoria respectivos se actualizarán para indicar los datos procedentes del dispositivo (105C) como válidos en lugar de inválido.
Tal como se muestra en la Figura 9, los dispositivos (105A), (105B) , (105C) interactúan de acuerdo con el procedimiento (900) para compartir memoria entre los dispositivos conectados a una red de comunicaciones. El procedimiento (900) puede implementarse mediante cualquier tipo de sistema físico, software, dispositivo, microprocesador, microcontrolador, computadora, sistema de computadora, equipo, componente, programa, aplicación, código, medio de almacenamiento o señal propagada. Aunque no se muestra en la Figura 9, los dispositivos (105A), (105B), (105C) pueden conectarse directa o indirectamente a través de redes de suministro descritas o conocidas, cuyos ejemplos se describen con respecto a la red de comunicaciones (120) . En primer lugar, se asigna un área de memoria para la compartición de memoria (etapa 910) . Tal como se describió anteriormente y como se indica por las etapas (910A), (910B), (910C), a cada dispositivos (105A) , (105B), (105C) puede asignársele una cantidad diferente de memoria, o puede asignársele la misma cantidad de memoria puede a cada dispositivo. El dispositivo (105A) entonces suministra un segmento de datos (etapa 915) . Tal como se describió anteriormente, los dispositivos pueden proporcionar datos en un orden tipo circuito cíclico predeterminado a fin de evitar conflictos en la red. El segmento de datos puede proporcionarse como un mensaje difundido mediante el dispositivo (105A) hacia todos los otros dispositivos participantes (105B), (105C). El mensaje difundido puede estar, por ejemplo, en formato Modbus. Los dispositivos (105B), (105C) reciben el segmento de datos procedente del dispositivo (105A) (etapa 920) . Se deriva independientemente un indicador de validez en el dispositivo (105B) (etapa 920B) y en el dispositivo (105C) (etapa 920C) . Enseguida, el segmento de datos recibido del dispositivo (105A) se asocia independientemente con el indicador de validez (etapa 925) en el dispositivo (105B) (etapa 925B) y en el dispositivo (105C) (etapa 925C) . El segmento de datos en cada dispositivo puede ser, por ejemplo, etiquetado como válido o inválido como resultado de la asociación. El segmento de datos recibido del dispositivo (105A) entonces se deriva independientemente (etapa 930) en el área de memoria del dispositivo (105A) (etapa 930A) , en el área de memoria del dispositivo (105B) (etapa 930B) y en el área de memoria del dispositivo (105C) (etapa 930C) . El dispositivo (105B) entonces suministra un segmento de datos (etapa 935) . Tal como se describió anteriormente, los dispositivos puede suministrar datos en un orden tipo circuito cíclico predeterminado a fin de evitar conflictos en la red. El segmento de datos puede proporcionarse como un mensaje difundido mediante el dispositivo (105B) hacia todos los otros dispositivos participantes (105A), (105C). El mensaje difundido puede estar, por ejemplo, en formato Modbus. Los dispositivos (105A) , (105C) reciben el segmento de datos procedente del dispositivo (105B) (etapa 940) . Se deriva independientemente un indicador de validez en el dispositivo (105A) (etapa 940A) y en el dispositivo (105C) (etapa 940C) . El segmento de datos recibido del dispositivo (105B) se asocia independientemente con el indicador de validez (etapa 945) en el dispositivo (105A) (etapa 945A) y en el dispositivo (105C) (etapa 945C) . El segmento de datos en cada dispositivo puede ser, por ejemplo, etiquetado como válido o inválido como resultado de la asociación. El segmento de datos recibido del dispositivo (105B) entonces se deriva independientemente en el área de memoria (etapa 950) del dispositivo (105A) (etapa 950A) , en el área de memoria del dispositivo (105B) (etapa 950B) y en el área de memoria del dispositivo (105C) (etapa 950C) . El dispositivo (105C) entonces suministra un segmento de datos (etapa 955) . Tal como se describió anteriormente, los dispositivos puede suministrar datos en un orden tipo circuito cíclico predeterminado a fin de evitar conflictos en la red. El segmento de datos puede proporcionarse como un mensaje difundido mediante el dispositivo (105C) hacia todos los otros dispositivos participantes (105A), (105B). El mensaje difundido puede estar, por ejemplo, en formato Modbus . Los dispositivos (105A), (105B) reciben el segmento de datos procedente del dispositivo (105C) (etapa 960) . Se deriva independientemente un indicador de validez en el dispositivo (105A) (etapa 960A) y en el dispositivo (105B) (etapa 960B) . El segmento de datos recibido del dispositivo (105C) se asocia independientemente con el indicador de validez (etapa 965) en el dispositivo (105A) (etapa 965A) y en el dispositivo (105B) (etapa 965B) . El segmento de datos en cada dispositivo puede ser, por ejemplo, etiquetado como válido o inválido como resultado de la asociación. Enseguida, el segmento de datos recibido del dispositivo (105C) se actualiza independientemente (etapa 970) en el área de memoria del dispositivo (105A) (etapa 970A) , en el área de memoria del dispositivo (105B) (etapa 970B) y en el área de memoria del dispositivo (105C) (etapa 970C) . Otro ciclo de transmisión puede iniciarse tal como se describió anteriormente con respecto a la (etapa 915) . Se han descrito diversas implementaciones . Aún con todo, pueden hacerse varias modificaciones. Por consiguiente, otras implementaciones están dentro del alcance de las siguientes reivindicaciones.

Claims (20)

  1. REIVINDICACIONES : 1. Un método para compartir memoria que comprende : proporcionar un primer dispositivo y uno o más dispositivos adicionales, cada dispositivo comprende una memoria y cada dispositivo se configura para que se conecte a una red; asignar una porción de la memoria del primer dispositivo, la porción de memoria asignada del primer dispositivo comprende dos o más segmentos de memoria del primer dispositivo, cada segmento de memoria del primer dispositivo corresponde a un dispositivo, al menos un segmento de memoria del primer dispositivo corresponde a un dispositivo adicional; asignar una porción de la memoria del dispositivo adicional., la porción de memoria asignada del dispositivo adicional comprende dos o más segmentos de memoria del dispositivo adicional, cada segmento de memoria del dispositivo adicional corresponde a un dispositivo, al menos un segmento de memoria del dispositivo adicional corresponde al primer dispositivo; proporcionar un segmento de datos del primer dispositivo al dispositivo adicional; derivar una indicación de validez de datos del primer dispositivo en el dispositivo adicional; asociar la indicación de validez de datos del primer dispositivo con el segmento de datos del primer dispositivo; y actualizar el segmento de memoria del dispositivo adicional correspondiente al primer dispositivo basándose en la asociación de la indicación de validez de datos del primer dispositivo con el segmento de datos del primer dispositivo.
  2. 2. El método según la reivindicación 1, que además comprende tomar una decisión mediante el dispositivo adicional basándose, al menos en parte, en el segmento de memoria actualizada del dispositivo adicional correspondiente al primer dispositivo.
  3. 3. El método según la reivindicación 2, en donde la decisión se usa, al menos en parte, para supervisar, controlar o proteger un sistema de alimentación de energía.
  4. 4. El método según la reivindicación 2, en donde la decisión se usa, al menos en parte, para supervisar y controlar un proceso industrial.
  5. 5. El método según la reivindicación 1, en donde el segmento de datos del primer dispositivo se proporciona periódicamente al dispositivo adicional.
  6. 6. El método según la reivindicación 1, en donde el tamaño de la porción de memoria asignada de cada dispositivo es igual al tamaño de la porción de memoria asignada de otro dispositivo.
  7. 7. El método según la reivindicación 1, en donde el tamaño de la porción de memoria asignada de un dispositivo es diferente al tamaño de la porción de memoria asignada de otro dispositivo.
  8. 8. El método según la reivindicación 1, en donde el tamaño del segmento de memoria de cada dispositivo es igual al tamaño de la porción de memoria asignada de otro dispositivo.
  9. 9. El método según la reivindicación 1, en donde el tamaño de un segmento de memoria de un dispositivo es diferente al tamaño de otro segmento de memoria.
  10. 10. El método según la reivindicación 1, en donde la red comprende un enlace de datos en serie y en donde cada dispositivo se dispersa físicamente uno de otro.
  11. 11. El método según la reivindicación 1, en donde el segmento de datos del primer dispositivo se proporciona utilizando el protocolo Modbus .
  12. 12. El método según la reivindicación 1, que además comprende proporcionar al dispositivo adicional, un mecanismo de verificación de errores mediante el primer dispositivo .
  13. 13. El método según la reivindicación 1, en donde la indicación de validez de datos del primer dispositivo se deriva mediante el dispositivo adicional basándose en la recepción del segmento de datos del primer dispositivo, mediante el dispositivo adicional.
  14. 14. El método según la reivindicación 1, que además comprende: proporcionar un segmento de datos del dispositivo adicional al primer dispositivo; derivar una indicación de validez de datos mediante el primer dispositivo; asociar la indicación de validez de datos del dispositivo adicional con el segmento de datos del dispositivo adicional; y actualizar el segmento de memoria del primer dispositivo correspondiente al dispositivo adicional basándose en la asociación de la indicación de validez de datos del dispositivo adicional con el segmento de datos del dispositivo adicional.
  15. 15. El método según la reivindicación 14, en donde el segmento de datos del dispositivo adicional se proporciona en forma periódica al primer dispositivo.
  16. 16. Un método para compartir memoria que comprende : proporcionar dos o más dispositivos participantes, cada dispositivo participante comprende una memoria y cada dispositivo participante se configura para que se conecte a una red; asignar una porción de la memoria de cada dispositivo participante, cada porción de memoria asignada comprende dos o más segmentos de memoria y cada segmento de memoria correspondiente a un dispositivo participante; proporcionar un segmento de datos desde un dispositivo participante hacia todos los otros dispositivos participantes ; derivar una indicación de validez de datos para el segmento de datos en cada dispositivo participante; asociar la indicación de validez de datos con el segmento de datos; y actualizar el segmento de memoria correspondiente al segmento de datos provisto.
  17. 17. El método según la reivindicación 16, que además comprende : asignar cada dispositivo participante a un indicador de secuencia de transmisión; y en donde proporcionar un segmento de datos comprende secuencialmente proporcionar un segmento de datos desde un dispositivo participante hacia todos los otros dispositivos participantes de acuerdo con el indicador de secuencia de transmisión.
  18. 18. El método según la reivindicación 17, en donde el indicador de secuencia de transmisión de un dispositivo participante se basa en una dirección del segmento de memoria correspondiente al dispositivo participante .
  19. 19. El método según la reivindicación 17, que además comprende: proporcionar un intervalo de tiempo designado para cada dispositivo participante para proporcionar un segmento de datos correspondiente a ese dispositivo; proporcionar un contador de suspensión de la transmisión; iniciar el contador de suspensión de la transmisión; monitorear el intervalo de tiempo para el suministro de un segmento de datos mediante el dispositivo participante apropiado; y proporcionar un segmento de datos mediante el siguiente dispositivo en secuencia basándose en la expiración del contador de suspensión de la transmisión y en la falla del dispositivo participante apropiado en proporcionar un segmento de datos.
  20. 20. Un sistema para compartir memoria que comprende : un primer dispositivo configurado para que se conecte a una red, el primer dispositivo comprende una memoria, la memoria del primer dispositivo comprende dos o más segmentos de memoria del primer dispositivo, al menos un segmento de memoria del primer dispositivo corresponde a un dispositivo adicional; un dispositivo adicional configurado para que se conecte a una red, el dispositivo adicional comprende una memoria, la memoria del dispositivo adicional comprende dos o más segmentos de memoria del dispositivo adicional, al menos un segmento de memoria del dispositivo adicional corresponde al primer dispositivo; en donde el primer dispositivo se configura para proporcionar un segmento de datos del primer dispositivo al dispositivo adicional; y en donde el dispositivo adicional se configura para derivar una indicación de validez del primer dispositivo y para actualizar el segmento de memoria del dispositivo adicional correspondiente al primer dispositivo con el segmento de datos del primer dispositivo, basándose en la indicación de validez del primer dispositivo.
MXPA04008163A 2002-02-22 2003-02-21 Memoria compartida, distribuida, tolerante a las fallas. MXPA04008163A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/079,493 US6754789B2 (en) 2002-02-22 2002-02-22 Distributed fault resilient shared memory
PCT/US2003/005146 WO2003073299A1 (en) 2002-02-22 2003-02-21 Distributed fault resilient shared memory

Publications (1)

Publication Number Publication Date
MXPA04008163A true MXPA04008163A (es) 2004-12-14

Family

ID=27752751

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04008163A MXPA04008163A (es) 2002-02-22 2003-02-21 Memoria compartida, distribuida, tolerante a las fallas.

Country Status (9)

Country Link
US (1) US6754789B2 (es)
EP (1) EP1485807B1 (es)
AU (1) AU2003221255B2 (es)
BR (1) BR0307909A (es)
CA (1) CA2477229A1 (es)
DE (1) DE60318991T2 (es)
ES (1) ES2301787T3 (es)
MX (1) MXPA04008163A (es)
WO (1) WO2003073299A1 (es)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0522031D0 (en) * 2005-10-28 2005-12-07 Koninkl Philips Electronics Nv Radio communication apparatus and method of control
IL171963A0 (en) * 2005-11-14 2006-04-10 Nds Ltd Secure read-write storage device
US7962697B2 (en) * 2006-10-05 2011-06-14 Waratek Pty Limited Contention detection
US20080127213A1 (en) * 2006-10-05 2008-05-29 Holt John M Contention resolution with counter rollover
US20080130631A1 (en) * 2006-10-05 2008-06-05 Holt John M Contention detection with modified message format
US8473564B2 (en) * 2006-10-05 2013-06-25 Waratek Pty Ltd. Contention detection and resolution
US7958329B2 (en) * 2006-10-05 2011-06-07 Waratek Pty Ltd Hybrid replicated shared memory
WO2008040076A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention resolution with echo cancellation
US20100121935A1 (en) * 2006-10-05 2010-05-13 Holt John M Hybrid replicated shared memory
US8086805B2 (en) 2006-10-05 2011-12-27 Waratek Pty Ltd. Advanced contention detection
US20080250221A1 (en) * 2006-10-09 2008-10-09 Holt John M Contention detection with data consolidation
US7751166B2 (en) 2007-03-16 2010-07-06 Abb Technology Ag Advanced feeder architecture with automated power restoration
US8634325B2 (en) * 2007-12-31 2014-01-21 Schneide Electric USA, Inc. Tuning of industrial automation system performance based on device operating characteristics
AU2008207572B2 (en) * 2008-04-23 2010-10-28 Drone Technology Pte Ltd Module for data acquisition and conrol in a sensor/control network
WO2009131542A1 (en) * 2008-04-23 2009-10-29 Drone Technology Pte Ltd Module for data acquisition and control in a sensor/control network
US8526151B2 (en) * 2010-11-12 2013-09-03 General Electric Company Shared memory architecture for protection of electrical distribution equipment
US8346810B2 (en) * 2011-05-13 2013-01-01 Simplivity Corporation Reference count propagation
US9357004B2 (en) 2011-05-13 2016-05-31 Simplivity Corp. Reference count propagation
US9928181B2 (en) * 2014-11-21 2018-03-27 Ge-Hitachi Nuclear Energy Americas, Llc Systems and methods for protection of reflective memory systems
US9519503B2 (en) * 2014-12-01 2016-12-13 Dell Products, L.P. Systems and methods for virtual machine attribution with fault resilient memory tag
CN111443592B (zh) * 2020-03-24 2022-11-29 上海卫星工程研究所 设备控制权状态的传递方法及传递系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2504330A1 (fr) 1981-04-15 1982-10-22 Philips Ind Commerciale Reseau local de communication decentralise
US4926375A (en) 1987-05-05 1990-05-15 Ge Fanuc Automation North America, Inc. Multiple nodes broadcast communication method with receiver identification by bit position in transferred massage
US5761413A (en) * 1987-12-22 1998-06-02 Sun Microsystems, Inc. Fault containment system for multiprocessor with shared memory
US5202970A (en) 1989-02-07 1993-04-13 Cray Research, Inc. Method for sharing memory in a multiprocessor system
US5793750A (en) 1995-10-20 1998-08-11 Schweitzer Engineering Laboratories, Inc. System of communicating output function status indications between two or more power system protective relays
US5940870A (en) * 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
US5761729A (en) * 1996-07-17 1998-06-02 Digital Equipment Corporation Validation checking of shared memory accesses
US5893161A (en) 1996-11-12 1999-04-06 Hewlett-Packard Co. Method for allocating ownership of portions of memory in a coherent memory system
DE19742918A1 (de) * 1997-09-29 1999-04-01 Cit Alcatel Verfahren zum Austausch von Datenpaketen innerhalb eines sicheren Mehrrechnersystems
US6360303B1 (en) 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US6085295A (en) 1997-10-20 2000-07-04 International Business Machines Corporation Method of maintaining data coherency in a computer system having a plurality of interconnected nodes
EP1008940A3 (en) * 1998-12-07 2001-09-12 Network Virtual Systems Inc. Intelligent and adaptive memory and methods and devices for managing distributed memory systems with hardware-enforced coherency
US6665777B2 (en) * 2000-07-26 2003-12-16 Tns Holdings, Inc. Method, apparatus, network, and kit for multiple block sequential memory management

Also Published As

Publication number Publication date
DE60318991T2 (de) 2009-01-22
EP1485807A4 (en) 2006-11-15
AU2003221255B2 (en) 2008-07-17
US20030163653A1 (en) 2003-08-28
EP1485807A1 (en) 2004-12-15
US6754789B2 (en) 2004-06-22
WO2003073299A1 (en) 2003-09-04
DE60318991D1 (de) 2008-03-20
CA2477229A1 (en) 2003-09-04
ES2301787T3 (es) 2008-07-01
BR0307909A (pt) 2005-01-18
EP1485807B1 (en) 2008-02-06
AU2003221255A1 (en) 2003-09-09

Similar Documents

Publication Publication Date Title
AU2003221255B2 (en) Distributed fault resilient shared memory
US5694542A (en) Time-triggered communication control unit and communication method
US6282669B1 (en) Ethernet communication redundancy method
US4949337A (en) Token passing communication network including a node which maintains and transmits a list specifying the order in which the token is passed
US4814984A (en) Computer network system with contention mode for selecting master
US5357525A (en) Multiplex transmission system
EP0777948B1 (en) Duplicate message detection method and apparatus
US5001642A (en) Method for operating a data processing system
EP0510822B1 (en) Distributed network monitoring system for monitoring node and link status
JPS5941079A (ja) シリアルバスのためのデユアルカウント,ラウンドロビン分布裁定技術
US6243830B1 (en) State information managing method and communication system
JPH0654911B2 (ja) マスターシップを転送する方法および装置
KR20040078113A (ko) 고장에 대처할 수 있는 시간동기 기술
JPH07183905A (ja) 遠隔監視システム
JPH07273785A (ja) リングシステムにおけるノード間情報収集方式
Claesson et al. An efficient TDMA start-up and restart synchronization approach for distributed embedded systems
CN112312355B (zh) 一种箭载以太网通信方法及通信系统
CN112463669B (zh) 一种存储仲裁管理方法、系统、终端及存储介质
JPH06252895A (ja) データ伝送方式
JP3113165B2 (ja) デュアルポートram通信方法
KR20000041926A (ko) 아이피씨 시스템에서 특정 프로세서에 대한 재시동장치 및방법
JP2000032031A (ja) 通信ネットワーク、通信システム及びその構成情報の変更方法
Kopetz Specification of the TTP/A-Protocol V2. 00
Kopetz The Time-Triggered Protocols
JPS6240845A (ja) 通信ネツトワ−クシステムのネツトワ−ク制御権移行方式

Legal Events

Date Code Title Description
FG Grant or registration
GB Transfer or rights