Beiträge von JMF

    Try using USB port 4 inside the controller. I've had the same issue in the past and found that USB4 port is working and the others not. Also remember that when you want to access the USB through Rapid, you need to use RemovableDisk1 instruction.

    Read Up on CheckProgRef.


    Your error seems to be happening due to a data type that is used in various locations and when you want to remove the module, you cant because of the data that's being used somewhere.



    The OP was looking for a "single liner" type of coding to make it a bit more "elegant".


    Simply put, the way the way off p1.X:=p11.trans.x; p1.Y:=p11.trans.y;p1.Z:=p11.trans.z; is three lines of code for one rt. Its elegant as it is and the original way of doing things.


    In my example, if you save the TransVal PROC in a System module and make it "NOVIEW", you can use it anywhere and modify each parameter as you like without making the whole program excessively long.


    I the end, it is each to their own way of coding Rapid for them and the people working them. I just found it easier to explain to operators in the above way, if they need to change a parameter of a specific robtarget.


    Take the following code for example:


    rtShaft_1.trans.y:=nY;

    rtShaft_1.trans.z:=nZ;

    rtShaft_2.trans.y:=nY;

    rtShaft_2.trans.z:=nZ;

    rtShaft_3.trans.y:=nY;

    rtShaft_3.trans.z:=nZ;

    rtShaft_4.trans.y:=nY;

    rtShaft_4.trans.z:=nZ;

    rtShaft_5.trans.y:=nY;

    rtShaft_6.trans.z:=nZ;

    rtShaft_6.trans.y:=nY;

    rtShaft_6.trans.z:=nZ;


    Then the same code, just in a more readable and shorter way;


    TransVal\rt:=rtShaft_1\Trans_Y:=nY\Trans_Z:=nZ;

    TransVal\rt:=rtShaft_2\Trans_Y:=nY\Trans_Z:=nZ;

    TransVal\rt:=rtShaft_3\Trans_Y:=nY\Trans_Z:=nZ;

    TransVal\rt:=rtShaft_4\Trans_Y:=nY\Trans_Z:=nZ;

    TransVal\rt:=rtShaft_5\Trans_Y:=nY\Trans_Z:=nZ;

    TransVal\rt:=rtShaft_6\Trans_Y:=nY\Trans_Z:=nZ;


    For myself and my operator, this is a lot better and more understanding.


    As mentioned, each programmer uses their own way to make it simpler, better, more understandable for them.

    Look at certain conditions during the times that the Main Task should run and not run. When not running, let the main task run in a loop to run the whole time until the condition is changed. For instance. Task 1 (Main Task) will run from 08:00 - 16:00 and during that time, Task 2 can do anything, but after 16:00 the Main Task switch over to a loop (which will keep it active but not doing anything ) then Task 2 can still continue. Note the coding is very dirty. Hope this might help.

    Go to each position as it is currently stored and programmed, then move the Robot (Torch Center Point = Tool attached to the Robot) to the new position and modify the positions one by one. Safest way.


    OR


    If you know where the Wobj's are located, you can modify the Wobj's one by one and each robtarget, who is referenced to that specific wobj, will be reference to the new updated wobj frame. Quickest way if you know where the location of the wobj should be.


    BE CAREFUL PLEASE!!!! If you do not have the knowledge for this to be done correctly, please get someone to assist with the right knowledge in this because Hermann is correct. It could be life-threatening when done wrong or could lead to serious damages.

    Here is a example out of the manual if you haven't found it yet.


    Do you have any input from the external axis like signals to say the axis is working or not?


    If you have you can link that signal to a trap routine and a signal from the robot itself so that when the signal for the robot is reset the trap routine will reset the axis signal and stop.


    The following trap is for my external axis (non abb) and I have 3 input signals and 2 output signals to it connected through IO's.


    ex.

    Degrees. USE AT OWN RISK. THIS IS JUST A SAMPLE.

    I don't think there is a "restriction" but a limitation on what memory the controller uses to "keep" the code till it is pasted.


    Why not use RS?


    Otherwise try and divide the routine into smaller routines if possible and copy the smaller routines.