Skip to main content

Mantenimiento de la consistencia de los datos para la operación multinúcleo

Por defecto, el programa IEC de la visualización (Visu_Prg) se ejecuta en su propia tarea (VISU_TASK). La visualización generalmente muestra datos de la aplicación principal. Los datos de la aplicación principal se procesan en otra tarea. Por este motivo, la coherencia de los datos es un tema importante cuando la aplicación se ejecuta en un controlador multinúcleo.

Es importante saber que no existe una asignación atómica (indivisible en el tiempo) para el STRING y WSTRING tipos de datos, así como para datos estructurados. No se debe cambiar la fecha cuando se pasa una fecha de este tipo. Sin embargo, si la fecha es cambiada por una tarea que no sea VISU_TASK, es posible que se muestre incorrectamente durante un breve período de tiempo.

A continuación, puede ver dónde debe mantener explícitamente la coherencia de los datos al crear un CODESYS visualización para su uso en un sistema multinúcleo.

Sugerencia

Preste atención a las notas generales sobre operación multinúcleo.

Lectura de datos IEC en un ciclo de visualización

Si la visualización de un elemento de visualización depende de múltiples variables, entonces la asignación de estas variables no es coherente con el ciclo. Por ejemplo, si un elemento se mueve en la dirección x e y por medio de dos variables IEC, entonces esto puede tener el efecto de que el elemento de visualización se mueva solo en la dirección x en un ciclo y luego se mueva en la dirección y. dirección en el siguiente ciclo.

Lo mismo se aplica a los datos que utilizan varios elementos de visualización.

Ejemplo: el elemento 1 lee la variable de estado invisible y actualiza su estado. Otra tarea que VISU_TASK modifica la respectiva variable IEC. El elemento 2 lee la variable de estado Invisible y actualiza su estado. Resultado: Los elementos tienen un estado diferente por un corto tiempo. Este comportamiento puede ocurrir para todas las variables de animación.

Acciones de entrada genéricas

Cambio de visualización

Tenga en cuenta los problemas descritos anteriormente al utilizar tipos de datos de cadena.

Ejecutar comando

Tenga en cuenta los problemas descritos anteriormente al utilizar tipos de datos de cadena.

Alternar visualización de fotogramas

Tenga en cuenta los problemas descritos anteriormente al utilizar tipos de datos de cadena.

Escribir variable

Al igual que la lectura, no es posible realizar asignaciones atómicas para escribir en STRING/WSTRING variables

Ejecutar código ST

Al crear el código ST, asegúrese de que la coherencia de los datos no esté en riesgo.

Variables de interfaz de una visualización

Si una estructura se transfiere a través de VAR_INPUT, no se garantiza la coherencia de los datos. Usar datos estructurados a través de VAR_IN_OUT, o utilice una interfaz a través de VAR_INPUT.

Gestión de usuarios de la visualización.

Si la gestión de usuarios se llama a través de las interfaces públicas (VisuUserMgmt.library), entonces esto siempre debe tener su origen en el VISU_TASK.

Elemento de visualización 'Polígono'

los Polígono elemento de visualización tiene el Puntos dinámicos propiedad. Aquí puede configurar una matriz de puntos. Tenga en cuenta que la lectura de toda la matriz no es atómica.

Variables de tipo de datos STRING

No hay asignación atómica para todas las propiedades configuradas con variables del tipo de datos STRING. Ejemplo: La variable de control para la URL para el Navegador web elemento de visualización.

Bibliotecas de usuario

VisuUtils.library

FbOpenDialogExtended.CallOpenDialog usos SysMemCpy. No reconfigure la instancia mientras xBusy == TRUE.

IECStringUtils.library

No utilice el bloque de funciones VisuFbAnalyzeDateTimeFormatString con el mismo búfer de múltiples tareas.

StringUtils.library

Precaución: el acceso a la estructura ocurre cuando se usa DateFormatter.Format.

IECStringUtils.library

Precaución: el acceso a cadenas ocurre cuando se usa VisuFbAnalyzeDateTimeFormatString.GetMonth.

Diálogos

El paso de parámetros para diálogos debe considerarse de la misma manera que para tipos de datos complejos. Cuando se abre un cuadro de diálogo, se crea una copia de todos los parámetros pasados.

Excepción: VAR_IN_OUT parámetros que tienen {attribute 'VAR_IN_OUT_AS_POINTER'}. Si se asigna este atributo, no se crea ninguna copia y el cuadro de diálogo funciona en el objeto original.