Understanding the cycle of an application

  • Hello everybody.


    What brings me here today is a question that I am sure you guys will be able to help me with.


    We are working with a Staubli RX130 CS8 that performs a cycle as it follows: unloads a part from one machine, loads the part into another machine, takes it out and puts it in the washing machine.


    Each of these loops is a different subroutine, with a switch case format.



    I want to try to understand how the robot goes from one program to another, since within these programs there is no call instruction that interconnects them.


    The most certain is to be by the PLC.


    I ask this question because I want to accomplish a simple task.


    The robot only has to pick up the part and drop it in the washing machine, ignoring the two machines inbetween.


    I thought of doing the following: Introduce an input with a switch, and in the program of the first machine, do an

    " switch Routine(Machine_1)

    case 1

    if io:ignoremachine==true

    movej(washingmachine)

    open(pince1)

    break

    endswitch


    else

    (continue switch as normally does)

    endif


    This causes the robot to ignore the first machine. If I introduce this condition in all subroutines, will the PLC and the Robot be able to continue the process without major conflicts and ignore all the machines?

  • Hello,

    Plc send order on Digital inputs :

    - io:E_Dech_Ader

    - io:E_Dec_Der ...


    The principal program call different subprogram for each task.


    All the subprogram are build on Grafcet structure (typical Switch Case...)

    The active Step is contain in output group like io:G7_Chg_Cint__A.

    In each step, the Jump to another step is programmed with DioGet(StepVariable,NextStep)


    It's very special (to use Output group to memorize the active Step) but I think it's to inform, in real time, the Plc


    ...

  • How does the principal program call the other programs on its own?


    For example, the principal program only calls G7_Chg_Cint if io:E_Chg_Cint==true or DioGet(io:G7_Chg_Cint) != 1


    Since the program hasn’t been called yet, io:G7_Chg_Cint=1 (right?) so it has to use the other condition. Where does the io:E_Chg_Cint come from? I thought it came from the plc because I can’t find it anywhere on the robot

  • It's difficult to give you all the information without all the programs.

    Quote


    For example, the principal program only calls G7_Chg_Cint if io:E_Chg_Cint==true or DioGet(io:G7_Chg_Cint) != 1

    Right.

    Quote


    Since the program hasn’t been called yet, io:G7_Chg_Cint=1 (right?)

    Not sure.

    In your example program (G7_Chg_Cint_A), the grafcet Step variable is "io:G7_Chg_Cint_A" (probably an array of digital output because the program read and write this variable). In the picture, we don't see the initialization of this variable. Without reset, the output keep the last value. Necessary the program need to initialize it somewhere...

    Quote


    Where does the io:E_Chg_Cint come from? I thought it came from the plc because I can’t find it anywhere on the robot

    Probably from the PLC...or direct from the machine.


    Some question to help you :

    Do you have the SRS (Stäubli Robotic Suite) ?

    Witch version is installed on your CS8 (Menu / Control Panel / Version / System on SP1) ?

    Witch type of IO use you controller (Menu / Control Panel / IO) ?



  • Probably from the PLC...or direct from the machine.


    You are absolutely correct.

    I managed to get access to the PLC program and found all I was looking for. The cycle is controlled by the plc with set resets.

    The plc decides which routine the robot has to execute. And it receives feedback from the machines. So the method I was thinking to use( ignoring the machines using the robot routines) will not work because the PLC will be stuck waiting for feedback from the machines.



    I

    I don’t have SRS

    The other info I can only give you Monday when I’m back to work.


    Best regards

  • It's difficult to analyze the application direct on the controller.

    You can make a backup (on Usb Key) to read the files with an editor but the best way is to install SRS. Without any license, you can read all the programs and find variable...

    Without SRS, the definition of all the global variables are in the file NameOfApplication.dtx (in the folder Usr/UsrApp/NameOfApplication/). It's Xml file type so, you can read it with Excel (if you have it)...

Advertising from our partners