Posts by roulv

    As I said before and @SAABoholic put together, the simpler way is to use a global constant.

    If you want to go with function solution, you can make it even simpler. You don't need to pass parameters or temp values, just return it directly.

    1. FUNC robtarget NULLFRAME()
    2. RETURN [[0,0,0],[1,0,0,0],[-1,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    3. ENDFUNC

    I don't know why you need that but... just create a constant with default value and assign your data to it. You can even can it nullframe if you want to have the same approach as kuka.

    The biggest change was not in RobotStudio, it was in RobotWare after version 6.

    In the past there was additional options to add more features to the system, now ABB changed to rpk package system.

    The old one was a folder which you have to copy to the mediapool, the new one is a compressed file that you have to install from RobotStudio addin tab. In the old system was possible to copy the folder from inside robot flash, in the new one it's not possible. And also with the old one it was possible to change files inside, the new one is checked against tampering.

    So this PRDM is an additional package for RobotWare 6, to create this system you have to get this package from the creator.

    I was certain that the name prdm was not strange to me. It's the ifwc, a framework used in Ford powertrain plants. I have it here, but for copyright issues I can't share it here, so you have to ask your customer or ABB US about it.

    As stated by Lemster68, you should try turn your motors on and move the robot first. World zones are only evaluated when the motors are moved by the system.

    There's another big problem with your setup. Don't use wzsphdef for home position. In first place it's affected by your current tcp and second you can rotate your tcp around the sphere and still be inside, it could get worse if you have a track.

    The correct way is to use WzHomeJointDef which is not affected by the tcp.


    I don't know why you were not able to do it thru RS, but for sure you problem with system failure was because of trust level parameter. By default this parameter is set to sysfail, it means when you have a problem in the program and it stop running the system will fail. So when you created the task it was empty and could not start and the system goes to sysfail.

    There's 2 alternatives, change safetylevel to NoSafety or create it first as normal and then change to static or semistatic.

    Use alias to create your own datatype:
    ALIAS num CylinderCommand;
    ALIAS num CylinderStatus;

    For struct you can use RECORD, but it should go after ALIAS:
    RECORD StructCylinder
    CylinderCommand Command;
    CylinderStatus Status;

    And then create constants for each enum (I have appended a prefix because is not possible to use the same name).
    CONST CylinderCommand cmHOME:=1;
    CONST CylinderCommand cmWORK:=2;
    CONST CylinderCommand cmNONE:=3;
    CONST CylinderStatus csHOME:=1;
    CONST CylinderStatus csWORK:=2;
    CONST CylinderStatus csMOVE_HOME:=3;
    CONST CylinderStatus csMOVE_WORK:=4;
    CONST CylinderStatus csTO_HOME:=5;
    CONST CylinderStatus csTO_WORK:=6;
    CONST CylinderStatus csALM_SQ:=7;
    CONST CylinderStatus csALM_POS:=8;
    CONST CylinderStatus csEXCLUDED:=9;

    You are not sending form data as specified in documentation.

    You need:
    -POST request for URL /rw/rapid/execution
    -with url param action=start
    -And form data for regain, execmode, cycle, condition, stopatbp and alltaskbytsp

    The error 50417 has nothing to do with resolver signal. It means there's over temperature inside drive unit on controller. As you told you have this error even on system startup, probably you have a defective drive unit.
    You have to replace drive unit or send this one to repair.

    eax_f is used because your conveyor tracking system is configured to be external joint number 6.

    If you need to put a value on eax_f it means your conveyor is activated when you are running the program, but is not activated when you are trying to modify this position.
    So when you modify the point it don't get external axis information because conveyor is deactivated, but when you try to run the program it complain about missing external axis information because conveyor is activated.

    And remember that different from Fanuc, where you need fancy options to upload a ASCII program to the controller, in ABB you can save you program in a flash drive (or in diskette if it's old robot), edit in any text editor and then load again in the robot.
    And as Robot Freak told, you can download RobotStudio for free form ABB site. Of course you told it's a IRB6400 which is a old robot, where you can't connect directly using RobotStudio, but you always can use RobotStudio to just edit your program offline.

    Probably your assembly instance are wrong in PLC.
    Check if Safety Input connection has:
    -Input assembly instance equal configured on SafeMove.
    -Input size equal configured on SafeMove.
    -Output assembly instance must be null (199)
    -Configuration assembly instance must be null (199)

    Check if Safety Output connection has:
    -Output assembly instance equal configured on SafeMove.
    -Output size equal configured on SafeMove.
    -Input assembly instance must be null (199)

    Check if Standard connection has:
    -Input assembly instance equal configured on SafeMove.
    -Input size equal configured on SafeMove.
    -Output assembly instance equal configured on SafeMove.
    -Output size equal configured on SafeMove.
    -Configuration assembly instance must be null (199)
    -Configuration size must be 0

    A function must return a value, so you have to assign the value of the function to something, like this:

    Don't forget to include () when calling a function even if you don't have parameters.

    to use signals as a array you have to first declare a array of signals and attach to your signals, like this: