Condition
pyrung.core.condition
Condition classes for the immutable PLC engine.
Conditions are evaluated lazily at scan time against SystemState.
Condition
Bases: ABC
Base class for all conditions.
Conditions are pure functions: evaluate(state) -> bool. They read from state but never modify it.
Supports both direct evaluation via evaluate(state) and context-based evaluation via evaluate(ctx) for batched scans.
CompareEq
CompareNe
CompareLt
CompareLe
CompareGt
CompareGe
BitCondition
Bases: Condition
Normally open contact (XIC) - true when bit is on.
This is the default condition when a BOOL tag is used directly in a Rung.
IntTruthyCondition
NormallyClosedCondition
RisingEdgeCondition
Bases: Condition
Rising edge detection - true only on 0->1 transition.
Reads previous value from state.memory["_prev:{tag.name}"].
FallingEdgeCondition
Bases: Condition
Falling edge detection - true only on 1->0 transition.
Reads previous value from state.memory["_prev:{tag.name}"].
IndirectCompareEq
IndirectCompareNe
Bases: Condition
Inequality comparison for IndirectRef: indirect_ref != value or indirect_ref != tag.
IndirectCompareLt
IndirectCompareLe
IndirectCompareGt
IndirectCompareGe
AllCondition
Bases: Condition
AND condition - true when all sub-conditions are true.
Example
with Rung(all_of(Ready, AutoMode)): out(StartPermissive)
AnyCondition
Bases: Condition
OR condition - true when any sub-condition is true.
Example
with Rung(Step == 1, any_of(Start, oCmdStart)): out(Light)