Placeholders
Some terms wrap a signal in a function — a rising edge, a value change, an array aggregate, a composite-state check. In a generic condition these are placeholders: the wrapper is fixed, but the concrete signal is bound later, when the condition is used in a composite.
Edge detection
Turn a Bool signal into an edge event. True for exactly one scan on the transition:
R_TRIG(Motor.IMotor.Running) // rising: FALSE -> TRUE F_TRIG(Motor.IMotor.Running) // falling: TRUE -> FALSE
Value change
React to a numeric value moving:
RISE(Global.PartCount) // value increased FALL(Global.PartCount) // value decreased CHANGE(Global.PartCount) // any change
Array aggregates
Test many array elements at once, compared to a value:
ALL(array) = 1 // every element equals 1 ANY(array) > 0 // at least one is > 0 NONE(array) = 0 // none equal 0
Composite state & timers
IN_STATE('Composite', 'Idle') // is a composite in a state Timer.Done // a timer has elapsed
Queues
QUEUE_EMPTY('Q') QUEUE_FULL('Q') QUEUE_OK('Q') QUEUE_OVERFLOW('Q')
Placeholders resolve in the composite. An edge/value/aggregate/state/queue/timer term is generic until you instantiate the condition in a composite — there you bind its inner signal to a concrete equipment instance, timer, or state. Edges over a Global.* signal are already concrete and auto-map. See Composite Instances.