RobotStudio event

Editing module offline with text editor

Hello -

I'm have an S4C+ - actually, lots of them Smile.  I have some editing that requires more than I care to do through the Teach Pendant.  So, I'd like to edit some modules offline on my PC using UltraEdit. Using the Teach pendant, do I just save the desired modules to a floppy to copy into my PC for editing? Then do I just copy the updated modules back to the robot's hd0a using the TP's File Manager overwriting the old one? Is there anything else I need to do to have the robot use the updated modules?

If this is not right please just explain the proper procedure.

Also, when doing a backup, the prg files in the Home folder don't match the program modules in the Task0Rapid folder. Is it necessary to manually save every module before doing a backup? What gets saved when you save the Program vs saving individual modules? I'm sorta confused about how to be sure when I do a backup I'm getting all the current files.

Sorry for all these stupid questions Cry

Thanks for help.


Comments

  • Hi,

     

    You are right about program editing. Just save your program or module from the TeachPendant, transfer it to your PC for editing, transfer it back and load it into the controller again when your are done.

     

    As for backup: A backup contains the files in the HOME and SYSPAR folders as well as the programs currently in controller memory. There is no automatic connection between the programs in your HOME folder and the programs in controller memory. The HOME folder is simply a place where the user can store files of interest. Again, the backup will contain both the programs of the HOME folder AND the programs in controller memory, there is no contradiction here. The programs in controller memory are the ones you will find in the TASKX/RAPID folder, where X=0,1,2..., depending on how many tasks you have in your controller.

     

    However, you can configure the controller to automatically load modules from the HOME folder upon cold-start. This is typically done for background tasks. Note that a cold start generally wipes away all programs and configuration changes in the controller. But the controller can be configured to load pre-defined configuration from SYSPAR and programs from HOME during cold-start. This feature is typically used to load programs into your background tasks. But for your regular production program, you probably don't want to load it automatically from the HOME folder. The reason is that there is likely to be adjustments done to the production program. Besides, the program in controller memory will be part of the backup anyway. 

     

    A program is defined as all program modules that are part of the current task. The program modules constitue the program. There may also be system modules, where you may want to store information that is related to your environment and production equipment rather than the more part-related program. But is up to the programmer to decide what should go into the program modules and what should go into the system modules.

     

     
    Henrik Berlin
    ABB
  • Thank you for this info Henry. I was confused by the prg files in Home. 

    Just out of curiosity, after Opening an edited module (using the TP), does the robot internally compile this new version of the module and bind it into the overall program (like an executable on a PC) or does it use an "interpreter", executing the modules line by line directly from the .mod files?  
  • Hi!
     

    I'll try to explain.

    When a RAPID module is loaded into the controller memory (for example using the TP) it is built, which can be described as compiled and link. However it is not compiled into machine code/byte code as on a PC.

    Instead the structure of the module is stored in an internal format, in memory.

    This makes is possible to do modifications without restarting the program, for example "ModPos".

     

    The link step makes sure all references to for example procedures and data can be resolved. Lets say you load a module where you call a global procedure. The link step check that the procedure exists. Even if there are unresolved references the module will still be loaded into memory.

     

    Coming back to your question, if RAPID is interpreted.

    It is kind of intepreted, but not from the source files directly. Instead it is interpreted from the internal representation that is stored in memory.

     

    The internal representation can be edited in memory to a certain extent. That is what you are doing when you edit using the TP, to for example teach a position, or change a data value. Such changes can be made without loosing the program pointer.

     

    If the changes are to big, or you load a new module (in a given task) the program pointer is reset, because its impossible to keep the callstack and stack variables after such modifications.

     

    Not that the loading of modules/linking, handling of the progra pointer etc, is done per task.

     

    I hope I made it more clear for you, and not made you more confusedWink

     

    Best Regards, Niklas Skoglund
    ABB Robotics

    Developer Center
    RobotStudio Blog
  • Thank you! I understand a little better now. It's not important that I understand the lower level - I was just curious, having a good bit of low level experience with other types of computer systems (ring 0 code - device drivers, etc).