|
ProtoCore v0.0.2
Deterministic, zero-heap network stack for embedded targets
|
OPC UA for Robotics (OPC 40010-1) MotionDevice information model (PC_ENABLE_ROBOTICS). More...
#include "protocore_config.h"Go to the source code of this file.
OPC UA for Robotics (OPC 40010-1) MotionDevice information model (PC_ENABLE_ROBOTICS).
OPC 40010-1 "OPC UA for Robotics - Part 1: Vertical Integration" (VDMA / OPC Foundation, namespace http://opcfoundation.org/UA/Robotics/) standardizes how an industrial robot / motion device exposes its identity and live motion state so any OPC UA client (UaExpert, python asyncua, open62541, ...) reads the same MotionDeviceSystem structure across vendors.
This module builds the MotionDeviceSystem address space on top of the OPC UA Binary server (services/opcua, PC_ENABLE_OPCUA): it registers a Browse + Read resolver that answers for the MotionDeviceSystem node hierarchy and serves live values out of a caller-owned RoboticsMotionDeviceSystem struct you refresh in your loop. Same pattern as services/umati (OPC 40501-1); no heap, no stdlib - the model is a fixed node table, the values are pointers/scalars in your struct.
Model exposed (BrowseNames per OPC 40010-1), under the Objects folder:
MotionDeviceSystem MotionDevices (Folder) MotionDevice Manufacturer, Model, ProductCode, SerialNumber, MotionDeviceCategory ParameterSet OnPath, InControl, SpeedOverride Axes (Folder) Axis_1..N ActualPosition, ActualSpeed, ActualAcceleration, MotionProfile Controllers (Folder) Controller Manufacturer, Model, ProductCode, SerialNumber Software Manufacturer, Model, SoftwareRevision SafetyStates (Folder) SafetyState ParameterSet OperationalMode, EmergencyStop, ProtectiveStop
The model is read-only (a monitoring model - the robot reports, the client observes). Scope note: one MotionDevice / Controller / SafetyState and PC_ROBOTICS_AXES parametric axes are exposed (the common embedded robot); the values carry faithful BrowseNames, but the companion-spec TypeDefinitions, PowerTrains, and the NamespaceArray entry for the Robotics URI (which needs array-Variant support in the base server) are a documented follow-on - a generic OPC UA client still browses the structure and reads every value by BrowseName today.
Definition in file robotics.h.