two-hand control on a power press, Type II¶
| suite id | g_two_hand |
| domain | manufacturing |
| language | LD-graphical |
| difficulty | easy |
| validation status | validated |
| origin | authored |
| license | CC-BY-4.0 |
Authored from the Type II requirements in ISO 13851: anti-tie-down and anti-repeat, so a taped actuator cannot start a cycle. The program has no timer, so it does not model the 0.5 s synchronous-actuation window of Type II control
What is proved¶
From benchmarks/manufacturing/g_two_hand/props.yaml. What each kind claims, and what it becomes on either route, is on The properties we prove.
| id | kind | claim | requirement |
|---|---|---|---|
P1 |
invariant |
!Stroke || (LH && RH) |
ISO 13851 requires the ram to descend only while both actuators are held. Releasing either one stops the stroke. |
Variants¶
| file | expected verdict | violates | method |
|---|---|---|---|
program.xml |
SAFE | none | cross-tool-consensus |
type_i.xml |
SAFE | none | fault-injection |
Files¶
| file | what it is | size | sha256 |
|---|---|---|---|
benchmark.yml |
benchmark metadata | 1.3 KB | 4286836110a6 |
program.xml |
ladder program, PLCopen XML | 3.9 KB | 01ffc81a68d2 |
props.yaml |
property file | 0.2 KB | 01c905820f28 |
tiedown_check.props.yaml |
property file | 0.5 KB | d1118ab8f733 |
type_i.xml |
ladder program, PLCopen XML | 3.0 KB | 40e1b1f2e89c |
Structured text, derived¶
Read off the ladder graph by runner/ld_to_st.py: every rung's contacts and coils rewritten as IEC 61131-3 assignments, in the same series/parallel logic the PLCopen XML encodes. This is a reading aid, not a second source of expected verdicts; ESBMC verifies the ladder program shown above, never this rendering.
Recorded runs¶
A task can carry two routes. ld is ESBMC's ladder front end reading the program directly. via C is the same solver reached through Beremiz and MatIEC, which is the only route that reaches ST, IL, FBD and SFC; see How ESBMC-PLC works.
g_two_hand__program(props.yaml, expectedSAFE): v8.4SAFEg_two_hand__type_i(props.yaml, expectedSAFE): v8.4SAFEtwohand_tiedown_i(tiedown_check.props.yaml, expectedSAFE): masterSAFEtwohand_tiedown_ii(tiedown_check.props.yaml, expectedVIOLATION): masterVIOLATION