Buenas tardes Durante mucho tiempo, FLProg no tuvo noticias. Esto se justifica por el hecho de que estaba ocupado con la gran tarea de crear un sistema Scada integrado en el programa. Y así salió la primera
versión beta de este sistema .
Durante el proceso de desarrollo, de vez en cuando le contaba al sitio web del programa sobre la situación en el trabajo.
Historial del sistemaEl primer informe de estado del proyecto del 29 de junio Año 2017
El segundo informe sobre el estado del proyecto del 6 de septiembre. Año 2017
Primero, hablaré sobre la ideología del sistema.
Actualmente, no he encontrado un solo sistema Scud que me convenga en términos de nivel de entrada y facilidad para crear proyectos. Casi todos ellos son monstruos diseñados para uso industrial, y para comenzar a usarlos debes someterte a un entrenamiento serio. Y después del entrenamiento (por ejemplo, soy un desarrollador certificado en WinCC), el comienzo del trabajo en ellos requiere una cantidad considerable de tiempo. Además, sus precios comienzan en decenas de miles de rublos. Existen, por supuesto, versiones gratuitas, pero la mayoría de las veces están limitadas por un número muy pequeño de etiquetas o por el tiempo de funcionamiento. Hay FreeScada. Pero todavía no entendía cómo trabajar con ella. Y si no pudiera hacer esto, las personas que no estén familiarizadas con la programación (que son la mayoría de los usuarios del programa) no podrán hacer frente.
Además, en todos los skads que consideré para crear la lógica de comportamiento del skad en sí, se utilizan ciertos lenguajes de programación textuales. Es decir, es necesario estudiar su sintaxis, escribir reglas, un conjunto de comandos. Esto también contradice el lema del proyecto FLProg: "Programación para no programadores".
En general, quería algo liviano, con un umbral de entrada bajo y la capacidad de programar la lógica interna mediante la programación visual. Y por supuesto es gratis. No se encontró nada adecuado, lo que significa que reinventaremos nuestra bicicleta.

