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

  • 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,

  • I'm pretty sure this is a RoboGuide thing. I had a similar issue several months ago. Basically, RG ties certain of the virtual controller's UIs to RG's own buttons (like the Start and Fault Reset buttons in the top menu bar), and as such, nothing else can get "custody" of those UIs, even if you set things up in ways that would work on a real robot.


    Basically, if your other UIs work as expected, these "protected" UIs should also work if you copy the same mapping into a real robot.

  • 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

Advertising from our partners