1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. Stäubli & Bosch Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

CS8C TX90

  • PSCrane
  • September 12, 2024 at 11:04 AM
  • Thread is Unresolved
  • PSCrane
    Posts
    4
    • September 12, 2024 at 11:04 AM
    • #1

    Hiya,

    I've managed to acquire a TX90 with a CS8C controller. I'm familiar with using them as I have 3 others, however these are integrated into machines so all I do is tweak the positionings and create new products by copying existing ones.

    My Dilemma:

    This robot doesn't seem to have much in it. It's no longer integrated into the machine and is now stand-a-lone at the moment. I've managed to get it to move.

    What I'm used to seeing is for example is up to 6 movements up to a position, and up to 6 movements away.

    pFeeder [6]

    pFeeder [5]

    pFeeder [4]

    pFeeder [3]

    pFeeder [2]

    pFeeder [1]

    pFeeder [0]

    + The arm has gone from [6] - [0] to a position to collect

    GRAB

    + Arm has grabbed the part

    pFeederOut[0]

    pFeederOut[1]

    pFeederOut[2]

    pFeederOut[3]

    pFeederOut[4]

    pFeederOut[5]

    pFeederOut[6]

    + Arm has moved from [0] - [6] ready to move to the next location to do it again.

    (This is an example from another arm I use and how it works)


    What I'm hoping to achieve is to build this robot into a machine. I'm more than happy (I think) with sorting it's positions and movements, but what I'm unsure about is how do you tell the arm what sequence to follow, IE Move to A - grab - move to b, release etc?


    I have a VAL3 reference manual and a CS8C manual but I haven't really found anything that describes how to achieve this.


    I appreciate this could be a lengthy but all support would be much appreciated.


    Thanks,

  • Fubini September 12, 2024 at 12:00 PM

    Approved the thread.
  • TygerDawg
    Reactions Received
    6
    Trophies
    3
    Posts
    187
    • September 17, 2024 at 4:46 AM
    • #2

    Here is a code snippet from a long time ago (2008). This is a motion subroutine of a larger application. It moves workpieces from one stack to another stack.

    The statements instruct the robot to move through a sequence of various locations with approaches, linear moves, retracts, and transitions between locations.

    Much more than this, and you'll need a VAL3 training class.


    <code>begin
    // ==========================================================================
    // PROGRAM RightToLeft()
    //
    //OPERATION:
    // Starting point jSafe0 in pgm PickAndPut()
    // pick from RIGHT stack to LEFT stack
    // assumes RIGHT stack is full, LEFT stack is empty
    //
    //called from: PickAndPut()
    //
    //incoming parms: none
    //outgoing parms: none
    //
    //by XXX 6mar08
    // ===========================================================================
    nFirstIndex=nStackQuantity-1
    nLastIndex=0
    nStep=-1
    //
    for nIndex=nFirstIndex to nLastIndex step nStep
    pMovePoint=pRightStackBot
    pMovePoint.trsf=pRightStackBot.trsf*{0,0,-nPlateThickness*nIndex,0,0,0}
    //
    movej(jOverRightStack,tPickTool,mTraverseSpeed)
    movel(appro(pMovePoint,trApproach20),tPickTool,mApproachSpeed)
    movel(pMovePoint,tPickTool,mPickSpeed)
    waitEndMove()
    io:bOut0=true
    delay(nPickDelayTime)
    movel(appro(pMovePoint,trApproach20),tPickTool,mPickSpeed)
    movel(pOverRightStack,tPickTool,mCarrySpeed)
    movej(jRightShowPlate,tPickTool,mCarrySpeed)
    //movej(jOverRightStack,tPickTool,mTraverseSpeed)
    //movej(jRightShowPlate,tPickTool,mTraverseSpeed)
    //
    movej(jMiddle,tPickTool,mCarrySpeed)
    movej(jLeftShowPlate,tPickTool,mCarrySpeed)
    //
    // traverse across from RIGHT STACK to LEFT STACK and place the plate
    //
    pMovePoint=appro(pLeftStackBot,{0,0,(nPlateThickness*(nStackQuantity-nIndex))+nDelta,0,0,0})
    pMovePoint.trsf=pLeftStackBot.trsf*{0,0,(-nPlateThickness*(nStackQuantity-nIndex))+nDelta,0,0,0}
    movej(jOverLeftStack,tPickTool,mCarrySpeed)
    //movej(jLeftShowPlate,tPickTool,mTraverseSpeed)
    //movej(jOverLeftStack,tPickTool,mTraverseSpeed)
    movel(appro(pMovePoint,trApproach20),tPickTool,mApproachSpeed)
    movel(pMovePoint,tPickTool,mPutSpeed)
    waitEndMove()
    io:bOut0=false
    delay(nPutDelayTime)
    io:valve1=true
    movel(appro(pMovePoint,trApproach20),tPickTool,mApproachSpeed)
    waitEndMove()
    io:valve1=false
    movel(pOverLeftStack,tPickTool,mTraverseSpeed)
    //movej(jOverLeftStack,tPickTool,mTraverseSpeed)
    //
    endFor
    end

    </code>

    TygerDawg

    Blue Technik

    http://www.bluetechnik.com

  • PSCrane
    Posts
    4
    • September 17, 2024 at 12:55 PM
    • #3

    Hi TygerDawg,


    Thanks for the info. I've been watching some videos and I do have a working program, as seen below:

    begin

    resetMotion ()

    movej(jStart, tClmp, mPickFeeder)

    movej(pPickFeeder[4], tClamp, mPickFeeder)

    movej(pPickFeeder[3], tClamp, mPickFeeder)

    movej(pPickFeeder[2], tClamp, mPickFeeder)

    movej(pPickFeeder[1], tClamp, mPickFeeder)

    movej(pPickFeeder[0], tClamp, mPickFeeder)

    close(tClamp)

    movej(pPickFeeder[0], tClamp, mPickFeeder)

    movej(pPickFeeder[1], tClamp, mPickFeeder)

    movej(pPickFeeder[2], tClamp, mPickFeeder)

    movej(pPickFeeder[3], tClamp, mPickFeeder)

    movej(pPickFeeder[4], tClamp, mPickFeeder)

    waitEndMove ()

    movej(jWaitTower, tClamp, mPickFeeder)

    waitEndMove()

    movel(pPlaceTower[4], tClamp, mPlaceTower)

    movel(pPlaceTower[3], tClamp, mPlaceTower)

    movel(pPlaceTower[2], tClamp, mPlaceTower)

    movel(pPlaceTower[1], tClamp, mPlaceTower)

    movel(pPlaceTower[0], tClamp, mPlaceTower)

    waitEndMove ()

    open(tClamp)

    waitEndMove ()

    movel(pPlaceTower[0], tClamp, mPlaceTower)

    movel(pPlaceTower[1], tClamp, mPlaceTower)

    movel(pPlaceTower[2], tClamp, mPlaceTower)

    movel(pPlaceTower[3], tClamp, mPlaceTower)

    movel(pPlaceTower[4], tClamp, mPlaceTower)

    movej(jWaitTower, tClamp, mPlaceTower)

    waitEndMove ()

    movej(JWaitFeeder, tClamp, mPlaceTower)

    waitEndMove ()

    move(jStart, tClamp, mPlaceTower)

    waitEndMove ()

    end


    So naturally I load up the product, press run, and the arm does it's thing.


    What i now need to do is start introducing signal inputs/outputs.


    So for example, when the robot has got to PPickFeeder[0], i need to tell the other part of the machine that the robot grippers have close, and to open the other set, so the robot can continue it's path to placing the part into pPlaceTower[0].


    I also need to tell the arm to reject a part if it's only gripped one and not 2 (If it seems a particular input as they will be in series.


    Is it possible to have several areas of different code, so for example area pPickFeeder executes, and once it's satisfied, we can then give it a signal to execute another code for pPlaceTower, or something like pReject dependant on some other inputs, ie if it hasn't successfully collected the part?


    Thanks,

  • aknezevi.proton
    Reactions Received
    5
    Trophies
    1
    Posts
    73
    • September 18, 2024 at 12:18 PM
    • #4

    You can do this with tasks. Have one general task which runs to see which is the current status of motion and of inputs and otputs and either wait for update or run a subtask to command the robot to do something.

    For example you could have several tasts:

    Code
    COMM_IN
    MAIN
    COMM_OUT
    SUBTASK_1
    SUBTASK_2
    ...

    Then your MAIN task would choose what the robot does. For example SUBTASK_1 could be "go to part", once that is completed you then have a subtask "close the gripper". You then have a task "open the gripper if you have not gripped properly" and so on.

  • PSCrane
    Posts
    4
    • September 18, 2024 at 7:07 PM
    • #5

    Hi aknezevi.proton


    Thanks for the info. I don't suppose you'd be able to elaborate and explain in more detail, ie how to execute tasks, what the code line is?

    I'm not a coder but I'm willing to learn.

    I'm trying to get a date for a course from Staubli but I'm not having much success, and can't really find much in the way of coding this?


    I'm currently doing all the coding on the pendant itself at the moment. I've found all the inputs and outputs the original user used, and I think I've figured how to get it to look for a signal, it's just everything in between.


    I've put all this code into 'start' under products->programs at the moment.


    I really appreciate the help so far!

    Thanks,

  • aknezevi.proton
    Reactions Received
    5
    Trophies
    1
    Posts
    73
    • September 19, 2024 at 8:36 AM
    • #6

    Since you said you have the VAL3 reference manual search for function taskCreate. That creates task that will run immediately. You often, but not always, want main tasks to never stop running, so you want them all, i.e. their programs (everything under products->programs), to be akin to:

    Code
    while true
    ...
    endWhile

    Other tasks, i.e. subprograms, will not have while true ... endWhile since you want to execute them once only.

    As for "start" program it is a program that is run when you press "RUN" on the pendant, i.e. when the application is started. In it you want to create all the tasks that you will run all the time. For that you will need to create more programs for those tasks to call. Documentations is pretty good after that.

    As for calling programs you can use call program instruction. Or taskCreate and black magic and taskKill.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Similar Threads

  • Staubli CS8C

    • Esrevnad1776
    • July 13, 2024 at 5:21 PM
    • Stäubli & Bosch Robot Forum
  • movement anticipation

    • shahryar
    • April 26, 2024 at 7:32 PM
    • Stäubli & Bosch Robot Forum
  • 2011 Staubli RX160 - which controller - CS8?

    • HeyItsMe
    • March 18, 2024 at 2:19 AM
    • Stäubli & Bosch Robot Forum
  • Cs8c cannot detect USB and safety error System event SAFETY-ThermoOpened.(0x1738)

    • JosuGaztelu
    • November 15, 2023 at 9:35 AM
    • Stäubli & Bosch Robot Forum
  • Staubli TX90 CS8C Controller

    • DeBussy
    • October 26, 2023 at 3:22 AM
    • Stäubli & Bosch Robot Forum
  • Many Industrial robots / Second hand robots for sale. Stäubli CS8CHP TX200 For sale. Please contact me.

    • Frank Weiss
    • May 4, 2022 at 12:58 AM
    • Stäubli & Bosch Robot Forum
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download