Skip to content

Repository files navigation

IsaacPLC-VC

PC-based Control Simulation

This isolated project implements the Gantry Hoist Material Transfer Cell in Isaac Sim 6.0.1. The industrial visual layer, control/collision proxies, kinematic plant, Modbus exchange, and a Python reference sequence have executed successfully. A SoftPLC has not executed the Structured Text, so the audited result is not SIL and not HIL.

Actual Isaac Sim industrial scene

Audited control ownership

  • plc/overhead_transfer.st: intended IEC 61131-3 sequence owner; includes Door/E-stop interlocks and a 10 s active-state watchdog. Authored, but not compiled/executed here.
  • bridge/: I/O types, tag contract, and Modbus exchange only. No sequence decisions.
  • isaac/: actuator application, kinematics, virtual sensors, USD scene, and rendering only.
  • simulation/pc_controller.py: explicitly non-SIL Python sequence model retained for regression and visual evidence.

The latest Isaac evidence names python_pc_controller. Therefore tools/audit_sil.py automatically selects PC-based Control Simulation.

Reproduce

Set-Location 'C:\path\to\IsaacPLC-VC'
python -m unittest discover -s tests -v
python tools\audit_sil.py --host 127.0.0.1 --port 502
python tools\run_validation.py --backend pc --period-ms 20
& 'C:\isaacsim\python.bat' 'isaac\run_industrial.py' --headless
python tools\run_validation.py --backend pc --period-ms 20 --merge-isaac
python tools\render_portfolio.py
python tools\render_industrial_portfolio.py
& 'C:\isaacsim\python.bat' 'isaac\run_industrial.py' --headless --record-dir output/video_frames/actual_isaac_linkedin --record-every 6
python tools\build_social_portfolio.py

Pillow is needed only for portfolio composition (python -m pip install -e '.[portfolio]'). NVIDIA Asset Root access is needed on the first industrial-scene run.

Current PASS/FAIL

Test PC control simulation SIL acceptance
Normal Cycle PASS FAIL
Door Open Interlock PASS FAIL
Timeout Fault PASS FAIL
Reset Recovery PASS FAIL

The PC trace has 1,289 rows and covers command → reported Python state → outputs → plant motion → virtual sensor feedback. Every row is marked python_pc_controller_non_sil; it is not presented as a PLC trace. SIL acceptance fails because port 502 has no verified SoftPLC heartbeat and the actual Isaac run used the Python controller.

Evidence:

  • output/sil_audit.json / output/sil_audit.md: authoritative classification and acceptance results
  • output/control_signal_trace.csv: full non-SIL PC control trace
  • output/control_signal_timeline.md: state/event timeline
  • output/industrial_evidence.json: actual Isaac backend, states, captures, and scene result
  • output/visual_validation.json: units, axis, bounding boxes, parents, scales, and proxy/visual alignment
  • ASSET_CREDITS.md: NVIDIA USD paths and licenses

Automated unit/transport/architecture boundary tests: 7/7 PASS.

LinkedIn video and PPT image pack

  • output/portfolio/linkedin_pc_control_isaac_demo.mp4: 46.6 s, 1920×1080, H.264/AAC. The motion segment uses 85 actual Isaac viewport frames and overlays the recorded state, actuator output, carrier/hoist position, and Door status.
  • output/portfolio/00_portfolio_contact_sheet.png: six recommended 16:9 portfolio/PPT images on one index sheet.
  • output/portfolio/PPT_ASSET_GUIDE.md: suggested slide placement, Korean captions, evidence type, and claim restrictions.
  • output/portfolio/LINKEDIN_POST_COPY.md: truthful post copy that identifies the current PC controller and the unverified SoftPLC step.

The video does not use generated plant imagery. Static cards reuse actual Isaac captures and measured evidence composites. It is deliberately titled PC-based Control Simulation, not SIL/HIL.

Industrial scene

The stage separates hidden /World/VC/ControlProxy primitives from render-purpose /World/VC/VisualAsset assemblies linked through vc:drivenBy. It includes a steel gantry, trolley/hoist housing, cable and hook/clamp, pallet/crate, safety mesh fence/door, epoxy floor and safety lines, HMI cabinet, stack light, two NVIDIA roller conveyors, PBR materials, warehouse lighting, and two cameras. Captures are actual 1920×1080 Isaac viewport output.

Manual step required for a real SIL result

CODESYS preferred route

  1. Install the official CODESYS Development System and CODESYS Control Win SL with an authorized license/trial.
  2. Create a Standard Project, compile plc/overhead_transfer.st, configure a cyclic task, and expose the listed tags through Symbol Configuration/OPC UA.
  3. Trust the client certificate and record the actual NodeIds in config/tag_map.yaml.
  4. Run a communication-only Isaac backend for Normal, Door Open, Timeout, and Reset; its evidence must identify codesys_opcua.
  5. Re-run the audit. Only the automatic verdict may change the title to Soft PLC–Isaac Sim SIL Virtual Commissioning PoC.

OpenPLC v4 fallback

  1. Install official OpenPLC Editor v4 and Runtime v4.
  2. Build in Editor v4; Runtime v4 requires the generated STruC++ program.zip and cannot accept raw ST as the runtime package.
  3. Verify the Editor's v4 Modbus %I/%Q mapping. The standard v4 Modbus map does not expose %M variables, so the current draft %MW contract cannot be assumed valid.
  4. Resolve the Windows port 8443 collision with KCaseAgent by changing/forwarding the Runtime management port; do not terminate that process without identifying it.
  5. Deploy/start the PLC, confirm state and heartbeat changes, run the communication-only Isaac path, then run python tools\audit_sil.py --host 127.0.0.1 --port 502.

Limits

  • Functional interlock verification only; no certified Safety PLC behavior.
  • No physical PLC, so no HIL claim.
  • No SoftPLC-executed Isaac trace yet.
  • Cable is visual only; plant motion is deterministic kinematics.
  • The LinkedIn MP4 is a 46.6 s actual-frame demo, not a 60–90 s full evidence recording; its static explanatory cards are clearly separated from the viewport motion segment.

About

Gantry Hoist Material Transfer Cell — Isaac Sim PC-based control simulation and virtual commissioning portfolio evidence

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages