{"id":3528,"date":"2024-03-23T20:36:03","date_gmt":"2024-03-23T20:36:03","guid":{"rendered":"https:\/\/brandon-engineer.com\/?page_id=3528"},"modified":"2024-09-29T18:00:31","modified_gmt":"2024-09-29T18:00:31","slug":"brandolinera","status":"publish","type":"page","link":"https:\/\/brandon-engineer.com\/en\/brandolinera\/","title":{"rendered":"Brandolinera"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3528\" class=\"elementor elementor-3528\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1aca622 e-flex e-con-boxed e-con e-parent\" data-id=\"1aca622\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d5448ca e-con-full e-flex e-con e-child\" data-id=\"d5448ca\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-55c8e34 elementor-widget elementor-widget-image\" data-id=\"55c8e34\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 28-02-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"789\" height=\"500\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera.jpg\" class=\"attachment-full size-full wp-image-3536\" alt=\"\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera.jpg 789w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera-300x190.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera-768x487.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera-600x380.jpg 600w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7583163 elementor-widget elementor-widget-heading\" data-id=\"7583163\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 28-02-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Resumen del proyecto<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1bb11d4 elementor-widget elementor-widget-text-editor\" data-id=\"1bb11d4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 28-02-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>El objetivo del proyecto a realizar es automatizar el proceso de llenado de combustible de los veh\u00edculos de la empresa y la gesti\u00f3n de las revisiones peri\u00f3dicas de los veh\u00edculos.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb85b1e elementor-widget elementor-widget-text-editor\" data-id=\"bb85b1e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"project-inner-box\">\n<h3 class=\"box-title\">Objetivos a realizar<\/h3>\n<p class=\"\">A continuaci\u00f3n se describir\u00e1 todos los objetivos obligatorios que propone el cliente sobre el proyecto y son de obligado cumplimiento para su implementaci\u00f3n con \u00e9xito.<\/p>\n\n<div class=\"checklist\">\n<ul>\n \t<li><i class=\"fas fa-badge-check\"><\/i> Lectura de litros suministrados por operario<\/li>\n \t<li><i class=\"fas fa-badge-check\"><\/i>Env\u00edo automatizado de los litros a administraci\u00f3n<\/li>\n \t<li><i class=\"fas fa-badge-check\"><\/i> Claves \u00fanicas para cada operario<\/li>\n \t<li><i class=\"fas fa-badge-check\"><\/i> Imposibilidad de suministro sin el rellenado de los datos del operario<\/li>\n<\/ul>\n<\/div>\n&nbsp;\n<h3 class=\"box-title\">Objetivos propuestos por mi<\/h3>\n<p class=\"\">Se va a desarrollar todas las ideas para optimizar el uso de la Brandolinera propuestas por mi<\/p>\n\n<div class=\"checklist\">\n<ul>\n \t<li><i class=\"fas fa-badge-check\"><\/i> Creaci\u00f3n de base de datos con para la revisi\u00f3n de los gastos<\/li>\n \t<li><i class=\"fas fa-badge-check\"><\/i>Env\u00edo automatizado de avisos de pasar ITV de los veh\u00edculos<\/li>\n \t<li><i class=\"fas fa-badge-check\"><\/i> Envi\u00f3 automatizado de revisiones peri\u00f3dicas de los veh\u00edculos; cambio de correa de distribuci\u00f3n, cambio de aceite, filtros&#8230;<\/li>\n<\/ul>\n<\/div>\n<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9f01b06 e-con-full e-flex e-con e-child\" data-id=\"9f01b06\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21ea9e8 elementor-widget elementor-widget-tragaprojectinfo\" data-id=\"21ea9e8\" data-element_type=\"widget\" data-widget_type=\"tragaprojectinfo.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"widget widget_info\"><h3 class=\"widget_title\">Informaci\u00f3n del proyecto<\/h3><div class=\"project-info-list\"><div class=\"contact-feature\"><div class=\"icon-btn\"><i class=\"fa-solid fa-user\"><\/i><\/div><div class=\"media-body\"><p class=\"contact-feature_label\">Cliente:<\/p><span class=\"contact-feature_link\">Sistein<\/span><\/div><\/div><div class=\"contact-feature\"><div class=\"icon-btn\"><i class=\"fa-solid fa-folder-open\"><\/i><\/div><div class=\"media-body\"><p class=\"contact-feature_label\">Categor\u00eda:<\/p><span class=\"contact-feature_link\">IOT y automatizaci\u00f3n<\/span><\/div><\/div><div class=\"contact-feature\"><div class=\"icon-btn\"><i class=\"fa-solid fa-calendar-days\"><\/i><\/div><div class=\"media-body\"><p class=\"contact-feature_label\">Fecha:<\/p><span class=\"contact-feature_link\">Febrero de 2024<\/span><\/div><\/div><div class=\"contact-feature\"><div class=\"icon-btn\"><i class=\"fa-solid fa-location-dot\"><\/i><\/div><div class=\"media-body\"><p class=\"contact-feature_label\">Direcci\u00f3n:<\/p><span class=\"contact-feature_link\">Molina de segura<\/span><\/div><\/div><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9ac4df9 e-flex e-con-boxed e-con e-child\" data-id=\"9ac4df9\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34ed705 elementor-widget elementor-widget-text-editor\" data-id=\"34ed705\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"widget widget_download\">\n<h4 class=\"widget_title\">Recursos del proyecto<\/h4>\n<div class=\"download-widget-wrap\">\n\n<a class=\"th-btn\" href=\"https:\/\/brandon-engineer.com\/Proyectos\/Brandolinera\/Brandolinera.zap18\"><i class=\"fa fa-code\" aria-hidden=\"true\"><\/i> Descargar c\u00f3digo<\/a>\n<div class=\"download-widget-wrap\">\n\n<a class=\"th-btn style5\" href=\"#\"><i class=\"fa-light fa-file-lines me-2\"><\/i>Descargar Esquema el\u00e9ctrico<\/a>\n<div class=\"download-widget-wrap\"><a class=\"th-btn style5\" href=\"#\"><i class=\"fa-light fa-file-lines me-2\"><\/i>Descargar documentaci\u00f3n t\u00e9cnica<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-71ca202 e-flex e-con-boxed e-con e-parent\" data-id=\"71ca202\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d058039 e-flex e-con-boxed e-con e-child\" data-id=\"d058039\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4eea704 elementor-widget elementor-widget-heading\" data-id=\"4eea704\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Topolog\u00eda del proyecto<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e88263c elementor-widget elementor-widget-text-editor\" data-id=\"e88263c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Para la topolog\u00eda del proyecto se ha propuesto un dise\u00f1o sencillo el cual constar\u00e1 de un 1200 de siemens + un dispositivo IOT el cual repartira la informaci\u00f3n con el resto de usuarios tanto los operarios como los administradores. Para el HMI se ha decidido intentar usar al propio dispositivo IOT como un servidor web con el que se podr\u00e1 acceder desde una pantalla conectada por HDMI o conect\u00e1ndose a la red que emitir\u00e1 el propio dispositivo y conectandose mediante una app que simplemente ser\u00e1 un iframe que mostrar\u00eda la web. Depende del cliente se optar\u00e1 por uno u otro, incluso utilizar ambos. Adjunto un diagrama del funcionamiento<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8572a59 elementor-widget elementor-widget-image\" data-id=\"8572a59\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA.jpg\" class=\"attachment-full size-full wp-image-3668\" alt=\"\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA.jpg 1920w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA-300x169.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA-1024x576.jpg 1024w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA-768x432.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA-1536x864.jpg 1536w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA-18x10.jpg 18w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/DIAGRAMA-BRANDOLINERA-600x338.jpg 600w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb2074b elementor-widget elementor-widget-text-editor\" data-id=\"cb2074b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>**NOTA: Francisca es la encargada de administraci\u00f3n de revisar el diese y Pepe y Juan Diego son los encargados del almac\u00e9n.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-648441e elementor-widget elementor-widget-heading\" data-id=\"648441e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Material<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e9f1af elementor-widget elementor-widget-text-editor\" data-id=\"2e9f1af\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>El material propuesto para el proyecto constar\u00e1 de:<\/p><ul><li>Contador de litros (MGI 110)<\/li><li>Aut\u00f3mata (1200 siemens 6ES7211-1AE40-0XB0)<\/li><li>Dispositivo IOT (Raspberry industrial de industrial shield)<\/li><li>Dispositivos de protecci\u00f3n (Magneto y diferencial)<\/li><li>Pantalla HMI Weintek (&#8212;&#8211;)<\/li><li>Cuadro el\u00e9ctrico (Pendiente de dimensionar)<\/li><li>Contactor de siemens para activar la bomba (&#8212;-)<\/li><li>Selector de Manual-Autom\u00e1tico para en caso de fallo poder forzar el contactor y permitir el funcionamiento manualmente.<\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-79f84e5 e-flex e-con-boxed e-con e-parent\" data-id=\"79f84e5\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-7a8d53c e-flex e-con-boxed e-con e-child\" data-id=\"7a8d53c\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-532868e elementor-widget elementor-widget-text-editor\" data-id=\"532868e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>HMI<\/h2><p>Como este proyecto es propuesto y desarrollado por mi para iniciarme en el desarrollo IOT industrial quise hacer algo que no he visto en otros proyectos y es hacer una pantalla desarrollada con el software libre <strong><a href=\"https:\/\/github.com\/frangoteam\/FUXA\">Fuxa <\/a><\/strong>el cual tiene un proyecto en Github y la verdad me parece un software muy potente. Espero que se siga desarrollando y que salga al mercado formalmente porque tiene un gran potencial de competir con <a href=\"https:\/\/www.aveva.com\/es-es\/\">Aveva<\/a> e <a href=\"https:\/\/inductiveautomation.com\/ignition\/\">Ignition<\/a><\/p><p>Debido a decisiones monetarias el HMI en vez de poner un monitor t\u00e1ctil result\u00f3 m\u00e1s econ\u00f3mico tanto en desarrollo como en precio de producto y fiabilidad poner una pantalla t\u00e1ctil de la marca Weintek<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-310216d elementor-widget elementor-widget-text-editor\" data-id=\"310216d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>PLC<\/h2><h3>Configuraci\u00f3n de hardware<\/h3><p>Para la programaci\u00f3n del PLC se decidi\u00f3 que realizase las tareas OT m\u00e1s sencillas y que todo el tratamiento de datos lo ejecutase el dispositivo IOT que al usar JavaScript ser\u00e1 m\u00e1s sencillo de programar y depurar ya que JavaScript es un lenguaje interpretado.<\/p><p>Para ello se creo un objeto tecnol\u00f3gico para poder aprovechar las entradas r\u00e1pidas del 1200 y contar de forma sencilla los pulsos del caudal\u00edmetro. Para hacerlo primero hubo que configurar el hardware del PLC:<\/p><p><img decoding=\"async\" class=\"size-large wp-image-3674 aligncenter\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-1024x690.jpg\" alt=\"\" width=\"751\" height=\"506\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-1024x690.jpg 1024w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-300x202.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-768x517.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-1536x1035.jpg 1536w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-18x12.jpg 18w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min-600x404.jpg 600w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-min.jpg 1726w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/p><p style=\"text-align: center;\"><em>Configuraci\u00f3n contador r\u00e1pido (Funci\u00f3n)<\/em><\/p><p>En el siguiente apartado se configura la entrada de PLC que vamos a evaluar<\/p><p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3671 size-large aligncenter\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-1024x469.jpg\" alt=\"\" width=\"1024\" height=\"469\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-1024x469.jpg 1024w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-300x137.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-768x352.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-1536x704.jpg 1536w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-18x8.jpg 18w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min-600x275.jpg 600w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-1-min.jpg 1748w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p><p style=\"text-align: center;\"><em>Configuraci\u00f3n contador r\u00e1pido (Configurar entrada PLC)<\/em><\/p><p>Aqu\u00ed podemos encontrar el ID software del contador r\u00e1pido<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3673 aligncenter\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-3-min.jpg\" alt=\"\" width=\"1011\" height=\"764\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-3-min.jpg 1011w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-3-min-300x227.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-3-min-768x580.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-3-min-16x12.jpg 16w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/configurar-hardware-plc-3-min-600x453.jpg 600w\" sizes=\"(max-width: 1011px) 100vw, 1011px\" \/><\/p><p style=\"text-align: center;\"><em>Configuraci\u00f3n contador r\u00e1pido (Lectura ID Hardware)<\/em><\/p><p>Por \u00faltimo deberemos crear en un DB con un tipo de dato &#8220;HSC_Count&#8221;<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3676 aligncenter\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min-1024x447.jpg\" alt=\"\" width=\"751\" height=\"328\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min-1024x447.jpg 1024w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min-300x131.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min-768x335.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min-18x8.jpg 18w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min-600x262.jpg 600w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/crear-db-contador-rapido-min.jpg 1287w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/p><p style=\"text-align: center;\"><em>Crear dato estructurado para el contador r\u00e1pido<\/em><\/p><h3>Programaci\u00f3n<\/h3><p>Una vez terminada la configuraci\u00f3n de hardware hay que agregar el objeto tecnol\u00f3gico al programa donde:<\/p><p>-HSC es el ID hardware que hemos obtenido anteriormente<\/p><p>-CTRL es el DB donde almacenaremos la informaci\u00f3n del contador r\u00e1pido<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3675 aligncenter\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/segmento-contador-rapido-min.jpg\" alt=\"\" width=\"532\" height=\"387\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/segmento-contador-rapido-min.jpg 532w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/segmento-contador-rapido-min-300x218.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/segmento-contador-rapido-min-16x12.jpg 16w\" sizes=\"(max-width: 532px) 100vw, 532px\" \/><\/p><p style=\"text-align: center;\"><em>Configuraci\u00f3n contador r\u00e1pido (Configurar objeto tecnol\u00f3gico)<\/em><\/p><p>Para la monitorizaci\u00f3n de la temperatura de la sala se agrego un normalizado y escalado:<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3677 aligncenter\" src=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-1024x442.jpg\" alt=\"\" width=\"751\" height=\"324\" srcset=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-1024x442.jpg 1024w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-300x130.jpg 300w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-768x332.jpg 768w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-1536x664.jpg 1536w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-18x8.jpg 18w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min-600x259.jpg 600w, https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/09\/normalizado-y-escalado-min.jpg 1567w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/p><p style=\"text-align: center;\"><em>Normalizar temperatura y humedad<\/em><\/p><p>Para preparar los datos a mostrar en pantalla se agrego un peque\u00f1o ajuste con el que mostrar\u00e1 toda la informaci\u00f3n en el HMI<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b80549f elementor-widget elementor-widget-code-highlight\" data-id=\"b80549f\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>#dummy_real := DINT_TO_REAL(\"Datos_Cont\".Mi_HSC1.CurrentCount);\r\n\"HMI_DB\".litros := #dummy_real \/ #pulsos_litro;\r\n\"IOT_DB\".price_supply := \"IOT_DB\".Price * \"HMI_DB\".litros;\r\n\"HMI_DB\".temperature := \"temperatura\";\r\n\"HMI_DB\".humedad := \"humedad\";\r\n\"HMI_DB\".pulsos := \"Datos_Cont\".Mi_HSC1.CurrentCount;<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f683ee4 elementor-widget elementor-widget-text-editor\" data-id=\"f683ee4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3>M\u00e1quina de estados<\/h3><p>Para gestionar las diferentes situaciones se prepar\u00f3 una maquina de estados que gestiona cada una de las etapas por la que tiene que pasar en el proceso de surtir:<\/p><p>1\u00ba Inicio de sesi\u00f3n<\/p><p>2\u00ba Comprobar coche<\/p><p>3\u00ba Surtir<\/p><p>4\u00ba Inyecci\u00f3n en base de datos<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9bf943 elementor-widget elementor-widget-code-highlight\" data-id=\"a9bf943\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>CASE \"DB_Aux\".SQL OF\r\n        \r\n        \r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2003\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\r\n        \/\/ \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\r\n        \r\n        \r\n        \r\n    \"Iddle\": \/\/ Estado de espera\r\n        \/\/ Inicializa todas las variables a FALSE\r\n        \r\n        \"HMI_DB\".CurrentWindow := 10;\r\n        \"Datos_Cont\".Mi_HSC1.EnCV := false;\r\n        \"IOT_DB\".Car_Fail := FALSE;\r\n        \"IOT_DB\".Car_Pass := FALSE;\r\n        \"IOT_DB\".LOG_IN_Fail := FALSE;\r\n        \"IOT_DB\".LOG_IN_Pass := FALSE;\r\n        \"HMI_DB\".ResetStateSupply := FALSE;\r\n        \"IOT_DB\".Check_log := FALSE;\r\n        \"IOT_DB\".Start_SQL := FALSE;\r\n        \"IOT_DB\".Stop_SQL := FALSE;\r\n        \r\n        \/\/ Si hay un cambio de estado  cambia el estado a #supply  \r\n        IF \"HMI_DB\".int_Change_state = 1 THEN\r\n            \"HMI_DB\".aux_kilometro := \"HMI_DB\".kilometer;\r\n             \"HMI_DB\".aux_business := \"HMI_DB\".business;\r\n            \"DB_Aux\".SQL := \"Check_Log\";\r\n            \"IOT_DB\".Check_log := TRUE;\r\n            \"HMI_DB\".int_Change_state := 0;\r\n            \r\n        END_IF;\r\n        \r\n        \/\/ Si se detecta un aumento en los litros sin haber pasado por log in fuerza las variables de \"Surtido no autorizado\"\r\n        IF \"HMI_DB\".litros > 1 THEN\r\n            \r\n            \"HMI_DB\".employee := 9999;\r\n            \"HMI_DB\".pass := 1596;\r\n            \"HMI_DB\".matricula := '00000000';\r\n            \"HMI_DB\".kilometer := 0;\r\n            \"HMI_DB\".business := FALSE;\r\n            \"DB_Aux\".SQL := \"Check_Log\";\r\n            \r\n        END_IF;\r\n        \r\n        \r\n        \/\/ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003        \u2588\u2588\u2003      \u2588\u2588\u2588\u2588\u2588\u2588\u2003  \u2588\u2588\u2588\u2588\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003 \u2588\u2588\u2003\u2003        \u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\r\n        \/\/ \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2003  \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2003\u2003         \u2588\u2588\u2003     \u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003  \u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2588\u2588\u2003         \u2588\u2588\u2003     \u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2003   \u2588\u2588\u2003\r\n        \/\/ \u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\r\n        \/\/ \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003\u2003\r\n        \r\n        \r\n        \r\n    \"Check_Log\": \/\/ Estado de verificaci\u00f3n de log\r\n        \r\n        \/\/Forzamos las variables para que mp se modifiquen en medio del surtido\r\n        \"HMI_DB\".kilometer :=  \"HMI_DB\".aux_kilometro;\r\n        \"HMI_DB\".business  :=  \"HMI_DB\".aux_business;\r\n        \r\n        \/\/ Si se resetea el estado de suministro, permanece en #Iddle\r\n        IF \"HMI_DB\".ResetStateSupply OR \"HMI_DB\".int_Change_state = 1 THEN\r\n            \"HMI_DB\".int_Change_state := 0;\r\n            \"DB_Aux\".SQL := \"Iddle\";\r\n            \r\n        END_IF;\r\n        \r\n        \/\/En caso de fallar el inicio de sesion mostrar la pantalla 13 en el HMI\r\n        \r\n        IF \"IOT_DB\".LOG_IN_Fail THEN\r\n            \"HMI_DB\".CurrentWindow := 13;\r\n        END_IF;\r\n        \r\n        \/\/ Si el inicio de sesi\u00f3n fue exitoso, cambia el estado a #Check_Car\r\n        IF \"IOT_DB\".LOG_IN_Pass THEN\r\n            \r\n            \"DB_Aux\".SQL := \"Check_Car\";\r\n            \r\n        END_IF;\r\n        \r\n        \r\n        \r\n        \/\/ \u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003         \u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2588\u2588\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003 \u2588\u2588\u2003\u2003        \u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2003  \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2003\u2003         \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\r\n        \/\/ \u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003  \u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2588\u2588\u2003         \u2588\u2588\u2003     \u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\r\n        \/\/ \u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003\r\n        \/\/ \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\r\n        \r\n        \r\n        \r\n    \"Check_Car\": \/\/ Estado de verificaci\u00f3n del coche\r\n        \"HMI_DB\".kilometer := \"HMI_DB\".aux_kilometro;\r\n        \"HMI_DB\".business := \"HMI_DB\".aux_business;\r\n        \/\/ Si se resetea el estado de suministro, vuelve a #Iddle\r\n        IF \"HMI_DB\".ResetStateSupply OR \"HMI_DB\".int_Change_state = 1 THEN\r\n            \"HMI_DB\".int_Change_state := 0;\r\n            \"DB_Aux\".SQL := \"Iddle\";\r\n            \r\n        END_IF;\r\n        \r\n        \/\/ Si el coche pas\u00f3 la verificaci\u00f3n, cambia el estado a #Supply\r\n        IF \"IOT_DB\".Car_Pass THEN\r\n            \r\n            \"DB_Aux\".SQL := \"Supply\";\r\n            \r\n        END_IF;\r\n        \r\n        \/\/En caso de de fallo de vehiculo llevar a la pantalla 14\r\n        \r\n        IF \"IOT_DB\".Car_Fail THEN\r\n            \"HMI_DB\".CurrentWindow := 14;\r\n        END_IF;\r\n        \r\n        \r\n        \/\/ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2003  \u2588\u2588\u2003   \u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003  \u2003\u2588\u2588\u2003 \u2588\u2588\u2003\u2003\r\n        \/\/ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2003   \u2003\u2588\u2588\u2588\u2588\u2003\u2003\r\n        \/\/ \u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003 \u2588\u2588\u2003\u2003\u2003\u2003\u2003 \u2588\u2588\u2003    \u2003\u2588\u2588\u2003\u2003\r\n        \/\/ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003\u2588\u2588\u2003     \u2588\u2588\u2003     \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003\r\n        \/\/ \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003\u2003\u2003\u2003\u2003 \u2003\u2003\u2003     \u2003\u2003\u2003     \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\r\n        \r\n        \r\n        \r\n    \"Supply\": \/\/ Estado de suministro\r\n        \r\n        \"HMI_DB\".CurrentWindow := 11;  \/\/Cambiamos a la pantalla de surtido\r\n        \/\/Forzamos las variables en pantalla a las que estaban previamente insertadas\r\n        \"HMI_DB\".kilometer := \"HMI_DB\".aux_kilometro; \r\n        \"HMI_DB\".business := \"HMI_DB\".aux_business;\r\n        \/\/ Activa el motor\r\n        \"Arranque_motor\" := TRUE;\r\n        \r\n        \/\/ Si los litros actuales son iguales a los anteriores, activa un temporizador de 30 segundos\r\n        IF \"DB_Aux\".litros_before = \"HMI_DB\".litros AND \"HMI_DB\".litros > 0 THEN\r\n            \r\n            \"IEC_Timer_0_DB\".TON(IN := TRUE,\r\n                                 PT := T#30s);\r\n            \r\n        ELSE\r\n            \"IEC_Timer_0_DB\".TON(IN := false,\r\n                                 PT := T#30s);\r\n            \/\/ Actualiza el valor de litros antes con los litros actuales\r\n            \"DB_Aux\".litros_before := \"HMI_DB\".litros;\r\n            \r\n        END_IF;\r\n        \r\n        \/\/ Si hay un cambio de estado o el temporizador expira con litros mayores a 0, cambia el estado a #Insert\r\n        IF \"HMI_DB\".int_Change_state = 1 OR (\"IEC_Timer_0_DB\".Q AND \"HMI_DB\".litros > 0) THEN\r\n            \r\n            \"HMI_DB\".int_Change_state := 0;\r\n            \"IEC_Timer_0_DB\".TON(IN := FALSE,\r\n                                 PT := T#30s);\r\n            \"DB_Aux\".SQL := \"Insert\";\r\n            \r\n        END_IF;\r\n        \r\n        \r\n        \r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2588\u2003   \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2003 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2003  \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2003\u2003\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2003\u2588\u2588\u2003 \u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2003  \u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2003   \u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003\u2003\u2003\u2588\u2588\u2003\u2588\u2588\u2003\u2003\u2003\u2003  \u2588\u2588\u2003\u2003\u2003\u2588\u2588\u2003   \u2588\u2588\u2003\r\n        \/\/ \u2588\u2588\u2003\u2588\u2588\u2003 \u2003\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2003\u2588\u2588\u2003  \u2588\u2588\u2003   \u2588\u2588\u2003\r\n        \/\/ \u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003  \u2003\u2003\u2003   \u2003\u2003\u2003\r\n        \r\n        \r\n        \r\n    \"Insert\": \/\/ Estado de inserci\u00f3n de datos\r\n\r\n        \"HMI_DB\".kilometer := \"HMI_DB\".aux_kilometro;\r\n        \"HMI_DB\".business := \"HMI_DB\".aux_business;\r\n        \/\/ Inicia la operaci\u00f3n de SQL para insertar datos\r\n        \"IOT_DB\".Start_SQL := TRUE;\r\n        \/\/ Detiene el motor\r\n        \"Arranque_motor\" := FALSE;\r\n        \/\/ Suma los litros actuales a los litros totales\r\n        \"IOT_DB\".Litres := \"IOT_DB\".Litres + \"HMI_DB\".litros;\r\n        \r\n        \/\/ Si se complet\u00f3 la operaci\u00f3n de SQL, resetea el contador de alta velocidad y vuelve al estado #Iddle\r\n        IF \"IOT_DB\".Stop_SQL THEN\r\n            \"Datos_Cont\".Mi_HSC1.EnCV := TRUE;\r\n            \"HMI_DB\".employee := 0;\r\n            \"HMI_DB\".pass := 0;\r\n            \"HMI_DB\".matricula := '00000000';\r\n            \"HMI_DB\".kilometer := 0;\r\n            \r\n            \r\n            \"Temporizador_BBDD\".TON(IN:=TRUE,\r\n                                    PT:=T#500ms);\r\n            \r\n            IF \"Temporizador_BBDD\".Q THEN\r\n                \"DB_Aux\".SQL := \"Iddle\";\r\n                \"Temporizador_BBDD\".TON(IN := FALSE,\r\n                                        PT := T#500ms);\r\n            END_IF;\r\n\r\n        END_IF;\r\n        \r\nEND_CASE;\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd7ac5f elementor-widget elementor-widget-text-editor\" data-id=\"dd7ac5f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3>Alarmas<\/h3><p>(En construcci\u00f3n)<\/p><h3>Seguridad<\/h3><p>(En construcci\u00f3n)<\/p><h3>Registros<\/h3><p>(En construcci\u00f3n)<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e41121b elementor-widget elementor-widget-text-editor\" data-id=\"e41121b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>IOT<\/h2><h3>Node red<\/h3><p>Para la instalaci\u00f3n del IOT se ha usado la configuraci\u00f3n de Raspberry OS 64 bits. Una vez instalado se han ejecutado las l\u00edneas de comando<\/p><p>Primero actualizamos el sistema operativo a la \u00faltima versi\u00f3n<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d36b007 elementor-widget elementor-widget-code-highlight\" data-id=\"d36b007\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>sudo apt-get update\nsudo apt-get upgrade<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-17243e8 elementor-widget elementor-widget-text-editor\" data-id=\"17243e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Instalamos el NodeRed, reservamos la memoria de 256 MB y habilitamos el servicio para que autoarranque al iniciar el sistema operativo<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb32e00 elementor-widget elementor-widget-code-highlight\" data-id=\"fb32e00\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>bash <(curl -sL https:\/\/raw.githubusercontent.com\/node-red\/linux-installers\/master\/deb\/update-nodejs-and-nodered)\nnode-red-pi --max-old-space-size=256\nsudo systemctl enable nodered.service<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-442f25b elementor-widget elementor-widget-text-editor\" data-id=\"442f25b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Instalamos los nodos &#8220;node-red-contrib-excel&#8221;, &#8220;node-red-contrib-s7&#8221;, &#8220;node-red-dashboard&#8221;, &#8220;node-red-mysql-r2&#8221; y &#8220;node-red-node-email&#8221;<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-afc6f8c elementor-widget elementor-widget-code-highlight\" data-id=\"afc6f8c\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>npm install node-red-contrib-excel\nnpm install node-red-contrib-s7\nnpm install node-red-dashboard\nnpm install node-red-mysql-r2\nnpm install node-red-node-email<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Resumen del proyecto El objetivo del proyecto a realizar es automatizar el proceso de llenado de combustible de los veh\u00edculos de la empresa y la gesti\u00f3n de las revisiones peri\u00f3dicas de los veh\u00edculos. Objetivos a realizar A continuaci\u00f3n se describir\u00e1 todos los objetivos obligatorios que propone el cliente sobre el proyecto y son de obligado&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-builder.php","meta":{"footnotes":""},"class_list":["post-3528","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.0 (Yoast SEO v22.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Brandolinera - Brandon Engineer<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/brandon-engineer.com\/en\/brandolinera\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Brandolinera\" \/>\n<meta property=\"og:description\" content=\"Resumen del proyecto El objetivo del proyecto a realizar es automatizar el proceso de llenado de combustible de los veh\u00edculos de la empresa y la gesti\u00f3n de las revisiones peri\u00f3dicas de los veh\u00edculos. Objetivos a realizar A continuaci\u00f3n se describir\u00e1 todos los objetivos obligatorios que propone el cliente sobre el proyecto y son de obligado...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/brandon-engineer.com\/en\/brandolinera\/\" \/>\n<meta property=\"og:site_name\" content=\"Brandon Engineer\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-29T18:00:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/brandon-engineer.com\/brandolinera\/\",\"url\":\"https:\/\/brandon-engineer.com\/brandolinera\/\",\"name\":\"Brandolinera - Brandon Engineer\",\"isPartOf\":{\"@id\":\"https:\/\/brandon-engineer.com\/#website\"},\"datePublished\":\"2024-03-23T20:36:03+00:00\",\"dateModified\":\"2024-09-29T18:00:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/brandon-engineer.com\/brandolinera\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/brandon-engineer.com\/brandolinera\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/brandon-engineer.com\/brandolinera\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/brandon-engineer.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Brandolinera\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/brandon-engineer.com\/#website\",\"url\":\"https:\/\/brandon-engineer.com\/\",\"name\":\"Brandon Engineer\",\"description\":\"Blog para compartir sobre programaci\u00f3n y tecnolog\u00eda industrial\",\"publisher\":{\"@id\":\"https:\/\/brandon-engineer.com\/#\/schema\/person\/46ee48a398d58bbbf72a86521b95229b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/brandon-engineer.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/brandon-engineer.com\/#\/schema\/person\/46ee48a398d58bbbf72a86521b95229b\",\"name\":\"Brandon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/brandon-engineer.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/cropped-favicon-2.ico\",\"contentUrl\":\"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/cropped-favicon-2.ico\",\"width\":48,\"height\":48,\"caption\":\"Brandon\"},\"logo\":{\"@id\":\"https:\/\/brandon-engineer.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/brandon-engineer.com\",\"https:\/\/www.linkedin.com\/in\/brandon-ramon-navarro\/\"],\"gender\":\"Hombre\",\"knowsLanguage\":[\"espa\u00f1ol\",\"ingl\u00e9s\"],\"jobTitle\":\"Ingeniero de automatizaci\u00f3n\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Brandolinera - Brandon Engineer","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/brandon-engineer.com\/en\/brandolinera\/","og_locale":"en_US","og_type":"article","og_title":"Brandolinera","og_description":"Resumen del proyecto El objetivo del proyecto a realizar es automatizar el proceso de llenado de combustible de los veh\u00edculos de la empresa y la gesti\u00f3n de las revisiones peri\u00f3dicas de los veh\u00edculos. Objetivos a realizar A continuaci\u00f3n se describir\u00e1 todos los objetivos obligatorios que propone el cliente sobre el proyecto y son de obligado...","og_url":"https:\/\/brandon-engineer.com\/en\/brandolinera\/","og_site_name":"Brandon Engineer","article_modified_time":"2024-09-29T18:00:31+00:00","og_image":[{"url":"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/Portada-Brandolinera.jpg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/brandon-engineer.com\/brandolinera\/","url":"https:\/\/brandon-engineer.com\/brandolinera\/","name":"Brandolinera - Brandon Engineer","isPartOf":{"@id":"https:\/\/brandon-engineer.com\/#website"},"datePublished":"2024-03-23T20:36:03+00:00","dateModified":"2024-09-29T18:00:31+00:00","breadcrumb":{"@id":"https:\/\/brandon-engineer.com\/brandolinera\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/brandon-engineer.com\/brandolinera\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/brandon-engineer.com\/brandolinera\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/brandon-engineer.com\/"},{"@type":"ListItem","position":2,"name":"Brandolinera"}]},{"@type":"WebSite","@id":"https:\/\/brandon-engineer.com\/#website","url":"https:\/\/brandon-engineer.com\/","name":"Brandon Engineer","description":"Blog para compartir sobre programaci\u00f3n y tecnolog\u00eda industrial","publisher":{"@id":"https:\/\/brandon-engineer.com\/#\/schema\/person\/46ee48a398d58bbbf72a86521b95229b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/brandon-engineer.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/brandon-engineer.com\/#\/schema\/person\/46ee48a398d58bbbf72a86521b95229b","name":"Brandon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/brandon-engineer.com\/#\/schema\/person\/image\/","url":"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/cropped-favicon-2.ico","contentUrl":"https:\/\/brandon-engineer.com\/wp-content\/uploads\/2024\/03\/cropped-favicon-2.ico","width":48,"height":48,"caption":"Brandon"},"logo":{"@id":"https:\/\/brandon-engineer.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/brandon-engineer.com","https:\/\/www.linkedin.com\/in\/brandon-ramon-navarro\/"],"gender":"Hombre","knowsLanguage":["espa\u00f1ol","ingl\u00e9s"],"jobTitle":"Ingeniero de automatizaci\u00f3n"}]}},"_links":{"self":[{"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/pages\/3528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/comments?post=3528"}],"version-history":[{"count":40,"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/pages\/3528\/revisions"}],"predecessor-version":[{"id":3688,"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/pages\/3528\/revisions\/3688"}],"wp:attachment":[{"href":"https:\/\/brandon-engineer.com\/en\/wp-json\/wp\/v2\/media?parent=3528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}