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. Yaskawa Motoman 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

Cell with a large number of P Variables - YRC1000

  • Woebot
  • April 18, 2022 at 8:40 AM
  • Thread is Resolved
  • Woebot
    Reactions Received
    5
    Trophies
    3
    Posts
    24
    • April 18, 2022 at 8:40 AM
    • #1

    Hello All,


    Obligatory first post.


    I am in the planning stages for a cell with two machine tending robots, each with a YRC1000 controller. Because there is a pretty large number of workpieces that these robots will eventually handle, I want to have a large number of positions available (maybe eventually 500+ as the customer continues to add new workpieces to their catalogue, more than I could get by just expanding the memory allotment). Because of the shape of the workpiece’s modifying the p-variables by calculations/shifts are probably not going to work. The customer and I are going to have to teach the pick/place positions for each workpiece.


    I made a similar cell using a FANUC controller and my strategy was:

    -Robot gets part number from PLC

    -Robot runs a program specific to each part with the local positions for that particular workpiece which overwrites the global positions to be the same as the local positions taught for that part

    -Robot runs does it motion using the newly overwritten global positions. The customer can copy and paste new programs and update the local positions whenever they developed a new part.


    I was going to do something similar but Yaskawa local teach points are not numbered/nameable like the ones in a FANUC controller and I don’t think they can be worked on by commands like `GETE` etc.. I searched around the forum and didn’t see the same issue, I'm also pretty new to robotics so maybe I'm overlooking something obvious? Should I possibly be using a FTP system?

  • TSGIR
    Reactions Received
    81
    Trophies
    6
    Posts
    715
    • April 18, 2022 at 3:43 PM
    • #2

    It is possible increase the P-variable numbers.

    How many P-variables need in your project?

  • Lemster68
    Reactions Received
    301
    Trophies
    9
    Posts
    2,469
    Blog Articles
    7
    • April 18, 2022 at 3:57 PM
    • #3

    You could load var.dat files specific to groups of parts.

  • Woebot
    Reactions Received
    5
    Trophies
    3
    Posts
    24
    • April 19, 2022 at 12:52 AM
    • #4
    Quote from TSGIR

    It is possible increase the P-variable numbers.

    How many P-variables need in your project?

    Thank you, but I think it the max is 255 P variables after memory allotment expansion though, I'll will need more than that ( estimating between 500-800, similar positions just slighty different, also the customer will want to expand in the future).

    Quote from Lemster68

    You could load var.dat files specific to groups of parts.

    I like this approach, is it possible to load files via inform command?

  • 95devils
    Reactions Received
    234
    Trophies
    8
    Posts
    1,949
    • April 19, 2022 at 1:32 AM
    • #5

    You have a YRC. You can expanded the position variables to 1600. This is dependent on software version but it is definitely 1000 minimum.

    You can load jobs through the Inform List. Loadj and Savej, as long as you have the Visual DCI software option. The job has all the position variables taught in the job, their tool number, format, and values at the time of the save.

    Other files you would have to use some other method, like FTP.

    I know a thing or two, because I’ve seen a thing or two. Don't even ask about a third thing. I won't know it.

  • Woebot
    Reactions Received
    5
    Trophies
    3
    Posts
    24
    • April 19, 2022 at 4:28 AM
    • #6
    Quote from 95devils

    You have a YRC. You can expanded the position variables to 1600. This is dependent on software version but it is definitely 1000 minimum.

    You can load jobs through the Inform List. Loadj and Savej, as long as you have the Visual DCI software option. The job has all the position variables taught in the job, their tool number, format, and values at the time of the save.

    Other files you would have to use some other method, like FTP.

    OK thank you, I didn't know they could be expanded that far, 1000 should be enough to cover it and seems like the simpliest method. I'll look at the loadj and savej commands too.

  • Lemster68
    Reactions Received
    301
    Trophies
    9
    Posts
    2,469
    Blog Articles
    7
    • April 19, 2022 at 2:01 PM
    • #7

    Get a CMOS image before increasing the position variable allocation. Our DX 200 will get quite unhappy if you try to load a var.dat without the matching number of position variables as allocated, so be aware of that, too.

  • 95devils
    Reactions Received
    234
    Trophies
    8
    Posts
    1,949
    • April 19, 2022 at 5:12 PM
    • #8

    To expand you may be need save out jobs, varname.dat, var.dat, and uframe.cnd.

    I doubt your software is new enough to eliminate these. It may be though. Better to be safe than sorry.

    Using position variables on non-calculated moves has some advantages and disadvantages IMHO.

    I know a thing or two, because I’ve seen a thing or two. Don't even ask about a third thing. I won't know it.

  • WattUp
    Reactions Received
    7
    Posts
    96
    • April 19, 2022 at 8:40 PM
    • #9
    Quote from Woebot

    Hello All,


    Obligatory first post.


    I am in the planning stages for a cell with two machine tending robots, each with a YRC1000 controller. Because there is a pretty large number of workpieces that these robots will eventually handle, I want to have a large number of positions available (maybe eventually 500+ as the customer continues to add new workpieces to their catalogue, more than I could get by just expanding the memory allotment). Because of the shape of the workpiece’s modifying the p-variables by calculations/shifts are probably not going to work. The customer and I are going to have to teach the pick/place positions for each workpiece.


    I made a similar cell using a FANUC controller and my strategy was:

    -Robot gets part number from PLC

    -Robot runs a program specific to each part with the local positions for that particular workpiece which overwrites the global positions to be the same as the local positions taught for that part

    -Robot runs does it motion using the newly overwritten global positions. The customer can copy and paste new programs and update the local positions whenever they developed a new part.


    I was going to do something similar but Yaskawa local teach points are not numbered/nameable like the ones in a FANUC controller and I don’t think they can be worked on by commands like `GETE` etc.. I searched around the forum and didn’t see the same issue, I'm also pretty new to robotics so maybe I'm overlooking something obvious? Should I possibly be using a FTP system?

    Display More

    What about storing position values in the PLC and feeding the robot X,Y,Z,DX,DY,DZ over network?

    or if parts are similar, One general job with typeset specific offsets fed from PLC data? I use this method on several cells.

  • TSGIR
    Reactions Received
    81
    Trophies
    6
    Posts
    715
    • April 20, 2022 at 2:48 AM
    • #10
    Quote from WattUp

    What about storing position values in the PLC and feeding the robot X,Y,Z,DX,DY,DZ over network?

    or if parts are similar, One general job with typeset specific offsets fed from PLC data? I use this method on several cells.

    It is defficult you send Position data from robot to PLC or inverse.

    More network between robot and PLC can send/receive the digital input and output signal and couldn't send variables.

    Only method that i used before is using Modbus, with it you can send variables to PLC or receive from it.

    For send/receive the position values, at the first each position item (X,Y,Z,Rx,Ry,Rz) must take and copy to D variables and you send this value to PLC by Modbus.

  • WattUp
    Reactions Received
    7
    Posts
    96
    • April 20, 2022 at 6:14 PM
    • #11

    I store offset values from a baseline position per typeset.

    Then use a sete to load the values into a posvar.

    I have also done GETS, Invmat, Mulmat combo to get new posvar based on current position

  • Woebot
    Reactions Received
    5
    Trophies
    3
    Posts
    24
    • April 21, 2022 at 3:19 AM
    • #12
    Quote from Lemster68

    Get a CMOS image before increasing the position variable allocation. Our DX 200 will get quite unhappy if you try to load a var.dat without the matching number of position variables as allocated, so be aware of that, too.

    Luckily for me these are brand new robots, so I dont have to worry about losing data. (I'll do a full backup when I receive them in their factory state of course). Ive been burned by that before though, usually from programming offline and forgetting to expand the offline controller's variables.


    Quote from WattUp

    I store offset values from a baseline position per typeset.

    Then use a sete to load the values into a posvar.

    I have also done GETS, Invmat, Mulmat combo to get new posvar based on current position

    I've done this before too but usually for minor adjustments of positions through the touch panel (to allow the customer to make fine x/y/z adjustments to placement etc.)

    Thanks everyone for the suggestions. I visit the forum all the time but this is the first time Ive asked for help, lots of suggestions for me to try out. The controllers/bots wont show up for another 6 weeks, but I'll try to post what I ended up doing if its something interesting.

  • Jacopo Dinicoli
    Trophies
    1
    Posts
    6
    • December 11, 2023 at 12:05 PM
    • #13

    Hello, I'm having the following issue.


    I'm using a Shift for a very large number of positions, but I need to switch on a variable for each of those, using that variable to know when that position is reached: is there a way to use a counter to solve this problem without having to turn on each variable individually (referring to each position) in the program?

    Example:

    Positions = A1 B1 C1 D1 E1 F1.....
    I need to know when the robot goes to A1 (switching on the corresponding variable) then B1, then C1 ecc...

    I was thinking to just have an increasing counter at the end of each movement (A1 done = increase counter, B1 done = increase counter....)

    Could that counter be used to know that 1 = switch on A1; 2 = switch on B1; 3 = switch on C1, ecc... without having to manually link each variable to each movement?

    Because by linking each variable to each position would take a large job in yaskawa and a lot of conditions.

    Thank you in advance!

  • roboprof
    Reactions Received
    24
    Trophies
    4
    Posts
    471
    • December 12, 2023 at 9:05 PM
    • #14

    Have you tried using SWITCH - CASE for this option? Under INFORM LIST, use the SWITCH command.

    SWITCH I000 CASE 1

    then you can do options like

    CASE 2

    CASE 3

    CASE 4

    and put all of your shifts under the cases that you want.

  • Robodoc
    Reactions Received
    56
    Trophies
    7
    Posts
    1,061
    • December 16, 2023 at 4:29 PM
    • #15

    You can use indirect addressing.

    SHIFTON P[B001]. This will shift the value of the P-variable. The P-variable is determined by the value of the B001 variable.

    Robodoc

  • csabizalan
    Reactions Received
    1
    Trophies
    1
    Posts
    1
    • February 16, 2024 at 10:13 AM
    • #16
    Quote from Woebot

    Hello All,


    Obligatory first post.


    I am in the planning stages for a cell with two machine tending robots, each with a YRC1000 controller. Because there is a pretty large number of workpieces that these robots will eventually handle, I want to have a large number of positions available (maybe eventually 500+ as the customer continues to add new workpieces to their catalogue, more than I could get by just expanding the memory allotment). Because of the shape of the workpiece’s modifying the p-variables by calculations/shifts are probably not going to work. The customer and I are going to have to teach the pick/place positions for each workpiece.


    I made a similar cell using a FANUC controller and my strategy was:

    -Robot gets part number from PLC

    -Robot runs a program specific to each part with the local positions for that particular workpiece which overwrites the global positions to be the same as the local positions taught for that part

    -Robot runs does it motion using the newly overwritten global positions. The customer can copy and paste new programs and update the local positions whenever they developed a new part.


    I was going to do something similar but Yaskawa local teach points are not numbered/nameable like the ones in a FANUC controller and I don’t think they can be worked on by commands like `GETE` etc.. I searched around the forum and didn’t see the same issue, I'm also pretty new to robotics so maybe I'm overlooking something obvious? Should I possibly be using a FTP system?

    Display More

    Hi,

    You can make a teaching job with the positions. The end of the job you can use GETPOS to a local position variable and a CNVRT from local position variable to the global position variable. (you should switch on the enable step number)

    Of course you have to make a jump label before of the positions.

    For example:

    0000 NOP

    0001 Jump *LABEL

    0002

    0003 0001 MOVJ VJ=100.00 PL=0

    0004

    0005 *LABEL

    0006 GETPOS LPX000 STEP#(1)

    0007 CNVRT PX000 LPX000 UF#(1) TL#(1)

    0008 END

  • Woebot
    Reactions Received
    5
    Trophies
    3
    Posts
    24
    • February 17, 2024 at 9:07 AM
    • #17
    Quote from csabizalan

    Hi,

    You can make a teaching job with the positions. The end of the job you can use GETPOS to a local position variable and a CNVRT from local position variable to the global position variable. (you should switch on the enable step number)

    Of course you have to make a jump label before of the positions.

    For example:

    0000 NOP

    0001 Jump *LABEL

    0002

    0003 0001 MOVJ VJ=100.00 PL=0

    0004

    0005 *LABEL

    0006 GETPOS LPX000 STEP#(1)

    0007 CNVRT PX000 LPX000 UF#(1) TL#(1)

    0008 END

    Display More

    Interesting thank you, the original project I posted about is long done (I expanded the memory as another poster recomended up to 1600 PVARs), but I have a similar project coming up this spring, I'll definitly experiment with this, never seen getpos used that way, thanks

  • mil3k
    Reactions Received
    18
    Trophies
    3
    Posts
    75
    • February 23, 2024 at 12:50 AM
    • #18

    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.

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

Tags

  • YRC1000
  • Yaskawa Motoman
  • PVARIABLE
  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