Skip to content

[hardware test]: S7-1500 CPU 1511F-1 PN V2.9.7, classic S7 — pass (13/13), rerun on master with order code #952

Closed

Description

@russwing

Source revision

cf79c99 (master, includes #947): the rerun asked for in #909, after the runner fixes in #908. The report says "dirty": true only because of the runner's own untracked real-plc-results/ folder; git status showed no source change.

Overall result

pass

PLC family, model, and order code

S7-1500, CPU 1511F-1 PN (a fail-safe CPU), order code 6ES7 511-1FK02-0AB0, now recorded. The CPU returns it with a trailing space, as the JSON shows.

Firmware and security mode

V2.9.7, PUT/GET enabled (on for bench tests since 2026-10-04 and left on; not switched on for this run), non-optimized fixture DBs (DB1 read-only, DB2 scratch, checked in TIA before the write run). The safety program was not touched.

Host environment

Windows 11, AMD64, CPython 3.14.4; pytest-bdd 9.0.0, python-snap7 3.2.1

Run time (UTC)

2026-10-13T17:22:27Z to 17:22:30Z

Sanitized report artifacts

JSON report
{
  "ended_at": "2026-10-13T17:22:30.245052+00:00",
  "environment": {
    "architecture": "AMD64",
    "implementation": "CPython",
    "os": "Windows",
    "os_release": "11",
    "pytest_bdd": "9.0.0",
    "python": "3.14.4",
    "python_snap7": "3.2.1"
  },
  "overall_result": "pass",
  "plc": {
    "cpu_state_status": "unavailable:S7ProtocolError",
    "family": "S7-1500",
    "firmware": "2.9.7",
    "model": "CPU 1511F-1 PN",
    "order_code": "6ES7 511-1FK02-0AB0 ",
    "protocol_path": "classic_s7",
    "rack": 0,
    "security_mode": "PUT/GET, non-optimized fixture DBs",
    "slot": 1,
    "tia_configuration": ""
  },
  "scenarios": [
    {
      "diagnostic": null,
      "duration_seconds": 0.20326419989578426,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_establish_and_close_a_session",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "smoke"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.559683799976483,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_read_the_canonical_fixture",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "smoke"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.3078089999035001,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_read_multiple_values_in_one_request",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "smoke"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.06171800009906292,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_reconnect_after_a_clean_disconnect",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "smoke"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.21099619986489415,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_repeated_operations_do_not_corrupt_the_session",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "smoke"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.04815730010159314,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[INT]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.05611000000499189,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[REAL]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.046788099920377135,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[BYTE]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.05870290007442236,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[WORD]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.04428720008581877,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[DWORD]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.05608789995312691,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[DINT]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.06080980016849935,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[CHAR]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    },
    {
      "diagnostic": null,
      "duration_seconds": 0.04419630020856857,
      "scenario_id": "tests/real_plc/test_acceptance.py::test_roundtrip_a_value_and_restore_the_plc[BOOL]",
      "status": "passed",
      "tags": [
        "classic_s7",
        "real_plc",
        "write"
      ]
    }
  ],
  "schema_version": "1.0",
  "source": {
    "commit": "cf79c99ee2bef715cdd757289120d1015725b10a",
    "dirty": true,
    "kind": "git"
  },
  "started_at": "2026-10-13T17:22:27.708557+00:00",
  "tester": "@russwing"
}
JUnit XML
<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="13" time="2.502" timestamp="2026-10-13T18:22:27.736556+01:00"><testcase classname="tests.real_plc.test_acceptance" name="test_establish_and_close_a_session" time="0.206" /><testcase classname="tests.real_plc.test_acceptance" name="test_read_the_canonical_fixture" time="0.561" /><testcase classname="tests.real_plc.test_acceptance" name="test_read_multiple_values_in_one_request" time="0.309" /><testcase classname="tests.real_plc.test_acceptance" name="test_reconnect_after_a_clean_disconnect" time="0.063" /><testcase classname="tests.real_plc.test_acceptance" name="test_repeated_operations_do_not_corrupt_the_session" time="0.212" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[INT]" time="0.050" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[REAL]" time="0.058" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[BYTE]" time="0.048" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[WORD]" time="0.060" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[DWORD]" time="0.046" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[DINT]" time="0.058" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[CHAR]" time="0.062" /><testcase classname="tests.real_plc.test_acceptance" name="test_roundtrip_a_value_and_restore_the_plc[BOOL]" time="0.046" /></testsuite></testsuites>

Skips, failures, and notes

Safety confirmation

  • I reviewed the attachments and they contain no PLC address, credentials, private keys, plant/site identifiers, or proprietary PLC program.

Activity

  1. gijzelaerr commented on Oct 20, 2026

    @gijzelaerr
    Owner

    Recorded in the tested hardware table in #953. Thanks for the rerun.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions