Basic
20 min

Bottle Labeler

packaginglabelervisionreject
Bottle Labeler scenario preview

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_PRESENT

Bottle presence sensor

BOOL · %I0.0

LABEL_PRESENT

Label stock present sensor

BOOL · %I0.1

PRINT_OK

Printer ready/print complete signal

BOOL · %I0.2

VERIFY_OK

Vision camera verify OK signal

BOOL · %I0.3

START_PB

Machine start push-button

BOOL · %I0.4

Outputs

LABEL_APPLY

Label applicator solenoid

BOOL · %Q0.0

PRINT_TRIGGER

Print command to label printer

BOOL · %Q0.1

VERIFY_CAMERA

Camera trigger output

BOOL · %Q0.2

REJECT_PUSHER

Reject divert pusher (500ms pulse)

BOOL · %Q0.3

READY_LAMP

Machine 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.

  1. #1PRINT_TRIGGER fires on bottle + label + start

    All conditions met -> PRINT_TRIGGER energises

  2. #2LABEL_APPLY fires after PRINT_OK

    PRINT_OK confirms print -> LABEL_APPLY energises

  3. #3Good label passes camera verify

    VERIFY_OK after VERIFY_CAMERA -> no reject, READY_LAMP on

  4. #4Bad label triggers REJECT_PUSHER

    VERIFY_OK=false -> REJECT_PUSHER pulses

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