ORiN 2 - Programming in Python 2.7 / 3 (CAO Engine)

Modified on Fri, 11 Jun, 2021 at 4:16 PM

**Attention** : Read this resource material carefully and in its entirety before use, to ensure it is understood and used properly.  Failure to properly follow the instructions in the resource materials DPAM provides may result in damage to your equipment.  As a result, by using the resource materials, you are assuming the risks associated with modifying your equipment. DENSO holds no liability, implied or otherwise, for damage, injury or any legal responsibility incurred, directly or indirectly from the use of the resource materials, including any loss of data or damage to property which may occur by your use of the resource materials. The use of the resource materials are not recommended unless you have technical knowledge and functional experience with the equipment and related software. DENSO is unable to provide support, remote or otherwise, for the information included in the resource material, nor for the ancillary topics relating to the information included in the resource materials. Therefore, if you are not fully comfortable with it, we strongly recommend that you send your unit to one of our Regional Support Centers for repair.  The information contained in the resource materials are subject to change at the sole discretion of DPAM. 


In ORiN2 SDK, DCOM (Distributed Component Object Model) of Microsoft Corporation is adopted as a distributed object technology. The DCOM based CAO can be used from various program languages such as C++, JAVA, and Visual Basic.

This article is meant to help to gather information on resources that can help you get started with interfacing with the CAO Engine in Python. This article is not intended to aid you with programming in Python. 

Tools and Parts needed

The following sample code is provided "AS IS" under the MIT License. Programming support service of Visual Basic is out of warranty. Please note that we do not provide any programming support service beyond basic setup and troubleshooting. 

Previous Steps...

Please make sure that you have reviewed the ORiN2 - Overview article and that your RC controller is properly setup. You can use the CAOTester to make sure that your PC is ready to communicate with the controller. 

Set up your controller to accept messages from the PC. 

ORiN 2 - Robot Controller Setup (RC8 / RC8A / COBOTTA)
Test communication using CAO Tester applicationORiN 2 - Operation check using CAOTester (CAO Engine)
Install the Python for Windows Extensions files

Python needs to have the pywin32 files to have access to the Windows API of CAO.

GitHub Page

Programming References

At this point, you should be ready to begin programming your application to interface with your robot controller. When connecting to the controller, you will need to specify the ORiN provider you are trying to use to establish communication. The provider differs based on the robot controller you are using. RC5, RC7, and RC7M controllers use the NetwoRC provider. RC8, RC8A, and COBOTTA controllers us the RC8 provider.

NetwoRC provider directory


RC8 provider directory


Please consult the Owner's manual for information on how to program your DENSO Robot or details on specific robot commands. 

Programming using the Provider

The following samples are for performing various basic but essential operations. The samples are for connecting using the RC8 Provider.

For more information you can reference Section 4 RC8 Programming Using the Provider from the RC8 Provider User's Guide PDF document

Variable Sample

The sample program uses the automatically created workspace and reads/writes the variable I11 (the 11th global integer variable).

IP should be set to the value for the target controller. This sample program uses the following value. IP:

# coding:utf-8
import win32com.client

# Create CAO engine handler (start CAO.exe)
eng = win32com.client.Dispatch("CAO.CaoEngine")

# Creating a CAO controller handler
ctrl = eng.Workspaces(0).AddController("RC8", "CaoProv.DENSO.RC8", "", "Server=")

# Creating a Variable object (Global Variable Integer I11)
I11 = ctrl.AddVariable("I11", "")

# Read Value and print
print I11.Value

# Write new value by adding one to current value
I11.Value = I11.Value + 1

# Read Value and print
print I11.Value

Owner's Manual Reference

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article