Diseño de terminal de monitoreo de calidad de energía basado en chip DSP TMS320F2812

Actualización: 12 de diciembre de 2023
El DSP (Procesador de señal digital) se utiliza cada vez con más frecuencia en las aplicaciones de ingeniería actuales. Hay tres razones principales para esto: primero, tiene potentes capacidades informáticas, capaces de varios algoritmos de procesamiento de señales digitales, como FFT y filtrado digital; En segundo lugar, los principales fabricantes de DSP han diseñado IDE (desarrollo integrado) relacionados para sus productos. Environment), lo que hace que el desarrollo de aplicaciones DSP sea aún más potente; en tercer lugar, tiene un rendimiento de alto costo y es absolutamente competitivo con su potente rendimiento y bajo precio.

TI diseñó el entorno de desarrollo visual integrado CCS (CodeComposerStudio) para el DSP de la empresa, y DSP/BIOS es una parte importante de CCS. Es esencialmente un núcleo de sistema operativo en tiempo real basado en la plataforma DSP de la serie TMS320 y también es una parte central del software en tiempo real de TI. la tecnología-Tecnología eXpressDSP. DSP/BIOS incluye principalmente tres aspectos: kernel multiproceso, herramienta de análisis en tiempo real y biblioteca de configuración de periféricos.

1 Requisitos de la función del sistema

La función principal del terminal de monitoreo de la calidad de la energía es monitorear y analizar la calidad de la energía de la red eléctrica (Tres fases voltaje y actual) en tiempo real. Las principales variables de monitoreo son: valor efectivo de voltaje y corriente, potencia activa y reactiva, frecuencia de voltaje, desequilibrio trifásico, cada voltaje armónico y tasa de contenido de corriente, factor de potencia, factor de potencia de cambio de fase, fluctuación de voltaje, tiempo prolongado, parpadeo durante un poco tiempo.

El sistema selecciona el chip DSP de alto rendimiento TMS320F2812 de TI como núcleo de procesamiento, y su velocidad de procesamiento de 150MIPS es suficiente para cumplir con los requisitos en tiempo real del sistema. Según los requisitos del sistema, el sistema se divide en los siguientes módulos funcionales: autocomprobación guiada módulo, módulo de ejecución de tareas de recopilación, módulo de preprocesamiento de datos de calidad de energía, módulo de operación de análisis de calidad de energía, módulo de almacenamiento de datos, módulo de comunicación y módulo de interacción persona-computadora.

Según el método de programación tradicional, estos módulos funcionales se organizarán juntos en una estructura secuencial, y las llamadas y cambios entre módulos se completarán con el código de cada módulo, de modo que los módulos de la aplicación estén en un estado acoplado. Si desea agregar un nuevo módulo de funciones o modificar un módulo de funciones existente, no solo se debe modificar el código de llamada del módulo relacionado, sino que el nuevo módulo obviamente también afectará las características de tiempo de respuesta del sistema original, haciendo que la actualización y mantenimiento bastante problemático.

La aparición de DSP/BIOS proporciona otro mecanismo para organizar los módulos funcionales de los programas de aplicación. Trata cada módulo funcional como un hilo de tarea. A través del servicio de kernel configurable, cada subproceso de tarea multiplexa los recursos de la CPU de acuerdo con la prioridad del programador del sistema. Cada hilo de tarea pasa por sincronización, comunicación e intercambio de datos, etc., y se coordinan. Este mecanismo mejora la capacidad de mantenimiento de la aplicación y proporciona un medio más conveniente y avanzado para volver a realizar pruebas. De acuerdo con las características anteriores, este sistema adopta DSP/BIOS como núcleo en tiempo real y diseña todo el sistema en base a esto.

La Figura 1 muestra la clasificación de los módulos funcionales del sistema en DSP / BIOS.

2 Diseño de software basado en DSP / BIOS

2.1 Planificación del hilo de ejecución

