4. ORiNについて

ORiN : Open Resource interface for the Network

4.1. ORiNとは

ORiN協議会により制定された工場ITシステムのための標準ミドルウェア仕様の総称. このORiNを利用することにより,メーカや機種に依存しないアプリケーションを開発することができるようになります.

詳細はORiN協議会のページを参照ください。 https://www.orin.jp/

4.2. 特徴

様々なデバイスに接続のお作法を知らなくても接続、制御、情報の取得が可能になります。 同じ系統のデバイス(バージョン違い,後継機など)への接続の場合、プロバイダ名の変更のみで接続先の対応が可能になります。

例: RC8への接続の場合

import win32com.client
caoEng = win32com.client.Dispatch("CAO.CaoEngine")
caoCtrl = caoEng.Workspaces(0).AddController("", "CaoProv.DENSO.RC8", "", "Server=192.168.0.1")
VarI = caoCtrl.AddVariable("I1", "")
print("I[1]の現在の値は" + str(VarI.Value))

例: RC9への接続の場合

import win32com.client
caoEng = win32com.client.Dispatch("CAO.CaoEngine")
caoCtrl = caoEng.Workspaces(0).AddController("", "CaoProv.DENSO.RC9", "", "Server=192.168.0.1")
VarI = caoCtrl.AddVariable("I1", "")
print("I[1]の現在の値は" + str(VarI.Value))

ORiNを使用する場合,クライアントアプリケーションはデバイスを意識せず,ORiNのプロバイダに関する プログラミングのお作法で通信が可能になります。

https://www.orin.jp/images/merit/reduction_fig.png

これを可能にしているのはCAOのオブジェクト構造です。 同じ系統の機器同士では同じオブジェクト内に似たような関数をひとまとめにしています。

@startuml
title CAOAのオブジェクト構造
package CAO_Engine {
    class CAOEngine {
    {static} Collection CaoWorkSpaces
    }

    class CAOworkspace {
    {static} Collection CaoControllers
    }

    class CaoController {
    {static} Collection CaoVariables
    {static} Collection CaoFiles
    {static} Collection CaoTasks
    {static} Collection CaoRobots
    {static} Collection CaoExtensions
    --
    method AddVariable
    method AddFile
    method AddTask
    method AddRobot
    method AddExtension
    --
    }

    class CaoVariable{
    {method} getvalue
    {method} putvalue
    {method} getid
    {method} putid
    }
    class CaoFile{
    {method} getvalue
    {method} putvalue
    {method} getname
    {method} putname
    }
    class CaoTask{
    {method} start
    {method} stop
    {method} getname
    {method} putname
    }
    class CaoRobot{
    {method} move
    {method} execute
    {method} getname
    {method} putname
    }
    class CaoExtension{
    {method} execute
    }
}

package CAP_Provider{
    class CAPProvider{
    }
    class CaoProvController{
    }
    class CaoProvVariavle{
    }
    class CaoProvFile{
    }
    class CaoProvTask{
    }
    class CaoProvRobot{
    }
    class CaoProvExtension{
    }
}

CAOEngine <-- CAOworkspace
CAOworkspace <-- CaoController
CaoController <-- CaoVariable
CaoController <-- CaoFile
CaoController <-- CaoTask
CaoController <-- CaoRobot
CaoController <-- CaoExtension
CaoVariable -[hidden]- CaoFile
CaoFile -[hidden]- CaoTask
CaoTask -[hidden]- CaoRobot
CaoRobot -[hidden]- CaoExtension

CAO_Engine -right- CAP_Provider

CAPProvider <-- CaoProvController
CaoProvController <-- CaoProvVariavle
CaoProvController <-- CaoProvFile
CaoProvController <-- CaoProvTask
CaoProvController <-- CaoProvRobot
CaoProvController <-- CaoProvExtension

CaoProvController -[hidden]- CaoProvVariavle
CaoProvVariavle -[hidden]- CaoProvFile
CaoProvFile -[hidden]- CaoProvTask
CaoProvTask -[hidden]- CaoProvRobot
CaoProvRobot -[hidden]- CaoProvExtension

CaoController --> CaoProvController
CaoVariable --> CaoProvVariavle
CaoFile --> CaoProvFile
CaoTask --> CaoProvTask
CaoRobot --> CaoProvRobot
CaoExtension --> CaoProvExtension

@enduml