4#ifndef PROTOCORE_ROBOTICS_H
5#define PROTOCORE_ROBOTICS_H
57#define ROBOTICS_NS_URI "http://opcfoundation.org/UA/Robotics/"
#define PROTOCORE_ROBOTICS_AXES
Number of Axes the robotics MotionDevice exposes (default 6; must fit PROTOCORE_OPCUA_REF_MAX).
PROTO_ENUM_PACKED
Application protocol spoken on a listener port or connection slot.
#define PROTOCORE_NS_LAYOUT(T,...)
Pin every dispatch slot of a table that is nothing but function pointers.
#define PROTOCORE_NS
Storage for a dispatch table. The const is load bearing.
enum PROTO_ENUM_PACKED RoboticsOperationalMode
SafetyState OperationalMode (OPC 40010-1 OperationalModeEnumeration). Exposed as Int32; the numeric v...
PROTOCORE_NS RoboticsNs Robotics PROTOCORE_UNUSED
Module namespace.
enum PROTO_ENUM_PACKED RoboticsMotionDeviceCategory
MotionDeviceCategory (OPC 40010-1 MotionDeviceCategoryEnumeration). Exposed as Int32; the numeric val...
void protocore_robotics_install(uint8_t *work, const RoboticsMotionDeviceSystem *mds)
Convenience: bind mds and register both resolvers on the OPC UA .
enum PROTO_ENUM_PACKED RoboticsMotionProfile
Axis MotionProfile (OPC 40010-1 AxisMotionProfileEnumeration). Exposed as Int32; the numeric values f...
@ ROBOTICS_MODE_AUTOMATIC_EXTERNAL
automatic, externally commanded.
@ ROBOTICS_CAT_SCARA_ROBOT
SCARA robot.
@ ROBOTICS_CAT_SPHERICAL_ROBOT
spherical / polar robot.
@ ROBOTICS_PROFILE_ROTARY_ENDLESS
rotary axis with endless rotation.
@ ROBOTICS_MODE_MANUAL_HIGH_SPEED
manual, high speed (T2).
@ ROBOTICS_CAT_CYLINDRICAL_ROBOT
cylindrical robot.
@ ROBOTICS_PROFILE_ROTARY
rotary axis (bounded travel).
@ ROBOTICS_PROFILE_LINEAR_ENDLESS
linear axis with endless travel.
@ ROBOTICS_CAT_PARALLEL_ROBOT
parallel (delta) robot.
@ ROBOTICS_MODE_OTHER
a mode outside the ones below.
@ ROBOTICS_CAT_ARTICULATED_ROBOT
articulated (jointed-arm) robot.
@ ROBOTICS_MODE_AUTOMATIC
automatic program execution.
@ ROBOTICS_PROFILE_LINEAR
linear axis (bounded travel).
@ ROBOTICS_CAT_OTHER
a category outside the ones below.
@ ROBOTICS_PROFILE_OTHER
a profile outside the ones below.
@ ROBOTICS_MODE_MANUAL_REDUCED_SPEED
manual jog, reduced speed (T1).
@ ROBOTICS_CAT_CARTESIAN_ROBOT
cartesian / gantry robot.
void protocore_robotics_bind(uint8_t *work, const RoboticsMotionDeviceSystem *mds)
Bind the MotionDeviceSystem the resolvers serve. mds must outlive .
uint8_t * protocore_robotics_span(void)
The PROTOCORE_ROBOTICS_BORROW bytes this module's state lives in.
One axis' live monitoring values (OPC 40010-1 AxisType, common subset).
double actual_position
ActualPosition (mm or deg).
RoboticsMotionProfile motion_profile
MotionProfile.
double actual_acceleration
ActualAcceleration.
double actual_speed
ActualSpeed.
The Controller identity + software (OPC 40010-1 ControllerType + SoftwareType).
const char * serial_number
SerialNumber (String).
const char * sw_manufacturer
Software.Manufacturer (String).
const char * sw_model
Software.Model (String).
const char * manufacturer
Manufacturer (LocalizedText -> String).
const char * product_code
ProductCode (String).
const char * sw_revision
Software.SoftwareRevision (String).
const char * model
Model (LocalizedText -> String).
The whole MotionDeviceSystem the server exposes. Own it in your sketch and refresh its fields each lo...
const char * name
MotionDeviceSystem BrowseName / DisplayName.
RoboticsSafetyState safety
the SafetyState.
RoboticsMotionDevice device
the MotionDevice.
RoboticsController controller
the Controller.
One MotionDevice: identity + live motion state (OPC 40010-1 MotionDeviceType, common subset).
const char * manufacturer
Manufacturer (LocalizedText -> String).
double speed_override
ParameterSet.SpeedOverride (%).
RoboticsMotionDeviceCategory category
MotionDeviceCategory.
proto_bool on_path
ParameterSet.OnPath.
proto_bool in_control
ParameterSet.InControl.
uint32_t axis_count
number of Axes exposed (<= PROTOCORE_ROBOTICS_AXES).
const char * product_code
ProductCode (String).
const char * model
Model (LocalizedText -> String).
const char * serial_number
SerialNumber (String).
Dispatch table. Addressed by offset, so the layout is asserted below.
void(* bind)(uint8_t *, const RoboticsMotionDeviceSystem *)
The SafetyState (OPC 40010-1 SafetyStateType, common subset).
RoboticsOperationalMode operational_mode
ParameterSet.OperationalMode.
proto_bool protective_stop
ParameterSet.ProtectiveStop.
proto_bool emergency_stop
ParameterSet.EmergencyStop.
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS