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
Everywhere
  • Everywhere
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Members
  3. zahid990170

Posts by zahid990170

  • unable to set DOs

    • zahid990170
    • July 29, 2022 at 11:35 AM

    thanks all for inputs. I read at a link

    Modbus with pymodbus - HackMD
    # Modbus with pymodbus Hence I can not understand well the usage from the [official document](http
    hackmd.io

    For 'single bit' you have DI, and DOs.

    And, when using modbus, DIs are 'read_only' whereas DOs are the ones that can be 'read and write'. Similarly, input registers are 'read_only' and holding registers can be 'read and write'.

    It was the reason to write to DOs using pymodbus library function.

    Further, modbus addresses in FANUC are one based, but in the library that we use pymodbus they are zero based.

    I noticed though, while

    $SNPX_ASG.$ADDRESS = 91

    $SNPX_ASG.$VAR_NAME = DO[5] (start point is DO[5], at address 90)


    I found out that in fact when I issued the following

    DEVICE_ID = 1

    ADDRESS_START = 90 # actual corresponds to DO[91] on Roboguide

    coil_response = client.write_coil(address=ADDRESS_START, value=True, unit=DEVICE_ID)

    I was able to TURN ON DO[91]. It should have been DO[5]?

    For current purpose, that is ok because I can use DO[91].

    thanks,

    Zahid

  • unable to set DOs

    • zahid990170
    • July 27, 2022 at 6:24 PM

    Hi,

    I am using SNPX option (HMI communication) with fanuc. The settings on the system variables are as follows:

    $SNPX_PARAM. $MODBUS_ADR = 1

    $SNPX_PARAM.$NUM_MODBUS = 2 (someone on the forum pointed out ,that this value should be above '0')

    Using SNPX_ASG parameter, I tried to map 15 digital outputs, DO[5] - DO[20] and 20 data registers, R[1] - R[20].

    For data registers,

    $SNPX_ASG.$ADDRESS = 51

    $SNPX_ASG.$SIZE = 40

    $SNPX_ASG.$VAR_NAME = R[1]

    $SNPX_ASG.$MULTIPLY = 1000


    For digital outputs,

    $SNPX_ASG.$ADDRESS = 91

    $SNPX_ASG.$SIZE = 15

    $SNPX_ASG.$VAR_NAME = DO[5]

    $SNPX_ASG.$MULTIPLY = 1

    I am using pymodbus to read/write the above. I can write to data registers, using the following:

    client.write_registers(start_address, payload, skip_encode=True, unit=1)

    I use the following to write a DO.

    coil_response = client.write_coil(address=93, value=True, unit=1)

    But, on TP screen, when I MENU -> I/O -> Digital

    DOs are always appearing OFF on TP.

    When I read the status for the DO that was just written,

    coil_response = client.read_coils(address=93, count=1, unit=DEVICE_ID)

    it shows me that it has been 'set'

    Why can't I see the changed status of DOs on TP, or are they really changed.


    thanks,

    Zahid

  • moving to a goal position received from an external program

    • zahid990170
    • July 27, 2022 at 3:24 PM

    I have a related question that I hinted at in my first post.

    At a given moment, robotic arm is at an arbitrary location. And, then we specify a target position for it to move to. How does it interpolate the trajectory between the start and the end. What safety concerns arise ? I worked a bit in ROS, where, firstly planning happens (finding a path from start to goal) that generates a trajectory and then the execution occurs.

    So far, I have only made very simple TP programs, within Roboguide. I jogged the robot to different locations, recorded the points, and then visualize the movements along those points.

    thanks for your time.

    zahid

  • moving to a goal position received from an external program

    • zahid990170
    • July 27, 2022 at 3:18 PM

    thank you hermann and HawkME for your inputs. I will now proceed with implementation and keep posted if something comes up.

    Zahid

  • moving to a goal position received from an external program

    • zahid990170
    • July 26, 2022 at 2:30 PM

    thanks HawkME,

    so basically, there is a vision system, that records the position of the manipulation object

    s (objects to be picked), and then sends the target position for the robotic arm to move to. After the robotic arm has moved to that position, gripper will hold the object, and later, the vision system will send another position where the object will be placed, and this position will also be sent via an external source. And the robotic arm has to move in response.

  • moving to a goal position received from an external program

    • zahid990170
    • July 25, 2022 at 5:30 PM

    Hi all,

    I am using Roboguide, and working with fanuc robots.

    I have small experience building TP programs. I need some pointers in the following scenario.

    Imagine that a program external to the robot and controller wants to send some target positions for the robot to move to. This position can be a Cartesian position (i.e., x, y, z), and in the world frame. I have some idea how to define position registers ( or points ) within the program where the arm can move to when the program is put to run.

    Here is what are my thoughts,

    I can use SNPX communication enabled, and I use some registers and DOs. Then, I can create a ModbusTcpClient and connect to the controller (virtual controller in this case inside the Roboguide). When, I need to send some target position ( 6-tuple, x, y, z, roll, pitch, yaw), I write 6 registers, and as well, turn ON a DO.

    I write a background program, that is always running. And, whenever it sees the particular DO in ON, it will read those registers and assign these to a particular position register and call the TP program which is responsible to move the robotic arm to that position.

    I am not certain if the above makes sense within fanuc, and within TP programs.

    Secondly, the robotic arm can be at any arbitrary position. How do we make sure that from there, it can actually go to the position that we have specified. How does it actually, interpolate the remaining trajectory points, from the current position until the goal position (if it can actually make that movement).

    Please, what is the better way to achieve the above task.

    thanks,

    Zahid

  • Send the current position of the robot through profinet

    • zahid990170
    • July 9, 2021 at 4:13 PM
    Quote from scotty

    If you use 10-5 then just use *10 multiplier in your logic.

    12.00053 - initial number.

    12 -> goes into register 1

    0.00053 -> goes into register 2

    100000 * 0.00053 = 53. Send this data to you destination device.

    Before you compile these 2 numbers together, do not forget to divide 53 / 100000 to get your real data.

    Display More

    thanks scotty

  • Send the current position of the robot through profinet

    • zahid990170
    • July 9, 2021 at 3:33 PM

    thank you jmd2777 that solved the issue.

  • Send the current position of the robot through profinet

    • zahid990170
    • July 9, 2021 at 1:04 PM

    rumblefish if you or another person reads this comment kindly answer.

    I have used the similar method of separating a float value such as 123.4567 into two parts, part "a" on the left side of the decimal point i.e., 123, and part "b" on the right side of the decimal point i.e., 4567. And, then I use reverse logic to reattach the two parts ("a" and "b"). However, I have a question,

    Imagine the value is 12.00053, now, part "a" = 12, part "b" = 53 instead of 00053. When I reattach, I can only get 12.53 instead of 12.00053. Is there any easy fix for the above using TP programming options. What other suggestions that can help me to receive the correct value.

    thanks for your help.

    Zahid

  • importing / adding and orienting igs components to workcell (Roboguide)

    • zahid990170
    • July 8, 2021 at 5:49 PM

    thank you all for the useful info. I have been away for working on other things. But, I will work on this task and report any issues faced.

    Zahid

  • pymodbus with fanuc AttributeError: object has no attribute 'registers'

    • zahid990170
    • July 7, 2021 at 2:39 PM

    thanks DaveP , it is set to 2. i.e., $SNPX_PARAM.$NUM_MODBUS = 2

  • pymodbus with fanuc AttributeError: object has no attribute 'registers'

    • zahid990170
    • July 7, 2021 at 1:16 PM

    Hi all,

    I am using Modbus TCP and SNPX option with FANUC. I am using pymodbus.

    When I am working with Roboguide, I can read and write registers, DO[x], R[x] and UI[x].

    However, when I tried to connect to actual robotic arm, using the same script it did not work

    request = client.read_holding_registers(start_address,4,unit=UNIT)

    vals = request.registers

    print(vals)


    I received this when I did not catch the exception.

    AttributeError: 'ExceptionResponse' object has no attribute 'registers'


    and, when I did catch

    ('Modbus Error:', <pymodbus.pdu.ExceptionResponse object at 0x7fb4b8901d50>)

    on the Teach Pendant, I see "Modbus TCP Server Error."

    but, the pymodbus says the connection is successful, however, as soon as the reading or writing, it gives immediately the error,

    AttributeError: 'ExceptionResponse' object has no attribute 'registers'(on the PC side)

    "Modbus TCP Server Error." (on TP)

    please, can somebody help in that.

    thanks,

    Zahid

  • a simple TP jogging program Singularity error

    • zahid990170
    • July 6, 2021 at 1:38 PM

    Hi all,

    I am using Roboguide v9.x. I am trying to write a simple TP jogging program. My robot model is M 10 i d / 12. When the robot loads, I can access the joint position by pressing POSN button on TP, and it is Joint = {J1,J2,J3,J4,J5,J6} = {0,0,0,0,0,0} . I create a program, and record this initial position as point 1. Then I use the jog keys on TP -X(J1), +X(J1), -Y(J2), +Y(J2), -Z(J3), +Z(J3) to jog the robot, the SHIFT key is pressed, and I record some points. However, when I try to run the program by pressing SHIFT + FWD, I get the error Singularity error. I tried just recording a few points, and it still does give me an error most of the time. Is there a way to create a program which is safe ( by construction).

    thanks,

    Zahid

  • importing / adding and orienting igs components to workcell (Roboguide)

    • zahid990170
    • June 30, 2021 at 4:34 PM

    adding further,

    this is how appears in Roboguide, We can see, here

    1. the robot that was added while initially creating the workcell using the wizard.
    2. the added components ( the CAD files)

    any suggestion how to fix the orientation.

    thanks,

  • importing / adding and orienting igs components to workcell (Roboguide)

    • zahid990170
    • June 30, 2021 at 4:05 PM

    Hi all,

    I am using Roboguide (HandlingPRO) v9.x.

    So far, I have created workcells, where I only have the robot model that I selected while following the cell-creation-wizard.

    Now, I need to add several components to the workcell. These component parts are given as ".igs" files. I have some questions about adding / importing these components / parts to the workcell.

    • on the left side pan in Roboguide, is listed several things such as Machines, Fixtures, Parts, Obstacles, Workers etc. Under which "heading", should I load these components. Does this choice have an effect on the validity of the workcell. I have put the components "Parts -> Add Part -> Single CAD file / Multiple CAD files.
    • the orientation of the loaded component does not appear right. FIrstly, the loaded component ( a big part representing the floor of the intended / real workcell) cuts through / goes through the grid floor on which appears the robot in Roboguide. How to fix this ? I attach the image.
    • I attach another view which shows the robot in this workcell.

    If you can help, in understanding how to adjust and fix the orientation so that, later I can begin to control the robot movement. The robot is supposed to be on the rail which is in the centre of the added components.

    greatly thankful for any help / suggestions / guidelines.

    Zahid

  • math functions inside TP program

    • zahid990170
    • June 28, 2021 at 11:04 AM

    thanks pdl , as I was looking into it, I used the same strategy.

  • math functions inside TP program

    • zahid990170
    • June 25, 2021 at 7:32 PM

    thanks pdl

    The option that you suggested is much simpler. However, do you know how to get rid of the decimal point. For example, if my register has the value 14.8721, I can get 14, and .8721 using the above method. Is there a way to get 14 and 8721. I tried multiplying by 1000 for example ( if I needed just 3 decimal places accuracy), but then, it will be 872.1.

    Zahid

  • unable to change UI[6] (UOP Start signal) from HMI device

    • zahid990170
    • June 18, 2021 at 4:32 PM

    thanks SkyeFire

    currently, I only have Roboguide available, but in next week, I could visit a facility to test on actual robotic arm. Hope that it shall work.

    Do you have any other suggestion to achieve the stop / resume behavior.

    I was trying another strategy:

    I was writing to Digital Output DO[15], when DO[15] is ON, stop the robot, when DO[15] is OFF, move the robot.

    This is a very simple Background Logic Program that monitors DO[15] and changes the $MCR_GRP[1].$HOLD variable. I went to MENU -> SYSTEM -> Variables -> MCR_GRP.HOLD and I could see that it was changing regularly (True / False) , being controlled from a remote program using Modbus TCP.

    However, the robotic arm, stopped the first time (DO[15] = ON, $MCR_GRP[1].$HOLD = True ), resumed (DO[15] = OFF $MCR_GRP[1].$HOLD = False ), then stopped (DO[15] = ON, $MCR_GRP[1].$HOLD = True ), but after it never moved again? The program pointer never advances .

    Any insights that you can share to this behavior.

    thanks for your inputs.

    Zahid

  • unable to change UI[6] (UOP Start signal) from HMI device

    • zahid990170
    • June 17, 2021 at 6:43 PM

    Hi,

    I am using Roboguide, and I used HMI Device option (SNPX R553) on my controller. I have setup some registers that I can read / write using modbus TCP.

    I have mapped UI[1-8] as flags. I want to write to UI[2] and UI[6] using write_coil function from pymodbus.

    I can update ( switch between ON / OFF UI[2])

    but UI[6] is always False,

    #pulse UI[6:Start]

    sleep(0.25)

    client.write_coil(20005,False, unit = 1)

    sleep(0.25)

    client.write_coil(20005,True, unit = 1)

    I have tried writing to just that flag, as a test. But, it does not change. I have a few questions if somebody could answer:

    • Is there any other settings that may be stopping it to change
    • could it be that I am testing in Roboguide and it only works in real robotic arm.
    • UI[6] must be True in order that paused robotic arm moves again?

    I want to use signals UI[2:Hold] and UI[6:Start] to pause and resume robotic arm movements.

    I can pause by sending a signal to UI[2:Hold]. However, when I clear that signal ( turn it ON ~ reverse logic) and pulse ( change from false to true ) the UI[6:Start], the arm does not resume motion. Infact, UI[6:Start]

    never gets a True value.

    thanks,

  • How to control UIs (UOP) from an HMI device

    • zahid990170
    • June 17, 2021 at 6:22 PM

    Hi HawkME , thanks for the input,
    I tried the suggestion, however,

    UI[6] is always False,

    I have tried writing to just that flag, as a test. But, it does not change. I have a few questions if somebody could answer:

    • Is there any other settings that may be stopping it to change
    • could it be that I am testing in Roboguide
    • UI[6] must be True in order that paused robotic arm moves again

    thanks,

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics
  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