Posts by SomeTekk

    There is a CR2032 battery in at least one type of controller, one with a DSQC639 main CPU, not certain about newer Main CPUs, or for different main CPU architectures, e.g. Compact, OmniCore, etc.


    I believe its primary purpose is to support CMOS.


    Here's the error that will be seen if the voltage drops too low:


    37053, Low CMOS battery voltage level

    Description

    The CMOS battery on the computer board is empty.

    Consequences

    On restart, the system will use an erroneous setup or no restart will be

    possible. (All that has been experienced here is a loss of date & time)

    Probable causes

    Faulty battery.

    Recommended actions

    1. Replace the CMOS battery



    A tweaked example from the RAPID Reference manual worked at my place of work, granted it is a RW 5.15 system. Instead of writing to the screen it appends to a text file. It would take just a bit of tweakery to write to a different device.


    PROC rReadIO()

    list_index:=0;

    WHILE list_index<>END_OF_LIST DO

    ReadCfgData "/EIO/EIO_SIGNAL/Unit/PLC","Name",read_str,

    \ListNo:=list_index;

    IF read_str<>"" THEN

    Open "ToolPC:"\File:="IO_Names.txt",io_DeviceName\Append;

    Write io_DeviceName,read_str;

    Close io_DeviceName;

    ENDIF

    ENDWHILE

    ENDPROC

    jtCurrTarget:=0614_1550{1};


    The value inside the curly braces could be a variable to allow varying target loading.


    VAR num nArrayPos;


    Stuff...

    nArrayPos:=1;

    jtCurrTarget:=0614_1550{nArrayPos};

    More Stuff...

    INCR nArrayPos;

    jtCurrTarget:=0614_1550{nArrayPos};

    Even More stuff ...

    I do not want to have my interpretations send you down a wrong path.

    I suggest checking the Application manual EtherNet/IP Scanner/Adapter, Chapter 2. There are a number of connection scenarios shown visually.

    For an EIP network that was made to work for several IRC5's the guidance pasted below is from the manual specified above (Ch. 7 FAQ's):


    The desired industrial network and factory network is on the same logical network but is it possible to have one logical network for the factory network and one logical network for the Ethernet/IP network? Is it possible to have a switch that separates the traffic?

    1 In the I/O configuration under Industrial Network, configure the IP address,

    subnet mask, gateway and destination of the Ethernet/IP network.

    2 Restart the controller using the restart mode Start Boot Application.

    3 Change the network settings (these are used for the WAN connector) and

    choose the correct system.

    4 Make sure that these two networks are on separate subnets.

    5 Restart the controller.


    Both EIP and RS networking were done on LAN3 (or maybe WAN—not sure because it was years ago and haven't done anything similar since), EIP on one subnet handled with RAPID parameters, and RobotStudio IP setting done with the Boot Application.

    Hi thanks for all the helpful info.

    Any syntax as to how I can read each joint using CJointT?

    And assuming all this should be done in a cyclic task polling every 0.5sec ?

    And example references you can point me to would be great.

    Data declarations and parameters not included.


    WHILE TRUE DO


    jT1:=CJointT(\TaskRef:=T_YourTask_Id);

    nRobotJoint1ToPLC:=jT1.robax.rax_1;

    .

    .

    .

    nRobotJoint6ToPLC:=jT1.robax.rax_6;

    SetGO go_Robax1,nRobotJoint1ToPLC;

    .

    .

    .

    SetGO go_Robax6,nRobotJoint6ToPLC;


    WaitTime 0.25;


    ENDWHILE

    Preface: It has been many years (15+) since I touched an M94a controller and remember very little of the Shutdown options, or really much else.


    It sounds like the system is not creating an image.bin file when powered off, have the batteries for the RWM been examined, or different CPU boards been tried?


    Lemster, Skooter, and SAABholic are much more reliable with good advice for systems of this vintage.

    TuneMaster and Test Signal Viewer (available via downloading) are free. Signal Analyzer Online - licensed RS only - , to the best of my knowledge, does not measure current or torque, only power.

    *Make a backup*


    In Topic: Motion, Type: Stress Duty Cycle, the parameter Torque Absolute Max is able to be edited on external axes only.

    Note: It may not be possible to edit MU300 files. I am not certain but there is a very real possibility that the MOC files for ABB Motor Units may be encrypted and unable to be changed, just like manipulator files.

    1st - Which version of control and software?


    If it is RW 5.15 or later (not sure about earlier) then the base RW functionality Electronically Linked Motors (ELM) might be able to be used. Read about setting it up in the "Application manual Servo motor control", in the ELM chapter.

    If it is 6.X, then ELM is a RW base function, also it is described in the "Application manual Controller software IRC5". Read about setting it up in the ELM section in the RobotWare-OS chapter.


    Not yet worked with RW 7.X


    The Stand Alone Controller Additional Option is very likely to be needed.

    Try reflashing the TPU:


    From another ABB Forum:


    As you power up the controller you can try to hold stop button + programmable key 1 (hold the buttons down until you see red text indicating image missing or something similar then release them). If you have hold-to-run buttons at the bottom of the flexpendant you should hold one of these as well.

    This will reload the image on the TPU.

    If this doesnt help then you need to contact ABB to fix the flash disk on the controller which may be corrupt.

    The function is:


    EulerZYX


    VAR num nAngleZ;

    VAR num nAngleY;

    VAR num nAngleX;

    VAR pose obMyObject;

    ...

    nAngleZ:= EulerZYX(\Z, obMyObject.rot);

    nAngleY:= EulerZYX(\Y, obMyObject.rot);

    nAngleX:= EulerZYX(\X, obMyObject.rot);



    I've used PoseMult on WorkObjects before. I'm not sure about WorldZones, but any RAPID variable that uses the standard POS and ROT sub-variables should be controllable using PoseMult.


    There's also a RAPID command I can't recall offhand that converts between QQQQ and RxRyRz. Using that in combination with PoseMult should allow you to rotate any "pose" object in undestandable angles, rather than trying to do Quaternion math by hand.