Fundamentos de la planificación económica en proyectos de automatización

La elaboración de unidades de obra, ofertas y presupuestos es una etapa crítica en la gestión de proyectos de instalaciones de medida y regulación. Permite cuantificar los recursos necesarios, estimar costes con precisión y presentar propuestas competitivas y transparentes. Un presupuesto bien estructurado garantiza la viabilidad económica del proyecto y facilita la toma de decisiones por parte del cliente.

Este capítulo aborda el proceso sistemático para identificar unidades de obra, desglosar sus componentes, cuantificar materiales y mano de obra, asignar precios unitarios y elaborar la oferta técnica y económica final.

Identificación de unidades de obra

Una unidad de obra es el conjunto mínimo de tareas que constituyen una parte funcional y medible del sistema. Por ejemplo, en una instalación de regulación de temperatura, las unidades de obra pueden ser:

  • Suministro e instalación de válvula de control motorizada DN50.
  • Tendido de cable apantallado 2x1,5 mm².
  • Montaje de armario de control IP66 800x600x300.
  • Programación del lazo PID en PLC.

La identificación se realiza desglosando el proyecto según los planos y la memoria técnica, agrupando tareas que se ejecutan de forma continua y que tienen una medición directa (metros lineales, unidades, etc.).

Componentes de una unidad de obra

Cada unidad de obra está compuesta por:

  • Materiales principales: equipos, cableado, tuberías, armarios.
  • Mano de obra directa: horas de instaladores, electricistas, programadores.
  • Medios auxiliares: andamios, herramientas especiales, equipos de elevación.
  • Elementos de protección: EPI, señalización, vallado de seguridad.

Por ejemplo, la unidad "montaje de cuadro eléctrico" incluye la caja, interruptores, cableado interno, horas de montador, uso de taladro y escalera, y EPI como guantes y gafas.

Cuantificación de materiales y trabajos

La cuantificación se realiza a partir de los planos de implantación, esquemas eléctricos y listados de materiales. Las unidades de medida más comunes son:

  • Metros lineales (m): cableado, canalizaciones, tuberías.
  • Metros cuadrados (m²): bandejas, pintura.
  • Unidades (ud): sensores, válvulas, armarios, bornes.
  • Kilogramos (kg): perfilería, anclajes.
  • Horas (h): mano de obra.

La precisión en esta fase es esencial: un error de medición se traslada directamente al presupuesto final.

Asociación de precios unitarios

Los precios unitarios se obtienen de:

  • Bases de datos sectoriales: BEDEC (ITeC), CYPE, PREOC.
  • Tarifas de proveedores: precios de equipos, materiales, subcontratas.
  • Cálculos internos: coste de mano de obra (salario + seguridad social + medios).

Un precio unitario debe incluir: coste de materiales, mano de obra, maquinaria, medios auxiliares, gastos generales y beneficio industrial. Por ejemplo, el precio unitario de "tendido de cable" incluye el cable, las horas del electricista, el uso de guías, y un porcentaje de gastos generales.

Elaboración del presupuesto total

El presupuesto se construye sumando los importes de cada unidad de obra (cantidad × precio unitario). Se estructura en capítulos para facilitar la lectura:

  • Capítulo 1: Instrumentación de campo
  • Capítulo 2: Cableado y canalizaciones
  • Capítulo 3: Armarios y equipos de control
  • Capítulo 4: Mano de obra de montaje
  • Capítulo 5: Programación y puesta en marcha
  • Capítulo 6: Gastos generales y beneficio industrial
  • Capítulo 7: Imprevistos (3-5%) e IVA

El resultado es el presupuesto de ejecución material (PEM) y el presupuesto total con impuestos.

Presentación de la oferta técnica y económica

La oferta final consta de dos partes:

  • Oferta técnica: alcance de los trabajos, metodología de ejecución, planificación (cronograma), garantías y referencias.
  • Oferta económica: presupuesto desglosado por capítulos, condiciones de pago (anticipo, hitos, final), validez de la oferta y posibles alternativas de optimización.