En el funcionamiento en tiempo real del sistema, algunas funciones funcionales son impulsadas por señales de control externas o se ejecutan en un período predeterminado. Por lo tanto, el modo de conducción y el período de ejecución de la función son muy importantes para el sistema en tiempo real. DSP/BIOS admite aplicaciones de subprocesos múltiples y los subprocesos se pueden definir con diferentes prioridades.

Los subprocesos de alta prioridad pueden interrumpir los subprocesos de baja prioridad, y las interacciones entre diferentes subprocesos, como el bloqueo, la comunicación y la sincronización, se dividen en los siguientes 4 tipos (prioridad de mayor a menor): interrupción de hardware (HWI), interrupción de software ( SWI), Tarea (TSK), Hilo en segundo plano (IDL). De acuerdo con los requisitos funcionales del sistema terminal de monitoreo de calidad de la energía, los módulos de subfunciones del sistema se dividen en los 4 tipos de subprocesos anteriores.

Primero, programe el subproceso de interrupción de hardware (HWI). En circunstancias normales, el código del programa principal del sistema se coloca en la interrupción o tarea del software; sin embargo, el código de programa del módulo funcional que está estrechamente relacionado con el dispositivo externo y requiere un alto rendimiento en tiempo real debe colocarse en la interrupción de hardware.

De acuerdo con los requisitos anteriores, el sistema configura los siguientes módulos de subfunciones como subprocesos de interrupción de hardware: módulo de tarea de adquisición A/D y módulo de comunicación (recepción). La adquisición A/D es una base importante de este sistema y está estrechamente relacionada con el hardware subyacente del sistema, por lo que se configura como un subproceso de interrupción de hardware (HWI).

El proceso principal es: el chip A/D recopila datos en tiempo real de la red eléctrica a una determinada frecuencia y luego se comunica con el puerto McPSP del DSP. El DSP recibe los datos recopilados por el chip A/D y los almacena en un área específica de la RAM del chip para prepararse para el funcionamiento de otros subprocesos. El módulo de comunicación utiliza RS485 para comunicarse con la computadora host, que está estrechamente relacionada con el hardware subyacente del sistema, y ​​la interfaz SCI del DSP en sí tiene solo un FIFO con un máximo de 16 palabras. Si los datos recibidos no se procesan a tiempo, se perderán.

A continuación se describe la configuración de parámetros del módulo HWI en DSP/BIOS. La interrupción de recepción del puerto serie McBSP se coloca en la posición HWI_INT6 del módulo HWI, y la función ISR ad_rx_isr () de la interrupción de recepción se completa en el elemento de llamada de función de la interrupción HWI_INT6; al mismo tiempo, elija utilizar la función de programación HWI de DSP/RI-OS, al responder a McBSP Cuando el puerto serie recibe una interrupción, el sistema llamará automáticamente a la función ad_rx_isr (). La configuración de interrupción de recepción del puerto serie McBSP se muestra en la Figura 2.

De manera similar a la configuración de la interrupción de recepción del puerto serie McBSP, la interrupción de recepción SCIA se configura como la interrupción de recepción de comunicación y su función ISR scia_rx_isr () se completa en el elemento de llamada de función de la interrupción HWI_INT9. Al responder a la interrupción de recepción, el sistema llama a la función scia_rx_isr() para su procesamiento. El subproceso CLK también es uno de los subprocesos de interrupción de hardware de HWI. Proporciona una referencia de tiempo para el funcionamiento de todo el sistema, proporciona un método para que los usuarios llamen a funciones periódicamente y proporciona una referencia de tiempo para algunas herramientas de evaluación de código. El módulo CLK depende completamente de la interrupción del temporizador del DSP. TMS320C2812 proporciona 2 temporizadores para DSP/BIOS.

