A small Node.js program that runs on your PC and connects this browser scene to a real Modbus TCP or Modbus RTU master such as a PLC, SCADA system, or Modbus Poll software.
Download the zip file and extract it to a folder on your PC.
Download acc-modbus-bridge.zipThe bridge requires Node.js. Download the LTS version from nodejs.org and run the installer.
install.batinstall.commandstart-modbus-bridge shortcut for youstart-modbus-bridge.bat (Windows) or
start-modbus-bridge.command (macOS)ws://127.0.0.1:8502CONNECT — the badge turns amber when linkedCoil 00001 → Y1 Motor contactor (master writes)Coil 00002 → Y2 Run light, green (master writes)Coil 00003 → Y3 Warning buzzer (master writes)DI 10001 → X1 Start PB N.O. (master reads)DI 10002 → X2 Stop PB N.C. — 1=closed, 0=pressed (master reads)DI 10003 → X3 Overload N.C. — 1=healthy, 0=tripped (master reads)More tutorials at accautomation.ca · YouTube @ACCautomation
Start / Stop with Overload and 2-Second Pre-Start Warning
A floor-mounted NEMA 4 control station driving an across-the-line motor starter. Two 30 mm operator pushbuttons, a maintained overload selector, a green run light and a roof-mounted warning horn. Both field contacts on this machine are wired normally closed, and the motor does not start the instant you press Start — a horn sounds first to clear the area. That warning period is where most real machines differ from a textbook seal-in circuit.
Standalone mode already behaves correctly. Run it first, watch the sequence, then reproduce it yourself in the ACC PLC Simulator.
| Address | Modbus | Dir | Description |
|---|---|---|---|
| X1 | DI 10001 | IN | Start pushbutton — N.O. momentary. OFF at rest, ON while held. |
| X2 | DI 10002 | IN | Stop pushbutton — wired N.C. ON while NOT pressed, OFF when pressed. |
| X3 | DI 10003 | IN | Motor overload auxiliary contact — wired N.C. ON while the motor is healthy, OFF when tripped. Maintained: it stays tripped until reset. |
| Y1 | Coil 00001 | OUT | Motor contactor — pulls in to run the motor |
| Y2 | Coil 00002 | OUT | Green run light |
| Y3 | Coil 00003 | OUT | Warning buzzer — sounds for 2 seconds before the motor starts |
No analog I/O on this scene. There are no timers or counters in the I/O map — the 2-second delay is yours to build in the program.
Use these five steps to develop your ladder program for this scene. Run standalone mode first to observe correct behaviour, then build and test your program in the ACC PLC Simulator.
A motor is started and stopped from a control station. Pressing Start begins a start sequence: a warning horn sounds for two seconds to clear the area, then the motor contactor pulls in and a green run light comes on. Pressing Stop drops everything immediately, at any point in the sequence. If the motor overload trips, everything drops as well and cannot be restarted until the overload is reset. The motor must never restart on its own — not after a stop, not after an overload reset, and not when control power comes back.
X1 = Start pushbutton, wired N.O. — OFF at rest, ON while pressed. X2 = Stop pushbutton, wired N.C. — ON at rest, OFF when pressed. X3 = motor overload auxiliary contact, wired N.C. — ON while the motor is healthy, OFF when tripped. Y1 = motor contactor. Y2 = green run light. Y3 = warning horn.
Both field contacts are wired normally closed on purpose. A cut wire or a loose terminal on either one reads the same as a pressed Stop or a tripped overload, so the failure stops the motor instead of stranding it running. Read the state, not the label: X2 and X3 are ON when the machine is in its normal condition, so in the program they are examined with normally-open contacts.
Pressing Start with X2 and X3 both ON sets a start request that must seal itself in, because X1 is released long before the motor runs. The start request drives an on-delay timer with a 2-second preset. While the request is on and the timer has not yet timed out, the horn Y3 is on and the contactor Y1 is off. When the timer times out, the horn drops and Y1 pulls in; Y2 follows Y1. Losing X2 or X3 clears the start request, which also resets the timer — so a Stop pressed one second into the warning aborts the start cleanly rather than queueing it.
Work out what happens when Start is pressed and held. Then work out what happens if Start is pressed again while the motor is already running.
Build it in the ACC PLC Simulator. A workable structure is five rungs: (1) a seal-in rung — X1 in parallel with the seal contact, in series with X2 and X3, driving an internal bit for the start request; (2) the start request driving an on-delay timer with a 2-second preset; (3) the start request AND the timer not done driving Y3; (4) the timer done driving Y1; (5) Y1 driving Y2. The one point to get right is that the timer is enabled by the sealed-in start request, not by X1 directly — a momentary press is far shorter than the delay.
Comment every rung. The seal-in rung in particular should say what it is sealing and what breaks it.
Connect this scene, press RUN, and verify: (1) Start sounds the horn for two seconds, then the contactor pulls in and the run light comes on; (2) Stop pressed during the warning aborts the start with no motor run; (3) Stop pressed while running drops Y1 and Y2 immediately; (4) tripping the overload drops everything and blocks a restart until reset; (5) resetting the overload does not restart the motor on its own; (6) holding Start does not skip or shorten the warning.
Then verify the addresses from outside the browser. Point a Modbus master at the bridge and confirm DI 10001–10003 track the pushbuttons and the overload, and that coils 00001–00003 follow the contactor, run light and horn. Use STEP mode to trace the timer rung scan by scan.