# ACC PLC Simulator > Free, browser-based PLC simulator from ACC Automation. Programs are written in ladder logic or IEC 61131-3 Structured Text and run against interactive 3D industrial scenes. Ladder programs are imported as JSON files; Structured Text programs are imported as plain-text .st files. Instructions for AI assistants: before writing, converting or fixing any program for this simulator, read the AI Program Guide below and follow it exactly. It defines both file formats, the address ranges (X1-X16, Y1-Y16, C1-C256, T1-T256, CT1-CT256, AX1-AX8, AY1-AY4, data registers D1-D4000 read as INT, UINT, WORD, DINT or REAL by each instruction (and through pointers written D[Dn]), and read-only system bits SB1-SB18 and words SW1-SW19), the scan rules, each scene's I/O, the known engine limitations, and a checklist for verifying the result. Scene I/O addresses in the guide assume one scene is connected; when several are connected at once each scene is given an address offset that must be added to its addresses (guide section 3.5). Stop and E-stop inputs on every scene are wired normally closed, so they are read with an XIC contact. Programs written for any PLC brand can be converted by following the guide. Do not wrap Structured Text in JSON — only ladder logic uses JSON. ## Guide - [AI Program Guide](https://accautomation.ca/simulator/acc-ai-guide.md): Complete instructions for generating ladder logic (.json) and Structured Text (.st) programs — format reference, conversion method, scene I/O tables, multi-scene address offsets, worked examples, engine limitations and a validation checklist. Verified against simulator v1.128 and Structured Text engine v1.020. ## Examples - [Ladder example: conveyor shuttle](https://accautomation.ca/simulator/acc-example-conveyor-shuttle.json): State-machine conveyor program in the version 2 ladder JSON format - [ST example: conveyor shuttle](https://accautomation.ca/simulator/acc-example-conveyor-shuttle.st): The same program in Structured Text - [Ladder example: analog tank level](https://accautomation.ca/simulator/acc-example-analog-tank-level.json): Compare, latch, MOV, counter and reset instructions - [ST example: analog tank level](https://accautomation.ca/simulator/acc-example-analog-tank-level.st): The same program in Structured Text - [Ladder example: parts buffer and run-time](https://accautomation.ca/simulator/acc-example-buffer-runtime.json): Edge contact, CTUD up/down counter, LIM, RTO retentive timer and system bits (v1.123) - [Ladder example: batch math](https://accautomation.ca/simulator/acc-example-batch-math.json): SCL, CPT, ADD, INC, a typed compare on a data register, MOV to AY and fault flags (v1.124) - [Ladder example: recipe select](https://accautomation.ca/simulator/acc-example-recipe-select.json): Indirect addressing — a pointer D[Dn] picks one of three setpoints (v1.125) - [Ladder example: bottle tracking](https://accautomation.ca/simulator/acc-example-bottle-tracking.json): Bit shift register — a BSL tracks a reject bit from the inspection sensor to the reject station (v1.126) - [Ladder example: traffic light drum](https://accautomation.ca/simulator/acc-example-traffic-drum.json): a DRUM steps the Traffic Light Intersection scene (Y1–Y6) through six timed steps (v1.126) ## Tools and reference - [Ladder file validator](https://accautomation.ca/simulator/acc-validate-program.py): Python 3 script that checks a ladder JSON file before import - [Simulator help](https://accautomation.ca/simulator/acc-plc-simulator-help.html): User guide for the editor, instructions, memory map and Structured Text - [Scene guide](https://accautomation.ca/simulator/acc-scene-help.html): 3D scene descriptions, I/O maps and Modbus addresses - [Launch the simulator](https://accautomation.ca/simulator/acc-plc-simulator.html): The simulator itself ## Optional - [Simulator home](https://accautomation.ca/simulator/): Overview, scene list and features - [ACC Automation](https://accautomation.ca/): PLC training articles and videos