Bottle Labeler
Ready to build this?
Sign up free — no credit card required. This scenario requires the Basic plan.
Sign up to play this scenario →Already have an account? Log in
Briefing
A rotary label applicator detects bottles, triggers a print-and-apply cycle, and verifies label placement with a vision camera. If the camera rejects a label, a pusher diverts the bottle to a reject chute. The machine runs continuously while START is held and LABEL_PRESENT is true.
Objectives
- On BOTTLE_PRESENT + LABEL_PRESENT + START_PB: trigger PRINT_TRIGGER
- After PRINT_OK, activate LABEL_APPLY
- After LABEL_APPLY, trigger VERIFY_CAMERA
- If VERIFY_OK: reset for next bottle
- If NOT VERIFY_OK: pulse REJECT_PUSHER (500ms) to eject bottle
- READY_LAMP on when machine is idle and ready (not in mid-cycle)
Hints
- Sequence: IDLE → PRINT → APPLY → VERIFY → (REJECT or IDLE)
- Each step advances on sensor/input confirmation rather than fixed timer
- Use a step variable with input conditions at transitions
- REJECT_PUSHER is a timed pulse (500ms TON)
I/O Table
Inputs
BOTTLE_PRESENTBottle presence sensor
BOOL · %I0.0
LABEL_PRESENTLabel stock present sensor
BOOL · %I0.1
PRINT_OKPrinter ready/print complete signal
BOOL · %I0.2
VERIFY_OKVision camera verify OK signal
BOOL · %I0.3
START_PBMachine start push-button
BOOL · %I0.4
Outputs
LABEL_APPLYLabel applicator solenoid
BOOL · %Q0.0
PRINT_TRIGGERPrint command to label printer
BOOL · %Q0.1
VERIFY_CAMERACamera trigger output
BOOL · %Q0.2
REJECT_PUSHERReject divert pusher (500ms pulse)
BOOL · %Q0.3
READY_LAMPMachine ready indicator
BOOL · %Q0.4
Your program will be tested against:
All test cases run automatically when you submit. Assertions are hidden until you pass.
- #1PRINT_TRIGGER fires on bottle + label + start
All conditions met -> PRINT_TRIGGER energises
- #2LABEL_APPLY fires after PRINT_OK
PRINT_OK confirms print -> LABEL_APPLY energises
- #3Good label passes camera verify
VERIFY_OK after VERIFY_CAMERA -> no reject, READY_LAMP on
- #4Bad label triggers REJECT_PUSHER
VERIFY_OK=false -> REJECT_PUSHER pulses
Related scenarios
Ready to build this?
Sign up free — no credit card required. This scenario requires the Basic plan.
Sign up to play this scenario →Already have an account? Log in