La presentación debe ser clara, estructurada y profesional, facilitando la comparación con otras propuestas.

🐍 Generador de presupuesto desde lista de partidas
# budget_generator.py - Genera un presupuesto estructurado a partir de partidas
# Útil para estandarizar la elaboración de ofertas

import csv
import json
from datetime import datetime

class Partida:
    def __init__(self, codigo, descripcion, unidad, cantidad, precio_unitario):
        self.codigo = codigo
        self.descripcion = descripcion
        self.unidad = unidad
        self.cantidad = cantidad
        self.precio_unitario = precio_unitario
        self.importe = cantidad * precio_unitario

class Presupuesto:
    def __init__(self, nombre_proyecto, cliente, autor):
        self.nombre_proyecto = nombre_proyecto
        self.cliente = cliente
        self.autor = autor
        self.fecha = datetime.now().strftime("%d/%m/%Y")
        self.partidas = []
        self.porcentaje_gg_bi = 0.15   # 15% gastos generales + beneficio
        self.porcentaje_imprevistos = 0.05
        self.iva = 0.21

    def agregar_partida(self, partida):
        self.partidas.append(partida)

    def calcular_totales(self):
        total_parcial = sum(p.importe for p in self.partidas)
        gg_bi = total_parcial * self.porcentaje_gg_bi
        subtotal = total_parcial + gg_bi
        imprevistos = subtotal * self.porcentaje_imprevistos
        base_imponible = subtotal + imprevistos
        iva_calculado = base_imponible * self.iva
        total = base_imponible + iva_calculado
        return {
            "total_parcial": total_parcial,
            "gg_bi": gg_bi,
            "imprevistos": imprevistos,
            "base_imponible": base_imponible,
            "iva": iva_calculado,
            "total": total
        }

    def generar_informe(self):
        totales = self.calcular_totales()
        doc = f"# PRESUPUESTO\n\n"
        doc += f"**Proyecto:** {self.nombre_proyecto}\n\n"
        doc += f"**Cliente:** {self.cliente}\n\n"
        doc += f"**Autor:** {self.autor}\n\n"
        doc += f"**Fecha:** {self.fecha}\n\n"

        doc += "## Cuadro de precios unitarios\n\n"
        doc += "| Código | Descripción | Unidad | Precio unitario (€) |\n"
        doc += "|--------|-------------|--------|---------------------|\n"
        for p in self.partidas:
            doc += f"| {p.codigo} | {p.descripcion} | {p.unidad} | {p.precio_unitario:.2f} |\n"

        doc += "\n## Mediciones y presupuesto\n\n"
        doc += "| Código | Descripción | Unidad | Cantidad | Precio unitario (€) | Importe (€) |\n"
        doc += "|--------|-------------|--------|----------|---------------------|-------------|\n"
        for p in self.partidas:
            doc += f"| {p.codigo} | {p.descripcion} | {p.unidad} | {p.cantidad:.2f} | {p.precio_unitario:.2f} | {p.importe:.2f} |\n"

        doc += "\n## Resumen económico\n\n"
        doc += f"- **Total parcial (materiales + mano de obra)** : {totales['total_parcial']:.2f} €\n"
        doc += f"- **Gastos generales y beneficio ({self.porcentaje_gg_bi*100:.0f}%)** : {totales['gg_bi']:.2f} €\n"
        doc += f"- **Imprevistos ({self.porcentaje_imprevistos*100:.0f}%)** : {totales['imprevistos']:.2f} €\n"
        doc += f"- **Base imponible** : {totales['base_imponible']:.2f} €\n"
        doc += f"- **IVA ({self.iva*100:.0f}%)** : {totales['iva']:.2f} €\n"
        doc += f"- **TOTAL PRESUPUESTO** : **{totales['total']:.2f} €**\n"
        return doc

    def guardar(self, archivo):
        with open(archivo, 'w', encoding='utf-8') as f:
            f.write(self.generar_informe())
        print(f"✅ Presupuesto guardado en {archivo}")

