Skip to content

4 Command results and RPC

Program commands return their validation result synchronously. Remote Operator methods return QUEUED when the mailbox admits a command. Query OperatorCommandResult(requestId) for the owning task's result. ACCEPTED means the device accepted intent, not physical completion; observe cyclic status and physical feedback afterward. Sequence intent can still be cancelled by current conditions or a higher priority program command.

Value Meaning
0 Device accepted command intent
1 Queued; owner has not dispatched yet
2 Cancelled before dispatch
11 Operator source locked
12 Owning cyclic task has not initialized the mailbox
13 Conflicting cyclic task detected; remote commands blocked
20 Wrong state or incompatible pending device request
21 Device fault blocks ordinary command
22 Mailbox occupied, locked or cancelling normal commands
23 Already at target
30 Invalid parameter/requester, including zero request ID
31 Bypass not configured as allowed
34 Request unknown or its result no longer retained
35 Request ID already retained; no resubmission occurred
50 Permissive not met
51 Interlock or pending output fallback prevents command
100 Unknown rejection

All Operator command methods require a caller-supplied requestId : ULINT. OperatorSetValue additionally accepts rValue : REAL. Allocate nonzero IDs unique across clients and PLC restarts. Only the last eight admitted requests are retained per instance, including pending and cancelled results. A duplicate ID is rejected while retained. The mailbox is volatile: restart clears pending commands and result history. Result eviction or restart can produce UNKNOWN; neither proves that a command did not execute. Do not automatically replay commands after a connection loss, timeout or unknown result. Reconcile machine state and require a fresh operator decision. There is no durable or exactly-once delivery guarantee.

An immediate BUSY submission admits nothing; the HMI may retry with bounded delay while the operator's intent is still current. A BUSY result query should be polled again. Stop/Abort can replace lower priority pending requests, but lock contention can still return BUSY. Remote control is not an emergency-stop transport.

Applicable blocks expose OperatorHome, OperatorStart, OperatorStop, OperatorAbort, OperatorPause, OperatorProceed, OperatorRetry, OperatorReset, OperatorAdvance, OperatorRetract, OperatorSetOn, OperatorSetOff, OperatorSetValue, OperatorForceSafe and OperatorAck. Internal methods, LockSource, SetBypass, mapping and step mutation are not RPC-enabled. Inherited Reset dispatches the concrete device override.

ForceSafe applies configured electrical/raw fallback on the next cyclic call, independent of debounce/inversion. SetOff means logical off and is not an electrical fallback for an inverted output. State-machine Reset requires the stopped recovery conditions; use Stop or Abort to stop.