Evaluate the AutomationView desktop suite free for 30 days. No credit card required. Claim trial key →
arrow_back Back to Articles

Inside AutomationView: Architecting Custom Python Simulation Models for Virtual Commissioning

calendar_month
person Carvalho Raphael

Inside AutomationView: Architecting Custom Python Simulation Models for Virtual Commissioning

AutomationView
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    subgraph automationview ["AutomationView IDE"]
        SFC["SFC Logic"]:::blue
        PY["Python Sim Model"]:::green
    end
    subgraph execution ["Validation Environment"]
        SIL["Software-in-the-Loop"]:::purple
        HIL["Hardware-in-the-Loop"]:::red
    end
    SFC -->|Validates| PY
    PY -->|Exports| SIL
    SIL -->|Tests| HIL
    classDef blue fill:#2563eb,color:#ffffff,stroke-width:0px;
    classDef green fill:#16a34a,color:#ffffff,stroke-width:0px;
    classDef purple fill:#9333ea,color:#ffffff,stroke-width:0px;
    classDef red fill:#dc2626,color:#ffffff,stroke-width:0px;
AutomationView Icon AutomationView

Commissioning industrial control systems on the factory floor is notoriously fraught with delays. Hardware arrives late, field wiring requires troubleshooting, and unexpected edge cases in PLC code only surface when mechanical components fail to behave as assumed. Virtual commissioning mitigates these risks, but connecting proprietary logic environments to dynamic physical models often requires complex middleware. This guide details how to build and validate deterministic state machines by leveraging AutomationView Python simulation models directly within your development pipeline.

The Shift Toward Software-in-the-Loop (SiL)

Historically, engineers relied on rudimentary PLC simulators or physical switch boxes to test logic. While sufficient for simple combinational logic, modern sequential processes with tight timing constraints require true Software-in-the-Loop (SiL) validation. Tools like SimPyLC and AWLSim demonstrated the viability of Python for interpreting and simulating logic. AutomationView expands upon this by natively integrating Python simulation models with its advanced SFC (Sequential Function Chart) and Grafcet editor.

By executing logic against a deterministic Python model rather than an idealized simulator, engineers can inject noise, simulate mechanical lag, and validate fault recovery routines before a single wire is pulled. This significantly reduces the risk of collisions and production downtime during physical commissioning.

Architecting AutomationView Python Simulation Models

Unlike standard ladder logic which is cyclic, SFCs are state-driven. Simulating an SFC requires a model that understands transitions and active steps. AutomationView allows developers to bind Python scripts directly to simulated inputs and outputs. This creates a closed-loop system where the SFC drives outputs, the Python model calculates the physical response (e.g., cylinder extension time, motor ramp-up), and feeds the resulting sensor data back into the SFC inputs.

flowchart TD
    subgraph sfc_engine ["SFC Engine"]
        A["Active Step"]:::blue --> B["Evaluate Transition"]:::blue
    end
    subgraph python_model ["Python Simulation Model"]
        C["Read Outputs"]:::green --> D["Calculate Physics & Delay"]:::green
        D --> E["Update Inputs"]:::green
    end
    B -->|Output State| C
    E -->|Sensor Feedback| A
    classDef blue fill:#2563eb,color:#ffffff,stroke-width:0px;
    classDef green fill:#16a34a,color:#ffffff,stroke-width:0px;

Handling Analog Noise and Edge Cases

Real-world sensors are rarely perfect. A common pitfall in virtual commissioning is assuming analog values transition cleanly. In an AutomationView Python simulation model, you can inject Gaussian noise into simulated analog inputs to verify that the PLC logic implements proper filtering and hysteresis. For example, when simulating a tank level sensor, the Python script can fluctuate the value slightly around the setpoint, ensuring the pump control logic does not chatter.

Integration Strategies for Virtual Commissioning

Building effective simulation models requires a structured approach. The following table outlines different strategies based on the complexity of the commissioning target.

Simulation Strategy Python Model Role Primary Use Case Complexity
Time-Delay Models Simulates fixed mechanical lag (e.g., waiting 2 seconds for a valve to open). Basic sequence validation and deadlock prevention. Low
Kinematic Models Calculates position based on velocity and acceleration parameters. Motion control sequences and collision avoidance. Medium
External 3D Integration Acts as middleware (via OPC UA or Modbus TCP) to tools like Visual Components. Full system virtual commissioning and operator training. High

Bridging Python Models with Industrial Protocols

When the internal logic is validated, the same AutomationView Python simulation models can be utilized for Hardware-in-the-Loop (HiL) testing. By leveraging libraries such as python-snap7 or pyModbusTCP, the simulation script can interface with a physical PLC. The PLC executes the production code, while the Python script mimics the behavior of the field devices over industrial Ethernet. This ensures the physical network stack and PLC I/O configuration are fully tested.

