Learn FACTORYIO-MACROS with Real Code Examples
Updated Nov 27, 2025
Explain
Factory I/O Macros provide lightweight scripting logic to drive simulation behaviors.
They enable conditions, timers, triggers, and dynamic responses without external PLCs.
Used to prototype automation logic before moving to real PLC code.
Macros can interact with sensors, actuators, conveyors, and animated objects.
Designed to bridge the gap between static scenes and fully dynamic automation.
Core Features
IF/ELSE conditional logic
Digital/analog read & write
Macros attached to scene objects
Clock/timer functions
Triggers for events and motion
Basic Concepts Overview
Tags - track sensor/actuator values
Events - condition triggers logic
Execution Loop - logic updates each frame
States - toggles, memory bits
Timers - delays, transitions, sequencing
Project Structure
Scene file (.factoryio)
Macro definitions embedded per object
Tag list defining available IO
Connections to external drivers (optional)
Physics objects and animations
Building Workflow
Add component to scene
Open its Macro Editor
Write logic for interactions
Link inputs/outputs to sensors or actuators
Run simulation and refine behavior
Difficulty Use Cases
Beginner: Turn a motor on when a sensor is triggered
Intermediate: Create conveyor sequencing with timers
Advanced: Implement a mini pick-and-place routine
Expert: Simulate multi-machine interactions with logic
Architect: Build fully automated lines without PLCs
Comparisons
Macros vs PLC: Macros are quick; PLCs are industrial-grade
Macros vs Python Scripting: Macros are simpler and built-in
Macros vs Behavior Blocks: Macros offer more control
Macros vs Control I/O: Macros simulate logic; Control I/O connects external drivers
Macros vs Automation ML: Macros drive logic, AML handles interoperability
Versioning Timeline
Early versions - basic logic triggers
2018 - Macro Editor improvements
2020 - Expanded timer and condition support
2023 - Simulation stability updates
2025 - More flexible macro control blocks
Glossary
Tag - input/output point
Macro - logic block attached to a component
Event - trigger condition
Timer - scheduled delay
Cycle - simulation update frame