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.
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.
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.pyPillow is needed only for portfolio composition (python -m pip install -e '.[portfolio]'). NVIDIA Asset Root access is needed on the first industrial-scene run.
| 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 resultsoutput/control_signal_trace.csv: full non-SIL PC control traceoutput/control_signal_timeline.md: state/event timelineoutput/industrial_evidence.json: actual Isaac backend, states, captures, and scene resultoutput/visual_validation.json: units, axis, bounding boxes, parents, scales, and proxy/visual alignmentASSET_CREDITS.md: NVIDIA USD paths and licenses
Automated unit/transport/architecture boundary tests: 7/7 PASS.
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.
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.
- Install the official CODESYS Development System and CODESYS Control Win SL with an authorized license/trial.
- Create a Standard Project, compile
plc/overhead_transfer.st, configure a cyclic task, and expose the listed tags through Symbol Configuration/OPC UA. - Trust the client certificate and record the actual NodeIds in
config/tag_map.yaml. - Run a communication-only Isaac backend for Normal, Door Open, Timeout, and Reset; its evidence must identify
codesys_opcua. - Re-run the audit. Only the automatic verdict may change the title to
Soft PLC–Isaac Sim SIL Virtual Commissioning PoC.
- Install official OpenPLC Editor v4 and Runtime v4.
- Build in Editor v4; Runtime v4 requires the generated STruC++
program.zipand cannot accept raw ST as the runtime package. - Verify the Editor's v4 Modbus
%I/%Qmapping. The standard v4 Modbus map does not expose%Mvariables, so the current draft%MWcontract cannot be assumed valid. - Resolve the Windows port 8443 collision with
KCaseAgentby changing/forwarding the Runtime management port; do not terminate that process without identifying it. - 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.
- 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.
