46#ifndef PROTOCORE_ROBOTICS_H
47#define PROTOCORE_ROBOTICS_H
57#define ROBOTICS_NS_URI "http://opcfoundation.org/UA/Robotics/"
63enum class RoboticsMotionDeviceCategory : int32_t
65 ROBOTICS_CAT_OTHER = 0,
66 ROBOTICS_CAT_ARTICULATED_ROBOT = 1,
67 ROBOTICS_CAT_SCARA_ROBOT = 2,
68 ROBOTICS_CAT_CARTESIAN_ROBOT = 3,
69 ROBOTICS_CAT_SPHERICAL_ROBOT = 4,
70 ROBOTICS_CAT_PARALLEL_ROBOT = 5,
71 ROBOTICS_CAT_CYLINDRICAL_ROBOT = 6,
78enum class RoboticsMotionProfile : int32_t
80 ROBOTICS_PROFILE_OTHER = 0,
81 ROBOTICS_PROFILE_ROTARY = 1,
82 ROBOTICS_PROFILE_ROTARY_ENDLESS = 2,
83 ROBOTICS_PROFILE_LINEAR = 3,
84 ROBOTICS_PROFILE_LINEAR_ENDLESS = 4,
91enum class RoboticsOperationalMode : int32_t
93 ROBOTICS_MODE_OTHER = 0,
94 ROBOTICS_MODE_MANUAL_REDUCED_SPEED = 1,
95 ROBOTICS_MODE_MANUAL_HIGH_SPEED = 2,
96 ROBOTICS_MODE_AUTOMATIC = 3,
97 ROBOTICS_MODE_AUTOMATIC_EXTERNAL = 4,
103 double actual_position;
105 double actual_acceleration;
106 RoboticsMotionProfile motion_profile;
110struct RoboticsController
112 const char *manufacturer;
114 const char *product_code;
115 const char *serial_number;
116 const char *sw_manufacturer;
117 const char *sw_model;
118 const char *sw_revision;
122struct RoboticsSafetyState
124 RoboticsOperationalMode operational_mode;
126 bool protective_stop;
130struct RoboticsMotionDevice
132 const char *manufacturer;
134 const char *product_code;
135 const char *serial_number;
136 RoboticsMotionDeviceCategory category;
139 double speed_override;
149struct RoboticsMotionDeviceSystem
152 RoboticsMotionDevice device;
153 RoboticsController controller;
154 RoboticsSafetyState safety;
161void pc_robotics_bind(
const RoboticsMotionDeviceSystem *mds);
168bool pc_robotics_read(uint16_t ns, uint32_t
id, uint32_t attribute, OpcUaVariant *out);
176int32_t pc_robotics_browse(uint16_t ns, uint32_t
id, OpcUaReference *out, uint32_t max);
182void pc_robotics_install(
const RoboticsMotionDeviceSystem *mds);
OPC UA Binary server: handshake + SecureChannel + Session + Read/Write + Browse (PC_ENABLE_OPCUA).
User-facing configuration for ProtoCore.
#define PC_ROBOTICS_AXES
Number of Axes the robotics MotionDevice exposes (default 6; must fit PC_OPCUA_REF_MAX).