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