Files
lmxopcua/docs/deployments/wonder-app-vd03-makino-z-34184.md
T

4.8 KiB
Raw Blame History

Deployment record — wonder-app-vd03 · Makino Pro 5 (Z-34184) FOCAS

Date configured: 2026-06-25 Host: wonder-app-vd03.zmr.zimmer.com (OtOpcUaHost Windows service, single fused admin+driver node) Status: Configured + deployed + served. Live values blocked by the FOCAS PDU-v3 driver gap — see docs/plans/2026-06-25-focas-pdu-v3-30i-b-support.md.

Equipment

Field Value
Machine Makino Pro 5 (FANUC 30i-B control)
IP / FOCAS endpoint 10.201.31.5:8193 (FOCAS Ethernet, TCP) — reachable from the host (and from VPN clients)
ZTag Z-34184
Manufacturer / Model Makino / Pro 5
CNC series (driver) Thirty_i (30i)

OtOpcUa host endpoints

  • AdminUI: http://wonder-app-vd03.zmr.zimmer.com:9000 (login disabled — Security__Auth__DisableLogin=true)
  • OPC UA: opc.tcp://wonder-app-vd03.zmr.zimmer.com:4840/OtOpcUa
  • Akka cluster: :4053 · ConfigDb: SQL OtOpcUaConfig on :1433

Deployed configuration (cluster DEV, Enterprise zb / Site wonder-app-vd03)

First config ever deployed on this node. All authored via the AdminUI.

Object Value
Namespace dev-equipment (Equipment), URI urn:zb:wonder-app-vd03:equipment
UNS path zb / wonder-app-vd03 / machining / makino
FOCAS driver instance focas-z-34184 ("Makino Pro 5 Z-34184 (FOCAS)"), backend wire, FixedTree enabled
Device 10.201.31.5:8193, series Thirty_i
Equipment z-34184EquipmentId = EQ-3686c0272279, MachineCode Z-34184, ZTag Z-34184
Tags parts-countMACRO:3901 (Float64/Double, Read); parts-requiredMACRO:3902 (Float64/Double, Read)
Deployment 0c2db588 (rev 924b59097eba…) — Sealed / "In sync"

OPC UA node IDs (verified served via the OtOpcUa CLI client):

  • Equipment: ns=2;s=EQ-3686c0272279
  • ns=2;s=EQ-3686c0272279/parts-count
  • ns=2;s=EQ-3686c0272279/parts-required

Host change required to deploy at all (Akka cluster roles)

This node was joining the Akka cluster role-less, so no deployment could ever complete ("a task was canceled"; Fleet status: "no driver-role nodes are Up"). Root cause: OTOPCUA_ROLES (set to admin,driver) drives Program.cs actor wiring but does not populate the Akka member roles — those come from config Cluster:Roles, which was unset (no Cluster__Roles env var; no Cluster section in any appsettings). No code bridges OTOPCUA_ROLESAkkaClusterOptions.Roles.

Fix applied to the host service (HKLM\SYSTEM\CurrentControlSet\Services\OtOpcUaHostEnvironment): added Cluster__Roles__0=admin and Cluster__Roles__1=driver, then restarted the service. The member now joins UP with roles ADMIN+DRIVER and deployments seal. Prior env backed up on the host at E:\ApiInstall\OtOpcUa\_envbak-20260625T145303.txt.

Product follow-up: either wire OTOPCUA_ROLESAkkaClusterOptions.Roles, or bake Cluster:Roles into the deploy template, so a node redeploy doesn't regress to role-less.

Live verification (OtOpcUa CLI client → server)

connect + browse confirm the equipment + both tags are served at the node IDs above.

Driver fix shipped (2026-06-25): the wire client now accepts PDU v3 (see the linked plan). Validated directly against 10.201.31.5MACRO:3901/3902 read Good from the live 30i-B. However, the OtOpcUaHost on this box is still running the pre-v3 driver binary, so the live OPC UA tags will keep returning Bad_WaitingForInitialData until the rebuilt ZB.MOM.WW.OtOpcUa.Driver.FOCAS.dll (or a fresh self-contained host publish) is deployed to E:\ApiInstall\OtOpcUa\ and OtOpcUaHost is restarted. Once redeployed, parts-count/parts-required should go Good (FixedTree + PMC/Parameter still pending the follow-on v3 command work).

FixedTree under the Equipment node (feature built 2026-06-26)

The FOCAS FixedTree (Identity / Axes / Spindle / Program / Timers) now surfaces under the equipment as read-only value nodes, via a generic post-connect ITagDiscovery injection feature (branch feat/focas-fixedtree-equipment-injection; design + plan at docs/plans/2026-06-26-otopcua-fixedtree-equipment-injection-design.md and …-injection.md). After the driver connects and its FixedTreeCache populates (~02 s), nodes are grafted at e.g. ns=2;s=EQ-3686c0272279/FOCAS/Identity/SeriesNumber and …/FOCAS/Axes/X/AbsolutePosition, carrying live values through the same path as the authored parts-count/parts-required tags, and survive redeploys. Offline-complete + end-to-end-green; live-validate on the next host deploy by browsing ns=2;s=EQ-3686c0272279/FOCAS/….