When operating and debugging multiple instances at once, I like to have all information in one place – next to each other. Therefore, we implemented a web application that displays the current quaduinos status and internal database information.
On the right hand, you can see the webcam image that shows the build and 4 LEDs.
On the left hand-side, you can control the relays (here: toggle lane power) and view the internal information of each lane.
The blue buttons change the internal job ID for a lane: job 1 has synchronization disabled, job 2 synchronizes the lanes. Currently, we solely implemented the xsynchro service. It is an event synchro mechanism in which each lane executes a pre-synchronization phase, sends a synchronization message and then executes a synchronization phase. When sufficient messages from other lanes have arrived, the lane exits the synchronization phase, resets its internal time base and executes the services. See Systementwurf 1 lecture for further information or consult the web demonstrator: systementwurf.org/xsynchro.html.
Lane data overview
Each of the green boxes displays internal lane data: the current job identifier, 4 indications for synchronization failures, 4 for not available (no synchronization signal received) and then for confirm counters and the confirmed value (see web demonstrator for details). Here, a single not available indication will not lead immediately to passivation of the lane – but from the second indication in succession.
More in-depth information will follow here.
In every cycle, each lane sends select database information to the central server that hosts the web application. In the current implementation, the lane sends a POST request with JSON data (ArduinoJson). The server stores this information internally and writes a logging file.
The front-end polls information and updates the view accordingly. When a lane becomes unavailable, the green box turns orange. Additionally, the other lanes collect indications for the unavailable lane and degrade into a triplex system.
Here, lane 3 is unpowered – which can be seen by the third LED from top being off.
When lane 3 is powered on again, it will try to synchronize with the other lanes again and the indications vanish.
To toggle power for individual lanes, we use a 16-pole relay board with an additional Ethernet-capable control board. Upon a click on the control button, the browser sends a local request to a simple PHP script, that itself requests the relay board controller via HTTP GET to power on/off the relay. The button will turn grey or green – depending on the state.
The additional PHP script is necessary to avoid problems with the same-origin policy in browsers.