Hi Matt,
I’ve been trying to join these HW IFs meetings but haven’t been able to.
As I see, you are looking for PLCopen contacts, i could throw here my 2 cents.
Actually, inside PLCopen I keep bringing the topic of a ROS cooperation.
What is PLCopen:
- PLCopen is a vendor neutral association working on pre-competitive product stages that promotes engineering efficiency on Automation industrial software. The association is mainly conformed by automation technology supplier (Robot,PLC,HMI) : Siemens, 3S-codesys, Beckhoff, Kuka, Fanuc, Omron, Keba, Yaskawa, etc.
- PLCopen promotes the IEC 61331-3 standards for industrial controller programming. It brings down the IEC standard to the PLC programmer with API specs.
-The idea is to promote IEC 61131 PLCs that are able to control robots and group of axes.
What is not PLCopen:
-PLCopen not equal to openPLC.
-No solution for AGVs, AMRS, only robot arms and custom kinematics (by motion controller).
Background:
PLCopen Part1 single and synchronized Motion Control
- PLCopen part1 for individual single axes motion (servomotors). Defined standard Axes behavior, API, Axes state machine, etc.
- Axes synchronized motion: electronic gearing (Master/slave), electronic camming, look-up tables, etc.
PLCopen Part4 (PP4) - Motion control for robots group of axes
- Many large industrial OEMs build their own custom robots such as gantries, Hbots, modified scaras, delta3 spiders, and any other type of kinematic chain.
- New PLC platforms based on SOCs or IPCs (i.e. Beckhoff’s) are capable to control those custom robots and do multi-axes control, robot type tasks, CNC type tasks, etc.
- For this “homie” robot, PLC is able to calculate and control the kinematics on real time. Some call this open Kinematics. But still requires deep mechanical and control knowledge from automation supplier.
- So in 2008, PLCopen part4 (PP4) for Motion groups specification was published. It defines an API, better known in the PLC world as a library of Function Blocks (FBs)
- PP4 was based/inspired on G-code DIN 66025 and mainly defines robot move commands such as MC_MoveLinearAbsolute(), MC_MoveLinearRelative(), etc.
- PLCopen part1 and PP4 APIs have been implemented by most PLC/Motion control suppliers and the industrial field acceptance in quite relevant.
Industrial Robots
-
Even though PP4 was born to control “home” or custom built robots, it has been propagated to the industrial robotic world.
-
PP4 based solutions have been implemented between PLC and Robot OEMs, for example AutomationX (kuka), Motologix(Yaskawa), UniVAL_PLC(Staubli), CommandSlave(Denso).
-
The new Siemens SIMATIC robot control library is based on updated PP4 and mapped to Profinet. SIMATIC Robot Integrator mit SIMATIC Robot Library - YouTube
-
Another state of the art solution from Yaskawa, allows one controller CPU run both home robots and industrial robots, all with the PP4 library of FBS tunneled to Ethernet-IP, they call it Singular control: Yaskawa Singular Control - YouTube
-
PP4 has been mapped into Profinet, Ethernet-IP, Powerlink, etherCAT, etc. This has hindered the cross compatibility of solutions or in other words, the Babel tower syndrome.
-
This could be solved by mapping PP4 into vendor neutral protocol such as OPC UA PubSub over TSN.
PLCopen and OPC UA
- The OPCF (foundation) + PLCopen working group is one of the oldest with 2 main results : 1) OPC UA client library for PLCs. 2) OPC UA + PLCopen information model
- There is no current solution for motion control on OPC UA client/server since is not considered real time and deterministic.
- The proposal moving forwards is to map OPC UA PubSub mechanism mapped to TSN/UDP, which is deemed suitable by experts for motion control.
PLCopen Command prototype example (JSON format over OPC UA client/server)
Motion command (stream) from PLC:
‘{“method”:“MC_MoveLinearAbsolute”,“inputs”:{“Execute”:true,“positionX”:-120.0,“positionY”:-330.0,“positionZ”:130.0,“positionRX”:0.0,“positionRY”:3.1416,“positionRZ”:0,“CoordSystems”:‘MCS‘, “Vel":1.2, “Acceleration":1.2, “Deceleration":1.2}}’
Motion response from Robot Controller (RC) motion completed no error:
‘{“method”:“MC_MoveLinearAbsolute”,“outputs":{“done":true,“Busy":false, "Active”:false, “Error”:false, “ErrorID”:0.0}}’
Motion response from Robot Controller (RC) motion not completed - error:
‘{“method”:“MC_MoveLinearAbsolute”,“outputs":{“done":false,“Busy":false, “Active”:false, “Error”:true, “ErrorID”:6969.0}}’
Current technology status (2022/H1)
- Latest Profinet SCRI specification has been recently released.
- Commercial product SIMATIC Robotic Library controls several robot brands with same API based on Profinet.
- PLCopen working groups reviewing and updated PP4 based on SCRI improvement suggestions.
Potential Roadmap / R+D possibilities
- Updated PP4 API mapped to OPC UA Method library.
- PP4 into OPC UA PubSub over TSN/UDP.
- Keep for Now, EtherCAT/Profinet/E-IP ROS drivers, but work towards a true converged robot arm firmware with OPC UA PubSub on TSN. As ROS DD2 is also moving to TSN. A new robot API could be harmonized by both communities.
- ROS and PLCopen merge towards OPC UA PubSub TSN? How can PLCopen and ROS work together?