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:
Get virtual controller Instance based on RsIrc5Controller object's SystemId .
Create MetaData using RsGenericDataDeclaration.
Get RsDataDeclaration from module scope by passing RsGenericDataDeclaration Instance name as first parameter and Module name as second parameter.
Add RsGenericDataDeclaration Instance to RsDataDeclarationCollection of active task.
Synchronize data to controller.
Solution
Get virtual controller Instance based on RsIrc5Controller object's SystemId.
Station station = Project.ActiveProject as Station;Create MetaData using RsGenericDataDeclaration.
RsGenericDataDeclaration genericDataDeclaration = new RsGenericDataDeclaration("dataDeclaration", "string"); genericDataDeclaration.InitialExpression = "\"" + "info" + "\""; genericDataDeclaration.ModuleName = "Module1"; genericDataDeclaration.StorageType = RapidStorageType.Constant; genericDataDeclaration.Synchronize = true;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);Add genericDataDeclaration Instance to RsDataDeclarationCollection of ActiveTask.
station.ActiveTask.DataDeclarations.Add(genericDataDeclaration);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