CAM component implements electronic cam functionality for synchronized master-slave drive control in automation systems. More...

Classes | |
class | campoint |
Public Member Functions | |
void | ImportCam () |
void | CalcFixedUpdate () |
![]() | |
void | PreStartSim () |
Is called by the realvirtualController before the component is started. | |
void | StartSim () |
Is called by the realvirtualController to start or stop the component. | |
void | StopSim () |
Vector3 | DirectionToVector (DIRECTION direction) |
Transfers the direction enumeration to a vector. | |
DIRECTION | VectorToDirection (bool torotatoin, Vector3 vector) |
Transfers a vector to the direction enumeration. | |
float | GetLocalScale (Transform thetransform, DIRECTION direction) |
List< BehaviorInterfaceConnection > | UpdateConnectionInfo () |
List< Signal > | GetConnectedSignals () |
void | SetVisibility (bool visibility) |
Sets the visibility of this object including all subobjects. | |
List< BehaviorInterfaceConnection > | GetConnections () |
List< Signal > | GetSignals () |
GameObject | GetChildByName (string name) |
Gets a child by name. | |
List< GameObject > | GetChildsByName (string name) |
Gets all child by name. | |
GameObject | GetChildByNameAlsoHidden (string name) |
List< GameObject > | GetAllMeshesWithGroup (string group) |
List< GameObject > | GetAllWithGroup (string group) |
List< GameObject > | GetAllWithGroups (List< string > groups) |
List< GameObject > | GetAllMeshesWithGroups (List< string > groups) |
List< string > | GetMyGroups () |
List< GameObject > | GetMeshesWithSameGroups () |
List< GameObject > | GetAllWithSameGroups () |
MeshRenderer | GetMeshRenderer () |
Gets the mesh renderers in the childrens. | |
void | SetCollider (bool enabled) |
sets the collider in all child objects | |
void | ErrorMessage (string message) |
Displays an error message. | |
void | ChangeConnectionMode (bool isconnected) |
void | Log (string message) |
Logs a message. | |
void | Log (string message, object obj) |
Logs a message with a relation to an object. | |
void | Warning (string message, object obj) |
Logs a warinng with a relation to an object. | |
void | Error (string message, object obj) |
Logs an error with a relation to an object. | |
void | Error (string message) |
Logs an error. | |
GameObject | DebugPosition (string debugname, Vector3 position, Quaternion quaternation, float scale) |
Displays a gizmo for debugging positions. | |
void | SetFreezePosition (bool enabled) |
Freezes all child components to the current poosition. | |
void | SetRbConstraints (RigidbodyConstraints constraints) |
virtual void | AwakeAlsoDeactivated () |
Static Public Member Functions | |
static float | GetFloat (string value, float defaultValue) |
![]() | |
static bool | DirectionIsLinear (DIRECTION direction) |
Gets back if the direction is linear or a rotation. | |
Public Attributes | |
Drive | MasterDrive |
The master drive this slave drive is attached to. | |
float | MasterDriveAxisScale |
A scale factor. The master drive position is multiplied with this factor to get the position which is used in the CAM curve. | |
float | MasterDriveAxisOffset |
An offset to the master drive. The offset is added to the master drive position to get the position which is used in the CAM curve. | |
float | CAMAxisScale |
The scale of the CAM axis. It will scale the values of the CAM curve. | |
float | CAMAxisOffset |
The offset of the CAM axis. It will be added to the values of the CAM cure to get the position which is applied to the CAM (slave) axis. | |
CamFileType | FileType |
string | ExcelSheet |
string | ExcelFile |
AnimationCurve | CamCurve |
The Animation Curve which is defining the slave drive position in relation to the master drive position. | |
TextAsset | CamDefintion |
A text assed containing the CAM definition. This asset is a table with optional headers and columns describing the master axis position and the slave axis position. | |
bool | UseColumnNames |
If true the Column Names are used to define the data to import. | |
string | MasterColumn |
The master axis column name. | |
string | SlaveColumn |
The slave axis column name. | |
bool | UseColumnNumbers |
If true the Column Numbers (starting with 1 for the 1st column) are used to define the data to import. | |
int | MasterColumnNum |
The master axis column number. | |
int | SlaveColumnNum |
The slave axis column number. | |
bool | CamDefinitionWithHeader |
if true during import a column header is expected and first line of the imported data should be a header | |
bool | ImportOnStart |
bool | IsContinous |
if true text asset is always imported on simulation start | |
float | ContinousOffset |
![]() | |
string | Name |
The name of the component if it should be different from the GameObject name. | |
ActiveOnly | Active |
GameObject | FromTemplate |
realvirtualController | realvirtualController |
bool | HideNonG44Components |
bool | SceneIsAdditive |
bool | ForceStop |
Additional Inherited Members | |
![]() | |
enum | ActiveOnly { Always , Connected , Disconnected , Never , DontChange } |
![]() | |
bool | hidename () |
bool | hideactiveonly () |
virtual void | OnStopSim () |
virtual void | OnPreStartSim () |
virtual void | OnStartSim () |
MU | GetTopOfMu (GameObject obj) |
Gets the top of an MU component (the first MU script going up in the hierarchy) | |
void | InitGame4Automation () |
Initialiates the components and gets the reference to the realvirtualController in the scene. | |
virtual void | AfterAwake () |
void | Awake () |
Detailed Description
CAM component implements electronic cam functionality for synchronized master-slave drive control in automation systems.
The CAM component provides electronic cam control, allowing a slave drive to follow complex motion profiles based on the position of a master drive. This simulates the behavior of mechanical cam systems digitally, enabling precise, repeatable motion patterns without physical cam mechanisms. The component uses animation curves or imported data tables to define the relationship between master and slave positions.
Key features:
- Position-based synchronization between master and slave drives
- Import cam profiles from Excel or CSV files for easy integration with engineering tools
- Visual animation curve editor for custom motion profiles
- Scaling and offset adjustments for both master and slave axes
- Continuous mode for endless motion patterns (e.g., chain drives)
- Support for complex non-linear relationships and motion interpolation
- Column-based or header-based data import with flexible mapping
- Real-time profile switching and modification capabilities
Common applications in industrial automation:
- Packaging machines with synchronized sealing and cutting operations
- Bottle filling systems with coordinated nozzle and conveyor movement
- Press machines with complex ram motion profiles
- Pick and place robots with optimized acceleration profiles
- Rotary indexing tables with variable speed segments
- Web handling systems with dancer roll compensation
- Flying shear applications with speed matching
- Labeling machines with product tracking
The CAM profile defines how the slave axis position changes relative to the master axis position. This enables complex motion patterns such as:
- Dwell periods where slave remains stationary while master moves
- Quick return strokes with different forward and return speeds
- Smooth acceleration and deceleration profiles
- Multiple motion segments with different characteristics
- Cyclic patterns for continuous operation
Integration with other components:
- Requires connection to master Drive component for position input
- Acts as a behavior on slave Drive component
- Can be combined with other drive behaviors for complex control
- Works with PLCInputFloat/PLCOutputFloat for dynamic parameter adjustment
- Compatible with drive limits and safety functions
Data import capabilities:
- Excel files with configurable sheet and column selection
- CSV files with header or column number mapping
- Automatic curve generation from imported data points
- Support for engineering units and scaling factors
- Preview and validation of imported profiles
Performance considerations:
- CAM evaluation happens in FixedUpdate for deterministic behavior
- Interpolation between curve points ensures smooth motion
- Continuous mode handles wraparound for endless applications
- Efficient curve evaluation using Unity's AnimationCurve system
The CAM component is essential for applications requiring precise coordination between multiple axes, replacing traditional mechanical cams with flexible electronic control.
For detailed documentation and examples, see: https://doc.realvirtual.io/components-and-scripts/motion/cam
Class Documentation
◆ realvirtual::CAM::campoint
Member Function Documentation
◆ CalcFixedUpdate()
void realvirtual.CAM.CalcFixedUpdate | ( | ) |
Implements realvirtual.IDriveBehavior.
Member Data Documentation
◆ CAMAxisOffset
float realvirtual.CAM.CAMAxisOffset |
The offset of the CAM axis. It will be added to the values of the CAM cure to get the position which is applied to the CAM (slave) axis.
◆ CAMAxisScale
float realvirtual.CAM.CAMAxisScale |
The scale of the CAM axis. It will scale the values of the CAM curve.
◆ CamCurve
AnimationCurve realvirtual.CAM.CamCurve |
The Animation Curve which is defining the slave drive position in relation to the master drive position.
◆ CamDefinitionWithHeader
bool realvirtual.CAM.CamDefinitionWithHeader |
if true during import a column header is expected and first line of the imported data should be a header
◆ CamDefintion
TextAsset realvirtual.CAM.CamDefintion |
A text assed containing the CAM definition. This asset is a table with optional headers and columns describing the master axis position and the slave axis position.
◆ IsContinous
bool realvirtual.CAM.IsContinous |
if true text asset is always imported on simulation start
If set to true the CAM will continue as an offset based on the the last CAM position, for example for continous positive moving things like transport chains
◆ MasterColumn
string realvirtual.CAM.MasterColumn |
The master axis column name.
◆ MasterColumnNum
int realvirtual.CAM.MasterColumnNum |
The master axis column number.
◆ MasterDrive
Drive realvirtual.CAM.MasterDrive |
The master drive this slave drive is attached to.
◆ MasterDriveAxisOffset
float realvirtual.CAM.MasterDriveAxisOffset |
An offset to the master drive. The offset is added to the master drive position to get the position which is used in the CAM curve.
◆ MasterDriveAxisScale
float realvirtual.CAM.MasterDriveAxisScale |
A scale factor. The master drive position is multiplied with this factor to get the position which is used in the CAM curve.
◆ SlaveColumn
string realvirtual.CAM.SlaveColumn |
The slave axis column name.
◆ SlaveColumnNum
int realvirtual.CAM.SlaveColumnNum |
The slave axis column number.
◆ UseColumnNames
bool realvirtual.CAM.UseColumnNames |
If true the Column Names are used to define the data to import.
◆ UseColumnNumbers
bool realvirtual.CAM.UseColumnNumbers |
If true the Column Numbers (starting with 1 for the 1st column) are used to define the data to import.