Open Source Automated Concrete Plant 360°. Simulation, SCADA Integration & Deployment for Offshore, Military & Nuclear Use
Open Source Automated Concrete Plant 360°
Simulation, SCADA Integration & Deployment for Offshore, Military & Nuclear Use
1. Project Overview
This document presents a comprehensive proposal for the development of an open-source, fully automated concrete batching plant. The system integrates mechanical, electronic, and software components, with SCADA connectivity and simulation tools. It is designed to be modular, adaptable to hostile environments (military, maritime, nuclear), and compliant with international standards for safety, traceability, and automation.
2. Objectives
- Automate the entire concrete batching process at a reduced cost.
- Use accessible, open hardware and free software solutions.
- Ensure modularity and adaptability for field conditions (containerized, barge-mounted, secure zones).
- Provide full SCADA integration for monitoring, control, and traceability.
- Enable operation in explosive or high-risk areas through ATEX/IECEx compliance and intrinsic safety mechanisms.
3. Mechanical & Structural Components
The system includes steel aggregate bins (1–2 m³), sand and cement hoppers, screw conveyors for cement, and belt conveyors for aggregates. A horizontal axis mixer (with 2–3 shafts and a capacity of 1000–3000 L) handles mixing. A water tank with an electromagnetic or motorized valve is also included. The frame structure is built with UPN 60x40 profiles and is suitable for mounting inside shipping containers or on floating platforms.
4. Electronics & Sensors
Core control is handled by open-source microcontrollers such as Arduino Mega, ESP32, or OpenPLC, supported by Raspberry Pi where needed. Load cells interface with HX711 ADCs or analog signal chains via INA125 instrumentation amplifiers. Additional sensors include water flow meters (4–20 mA or digital pulse), and optional temperature and humidity sensors.
All field sensors and actuators are IP68-rated and ATEX-certified for use in explosive zones. Motors and actuators (including solenoid valves and motorized gates) are controlled via VFDs and can be selected with explosion-proof ratings where required.
5. ATEX/IECEx Compliance & Zener Barrier Integration
- All components comply with ATEX Directive 2014/34/EU and/or the IECEx scheme.
- Zone classifications supported: gas zones 0/1/2 and dust zones 20/21/22.
- Intrinsically safe analog signal transmission is ensured using Zener barriers or galvanic isolators.
- Enclosures, cable glands, and terminals are IP67/IP69K and explosion-proof (Ex d, Ex ia).
- Safety compliance is based on EN 60079-11 and EN 60079-25.
6. Automation & SCADA Integration
Automation logic is programmed in OpenPLC using Structured Text or Ladder Logic, while Node-RED provides the operator interface and real-time controls. ScadaBR or Ignition Maker can be used for advanced dashboarding.
Supported protocols include Modbus TCP/RTU and MQTT. Databases such as InfluxDB or SQLite store all production cycles, sensor data, consumption metrics, and operator logs. Interaction is done via a rugged touchscreen or tablet using HTML5 web interfaces.
7. Concrete Recipe and Dosing Logic
The standard concrete recipe per cubic meter includes:
- 1050 kg of gravel (20 mm)
- 700 kg of sand
- 350 kg of cement
- 180 liters of water
- 10 kg of additives
Python-based scripts are used in the Node-RED environment to dynamically calculate gate opening times based on flow rate and batch volume.
8. Environmental Adaptations
Military Use
- Plant is modular and deployable in 20–40 ft containers.
- Electronic components are hardened against electromagnetic pulses (EMP).
- Energy is supplied via diesel generators with optional solar backup.
- Protocols are NATO STANAG-compatible for secure communication and logistics.
- Special rapid-setting concrete formulas support emergency infrastructure repairs.
Maritime & Fluvial Use
- Construction uses 316L stainless steel for corrosion resistance.
- All sensors and cables are waterproof (IP68 or higher).
- A gyro-stabilized frame enables floating operation on barges or pontoons.
- SCADA integrates with tidal and weather APIs.
- Special additives produce concrete that resists saltwater, sulfates, and early-stage laitance.
Nuclear Use
- Design meets RCC-G, EN 206/CN, and ISO 19443 standards.
- High-precision dosing uses traceable load cells with error below ±0.1%.
- Sensor calibration is certified, and data is encrypted and logged.
- Interfaces include OPC-UA for integration with EDF and ORANO systems.
- Environment is controlled with HEPA-filtered enclosures, radiation sensors, and automated water decontamination.
9. Simulation & Training
A 2D simulator is included using Python and Pygame. It models the behavior of the plant with interactive commands:
- S key = Add sand
- G key = Add gravel
- C key = Add cement
- E key = Add water
- M key = Start mixing
In future versions, a Unity 3D simulation will provide advanced training environments, physical modeling, and telemetry monitoring for educational or strategic training purposes.
10. SCADA Features and Cybersecurity
The SCADA system includes:
- Role-based access (Operator, Supervisor, Quality)
- Real-time monitoring of ingredients, motor state, humidity, and flow
- Alarm system for overdosing, underdosing, motor failure, and unauthorized access
- Secure data logs that are encrypted, timestamped, and hash-verified
- Data export formats include CSV, JSON, PDF, and BIM-compatible structures (IFC, COBie)
- Additional options include RFID badge login, geofencing, and face recognition
11. Budget Estimate (Base System)
The approximate cost breakdown for a basic plant is as follows:
- Electronics (PLC, sensors, relays): around €300
- Steel and welding materials: around €600
- Mechanical components and motors: about €450
- Operator interface (screen, buttons, HMI): around €250
- ATEX and IECEx upgrades (depending on zone): between €500 and €1500
This brings the total estimated cost to between €1600 and €3100, depending on features and environment.
12. Certification Package (Optional)
A fictional but technically realistic certification dossier can be provided upon request, including:
- Cover page and table of contents with project references
- Functional and electrical diagrams
- List of applicable regulations (CNEPE, ANDRA, ATEX, RCC-G)
- Flowcharts of data, recipes, and alarms
- SCADA configuration XML with Modbus tags and operator log examples
- Screenshots of interfaces and Unity dashboard mockups
- Sample batch recipes for civil, marine, and nuclear-grade concrete
SCADA Interface – Advanced Mix Designer Panel
1. Interface Sections
A. Recipe Selection Panel
This section includes:
- A dropdown menu to select a predefined recipe template such as “Standard”, “Marine”, “Nuclear”, “Lightweight”, or “Custom”.
- An input field where the operator enters the batch volume in cubic meters.
- A “Load Recipe” button that loads the selected parameters into the interface.
B. Base Material Inputs
The core ingredients of the concrete are controlled via:
- Sliders or numerical inputs for cement (in kg), water (in liters), sand (in kg), gravel (in kg), and admixtures (in kg or liters).
- Real-time updates that reflect total mix weight and water-to-cement ratio.
C. Advanced Additives Matrix (Dynamic Panel)
This section allows the operator to enable and configure optional advanced ingredients. Each additive includes:
- A checkbox to activate or deactivate its inclusion in the recipe.
- A dosage input field with correct units (e.g. kg, %, g, ml).
- A dynamic tooltip or icon that describes the expected performance enhancement.
- A color-coded effect preview bar, helping visualize changes in density, strength, flexibility, or sustainability.
The additives available include:
-
Iron Powder: When enabled and added in kg per m³, this increases density and provides enhanced radiation shielding. Ideal for nuclear or defense-grade concrete.
-
Calcium Compounds: These accelerate setting, improve early strength, and reduce shrinkage. Input dosage in kg.
-
Polymer Binders (e.g. EVA, PVA): Added as a percentage, they improve adhesion, flexibility, and chemical resistance. Used for marine applications and industrial flooring.
-
Shredded Plastics: Measured in kg, this eco-friendly filler reduces density and enhances thermal insulation. Recommended for lightweight, sustainable concretes.
-
Reinforcing Fibers (polypropylene, glass, carbon): Measured in grams, these increase ductility, crack resistance, and post-failure performance.
-
Superplasticizers & Stabilizers: Dosed in milliliters, they improve flowability without adding water. Essential for self-compacting or underwater concrete.
D. Live Property Estimation Display
This real-time section calculates and displays the key physical and performance properties of the mix based on all selected ingredients:
- Estimated total weight per cubic meter.
- Slump value in mm, indicating flowability.
- Estimated setting time in minutes.
- Predicted compressive strength in MPa.
- Automatically calculated water/cement ratio.
- An environmental impact score, estimating CO₂ emissions or sustainability index.
E. Controls and Preview Actions
Below the main configuration panels, the operator has access to:
- A “Simulate in 2D/3D” button that visualizes the mix in real-time using the Pygame or Unity simulation.
- A “Save Recipe to Database” option for traceability and future reuse.
- A “Send to Batch Control” button that triggers the automation sequence.
- A “Generate PDF/BIM Export” button to archive the recipe for documentation or digital twin integration.
2. Additional Features
- Automatic Warnings: If incompatible ingredients are selected or dosage exceeds safety margins, the system will show warnings.
- Log Viewer: A scrolling display of operator actions, ingredient logs, and alarms for full auditability.
- Security Integration: User login is supported via RFID badges, passwords, or optional face recognition.
- Embedded Video Feed: A small camera window can show the live state of the mixer or hoppers, especially useful for remote operation or training.
Detailed list of the features and properties of the advanced additives and ingredients.These can be used in the SCADA interface, training manuals, or design documentation:
Advanced Concrete Additives – Features & Properties
1. Iron Powder / Magnetite
- Primary Use: Radiation shielding, dense structural elements.
- Properties:
- Significantly increases density (up to 3500 kg/m³).
- Enhances gamma and neutron shielding (used in nuclear, medical, military).
- Improves mechanical impact resistance.
- Slightly reduces workability unless plasticizers are used.
- Recommended Applications: Nuclear facilities, x-ray vaults, defense bunkers, heavy counterweights.
2. Calcium Compounds
(including calcium carbonate, calcium chloride, or calcium sulfoaluminate)
- Primary Use: Accelerator and structural enhancer.
- Properties:
- Reduces setting time, especially in cold environments.
- Increases early compressive strength.
- Enhances dimensional stability, reducing shrinkage and cracking.
- Can improve sulfate resistance (when using CSA cement).
- Recommended Applications: Cold-weather concreting, precast units, rapid repair, shrinkage-sensitive structures.
3. Polymer Binders
(PVA, EVA, acrylics, styrene-butadiene)
- Primary Use: Flexibility, adhesion, chemical resistance.
- Properties:
- Increases tensile and flexural strength.
- Improves bonding to old surfaces (ideal for overlays).
- Enhances impermeability and chemical durability.
- Adds some elasticity, making the concrete more ductile.
- Recommended Applications: Industrial floors, marine coatings, repair mortars, swimming pools, infrastructure exposed to salts or acids.
4. Recycled Plastics (PET, HDPE, PP)
- Primary Use: Sustainability, thermal insulation, lightweight mix.
- Properties:
- Decreases overall density (can reach <1800 kg/m³).
- Improves thermal insulation and acoustic damping.
- Reduces carbon footprint by incorporating waste plastics.
- May slightly lower compressive strength if used excessively.
- Recommended Applications: Green buildings, prefabricated panels, insulating slabs, non-structural blocks.
5. Fibers (Polypropylene, Glass, Carbon)
- Primary Use: Crack resistance, ductility, impact absorption.
- Properties:
- Minimizes plastic and drying shrinkage cracking.
- Increases post-crack load-bearing capacity.
- Improves blast and earthquake resilience.
- Enhances impact and abrasion resistance.
- Recommended Applications: Tunnels, slabs, seismic zones, military bunkers, pavements.
6. Superplasticizers & Stabilizers
(Polycarboxylates, lignosulfonates, melamine)
- Primary Use: Workability enhancer without water increase.
- Properties:
- Significantly increases flowability and slump (SCC compatibility).
- Maintains strength by lowering water/cement ratio.
- Stabilizers prevent segregation and bleeding.
- May allow pumpable and underwater concreting.
- Recommended Applications: High-rise pumping, underwater pours, precast segments, self-compacting concrete.
Brief description of the features and functions of the scripts provided below, for the AUTOMATED CONCRETE PLANT 360°:
Description of the two scripts (OpenPLC + Python):
1. OpenPLC Script – ConcreteBatch
This Structured Text (ST) program controls the physical batching process of concrete using a PLC. It includes:
- Start & Reset Inputs: Trigger a new batch or reset errors.
- Safety Controls: Stop the process if emergency stop, sensor failure, or motor overload occurs.
- Timed Mixing Cycle: Opens valves and runs the mixer motor for a set time (60 seconds).
- Process Status Flags: Shows whether the cycle is active, completed, or has an error.
Purpose: Ensures safe, timed automation of mixing based on operator commands and real-world conditions.
2. Python Script – automation_core.py
This script manages data processing, visualization, and SCADA integration:
- Sensor Simulation: Fakes gravel, sand, cement, water, temperature, and humidity readings.
- Recipe Loader: Loads a standard concrete mix.
- Valve Control Logic: Decides whether valves need adjustment based on sensor deviations.
- SQLite Logging: Saves recipe and sensor data for traceability.
- PDF Report Generation: Creates a detailed batch report after each cycle.
- MQTT Integration: Publishes batch data to SCADA/Node-RED via MQTT every 10 seconds.
Purpose: Handles the digital twin, data logging, report generation, and SCADA interface for the batching process.
Complete code for both the OpenPLC Structured Text script and the Python automation script, ready for implementation or documentation.
1. OpenPLC Structured Text Script (ConcreteBatch.st
)
PROGRAM ConcreteBatch
VAR
// Operator inputs
start_cycle : BOOL; // Trigger to start a new batch
reset_error : BOOL; // Manual reset if an error occurs
// Process flags
cycle_active : BOOL := FALSE;
done : BOOL := FALSE;
error_flag : BOOL := FALSE;
// Safety and sensor checks (external inputs)
sensor_ok : BOOL; // TRUE if all sensors are reporting correctly
emergency_stop : BOOL; // TRUE if E-STOP is triggered
overload : BOOL; // TRUE if mixer motor is overloaded
// Timer
timer_cycle : TON; // Mixing duration timer
mix_duration : TIME := T#60s; // Duration configurable
// Actuators (digital outputs)
gravel_valve : BOOL := FALSE;
sand_valve : BOOL := FALSE;
cement_valve : BOOL := FALSE;
water_valve : BOOL := FALSE;
mix_motor : BOOL := FALSE;
END_VAR
// --- Safety & Sensor Check ---
IF emergency_stop OR overload OR NOT sensor_ok THEN
error_flag := TRUE;
gravel_valve := FALSE;
sand_valve := FALSE;
cement_valve := FALSE;
water_valve := FALSE;
mix_motor := FALSE;
cycle_active := FALSE;
timer_cycle(IN := FALSE);
END_IF
// --- Reset error flag manually ---
IF reset_error THEN
error_flag := FALSE;
END_IF
// --- Start Sequence ---
IF start_cycle AND NOT cycle_active AND NOT error_flag THEN
cycle_active := TRUE;
done := FALSE;
// Activate valves and motor
gravel_valve := TRUE;
sand_valve := TRUE;
cement_valve := TRUE;
water_valve := TRUE;
mix_motor := TRUE;
// Start timer
timer_cycle(IN := TRUE, PT := mix_duration);
END_IF
// --- End of Mixing Cycle ---
IF timer_cycle.Q THEN
// Stop all outputs
gravel_valve := FALSE;
sand_valve := FALSE;
cement_valve := FALSE;
water_valve := FALSE;
mix_motor := FALSE;
// Mark batch as complete
done := TRUE;
cycle_active := FALSE;
// Reset timer
timer_cycle(IN := FALSE);
END_IF
PROGRAM ConcreteBatch
VAR
// Operator inputs
start_cycle : BOOL; // Trigger to start a new batch
reset_error : BOOL; // Manual reset if an error occurs
// Process flags
cycle_active : BOOL := FALSE;
done : BOOL := FALSE;
error_flag : BOOL := FALSE;
// Safety and sensor checks (external inputs)
sensor_ok : BOOL; // TRUE if all sensors are reporting correctly
emergency_stop : BOOL; // TRUE if E-STOP is triggered
overload : BOOL; // TRUE if mixer motor is overloaded
// Timer
timer_cycle : TON; // Mixing duration timer
mix_duration : TIME := T#60s; // Duration configurable
// Actuators (digital outputs)
gravel_valve : BOOL := FALSE;
sand_valve : BOOL := FALSE;
cement_valve : BOOL := FALSE;
water_valve : BOOL := FALSE;
mix_motor : BOOL := FALSE;
END_VAR
// --- Safety & Sensor Check ---
IF emergency_stop OR overload OR NOT sensor_ok THEN
error_flag := TRUE;
gravel_valve := FALSE;
sand_valve := FALSE;
cement_valve := FALSE;
water_valve := FALSE;
mix_motor := FALSE;
cycle_active := FALSE;
timer_cycle(IN := FALSE);
END_IF
// --- Reset error flag manually ---
IF reset_error THEN
error_flag := FALSE;
END_IF
// --- Start Sequence ---
IF start_cycle AND NOT cycle_active AND NOT error_flag THEN
cycle_active := TRUE;
done := FALSE;
// Activate valves and motor
gravel_valve := TRUE;
sand_valve := TRUE;
cement_valve := TRUE;
water_valve := TRUE;
mix_motor := TRUE;
// Start timer
timer_cycle(IN := TRUE, PT := mix_duration);
END_IF
// --- End of Mixing Cycle ---
IF timer_cycle.Q THEN
// Stop all outputs
gravel_valve := FALSE;
sand_valve := FALSE;
cement_valve := FALSE;
water_valve := FALSE;
mix_motor := FALSE;
// Mark batch as complete
done := TRUE;
cycle_active := FALSE;
// Reset timer
timer_cycle(IN := FALSE);
END_IF
2. Python Automation Script (automation_core.py
)
import time
import json
import random
import sqlite3
from datetime import datetime
import os
try:
import paho.mqtt.client as mqtt
from fpdf import FPDF
except ImportError:
print("[ERROR] Required modules not found. Run 'pip install paho-mqtt fpdf' to fix.")
exit()
# --- Configuration ---
MQTT_BROKER = 'localhost'
MQTT_PORT = 1883
MQTT_TOPIC = 'plant360/data'
MQTT_USER = 'admin'
MQTT_PASS = 'password123'
DB_PATH = 'plant360_logs.db'
PDF_REPORT_FOLDER = 'batch_reports'
# --- Initialize Database ---
def init_db():
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS batches (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT,
recipe TEXT,
data TEXT,
actions TEXT
)
''')
conn.commit()
conn.close()
# --- Sensor Simulation ---
def read_sensors():
return {
"weight_gravel": random.uniform(950, 1100),
"weight_sand": random.uniform(650, 750),
"weight_cement": random.uniform(340, 360),
"water_flow": random.uniform(175, 185),
"temperature": random.uniform(15, 35),
"humidity": random.uniform(20, 60)
}
# --- Recipe Loader ---
def load_recipe():
return {
"gravel_kg": 1050,
"sand_kg": 700,
"cement_kg": 350,
"water_l": 180,
"additives_g": 10
}
# --- Valve Control Logic ---
def control_valves(sensors, recipe):
actions = {}
for key, target in recipe.items():
sensor_key = "weight_" + key.split('_')[0]
if sensor_key in sensors:
current = sensors[sensor_key]
deviation = current - target
actions[key] = "adjust" if abs(deviation) > 5 else "ok"
return actions
# --- Logging to Database ---
def log_batch(recipe, sensors, actions):
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("INSERT INTO batches (timestamp, recipe, data, actions) VALUES (?, ?, ?, ?)",
(datetime.now().isoformat(), json.dumps(recipe), json.dumps(sensors), json.dumps(actions)))
conn.commit()
conn.close()
# --- PDF Report Generator ---
def generate_pdf_report(recipe, sensors, actions):
if not os.path.exists(PDF_REPORT_FOLDER):
os.makedirs(PDF_REPORT_FOLDER)
filename = f"batch_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"
path = os.path.join(PDF_REPORT_FOLDER, filename)
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Concrete Batch Report", ln=True, align='C')
pdf.cell(200, 10, txt=datetime.now().isoformat(), ln=True, align='C')
pdf.ln(10)
pdf.set_font("Arial", size=10)
pdf.cell(200, 10, "Recipe:", ln=True)
for k, v in recipe.items():
pdf.cell(200, 10, f" - {k}: {v}", ln=True)
pdf.ln(5)
pdf.cell(200, 10, "Sensor Readings:", ln=True)
for k, v in sensors.items():
pdf.cell(200, 10, f" - {k}: {v:.2f}", ln=True)
pdf.ln(5)
pdf.cell(200, 10, "Valve Actions:", ln=True)
for k, v in actions.items():
pdf.cell(200, 10, f" - {k}: {v}", ln=True)
pdf.output(path)
print(f"[INFO] PDF report saved to {path}")
# --- MQTT Setup ---
def setup_mqtt():
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.connect(MQTT_BROKER, MQTT_PORT)
client.loop_start()
return client
# --- Automation Cycle ---
def run_cycle(client):
init_db()
recipe = load_recipe()
sensors = read_sensors()
actions = control_valves(sensors, recipe)
payload = {
"timestamp": datetime.now().isoformat(),
"recipe": recipe,
"sensors": sensors,
"actions": actions
}
print("[INFO] Cycle Data:", json.dumps(payload, indent=2))
log_batch(recipe, sensors, actions)
generate_pdf_report(recipe, sensors, actions)
client.publish(MQTT_TOPIC, json.dumps(payload))
# --- Entry Point ---
if __name__ == "__main__":
mqtt_client = setup_mqtt()
while True:
run_cycle(mqtt_client)
time.sleep(10)
import time
import json
import random
import sqlite3
from datetime import datetime
import os
try:
import paho.mqtt.client as mqtt
from fpdf import FPDF
except ImportError:
print("[ERROR] Required modules not found. Run 'pip install paho-mqtt fpdf' to fix.")
exit()
# --- Configuration ---
MQTT_BROKER = 'localhost'
MQTT_PORT = 1883
MQTT_TOPIC = 'plant360/data'
MQTT_USER = 'admin'
MQTT_PASS = 'password123'
DB_PATH = 'plant360_logs.db'
PDF_REPORT_FOLDER = 'batch_reports'
# --- Initialize Database ---
def init_db():
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS batches (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT,
recipe TEXT,
data TEXT,
actions TEXT
)
''')
conn.commit()
conn.close()
# --- Sensor Simulation ---
def read_sensors():
return {
"weight_gravel": random.uniform(950, 1100),
"weight_sand": random.uniform(650, 750),
"weight_cement": random.uniform(340, 360),
"water_flow": random.uniform(175, 185),
"temperature": random.uniform(15, 35),
"humidity": random.uniform(20, 60)
}
# --- Recipe Loader ---
def load_recipe():
return {
"gravel_kg": 1050,
"sand_kg": 700,
"cement_kg": 350,
"water_l": 180,
"additives_g": 10
}
# --- Valve Control Logic ---
def control_valves(sensors, recipe):
actions = {}
for key, target in recipe.items():
sensor_key = "weight_" + key.split('_')[0]
if sensor_key in sensors:
current = sensors[sensor_key]
deviation = current - target
actions[key] = "adjust" if abs(deviation) > 5 else "ok"
return actions
# --- Logging to Database ---
def log_batch(recipe, sensors, actions):
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("INSERT INTO batches (timestamp, recipe, data, actions) VALUES (?, ?, ?, ?)",
(datetime.now().isoformat(), json.dumps(recipe), json.dumps(sensors), json.dumps(actions)))
conn.commit()
conn.close()
# --- PDF Report Generator ---
def generate_pdf_report(recipe, sensors, actions):
if not os.path.exists(PDF_REPORT_FOLDER):
os.makedirs(PDF_REPORT_FOLDER)
filename = f"batch_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"
path = os.path.join(PDF_REPORT_FOLDER, filename)
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Concrete Batch Report", ln=True, align='C')
pdf.cell(200, 10, txt=datetime.now().isoformat(), ln=True, align='C')
pdf.ln(10)
pdf.set_font("Arial", size=10)
pdf.cell(200, 10, "Recipe:", ln=True)
for k, v in recipe.items():
pdf.cell(200, 10, f" - {k}: {v}", ln=True)
pdf.ln(5)
pdf.cell(200, 10, "Sensor Readings:", ln=True)
for k, v in sensors.items():
pdf.cell(200, 10, f" - {k}: {v:.2f}", ln=True)
pdf.ln(5)
pdf.cell(200, 10, "Valve Actions:", ln=True)
for k, v in actions.items():
pdf.cell(200, 10, f" - {k}: {v}", ln=True)
pdf.output(path)
print(f"[INFO] PDF report saved to {path}")
# --- MQTT Setup ---
def setup_mqtt():
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.connect(MQTT_BROKER, MQTT_PORT)
client.loop_start()
return client
# --- Automation Cycle ---
def run_cycle(client):
init_db()
recipe = load_recipe()
sensors = read_sensors()
actions = control_valves(sensors, recipe)
payload = {
"timestamp": datetime.now().isoformat(),
"recipe": recipe,
"sensors": sensors,
"actions": actions
}
print("[INFO] Cycle Data:", json.dumps(payload, indent=2))
log_batch(recipe, sensors, actions)
generate_pdf_report(recipe, sensors, actions)
client.publish(MQTT_TOPIC, json.dumps(payload))
# --- Entry Point ---
if __name__ == "__main__":
mqtt_client = setup_mqtt()
while True:
run_cycle(mqtt_client)
time.sleep(10)
Integrated Metrology Framework for Concrete Plant 360°
1. System Philosophy: Metrology as Core Infrastructure
Rather than treating metrology as a peripheral or afterthought, this system embeds it as a foundational pillar. Each sensor is a metrological actor, each measurement is an auditable event, and each process is certifiable under international standards.
Conceptual flow:
Materials are measured by certified sensors.
Data feeds a metrology-aware digital twin.
The system validates quality, generates legal-grade reports, and enables full auditability.
2. Digital Metrology Twin (DMT)
A software layer mirrors the physical system’s metrological state in real time. This "Digital Metrology Twin" monitors:
Sensor health (drift detection, lifespan prediction, alerting).
Calibration history (dates, methods, certificates, tolerances).
Environmental conditions and correction factors applied.
Critical events that trigger process locks or alerts.
This component enables predictive control and smart planning for maintenance and certificate renewals.
3. Smart Metrology Blocks (SMB)
Each component of the plant (aggregate weighing, water dosing, cement feed) is encapsulated in a logic block with its own built-in metrology intelligence.
Each block:
Verifies legal error margins are respected.
Detects real-time deviations and compares them against certified reference values.
Can autonomously stop the process if legal metrological conditions are not met (e.g., temperature drift, overload, miscalibration).
4. Batch Fingerprinting with Crypto-Metrology
Every produced batch is digitally “fingerprinted” with a unique cryptographic hash derived from:
Timestamp of production.
Recipe and tolerances used.
Sensor readings and error margins.
Active calibration certificates or IDs.
This hash is stored in the database, printed on reports as a QR code, and can be optionally signed with a private key to guarantee legal data integrity.
5. Calibration as a Lifecycle Workflow
Calibration becomes a structured and integrated workflow, not a one-time event:
At procurement: Sensor ID and certificates are registered.
At installation: A guided SCADA calibration wizard is triggered.
During operation: Drift is monitored and compared against pre-set limits.
During maintenance: Recertification schedules are followed and documented.
Each calibration event is logged with metadata such as:
Timestamp (e.g., 2025-04-15 08:22)
Sensor ID (e.g., WT-001)
Technician responsible
Calibration method (e.g., certified 100 kg mass)
Deviation recorded (e.g., 0.04%)
All entries are stored in a secure calibration log database.
6. Legal Reports and Document Chain
Every legally-relevant report (batch PDF, production logs, compliance forms) must include:
Certified readings and tolerances.
Batch data hash.
Sensor identifiers and calibration status.
“Non-editable” disclaimer or digital signature.
QR code linking to the original calibration certificate or verification server.
Optionally, reports can be signed using X.509 or OpenPGP keys to provide full document integrity.
7. Reference Standards and Modular Certification Path
The system can be designed to comply progressively with international metrology and quality standards. Some relevant references include:
Load cells: OIML R60, EN 45501 (legal metrology for weighing).
SCADA + logging system: ISO 10012 and ISO/IEC 17025 (measurement management and calibration labs).
Flow meters: MID 2014/32/EU and OIML R117 (liquid flow measurement).
QA data systems: ISO 206:2013 and ISO 22007-1 (for traceability in concrete quality).
Export to nuclear/military sectors: ISO 19443 (nuclear-qualified suppliers).
8. SCADA Interface – "Metrology" Panel
It is recommended to add a dedicated “Metrology” tab to the SCADA dashboard, including:
Calibration calendar showing due and expired events.
Sensor status panel using visual indicators (OK, expired, error).
Recalibration button protected by password or RFID access.
Certificate history viewer allowing audit per batch or sensor.
Conclusion: From Compliance to Digital Trust Architecture
This approach transforms metrology into a fully integrated trust layer, going beyond compliance to deliver:
Auditable traceability,
Predictable quality,
And global market readiness (public works, nuclear, military, and infrastructure).
Every gram of concrete produced is traceable, certifiable, and digitally secured — creating a new standard for open-source industrial automation.
Open Source Automated Concrete Plant – Comprehensive Proposal
I. Overview
This project proposes the development of a modular, open source, automated concrete batching plant, equipped with IIoT integration for smart monitoring, remote control, predictive maintenance, and real-time analytics. Built using accessible hardware and open-source software, it is ideal for industrial, offshore, or remote applications.
II. System Architecture and Components
A. Structural & Mechanical Components
Aggregate bins (x3): Steel, 1–2 m³ capacity each, with ultrasound level sensors and load cells.
Sand & cement hoppers (x2): Equipped with clog detection sensors and motorized gate valves.
Screw conveyor for cement: Includes torque sensors and VFD control.
Belt conveyor for aggregates: Includes speed sensors, motor monitoring, and VFDs.
Horizontal-axis mixer (2000 L): Monitored with vibration sensors and predictive load tracking.
Structural frame: Modular UPN 60x40 profiles with tilt and vibration sensors for stability.
Aggregate bins (x3): Steel, 1–2 m³ capacity each, with ultrasound level sensors and load cells.
Sand & cement hoppers (x2): Equipped with clog detection sensors and motorized gate valves.
Screw conveyor for cement: Includes torque sensors and VFD control.
Belt conveyor for aggregates: Includes speed sensors, motor monitoring, and VFDs.
Horizontal-axis mixer (2000 L): Monitored with vibration sensors and predictive load tracking.
Structural frame: Modular UPN 60x40 profiles with tilt and vibration sensors for stability.
B. Instrumentation & Sensor Network
Load cells (x8): Connected via HX711/INA125 to microcontrollers.
Flow meters (x2): 4–20 mA or digital pulse output.
Temperature & humidity sensors: Adaptive dosing feedback.
Proximity & level sensors (x4): Aggregate bin level and feed monitoring.
Vibration & torque sensors (x4): Installed on critical rotating machinery.
Zener barriers / galvanic isolators (x6): For intrinsic safety compliance.
Cable glands & wiring: Industrial grade IP67/IP69K.
Load cells (x8): Connected via HX711/INA125 to microcontrollers.
Flow meters (x2): 4–20 mA or digital pulse output.
Temperature & humidity sensors: Adaptive dosing feedback.
Proximity & level sensors (x4): Aggregate bin level and feed monitoring.
Vibration & torque sensors (x4): Installed on critical rotating machinery.
Zener barriers / galvanic isolators (x6): For intrinsic safety compliance.
Cable glands & wiring: Industrial grade IP67/IP69K.
C. Automation & IIoT Infrastructure
ESP32 microcontrollers (x4): Edge control for sensors and actuators.
Arduino Mega (x2): Analog input backup.
Raspberry Pi (x2): SCADA gateway and data processing.
Industrial touchscreen HMI: HTML5 interface, Node-RED-based control.
Variable Frequency Drives (x3): Monitor load and optimize motor speed.
SCADA Software: ScadaBR or Ignition Maker Edition.
Automation Logic: Node-RED and Python-based scripting.
Database & Dashboards: InfluxDB and Grafana for analytics.
ESP32 microcontrollers (x4): Edge control for sensors and actuators.
Arduino Mega (x2): Analog input backup.
Raspberry Pi (x2): SCADA gateway and data processing.
Industrial touchscreen HMI: HTML5 interface, Node-RED-based control.
Variable Frequency Drives (x3): Monitor load and optimize motor speed.
SCADA Software: ScadaBR or Ignition Maker Edition.
Automation Logic: Node-RED and Python-based scripting.
Database & Dashboards: InfluxDB and Grafana for analytics.
D. Integration & Setup
Control cabinet (ATEX compliant), enclosures, DIN rails, and wiring.
Field sensor calibration and setup.
Software tuning and system validation.
Logistics and transport to site.
Commissioning and testing.
Control cabinet (ATEX compliant), enclosures, DIN rails, and wiring.
Field sensor calibration and setup.
Software tuning and system validation.
Logistics and transport to site.
Commissioning and testing.
III. Cost Estimation (Turnkey)
Mechanical Assembly
Aggregate bins: €6,000
Hoppers: €3,000
Conveyors & mixer: €21,000
Structural frame: €3,000
Valves/gates: €2,400
Subtotal: €35,400
Aggregate bins: €6,000
Hoppers: €3,000
Conveyors & mixer: €21,000
Structural frame: €3,000
Valves/gates: €2,400
Subtotal: €35,400
Sensors & Instrumentation
Sensors (load, level, flow, temp, vibration): €5,800
Isolation/barriers: €3,000
Subtotal: €8,800
Sensors (load, level, flow, temp, vibration): €5,800
Isolation/barriers: €3,000
Subtotal: €8,800
Automation & Control
Controllers, HMI, SCADA, VFDs: €5,080
Subtotal: €5,080
Controllers, HMI, SCADA, VFDs: €5,080
Subtotal: €5,080
Integration & Assembly
Enclosures, cabling, setup, transport, PM: €12,000
Subtotal: €12,000
Enclosures, cabling, setup, transport, PM: €12,000
Subtotal: €12,000
Total Estimated Turnkey Cost: €61,280
IV. Total Cost of Ownership (TCO)
The Total Cost of Ownership (TCO) over a five-year lifecycle includes operational costs such as maintenance, updates, power, and spare parts.
Annual preventive maintenance: €2,500
Corrective repairs (avg/year): €1,500
Spare parts & consumables/year: €1,200
Software updates/custom scripts: €500/year
Electricity usage (est. 10kWh/day @ €0.25/kWh): €900/year
TCO over 5 years = €61,280 (CAPEX) + €33,000 (OPEX) = €94,280
V. Skills and Competencies Required
Technical Skills
Automation Engineering: OpenPLC, Node-RED, Modbus, MQTT, Python scripting.
Mechanical Engineering: Fabrication, installation, and maintenance of mixers and conveyors.
Electrical & Instrumentation: ATEX compliance, VFD wiring, sensor calibration.
Software Development: Python for control logic and dashboards.
Data Management: InfluxDB, Grafana, analytics dashboard design.
Cybersecurity: Secure networking, device hardening, backup strategies.
Automation Engineering: OpenPLC, Node-RED, Modbus, MQTT, Python scripting.
Mechanical Engineering: Fabrication, installation, and maintenance of mixers and conveyors.
Electrical & Instrumentation: ATEX compliance, VFD wiring, sensor calibration.
Software Development: Python for control logic and dashboards.
Data Management: InfluxDB, Grafana, analytics dashboard design.
Cybersecurity: Secure networking, device hardening, backup strategies.
Soft Skills
Problem-Solving: Diagnosing issues across multiple systems.
Communication: Reporting and collaboration between disciplines.
Adaptability: Adjusting to on-site demands or new hardware.
Attention to Detail: Ensuring calibration, compliance, and safety.
Problem-Solving: Diagnosing issues across multiple systems.
Communication: Reporting and collaboration between disciplines.
Adaptability: Adjusting to on-site demands or new hardware.
Attention to Detail: Ensuring calibration, compliance, and safety.
Key Stakeholders (DACH, Benelux, Spain, Portugal, France & Italy)
- Holcim (Germany/Switzerland)
- Heidelberg Materials (Germany)
- Lafarge (Switzerland)
- Strabag (Austria/Germany)
- BASF Construction Solutions (Germany)
- CEMEX España (Spain)
- Cimpor (Portugal)
- Sika AG (Switzerland)
- Royal BAM Group (Netherlands/Benelux)
- Boskalis (Netherlands/Benelux)
- Colas Belgium (Benelux)
- Wienerberger (Austria/Germany/Benelux)
- ACAE (Asociación de Consultores de Arquitectura e Ingeniería de España)
- APFAC (Associação Portuguesa dos Fabricantes de Argamassas e ETICS)
- FEBE (Belgian Precast Concrete Federation)
- CMA (Concrete Manufacturers Association Austria)
- Vicat Group (France)
- Eiffage (France)
- Bouygues Construction (France)
- Saint-Gobain (France)
- SOCOTEC (Construction Quality Control - France)
- CSTB (Scientific and Technical Center for Building, France)
- LNE - Laboratoire National de Métrologie et d’Essais (France)
- Italcementi (Italy)
- Mapei (Italy)
- Buzzi Unicem (Italy)
- RINA (Quality & Certification - Italy)
- CSI S.p.A. (Construction Materials Testing - Italy)
- INRIM - Istituto Nazionale di Ricerca Metrologica (Italy)
- OIML (International Organization of Legal Metrology)
- CEM - European Metrology Institute
- COFRAC (French Accreditation Committee - France)
- ENAC (Entidad Nacional de Acreditación - Spain)
- IPAC (Portuguese Accreditation Institute)
- DAkkS (German Accreditation Body)
- SCL - Swiss Calibration Laboratory
- ZwickRoell (Materials Testing Machines)
- Sartorius (Industrial Weighing Solutions)
- Mettler Toledo (Industrial Weighing and Quality Control)
- AENOR (Spanish Association for Standardization and Certification)
- Applus+ Laboratories (Spain - Quality, Testing, Certification)
- TÜV SÜD (Germany - Testing, Certification, Inspection)
- DEKRA (Germany - Testing and Certification)
- Bureau Veritas (France - Quality Control and Certification)
- CEM (Centro Español de Metrología - Spain)
- INRIM (Istituto Nazionale di Ricerca Metrologica - Italy)
Key Stakeholders in EU Weighing and Metrology
This compilation highlights prominent organizations and companies active in the field of weighing and metrology within the European Union, particularly those specializing in strain gauges, load cells, weigh platforms, truck and rail scales, and automation systems.
1. Metrology and Standards Organizations
- EURAMET – European Association of National Metrology Institutes, coordinating metrology research and standards across Europe.
- European Partnership on Metrology – A collaborative initiative under Horizon Europe, focusing on advancing measurement science to address global challenges.
- EURAMET Calibration Guidelines – A repository of calibration guidelines aimed at harmonizing measurement practices across member states.
2. Manufacturers of Load Cells and Weighing Instruments
- HBK (formerly HBM) – Offers a range of load cells, strain gauges, and weighing electronics suitable for truck scales and industrial automation.
- Mettler Toledo – Provides POWERCELL® load cells known for durability in truck and rail scale applications.
- Bosche – Specializes in truck scale load cells like the D30S, designed for high-capacity weighing.
- G.M. International – Produces the D1063S DIN Rail Load Cell/Strain Gauge Bridge Isolating Repeater for safe area to hazardous area signal transmission.
- Mantracourt Electronics – Develops strain gauge amplifiers, digital indicators, and wireless telemetry systems for various industrial applications.
3. Weighing Automation and Integration Solutions
- HBK Automation Solutions – Provides integrated weighing systems with digital load cells and terminals for automated processes.
- Mantracourt Wireless Telemetry – Offers wireless solutions for remote monitoring and control of weighing systems.
4. Industry Associations and Research Networks
- International Society for Weigh-In-Motion (ISWIM) – Focuses on the development and application of weigh-in-motion technologies globally.
For further information or to suggest additional stakeholders, please contact us.
Comments
Post a Comment