En segundo lugar, organice el hilo de interrupción de software (SWI). Todas las interrupciones de software se inician a través de la llamada API del kernel DSP/BIOS. Para facilitar el control, el sistema configura un buzón de 16 bits (buzón) para cada objeto SWI, que se puede utilizar para iniciar condicionalmente el buzón correspondiente. Interrupción del software. Los módulos de subfunciones que son más importantes que las tareas ordinarias y que ocurren con frecuencia se pueden organizar en el hilo de interrupción del software (SWI). Sus módulos de subfunciones incluyen: módulo de preprocesamiento de datos de calidad de energía, módulo de comunicación (envío).

El módulo de preprocesamiento de datos de calidad de energía completa principalmente el procesamiento posterior de los resultados de la conversión A/D. Es necesario preprocesar el resultado de la conversión A/D. Debido a que el chip A/D selecciona una frecuencia fija para la adquisición, pero la frecuencia fo de la red eléctrica fluctúa, realizar operaciones FFT directamente en los datos adquiridos provocará una fuga de espectro. Por lo tanto, los datos adquiridos deben ser preprocesados. Por ejemplo, una operación FFT de 1024 puntos se realiza sobre un total de 1024 datos de 256 puntos para cada uno de los 4 ciclos. Suponiendo que la frecuencia promedio de 4 ciclos es f, la resolución de frecuencia es f/4 y los resultados de la operación FFT son f/4, 2f/4, 3f/4, f, 5f/4… la intensidad en la frecuencia. Por lo tanto, cuando la frecuencia fo de la red eléctrica cambia, la frecuencia f de los datos de la red eléctrica para el cálculo FFT también cambia en consecuencia, de modo que la frecuencia f de los datos de la red eléctrica antes del cálculo FFT siempre es consistente con la frecuencia fo actual de la red eléctrica.

La operación específica del módulo de preprocesamiento de datos de calidad de energía es interpolar los datos después de la conversión A/D, y el algoritmo de interpolación utiliza interpolación lineal. Después de la verificación, bajo voltaje nominal, el error de operación FFT causado por el algoritmo de interpolación lineal está dentro de 0. Dentro de 1‰. Además, otra función del módulo es calcular el valor efectivo de la tensión dentro de un ciclo. Estos son los datos necesarios para calcular las fluctuaciones de voltaje y el parpadeo a corto y largo plazo. El módulo de comunicación (envío) se encarga de enviar datos a la computadora superior. Aunque sus requisitos en tiempo real no son altos, está estrechamente relacionado con la capa inferior del hardware, por lo que se configura como un hilo de interrupción de software.

Cuando se produce la interrupción de recepción del puerto serie, llame a la función scia_rx_isr () para procesar el comando de datos recibido y envíe los datos de calidad de energía correspondientes de acuerdo con el comando relacionado. DSP/BIOS proporciona una prioridad de 0 a 14 para el objeto de interrupción de software. De acuerdo con la importancia del hilo anterior, la prioridad del hilo de procesamiento de datos de recopilación se establece en 14, la prioridad del hilo de comunicación del host se establece en 8 y otras prioridades están reservadas para futuras actualizaciones de software.

Cabe señalar que todos los subprocesos de interrupción (incluidas las interrupciones de hardware y las interrupciones de software) se ejecutan en la misma pila. Cuando ocurre una interrupción de alta prioridad y hace que el sistema cambie de tarea, el subproceso de interrupción de alta prioridad interrumpirá el subproceso de interrupción de baja prioridad; antes de ejecutar el hilo de interrupción de alta prioridad, se guardará el contenido del registro relevante del hilo de interrupción de baja prioridad, y la interrupción de alta prioridad Después de ejecutar el hilo, el registro se restaurará a su contenido original y continuará completando el original. hilo de baja prioridad.

