Integrando Código Nativo en C
ZPLC separa la lógica IEC editable de forma visual (.zplc) de las tareas operacionales complejas escritas en hardware. Sin embargo, los desarrolladores que trabajan en integraciones OEM a menudo necesitan escribir drivers de alto rendimiento, utilizar bibliotecas o SDK propietarios de proveedores, o implementar hardware altamente especializado que no se pueden mapear a bibliotecas estándar de forma nativa en sistemas tradicionales.
Para solucionar estos cuellos de botella programáticos, ZPLC le permite extender libremente las bibliotecas core en lenguaje C mediante el manejo integral dentro del ecosistema Zephyr RTOS.
Separación Arquitectónica
Es fundamental mantener la separación de responsabilidades:
- Use Funciones del entorno IEC (ST, SFC, LD): Para automatización general, control de domótica de la fábrica, control secuencial, cálculos de matemática general o manipulación de I/Os cotidianos.
- Use Funciones en lenguaje C y RTOS: Para operar controladores de comunicación SPI o I2C a alta velocidad, operar micro-servicios mediante REST APIs o cifrados criptográficos embebidos sobre un canal protegido, etc.
Las inserciones en C de Zephyr no están encoladas dentro de la plataforma ZPLC como lógica visible; no operan cíclicamente junto a su programa. Estas viven y funcionan dentro de su núcleo embebido como módulos en segundo plano paralelos.
Método Regular e Instalación
- Enlace archivos fuentes (extensiones
.c/.h) dentro del proyecto original. Se dispone de la víafirmware/app/src/custom. - Genere configuraciones de funciones o rutinas con llamados dependientes de Zephyr orientadas al requerimiento en cuestión.
- Actualice o llame estos procesos nuevos modificando el entorno base
CMakeLists.txten el mismo directorio. - Interactúe recíprocamente entre ZPLC y Zephyr aprovechando directivas expuestas mediante
zplc_hal_*de ser necesario.
Ejemplo de llamada en extensión a CMakeLists.txt:
if(CONFIG_ZPLC_CUSTOM_TASKS)
target_sources(app PRIVATE src/custom/custom_sensor_driver.c)
endif()
Este procedimiento garantiza un estado pulcro al compilar la ejecución paralela y conserva una estricta estabilidad para los desarrolladores industriales de firmware frente a futuros despliegues complejos de mantenimiento mecánico.