GEQ — Greater Than or Equal
![GEQ instruction block: Source A TMR[0].ACC reading 2334, Source B 5000, dark because the timer is still below 5000](/assets/docs/instructions/compare/compare-geq-block.png)
Description
Section titled “Description”GEQ (Greater Than or Equal) is true when Source A is greater than or equal to Source B. It is GRT with the boundary included, and like every compare instruction it writes nothing. Use GEQ when reaching the value should count: “at least N parts”, “at or above setpoint”, “the timer has run this long”. A timer or counter’s own DN bit is a GEQ on its accumulator against its preset; GEQ lets you test the accumulator against any other number. When the boundary must not count, use GRT. GEQ does not accept STRING operands.
Operands
Section titled “Operands”| Operand | Type | Format | Valid Range | Required | Description |
|---|---|---|---|---|---|
| Source A | Any numeric tag, member, element or bit, or a literal | Tag, Tag.Member, Tag[n], Tag.bit, or a literal |
Any resolvable numeric reference | Yes | The value under test. |
| Source B | Same as Source A | Same | Any resolvable numeric reference; defaults to 0 | Yes | The threshold, inclusive. |
Literals may be whole numbers (25, -3, 0x1F) or decimals (72.5). Mixed INT and REAL operands compare as numbers. A BOOL reads as 0 or 1.
Scan Behavior
Section titled “Scan Behavior”Prescan
Section titled “Prescan”No state. Evaluates from the current values on the first scan.
Rung-condition-in is false
Section titled “Rung-condition-in is false”The instruction does not pass continuity. The block still colours by its own result on the canvas.
Rung-condition-in is true
Section titled “Rung-condition-in is true”Both operands are read. If A is greater than or equal to B the instruction conducts; if A is less than B the rung is false from this point.
Postscan
Section titled “Postscan”Nothing.
Example
Section titled “Example”Scenario: A ten-second TON runs while the motor is on. Halfway through the delay, at five seconds, a “warming up” lamp changes to “almost ready”. The timer’s accumulator is the operand, so no second timer is needed.
Tags:
MotorRun— Motor run, BOOLTMR[0]— TIMER array element, Preset 10000, driven byXIC MotorRun → TON TMR[0]on another rungHalfway— Almost-ready lamp, BOOL
Rung 1:
—[GEQ TMR[0].ACC 5000]———(OTE Halfway)———Scan 1 — the timer reads 2334. 2334 is less than 5000: the block is dark, Halfway = 0. The value line under TMR[0].ACC is the member’s own value, not the timer’s; a member operand reads exactly like a tag.
![Figure 1 — GEQ false: TMR[0].ACC reads 2334 against Source B 5000, the block dark, Halfway off](/assets/docs/instructions/compare/compare-geq-example-rung-1.png)
Scan 2 — the timer has timed out. The block lit the moment the accumulator reached 5000 and Halfway = 1. The frame was taken later, with the accumulator parked at 10000 (a done TON holds ACC at PRE); it stays lit until the motor stops and the timer resets to 0.
![Figure 2 — GEQ true: TMR[0].ACC parked at 10000 against Source B 5000, the block lit, Halfway on](/assets/docs/instructions/compare/compare-geq-example-rung-2.png)
See Also
Section titled “See Also”- GRT — Greater Than (boundary excluded)
- LEQ — Less Than or Equal (the mirror test)
- LIM — Limit Test
- TON — Timer On Delay (the accumulator used in the example)
- Compare Instructions — Category index
GEQ A B is LEQ B A. Pick whichever reads naturally on the rung.
Reading an accumulator. TMR[0].ACC and Batch.ACC are ordinary operands. Read them freely; a compare never changes them.
Several thresholds on one timer. Put a GEQ per threshold on its own rung, each against the same accumulator, for a staged sequence from a single delay.
Applies to LadderIDE >=1.2.2 · Last reviewed 2026-09-11 · Screenshots verified 2026-09-11