1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
Blog Articles
  • Everywhere
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Blog
  3. Programming ABB robots, Rapid programming

A program that can write a program!

  • Lemster68
  • November 5, 2019 at 4:01 PM
  • 6,784 times read

This program writes system parameter files which can then be loaded. Also, it writes a loadable rapid program module. I wasn't sure when I set out to do this if it would even work. It does! I had to cut out some stuff to make it fit this article. But the gist of it is there. Can you tell I like programming ABB robots? Real programming, stuff that maybe no one has ever tried to do before or thought of before. New and interesting challenges keep things from getting boring. The purpose of doing this is explained in the comments below in the program.

Code
MODULE Commission_5419_5420
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! This Module was written to commission Ford Cleveland engine plant #1.
! By TKSE, Auburn Hills, MI, job numbers 5419 and 5420.
! Run the routine rRunCommision to re setup custom pXuser.mod if
! the robot loses it's as-delivered by TKSE setup.  For example,
! the flash drive is corrupted and the system gets reinstalled new with
! IFWC.  Or, if the robot has been replaced.  In this case the user MUST
! replace the old robot serial number in the routine with the new robot
! serial number or the new robot will not get setup the same as the one
! that it replaced.  This routine will also write in the system parameters
! sysuser.cfg and mmcuser.cfg in the frameworks directory.  Any other customizations
! will be added as necessary.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  VAR string stRobotName;
  PERS string stServerPath;
  VAR IODev WritePars;
  VAR IODev WriteMod;
  VAR string ReadStr;
  VAR num ReadIndex;
  VAR num WriteIndex;
  VAR string stSerialNoHigh1;
  VAR num nSerialNoLow1;
  VAR string stSerialNoHigh2;
  VAR num nSerialNoLow2;
  VAR string stSerialNoHigh3;
  VAR num nSerialNoLow3;
  VAR string stSerialNoHigh4;
  VAR num nSerialNoLow4;
  VAR dir Directory;
  VAR string FileName;
  
  PROC rRunCommission()
      !!!!!! READ THIS!!!!!!!
      ! Check run mode so program will not loop
      ! Needs to only run once... if it loops and
      ! then stops somewhere in the middle some
      ! files could be incomplete or corrupted.
      ! Make sure single cycle is selected from
      ! the quickset menu...the button on the
      ! bottom right corner of the Pendant screen.
      !
    ! Read in robot serial numbers to be used in figuring out which
    ! p1user.mod to write into the frameworks directory or anything
    ! else which might be unique to that robot.
    WHILE RunMode() = RUN_CONT_CYCLE DO
        TPErase;
        TPWrite "Please change run mode to single cycle.";
        WaitTime 1;
    ENDWHILE
    TPWrite "Reading robot serial number to identify system...";
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_1" ,"robot_serial_number_high_part",stSerialNoHigh1;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_1","robot_serial_number_low_part",nSerialNoLow1;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_2" ,"robot_serial_number_high_part",stSerialNoHigh2;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_2","robot_serial_number_low_part",nSerialNoLow2;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_3" ,"robot_serial_number_high_part",stSerialNoHigh3;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_3","robot_serial_number_low_part",nSerialNoLow3;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_4" ,"robot_serial_number_high_part",stSerialNoHigh4;
    ReadCfgData "MOC/ROBOT_SERIAL_NUMBER/rob_4","robot_serial_number_low_part",nSerialNoLow4;
      ! Open IODev to frameworks syspar and write in the sysuser
      Close WritePars;
    TPWrite "Writing standard IFWC sysuser.cfg file...";
    Open "/hd0a/ifwc/syspar/" \File:="sysuser.cfg", WritePars;
    Write WritePars, "SYS:CFG_1.0:5:0::";
    Write WritePars, "#";
    Write WritePars, "# -------------------------------------------------------------------";
    Write WritePars, "# SYSUSER.CFG";
    Write WritePars, "# -------------------------------------------------------------------";
    Write WritePars, "#";
    Write WritePars, "# Description:  This config file defines system parameters";
    Write WritePars, "#               defined by the User";
    Write WritePars, "#";
    Write WritePars, "# Change History:";
    Write WritePars, "# 02-15-2012 AJH Created";
    Write WritePars, "# 11-25-13 TKSE customized for Job#'s 5419-5420";
    Write WritePars, "#          Ford Cleveland engine plant #1";
    Write WritePars, "#";
    Write WritePars, "# -------------------------------------------------------------------";
    Write WritePars, "#";
    TPWrite "Writing job specific sysuser.cfg parameters...";
    Write Writepars, "CAB_EXEC_HOOKS:";
    Write WritePars, " ";
    IF nSerialNoLow1 <> 500328 THEN
        Write WritePars, "      -Routine ""Pr_EvtPowerOnWZ"" -Shelf ""POWER_ON"" -Task ""T_ROB1"" -SeqNo 1";
      Write WritePars, " ";
    ENDIF
    Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_ROB1"" -SeqNo 1";
    Write WritePars, " ";
    Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_PROC1"" -SeqNo 1";
    ! If system is a multi-move write parameters for ROB 2-4 if present
    IF nSerialNoLow2 > 0 THEN
      Write WritePars, " ";
      IF nSerialNoLow2 <> 500329 THEN
          Write WritePars, "      -Routine ""Pr_EvtPowerOnWZ"" -Shelf ""POWER_ON"" -Task ""T_ROB2"" -SeqNo 1";
        Write WritePars, " ";
      ENDIF
      Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_ROB2"" -SeqNo 1";
      Write WritePars, " ";
      Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_PROC2"" -SeqNo 1";
    ENDIF
    IF nSerialNoLow3 > 0 THEN
      Write WritePars, " ";
      Write WritePars, "      -Routine ""Pr_EvtPowerOnWZ"" -Shelf ""POWER_ON"" -Task ""T_ROB3"" -SeqNo 1";
      Write WritePars, " ";
      Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_ROB3"" -SeqNo 1";
      Write WritePars, " ";
      Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_PROC3"" -SeqNo 1";
    ENDIF
    IF nSerialNoLow4 > 0 THEN
      Write WritePars, " ";
      Write WritePars, "      -Routine ""Pr_EvtPowerOnWZ"" -Shelf ""POWER_ON"" -Task ""T_ROB4"" -SeqNo 1";
      Write WritePars, " ";
      Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_ROB4"" -SeqNo 1";
      Write WritePars, " ";
      Write WritePars, "      -Routine ""UserPowerOn"" -Shelf ""POWER_ON"" -Task ""T_PROC4"" -SeqNo 1";
    ENDIF
    Write WritePars, "#";
    Write Writepars, "CAB_TASK_MODULES:";
    Write WritePars, " ";
    Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob1/r1_style_1.mod"" -ModName ""R1_Style"\NoNewLine;
    Write WritePars, "_1""\\";
    Write WritePars, "      -Task ""T_ROB1""";
    Write WritePars, " ";
    Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob1/r1_data.mod"" -ModName ""R1_data"""\NoNewLine;
    Write WritePars, "\\";
    Write WritePars, "      -Task ""T_ROB1""";
    Write WritePars, " ";
    Write WritePars, "      -File ""HOME:/../../ifwc/home/t_proc1/p1user.mod"" -ModName ""P1USER"""\NoNewLine;
    Write WritePars, "\\";
    Write WritePars, "      -Task ""T_PROC1""";
    Write WritePars, " ";
    IF nSerialNoLow1 = 500328 THEN
        Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob1/setup_r1.mod"" -ModName ""Setup_R1"""\NoNewLine;
      Write WritePars, "\\";
      Write WritePars, "      -Task ""T_ROB1""";
      Write WritePars, " ";
        Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob2/pressctr.mod"" -ModName ""PressCtr"""\NoNewLine;
      Write WritePars, "\\";
      Write WritePars, "      -Task ""T_ROB2""";
      Write WritePars, " ";
        Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob2/setup_r2.mod"" -ModName ""Setup_R2"""\NoNewLine;
      Write WritePars, "\\";
      Write WritePars, "      -Task ""T_ROB2""";
    ENDIF
    ! If system is a multi-move write parameters for ROB 2-4 if present
      IF nSerialNoLow2 > 0 THEN
      Write WritePars, " ";
      Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob2/r2_style_1.mod"" -ModName ""R2_Style"\NoNewLine;
      Write WritePars, "_1""\\";
      Write WritePars, "      -Task ""T_ROB2""";
      Write WritePars, " ";
      Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob2/r2_data.mod"" -ModName ""R2_data"""\NoNewLine;
      Write WritePars, "\\";
      Write WritePars, "      -Task ""T_ROB2""";
      ENDIF
      IF nSerialNoLow3 > 0 THEN
      Write WritePars, " ";
      Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob3/r3_style_1.mod"" -ModName ""R3_Style"\NoNewLine;
      Write WritePars, "_1""\\";
      Write WritePars, "      -Task ""T_ROB3""";
      Write WritePars, " ";
      Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob3/r3_data.mod"" -ModName ""R3_data"""\NoNewLine;
      Write WritePars, "\\";
      Write WritePars, "      -Task ""T_ROB3""";
      ENDIF
      IF nSerialNoLow4 > 0 THEN
      Write WritePars, " ";
      Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob4/r4_style_1.mod"" -ModName ""R4_Style"\NoNewLine;
      Write WritePars, "_1""\\";
      Write WritePars, "      -Task ""T_ROB4""";
      Write WritePars, " ";
      Write WritePars, "      -File ""HOME:/../../ifwc/home/t_rob4/r4_data.mod"" -ModName ""R4_data"""\NoNewLine;
      Write WritePars, "\\";
      Write WritePars, "      -Task ""T_ROB4""";
      ENDIF
      Close WritePars;
      WaitTime 0.1;
    TPWrite "Writing standard IFWC mmcuser.cfg file...";
    Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars;
    Write WritePars, " MMC:CFG_1.0:5:0::";
    Write WritePars, " #";
    Write WritePars, " # -------------------------------------------------------------------";
    Write WritePars, " # MMCUSER.CFG";
    Write WritePars, " # -------------------------------------------------------------------";
    Write WritePars, " #";
    Write WritePars, " # Description:  This config file defines the man machine interface";
    Write WritePars, " #               for user functions";
    Write WritePars, " #";
    Write WritePars, " # Change History:";
    Write WritePars, " # 11-18-2011 AJH Created";
    Write WritePars, " # 11-25-13 TKSE customized for Job#'s 5419-5420";
    Write WritePars, " #          Ford Cleveland engine plant #1";
    Write WritePars, " #";
    Write WritePars, " # -------------------------------------------------------------------";
    Write WritePars, " #";
    Write WritePars, " MMC_REAL_ROUTINE:";
    Write WritePars, "   -name ""GoToCalibPos"" -hidden";
    Write WritePars, "   -name ""SaveUserMod"" -hidden";
    Write WritePars, "   -name ""TraceUserMod"" -hidden";
    Write WritePars, " #";
    Write WritePars, " MMC_SERV_ROUT_STRUCT:";
    Write WritePars, "   -name ""GoToCalibPos""";
    Write WritePars, "   -name ""SaveUserMod""";
    Write WritePars, "   -name ""TraceUserMod""";
    Close WritePars;
    WaitTime 0.1;
    TPWrite " Writing robot specific mmcuser parameters...";
    TEST nSerialNoLow1
      CASE 100143:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_CmdRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_RunDownComplete"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_RunDownNotComplete"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_StepMode"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_StyleRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_DryCycle"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_MotorOn"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_Start"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StartMain"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_Stop"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StopCycle"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfConveyor"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_CmdComp"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MoveHome"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyCmd"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyStyle"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdySync"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqClose_Gripper"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqOpen_Gripper"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_AutoOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_CycleOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_HeartBeat"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_RunchOk"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_CmdCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_DecCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_DecCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_FaultCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_PathSeg"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_StyleCode"" -signal_type ""GO""";
      CASE 100144:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_BackOutComplete"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_BackOutNotComplete"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ToolChgrLocked"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ToolChgrUnlocked"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfStation1"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfStation2"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfStation3"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfStation4"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ServicePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_CmdCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_StyleCode"" -signal_type ""GO""";
      CASE 100205:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""di24BrakeCheckOK1"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""di25SyncCheckOK1"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_MoveHome"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_OverrideOn"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StartMain"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StopCycle"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_BrakeReq"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_SyncReq"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_BrakePassOK"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_SyncPassOK"" -signal_type ""DO""";
      CASE 500300:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_CmdRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_Start"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StartMain"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_Stop"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StopCycle"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfConveyor"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_CmdComp"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyCmd"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyStyle"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdySync"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_HeartBeat"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_RunchOk"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_CmdCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_DecCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_DecCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_StyleCode"" -signal_type ""GO""";
      CASE 500301:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_CmdRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_Start"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StartMain"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_Stop"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diSYS_StopCycle"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfConveyor"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_CmdComp"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyCmd"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyStyle"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdySync"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_HeartBeat"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_RunchOk"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_CmdCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_DecCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_DecCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_StyleCode"" -signal_type ""GO""";
      CASE 500355:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper2Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper2Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_PP_Gripper1"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfConveyor"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfStation2"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MotSupOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MoveHome"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MoveService"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyCmd"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqClose_Gripper1"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqOpen_Gripper1"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ServicePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_HeartBeat"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_StyleCode"" -signal_type ""GO""";
      CASE 500373:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_CmdRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ExtRsp"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ToolChgrLocked"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ToolChgrUnlocked"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_StyleRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_MoveHome"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_MoveService"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_MoveUser"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_NoHoldCycle"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_StepMode"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ClearOfConveyor"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_CmdComp"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_FaultActive"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MotSupOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MotSupTrigg"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyCmd"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyStyle"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdySync"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqClose_Gripper"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqClose_Gripper"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ServicePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_AutoOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_CycleOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_HeartBeat"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_CmdCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_DecCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_DecCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_FaultCode"" -signal_type ""GO""";
       CASE 500383:
        Open "/hd0a/ifwc/syspar/" \File:="mmcuser.cfg", WritePars\Append;
        Write WritePars, " #";
        Write Writepars, " IO_MOST_COMMON:";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_CmdRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper1Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper2Closed"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_Gripper2Open"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_PP_Gripper1"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_PP_Gripper2"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_StepMode"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_StyleRdy"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ToolChgrLocked"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""diR1_ToolChgrUnlocked"" -signal_type ""DI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_Clr_DropOffPosB"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_Clr_KeyupA1"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_Clr_KeyupA2"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_Clr_PickUpPosA"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_CmdComp"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_FaultActive"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_HomePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MotSupOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_MotSupTrigg"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyCmd"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdyStyle"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_RdySync"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqClose_Gripper1"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqClose_Gripper2"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqOpen_Gripper1"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ReqOpen_Gripper2"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doR1_ServicePos"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_AutoOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_CycleOn"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""doSYS_HeartBeat"" -signal_type ""DO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_CmdCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_DecCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""giR1_StyleCode"" -signal_type ""GI""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_CmdCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_DecCode"" -signal_type ""GO""";
        Write WritePars, " ";
        Write WritePars, "      -signal_name ""goR1_FaultCode"" -signal_type ""GO""";
    ENDTEST
      Close WritePars;
      Close WriteMod;
      ! Open IODev to write in robot specific p1user.mod
      Open "/hd0a/ifwc/home/t_proc1/p1user.mod", WriteMod;
      TPWrite "Writing standard IFWC p1user.mod...";
      ! Writes standard header for all p1user.mod
      Write WriteMod, "%%%";
      Write WriteMod, "  VERSION:1";
      Write WriteMod, "  LANGUAGE:ENGLISH";
      Write WriteMod, "%%%";
      Write WriteMod, " ";
      Write WriteMod, "MODULE P1USER";
      Write WriteMod, "! Custom module for commissioning " + stSerialNoHigh1\NoNewLine;
      Write WriteMod, "-"\Num:=nSerialNoLow1;
      Write WriteMod, "!";
      Write WriteMod, "! Installed "\NoNewLine;
      Write WriteMod, CDate() + " " + CTime();
      Write WriteMod, "! Created for TKSE job numbers 5419 and 5420,";
      Write WriteMod, "! Ford Cleveland engine plant #1";
      Write WriteMod, "! By TKSE, Auburn Hills, MI.";
      Write WriteMod, "!------------------------------------------------------------------------------";
      ! Robot serial number specific data, routines, mainly for
      ! MH traps to set payload
      TPWrite "Writing robot specific p1user.mod code...";
      TEST stSerialNoHigh1
        CASE "7600":
          TEST nSerialNoLow1
            CASE 100141:
              Write WriteMod, "    !=========================== Loaddata ===========================";
              Write WriteMod, "    !";
              Write WriteMod, "  PERS loaddata LoadGrip1:=[131.2,[310.1,249.2,61.1],[1,0,0,0],4.5,7.2,8.7];";
              Write WriteMod, "  ! MODULE NAME, VALID, LOADED";
              Write WriteMod, "  TASK PERS procModInfo_t ProcModTable{2} := [";
              Write WriteMod, "    [""MODNAME"", FALSE, FALSE],";
              Write WriteMod, "    [""MODNAME"", FALSE, FALSE]";
              Write WriteMod, "  ];";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "!#endregion";
              Write WriteMod, " ";
              Write WriteMod, "!#region CODE_DECL_SECTION";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "  PROC UserPowerOn()";
              Write WriteMod, "    ! Shelf routine run when the robot is restarted (warm start or cold start)";
              Write WriteMod, "    ! from a remote client or by power on.";
              Write WriteMod, "  ENDPROC";
              Write WriteMod, " ";
              Write WriteMod, "  !----------------------------------------------------------------------------";
              Write WriteMod, "  PROC UserScanPROC()";
              Write WriteMod, "    ! Called During Background Process Scan";
              Write WriteMod, "    IF diSYS_DryCycle = 1 THEN";
              Write WriteMod, "     GripLoad Load0;";
              Write WriteMod, "     RETURN;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, "    IF diR1_Gripper1Closed = 1 THEN";
              Write WriteMod, "      GripLoad LoadGrip1;";
              Write WriteMod, "     RETURN;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, "    IF diR1_Gripper1Open = 1 THEN";
              Write WriteMod, "      GripLoad Load0;";
              Write WriteMod, "     RETURN;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, "    WaitTime 0.10;";
              Write WriteMod, "  ENDPROC";
              Write WriteMod, " ";        
              Write WriteMod, " ";  
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "!#endregion";
            CASE 100143:
              Write WriteMod, "  !=========================== Loaddata ===========================";
              Write WriteMod, "  !";
              Write WriteMod, "  PERS loaddata LoadAdaptor:=[37.3,[60,242.9,82.6],[1,0,0,0],3.5,0,1.2];";
              Write WriteMod, "  PERS loaddata LoadEngine:=[107,[258.1,253.5,48.7],[1,0,0,0],14.1,11.2,2.9];";
              Write WriteMod, "  ! MODULE NAME, VALID, LOADED";
              Write WriteMod, "  TASK PERS procModInfo_t ProcModTable{2} := [";
              Write WriteMod, "    [""MODNAME"", FALSE, FALSE],";
              Write WriteMod, "    [""MODNAME"", FALSE, FALSE]";
              Write WriteMod, "  ];";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "!#endregion";
              Write WriteMod, " ";
              Write WriteMod, "!#region CODE_DECL_SECTION";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "  PROC UserPowerOn()";
              Write WriteMod, "    ! Shelf routine run when the robot is restarted (warm start or cold start)";
              Write WriteMod, "    ! from a remote client or by power on.";
              Write WriteMod, "  ENDPROC";
              Write WriteMod, " ";
              Write WriteMod, "  !----------------------------------------------------------------------------";
              Write WriteMod, "  PROC UserScanPROC()";
              Write WriteMod, "    ! Called During Background Process Scan";
              Write WriteMod, "    IF diSYS_DryCycle = 1 THEN";
              Write WriteMod, "      GripLoad Load0;";
              Write WriteMod, "      RETURN;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, ") = 1;";
              Write WriteMod, "    IF DInput(diR1_RunDownComplete) = 1 AND DInput(diR1_Gripper1Closed) = 1 "\NoNewLine;
              Write WriteMod, "THEN";
              Write WriteMod, "      GripLoad LoadEngine;";
              Write WriteMod, "    ELSEIF DInput(diR1_RunDownNotComplete) = 1 AND DInput(diR1_Gripper1Closed)"\NoNewLine;
              Write WriteMod, " = 1 THEN";
              Write WriteMod, "      GripLoad LoadAdaptor;";
              Write WriteMod, "    ELSEIF DInput(diR1_Gripper1Open) = 1 THEN";
              Write WriteMod, "      GripLoad Load0;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, "    WaitTime 0.10;";
              Write WriteMod, "  ENDPROC";
               Write WriteMod, " ";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "!#endregion";
          CASE 100144:
              Write WriteMod, "  !=========================== Loaddata ===========================";
              Write WriteMod, "  !";
              Write WriteMod, "  PERS loaddata LoadAdaptor:=[38.3,[92.1,244.3,142.9],[1,0,0,0],4.8,3.9,2.5];";
              Write WriteMod, "  PERS loaddata LoadEngine:=[167.4,[-195.4,248.8,309.1],[1,0,0,0],39.5,26.2,21."\NoNewLine;
              Write WriteMod, "2];";
              Write WriteMod, "  ! MODULE NAME, VALID, LOADED";
              Write WriteMod, "  TASK PERS procModInfo_t ProcModTable{2} := [";
              Write WriteMod, "    [""MODNAME"", FALSE, FALSE],";
              Write WriteMod, "    [""MODNAME"", FALSE, FALSE]";
              Write WriteMod, "  ];";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "!#endregion";
            Write WriteMod, " ";
              Write WriteMod, "!#region CODE_DECL_SECTION";
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "  PROC UserPowerOn()";
              Write WriteMod, "    ! Shelf routine run when the robot is restarted (warm start or cold start)";
              Write WriteMod, "    ! from a remote client or by power on.";
              Write WriteMod, "  ENDPROC";
              Write WriteMod, " ";
              Write WriteMod, "  !----------------------------------------------------------------------------";
              Write WriteMod, "  PROC UserScanPROC()";
              Write WriteMod, "    ! Called During Background Process Scan";
              Write WriteMod, "    IF diSYS_DryCycle = 1 THEN";
              Write WriteMod, "      GripLoad Load0;";
              Write WriteMod, "      RETURN;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, "    WaitUntil DInput(diR1_BackOutNotComplete) = 1 OR DInput(diR1_BackOutComplete"\NoNewLine;
              Write WriteMod, ") = 1;";
              Write WriteMod, "    IF DInput(diR1_BackOutNotComplete) = 1 AND DInput(diR1_Gripper1Closed) = 1 "\NoNewLine;
              Write WriteMod, "THEN";
              Write WriteMod, "      GripLoad LoadEngine;";
              Write WriteMod, "    ELSEIF DInput(diR1_BackOutComplete) = 1 AND DInput(diR1_Gripper1Closed) = 1"\NoNewLine;
              Write WriteMod, " THEN";
              Write WriteMod, "      GripLoad LoadAdaptor;";
              Write WriteMod, "    ELSEIF DInput(diR1_Gripper1Open) = 1 THEN";
              Write WriteMod, "      GripLoad Load0;";
              Write WriteMod, "    ENDIF";
              Write WriteMod, "    WaitTime 0.10;";
              Write WriteMod, "  ENDPROC";
              Write WriteMod, " ";        
              Write WriteMod, "!------------------------------------------------------------------------------";
              Write WriteMod, "!#endregion";
          ENDTEST
    TPWrite "Finished setting up robot system...";
    TPWrite "An I_Start is required for changes to    take effect.";
  ERROR
    TEST ERRNO
        CASE ERR_CFG_NOTFND:
          TRYNEXT;
      DEFAULT:
          STOP;
            ! CHECK SYSTEM VARIABLE ERRNO
            RETURN;
      ENDTEST
  ENDPROC
ENDMODULE
Display More
  • Share
  • Previous Article Picking part 2, from a tray of parts.
  • Next Article Another program that writes a program.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Categories

  • ABB Robotics

Archive

  1. 2020 (4)
    1. May (1)
    2. March (1)
    3. January (2)
  2. 2019 (3)
    1. November (3)
      • A program that can write a program!
      • Picking part 2, from a tray of parts.
      • Picking from a cart of parts

Tags

  • Programming
  • abb
  • RAPID
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download