Para el concepto básico, tomé la idea de implementar no un scad, sino presentar la computadora como un microprocesador con una pantalla integrada, teclado y mouse. En consecuencia, las partes principales del programa aparecieron de inmediato.
Editor de gráficos
Como muestra, tomé el programa WinCC favorito de Siemens, integrado en el paquete TiaPortal. Me quitó lo que no me gusta, agregó lo que me parece que le falta, tomó un poco de Windows Paint, un poco de CorelDraw, un poco de mí mismo. En todos los otros skads que vi, la tarea rígida de los tamaños de pantalla me molestó mucho. Cuando estas pantallas se mostraban en monitores con una resolución diferente, se obtenían cuadros negros o algunos de los elementos iban más allá de la pantalla y eran simplemente invisibles. Esto se aplica completamente, por ejemplo, al mismo WinCC. Lo veo en el trabajo todos los días. En mi scud, el tamaño de la pantalla también está configurado, pero al reproducir un proyecto en el reproductor, puede cambiar el tamaño de la ventana del programa, mientras que los elementos se ajustarán automáticamente al nuevo tamaño. Algo así como escalado, pero inteligente, sin pérdida de calidad (todos los widgets de skada son vectoriales).
En la primera versión beta del programa de widgets hasta ahora. Este es un rectángulo, círculo, polilínea, texto. Además, hay controles. Este es un campo de entrada / salida, un botón simple, un indicador redondo.
Todos los widgets tienen animación. Usando las variables adjuntas, pueden cambiar dinámicamente su posición, visibilidad, color de contorno (quién tiene el contorno), color de relleno (quién puede llenar). Un widget de texto puede cambiar su texto, y un widget de rectángulo y un campo de entrada pueden tener un modo de relleno dinámico (el nivel de relleno cambia según el valor de la variable enlazada).
También es posible vincular eventos a cualquier widget. Esto se desplaza sobre el widget, mueve el cursor fuera del widget, hace clic en el botón del mouse, suelta el botón del mouse, clic, doble clic. Posibles reacciones a eventos: cambiar el valor de una variable, invertir el valor de una variable de tipo booleano, cambiar a otra pantalla, abrir un diálogo de servicio.
Esto ciertamente no es mucho, pero para la primera versión por ahora es suficiente. Además, la cantidad de widgets y sus capacidades crecerán.
Pequeña demostración
Editor de esquemas
Aquí, por supuesto, tomé como base el editor FBD, que se usa al programar el controlador en el programa FLProg. La interfaz del editor no ha cambiado mucho, lo que permitirá a los usuarios del programa trabajar fácilmente en el editor del esquema de skad. Pero el relleno ha cambiado dramáticamente. Durante el trabajo en el programa FLProg (ya ha sido el quinto año), tuve muchas ideas sobre cómo optimizar el trabajo del editor y compilador del programa. Apliqué todas estas ideas en el editor de diagramas scada, y después de ejecutarlo, también las transferiré al programa principal. En cuanto al soporte del lenguaje LAD en el scad, aún no he tomado una decisión, si hay suficientes usuarios interesados en esto, lo haré.
Pequeña demostración
ComunicacionesY, por supuesto, las comunicaciones, qué tontería sin ellas.
- Protocolo interno FLProg. Este es el intercambio de variables de cualquier tipo a través de ComPort (para una computadora) con el puerto UART del microcontrolador. Funciona rápidamente, pero solo para el firmware del controlador creado en el programa FLProg.
- Modbus RTU, Modbus TCP, Modbus RTU sobre TCP. Puede crear un número ilimitado de conexiones utilizando estos protocolos. Se admiten las funciones 1, 2, 3, 5, 6, 15, 16. El controlador de protocolo es autoescrito, no se utilizan bibliotecas externas. Traté de cumplir con el estándar Modbas tanto como sea posible. Las pruebas mostrarán cómo tuve éxito. Funciona bajo Windows y Linux. Sin embargo, para Linux hay algunas limitaciones que están fuera de mi control. El hecho es que Modbus TCP Slave levanta un servidor TCP en un puerto específico. Para Modbus, el puerto estándar es -502. Pero en Linux, los puertos de menos de 1024 no están permitidos para que un usuario normal se abra. Por lo tanto, debe crear un esclavo en el puerto con un número más alto o iniciar el reproductor desde la raíz (lo cual no es bueno). Con el maestro, dado que es un cliente, no existen tales problemas.
Para todas las comunicaciones, es posible en el proceso de ejecución habilitar, deshabilitar la conexión, configurar completamente la conexión, habilitar deshabilitar el sondeo de esclavos, monitorear el estado de la conexión, así como el estado de la conexión del esclavo con el maestro. Por supuesto, para cada maestro y esclavo hay variables de servicio que almacenan el código del último error durante el sondeo.
En cualquier momento durante el desarrollo de un proyecto, puede abrir este proyecto para su ejecución y ver cómo funcionará. Para jugar en el reproductor, se crea un archivo Runtime.
Pequeña demostraciónRecepción: transferencia de variables a través de UART
Modbus RTU
Modbus RTU
JugadorEl reproductor de archivos de tiempo de ejecución es una aplicación independiente. El paquete del reproductor tiene tres ejecutables para Windows y dos para Linux.
Archivo
Start.exe (solo versión de Windows). Al comenzar, busca un archivo de tiempo de ejecución (extensión .fsp) a su lado. Si encuentra, lo lanza para su ejecución. Si no lo hace, busca entradas del administrador del proyecto. Estas entradas buscan el proyecto predeterminado, que se inicia para su ejecución. Si no se encuentran los registros del administrador del proyecto, o si el proyecto predeterminado no está marcado en ellos, se inicia el administrador en sí. Usando el administrador, puede encontrar archivos de tiempo de ejecución en la computadora, hacer una lista de ellos y asignar uno de ellos como el predeterminado. El archivo Start.exe no se puede renombrar, ni se pueden adjuntar archivos de tiempo de ejecución (extensión .fsp). No puede eliminar este archivo del paquete.
Archivo
Pleer.exe. El comportamiento es similar al archivo Start.exe, pero no hay restricciones para cambiar el nombre y vincular archivos de tiempo de ejecución. Si no se necesitan estas funciones, este archivo se puede eliminar del paquete (esto solo se aplica a Windows, en Linux es el archivo de inicio principal).
Archivo
Manager.exe. Sirve para el lanzamiento inequívoco del gerente de proyecto. Si no se necesita esta función, este archivo se puede eliminar del paquete.
Los archivos restantes en el paquete son directamente el reproductor.
Pequeña demostración
Entrenamiento!

El objetivo principal del proyecto FLprog es atraer a los jóvenes a la profesión de programador industrial, ingeniero electrónico y simplemente en la profesión técnica. Hay demasiados programadores ordinarios y gerentes de ventas en nuestro país. Donde sea que escupes, ya sea un programador de juguetes para un Android, o un programador web de páginas de ventas, o un administrador "avanzado". Pero no encontrará un buen ajustador o desarrollador de un sistema automatizado de gestión de incendios. En este sentido, estoy satisfecho con la aparición de dos círculos de robótica, que han elegido FLProg como el principal programa de trabajo. Uno en la ciudad de
Shatura , el otro en
Mytishchi (Foto de este círculo). Con esto en mente, la scada también fue desarrollada. Lo intenté para que cualquier maestro pudiera hacer una aplicación interactiva, por ejemplo, para demostrar el funcionamiento de la lógica básica, sin dificultades, aprendiendo lenguajes de programación, principios de creación de programas. Además, con la ayuda de esta scada, es posible llevar a cabo cualquier trabajo de laboratorio en la construcción de circuitos lógicos, capacitación en la creación de sistemas de automatización industrial.
No tengo el don de un maestro, pero creo que un maestro de verdad puede encontrar el material adecuado. Bueno, traté de proporcionar la herramienta.

Debo advertir de inmediato que la versión actual del programa es una prueba FUERTE. Como el personal del proyecto FLProg está formado por una persona (yo), uso a los usuarios del programa descaradamente como departamento de control de calidad. Y están felices de hacer este trabajo. Hasta la fecha, se han detectado muchos errores. Por lo tanto, en un futuro próximo la versión de prueba se actualizará en el servidor. El tiempo estimado de prueba es un mes, después del cual se lanzará una versión estable.
Si este tema interesa a los lectores de Geektimes, continuaré publicando artículos con una descripción más detallada de las funciones del programa.