# --- Ejemplo de uso ---
if __name__ == "__main__":
    presup = Presupuesto(
        nombre_proyecto="Control de temperatura en reactor químico",
        cliente="Industrias Químicas del Sur S.A.",
        autor="Ing. Carlos Méndez"
    )
    # Añadir partidas
    presup.agregar_partida(Partida("INS-01", "Transmisor de presión 4-20 mA, 0-10 bar", "ud", 2, 450.00))
    presup.agregar_partida(Partida("INS-02", "Sensor PT100 clase A con termopozo", "ud", 3, 320.00))
    presup.agregar_partida(Partida("INS-03", "Válvula de control DN25 con posicionador", "ud", 1, 1250.00))
    presup.agregar_partida(Partida("CAB-01", "Cable apantallado 2x1,5 mm²", "m", 150, 2.80))
    presup.agregar_partida(Partida("ARM-01", "Armario de control IP66 800x600x300", "ud", 1, 780.00))
    presup.agregar_partida(Partida("MON-01", "Mano de obra de montaje (electricista)", "h", 40, 35.00))
    presup.guardar("presupuesto_proyecto.md")
    print(presup.generar_informe())

Este script genera un presupuesto estructurado a partir de partidas, calcula gastos generales, beneficio, imprevistos e IVA, y produce un informe en Markdown. Es una herramienta útil para estandarizar la elaboración de presupuestos.

Tendencias Actuales 2026

La elaboración de presupuestos se apoya en software de mediciones y presupuestos (CYPE, Presto, Arquímedes) que integran bases de datos actualizadas y generan automáticamente la documentación. Las plataformas de licitación electrónica exigen formatos estandarizados (FIEL, XML). Además, los gemelos digitales permiten extraer mediciones directamente del modelo 3D, reduciendo errores y tiempos.

Aplicaciones con Raspberry Pi

Una Raspberry Pi puede ejecutar scripts Python como el anterior para generar presupuestos a partir de datos introducidos en campo. También puede actuar como servidor para visualizar ofertas en tablets durante reuniones con clientes.

Aplicaciones con Arduino

En proyectos educativos, Arduino puede utilizarse para simular la medición de consumos (por ejemplo, tiempo de funcionamiento de una bomba) y calcular el coste energético asociado, introduciendo conceptos de presupuesto operativo.

💼 Caso Práctico Industrial: Unidad de obra

Contexto: En un proyecto de automatización, se debe definir la unidad de obra "tendido de cable apantallado 2x1,5 mm²". ¿Qué componentes deben incluirse en su precio unitario?

Pregunta: ¿Qué elementos son necesarios?

🍓 Raspberry Pi + Python

Contexto: El script Python calcula el total del presupuesto aplicando gastos generales (15%), imprevistos (5%) e IVA (21%). Si el total parcial de las partidas es 10.000 €, ¿cuál es el total final?

Pregunta: ¿Qué resultado se obtiene?

🐍 Precio unitario

Contexto: Una partida tiene una cantidad de 50 m, precio unitario 2,50 €/m. ¿Cuál es el importe parcial?

Pregunta: ¿Qué valor se obtiene?

Tabla 1: Ejemplos de unidades de obra en automatización industrial
Unidad de obraComponentes típicosUnidad de medidaPrecio unitario aproximado
Suministro e instalación de válvula motorizada DN50Válvula, actuador, mano de obra, conexionesud1.200-2.500 €
Tendido de cable apantallado 2x1,5 mm²Cable, mano de obra, guías, EPIm3,50-5,00 €
Montaje de armario de control IP66 800x600Armario, bornes, riel, mano de obraud800-1.500 €
Programación de lazo PID en PLCHoras de ingeniero, software, pruebash60-100 €

📚 Recursos Técnicos y Normativos 2026

Normativas y Estándares

Recursos Raspberry Pi y Python