Posts by mil3k

    csabizalan I was going to suggest very similar solution.


    Woebot You can create a job exactly as csabizalan suggested and use it as a storage of positions which you can call from your main job with a parameter pointing to the step# with position you are interested.


    Let me use csabizalan's example:

    //name:PointJob

    0000 NOP

    0001 Jump *LABEL

    0002

    0003 0001 MOVJ VJ=100.00 PL=0

    0004

    0005 *LABEL

    0006 GETARG LI000 IARG#(1) //Store first argument to first local integer variable

    0007 GETPOS LPX000 STEP#(LI000)

    0008 CNVRT PX000 LPX000 UF#(1) TL#(1) //You can use local variable instead of (1) and control with call parameters: 2 and 3

    0009 END


    From the top bar turn on display step number for better visibility. You can have up to 999 steps.

    Create at least one local Integer variable to make GETARG# instruction available in the Instruction List and to store the call parameter.

    Store your positions between Jump*LABEL and *LABEL, (I suggest to turn on line comment for each point).

    Create main job where you will call PointsJob.jbl from:


    Switch I000 (or Alias)

    CASE 1

    SET LI000 1

    CASE 2

    SET LI000 2 //Step# were the point is stored

    SET LI001 1 //UF# for converting to

    ...

    DEFAULT

    MSG: Something went wrong, mate!

    PAUSE

    ENDSWITCH


    CALL JOB: PointJob (LI000) or CALL JOB: PointJob (LI000,LI001) //You can use up to 8 arguments.


    Unfortunately, the number of steps and they order must be under strict control and can not be removed without messing steps with higher numbers. To make life easier I suggest to use as step 1 HOME position and use 1 as call argument set in CASE which point you want to delete.

    In other words, when you open CIO.PRG and search for the input you want to use check if it is linked with command STR or GSTR:

    STR #20010

    OUT #30010

    or

    GSTR #20010

    GOUT #30010


    The first example links one bit of EXT input #20010 to EXT output #30010

    The second one links one byte () of EXT inputs #20010 to #20017 to EXT output #30010 to #30017

    Bits #xxxx8 and xxxx9 doesn't exist in Yaskawa robots, so the next group (byte) starts from #xxx20


    There is BMOV instruction on a top of that, to link bigger number of I/O in one go.

    STR #70017

    BMOV #20010,297,#30010


    Auxiliary relay #70017 is used by system as a marker of "CONTROL POWER ON COMPLETED (NORMALITY ON)". System powered up without problems.

    BMOV instruction is an output and something must be used as an input. #70017 in the example it is used for that purpose.

    So the example means:

    "If Control Power On is completed without problems then link (map) 297 consecutive bytes of external inputs from #20010 to consecutive external outputs starting from #30010"

    Hi all,


    I used to edit names of inputs and outputs to custom in this file. This time I follow the same way as usual, open the file and to my surprise instead of indent or semi indent file I had one line with 33289 characters.

    I compared the file with another one I created few months ago. The same hardware Staubli D24403000 and D24403100 v0.18. The old one was in readable, indent format. Meanwhile between last time and now I updated SRS2019 to 2019.11.1 version.


    Did Staubli change a format of j206_SyCon_ENI.xml file from indent to one line?

    Does anyone have similar experience and found out work around?

    Will Staubli ever figure it out that change signal names to something meaningful (as per Profinet setting up process) is common practice for some users?


    BR

    mil3k

    Good morning everyone, I have a Scara TS2-40 and I need to raise a signal when I pass over an inspection camera so that it can take a photo of the object being taken. How could I implement this function? My idea was to create a frame above the camera and then with the here() function calculate the position of the tool with respect to this frame. Do you have other ideas for realizing this function? Is there any function you can pass me on for example that creates a cube? Is there anything ready-made in the robot's functionality?


    A greeting.

    samu1995 Search Staubli technical database for below example:

    "Monitoring the robot position in regards to an area"

    Robot's BF frame is not the same as cameras BF frame.

    If the camera is mounted on robot's flange than robots TF is cameras BF but you still need to calibrate camera to your tool. The controller can not convert offsets from camera if it doesn't know where it is in space in relation to robot's BF.

    Check iCube documentation how set camera to robot.

    The question is "What do you want realise ?", What type of Visual Component ?

    Visual Components was an example only. I would love to use VC for my own benefits, but financial controllers are thick like a wood that I gave up on trying to convince them.


    My main goal is to build a proof of concept for virtual commissioning of stand alone robot cell. Off course without a budget. :smiling_face:

    I have access to few OEM offline software packages and want to use combo of ROS and Gazebo or Unity with them to visualize the cell.

    Hello mil3K,

    There is different connection ti communicate with a robot (Soket, Opc server or Ua, Fieldbus...)

    At the moment it doesn't matter that much to me the method of communication as long as it works.

    I know there is OPC/UA server licence as plugin for SRS, but following this route I would prefer to use client on SRS and connect to external OPC/UA server run on another device.

    Socket I never use it and don't understand how to use it, but one of my colleagues is very willing to write some "coupling gate" using APIs. I'm assuming that he would be willing to use it.

    Fieldbus, especially ProfiNet would be my choice as this is the protocol we use in most of our machines.

    Can you give us the link to your video ?

    Have a nice day...


    Here is one of examples: Offline Programming Staubli CS8 with VC4.1

    I watched this tutorials many times, mostly after swear a lot on Staubli. :smiling_face:


    The video you suggested is not exactly what I was asking about, but it gave me an idea. On the video signals from the gripper are used to tell if the gripper is open or closed (at least that what I get from it).

    I'm wondering what would happen if I add another behaviour and connect it status to virtual signal?

    Hi All,

    I have picking a part routine with vacuum cups and part of it is searching for part. Robot moves to last known position and lower with 0.5 mm steps until vacuum generator return iPartPicked (all cups are sealed) signal. It works fine on real robots but I want to try this routine offline without bypassing.


    Is it possible and how to do it, if the answer is TRUE?


    I'm counting on your knowledge guys: Galet and ElEsgalho :smiling_face:

    Just for future record, quick "How to do":

    1. Open a cell with a controller.

    2. On the Cell Explorer/Data/Geometry tab right click on a controller.

    3. From dropped down menu choose Controller Configuration

    4. In the new window choose Add Ons tab and tick a box expansion.


    From now, a bunch of new commands starting with $ should be available for this controller.


    Originally, I din't have an Add Ons tab in my Controller Configuration at SRS2019.10.1. In that case contact your local Staubli technical support and ask for zip file with extension installer for your emulator. I didn't try yet, if I won't need to repeat the same installation in cells with different emulator version ( in my case different than s8.13.4-Cs9_BS2855)

    No you can't preview other programs during remote run.


    The only way that I know is edit during play, but it's not very user friendly and very easy to do more damage then it is worthen. There is no option to leave Edit (play) without writing changes.


    Save all files on an USB stick during production and read them offline is safest way... and more comfortable than read them on tinny screen.

    the CIO file collected from robot has .PRM extension. according to KDiff3, this file is binary the same as one from the previous robot

    My bad, the file I was talking about is CIOPRG.LST, not CIO.PRG (I corrected original post). It is text file with robots "PLC logic" and I/O mapping. Some time ago I prepared templates of that file and pasting it, along with IONAME.DAT, to the new robot and I/O mapping is done.

    Quote

    Q6 how is the IO mapping done on the robot side? Right now i have a cell that is duplicate of previous one. Robots talk to AB PLC over EthernetIP and while fieldbus is working, list of signals is not the same as on robots from previous cell. for example mode selection switch status used to be seen by PLC in the last three bits of byte0, now it is in byte4, job number is moved 2 bytes etc. of course we would like to see all cells use same mapping (and PLC program).

    panic mode

    I suppose the EXTERNAL IO ALLOCATION on the Ethernet card doesn't correspond with Concurrent IO (CIOPRG.LST file).

    Chapter 4.2 Setup Procedure of this manual Ethernet function manual describes setting up Ethernet card procedure in Maintenance Mode. (You may be asked by server to leave contact details, before it allows you to download/read pdf file)

    Concurrent I/O manual is another one which explains how to modify CIO.PRG file to your needs.



    btw. You double use Q10 number.

    Yes, I (we) would execute a loop like this without timer.


    Whoever wrote PC application left an error in it, missing CASE 0 or DEFAULT in this case is the error. I003 counter should be reset to 1, if the programmer decided to not use CASE 0 or DEFAULT. Although it is up to the person who does robot commissioning to find and fix these type of bugs.

Advertising from our partners