Syncing robot statements in assembly

So, this concerns both process modeling and robot programming:
Does anyone have any experience in syncing two robots’ programs while they’re performing an assembly task?
To be precise, I’m using the regular GetAssembly>TransportIn in one of my cells, but the issue is that I can’t use the Program Sync Statement in the current defined assembly order. This is because the Get&Transport sequences are pretty much tied to each other (as far as I know). On the other hand, I don’t want to implement this by changing the assembly order in Assembly Editor, as it would dramatically increase the number of subassemblies.
I hope this is clear, and I appreciate any responses.

Are you already utilizing the OrderIndex feature of individual assembly slots or just using the assembly steps to define the order?

With the slot OrderIndex you can easily control which slots can be assembled in parallel and the sequence of those parallel operations within an assembly step. You can’t distribute the slots to different robots, but maybe this would be enough for your use case?

Yes, I’ve already used the index for that. The problem is that it is suitable as long as you’re working on a single robot. When you want to sync two robots, it doesn’t really change anything. I’ve already managed to do this in my previous cell by syncing two robots, but that was different since they had two different programs (on the same part). When it comes to assembling, it seems you can’t distinguish tasks between different robots (at least I haven’t been able to do that).

I think a fully general solution would require having a custom Robot Transport Controller which can use multiple robots and e.g. distribute individual operations based on custom Assembly Slot properties (properties can be added to steps and slots through API). It might also require custom statements to pass the assembly slot information to the transport controller somehow, but there isn’t Python API for the runtime state of assembly products yet. So that is practically a no-go.

It seems that even with assemblies you can use the RobotMotion options “Record Routine” and “Execute Routine” found from the transport links of the Robot Transport Controller, and then add those Sync statements to the generated pick and place subroutines. I tried this with the “PM Assembly Order Index” template layout from eCat. Of course the big limitation is that the same subroutines are used for all the individual parts in the assembly.

Hi - Thanks for the explanation. I liked the first two points: custom transport controller and custom statements for passing slot properties. I’m mostly thinking about Boolean type but I don’t still know whether it can be used as a signal trigger to start simultaneous operation of the second robot as it I’ve defined it one level below. But this just gave me the idea to decrease the indentation level of that operation and make them parallel. This might be a possible solution.
About the Record/Execute Routine, yes, it’s possible even in the assembly. I’m already using them to adjust my approach/retract points as well as other path corrections. I’m not sure if I get your point about executing the same subroutines for all parts, but I don’t think so. I have several components that need to be placed over a plate (base) and using Record/Execute would compensate for all components as long as you’re using correct names for the points, i.e. Approach, Retract, etc. I follow the template on this and it works just fine for all placements.
Thanks for the ideas. I appreciate it.