Search Results for

    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 © 2026 ABB Robotics