Inicio de revisión
Entonces, mis queridos colegas, comenzamos la revisión con lo que realmente queremos resaltar aquÃ. En el artÃculo quiero considerar los elementos que son tÃpicos para construir un programa de controlador industrial y mostrar cómo se pueden aplicar a los sistemas de automatización del hogar. Y lo más importante es encontrar la respuesta a la pregunta: qué se necesita para esto.
Domótica - Aplicaciones
Hogar, dulce hogar ... ¿Realmente necesitas un controlador? La respuesta es simple: todo depende de lo que esté disponible en esa casa. Por supuesto, si solo tiene un apartamento, y la automatización consiste en administrar el centro de medios de su hogar y el aire acondicionado en el verano, todo lo que está escrito a continuación puede ser completamente interesante. Pero si su pasatiempo no solo es empujar el sofá (lo que hay que esconder, yo mismo lo he notado a veces), entonces el artÃculo puede ser muy útil.
Entonces, intentemos comprender cómo los medios improvisados ​​pueden simplificar nuestra vida difÃcil. Como ejemplo, utilizamos la situación real: una bomba en un pozo de 70 metros de profundidad, que dos vecinos pusieron en un pliegue. Lo instalaron en la primavera, cuando habÃa mucha agua en el pozo y, en general, era cálido y bueno. Pero el tiempo pasa y comienzan las preguntas: para elevar el agua desde tal profundidad, necesita electricidad, por lo que tiene que pagar. El sótano y el piso técnico se inundaron varias veces; simplemente se olvidaron de apagar la bomba ... SÃ, y no es muy conveniente controlarlo manualmente; debe cerrar un grifo, abrir otro, luego encender la bomba y observar el nivel del agua en el tanque.
¿Vale la pena gastar tu tiempo en eso, que ya falta? Una mente inquisitiva comienza a buscar soluciones y, por supuesto, ¡las encuentra! Nace una lista de tareas para la implementación.
- El pago por la electricidad consumida no tiene que ser común, es decir, instalaremos dos arrancadores, cada uno de los cuales está conectado a su propio medidor eléctrico.
- La bomba no debe fallar debido a la falta de agua; eso significa que instalaremos un sensor para la carrera "seca" de la bomba. Si no hay agua, simplemente no arranque la bomba, y si funciona, hacemos una parada de emergencia.
- La bomba no debe funcionar durante demasiado tiempo; por ejemplo, más de 25 minutos. Exceder este tiempo indica que el sistema está dejando su modo normal de operación.
- El llenado de los contenedores debe realizarse sin intervención humana, es decir, automáticamente, y esto significa comenzar en el nivel inferior y detenerse en el nivel superior.
- Solo se debe llenar un tanque, es decir, instalamos dos válvulas para suministrar agua para un conjunto en cada tanque.
- La pausa entre los arranques de la bomba debe ser de al menos 30 minutos.
- Una interrupción de energÃa no deberÃa afectar el algoritmo de operación, si estaba activo. A pesar de todo, el algoritmo debe completarse.
Las tareas son simples y se pueden resolver en cientos, si no en mil formas. Pero el tÃtulo del artÃculo habla por sà mismo, y seguiremos un camino espinoso. Usemos un controlador virtual (por ahora, por supuesto), que hará todo esto.
¿Cómo funciona un controlador industrial?
Por supuesto, aclararemos de inmediato: estamos hablando de los llamados controladores lógicos programables, o PLC, para abreviar. ¿Qué se esconde bajo esta abreviatura? Y esto es lo que está oculto: una increÃble variedad de soluciones de hardware, una gran cantidad de productos de software y utilidades. Una pregunta razonable surge de inmediato: ¿cómo usar todo este bien? ¿Es realmente necesario estudiar la parte material desde cero y encontrar tiempo y dinero para cada nuevo dispositivo con el fin de tomar cursos de capacitación y adquirir las habilidades necesarias para trabajar con cada dispositivo?
La respuesta es no, no es necesario. Todo se ha hecho antes que nosotros. Solo queda estudiar y aprender a usar. Esto es lo que propongo hacer más: una pequeña inmersión en el estándar IEC 61131. Vamos a revelar qué partes contiene este estándar.
- IEC 61131-1: información general.
- IEC 61131-2: Requisitos del equipo y pruebas.
- IEC 61131-3: Lenguajes de programación.
- IEC 61131-4: GuÃa del usuario.
- IEC 61131-5: Comunicaciones.
- IEC 61131-6: seguridad funcional.
- IEC 61131-7: Programación de control difuso.
- IEC 61131-8: Directrices para el uso e implementación de lenguajes de programación.
- IEC 61131-9: interfaz de comunicación digital de punto único para sensores y actuadores pequeños.
- IEC 61131-10: formato de intercambio basado en XML abierto PLC.
Pero no profundizaremos en el tema de los estándares, y en pocas palabras, el controlador generalmente funciona de manera cÃclica: sondear el estado de las entradas, el intérprete ejecuta el programa de control, establece el estado de las salidas, realiza tareas de mantenimiento interno y vuelve a sondear el estado de las entradas. Es lo suficientemente aburrido, pero efectivo y eficiente. Un programa de control es un pseudocódigo que se crea utilizando un entorno de programación.Por lo general, dicho pseudocódigo es una secuencia codificada en binario, que no tiene nada que ver con los lenguajes de programación habituales. Aunque para el usuario se presenta de forma comprensible, para el controlador, se utiliza una vista completamente diferente. Un buen ejemplo es un pequeño programa, presentado en forma de IL, LD y en forma de codificación binaria para el controlador (hmm, ni siquiera hay un término especial). A continuación, debajo del spoiler, se muestra un pequeño ejemplo.
Opciones de visualización del programa Entonces, ¿qué hace que este programa sea útil? SÃ, ella no hace nada: si el valor del merker M8010 es 1, entonces 1. se escribirá en la salida con la dirección Y377. En consecuencia, lo mismo es para 0.
Una de las mayores ventajas de tal implementación es la capacidad de descargar el programa de la memoria del controlador, abrirlo para editarlo en un editor de una manera que sea comprensible para los humanos, compilar (este término es condicional aquÃ) y cargarlo nuevamente en la memoria del controlador. Además, algunos controladores incluso guardan comentarios y nombres de variables.
¿Cómo programar el controlador?
Por supuesto, se necesita un software especializado. Después de largas búsquedas y experimentos, se eligió Autoshop v3.02 de Inovance Control. Es notable porque es gratis, está disponible para descarga gratuita y es compatible con controladores compatibles con controladores Mitsubishi. Y admite el trabajo no solo a través de puertos serie, sino también a través de Ethernet. Enlace a la versión utilizada por nosotros, bajo el spoiler.
Enlace para descargar desde Yandex Disk Bueno, instalamos el programa y ahora otra pregunta: ¿cómo escribir el programa en nuestro controlador? Como trabajaremos con un dispositivo especÃfico, instalaremos controladores especÃficos para el puerto COM virtual. Para guardar conclusiones y simplificar, decidà usar el puerto USB de la placa para la conexión. Conductores bajo el spoiler.
Controladores en Yandex Disk Después de instalar los controladores y conectar la placa a través de un mini-USB, puede verificar si todo fue exitoso. Para hacer esto, haga clic derecho en My Computer-Management-Device Manager-Ports (COM y LPT). DeberÃa ver una ventana como debajo de un spoiler. El número de puerto COM en su sistema puede variar.
Administrador de dispositivos Ahora puede seleccionar Herramientas-Configuración de comunicación en el menú de AutoShop, seleccione Serie en la ventana que aparece, especifique el número de puerto y haga clic en el botón Prueba. DeberÃas tener una ventana como esta debajo de un spoiler.
Conexión exitosa al tablero Pero si algo no funciona para usted, escriba en PM o en un comentario. Definitivamente lo ayudaremos.
Elementos del programa, sin los cuales será triste.
En adelante, consideraremos el lenguaje de los diagramas de escalera, o el llamado LD. Consideremos solo aquellos elementos que usaremos más adelante.
- Las entradas y salidas son discretas. Están designados como X e Y. Diseñados para recibir y emitir señales discretas.
- El área de memoria de M merkers M. Puede tomar dos estados: encendido y apagado.
- Los temporizadores se designan T. Diseñados para contar el tiempo de 0.1 a 3276.7 segundos.
- El área de los registros D. Tiene una dimensión de celda de 16 bits, pero también se puede direccionar como una celda de 32 bits.
Caballo esférico en el vacÃo, o registros de direccionamiento indirecto
Los registros de direccionamiento indirecto se designan V y Z y se pueden direccionar de V0 a V7 y de Z0 a Z7. ¿Por qué se pueden usar? Veamos cómo funcionan en general. Este registro D1000V0 de aspecto loco significa que se utilizará la dirección de celda calculada como la dirección D1000 más el valor escrito en el registro de direccionamiento indirecto. Si hay 15, usaremos la dirección de la celda D1015. Es muy conveniente cuando se trabaja con matrices de datos o con control de tabla: es suficiente para nosotros cambiar el valor del registro de Ãndice, y obtenemos los valores de las celdas de memoria que se abordaron. Pero aunque no los aplicaremos, tocaremos esto en la próxima publicación.
Un poco sobre la visualización del programa o la depuración en lÃnea
Si es programador y acaba de terminar de escribir un programa, el siguiente paso es la depuración. Y aquà surge la pregunta: cómo hacerlo. Nuevamente, hay muchas opciones, pero hablaré sobre la que usaremos más. El editor del entorno de programación le permite mostrar visualmente qué valores de bits y variables están actualmente en la memoria del controlador presionando un botón. Un ejemplo muy revelador será: debajo de los spoilers fuera de lÃnea y la visualización en lÃnea del programa en el editor.
Botón para cambiar al modo de vista variable Tipo de programa en el modo de visualización de valores variables Tipo de programa en modo edición Un poco más sobre los procesos que ocurren cuando hace clic en el botón En lÃnea. El programa compila rápidamente una lista de variables visibles y, al finalizar, la escribe en un búfer de controlador especÃfico. Después de eso, el controlador prepara los datos de esta lista y los coloca en otro búfer. El programa lee los valores de este búfer y los muestra como valores en el diagrama mÃmico. Si desplaza un pequeño programa en la ventana de visualización y cambia las variables visibles, este ciclo se repetirá nuevamente ...
Quién llama a Hamlet, o en el escenario BluePill x405
¿Has notado que el mercado no se encuentra con placas base simples como una tableta azul, sino que está equipado con procesadores como F405 y superior? Personalmente encontré solo piedras F401, pero este es un nivel ligeramente diferente ... Soy fácil de escalar, y para mis experimentos, sin pensarlo dos veces, hice un pago en el viejo P-CAD 2006 y lo pedà a los chinos en uno de los sitios de pedidos rápidos. Por supuesto, en color es una tableta verde, pero en términos de significado, decidà dejar el nombre BluePill, pero indicando que ya es x405. El resultado debajo de los spoilers es una foto de la placa BluePill x405.
Concepto y gerber en github ¿Un poco sobre por qué esta placa es tan notable? Después de todo, ¡solo hubo miles de intentos de crear clones de bluepill! Pero la diferencia es esta: adjunto el firmware a esta placa, que la convertirá en un núcleo que ejecuta un programa que es compatible con los controladores industriales de Mitsubishi en un sistema de comando. Este milagro se calcula en 16 entradas, 16 salidas, 2 entradas analógicas, 3 UART con soporte DE para RS485, 1 bus maestro de un cable. UART puede funcionar como un bus maestro modbus RTU y como esclavo. Y pueden trabajar de forma completamente independiente.
Pero esto no es todo: si conecta una baterÃa de 3V al pin VBAT, no solo el reloj, sino también los temporizadores, contadores, marcadores y los primeros 1000 registros de uso general D mantendrán sus valores. Y hay 8000 registros.
Anticipando las preguntas, diré de inmediato: sÃ, el software se basa en un sistema operativo en tiempo real. SÃ, se usa DMA siempre que sea posible. Estas caracterÃsticas permiten trabajar sin cambios significativos en el tiempo de ciclo con altas cargas de comunicación. Esta versión es la segunda revisión, revisada y complementada.
Esta placa puede ser totalmente programada por GX FXDeveloper y IEC Developer y GX Works.
El destino de la bomba y dos tanques.
Ahora solucionemos este problema, especialmente porque todas las herramientas para esto están disponibles. Para no alargar mucho, escribà un programa, lo dividà en partes (las llamadas redes o cadenas de trabajo), y mostraré cada una de ellas aquà y daré comentarios.
Net 1 - primera ejecución del programa El registro D1000 almacena el tiempo requerido para suprimir el rebote de contacto. De hecho, esto ya está en el programa, pero quiero mostrarlo más claramente. El registro D1001 es responsable del tiempo de protección de la bomba. En él escribimos 15,000, o 1,500 segundos. A continuación, tenemos una cadena de restablecimiento de respaldo: si algo sale mal, puede enviar la señal 1 a la entrada X14 y reiniciar la placa. En este caso, 0 se escribe en los registros D0 y D1, y los merckers M98 y M99 se reinician.
Net 2 - procesamiento de señal de entrada AquÃ, con la ayuda de temporizadores, nos deshacemos del rebote de los contactos. Para hacer esto, use un retraso de 200 milisegundos. Para garantizar que en el futuro programa, al cambiar la dirección de entrada del contacto, no sea necesario reescribir muchas cadenas, utilizo marcadores intermedios (por ejemplo, M102). También es digno de mención que el comerciante del sistema M8003 se usa aquÃ: se enciende después de que ha pasado el primer ciclo de ejecución del programa. Pero el M8002 Merker está activo solo en el primer ciclo del programa, y ​​esto puede y debe usarse para establecer los valores iniciales.
Red 3 - llenado del tanque 1. El llenado del tanque 1 es completamente idéntico al llenado del tanque 2 con la excepción de las direcciones. El dibujo no encajaba un poco, pero es mejor que lo veas simplemente abriendo el proyecto. ¿Qué es lo notable de esta unidad de control? La presencia de protecciones y puntos muertos que permiten mecanismos de arranque y parada sin golpes. Por ejemplo, después de abrir la válvula 1, solo después de 700 ms se emitirá un comando para arrancar el arrancador, que enciende la bomba.
La administración aquà no proporciona el modo manual. Además, se implementa la protección contra el funcionamiento en seco y la protección contra el funcionamiento prolongado de la bomba.
Net 5-6 - Gestión de salida Y aquà controlamos las salidas de acuerdo con las cerraduras.
De las tareas, solo la conexión del intervalo de protección de 30 minutos antes de reiniciar permaneció sin cumplirse. Debo decir de inmediato: en esta versión solo se implementan las entradas X0-X3 y la salida Y0-Y3, lo cual es suficiente para probar el material en este artÃculo. La unión es PA4-X0, PA5-X1, PA6-X2, PA7-X3 y PB4-Y0, PB5-Y1, PB6-Y2, PB7-Y3.
Velocidad del ciclo del programa: métodos de medición del abuelo
Cuando nos hacemos esta pregunta, inmediatamente se nos ocurre hacer esto: escribir en el controlador un programa muy grande a partir de un cierto número de elementos idénticos, obtener el tiempo de ejecución y el tiempo de ejecución de un comando. Se dice - hecho, bajo el programa de spoiler y en nombre del tiempo de ejecución del spoiler.
7995 pasos - 2.6 milisegundos AquÃ, cada paso es un comando, y obtenemos 2.6 / 7995 = 0.325 microsegundos. No muy rápido, pero no está mal.
FPU: ¿ser o no ser?
Ahora determinemos qué tan rápido funcionan las instrucciones de punto flotante en nuestro firmware. Hay dos firmwares, uno que usa la FPU incorporada y el otro con emulación de software. El siguiente programa:
Programa para calcular el tiempo de ejecución de una instrucción. El firmware a continuación está debajo del spoiler, y no tienen restricciones
Cuando se utiliza una FPU de hardware, el tiempo de ejecución del programa es de 1.8 ms, o 1.8 / 600 = 0.003 ms, o 3 microsegundos.
Ahora reemplace el firmware: use la emulación de software. El resultado ya es diferente: 2.5 ms, o 2.5 / 600 = 0.0041 ms, o 4.1 microsegundos. No está mal, pero la diferencia es bastante notable.
Conclusión
A pesar del gran volumen del artÃculo, todavÃa hay muchos materiales que serÃa bueno cubrir. Entonces, si este artÃculo es de su interés, este artÃculo será seguido por otro más. Pero me gustarÃa encontrar personas con ideas afines que quieran unirse al cruce de lo industrial y lo doméstico con un solo propósito, para que estas herramientas sean accesibles para un simple laico.