Hi There,
Another day, another random standard that pops up: VDA 5050 which is:
Definition of a communication interface for driverless transport systems (DTS). This recommendation describes the communication interface for exchanging order and status data between a central master control and automated guided vehicles (AGVs) for intralogistics processes.
Basically controlling robots/vehicles on the factory floor using MQTT and a specific set of commands sent over specific channels.
I've had a quick search and found nothing relevant to Node-RED and I was wondering whether anyone has some war stories related to implementing the protocol in the wild.
It seems like a perfect use case for Node-RED but being an industry standard, there might well be implementations behind closed NDA doors.
I created a partially working flow that moves simulated bots around (to test the master control center) and now thought how hard could it be to implement a complete implementation. Behind said NDA doors unfortunately.
Cheers!
(commenting mainly to be notified - interesting topic)
I did work on AGVs (and a master controller) alongside a colleague in my former job - before MQTT was an open thing. We used EtherNet/IP as the protocol (it is deterministic). All logic (routing, steering, stopping, parking, ..., everything) was 100% PLC code.
Its nice they have generated schemas - that will aid implementation, but I have not read through the spec to see how much sense it makes or how we would abstract that into Node-RED.
1 Like
I ended up creating state machines to act as the "brains" of the AGV - but this was using Erlang-Red. I created a state machine node for Erlang-Red. (Since Erlang has a well defined state machine behaviour.)
To make creating the state machine simpler, I added state nodes to flow2uml - initially to be able to draw mermaid state diagrams but then I also added a Erlang code generator to that. An example flow of "drawing" state machines in Node-RED.
Why I say this is that there a few statemachine implementations for Node-RED which would be useful for this. It would be nice if there was a "official" one so that I could create a generator for that node, although the underlying library seems to be xstate, so generating something that it understands would be plenty.
I'm just thinking out loud here 
Sleepless weekend creating this repository ==> GitHub - gorenje/vda5050_erlang_red: Breadboards for VDA5050 Protocol
It's a collection of flows implementing parts of the VDA 5050 specification as a simulation.
It also includes screen-casts describing what I did to implement the simulation. Be warned this uses Erlang-Red and Node-RED as a demonstration of how both can be used together.
It's probably most interesting for showing how I work with Node-RED/Erlang-Red and using FlowHub.org to manage flows between the two.
Why VDA 5050? Because its obscure yet simple and because it has industrial applications. Specifically this solution could be of interest for companies that use VDA 5050 and want to simulate either the "brain" or the "bot" part.