Validating Fault Recovery

One of the most challenging aspects of commissioning is validating fault recovery sequences. It is often dangerous or impractical to intentionally jam a physical cylinder to test a timeout alarm. Within the Python simulation model, developers can programmatically trigger faults—such as an input failing to transition within a designated window—and verify that the SFC correctly transitions to the safe state or triggers the appropriate alarm subroutine.

Conclusion

Relying solely on physical commissioning is no longer viable for complex industrial automation. Implementing AutomationView Python simulation models provides a robust, deterministic environment for validating logic, injecting real-world faults, and significantly reducing on-site engineering time. By bridging the gap between sequence design and comprehensive testing, engineers can deploy code with higher confidence.

FAQ

Can I use existing Python libraries in my simulation models?

Yes, AutomationView supports standard Python libraries, allowing you to use NumPy for complex calculations or specialized protocol libraries for external communication.

How does virtual commissioning handle PLC scan times?

The simulation models can be configured to run synchronously with the virtual execution cycle, ensuring that race conditions related to scan times are accurately modeled and tested.

Is it possible to export these models for third-party testing?

Yes, since the models are written in Python, they can be containerized or integrated into broader CI/CD pipelines for automated unit testing.

Ready to streamline your virtual commissioning and sequence design? Explore the tools and templates available in the AutomationView Store to accelerate your next project.

Share this article

Stay Updated with AutomationView

Get the latest articles and news delivered directly to your inbox.

Log in to Subscribe

You must be registered and logged in to manage subscriptions.

Recommended for you

Inside AutomationView: Using Python to Procedurally Generate Complex SFC Sequences

AutomationView
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    A["Python Script"]:::blue --> B["AutomationView API"]:::green
    B --> C["Generated SFC / Grafcet"]:::red
    classDef blue fill:#2563eb,stroke:#1e40af,color:#ffffff
    classDef green fill:#16a34a,stroke:#166534,color:#ffffff
    classDef red fill:#dc2626,stroke:#991b1b,color:#ffffff
AutomationView Icon AutomationView
calendar_month

Inside AutomationView: Using Python to Procedurally Generate Complex SFC Sequences

Generating large, highly parameterized SFC (Sequential Function Chart) sequences by hand can quickly become a bottleneck in PLC engineering. Inside AutomationView: Using Python to Procedurally Generate Complex SFC Sequences explores how to eliminate manual drafting by utilizing the AutomationView Python API to script logic programmatically. The Paradox of Manual Sequence Design Modern machine builders often […]

Read Article arrow_forward

Integrating AutomationView for Headless PLC Simulation via Docker

AutomationView
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    A[Git Push] --> B[CI/CD Pipeline]
    B --> C[Docker: AutomationView]
    C --> D[Headless PLC Simulation]
    D --> E[Test Report]
    style C fill:#0f4c81,stroke:#fff,stroke-width:2px,color:#fff
AutomationView Icon AutomationView
calendar_month

Integrating AutomationView for Headless PLC Simulation via Docker

Key Takeaways: Running AutomationView in a headless Docker container removes hardware dependencies for CI/CD testing. Headless PLC simulation accelerates regression testing by spinning up isolated virtual runtimes. Integrating Python-based `pytest` scripts with containerized OPC UA endpoints ensures deterministic validation. The Shift Toward Virtualized Control Logic Testing Validating complex Sequential Function Charts (SFCs) on physical hardware […]

Read Article arrow_forward

Inside AutomationView Fault Injection: A Technical Guide to Validating PLC Edge Cases

AutomationView
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    A["PLC Sequence"]:::blue -->|Inject Fault| B["AutomationView Simulator"]:::green
    B -->|Analyze Response| C["Error Handling Logic"]:::red
    classDef blue fill:#2563eb,stroke:#1d4ed8,stroke-width:2px,color:#ffffff
    classDef green fill:#16a34a,stroke:#15803d,stroke-width:2px,color:#ffffff
    classDef red fill:#dc2626,stroke:#b91c1c,stroke-width:2px,color:#ffffff
AutomationView Icon AutomationView
calendar_month

Inside AutomationView Fault Injection: A Technical Guide to Validating PLC Edge Cases

In industrial control systems, a single unchecked edge case can result in catastrophic mechanical failure or prolonged downtime. Validating that a Programmable Logic Controller (PLC) responds correctly to sensor failures, communication drops, and unexpected logic states is notoriously difficult in live production environments. AutomationView Fault Injection allows control engineers to deliberately introduce errors within a […]

Read Article arrow_forward