Pastilla azul STM32F103 como PLC

Introduccion


Seguramente, todos los que una vez comenzaron o recién comienzan a estudiar microcontroladores STM32 tienen una placa de depuración de fabricación china, apodada adecuadamente turistas extranjeros Blue Pill (tableta azul).

Dicha placa se basa en el chip STM32F103C8T6, que es un procesador de 32 bits basado en el núcleo Cortex - M3. La siguiente imagen muestra la asignación clásica de pizarras y pizarras.

La apariencia del tablero clásico
Mi imagen

Asignación de pin
Mi imagen

¿Cómo hacer PLC a partir de medios improvisados ​​en 5 minutos?


Como suele suceder, las lecciones de Internet le han enseñado cómo trabajar con temporizadores, USART, cambiar estados de salida e incluso trabajar con DMA. Y después de todas las pruebas, la placa ocupa un lugar seguro en el estante de repuestos, algo bueno, pero hasta ahora no se ha encontrado una aplicación decente.

Si está leyendo este artículo, es hora de sacar la placa del estante y quitarle el polvo, porque ahora haremos un controlador lógico programable basado en él que cumplirá con el estándar internacional IEC61131-3.

Después de que el microprocesador se muestre con el firmware adjunto (por desgracia, hasta que esté disponible la publicación de los códigos fuente en los planes), ya podrá funcionar como un PLC. Y lo más interesante es que la placa se puede programar utilizando el software estándar GX Developer FX diseñado para programar controladores Mitsubishi FX2N. Este software (y Russified) lo descargué libremente del sitio web oficial de Mitsubishi después del registro.

Entonces, ¿qué nuevas características adquirió nuestra pequeña placa azul después del firmware?

Primero, ahora puede conectarlo a una computadora usando el conector micro-USB. Para proporcionar intercambio de datos entre el entorno de programación y el controlador, debe instalar los controladores del puerto COM virtual. Se pueden descargar desde el enlace del documento bluepill_update.pdf en el archivo adjunto. Después de instalar el controlador y conectar la placa al USB, aparecerá un nuevo dispositivo en los dispositivos de la computadora personal, como se muestra en la imagen.

Tipo de configuración de hardware del controlador después de instalar los controladores
Mi imagen


Ahora puede ejecutar el GX Developer FX que instalamos. Después de iniciar el programa, tendrá la siguiente ventana:

Primer lanzamiento de GX Developer FX
Mi imagen

El siguiente paso es crear un nuevo proyecto. En el menú Proyecto - Nuevo proyecto. Esta ventana se abrirá para ti:

Nuevo proyecto en GX Developer FX
imagen

No puede cambiar nada aquí y haga clic en Aceptar. Entonces, tenemos un proyecto vacío y ahora tenemos que configurar una conexión en línea a la placa.

Para hacer esto, seleccione en el menú En línea - Configuración de transferencia. Esta ventana se abrirá para ti:

Configuración de conectividad en GX Developer FX
imagen

No puede cambiar nada aquí y haga clic en Aceptar. Entonces, tenemos un proyecto vacío y ahora tenemos que configurar una conexión en línea a la placa.

Para hacer esto, seleccione en el menú En línea - Configuración de transferencia. Esta ventana se abrirá para ti:

Configuración de conectividad en GX Developer FX
imagen

En la serie de interfaz de PC, seleccione Ordinal (aquí está traducido incorrectamente, debería ser

Serie) y verá esta ventana:

Configuración de puerto serie
imagen

Aquí seleccionamos el número de puerto COM correspondiente al que es visible en dispositivos de computadora personal. Se llama STMicroelectronics Virtual COM Port (COM2) en nuestro caso. Ahora podemos verificar si hay alguna conexión. Para hacer esto, haga clic en el botón Probar conexión en el cuadro de diálogo anterior. Si todo está en orden, recibirá un mensaje como en la figura a continuación:

Comprobación de conexión
Mi imagen

Y ahora podemos proceder con seguridad a lo más interesante: programar el controlador. Esta versión admite tres idiomas: IL: lenguaje de instrucciones, tipo de visualización de cadena. LAD: lenguaje lógico de escalera, tipo de pantalla visual. SFC: lenguaje de bloques consecutivos, tipo visual de visualización. Y siempre puede cambiar entre mostrar los idiomas IL y LAD y viceversa. El siguiente es un programa LAD típico:

Programa de gestión - LAD
Mi imagen

Y aquí está el mismo programa, pero en el lenguaje IL:

Programa de gestión - IL
Mi imagen

Por supuesto, todo esto es bueno, pero quiero analizar la lógica del programa, comprender lo que está sucediendo allí. Para hacer esto, presione el botón F3, y si el programa se escribe en el controlador, la pantalla cambiará al modo de monitoreo en línea. Para grabar el programa, debe seleccionarlo en el menú En línea: escriba en el controlador.

Se mostrará la siguiente ventana:

Selección de elementos del proyecto para escribir en el controlador
Mi imagen

En la ventana, seleccione las opciones de grabación (aquí se seleccionan todos los parámetros del programa y del controlador) y haga clic en el botón Ejecutar. El programa le notificará que para grabar el controlador se cambiará al modo STOP (lo verá por la extinción del LED conectado a la PC13), grabará y pondrá el controlador en modo RUN.

Y así es como se mostrará en línea el código fuente del programa LAD:

Tipo de parte del programa en lenguaje LAD en el modo de monitoreo en línea
Mi imagen

