|
ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
|
OPC UA for Robotics (OPC 40010-1) MotionDevice information model (PROTOCORE_ENABLE_ROBOTICS). More...
#include "protocore_config.h"Go to the source code of this file.
Classes | |
| struct | RoboticsAxis |
| One axis' live monitoring values (OPC 40010-1 AxisType, common subset). More... | |
| struct | RoboticsController |
| The Controller identity + software (OPC 40010-1 ControllerType + SoftwareType). More... | |
| struct | RoboticsSafetyState |
| The SafetyState (OPC 40010-1 SafetyStateType, common subset). More... | |
| struct | RoboticsMotionDevice |
| One MotionDevice: identity + live motion state (OPC 40010-1 MotionDeviceType, common subset). More... | |
| struct | RoboticsMotionDeviceSystem |
| The whole MotionDeviceSystem the server exposes. Own it in your sketch and refresh its fields each loop from your robot I/O; the robotics resolvers read straight out of it (no copy). String fields may be null (served as an empty String). More... | |
| struct | RoboticsNs |
| Dispatch table. Addressed by offset, so the layout is asserted below. More... | |
Macros | |
| #define | ROBOTICS_NS_URI "http://opcfoundation.org/UA/Robotics/" |
| The OPC UA for Robotics companion-spec namespace URI (OPC 40010-1). | |
Typedefs | |
| typedef enum PROTO_ENUM_PACKED | RoboticsMotionDeviceCategory |
| MotionDeviceCategory (OPC 40010-1 MotionDeviceCategoryEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration. | |
| typedef enum PROTO_ENUM_PACKED | RoboticsMotionProfile |
| Axis MotionProfile (OPC 40010-1 AxisMotionProfileEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration. | |
| typedef enum PROTO_ENUM_PACKED | RoboticsOperationalMode |
| SafetyState OperationalMode (OPC 40010-1 OperationalModeEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration. | |
Functions | |
| PROTOCORE_NS_LAYOUT (RoboticsNs, bind, install) | |
| void | protocore_robotics_bind (uint8_t *work, const RoboticsMotionDeviceSystem *mds) |
| Bind the MotionDeviceSystem the resolvers serve. mds must outlive . | |
| void | protocore_robotics_install (uint8_t *work, const RoboticsMotionDeviceSystem *mds) |
| Convenience: bind mds and register both resolvers on the OPC UA . | |
| uint8_t * | protocore_robotics_span (void) |
| The PROTOCORE_ROBOTICS_BORROW bytes this module's state lives in. | |
Variables | |
| PROTOCORE_NS RoboticsNs Robotics | PROTOCORE_UNUSED |
| Module namespace. | |
OPC UA for Robotics (OPC 40010-1) MotionDevice information model (PROTOCORE_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, PROTOCORE_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 PROTOCORE_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.
work is PROTOCORE_ROBOTICS_BORROW bytes the CALLER took, at an address it knows. It is not held past the call, so nothing here aliases it. How those bytes are carved is this module's and is never named here.
Definition in file robotics.h.
| #define ROBOTICS_NS_URI "http://opcfoundation.org/UA/Robotics/" |
The OPC UA for Robotics companion-spec namespace URI (OPC 40010-1).
Definition at line 57 of file robotics.h.
| typedef enum PROTO_ENUM_PACKED RoboticsMotionDeviceCategory |
MotionDeviceCategory (OPC 40010-1 MotionDeviceCategoryEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration.
| typedef enum PROTO_ENUM_PACKED RoboticsMotionProfile |
Axis MotionProfile (OPC 40010-1 AxisMotionProfileEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration.
| typedef enum PROTO_ENUM_PACKED RoboticsOperationalMode |
SafetyState OperationalMode (OPC 40010-1 OperationalModeEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration.
| enum PROTO_ENUM_PACKED |
MotionDeviceCategory (OPC 40010-1 MotionDeviceCategoryEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration.
Definition at line 63 of file robotics.h.
| enum PROTO_ENUM_PACKED |
Axis MotionProfile (OPC 40010-1 AxisMotionProfileEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration.
Definition at line 78 of file robotics.h.
| enum PROTO_ENUM_PACKED |
SafetyState OperationalMode (OPC 40010-1 OperationalModeEnumeration). Exposed as Int32; the numeric values follow the companion-spec enumeration.
Definition at line 91 of file robotics.h.
| PROTOCORE_NS_LAYOUT | ( | RoboticsNs | , |
| bind | , | ||
| install | |||
| ) |
| void protocore_robotics_bind | ( | uint8_t * | work, |
| const RoboticsMotionDeviceSystem * | mds | ||
| ) |
Bind the MotionDeviceSystem the resolvers serve. mds must outlive .
| work | PROTOCORE_ROBOTICS_BORROW bytes the caller took. Not held past the call. |
| mds | Mds |
| void protocore_robotics_install | ( | uint8_t * | work, |
| const RoboticsMotionDeviceSystem * | mds | ||
| ) |
Convenience: bind mds and register both resolvers on the OPC UA .
| work | PROTOCORE_ROBOTICS_BORROW bytes the caller took. Not held past the call. |
| mds | Mds |
| uint8_t * protocore_robotics_span | ( | void | ) |
The PROTOCORE_ROBOTICS_BORROW bytes this module's state lives in.
Stated beside the namespace rather than on it: an entry takes a borrow, and this is where that borrow comes from. Taken once from the end of the pool, which no mark and no release walks, so the state lasts the life of the program.
| PROTOCORE_NS RoboticsNs Robotics PROTOCORE_UNUSED |
Module namespace.
Definition at line 190 of file robotics.h.