Show / Hide Table of Contents

Synchronize to station and RAPID

This document provides information on how to synchronize paths and data to both a RAPID controller and a station. The method uses RsTask, RsPathProcedure, and RsDataDeclaration objects as parameters to perform these synchronizations.

Solution

  1. The example below shows how to synchronize a path to the RAPID controller using SyncPathProcedureAsync(string, SyncDirection, List<SyncLogMessage>).

    • If successful, it logs a success message.
    • If unsuccessful, it logs a failure message.
    if (await task.SyncPathProcedureAsync($"{path.ModuleName}/{path.Name}", SyncDirection.ToController, new List<SyncLogMessage>()))
    {
        Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to controller succeded!"));
    }
    else
    {
        Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to controller failed!"));
    }
    
  2. This code snippet attempts to synchronize a path to the station. The only change from the previous step is the parameter SyncDirection.

    if (await task.SyncPathProcedureAsync($"{path.ModuleName}/{path.Name}", SyncDirection.ToStation, new List<SyncLogMessage>()))
    {
        Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to station succeded!"));
    }
    else
    {
        Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to station failed!"));
    }
    
  3. Using SyncDataAsync(string, SyncDirection, List<SyncLogMessage>), other metadata (such as string, int) and data declarations (such as targets, work objects) can be synchronized.

    try
    {
        await task.SyncDataAsync($"{data.ModuleName}/{data.Name}", SyncDirection.ToController, new List<SyncLogMessage>());
        Logger.AddMessage(new LogMessage($"Synchronising data {data.Name} to controller succeded!"));
    }
    catch
    {
        Logger.AddMessage(new LogMessage($"Synchronising data {data.Name} to controller failed!"));
    }
    

Example

This example provides information about synchronizing paths and data to both a RAPID controller and a station.

private static async Task SyncToRapidAndStation(RsPathProcedure path, RsDataDeclaration data, RsTask task)
{
    Project.UndoContext.BeginUndoStep("Synchronize");
    try
    {
        // Attempt to synchronize the path to the RAPID controller. 
        if (await task.SyncPathProcedureAsync($"{path.ModuleName}/{path.Name}", SyncDirection.ToController, new List<SyncLogMessage>()))
        {
            Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to controller succeded!"));
        }
        else
        {
            Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to controller failed!"));
        }

        // Attempt to synchronize the path to the station. 
        if (await task.SyncPathProcedureAsync($"{path.ModuleName}/{path.Name}", SyncDirection.ToStation, new List<SyncLogMessage>()))
        {
            Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to station succeded!"));
        }
        else
        {
            Logger.AddMessage(new LogMessage($"Synchronising path {path.Name} to station failed!"));
        }

        // Attempt to synchronize the data to the RAPID controller. 
        try
        {
            await task.SyncDataAsync($"{data.ModuleName}/{data.Name}", SyncDirection.ToController, new List<SyncLogMessage>());
            Logger.AddMessage(new LogMessage($"Synchronising data {data.Name} to controller succeded!"));
        }
        catch
        {
            Logger.AddMessage(new LogMessage($"Synchronising data {data.Name} to controller failed!"));
        }
    }
    catch
    {
        Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
        throw;
    }
    finally
    {
        Project.UndoContext.EndUndoStep();
    }
}

Required Namespaces

ABB.Robotics.RobotStudio

ABB.Robotics.RobotStudio.Stations

ABB.Robotics.Controllers

See Also

  • Importing MoveInstruction
  • Loading Program
In this article
Back to top Copyright © 2025 ABB