Interacción de la comunicación del controlador con los datos de control
El controlador ejecuta la tarea de comunicaciones independientemente del código de la aplicación. El controlador ejecuta la comunicación de forma asíncrona con respecto a la aplicación. Por lo tanto, es importante asegurarse de que la comunicación que se entrega al controlador esté completa antes de que la aplicación actúe según los nuevos datos que le han entregado. Esto se aplica tanto a los datos que recibe el controlador como a los que envía el controlador.
Por ejemplo, si un dispositivo HMI escribe un bloque grande de datos de recetas en el controlador, el código de la aplicación puede comenzar a actuar según esos datos antes de que se escriban los datos. Esta acción hace que en el espacio de la aplicación esté la mitad de la receta actual y la mitad de la última receta.
Puede utilizar los siguientes métodos para controlar los efectos de la comunicación asíncrona. El bloqueo del acceso ayuda a evitar que los valores de datos de origen cambien debido a la comunicación durante la ejecución de la aplicación. Permitir el acceso significa que la comunicación puede cambiar los valores de los datos de origen durante la ejecución de la aplicación.
Construcción de la aplicación | Acceso a tag | |||||
|---|---|---|---|---|---|---|
HMI | MSG | Actualización de E/S | Producir/consumir | Otras tareas del usuario | Planificador de movimiento | |
UID/UIE | Permite | Permite | Permite | Permite | Bloquea | Permite |
CPS | Bloquea | Bloquea | Bloquea | Bloquea | Permite | Permite |
Tarea periódica | Permite | Permite | Permite | Permite | Permite | Permite |
Estas opciones dependen del controlador cuando el núcleo principal puede cambiar de tarea. Por lo tanto, la tarea de comunicación no puede cambiar los datos mientras la tarea de control los está utilizando. Dado que el controlador procesa la comunicación en un núcleo de CPU independiente, estos métodos ya no son efectivos en todos los casos.
Dado que los controladores tienen integridad de datos de 32 bits, esto solo se aplica a estructuras de datos de más de 32 bits. Si la integridad a nivel de palabra es su principal preocupación, la integridad de los datos de 32 bits no afecta a su uso de los datos.
Las prácticas recomendadas de programación establecen que deben emplearse dos palabras únicas al principio y al final de los datos. El controlador valida estas palabras para asegurarse de que toda la estructura cumple la integridad de datos. Le recomendamos cambiar los datos de handshake y que el código de la aplicación los valide en cada transacción antes de que el código de la aplicación del controlador o el sistema de nivel superior que lee los datos del controlador actúe con base a ellos.
En la tabla siguiente se muestra que se han añadido dos elementos de datos a una estructura para comprobar la integridad de los datos: Start Data y End Data. Le recomendamos que el controlador valide la coincidencia del valor de los datos de inicio y del valor de los datos de fin antes de que el controlador actúe sobre My_Recipe1.
Si los valores de los datos de inicio y de los datos de fin no coinciden, es probable que la comunicación esté todavía rellenando la estructura. Lo mismo puede aplicarse a los sistemas de nivel superior que reciben los datos del controlador.
Estructura | My_Recipe1 | My_Recipe2 | My_Recipe3 |
|---|---|---|---|
Datos de inicio | 101 | 102 | 103 |
Azúcar | 3 | 4 | 8 |
Harina | 4 | 3 | 9 |
Chocolate | 2 | 2 | 4 |
Aceite | 6 | 7 | 2 |
Datos de fin | 101 | 102 | 103 |
CONSEJO:
Le recomendamos que lleve a cabo esta prueba en una copia almacenada en búfer de los datos y no en el elemento de datos real en el que el núcleo de comunicación escribe. Si utiliza datos almacenados en búfer, evitará el riesgo de que el núcleo de comunicación cambie los datos después de que se haya superado la prueba de validez de los datos.
Entregue su opinión