RobotStudio event

HRESULT: 0x80070005 (E_ACCESSDENIED) while trying to connect to controller

Options
Hi,

I'm getting an error while trying to connect to any controller (have tried 2 different ones so far):

- Win7 SP1 x64, using Robot Studio 6.05 SP1 (first use, just installed, tried x64 and x86 version, with admin rights, firewall configuration...)
- Direct Connection to the respective controller via the LAN service port
- Controller is listed as available, RobotStudio 5.12.04 (the other one had a different version)
- When trying to connect I get 3 different errors (when trying to connect multiple times)

<div>RobotStudio .NET exception: Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))</div><div>============================================</div><div>Base exception: UnauthorizedAccessException</div><div>Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.IRobComCtrlServerFactory.CreateRobComCtrlServer(String ipaddr, String systemid, RobCtrlType ctrltype, UInt32 netscanid, Object pUnkNetScan, Guid riid)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.Desktop.RobPlatformDesktop.CreateCommServer(String ipAddress, String systemId, RobCtrlType ctrlType, UInt32 netscanId)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.RobControllerConnection.<>c__DisplayClass123_0.<Connect>b__0(TaskCompletionSource`1 tcs, List`1 _)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.Internal.TaskUtils.<>c__DisplayClass0_0`1.<Run>b__0()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)</div><div>&nbsp; &nbsp;bei ABB.Robotics.RobotStudio.Controllers.ControllerManager.<AddController>d__35.MoveNext()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei ABB.Robotics.RobotStudio.Controllers.ControllerManager.<AddController>d__35.MoveNext()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)</div><div>&nbsp; &nbsp;bei RobotStudio.UI.Controller.Commands.ConnectController.<TryConnect>d__2.MoveNext()</div>
   
<div>RobotStudio .NET exception: Der Remoteprozeduraufruf ist fehlgeschlagen. (Ausnahme von HRESULT: 0x800706BE)</div><div>============================================</div><div>Base exception: COMException</div><div>Der Remoteprozeduraufruf ist fehlgeschlagen. (Ausnahme von HRESULT: 0x800706BE)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.IRobComCtrlServer2.Connect(RobInParams& probin, String url, String option, Int32 processId)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.Desktop.RobCommServerDesktop.Connect(UInt32 uid, Action`1 continuation, String ipAddress, RobCtrlType ctrlType)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.RobControllerConnection.<>c__DisplayClass123_0.<Connect>b__0(TaskCompletionSource`1 tcs, List`1 _)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.Internal.TaskUtils.<>c__DisplayClass0_0`1.<Run>b__0()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)</div><div>&nbsp; &nbsp;bei ABB.Robotics.RobotStudio.Controllers.ControllerManager.<AddController>d__35.MoveNext()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei ABB.Robotics.RobotStudio.Controllers.ControllerManager.<AddController>d__35.MoveNext()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)</div><div>&nbsp; &nbsp;bei RobotStudio.UI.Controller.Commands.ConnectController.<TryConnect>d__2.MoveNext()</div>

<div>&nbsp; &nbsp;RobotStudio .NET exception: Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)</div><div>============================================</div><div>Base exception: COMException</div><div>Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.IRobComCtrlServerFactory.CreateRobComCtrlServer(String ipaddr, String systemid, RobCtrlType ctrltype, UInt32 netscanid, Object pUnkNetScan, Guid riid)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.Desktop.RobPlatformDesktop.CreateCommServer(String ipAddress, String systemId, RobCtrlType ctrlType, UInt32 netscanId)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.RobControllerConnection.<>c__DisplayClass123_0.<Connect>b__0(TaskCompletionSource`1 tcs, List`1 _)</div><div>&nbsp; &nbsp;bei RobotStudio.Services.RobApi.Internal.TaskUtils.<>c__DisplayClass0_0`1.<Run>b__0()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)</div><div>&nbsp; &nbsp;bei ABB.Robotics.RobotStudio.Controllers.ControllerManager.<AddController>d__35.MoveNext()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei ABB.Robotics.RobotStudio.Controllers.ControllerManager.<AddController>d__35.MoveNext()</div><div>--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)</div><div>&nbsp; &nbsp;bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)</div><div>&nbsp; &nbsp;bei RobotStudio.UI.Controller.Commands.ConnectController.<TryConnect>d__2.MoveNext()</div>

- after the second error, the program crashes after a certain amount of time due to instability

any suggestion on solving this issue?

Best regards
Bastian

Comments

  • Johannes Weiman
    Options
    Are the robot communication services running (RobComCtrlServer and RobNetScanHost)?
    Johannes Weiman
    Software Engineer
    RobotStudio Team, ABB Robotics
  • B_Inselmann
    Options
    Yes, both are set to manual startup and are running at the moment
  • Adnan
    Adnan admin
    Options

    Hi Bastian,

    For the first error:

    RobotStudio .NET exception: Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))

    is simply that you don't have access eather you are not admin on the pc or miss permision.

    For the second error:

    RobotStudio .NET exception: Der Remoteprozeduraufruf ist fehlgeschlagen. (Ausnahme von HRESULT: 0x800706BE)

    How does it work using direct connect to the service port? If the direct connection works but the LAN connect does not then it looks like a security limitations error. This could be caused in many ways, with these being the most common:
    1. FireWall
    2. Port blocking
    3. Remote Procedure call blocking

    For the firewall you could set up exceptions for the [RobComCtrlServer] and [RobNetScanHost] processes. Their service names are [ABB Industrial Robot Communication Server] and [ABB Industrial Robot Discovery Server] respectively.
    If they are blocking ports they check the ports list.
    If they are blocking [Remote Procedure Call] there is usually a setting in the firewall.

    For the third error:

    RobotStudio .NET exception: Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)

     I think the problem is due to the NetScan process not being shut down correctly. Before trying to connect the controller, start TaskManager and shut down "RobNetScanHost.exe" and "RobComCtrlServer.exe". You may need to click "show processes from all users" in order to see them.

    Hopefully it helps!!

    /Adnan

  • B_Inselmann
    edited May 2017
    Options
    Thank you for the input, Adnan.

    The services are started as local system and I have started the RobotStudio with admin rights.
    Firewall rules are set for incoming and outgoing traffic on all ports for both services.

    As the detection of the controller works, I think the RobNetScanHost works correctly (and it stops working throwing RPC errors if I restart the service while RobotStudio is active).

    My interpretation would be, as the errors always come in consecutive order:

    1. CreateRobComCtrlServer does crash somehow due to missing rights or some interference with other programs or services (which may block ports/files/resources)
    2. 
    IRobComCtrlServer2.Connect does not work, as the instance of RobComCtrlServer created during error 1 is corrupted
    3. - x. 
    CreateRobComCtrlServer can not be called anymore as the service has lost connection to the program

    If I restart the RobComCtrlServer service after starting RobotStudio but before connecting, I will "only" get the RPC-Error without any crashing (which led to my interpretaton of error 3)

    My main question would be:
    what causes the first crash at the first call of 
    CreateRobComCtrlServer? I've tried to remote debug RobotStudio with Visual Studio 2012, but didn't get any reaction. 

    Edit: I've ran some "netstat" and none of the ports I've found in the port forwarding recommendations is already being listened...
  • B_Inselmann
    Options
    Same PC, virtual machine with clean Win7 x64 installation:
    No errors at all... :smiley:
  • Adnan
    Options
    Good B)