Companion Specifications
ทำไม Robot ของ KUKA, ABB, Yaskawa, FANUC ถึงพูดภาษาเดียวกันได้? เพราะมี OPC UA Companion Specification ที่นิยามว่า "Robot ในมาตรฐาน OPC UA หน้าตาแบบไหน" — ปัจจุบันมีกว่า 430+ Models ครอบคลุมแทบทุกอุตสาหกรรม
ปัญหา — แต่ละโรงงานสร้าง Information Model ของตัวเอง
สมมุติว่า Robot 3 ตัวในโรงงานเดียวกัน ผู้ผลิตต่างกัน ทุกตัวเป็น OPC UA Server พร้อม Address Space:
# Robot ของ Vendor A
RobotA
├─ position_x : Double
├─ position_y : Double
├─ joint_angles[6] : Double[]
├─ gripper_open() : Method
└─ ...
# Robot ของ Vendor B
KUKARobot1
├─ X : Float
├─ Y : Float
├─ J1, J2, J3, J4, J5, J6 : Double
├─ OpenTool() : Method
└─ ...
# Robot ของ Vendor C
RoboT_3
├─ posX : Real32
├─ ... (โครงสร้างต่างไปอีก)
ผลคือ — MES ของโรงงานต้องเขียน Code 3 ชุด เพื่ออ่านข้อมูลเดียวกัน ถ้าเปลี่ยน Vendor ก็ต้องเขียนใหม่ — ปัญหาเหมือนกับ Modbus เลย แค่ใน Layer ที่สูงขึ้น
คำตอบ — Companion Specifications
Companion Specification (CS) คือ มาตรฐานเฉพาะอุตสาหกรรม ที่กำหนดว่า:
- "Robot ใน OPC UA ต้องมี ObjectType ชื่อ
MotionDeviceType" - "
MotionDeviceTypeต้องมี VariablePosition(Vector3D) และJointAngles(Array)" - "ต้องมี Method
OpenGripper(),CloseGripper()" - "ต้องมี Event
EmergencyStop" - ... ฯลฯ
ทุก Vendor ที่อ้างว่าสนับสนุน OPC UA for Robotics ต้องทำตาม CS นี้ — ผลคือ Client เขียน Code ครั้งเดียว ใช้กับ Robot ทุกยี่ห้อ
หมวดหมู่ของ Companion Specifications
ปัจจุบันมีกว่า 60 Companion Specifications แบ่งเป็นหมวด:
🏭 Generic Device Models (พื้นฐานที่ทุกอุปกรณ์ใช้)
- OPC 10000-100 — UA for Devices (DI) — พื้นฐานของอุปกรณ์ทุกตัว
- OPC 10020 — UA for Analyzer Devices
- OPC 10000-211 — UA for Global Positioning
- OPC 30000 — UA for PLCs based on IEC 61131-3 (PLCopen) — สำหรับ PLC ทุกแบรนด์
- OPC 30081 — UA for Process Automation Devices (PA-DIM)
🤖 Manufacturing Devices (เครื่องจักรผลิต)
- OPC 40001-1 ถึง -100 — UA for Machinery (Basic Blocks, Process Values, Job Mgmt, Energy, Results)
- OPC 40010 — UA for Robotics
- OPC 40100 — UA for Machine Vision
- OPC 40200 — UA for Weighing Technology
- OPC 40501 — UA for Machine Tools
- OPC 40502 — UA for CNC Systems
- OPC 40450/40451 — UA for Joining Systems / Tightening
- OPC 40550 — UA for Woodworking
- OPC 40077-40091 — UA for Plastics & Rubber Machines
- OPC 30070-1 — UA for MTConnect (CNC ของอเมริกา)
⚡ Energy
- OPC 10040 — UA for IEC 61850 (Electrical Substations)
- OPC 30020 — UA for MDIS (Oil & Gas)
- OPC UA for Wind Power Plants (IEC 61400-25)
- OPC 34100 — UA for Power Consumption Management
- OPC UA for Carbon Capture, Storage and Reporting
- OPC UA for Solar PV Operations and Maintenance
📦 Enterprise & Packaging
- OPC 10030 — UA for ISA-S95 (MES Integration)
- OPC 10031-4 — UA for ISA-95 Job Control
- OPC 30050 — UA for PackML (OMAC) — packaging machines
- OPC 40600 — UA for Weihenstephan Standards (beverage)
- OPC UA for Asset Administration Shell (AAS)
🔌 Field Communication (เชื่อม Fieldbus เดิม)
- OPC 30120 — UA for IO-Link Devices and Masters
- OPC 30140 ถึง 30145 — UA for PROFINET (รวมถึง PROFIenergy, Remote IO, Drives)
- OPC 30100 — UA for SERCOS Devices
- OPC 30110 — UA for POWERLINK
- OPC 30130 — UA for CC-Link (Mitsubishi)
- OPC UA for CIP Devices (EtherNet/IP)
- OPC 30080/30090 — UA for Field Device Integration (FDI/FDT)
🏢 Building & Misc
- OPC 30030 — UA for BACNET (Building Automation)
- OPC 30200 — UA for Commercial Kitchen Equipment
- OPC 30060 — UA for Tobacco Machines
- OPC 30500 — UA for Laboratory & Analytical Device Standard (LADS)
- OPC 30010 — UA for AutoID Devices (RFID, Barcode)
ตัวอย่างจริง — Robotics Companion Spec
OPC 40010 (UA for Robotics) นิยาม ObjectType ที่สำคัญ:
MotionDeviceSystemType
├─ MotionDevices (Folder)
│ └─ MotionDevice : MotionDeviceType
│ ├─ Manufacturer : LocalizedText
│ ├─ Model : LocalizedText
│ ├─ SerialNumber : String
│ ├─ MotionDeviceCategory : Int32 (Articulated, SCARA, Cartesian, ...)
│ ├─ Axes (Folder)
│ │ └─ Axis_1 : AxisType
│ │ ├─ ActualPosition : Double
│ │ ├─ ActualSpeed : Double
│ │ └─ ...
│ ├─ FlangeLoad : LoadType
│ ├─ Power : Boolean
│ └─ ...
├─ Controllers (Folder)
│ └─ Controller : ControllerType
│ ├─ SoftwareName : String
│ ├─ SoftwareRevision : String
│ ├─ ComponentName : String
│ ├─ TaskControls (Folder)
│ └─ ...
└─ SafetyStates (Folder)
└─ EmergencyStop : Boolean
ทุก Robot ที่อ้างว่าสนับสนุน OPC UA for Robotics — Kuka, ABB, FANUC, Universal Robots, Yaskawa, Mitsubishi, …
จะมีโครงสร้างนี้ — Client เขียน read_value('Axes/Axis_1/ActualPosition') ครั้งเดียวใช้ได้กับทุกตัว
UaNodeSet — แชร์ Information Model
แต่ละ Companion Spec มาพร้อมไฟล์ UaNodeSet.xml — XML ที่อธิบายโครงสร้าง Address Space ทั้งหมด Server โหลดไฟล์นี้แล้วได้ Type Hierarchy ของ Spec นั้นทันที — ไม่ต้องเขียนเองทุก Node
<UANodeSet xmlns="...">
<NamespaceUris>
<Uri>http://opcfoundation.org/UA/Robotics/</Uri>
</NamespaceUris>
<UAObjectType NodeId="ns=1;i=1002" BrowseName="1:MotionDeviceType">
<DisplayName>MotionDevice</DisplayName>
<References>
<Reference ReferenceType="HasSubtype" IsForward="false">
i=58 <!-- BaseObjectType -->
</Reference>
</References>
</UAObjectType>
...
</UANodeSet>
UA Cloud Library — รวม Models ไว้ที่เดียว
OPC Foundation มี UA Cloud Library ที่ uacloudlibrary.opcfoundation.org — Repository ออนไลน์ของ UaNodeSet ทุกตัว ทั้งจาก OPC Foundation และจาก Member ทั่วโลก:
- Browse Models ผ่าน Web Browser
- โหลด UaNodeSet XML
- REST API สำหรับโหลดอัตโนมัติ
- Equinor ก็ใช้ที่นี่ — Open-source Asset Templates ของตัวเองไว้ในนี้ ให้คนอื่นเอาไปใช้ได้
Harmonization — เพื่อไม่ให้ Models ขัดกัน
Companion Spec เกิดจากหลายอุตสาหกรรม ที่บางครั้ง แก้ปัญหาเดียวกันคนละแบบ เช่น "หน่วย Engineering Unit" บาง Spec ใช้ EUInformation จาก Core, บางตัวสร้าง Type ของตัวเอง
OPC Foundation จึงมี Harmonization Working Group ที่:
- Review Companion Spec ใหม่ — เอาแนวคิดที่ใช้ร่วมกันได้ย้ายลงมา Core
- นิยาม Common Reference Types — เช่น "Located In", "Connected To", "Part Of"
- Asset Management Basics (OPC 10000-110)
- Industrial Automation (OPC 10000-200)
- Best Practices Whitepaper (OPC 11030)
เป้าหมาย: "ทำสิ่งที่คล้ายกันให้คล้ายกัน, ทำสิ่งที่เหมือนกันให้เหมือนกันเป๊ะ"
สรุปบทที่ 07
- Companion Specifications = มาตรฐานเฉพาะอุตสาหกรรมที่ใช้ OPC UA Information Model
- มีกว่า 430+ Models ครอบคลุม Robotics, Machine Tools, CNC, Vision, IO-Link, Energy, Building, Lab, …
- เกิดจากความร่วมมือของ OPC Foundation + VDMA + อุตสาหกรรม — "Global Production Language"
- ทุก Spec มี UaNodeSet XML โหลดเข้า Server ได้เลย — ไม่ต้องเขียน Type ใหม่
- UA Cloud Library รวม Models ทั้งหมด + REST API
- Harmonization Group ดูแลให้ Models ไม่ขัดกัน — ใช้ Pattern เดียวกันแก้ปัญหาคล้ายกัน
- นี่คือเหตุผลที่ Renault, Bühler, Miele, Equinor ใช้ OPC UA แทนที่จะสร้าง Standard ของตัวเอง
บทต่อไป — OPC UA FX — เอา OPC UA ลงไปถึงระดับ Field (เซ็นเซอร์/แอคชูเอเตอร์) แทน Fieldbus เดิม