Cómo hicimos el controlador para controlar elementos de publicidad exterior (parte 2)



En la parte anterior del artículo, examinamos la etapa de inicio del diseño del sistema. Ahora quiero decirte qué tipo de dispositivo salió al final.







Parte 1

Parte 2



En la discusión de la primera parte, se planteó la cuestión de la medición de voltaje y corriente. Así que decidí cubrirlo con más detalle. Como escribí anteriormente, los sensores de voltaje y corriente en nuestro circuito son transformadores. Se utiliza un transic BV 201 0145 en miniatura para medir el voltaje, y para el sensor de corriente AC-1020:







Los voltajes se eliminan de ellos, que son digitalizados por el ADC integrado en el microcontrolador. La parte analógica se muestra a continuación:







El sensor de corriente se carga a través de la resistencia R3. El diodo Zener VD3 protege contra picos de voltaje repentinos causados ​​por picos de corriente cortos. Las resistencias R2, R4 establecen el "punto cero" alrededor de 1.8V. Lo mismo se hace con el transformador de tensión. Solo hay un divisor en las resistencias R8 y R10, ya que el transformador en nuestro caso produce una tensión nominal de 12 V.



Digitalizamos a una frecuencia de 1000 Hz durante 200 ms. Con base en los valores obtenidos, calculamos el RMS. Hacemos un cálculo rápido de los valores al cuadrado justo en la interrupción. Una vez acumuladas 200 muestras, el cálculo final con números de coma flotante se realiza en el ciclo principal del programa.



Por qué necesita medir RMS y cuál es la mejor manera de hacerlo, se describe detalladamente en este artículo .



Ya he escrito más de una vez que a la hora de desarrollar nuestros dispositivos, siempre intentamos aprovechar al máximo los componentes electrónicos más habituales para, por un lado, reducir el coste y, por otro, no tener problemas con su suministro durante la producción de la serie. En este diseño, todas las resistencias utilizadas tienen una tolerancia del 5%. Naturalmente, debido a tal error, los productos después de la producción tuvieron un gran error al medir voltaje y corriente. Este error se eliminó en un banco de calibración automatizado. El "stand", por supuesto, suena un poco fuerte, pero cumple su función como debería. El stand consta de los siguientes componentes:



  • Juego de tres lámparas halógenas de 500 W
  • Sensor de corriente descrito arriba
  • Contador de electricidad Energomera CE102M
  • Convertidor USB-RS-485
  • Cortacircuitos


Usamos el medidor como un medidor ejemplar para voltaje de red y corriente de carga. El modelo CE102M es muy conveniente porque, en primer lugar, se conecta con solo dos cables al convertidor USB-RS-485 (hay su propio convertidor de energía dentro del medidor) y, en segundo lugar, no requiere ingresar el número de serie para leer los datos. Parece una nimiedad, pero añaden comodidad al usar el mostrador.



El protocolo de intercambio está bien descrito en el manual del fabricante. Entonces no hubo dificultades con la implementación del software.



Por cierto, puede escribir un pequeño artículo por separado sobre los contadores. En un momento, trabajé en estrecha colaboración con ellos, como resultado, algunos de nuestros dispositivos admiten cuatro modelos populares: Incotex-SK "Mercury 206", Energomer "CE102", Energomer "CE102M" e IEK "STAR 104/1".



La vista general del stand resultó de la siguiente manera:







Para la automatización, se desarrolló un programa simple que lee los datos del medidor, controla los relés integrados del controlador y selecciona automáticamente los coeficientes para el medidor de corriente y voltaje:



generalmente usamos códigos de barras para los números de serie de nuestros dispositivos. Es muy conveniente ingresarlos usando un escáner de código de barras:







pero en este caso, se ordenó el dispositivo y el cliente pidió ejecutar la serie simplemente en forma de números grandes en el panel frontal.



El programa de calibración guarda todos los datos en nuestro sistema interno. Registra quién, cuándo se comprobó qué y la correspondiente lista de parámetros. Los más importantes son el número de serie y la dirección MAC.



Por cierto, sobre las direcciones MAC. Los compramos como chips 24AA025E48-I / SN de Microchip. Cuando se compran a granel, son económicos y muy fáciles de usar. La dirección MAC se lee a través de la interfaz I2C.



Ahora para la conexión con el servidor. Al inicio del desarrollo, ya teníamos la funcionalidad principal. Es un servicio web simple escrito en ASP.net y un programa de servidor separado para comunicarse con el hardware. Cada controlador una vez por minuto transmite un paquete de información a través del protocolo UDP. El software del servidor lo analiza, guarda los datos en la base de datos (con "diezmado" hasta una vez por hora) y, además, recuerda la dirección IP externa y el puerto de donde provino el paquete. Esto es necesario para controlar el controlador desde el servidor.



Dado que, de hecho, el 100% de los dispositivos se encuentran detrás de NAT, es necesario tener en cuenta algunas peculiaridades. El principal es que algunos NAT tienen un pequeño tiempo de espera para asignar un puerto externo al cliente (menos de un minuto). El porcentaje de los mismos, según nuestras estadísticas, no es muy grande, pero esto en cualquier caso conduce a la necesidad de reducir el intervalo de envío de datos de monitoreo desde el controlador al servidor para "mantener" el puerto dedicado.



Escribiré de inmediato por qué usamos conexiones UDP y no TCP, aunque nuestro dispositivo, por supuesto, tiene una implementación de ambos protocolos. La elección de UDP se basa únicamente en la facilidad de uso y los bajos costos computacionales tanto en el lado del controlador como del servidor. Sí, no garantiza la entrega de paquetes de datos, pero debe comprender que esto se implementa fácilmente mediante un protocolo de capa superior que se ejecuta sobre UDP. Además, al transmitir datos de monitoreo, la pérdida de varios paquetes por día es absolutamente insignificante, especialmente considerando que al guardar en la base de datos, todavía "adelgazamos" y guardamos los datos solo una vez por hora. Pero cuando el controlador se controla a distancia, por ejemplo, cuando el relé se enciende / apaga en modo manual, el sistema de “solicitud-respuesta” funciona y se realizan varios intentos para enviar un comando.



Además, a través del servidor hemos implementado una actualización remota del "firmware" de los controladores. También funciona sobre UDP. Es cierto que la actualización funciona en modo semiautomático. De todos modos, no es bueno ejecutarlo en la máquina en un momento arbitrario, ya que esto puede generar un problema en el trabajo de los usuarios finales. Imagínese lo sorprendidos que estarán si a plena luz del día el relé Ethernet desconecta algo de carga y se reinicia :-)



En conclusión, me gustaría decir que en los últimos dos años hemos producido casi mil de estos dispositivos. Todos ellos están en línea. Aproximadamente otros dos mil controladores también se comunican constantemente con nuestro servidor. En general, todo funciona de manera bastante estable. Aunque, por supuesto, estamos ampliando constantemente la funcionalidad. Por ejemplo, recientemente lanzamos una mafia. Aplicación para el control remoto de nuestros dispositivos a través de Internet. Pero escribe sobre él la próxima vez ...



All Articles