Y la misma pieza de un programa de IL en línea:

Tipo de parte del programa en monitoreo en línea de IL
Mi imagen

Y aquí está el código fuente de SFC:

SFC - la aparición del programa
Mi imagen

Para la conveniencia de las pruebas, utilizo desarrollos de prueba antiguos del hardware del controlador, que por una razón u otra no se han utilizado. Una de estas tablas se muestra en la figura a continuación:

Junta de depuración - Controlador intermedio
Mi imagen

Esta placa proporciona aislamiento galvánico para UART1, UART2 y bus de 1 cable. Las entradas y salidas discretas también están aisladas galvánicamente. Se aceptan los siguientes mnemónicos para el programa: X1 es la entrada con la dirección 1, Y2 es la salida con la dirección 2, M104 es el operando de bits con la dirección 104, D1000 es el registro general con la dirección 1000. La versión de firmware que se encuentra en el archivo adjunto tiene las siguientes restricciones: El número de pasos del programa es 1000 (el máximo posible es 8000).
Número de registros - 2000 (rango D0000-D1999). Número de variables de bit - 3072 (rango M0-M3071). UART1 - soporte para Modbus RTU maestro / esclavo, número de esclavos en modo maestro -2 (máximo posible - 128) .UART2 - soporte para Modbus RTU maestro / esclavo, el número de esclavos en modo maestro -2 (máximo posible - 128).

Por defecto, los parámetros de comunicación en serie son 57600, 8N1. UART1: en modo esclavo con la dirección 1, UART2: también en modo esclavo con la dirección 2.

Para el bus de 1 cable, en este momento, el soporte es solo para sensores como DS18B20, el número de esclavos es -2 (el máximo posible es 128).

También se admite la descarga del programa desde el controlador y su conversión en una forma legible para humanos (prefiero LAD).

El programa está construido utilizando el sistema operativo en tiempo real ChibiOS RT.

Los ajustes de comunicación en el bus Modbus RTU y 1 cable se configuran utilizando el programa que puede encontrar en el archivo adjunto. Por ejemplo, ahora consideramos configurar y buscar sensores con direcciones desconocidas. Después de iniciar el programa, tendrá esta ventana:

Apariencia del programa configurador después de comenzar
Mi imagen

Vaya a la pestaña 1-wire y seleccione 1-wire master, y asegúrese de hacer clic en el botón Write to PLC para escribir en el controlador:

Configuración de asistente de 1 cable
Mi imagen

Y ahora, después de hacer clic en el botón Buscar esclavo, se abre una ventana donde puede seleccionar una dirección en el área D0000-D2000, a partir de la cual se registrarán los valores de temperatura registrados de los sensores en forma de un número de coma flotante.

Ventana de búsqueda esclava de bus de 1 cable
Mi imagen

Y la ventana a continuación se muestra después de una búsqueda exitosa de todos los sensores conectados al bus de intercambio de datos.

Ventana de búsqueda de esclavos: se encontraron 3 sensores de temperatura conectados
Mi imagen


Aquí podemos agregar los sensores encontrados a la configuración actual o reemplazar completamente el actual con uno nuevo. En nuestro caso, los datos de temperatura se transmitirán al área de registro del controlador en las direcciones D1500, D1502 y D1504 en forma de un número de coma flotante. Todo lo que queda es presionar el botón Escribir en PLC y reiniciar la placa para activar la nueva configuración de hardware.

Descargar una nueva configuración al controlador
Mi imagen

¿Qué más se puede agregar sobre el programa de configuración? Hay un punto: esta es la representación de números de coma flotante en el controlador FX2N. Para simplificar la entrada de constantes en este formato, tuvimos que usar un registro constante con el modificador H. Tan pronto como el intérprete del controlador encuentre dicho modificador, entiende que se transmitirá un número en formato de coma flotante, pero en forma de un registro IEE754 con precisión simple. La ventana del programa en la pestaña Convertidor se muestra a continuación.

Convertir formatos de número de coma flotante
Mi imagen

Conclusión: ¿qué obtuvimos?


Ha llegado el momento de la pregunta, pero, de hecho, ¿cuál es la velocidad de tal controlador? Aquí todo es simple: al sondear ambos puertos de comunicación a través de Modbus RTU (controlador esclavo - ambos puertos) a una velocidad de 500 kbps y una longitud de consulta de 122 registros, sondear 17 sensores de temperatura y ejecutar el programa más "pesado" (que consiste en operandos binarios) desde 7745 pasos, el ciclo de ejecución fue de 21 ms. Y, por supuesto, también hay desventajas en dicho controlador. La primera es que las placas azules difieren en la baja calidad de los componentes y, por lo tanto, recomiendo aplicar alimentación externa a la placa antes de conectar el mini-USB. El segundo es, por supuesto, que no hay memoria no volátil (más precisamente, existe, pero solo 9 registros en el área soportada por la batería). Y usted mismo comprende que es mejor no utilizar este dispositivo para aplicaciones críticas o en producción. Pero para el hogar o para el entrenamiento, este es el más barato, asequible y comprensible.

Traté de hacer la revisión extensa, y si tiene algún problema, escriba. Me alegrará especialmente si encuentra errores en la implementación del programa. Espero que el artículo sea informativo y que no haya perdido el tiempo leyéndolo.

Las descargas para este artículo están a continuación.

Source: https://habr.com/ru/post/es424733/


All Articles