Show / Hide Table of Contents

Synchronizing Metadata

This example provides information to synchronize metadata like string, int, etc to virtual Controller . An active Station is required for this example.

To check the result of the addin, ensure that the data appears in Offline tab of RobotStudio in a module.

Use this procedure to Synchronize to Rapid MetaData:

  1. Get virtual controller Instance based on RsIrc5Controller object's SystemId .

  2. Create MetaData using RsGenericDataDeclaration.

  3. Get RsDataDeclaration from module scope by passing RsGenericDataDeclaration Instance name as first parameter and Module name as second parameter.

  4. Add RsGenericDataDeclaration Instance to RsDataDeclarationCollection of active task.

  5. Synchronize data to controller.

Solution

  1. Get virtual controller Instance based on RsIrc5Controller object's SystemId.

    Station station = Project.ActiveProject as Station;
    
  2. Create MetaData using RsGenericDataDeclaration.

    RsGenericDataDeclaration genericDataDeclaration =
        new RsGenericDataDeclaration("dataDeclaration", "string");
    genericDataDeclaration.InitialExpression = "\"" + "info" + "\"";
    genericDataDeclaration.ModuleName = "Module1";
    genericDataDeclaration.StorageType = RapidStorageType.Constant;
    genericDataDeclaration.Synchronize = true;
    
  3. Get RsDataDeclaration from module scope by passing RsGenericDataDeclaration instance name as first parameter and Module name as second parameter.

    RsDataDeclaration dataDeclaration =
        station.ActiveTask.FindDataDeclarationFromModuleScope(genericDataDeclaration.Name,
        genericDataDeclaration.ModuleName);
    
  4. Add genericDataDeclaration Instance to RsDataDeclarationCollection of ActiveTask.

    station.ActiveTask.DataDeclarations.Add(genericDataDeclaration);
    
  5. Synchronize data to controller.

    station.ActiveTask.SyncData(genericDataDeclaration.ModuleName + 
        "/" + genericDataDeclaration.Name,
        SyncDirection.ToController,
        new System.Collections.Generic.List<SyncLogMessage>());
    

Example

This example provides information to synchronize metadata like string, int, etc to virtual controller.

private static bool SynchronizeToRapidMetaData()
{
    bool result = false;
    Project.UndoContext.BeginUndoStep("SynchronizeToRapidMetaData");
    try
    {
        //Get Station object                    
        Station station = Project.ActiveProject as Station;

        //Create MetaData - Using GenericDataDeclaration
        RsGenericDataDeclaration genericDataDeclaration =
            new RsGenericDataDeclaration("dataDeclaration", "string");
        genericDataDeclaration.InitialExpression = "\"" + "info" + "\"";
        genericDataDeclaration.ModuleName = "Module1";
        genericDataDeclaration.StorageType = RapidStorageType.Constant;
        genericDataDeclaration.Synchronize = true;

        RsDataDeclaration dataDeclaration =
            station.ActiveTask.FindDataDeclarationFromModuleScope(genericDataDeclaration.Name,
            genericDataDeclaration.ModuleName);

        if (dataDeclaration == null)
        {
            //Add genericDataDeclaration instance to RsDataDeclarationCollection of RsTask   
            station.ActiveTask.DataDeclarations.Add(genericDataDeclaration);
            //Synchronize data              
            station.ActiveTask.SyncData(genericDataDeclaration.ModuleName + 
                "/" + genericDataDeclaration.Name,
                SyncDirection.ToController,
                new System.Collections.Generic.List<SyncLogMessage>());
            result = true;
        }
    }
    catch (Exception ex)
    {
        Logger.AddMessage(new LogMessage(ex.Message.ToString()));
        Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
    }
    finally
    {
        Project.UndoContext.EndUndoStep();
    }

    return result;
}

Required Namespaces

ABB.Robotics.RobotStudio.Environment

ABB.Robotics.Controllers.RapidDomain

See Also

  • Importing ProcessDefinition
  • Synchronizing to Controller
In this article
Back to top Copyright © 2024 ABB