docs(phase5): correct FOCAS probe binding — direct DllImport, not WireFocasClient (integration review)
This commit is contained in:
@@ -47,7 +47,7 @@ with a human-readable explanation rather than a false-green TCP-open tick.
|
||||
| **AbCip** | `libplctag` Tag `InitializeAsync` (EIP session + CIP Forward Open). A CIP-level error such as tag-not-found still proves the controller answered CIP → `Ok`. A session/ForwardOpen/connect error → handshake fail. | `"CIP session OK"` | `10.100.0.35:44818` (CIP sim) |
|
||||
| **AbLegacy** | Same `libplctag` `InitializeAsync` handshake as AbCip, PCCC protocol family. | `"CIP session OK"` (PCCC family) | Deferred — no PLC5/SLC sim |
|
||||
| **TwinCAT** | `AdsClient.Connect` + `ReadStateAsync`. See [degrade semantics](#twincat-degrade) below. | `"ADS state: {state}"` | Deferred — no ADS target |
|
||||
| **FOCAS** | `cnc_allclibhndl3` via FWLIB P/Invoke (`Wire.WireFocasClient`). See [degrade semantics](#focas-degrade) below. | `"FOCAS handle OK"` | Deferred — no CNC + FWLIB |
|
||||
| **FOCAS** | `cnc_allclibhndl3` via a direct `DllImport("fwlib32")` in the probe. See [degrade semantics](#focas-degrade) below. | `"FOCAS handle OK"` | Deferred — no CNC + FWLIB |
|
||||
| **Galaxy** | gRPC unary call to `GalaxyRepository.TestConnection` on the configured mxaccessgw endpoint. See [auth-rejection rule](#galaxy-auth-rejection) below. | `"gateway gRPC OK"` | `http://10.100.0.48:5120` (mxaccessgw) |
|
||||
|
||||
**Historian.Wonderware** already performed a real handshake (`Hello` → `HelloAck`)
|
||||
@@ -86,7 +86,9 @@ managed AMS router cannot start):
|
||||
|
||||
On a Windows host with the FANUC FWLIB shared library present:
|
||||
|
||||
- `cnc_allclibhndl3` is called via the existing `Wire.WireFocasClient` P/Invoke.
|
||||
- `cnc_allclibhndl3` is called via a direct `DllImport("fwlib32")` declared in
|
||||
the probe (the production `Wire.WireFocasClient` is a pure-managed FOCAS/2 TCP
|
||||
client, not an FWLIB P/Invoke, so the probe carries its own native binding).
|
||||
A successful handle allocation → `Ok=true`, `"FOCAS handle OK"`.
|
||||
- A CNC-level rejection → handshake fail.
|
||||
|
||||
|
||||
@@ -26,7 +26,8 @@ operator gets a false "connection OK" and only discovers the truth when the driv
|
||||
- TwinCAT: `AdsClient.Connect(netId, port)` + `ReadStateAsync` (`AdsTwinCATClient.cs:90,194`).
|
||||
- OpcUaClient: `DiscoveryClient.GetEndpointsAsync` (no session / cert / auth — `OpcUaClientDriver.cs:422`).
|
||||
- Galaxy: the `MxGateway.Client` gRPC channel + one lightweight unary call.
|
||||
- FOCAS: `cnc_allclibhndl3` via the existing wire P/Invoke (`Wire.WireFocasClient`).
|
||||
- FOCAS: `cnc_allclibhndl3` via a direct `DllImport("fwlib32")` in the probe (the production
|
||||
`Wire.WireFocasClient` is pure-managed FOCAS/2 TCP, not an FWLIB P/Invoke).
|
||||
- **Probe dispatch** clamps the timeout to 1–60 s and passes a cancelled-on-timeout `ct`
|
||||
(`AdminOperationsActor.cs:284-291`). Probes MUST honour it and MUST NOT mutate state (read-only handshakes).
|
||||
- **A proven skip-gated E2E harness exists** (`DriverTestConnectE2eTests`) targeting the live Modbus sim with
|
||||
|
||||
Reference in New Issue
Block a user