Dispositivos de bus de campo y controladores de E/S
La base técnica de cada dispositivo de bus de campo, que se configura en el árbol de dispositivos, es el controlador de E/S.
El controlador de E/S es el vínculo entre la pila de bus de campo, la aplicación IEC y el IDE. El controlador configura la pila de bus de campo a partir de los datos de configuración del dispositivo. Muestra el diagnóstico, proporciona una API para la aplicación IEC y es responsable del mapeo de E/S (consulte el capítulo "Mapeo de E/S").
Este capítulo proporciona una breve descripción general de la funcionalidad básica de los dispositivos de controlador de E/S, sin discutir los detalles de los sistemas de bus específicos. Además, se proporcionan algunas recomendaciones para la configuración.
Tarea de ciclo de autobús
La tarea de ciclo de bus es la tarea IEC en cuyo contexto se ejecuta el controlador de E/S. Algunos controladores de E/S utilizan varias tareas: por lo general, una tarea crítica en tiempo real (con alta prioridad), que se utiliza para la transferencia de datos de E/S, y otra tarea con baja prioridad para tareas como la evaluación de diagnósticos y la ejecución de servicios acíclicos. del sistema de autobuses.
Con los sistemas de bus críticos en tiempo real, se debe garantizar que no se ejecute ninguna operación en el contexto de esta tarea de bus que interrumpa el reloj del bus debido al tiempo de ejecución.
La tarea de bus se puede configurar en el cuadro de diálogo de asignación de E/S del dispositivo controlador de E/S. Tenga en cuenta que la configuración del dispositivo principal se hereda de forma predeterminada. Si este dispositivo es el PLC, entonces su configuración de PLC se aplica en la tarea de ciclo de bus.
Importante
Si esta configuración anterior no está configurada, entonces se usa la tarea con el tiempo de ciclo más corto. De esta forma, un controlador de E/S que no es en tiempo real puede ejecutarse involuntariamente en el contexto de la tarea de un controlador crítico en tiempo real, interrumpiendo así su comunicación. Para diagnosticar estos problemas de comunicación, se recomienda comprobar la monitorización de tareas.
Para más información, ver: Pestaña: Configuración del PLC
Asignación de E/S
Una función esencial de un controlador de E/S es actualizar la asignación de E/S. Esto significa la asignación de los datos de E/S del sistema de bus a las variables de la aplicación IEC (y viceversa).
Los datos de entrada/salida se asignan cíclicamente mediante operaciones de copia y conversión en ambas direcciones desde la imagen de la memoria interna del sistema de bus a las variables IEC asignadas a las direcciones %I y %Q.
Para el controlador de E/S, no hay diferencia interna si se utilizan nombres simbólicos o acceso "directo" a las direcciones %I y %Q para esta asignación de E/S. Para la mantenibilidad de la aplicación, se recomienda utilizar siempre nombres de variables descriptivos (ejemplo: variable "TemperatureReactor" en lugar del acceso "%IW117").
Discapacitado:
Solo se asignan los datos de E/S utilizados en la aplicación.
Esto puede mejorar el rendimiento al evitar las operaciones de copia, pero puede causar confusión si los datos de E/S en el cuadro de diálogo de asignación de E/S no se actualizan (los valores aparecen atenuados). Esta configuración se recomienda para una aplicación cuyo desarrollo se ha completado.
Habilitado 1:
Todos los datos están actualizados.
Habilitado 2:
Importante
La disponibilidad de esta opción depende de la descripción del dispositivo.
Precaución: Solo para uso productivo en casos especiales.
Como resultado, pueden ocurrir datos de E/S inconsistentes, porque la tarea de ciclo de bus lee/escribe estos datos mientras el código de la aplicación los usa en otras tareas.
Para más información, ver: Pestaña: <nombre del dispositivo> Asignación de E/S
Coherencia de los datos de E/S
El sistema de programación permite que la aplicación IEC utilice múltiples tareas ejecutadas en paralelo (para visualización, buses de campo u otras POU). El código de la aplicación puede acceder a los datos de E/S desde el contexto de estas tareas a través de las variables IEC asignadas. Al acceder a los mismos datos desde diferentes tareas, podrían producirse datos incoherentes o corruptos (por ejemplo, debido a la interrupción del acceso de escritura).
El controlador de E/S garantiza la consistencia de los datos al proporcionar a cada tarea que ejecuta un ciclo de tareas un mapeo consistente (una instantánea, por así decirlo) de todos los datos de E/S utilizados.
Entonces, un código como el del siguiente ejemplo no puede causar problemas: (Nota "DIV by ZERO")
IF(inputData <> 0) THEN // inputData is mapped to %I x := y / inputData; // This will never result in DIV_BY_ZERO Exception END_IF // inputData is not updated by bus cycle during execution of POU
Importante
Con el Actualizar siempre las variables opción establecida en Habilitado 2: siempre en la tarea de ciclo de bus, este mecanismo se anula. En consecuencia, el código de la aplicación debe tener esto en cuenta.
Servicios
Además de la funcionalidad básica, algunos controladores de E/S brindan servicios a los que se puede llamar desde el IDE, como la función de escaneo de dispositivos o la configuración de direcciones de dispositivos.
Recomendaciones generales
Configuración del PLC:
Actualizaciones de E/S en parada:
El ciclo del bus continúa incluso cuando se detiene la aplicación, por ejemplo, cuando la aplicación se encuentra en un punto de interrupción de depuración. De esta forma, la comunicación con los dispositivos de campo se mantiene y puede continuarse inmediatamente sin interrupción.
Configuración del PLC: Actualizar siempre las variables se establece en Habilitado 1: use la tarea de ciclo de bus si no se usa en ninguna tarea:
Durante el desarrollo de la aplicación, es útil ver los valores de todos los datos de E/S.
Especialmente para sistemas de bus de campo críticos en tiempo real como Profinet, EtherCAT o CAN, que dependen de mantener un reloj de envío/recepción exacto, se recomienda utilizar una tarea de ciclo de bus separada con alta prioridad. Para tareas menos críticas en tiempo real (por ejemplo, visualización), se debe seleccionar una prioridad significativamente más baja que para la tarea de ciclo de autobús.
Para lograr el máximo rendimiento de E/S con el menor desplazamiento posible, se pueden ejecutar POU independientes en la tarea de bus del sistema de bus de campo. Sin embargo, estos deben cumplir los requisitos en tiempo real: por ejemplo, no se pueden ejecutar funciones de acceso a archivos o de bloqueo de socket, sino solo el cálculo de los datos de salida.
Múltiples controladores y tareas de E/S (solución de problemas)
Si se debe sincronizar el acceso consistente a los datos de E/S de múltiples tareas y posiblemente a través de múltiples instancias de controlador de E/S, entonces puede ocurrir una interferencia recíproca no deseada entre el bus y la tarea de la aplicación bajo ciertas circunstancias.
Este es el caso, por ejemplo, cuando la carga general del sistema es alta o cuando los datos de E/S del sistema de bus de campo crítico en tiempo real se utilizan junto con los datos de E/S de un sistema de bus local lento y bloqueado en la misma tarea. .
En caso de interferencia inesperada de la comunicación, con los buses de campo particularmente críticos en tiempo real (EtherCAT, Profinet, CAN), la supervisión de la tarea debe ser examinada primero por fluctuaciones muy grandes o valores atípicos en el tiempo de ciclo (valor máximo en comparación con el promedio). valor). La lista de tareas proporciona información detallada sobre el uso de datos de E/S en diferentes tareas.
Puede ser posible evitar el uso de datos de E/S de diferentes sistemas de bus en una misma tarea o reducir el número de tareas de E/S.
Para más información, ver: Pestaña: Implementación de tareas