multimove program check

we have several multimove cells set up with dual robots  (irb2600  + irc5). The machine setters need to load the respective programs into each robot when a job is changed. This happens usually several times a week. There is a risk that an extract program ( for TROB1) could be loaded into the spray robot (TROB2)  and vice versa. Is there a way to get the programs to check they are loaded into the correct robot and return an error if not? I envisage a simple if/then routine a the start of main for each program.  I have trawled through the rapid technical manual and can't find anything that appears to suit.


  • lemster68
    lemster68 United States ✭✭✭
    There is GetSysInfo where you can read the serial number.  However, since it is multimove, it could be tricky.  There is also IsSysID function which essentially does the same, looks at the serial number, but returns TRUE or FALSE.  How do they load programs?  Just a module or do they do something really dramatic like restore a backup?  If it is just a module or two, you could add an identity module in each respective task, which they do not mess with.  You could store any type of task unique value, string, num, whatever, and compare that the value is correct for that task.
    Lee Justice
  • BrendanNZ
    BrendanNZ New Zealand
    We load complete programs by selecting the program file ( .pgf ) for the particular job. So when setting up a run the operator has to load a program into t_rob1 and another into t_rob2. The 2 robots perform completely different tasks. I was hoping to add a check so that extract program could be run in the spray robot and so on. The GetSysInfo wont help as it doesnt return unique identifiers for each robot. 
  • I have stored a constant sting in a program module that matches the name for the current task.

    CONST string ProgramTaskName:="T_ROB1";

    Then I do a check in beginning of the program that "ProgramTaskName" matches GetTaskName() function.

        PROC CheckTaskProgram()
            IF ProgramTaskName=GetTaskName() RETURN ;

            !Error handeling here....

  • BrendanNZ
    BrendanNZ New Zealand
    ok thanks. that looks pretty simple I will give it a try