Lean MES Open Source Manufacturing Execution System
Flexible Manufacturing Solutions through Open Standards and Free Software....

OIP [Open Instructional Protocol]. Coming soon... Full Description OIP v1.05.


OIP Provides Direct link between business application layer (ERP/Order Management)
and plant floor execution environment layer (Assembly station, cell, machine, etc.).
Primary objective of OIP is utilization of SaaS and SOA architectures for Industrial Automation.
Another important aspect of OIP is convenient, reusable and human readable data interface, in comparison
with commonly used middle-ware "spaghetti of primitives data-type tags" interface (very typical for OPC linking).


For instance, to visualize trough Operator Interface and control same list of instructions ,
two kind of OIP formats/mediums may be used:
In order of weight+cost (lightest on top)
1. OIP over TCP/IP         - minimum overhead, platform neutral.
2. OIP over SOAP/XML  - packet is rather heavier, platform neutral.
3. OIP over OPC             - requires third party OPC server application, additional cost and risk, platform dependent.

1. Example of OIP over TCP/IP or OPC ORDER transaction to PAC (loading instructions for order assembly)

{stx}ORDER,5701,12345,202;
ZI355937,31,30,31,567016,355937,XXXXA0NDXAN6XXXXX,G,FED,L,ZW;
G5A1,1,10,1045075,1041075,wZw Black Pad,1,100001,0,11an||00*,1,3;
G5A2,2,5,1035252,AirBag Sft Pnl,1,2,0,14an||NPZQ*,4,3{etx}

";" -frame delimiter
"," -element delimiter
{stx}, {etx} -packet prefix and suffix



2. Example of OIP over SOAP/XML TCP/IP ORDER transaction to PAC (loading instructions for order assembly)

<!--Node: OIPHEAD, Cardinality=1, Mandatory. All non-empty sub-nodes are mandatory!
    cmd = examples: "LOGIN, ORDER, DATA, PRINT, PING, INIT" -datatype: string[8]
    code = example: "5701" -datatype sInt(16)
    tsn = example: "12345" -datatype sInt(32)
    length =example: "732" -datatype sInt(16) -->
<OIPHEAD>
    <cmd>ORDER</cmd>
    <code>5701</code>
    <tsn>12345</tsn> <!-- transaction sequence number -->
    <length>732</length> <!-- length of entire message in bytes -->
</OIPHEAD>

<!-- Node: AORDER -Assembly Order, Cardinality=1, Optional.-->
<AORDER>
    <Ordnr>ZI355937</Ordnr>
    <Sts>31
        <min>30</min>
        <max>31</max>
    </Sts>
    <Seq>567016
         <ext>355937</ext>
    </Seq>
    <VIN>XXXXA0NDXAN6XXXXX</VIN>
    <intclr>G</intclr>
    <dst>FED</dst>
    <drv>L</drv>
    <prdline>ZW</prdline>
    <!-- Node: AIList -Assembly Instructions List for Order.
          Since location is implied, thus location name is omitted.
          Cardinality=1, Mandatory for Node: AORDER -->
    <AIList>
        <!-- Node: instr -instruction, Cardinality=1-many, Optional. -->
        <instr>
            <group>G5A1
                <gord>1
                    <iord>10
                        <item>1045075</item> <!-- primary itemID or PN -->
                        <sitem>1041075</sitem> <!-- (optional) secondary itemID or PN -->
                        <iname>wZw Black Pad</iname> <!-- local(well known) item name -->
                        <qty>1</qty>
                        <params>
                            <!-- Node: i (Parameter Integer), datatype sInt32, Cardinality=1-5, Optional.-->
                            <i>100001</i> <!-- parameter for instr seq:1 -->
                            <i>0</i>
                            <!-- Node: c (Parameter Characters), datatype String[32], Cardinality=1-5, Optional.-->
                            <c/>
                            <c>11an||00*</c> <!-- parameter for instr seq:2 -->
                            <!-- Node: h (Instruction Handler), datatype sInt32, Cardinality=1-5, Optional.-->
                            <h>1</h> <!-- instr seq:1 type 1 -pick to light -->
                            <h>3</h> <!-- instr seq:2 type 3 -validate serial Nr. -->
                        </params>
                    </iord>
                </gord>
            </group>
        </instr>
        <instr>
            <group>G5A2
                <gord>2
                    <iord>5
                        <item>1035252</item> <!-- primary itemID or PN -->
                        <sitem/> <!-- (optional) secondary itemID or PN -->
                        <iname>AirBag Sft Pnl</iname> <!-- local(convinient) item name -->
                        <qty>1</qty>
                        <params>
                            <!-- Node: i (Parameter Integer), datatype sInt32, Cardinality=1-5, Optional.-->
                            <i>2</i> <!-- parameter for instr seq:1 -->
                            <i>0</i>
                            <!-- Node: c (Parameter Characters), datatype String[32], Cardinality=1-5, Optional.-->
                            <c/>
                            <c>14an||NPZQ*</c> <!-- parameter for instr seq:2 -->
                            <!-- Node: h (Instruction Handler), datatype sInt32, Cardinality=1-5, Optional.-->
                            <h>4</h> <!-- instr seq:1 type 4 -torque tool-->
                            <h>3</h> <!-- instr seq:2 type 3 -validate serial Nr. -->
                        </params>
                    </iord>
                </gord>
            </group>
        </instr>
    </AIList>
</AORDER>