Por lo tanto, si se configuran demasiadas interrupciones de hardware o subprocesos de interrupción de software, la pila se desbordará. Por este motivo, la mayoría de los módulos de tareas deben colocarse en subprocesos de tareas. A continuación, programe el hilo de tareas (TSK). Como la mayoría de los sistemas en tiempo real, los subprocesos de tareas son el componente principal de todo el sistema. Las funciones en los subprocesos de tareas se pueden ejecutar de forma independiente o en paralelo. El módulo de gestión de tareas DSP/BIOS organiza la operación de acuerdo con la prioridad del subproceso de la tarea y completa la conversión de una tarea a otra a través de la función de conmutación.

Cada tarea tiene 4 estados de ejecución: ejecutada, lista, bloqueada y finalizada. Se crea la misión de enero y siempre está en uno de los cuatro estados. DSP/BIOS proporciona una prioridad de -l a 15 para cada objeto de tarea. Las tareas se ejecutarán en estricto orden de prioridad, las tareas con la misma prioridad se organizarán en el orden de ejecución según el principio de "primero en llegar, primero en ser atendido". Cabe señalar que cuando se crea un subproceso de tarea, al mismo tiempo se debe crear una pila dedicada que pertenece a la tarea. La pila se utiliza para almacenar variables locales o anidar más llamadas a funciones.

Configuramos el módulo de cálculo del análisis de la calidad de la energía, el módulo de almacenamiento de datos y el módulo de interacción persona-computadora en el hilo de tareas (TSK). El módulo de cálculo del análisis de la calidad de la energía se puede dividir en tres partes: subproceso de tarea de cálculo de armónicos, subproceso de tarea de cálculo de fluctuación de voltaje y subproceso de tarea de cálculo de parpadeo.

El subproceso de la tarea de cálculo de armónicos es el principal responsable de realizar operaciones FFT en los datos de calidad de energía preprocesados. La operación FFT incluye principalmente cinco partes: operación de conversión de bits, operación de ventanas, operación de mariposa basada en 2, operación de base dividida y operación de suma cuadrada. El hilo de la tarea de cálculo de fluctuaciones de voltaje es responsable de registrar las fluctuaciones del voltaje de la red en 3 minutos. El módulo de preprocesamiento de datos de calidad eléctrica anterior ha obtenido el valor efectivo de la tensión para cada ciclo.

De esta forma, solo es necesario registrar los valores máximo y mínimo del valor efectivo del voltaje en 3 minutos, y la diferencia entre los dos es la fluctuación del voltaje. El hilo de la tarea de cálculo de parpadeo incluye el cálculo de parpadeo de corta duración y parpadeo de larga duración. Ahora se adopta generalmente el método de diseño del medidor de parpadeo IEC.

La señal de autocomprobación adaptativa de entrada pasa a través del demodulador cuadrático, el filtrado ponderado de paso de banda, el filtrado de paso bajo de primer orden al cuadrado y la evaluación estadística en línea para finalmente obtener el valor de parpadeo; pero este método es bastante complejo y requiere mucho tiempo. Al simplificar el algoritmo, se obtiene un método de cálculo simple y factible: el cálculo FFT se realiza sobre el valor de voltaje efectivo de 256 ciclos consecutivos, y después de una serie de cálculos como la ponderación, se puede obtener el valor de parpadeo de 12.8 s y el El valor de parpadeo es de 10 minutos.

El valor puede generar un parpadeo a corto plazo después del cálculo de la correlación, y 12 parpadeos breves consecutivos (dentro de 2 h) pueden generar un parpadeo a largo plazo después del cálculo. Después de la verificación, este algoritmo tiene un error de 1‰ en comparación con el algoritmo del medidor de parpadeo IEC.

