Hi all,
I need a little help in understanding what options are available to build a distributed system of 3 levels of processing and separate networks. I've been unable to find much online for this type of system architecture, I may be searching for the wrong terms, but I am at the point of asking for help.
Background:
This is the basis for a scalable and modular system for a flight simulator using flightgear.
The project is the interface for real-world 1950's / 1960's cockpit equipment to the PC. Some of this equipment is insanely complex, so for a given indicator, I need to build a local system to interface with mid centrury technologies such as: quadrature phase motors, synchro transmitters and receivers, Desynn indicators, most of which operate at 110Vac 400Hz or 28Vdc.
The idea is that the local system (TERTIARY level processors) deal with the final interface to the hardware, send raw data to the SECONDARY level processors who collate from a few TERTIARY processors and produce sensible data to send back to the PRIMARY processor for passing back to the PC. (This is 2 way communication at all levels).
Concept:
I have been thinking about building a hierarchical distributed control system where multiple Arduino boards / compatible processors can communicate such as this:
(Please ignore the . . . dots, the forum erases a string of spaces, they are just for formatting).
PC
|
PRIMARY processor
|
________________________________________ (Network level A)
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . |
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . SECONDARY N...
| . . . . . . . . . . . . . . . SECONDARY 2
| . . . . . . . . . . . . . . . |
| . . . . . . . . . . . . . . . ______________________________________ (Network level B)
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . |
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . TERTIARY 2-N
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . TERTIARY 2-2
| . . . . . . . . . . . . . . . TERTIARY 2-1
|
SECONDARY 1
|
______________________________________ (Network level B)
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . |
| . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . TERTIARY 1-N
| . . . . . . . . . . . . . . . TERTIARY 1-2
TERTIARY 1-1
The PRIMARY processor really is just there to direct data between the PC and the correct SECONDARY processors, no real processing is required in the PRIMARY.
instead data will be passed to the PRIMARY from the SECONDARY processors after some processing has been carried out at the, saving loading up the PRIMARY processor. As this is a scalable system, I'd rather the "work" for a particular piece of equipment was done by local processors, dedicated to the task.
By having sub-networks it helps me to keep this project truly modular, I'd rather not have it all hanging off just one I2C network, saving clogging up the PRIMARY processor with communications that can be handled locally between the SECONDARY and TERTIARY levels.
It would be good to have at least one of the network levels as I2C to utilise I/O expanders such as the MCP23008 for I/O such as switches and lamps.
So my main questions are:
-
Do any Arduino boards or compatible processors can support two I2C networks? Or are there any libraries to utilise ordinary I/O pins for additional networks?
-
If not many, can I use serial to connect more than two slave processors (Arduino pins marked TX/RX) instead of I2C?
-
Can I implement a multi-drop serial network like RS485?
-
Is serial (TX/RX) better where cabling is involved between processor boards? I am aware of the issues of I2C regarding cable capacitance / inductance limiting distance and speed. My max length of any run will be about 2m.
Any tips are much appreciated as it may save me hours of experimenting with a system that won't work.
Cheers, Scott.