El módulo de almacenamiento de datos también se coloca en el hilo de la tarea, y su proceso consiste en almacenar los resultados del análisis de calidad de energía, las fluctuaciones de voltaje y los valores de parpadeo en FIash. El módulo de interacción humano-computadora incluye dos partes: tarea de detección de teclado y tarea de pantalla de cristal líquido. El subproceso de tarea de detección de teclado puede completarse mediante la función periódica PRD. PRD puede determinar el tiempo de ejecución de la función según el reloj en tiempo real. Aquí, configure la tarea de detección del teclado para que se ejecute una vez cada 100 ms para detectar las pulsaciones de teclas. De acuerdo con la condición clave, el cristal líquido la visualización La tarea muestra los datos de calidad de energía más recientes.

Finalmente, está el subproceso de fondo (IDL). El subproceso de fondo (IDL) tiene la prioridad más baja. Generalmente, el módulo de análisis en tiempo real (TRA) se coloca en él para ejecutarse, lo que puede realizar una interacción y un diagnóstico en tiempo real de la aplicación DSP durante la ejecución de la aplicación. CCS tiene herramientas de análisis en tiempo real, como el diagrama de carga de la CPU, el diagrama de ejecución, el control del canal del host, el registro de información, la observación estadística, el tablero de control en tiempo real y la observación del kernel/objeto. Esta serie de módulos funcionales se pueden colocar en el hilo IDL, a través de estas herramientas, la operación de todo el sistema DSP será clara de un vistazo.

2.2 Comunicación y sincronización entre hilos

En este sistema de subprocesos múltiples, el acceso a los recursos compartidos requiere una coordinación mutua entre los subprocesos para resolverlos.

Hay tres métodos de comunicación en el entorno DSP / BIOS, a saber, comunicación basada en tuberías (PIPE), comunicación basada en canales basada en flujo (SIO) y comunicación basada en canales de host (HST).

La Tabla 1 muestra las formas en que 4 subprocesos comparten datos y logran la sincronización.

3 Análisis y depuración del sistema en tiempo real

La sobrecarga del kernel DSP / BIOS en sí tendrá un impacto en el rendimiento en tiempo real del programa del sistema. Por esta razón, es necesario optimizar el kernel DSP / BIOS. Puede utilizar la herramienta de análisis DSP / BIOS proporcionada en CCS para determinar la sobrecarga de DSP / BIOS y la capacidad informática de todo el sistema de aplicaciones. Por ejemplo, el diagrama de carga de la CPU en la herramienta de análisis en tiempo real proporcionada por DSP / BIOS es una de las herramientas más utilizadas.

En la etapa de integración final, debido a la interacción en tiempo real y otras razones, a menudo habrá algunos errores o respuestas inoportunas. En términos generales, debido a que estos fenómenos no son periódicos y tienen una baja frecuencia de ocurrencia, son difíciles de encontrar y rastrear. Sin embargo, debido a que el módulo RTA en el DSP / BIOS está integrado en su núcleo, combinado con el vector de detección personalizado proporcionado por el desarrollador, proporciona una visibilidad única de la causa raíz del error. Esta función de visualización ayuda enormemente a aislar y corregir errores, lo que no está disponible en los sistemas de desarrollo integrados generales.

El rendimiento de ejecución del programa de aplicación en todo el sistema se puede mejorar a partir de los siguientes cuatro aspectos: seleccione cuidadosamente el tipo de hilo para las diferentes funciones del programa; coloque la pila del sistema en la memoria en chip; reducir la frecuencia de interrupción del reloj; aumentar el tamaño del búfer de entrada y salida de la secuencia.

4 resumen

Como conjunto de herramientas proporcionadas por CCS, DSP / BIOS en sí solo ocupa muy pocos recursos de CPU, pero proporciona un rendimiento bastante alto y acelera el progreso del desarrollo. Al usar DSP / BIOS como el sistema operativo en tiempo real del terminal de monitoreo de calidad de energía, es fácil controlar los recursos de hardware al escribir programas DSP y coordinar varios módulos de software de manera flexible, lo que acelera en gran medida el progreso del desarrollo y la depuración de software. El experimento final demostró que todo el sistema tiene un buen rendimiento en tiempo real y un funcionamiento estable y fiable.